DIVISÃO DE ASSUNTOS ACADÊMICOS Secretaria Geral de Cursos PROGRAMA DE DISCIPLINA DEPARTAMENTO DE CIÊNCIAS EXATAS CÓDIGO: EXA801 DISCIPLINA: ALGORITMOS E PROGRAMAÇÃO I CARGA HORÁRIA: 60h 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. OBJETIVOS: 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; - 1 de 6 -
OBJETIVOS (Continuação): 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 sequenciais e de acesso aleatório, utilizando bibliotecas de funções e procedimentos em linguagem C. 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. - 2 de 6 -
AVALIAÇÃO: O módulo será dividido em duas unidades, para que o estudante possa refletir sobre sua situação na metade do curso e, caso necessário, realizar correções de rumo no processo de aprendizagem. O conceito de cada uma das duas 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 ponderada de cada unidade será transformada em um conceito, utilizando as escalas tradicionais de conversão de notas para conceitos usadas na UEFS. Os dois conceitos resultantes serão os conceitos finais para a avaliação dos alunos; 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 o módulo completo deverá ser cursado novamente; Ser aprovado na avaliação do módulo, caso contrário haverá reprovação por conceito; Caso o requisito de freqüência seja atendido e o estudante seja reprovado no processo de avaliação, passa a ser opcional a freqüência às atividades acadêmicas ordinárias do respectivo módulo isolado em períodos letivos posteriores, embora a universidade deva reservar espaço para o estudante dentre as vagas semestrais do componente e este deva se - 3 de 6 -
AVALIAÇÃO (Continuação): matricular novamente no módulo isolado; neste caso, o estudante deve refazer as atividades de avaliação no(s) período(s) seguinte(s), até que tenha concluído o componente. Havendo dificuldades para os estudantes com reprovação no módulo isolado em período(s) anterior(es) freqüentarem as atividades de avaliação, o corpo docente responsável pelo componente poderá fazer avaliações em separado para estes estudantes. CONTEÚDO PROGRAMÁTICO: Unidade 1: 1) Linguagens de programação Principais linguagens de programação e suas características Compiladores utilizados Principais ferramentas de desenvolvimento Principais paradigmas de linguagens de programação 2) Algoritmos Conceituação Formas de representação Estruturas de seleção Estruturas de repetição Síntese de algoritmos a partir de uma especificação 3) Introdução à linguagem C Estrutura de um programa em C 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 4) Estruturas de controle Expressões lógicas Comando if...else Comando switch...case Comandos while e do...while Comando for Comandos break e continue 5) Funções e procedimentos Técnicas de modularização Funções e procedimentos Protótipos Passagem de parâmetros (por referência e valor) - 4 de 6 -
CONTEÚDO PROGRAMÁTICO (Continuação): Uso de bibliotecas e exemplos de funções embutidas ( math.h, stdlib.h, etc.) Recursividade Unidade 2: 6) Vetores e Matrizes Vetores e matrizes: declaração e indexação de elementos Cadeias de caracteres Exemplos de funções embutidas ( string.h) Aplicações 7) Ponteiros e Alocação Dinâmica Aritmética com ponteiros Alocação e desalocação de memória Aplicações 8) Estruturas de dados definidas pelo usuário Estruturas: declaração de tipos e de variáveis Vetores e ponteiros de estruturas Noções de classes e objetos em programação orientada a objetos 9) Arquivos 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 REFERÊNCIA BIBLIOGRÁFICA: 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. - 5 de 6 -
REFERÊNCIA BIBLIOGRÁFICA (Continuação): 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. - 6 de 6 -