Roteiro de estudo
Estudo da 8ª Semana (24/03 - 30/03)
Nesta semana começaremos nosso estudo sobre recursividade, um dos conceitos mais importantes da computação: é uma estratégia de resolver grandes problemas quebrando-os em problemas menores da mesma forma.
- Leituras obrigatórias:
- Programming Abstractions in C - “Chapter 4: Introduction to Recursion”. Ler o capítulo todo, analisando os exemplos e códigos.
- Notas de aula do Capítulo 4: Introdução à Recursão
- Vídeos obrigatórios:
- Leituras recomendadas:
- (em breve)
- Vídeos recomendados:
- Exercícios:
- Lista de Exercícios do Cap. 4
- Lista de Exercícios Preparatórios para o Cap. 5
Estudo da 7ª Semana (17/03 - 23/03)
Nesta semana continuaremos nosso estudo sobre Bibliotecas e Interfaces, com implementação na linguagem C. Também estaremos focados a utilizar (ler e escrever) arquivos de texto.
- Leituras obrigatórias:
- As mesmas da semana 6. Continue lendo e estudando!
- Leituras (altamente!) recomendadas:
- As mesmas da semana 6. Continue lendo e estudando!
- Códigos:
- Os mesmos da semana 6. Continue estudando!
- Exercícios:
- Os mesmos da semana 6. Continue fazendo a lista de exercícios teóricos (manuscritos em papel almaço e fazendo a lista de exercícios de programação).
Estudo da 6ª Semana (10/03 - 16/03)
Nesta semana estudaremos alguns conceitos importantíssimos na computação: bibliotecas e interfaces. Aprenderemos a importância de interfaces e a como projetar boas interfaces. Também entenderemos em maiores detalhes como as strings são representadas no computador e aprenderemos sobre os modelos de abstração fornecidos por diferentes interfaces. Também aprenderemos a ler e escrever em arquivos de dados.
- Leituras obrigatórias:
- Programming Abstractions in C - “Chapter 3: Libraries and Interfaces”. Ler o capítulo todo, analisando os exemplos e códigos.
- Notas de aula do Capítulo 3. Este é o material utilizado em sala de aula.
- Leituras (altamente!) recomendadas:
- (em breve)
- Códigos:
- Exercícios:
- Lista de Exercícios n.º 3. As questões discursivas devem ser respondidas de forma manuscrita em papel almaço. As questões de programação serão entregues no Autolab (verifique a data de entrega no calendário de sua turma). Para fazer alguns dos exercícios, você pode usar os arquivos abaixo:
apologia_sem_acentos.txt
: um pequeno trecho do livro “Apologia de Sócrates”, de Platão, sem acentos ou caracteres especiais. Aproveite e leia o texto original escrito por Platão, em tradução de Maria Lacerda de Souza.br-sem-acentos.txt
: todas as palavras do português brasileiro, sem acentos ou caracteres especiais, em formato ASCII (lista produzida por Paulo Feofiloff)br-utf8.txt
: todas as palavras do português brasileiro, COM acentos e caracteres especiais, em formato UTF-8 (lista produzida por Paulo Feofiloff). Obs.: salve o arquivo em seu computador, o navegador não conseguirá compreender corretamente os acentos e caracteres especiais.
- Lista de Exercícios n.º 3 (Extra). Este é um exercício de programação OPCIONAL um pouco mais avançado. Você não é obrigado a fazer este exercício mas saiba que este exercício será muito bom para que você aprenda e sedimente os conceitos de estruturas de dados.
- Lista de Exercícios n.º 3. As questões discursivas devem ser respondidas de forma manuscrita em papel almaço. As questões de programação serão entregues no Autolab (verifique a data de entrega no calendário de sua turma). Para fazer alguns dos exercícios, você pode usar os arquivos abaixo:
Estudo da 5ª Semana (03/03 - 09/03)
Em virtude do Feriado de Carnaval não haverá aula presencial nesta semana. Você deve continuar a fazer a Lista de Exercícios n.º 2. Note que o prazo de entrega foi alterado:
- Exercícios de Programação: 09/03/2025 23:59h, no Autolab
- Respostas manuscritas: 10/03/2025 07:15h, durante a aula
Estudo da 4ª Semana (24/02 - 02/03)
Nesta semana continuaremos o estudo sobre tipos de dados em C, em especial os tipos enumeração, ponteiros, arrays e registros.
- Leituras obrigatórias:
- As mesmas da semana 3, continue lendo!
- Leituras recomendadas:
- As mesmas da semana 3, continue lendo!
- Exercícios:
- Os mesmos da semana 3, continue estudante!
Estudo da 3ª Semana (17/02 - 23/02)
Nesta semana iniciaremos nosso estudo aprofundado sobre tipos de dados em C, em especial os tipos enumeração, ponteiros, arrays e registros. Aprenderemos a relação especial entre ponteiros e arrays, e começaremos a trabalhar com alocação dinâmica de memória. Atenção:
- Para o estudo deste conteúdo você deve fazer um esforço ESTUDAR AS LEITURAS RECOMENTADAS. Não fique apenas com as leituras obrigatórias, que são o mínimo para o entendimento inicial do assunto. Se você quiser entender enumerações, arrays, ponteiros e registros, você PRECISA se esforçar nas leituras recomendadas adicionais.
- É absolutamente fundamental que você FAÇA TODOS OS EXERCÍCIOS DE PROGRAMAÇÃO desta semana. Você precisa dominar esse conteúdo para poder entender aspectos mais avançados das estruturas de dados e algoritmos da computação.
- Leituras obrigatórias:
- Programming Abstractions in C - “Chapter 1: An Overview of C”. Ler o capítulo todo, analisando os exemplos e códigos.
- Notas de aula do Capítulo 2. Este é o material utilizado em sala de aula.
- Leituras (altamente!) recomendadas:
- C Pointers
- Pointers in C
- C Pointers
- C Pointers and Arrays
- Pointer to an Array
- Function Pointer in C
- Pointer to Pointer
- Chain of Pointers in C
- NULL Pointer in C
- Void Pointer in C
- What are Wild Pointers?
- Difference between constant pointer, pointers to constant, and constant pointers to constants
- Pointer Arithmetics in C
- Relationship Between a Pointer and an Array
- Passing Pointers to Functions
- How to Return a Pointer
- Dynamic Memory Allocation in C
- What is Memory Leak
- Pointers vs Arrays in C++
- Difference Between Arrays and Pointers
- Pointer vs Array in C
- C++ Pointers
- C Structures
- Array of Structures
- Structure Pointer in C
- C Pointer to Pointer
- Códigos:
- Códigos do Capítulo 2. (em breve)
- Exercícios:
- Lista de Exercícios n.º 2. As questões discursivas devem ser respondidas de forma manuscrita em papel almaço. As questões de programação serão entregues no Autolab (verifique a data de entrega no calendário de sua turma). Atenção: você precisará utilizar o código abaixo em um dos exercícios:
- juizes.c.rar: este é o código do programa “
juizes.c
” que você utilizará em um dos exercícios de programação. O código está compactado no formato RAR, basta descompactar o arquivo e estudar o programa.
- juizes.c.rar: este é o código do programa “
- Lista de Exercícios n.º 2. As questões discursivas devem ser respondidas de forma manuscrita em papel almaço. As questões de programação serão entregues no Autolab (verifique a data de entrega no calendário de sua turma). Atenção: você precisará utilizar o código abaixo em um dos exercícios:
Estudo da 2ª Semana (10/02 - 16/02)
Esta semana nos dedicaremos a fazer uma rápida revisão sobre os aspectos mais importantes da linguagem C. Em especial, veremos: linguagens de alto e baixo nível, processo de compilação, a estrutura de um programa em C, variáveis, valores e tipos, expressões e regras de precedência e associatividade, sentenças de comando e sentenças de controle, e subprogramas (funções, procedimentos e predicados). Você fará a primeira listagem de exercícios, contendo questões teóricas e questões de programação.
- Leituras obrigatórias:
- Programming Abstractions in C - “Chapter 1: An Overview of C”. Ler o capítulo todo, analisando os exemplos e códigos.
- Notas de aula do Capítulo 1. Este é o material utilizado em sala de aula.
- Como documentar um programa: aprenda a documentar corretamente um programa em C, explicando o que um subprograma faz, não como ele faz. Também disponível em PDF.
- Leituras recomendadas:
- C Programming (PDF): este arquivo é o PDF do “Anexo C” do livro Digital Design and Computer Architecture (também disponível online). Estude este material de você precisa de uma revisão mais detalhada da linguagem C.
- Códigos:
- Códigos do Capítulo 1 (ZIP). Estude os códigos de exemplo deste capítulo. Em especial note como o código está formatado e documentado. Aprenda também como a
Makefile
está configurada para fazer o build do programa.
- Códigos do Capítulo 1 (ZIP). Estude os códigos de exemplo deste capítulo. Em especial note como o código está formatado e documentado. Aprenda também como a
- Exercícios:
- Lista de Exercícios n.º 1. As questões discursivas devem ser respondidas de forma manuscrita em papel almaço. As questões de programação serão entregues no Autolab (o professor explicará posteriormente como fazer essa entrega).
Estudo da 1ª Semana (03/02 - 09/02)
Nesta semana faremos apenas uma avaliação diagnóstica inicial e a aula inaugural da disciplina.
Para se preparar para a próxima semana, quando começaremos o conteúdo, você deve aprender a utilizar Makefiles para automatizar a compilação de programas em C. Assista aos vídeos obrigatórios listados. Você também deve ler o material obrigatório listado. O objetivo desse estudo inicial é você aprenda, por conta própria a utilizar Makefiles (e o comando make
) para automatizar a compilação de programas. Você não precisa aprender as funcionalidades mais avançadas e difíceis agora, mas você deve ser capaz de criar e utilizar Makefiles para compilar, recompilar e construir seus programas em C.
Também há algumas leituras não obrigatórias, mas recomendadas, a respeito de compiladores, montadores e outros tópicos importantes. Além disso, se você não tem facilidade com o uso de Linux, também há um tutorial recomendado para iniciantes em UNIX/Linux (e uma folha de consulta rápida de comandos).
- Vídeos obrigatórios:
- Leituras obrigatórias:
- Leituras recomendadas:
- Exercícios:
- (nada por enquanto)
- Outras atividades:
- Comece a preparar o ambiente para o conteúdo que começa na próxima semana. Você deve ter um computador Linux (ou uma máquina virtual Linux em um computador Windows). Se você utiliza Mac, pode instalar as ferramentas diretamente (é trabalhoso, mas possível). Em breve o professor disponibilizará uma máquina virtual Linux para os alunos.
Notas: