Universidade Estadual de Feira de Santana Departamento de Ciências Exatas Período Letivo 2009.1 Plano de Ensino do Componente Curricular EXA 801 – ALGORITMOS E PROGRAMAÇÃO I Professores: Angelo Loula, Nilton Dantas, Maurício Escarpinati, Michele Angelo Material das Aulas Tutoriais (Alunos e Tutores)
Carga Horária 60 horas Pré-requisitos Não tem Ementa Classificação de linguagens de programação. Compiladores e interpretadores. Noção de algoritmo, dado, variável, instrução e programa. Tipos e estruturas elementares de dados. Operadores. Funções embutidas e expressões. Instruções condicionais, incondicionais e de repetição. Tipos definidos pelo programador e tipos abstratos de dados. Estruturas compostas de dados: vetores, matrizes e registros. Noções de estruturas dinâmicas de dados. Subprogramas: funções, procedimentos e recursão. Noções de arquivos em programação. Algoritmos e aplicações. Apresentação Algoritmos e Programação I auxilia no processo de formação de um estudante mais criativo, autônomo, capaz de resolver problemas e de tomar suas próprias decisões. O seu conteúdo programático é alicerçado na lógica de programação que auxilia no exercício do raciocínio lógico, estimulando o estudante a encontrar soluções para os problemas computacionais propostos. Objetivos, Habilidades e Competências Geral: • Ser capaz de resolver problemas através da interpretação de cenários do mundo real, modelando soluções através de algoritmos e estruturas de dados básicas e implementando as soluções através de programas de computador escritos em uma linguagem de programação estruturada. Específicos: • Compreender as estruturas dos algoritmos usados nas linguagens de programação modernas e aplicar estas estruturas para projetar a solução de problemas; • Ser capaz de escrever, compilar, depurar e testar programas em uma linguagem de programação estruturada (C); • Utilizar software de edição de texto, compilação e depuração para o desenvolvimento de programas simples em linguagem C; • Aplicar estruturas de dados homogêneas e heterogêneas para modelar dados simples e complexos a partir de problemas reais, bem como lidar com questões de gerenciamento de memória que surgem a partir do uso destas estruturas de dados; • Analisar problemas, decompondo-os em partes através de técnicas de projeto e desenvolvimento bottom-up ou top-down e projetar soluções integrando as partes através de estruturas modulares como funções e procedimentos; • Ser capaz de armazenar, acessar, alterar ou eliminar informação persistente em arquivos seqüenciais e de acesso aleatório, utilizando bibliotecas de funções e procedimentos em linguagem C. O aluno dessa disciplina deverá ser capaz de: • Identificar problemas de informação e, na medida do possível, solucioná-los para atingir os objetivos esperados; • Analisar e solucionar problemas, através do uso sistemático de algoritmos (desenvolver o raciocínio lógico); • Entender a lógica de programação, tendo em vista as técnicas de programação e a linguagem C; • Dominar comandos básicos, estruturas de dados simples e compostas da Linguagem C; • Implementar Sistemas de Computação conforme as especificações dos mesmos. Conteúdo Programático 1) Algoritmos e Linguagens de programação • Principais linguagens de programação e suas características
2) Introdução à linguagem C • Compiladores e Interpretadores • Principais paradigmas de linguagens de programação • Noção de algoritmo, dado, variável, instrução e programa • Estrutura de um programa em C
3) Estruturas de controle • Tipos de dados (char, int, float, double, etc.) • Modificadores (unsigned, long, short, etc.) • Constantes e variáveis • Entrada e saída de dados (funções printf e scanf) • Operadores aritméticos e de atribuição • Operadores relacionais e lógicos • Expressões lógicas
4) Funções e procedimentos • Comando if...else • Comando switch...case • Comandos while e do...while • Comando for • Comandos break e continue • Técnicas de modularização
5) Vetores e Matrizes • Funções e procedimentos • Protótipos • Passagem de parâmetros (por referência e valor) • Uso de bibliotecas e exemplos de funções embutidas (math.h, stdlib.h, etc.) • Recursividade • Vetores e matrizes: declaração e indexação de elementos
6) Ponteiros e Alocação Dinâmica • Cadeias de caracteres • Exemplos de funções embutidas (string.h) • Aplicações • Aritmética com ponteiros
7) Estruturas de dados definidas pelo usuário • Alocação e desalocação de memória • Aplicações • Estruturas: declaração de tipos e de variáveis
8) Arquivos • Vetores e ponteiros de estruturas • Noções de classes e objetos em programação orientada a objetos • Tipos de arquivo
• Abertura, leitura, escrita e fechamento de arquivo • Operações sobre arquivos de registros: inserção, consulta, alteração e exclusão • Aplicações Metodologia A metodologia será um híbrido de Grupos Tutoriais (GT), Consultorias Individuais (CI) e Coletivas (CC) e Aulas Expositivas (AE). A seguir apresentamos os alcances de cada uma destas estratégias metodológicas: • Durante todo o curso serão realizadas atividades seguindo a metodologia PBL (Aprendizagem Baseada em Problemas), a qual consistirá basicamente de grupos tutoriais (GT) que objetivam solucionar os problemas e/ou projetos que serão propostos. Esses problemas devem ser resolvidos conforme critérios determinados em documento anexo a cada problema; • Os GTs, baseados na estratégia de PBL (Aprendizagem baseada em problemas), permitirão ao aluno chegar ao conhecimento através do processo de reflexão consigo mesmo e das relações com os outros alunos do grupo; • As CIs e CCs permitirão ao aluno estabelecer diferentes canais de diálogo no processo de resolução de problemas. • As AEs serão aulas expositivas dialogadas com o objetivo de introduzir assuntos que serão tratados mais detalhadamente nos problemas, complementar o processo de aprendizagem após o final de um problema ou até mesmo discutir outros assuntos que não serão abordados no GT. Material Utilizado Para os GTs: • Salas acondicionadas para PBL, com quadro branco, kit para escrever no quadro, cadeiras e mesa de reunião. Para as AEs e CCs: • Salas tradicionais de aula, com quadro negro ou branco, kit para escrever nos quadros, retro-projetor, computador e canhão multimídia. Para as CIs: • Sala do professor com quadro branco, kit para escrever nos quadros, computador, impressora, cadeiras e mesa. Avaliação O módulo será dividido em três unidades, para que o estudante possa refletir sobre sua situação em momentos distintos do curso e, caso necessário, realizar correções de rumo no processo de aprendizagem. O conceito de cada uma das unidades será calculado a partir de uma média ponderada (MP) de produtos de grupos tutoriais (PGT), avaliações de conteúdo do módulo (AC) e do desempenho nos grupos tutoriais (DGT), dada a seguir: MP= 0,4 PGT + 0,4 AC + 0,2 DGT • Ao final de cada problema, os alunos deverão, individualmente ou em grupo, gerar um produto ou apresentação conforme designado para cada problema; • A média PGT será calculada a partir de uma ponderação das notas obtidas nos produtos ou apresentações gerados; • As avaliações de conteúdo (AC) tratarão dos conteúdos abordados no módulo e poderão ser provas escritas, listas de exercícios e demais instrumentos de avaliação de conteúdo. • Durante os grupos tutoriais, os alunos serão avaliados por seu desempenho (DGT), sendo consideradas as dimensões de participação, contribuição efetiva, criatividade, entrosamento e respeito mútuo em cada um dos passos do ciclo PBL; • A média para aprovação deste módulo é 7.0, assim como institucionalmente é definido; • As datas para entrega dos produtos da resolução dos problemas serão definidas ao longo do curso. Provas Finais: • Não obtendo conceito suficiente na avaliação do módulo, o estudante poderá fazer prova final, e o conceito final será de acordo com o sistema de avaliação vigente na UEFS. Aprovação no módulo: Para ser aprovado no estudo integrado, o estudante precisa cumprir os seguintes requisitos: • Ter frequência igual ou superior a 75% da carga horária efetiva ministrada no módulo isolado, caso contrário haverá reprovação por freqüência e o módulo completo deverá ser cursado novamente; • Ser aprovado na avaliação do módulo, caso contrário haverá reprovação por conceito; Calendário (tentativa)
Referências LIVROS-TEXTO MANZANO, J. A. N. G., OLIVEIRA, J. F. Algoritmos : Lógica para Desenvolvimento de Programação. São Paulo: Érica, 1996. MANZANO, J. A. N. G. Estudo Dirigido de Linguagem C. São Paulo: Érica: 1997. FORBELLONE, A. V. L., EBERSPACHER, H. F. Lógica de Programação : A Construção de Algoritmos e Estrutura de Dados. 2. ed. São Paulo: Makron Books, 2000. MIZRAHI, V. V. Treinamento em Linguagem C : Módulo 1. São Paulo : Makron Books, 1990. MIZRAHI, V. V. Treinamento em Linguagem C : Módulo 2. São Paulo : Makron Books, 1990. SCHILDT, H. C Completo e Total. 3. Ed. São Paulo: Makron Books, 1996. LEITURA COMPLEMENTAR ZIVIANI, N. Projeto de Algoritmos com Implementação em Pascal e C. 4. ed. São Paulo: Pioneira, 1999. NORTON, P. Introdução à Informática. São Paulo: Makron Books, 1997. FARRER, H., et al. Algoritmos Estruturados. 3. ed. Rio de Janeiro: LTC, 1999. FARRER, H. et al. Pascal Estruturado. 3. ed. Rio de Janeiro: LTC, 1999. CORMEN, T.H., LEISERSON, R.L., RIVEST, R.L. e STEIN, C. Introduction to Algorithms, 2. ed., MIT Press, 2001. AHO, A., HOPCROFT, J. e ULLMAN, J. Data Structures and Algorithms, Addison-Wesley Pub Co, 1983. KNUTH, D. The Art of Computer Programming, vol. I e III, Addison-Wesley Pub Co, 1998. HORSTMANN, C. e CORNELL, G. Core Java 2, V.1: Fundamentos, Makron, 2000. DEITEL, H.M. e DEITEL, P.J. Java: Como Programar, Bookman Companhia Editora, 2003. KERNIGHAN, B. W., RITCHIE, D. M. C: A Linguagem de Programação padrão ANSI. Ed. Campus, 1990. TENENBAUM, A. M., LANGSAM, Y., AUGENSTEIN, M. J. Estruturas de Dados Usando C. São Paulo: Makron Books, 1995. DAHL, O. –J, DIJKSTRA, E. W., HOARE, C. A. R. Structured Programming. Academic Press, 1972. DIJKSTRA, E. W. A Discipline of Programming. New Jersey : Englewood Cliffs, 1976. KERNIGHAN, B. W., PIKE, R. The Practice of Programming. Addison-Wesley, 1999. |
oldpages >