EXA 801 - Algoritmos e Programação I
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
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
• Compiladores e Interpretadores
• Principais paradigmas de linguagens de programação
• Noção de algoritmo, dado, variável, instrução e programa
2) 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
3) Estruturas de controle
• Expressões lógicas
• Comando if...else
• Comando switch...case
• Comandos while e do...while
• Comando for
• Comandos break e continue
4) Funções e procedimentos
• Técnicas de modularização
• 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
5) 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
6) Ponteiros e Alocação Dinâmica
• Aritmética com ponteiros
• Alocação e desalocação de memória
• Aplicações
7) 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
8) 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
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.