EXA 801 - Algoritmos e Programação I

AVISOS:

Resultados

Prova Final: 10/Fev (quarta-feira), 10h, sala PAT-50.

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

•   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.