Programação
-
Calendário de Aulas:
Abril 19 22 26 29 Maio 03 06 10 13 17 20 24 27 31 Junho 07 10 14 17 21 24 28 Julho 01 05 08 12 15 19 22 26 29
Links Importantes:
- Código da turma no run.codes: HSB3
- Link para as aulas no Meets (Segunda 10:00 às 11:30 / Quinta 8h10 às 10:00)
- Link do drive com as gravações das aulas
- Link do drive com as correções do bloco 1
Materiais Didáticos Externos:
- Documentação DevDocs
- Manual CPP Reference
- Manual C Plus Plus
Avaliação:
O conteúdo é dividido em três blocos principais, sendo que cada um irá fornecer uma média parcial. Além disso, a participação em algum Grupo de Extensão ligado à programação irá proporcionar um bônus de 0.5 na Média Final. Alguns desses grupos são: FoG, Gema, Ganesh, USP CodeLab...
- \( \textrm{Média1} = 0.5 \cdot \textrm{Atividades1} + 0.5 \cdot \textrm{Trabalho1} \)
- \( \textrm{Média2} = 0.5 \cdot \textrm{Atividades2} + 0.5 \cdot \textrm{Trabalho2} \)
- \( \textrm{Média3} = 0.5 \cdot \textrm{Atividades3} + 0.5 \cdot \textrm{Trabalho3} \)
\( \textrm{MédiaFinal} = \dfrac{\textrm{Média1} + \textrm{Média2} + \textrm{Média3}}{3} + \textrm{Bônus} \)
Dúvidas:
- A seção de cada aula terá seu próprio fórum para tirar dúvidas. Utilize-o a vontade para postar dúvidas gerais sobre os conteúdos teóricos apresentados nas aulas. Se preferir deixar sua dúvida privada, chame um monitor no grupo do Telegram para poder conversar com ele por privado.
- Não poste códigos ou qualquer tipo de coisa relacionada nesses fóruns, por conta de problemas com plágio. Para esses casos, prefira se comunicar diretamente com os monitores via Telegram.
- Perguntem bastante. Não deixem dúvidas acumuladas. :)
Contato do Professor:
Email: fernando_persan@alumni.usp.br
Contatos dos Monitores:
- Thales Darini Souza: @thalesdarini
- Natan Henrique Sanches: @Natansh
- Rodrigo Lopes Assaf (Árabe): @roassaf
- Guilherme Machado Rios (Bio): @gui_bio
- Pedro Lucas de Moliner de Castro (Calango): @pedrolmcas
Grupos de Extensão:
-
- Apresentação da Disciplina: https://edisciplinas.usp.br/pluginfile.php/5979364/course/section/6114665/Apresentacao.pdf
- Um pouco da história da Computação:
https://edisciplinas.usp.br/pluginfile.php/5979364/course/section/6114665/HistoriaComp.pdf?time=1618756251463
- Sites importantes para a disciplina:
- Código da turma no run.codes: HSB3
- Link para as aulas no Meets (Segunda 10h00 / Quinta 8h10)
- Link do drive com as gravações das aulas
- Tenha o hábito de consultar os manuais de C (DevDocs, CPP Reference, C Plus Plus)
- Apresentação da Disciplina: https://edisciplinas.usp.br/pluginfile.php/5979364/course/section/6114665/Apresentacao.pdf
-
- Arquitetura de Von Neumann https://edisciplinas.usp.br/pluginfile.php/5979364/course/section/6114666/VonNeumann.pdf
- Máquina de Turing https://edisciplinas.usp.br/pluginfile.php/5979364/course/section/6114666/MT.pdf
- ATIVIDADE (entrega até 10/05): Máquina de Turing (definição e entrega no run.codes)
- Arquitetura de Von Neumann https://edisciplinas.usp.br/pluginfile.php/5979364/course/section/6114666/VonNeumann.pdf
-
- Algoritmos e Tipos de Dados: https://drive.google.com/file/d/1FCPUle5eEA38mt8OSlk1WY3P9ZYat9-1/view?usp=sharing
- Bits/Bytes/Dados e estrutura de memória (usando a arquitetura de Von Neumann): https://computer.howstuffworks.com/bytes.htm
-
Ponha um fone de ouvido, apague a luz e vá ao menos até os primeiros 20 min. Depois me diga o que sentiu
-
- Linguagens de Programação: https://drive.google.com/file/d/1SzkljYSHQvvDAdDLB8C0oXTRf7_uk0Up/view?usp=sharing
- Primeiro programa com variáveis e saída: https://drive.google.com/file/d/1bCXPY-APA3jtHduvUousqxKqp6nLPtUL/view?usp=sharing
- Histórico das linguagens: https://pt.wikipedia.org/wiki/Hist%C3%B3ria_das_linguagens_de_programa%C3%A7%C3%A3o
- Binário x Hexadecimal: https://drive.google.com/file/d/1B2rCsasNilVv8jjKevrlNROgXt5J5jrl/view?usp=sharing
-
- Tipos de Dados e Operadores aritméticos: https://drive.google.com/file/d/1xlEhQHt75QUHsR-hLIKxHL5bZwzVqvTT/view?usp=sharing
- Exemplos práticos: https://drive.google.com/file/d/1Nj1hQsPD_Myl_lv9LygpnVVPgbbt7jov/view?usp=sharing
- ATIVIDADE (Entrega até 10/05): Conversão de Temperaturas (definição e entrega no run.codes)
-
Não é necessário entender 100% por agora, porém são conceitos que usaremos no futuro. Tratem essa diferença como uma curiosidade momentaneamente, para que quando chegarmos a entrar em contato direto com esses conceitos eles fiquem mais fáceis de entender. :)
-
- Condicional If, operadores relacionais e lógicos: https://drive.google.com/file/d/1Z38EFdebBKukhDnzE8MAtQVFvejUW1_o/view?usp=sharing
- Código feito em sala de aula: https://drive.google.com/file/d/1mOrQSsu3ZL_elUlytaIicMXme2A_tyla/view?usp=sharing
- ATIVIDADE (entrega até 17/05): Cálculo de Multas (definição e entrega no run.codes)
-
Entender lógica é fundamental para avançar na programação. Nesse caso, as estruturas de decisão estão intrísecamente ligadas com a lógica condicional. :)
-
- Switch: https://drive.google.com/file/d/1Ibf3mr5GtjtS7oEdpZQ6BoaPc5L2eN37/view?usp=sharing
- Operadores bit-a-bit: https://drive.google.com/file/d/1lCsWWipoCQU8vxNtB3vsaq6XAoPksDXA/view?usp=sharing
- Exemplos práticos: https://drive.google.com/file/d/12X59gWkifs8EGMyKeMJY4rVBOW8VbS_X/view?usp=sharing
- ATIVIDADE (entrega até 17/05): BaDumTss (definição e entrega no run.codes)
- Switch: https://drive.google.com/file/d/1Ibf3mr5GtjtS7oEdpZQ6BoaPc5L2eN37/view?usp=sharing
-
- Estruturas de Repetição (While e Do While): https://drive.google.com/file/d/16_h9kTXTgTq9scUFz06mYtEdAI3TVdDx/view?usp=sharing
- Códigos feitos em sala de aula: https://drive.google.com/file/d/13P3d8wgl8rU-bYuhV1St66O_Pr2I2quP/view?usp=sharing
-
- Estrutura de Repetição (for): https://drive.google.com/file/d/1AWdV8eIvh8Y6FJwk1jt21vm3SmASxqoY/view?usp=sharing
- Códigos feitos em sala de aula:https://drive.google.com/file/d/1qU6obhTG36zwT6i1AI1CLSeRCwJ99kmJ/view?usp=sharing
- ATIVIDADE (entrega até 24/05): Construindo Triângulos (definição e entrega no run.codes)
-
Essa lista serve apenas como método de prática fora das aulas. Não é necessário entregar a resolução de seus exercícios. Fique tranquilo para estudar no seu ritmo. :)
-
- Códigos feitos em sala de aula: https://drive.google.com/file/d/1IMIDvX9lRvxEWnFPpN89q5qPLi5iPiwl/view?usp=sharing
- ATIVIDADE (entrega até 31/05): KeyboardCat (definição e entrega no run.codes)
- Códigos feitos em sala de aula: https://drive.google.com/file/d/1IMIDvX9lRvxEWnFPpN89q5qPLi5iPiwl/view?usp=sharing
-
- Códigos feitos em sala de aula:https://drive.google.com/file/d/1I7Scd9tfb32MF1peGQuv1hu_tZMKYfrC/view?usp=sharing
- ATIVIDADE (entrega até 31/05): Multiplicação de matrizes (definição e entrega no run.codes)
-
Essa lista serve apenas como método de prática fora das aulas. Não é necessário entregar a resolução de seus exercícios. Fique tranquilo para estudar no seu ritmo. :)
- Códigos feitos em sala de aula:https://drive.google.com/file/d/1I7Scd9tfb32MF1peGQuv1hu_tZMKYfrC/view?usp=sharing
-
- Material complementar: https://drive.google.com/file/d/1KKMt-O5OGrYPGthoRqhmAoZy9rGvbEHg/view?usp=sharing
- Exercícios complementares: https://drive.google.com/file/d/1AEzkK3yTj6F7pF2_RmIyBW3AyVcBHPVu/view?usp=sharing
- Devolutivas dos trabalhos entregues: (liberação das 4 primeiras atividades)
- Trabalho I - Cleyton, o Punk de 2077 (entrega até 14/06): definição e entrega no run.codes
-
- Strings estáticas e biblioteca string.h: https://drive.google.com/file/d/10ntkJNToxufZwjCGeTQlRr9NtU-A2jsw/view?usp=sharing
-
- Conceitos básicos de funções;
- Declaração de funções e valores de retorno;
- Passagem de parâmetro por valor;
- Códigos feitos em sala de aula: https://drive.google.com/file/d/13Degoi0PvTc2cllymE4V_Qws_qOspszN/view?usp=sharing
-
Essa lista serve apenas como método de prática fora das aulas. Não é necessário entregar a resolução de seus exercícios. Fique tranquilo para estudar no seu ritmo. :)
A lista de exercícios cobre todo o conteúdo que será visto nesse segundo bloco. Não se assuste! É preferível que os exercícios sejam feitos enquanto os conteúdos são dados, não há necessidade de se antecipar.
-
- Definição de variáveis globais e locais;
- Arranjos e matrizes como parâmetros;
- Passagem de parâmetros por referência;
- Código feito em sala de aula:https://drive.google.com/file/d/1_zS6wTuXmFnVDv1MzdicvsrWAMeYLZiE/view?usp=sharing
- ATIVIDADE (entrega até 21/06): Manhattan's Delivery Service (definição e entrega no run.codes)
-
- Funções e variáveis (tipos básicos, strings, arranjos e matrizes) na memória Stack;
- Parâmetros da função main();
- Introdução a endereçamento e ponteiros;
- Códigos feitos em sala de aula: https://drive.google.com/file/d/17RiXrGas_qzxlPOnvd8s46hNw1PnBi0J/view?usp=sharing
- Funções e variáveis (tipos básicos, strings, arranjos e matrizes) na memória Stack;
-
- Memória Heap;
- Alocação dinâmica: malloc() e free();
- Códigos feitos em sala de aula: https://drive.google.com/file/d/1PST3avX34C_NmE0T87jEX0qcvm86c1sA/view?usp=sharing
- ATIVIDADE (entrega até
28/0601/07): Memória RAM e suas segmentações (definição e entrega no run.codes)
-
- Alocação dinâmica: calloc() e realloc();
- Códigos feitos em sala de aula:https://drive.google.com/file/d/1Uic4odeMP2i34kAAiEjRJd284Jl9A0c9/view?usp=sharing
- ATIVIDADE (entrega até
28/0601/07): Livro Corrompido (definição e entrega no run.codes)
-
- Structs (utilização, alocação de memória, typedef, vetores);
- Código feito em sala de aula:https://drive.google.com/file/d/1EitzhPU5WOMCdqhVMOyjZMs64v7PHzmi/view?usp=sharing
- Devolutivas dos trabalhos entregues: (atividades 5 a 7 do bloco I e trabalho I) - Média 1 finalizada
- ATIVIDADE (entrega até 05/07): Sistema de Gerenciamento de Músicas (definição e entrega no run.codes)
-
- Material complementar: https://drive.google.com/file/d/1oNN-UPAA-NE2A_-sULSwQPyElExRNaF-/view?usp=sharing
- Exercício complementar: https://drive.google.com/file/d/1bNGDlnJjWg1RF-MWffyblLI4BqGmNvHy/view?usp=sharing
- Trabalho II - Admirável Mundo Caótico (entrega até 12/07): definição e entrega no run.codes
-
- Arquivos Texto (leitura e escrita, modos de abertura de arquivos);
- Código feito em sala de aula: https://drive.google.com/file/d/1i3Nni3mYsHy1zHS5Yr-RP1dSMeUGY-rA/view?usp=sharing
-
- Arquivos Binário (leitura e escrita, modos de abertura de arquivos);
- Código feito em sala de aula:https://drive.google.com/file/d/15Li_ojmed0X7OK3F6pU9Wkh_EuzumFNU/view?usp=sharing
- Arquivos Binário (leitura e escrita, modos de abertura de arquivos);
-
- Exemplo completo para arquivos
- Código feito em sala de aula: https://drive.google.com/file/d/1EzDUCvjHjhqNrUnZbaXI5drGkpfCkC9G/view?usp=sharing
- ATIVIDADE (entrega até 19/07): Sistema de Gerenciamento de Playlists (definição e entrega no run.codes)
- Exemplo completo para arquivos
-
- Recursão versus Iteração (Exemplos com Fatorial e Sequência de Fibonacci);
- Código feito em sala de aula: https://drive.google.com/file/d/1T_IwhLWY1OhphRTIIQVnm2wtgG0QAU2X/view?usp=sharing
-
- Outros problemas recursivos: Buscas Sequencial e Binária
- Código feito em sala de aula: https://drive.google.com/file/d/1gOYlIFRV-NP5uWKKVFMl7lPfBWxgYWVd/view?usp=sharing
- ATIVIDADE (entrega até 26/07): Redrum (definição e entrega no run.codes)
-
- Material complementar: https://drive.google.com/file/d/1Kip7MkqwOtJxDMw3aFVlS7jg8n4TsdRx/view?usp=sharing
- Trabalho III - ASCII Artista (entrega até 29/07): definição e entrega no run.codes
-
- Definição de bibliotecas e cabeçalhos
- ifndef
- Código feito em sala de aula:https://drive.google.com/file/d/1_VOvSvsu_nQY3_U5F4bqbAy9e8DRU2wO/view?usp=sharing
- Devolutivas dos trabalhos entregues (todas as atividades e trabalho do Bloco II) - Média 2 finalizada
-
- Demonstração de uso e organização uma biblioteca
- Criação de alguns tipos de funções de leitura de strings
- Criação de funções para leitura de números
- Discussão sobre algumas funções de parseamento