Universidade Federal de Goiás Instituto de Informática Ciência da Computação Código da Matriz 18P2IB Plano de Disciplina Ano Letivo: 2015 - 2º Semestre Dados da Disciplina Código Disc. 20 Nome PROGRAMAÇÃO DE COMPUTADORES I Carga Horária Teórica Prática 32 32 Prof(a): Gustavo Teodoro Laureano Turma: A Ementa Lógica de programação; constantes; tipos de dados primitivos; variáveis; atribuição; expressões aritméticas e lógicas; estruturas de decisão; estruturas de controle; estruturas de dados homogêneas e heterogêneas: vetores (arrays) e matrizes; funções; recursão. Desenvolvimento de algoritmos. Transcrição de algoritmos para uma linguagem de programação. Domínio de uma linguagem de programação: sintaxe e semântica; estilo de codificação; ambiente de desenvolvimento. Desenvolvimento de pequenos programas. Objetivo Geral Apresentar o estudo da lógica de programação e a construção e implementação de algoritmos coerentes e válidos. Objetivos Específicos • Fornecer ao aluno elementos básicos sobre computação, em particular o estudo de algoritmos e implementação de programas. Ao final do curso o aluno deve ser capaz de: • Compreender a estrutura lógica de uma linguagem de programação; • Elaborar algoritmos a partir da descrição textual de pequenos problemas; • Desenvolver programas em uma linguagem de programação de alto nível; • Selecionar estruturas de dados simples para a implementação dos programas; • Elaborar algoritmos específicos para a solução de problemas numéricos e não numéricos; • Utilizar ferramentas para o desenvolvimento de programas. Relação com Outras Disciplinas A disciplina de Programação de Computadores 1 fornece os elementos básicos sobre computação e implementação de programas, sendo necessária principalmente na disciplina de Programação de Computadores 2. Outras disciplinas como Estruturas de Dados 1 e 2, Programação Orientada a Objetos, Linguagens de Programação, Análise e Projeto de Algoritmos entre outras, também utilizam alguns tópicos abordados na disciplina de Programação de Computadores 1. Programa 1. Introdução: Apresentação da disciplina, objetivos, ementa, conteúdo programático, bibliografia, avaliações. 2. Conceitos Básicos da Computação e lógica de programação. 3. Tipos primitivos, contantes e variáveis. 4. Expressões aritméticas e lógicas 5. Comandos: atribuição, entrada e saída. 6. Estruturas de controle: Sequencial, seleção e repetição. 7. Estrutura de dados homogêneas Unidimensionais e Multidimensionais. 8. Estrutura de dados heterogêneas. 9. Funções Procedimentos Didáticos Legenda AEX Descrição Objetivo Aula teórica Transmitir conhecimento utilizando quadro ou slides. RE Aula teórica com resolução de exercícios Desenvolver o raciocínio lógico, criatividade e capacidade de abstração e a capacidade de identificar, analisar e projetar soluções de problemas. TG Trabalho em grupo Desenvolver a capacidade de comunicação oral e escrita. Capacidade de trabalhar em grupo. AP Aula prática Proporcionar ao aluno a aplicação prática do conteúdo ministrado em aula teórica. ED Estudo dirigido Desenvolver a capacidade analítica, capacidade de síntese, de avaliação crítica e de análise. Seminários Desenvolver o raciocínio lógico, criatividade, capacidade de abstração, capacidade para identificar, analisar, projetar soluções de problemas, a capacidade de comunicação oral e a capacidade de trabalhar em grupo. Outros Transmitir conhecimento utilizando quadro ou slides. SE OTR Conteúdo Programático / Cronograma Inicio Proc. Did. 03/08/2015 AEX 06/08/2015 AEX, RE, AP 10/08/2015 AEX, RE, AP 13/08/2015 AEX, RE, AP 17/08/2015 20/08/2015 RE, AP RE, AP 24/08/2015 AEX, RE, AP 27/08/2015 31/08/2015 RE, AP OTR 03/09/2015 AEX, RE, AP 07/09/2015 10/09/2015 14/09/2015 OTR RE, AP RE, AP 17/09/2015 AEX, RE, AP 21/09/2015 AEX, RE, AP 24/09/2015 RE, AP 28/09/2015 AEX, RE, AP 30/09/2015 AEX, RE, AP Tópico Introdução: apresentação da disciplina e do plano de ensino; Definição de algoritmos; Programação de computadores; Apresentação do sistema operacional Linux: Terminal, comandos e aplicativos usados na disciplina. Conceitos básicos: Estrutura básica de um programa em C. Compilação e execução via linha de comando. Tipos de dados primitivos; Declaração de variáveis de tipos primitivos; Diretiva #define; Atribuição e operações aritméticas; Inclusão de bibliotecas (#include); Saída de dados de tipos primitivos ( printf() ); Entrada de dados de tipos primitivos ( scanf() ); Entrada e saída de dados em Fluxogramas. Exercícios. Mais sobre printf() e scanf(); Estrutura Sequencial; Resolução de exercícios com operadores aritméticos; Exercícios. Estrutura Sequencial (continuação); Operações lógicas; Estruturas de Seleção (IF/IF-ELSE, Switch); Estruturas de Seleção em Fluxogramas; Exercícios. Estruturas de Seleção (Exercícios). Estruturas de Seleção (Exercícios). Geração de números aleatórios; Estruturas de repetição (while); Exercícios. Estruturas de repetição (Exercícios). Prova 1 (P1) Estruturas de Repetição (do..while); Estruturas de Repetição (for); Exercícios. Feriado Estruturas de Repetição (Exercícios) Estruturas de Repetição (Exercícios). Estruturas de Dados Homogêneas: Arrays Unidimensionais (Vetores) de tipos primitivos; Exercícios. Estruturas de Dados Homogêneas (Strings); Exercícios. Estruturas de Dados Homogêneas (Exercícios). Estruturas de Dados Homogêneas: Arrays Multidimensionais (Matrizes) de tipos primitivos; Exercícios. Estruturas de Dados Homogêneas: Arrays Multidimensionais (Exercícios). # Aul. 2 2 2 2 2 2 2 2 2 2 0 2 2 2 2 2 2 2 Inicio Proc. Did. 05/10/2015 08/10/2015 12/10/2015 OTR AEX, RE, AP OTR 15/10/2015 AEX, RE, AP 19/10/2015 OTR 22/10/2015 AEX, RE, AP 26/10/2015 29/10/2015 02/11/2015 AEX, RE, AP AEX, RE, AP OTR 05/11/2015 AEX, RE, AP 09/11/2015 12/11/2015 16/11/2015 AEX, RE, AP AEX, RE, AP AEX, RE, AP 23/11/2015 AEX, RE, AP 26/11/2015 30/11/2015 03/12/2015 07/12/2015 AEX, RE, AP AEX, RE, AP OTR OTR Tópico # Aul. Prova 2 (P2) Correção da Prova 2 (P2) Feriado Definição de tipos de dados (typedef); Estruturas de Dados Heterogêneas (Structs); Exercícios COMPEX (Não haverá aula) Estruturas de Dados Heterogêneas; Arrays Unidimensionais e Multidimensionais de estruturas (Vetores e Matrizes de Structs); Exercícios. Arrays de Estruturas de Dados Heterogêneas (Exercícios). Arrays de Estruturas de Dados Heterogêneas (Exercícios). Feriado Funções: Declaração de funções; Passagem de parâmetros via valor; Passagem de parâmetros (vetores e matrizes); Retorno de funções; Exercícios. Funções (Exercícios). Funções (Exercícios). Funções (Exercícios). Recursividade; Exercícios. Recursividade (Exercícios) Recursividade (Exercícios). Prova 3 (P3) Entrega de Resultados Total 2 2 0 2 0 2 2 2 0 2 2 2 2 2 2 2 2 2 64 Critério de Avaliação A avaliação do desempenho do aluno na disciplina será realizada por meio de três provas que resultarão em três notas (N1, N2 e N3). Para cada uma das três notas há um Fator de Ganho, denominado FG1 para N1, FG2 para N2 e FG3 para N3. O fator FGx é calculado pela razão entre a quantidade de Exercícios *Resolvidos* e Entregues (EEx) pelo aluno e a quantidade de Exercícios Disponibilizados (EDx) pelo professor em sala de aula até a data da prova correspondente. Após cada prova, inicia-se uma nova contagem dos EDx pelo professor e dos EEx pelo aluno. O valor de FGx pode variar de 0,5 a 1,0 e estabelece o aproveitamento da pontuação obtida na prova Px. O aluno inicia o curso com direito a 50% da nota de cada prova e aumenta seu fator de ganho à medida que resolve e entrega os exercícios disponibilizados pelo professor em sala de aula. FGx é calculado pela seguinte equação: FGx = EEx/EDx * 0.5 + 0.5 A média final será obtida pela equação: MF = FG1*N1*0.3 + FG2*N2*0.3 + FG*N3*0.4. onde: • MF é a Média Final; • Nx é a nota da prova Px; • FGx é o fator de ganho da prova Px. Observações: • Para as provas será considerado todo o conteúdo ministrado até a data de sua aplicação; • Será atribuída a nota 0 (zero) a qualquer prova não realizada ou trabalho não entregue na data estipulada; • Os alunos que se envolverem em “cola” (colando ou facilitando a cola) ou plágio receberão nota 0 (zero) para a atividade correspondente. O caso poderá ser levado ao conhecimento da Coordenação e do Conselho Diretor do Instituto de Informática para as providências legais; • O aluno que não comparecer a pelo menos 75% das aulas estará reprovado por falta; • O aluno que não conseguir média final maior ou igual a 6,0 (seis) estará reprovado por média. Data da Realização das Provas Prova 1 - 01/09/2015 Prova 2 - 13/10/2015 Prova 3 - 01/12/2015 Bibliografia Básica - Salvetti, D.D. e Barbosa, L.M., Algoritmos, Makron Books, São Paulo, 1998. - Cormen T. H. et al., Introduction to Algorithms, 2nd edition, MIT Press, 2001. - Cormen T. H. et al., Algoritmos: Teoria e Prática, Tradução da 2a Edição Ed. Campus, 2002 - Forbellone, A.L.V. e Eberspacher, H.F., Lógica de Programação - A construção de algoritmos e estruturas de dados, 3a ed., Prentice Hall, São Paulo, 2005. - Manzano, José Augusto N. G. e Oliveira, J. F., Algoritmos – Lógica para Desenvolvimento de Programação de Computadores, Editora Érica, São Paulo, 2000. Bibliografia Complementar - Manber, Udi., Introduction to Algorithms: A Creative Approach, Pearson Education, 1989. - Saliba, W.L.C., Técnicas de Programação - Uma abordagem estruturada, Makron Books, São Paulo, 1993. - Farrer, H. e outros, Programação Estruturada de Computadores - Algoritmos Estruturados, 3a ed., LTC, RJ, 1989. - Tremblay, J.-P Bunt, R.B., Ciência dos Computadores - Uma Abordagem .e Algorítmica, McGrawHill do Brasil, São Paulo, 1983. Bibliografia Sugerida Herbert, S., C Completo e Total, 3a ed., Makron Books, SP 1996. Termo de Entrega Apresentado à Coordenação no dia Termo de Aprovação Aprovado em Reunião de CD no dia Prof(a) Gustavo Teodoro Laureano Prof. Dr. Eduardo Simões de Albuquerque Professor Diretor do Instituto de Informática Termo de Homologação Data de Expedição: Goiânia, ____ de _________________ de ________.