Introdução à Programação
Período letivo 2011.2:
- Campus Juazeiro
- Programa da disciplina
- Calendário das aulas
- Horários da monitoria - NOVO
- Terça-feira (02/08) e quinta-feira (04/08) das 8:00 às 10:00hs (Laboratório de Computação 01)
- A partir do dia 08/08 e até o final do semestre: segundas-feiras das 08:00 às 10:00hs (Laboratório de Computação 02) e terças-feiras das 08:00 às 10:00hs (Laboratório de Computação 01)
Avaliações:
Material didático:
- Slides
- Exercícios:
- Exemplos
- "Simple Computer Simulator": um applet Java que simula um computador com apenas 13 instruções e 100 posições de memória (descompactar a pasta e abrir o documento html contido nela).
- "GCC": antigo "GNU C Compiler" e atual "GNU Compiler Collection", um compilador gratuito para várias linguagens, incluindo C, C++, Java, Fortran e Ada:
- Bibliografia:
- Algoritmos, lógica de programação e exercícios:
- Fundamentos da programação de computadores
- Cap.01 (Conceitos básicos)
- Cap.02 (Estrutura seqüencial)
- Cap.03 (Estrutura condicional)
- Cap.04 (Estrutura de repetição)
- Cap.05 (Vetores)
- Cap.06 (Matrizes)
- Cap.07 (Funções de tratamento de caracteres)
- Cap.08 (Registros)
- Cap.09 (Arquivos)
- Cap.10 (Sub-rotinas)
- Conceitos de linguagens de programação:
- Conceitos de linguagens de programação
- Cap.01 (Aspectos preliminares)
- Cap.05 (Nomes, vinculações, verificação de tipos e escopos)
- Cap.06 (Tipos de dados)
- Cap.07 (Expressões e instruções de atribuição)
- Cap.08 (Estruturas de controle no nível da instrução)
- Cap.09 (Subprogramas)
- Linguagem C:
- C completo e total
- Cap.01 (Uma visão geral de C)
- Cap.02 (Expressões em C)
- Cap.03 (Comandos de controle do programa)
- Cap.04 (Matrizes e strings)
- Cap.05 (Ponteiros)
- Cap.06 (Funções)
- Cap.07 (Estruturas, uniões, enumerações e tipos definidos pelo usuário)
- Cap.08 (E/S pelo console)
- Cap.09 (E/S com arquivo)
- C a linguagem de programação padrão ANSI
- Cap.01 (Uma introdução através de exemplos)
- Cap.02 (Tipos, operadores e expressões)
- Cap.03 (Fluxo de controle)
- Cap.04 (Funções e estrutura de programa)
- Cap.05 (Apontadores e vetores)
- Cap.06 (Estruturas)
- Cap.07 (Entrada e saída)
- Técnicas de programação:
- Artigos históricos importantes sobre programação estruturada:
- "Flow Diagrams, Turing Machines
And Languages With Only Two
Formation Rules", por C. Böhm e G. Jacopini (Maio de 1966)
- "Böhm and Jacopini's Reduction of Flow Charts", por D. C. Cooper (Agosto de 1967)
- "Goto statement considered harmful", por E. W. Dijkstra (Março de 1968)
- "Notes on structured programming", por E. W. Dijkstra (Abril de 1970)
- "The translation of 'goto' programas to 'while' programs", por E. Ashcroft e Z. Manna (Janeiro de 1971)
- "Program development by stepwise refinement", por N. Wirth (Abril de 1971)
- "Structured Programming", por O.-J. Dahl, E. W. Dijkstra e C. A. R. Hoare (1972)
- "Structured programming with goto statements", por D. E. Knuth (Dezembro de 1974)
- "On the composition of well-structured programs", por N. Wirth (Dezembro de 1974)
- "On Folk Theorems", por D. Harel (Julho de 1980)
- Web - Lógica de programação:
- Web - Linguagem C:
- Dos criadores da linguagem C, Dennis Ritchie e Brian Kernighan:
- Livros:
- Referências online:
- Material em português:
- Veja também:
Aulas ministradas:
Aula 01 - 02/08 - Apresentação da disciplina.
Aula 02 - 04/08 - História do computador;
Aula 03 - 08/08 - Processo de desenvolvimento de software e modelo de von Neumann;
Aula 04 - 09/08 - Simple Computer Simulator (SCS): apresentação e exercício;
Aula 05 - 15/08 - SCS: resolução do exercício e desvio do fluxo de controle; conceitos básicos de linguagens de programação e história da linguagem C;
Aula 06 - 16/08 - Estrutura de um programa C; printf; scanf; declaração de variáveis, expressões. Exercício.
Aula 07 - 22/08 - Declarações de variáveis. Tipos int e float. Expressões aritméticas. Comando de atribuição. Exercício feito com o SCS. Exercícios 06, 13, 15, 17, 19, 21, 24 e 25 (página 39-40 do livro Fundamentos da Programação de Computadores)
Aula 08 - 23/08 - Continuação dos exercícios.
Aula 09 - 29/08 - Execução condicional. Conceitos, comando if, sintaxe e semântica. Programação estruturada. Exercícios 1, 2, 4, 5, 7, 8, 9, 14 e 23 (páginas 72-77).
Aula 10 - 30/08 - Continuação dos exercícios.
Aula 11 - 05/09 - Execução iterativa. Conceitos, exemplos e exercícios (1 e 2, página 124).
Aula 12 - 06/09 - Exercícios (determinar se um nº é primo, 3, 8, idêntico ao 8 com número indeterminado de leituras, 9 (0 a 9, as 4 operações), 10 (0 a 9, as 4 operações), 21, -1/2!+2/4!+3/6!-..., 22, 25, 28, 32, 34 e 38, páginas 124-129).
Aula 13 - 12/09 - Continuação dos exercícios.
Aula 14 - 19/09 - Continuação dos exercícios.
Aula 15 - 20/09 - Continuação dos exercícios.
Aula 16 - 26/09 - Prova 1.
Aula 17 - 27/09 - Vetores: conceitos, sintaxe, semântica, exemplos. Exercícios 4, 1, 12, 1+2-3+4-5... (com 10 nºs), 18, 25, 3, 5, 19 (página 163)
Aula 18 - 03/10 - Continuação dos exercícios.
Aula 19 - 04/10 - Continuação dos exercícios.
Aula 20 - 10/10 - Matrizes. Exercícios 1, 3, 5, 7, 11, 16 e 24 (capítulo 6)
Aula 21 - 11/10 - Continuação dos exercícios.
Aula 22 - 17/10 - Ponteiros. Exercícios de ponteiros.
Aula 23 - 24/10 - Ponteiros x vetores. Exercícios de ponteiros (continuação).
Aula 24 - 25/10 - Funções. Abstração de controle (procedimento) e de operação (função). Passagem de parâmetros por valor. Escopo e tempo de vida das variáveis. Estrutura de blocos. Exercícios de funções.
Aula 25 - 31/10 - Passagem de parâmetros por endereço. Exercícios de funções (continuação).
Aula 26 - 01/11 - Strings.
Aula 27 - 07/11 - Exercícios de strings.
Aula 28 - 08/11 - Structs e tipos de dados definidos pelo usuário. Exercícios 2, 6 e 11 (capítulo 8, página 285).
Aula 29 - 21/11 - Alocação dinâmica (malloc e free). Exercícios de alocação dinâmica.
Aula 30 - 22/11 - Exercícios de alocação dinâmica (continuação). Solução do exercício 3.
Aula 31 - 28/11 - Prova 2.
05/12 - Prova final.