PROGRAMA

UNIVERSIDADE ESTADUAL DE FEIRA DE SANTANA

DEPARTAMENTO DE CIÊNCIAS EXATAS

PROFESSORES:    

ROBERTO ALMEIDA BITTENCOURT

FERNANDA CASTELO BRANCO SANTANA

CLÁUDIA PINTO PEREIRA

PERÍODO LETIVO: 2018.2

 

PROGRAMA DO MÓDULO ISOLADO

EXA 801 – ALGORITMOS E PROGRAMAÇÃO I

 

 

CARGA HORÁRIA/CREDITAÇÃO

 60 horas / (T:60; P:00; E:00)

 

PRÉ-REQUISITOS

 Não há.

 

SIGNIFICADO DO COMPONENTE CURRICULAR

 Este componente curricular é de extrema fundamental para a formação de qualquer profissional das áreas de Engenharia e Computação, uma vez que dá ao estudante noções de raciocínio lógico matemático, sequência de ideias, interpretação de problemas e soluções de problemas. Além disso, faz parte do currículo básico de todas as engenharias e dos cursos de Tecnologia de Informação (TI). Este é o primeiro componente curricular de uma sequência de outros que tratam de programação e do embasamento teórico-prático necessário para o estudante que se interessa pela área de produção de software.

 

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:

1) Compreender as estruturas dos algoritmos usados nas linguagens de programação modernas e aplicar estas estruturas para projetar a solução de problemas;

2) Ser capaz de escrever, compilar, depurar e testar programas em uma linguagem de programação imperativa (C);

3) Utilizar software de edição de texto, compilação e depuração para o desenvolvimento de programas simples em linguagem C;

4) 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;

5) 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;

6) Ser capaz de armazenar, acessar, alterar ou eliminar informação persistente em arquivos de acesso sequencial ou aleatório, utilizando bibliotecas de funções e procedimentos em linguagem C.

 

HABILIDADES E COMPETÊNCIAS

 1) Identificar problemas de informação e solucioná-los para atingir os objetivos esperados;

2) Analisar e solucionar problemas através do uso sistemático de algoritmos;

3) Desenvolver o raciocínio lógico e o pensamento computacional;

4) Entender a lógica de programação em uma linguagem imperativa;

5) Dominar comandos básicos, estruturas de dados simples e compostas da linguagem C;

6) Aplicar técnicas de programação na linguagem C para a resolução de problemas;

7) Implementar sistemas de computação conforme as suas especificações.

 

CONTEÚDO PROGRAMÁTICO

 

1) Algoritmos e Linguagens de programação

Compiladores e Interpretadores

Noção de algoritmo, dado, variável, instrução e programa

 

2) Introdução à linguagem C

Estrutura de um programa em C

Arquivos de cabeçalho

Tipos de dados (char, int., flat, 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

 

3) Estruturas de controle

Operadores relacionais e lógicos

Expressões lógicas

Comando if...else

Comando switch...case

Comandos while e do...while

Comando for

Comandos break e continue

 

4) 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

 

5) Arquivos Texto

Abertura, leitura, escrita e fechamento de arquivo

Aplicações

 

6) Ponteiros

Aritmética com ponteiros

 

7) 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

 

8) Estruturas de dados definidas pelo usuário

Estruturas: declaração de tipos e de variáveis

Vetores e ponteiros de estruturas

 

9) Alocação Dinâmica

Alocação e desalocação de memória

Aplicações

 

10) Introdução a estruturas de dados: lista, lista encadeada

 

11) Arquivos Binários

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 aulas expositivas dialogadas e aulas de exercícios com o objetivo de introduzir assuntos que também serão tratados nos problemas apresentados no Módulo Integrador e complementar o processo de aprendizagem baseada em problemas, aprofundando a discussão conceitual.

As aulas expositivas dialogadas têm como objetivo introduzir conteúdos e práticas de expressão de algoritmos e de programação de computadores.

As aulas de exercícios servem para reduzir a curva de aprendizagem e realçar os aspectos mais importantes destas técnicas de resolução de problemas algorítmicos e suas soluções em uma linguagem de programação.

 

MATERIAL UTILIZADO

Quadro branco, pincel, apagador, computador e projetor multimídia.

 

AVALIAÇÃO

 O módulo será dividido em três unidades, para que o estudante possa refletir sobre sua situação em diferentes momentos do curso e, caso necessário, realizar correções de rumo no processo de aprendizagem.

 

Medidas da Unidade:

A medida de cada uma das três unidades será extraída de uma prova escrita realizada no final da unidade.

 

Média Parcial:

A média parcial será a média aritmética das medidas de cada unidade. Obtendo média igual ou superior a 7,0 (sete), o estudante pode ser aprovado, caso cumpra os requisitos de frequência.

 

Prova Final:

·         Não obtendo média parcial suficiente na avaliação do módulo, o estudante poderá fazer prova final, e a média final será calculada de acordo com o sistema de avaliação vigente na UEFS.

 

Aprovação no módulo:

Para ser aprovado no módulo, o estudante precisa cumprir os seguintes requisitos:

·         Ter frequência igual ou superior a 75% da carga horária efetiva ministrada no módulo, caso contrário haverá reprovação por frequência;

·         Ser aprovado na avaliação do módulo, caso contrário haverá reprovação por nota.

CRONOGRAMA

 

1)         SIECOMP

2)         Apresentação do curso, atividades de lógica e Introdução aos Algoritmos

3)         Algoritmos e linguagens de programação: principais linguagens de programação e suas características; algoritmos e suas representações; dados e variáveis, comandos.

4)         Introdução à linguagem C: estrutura de um programa em C; o pré-processador C; arquivos de cabeçalho; tipos de dados fundamentais; modificadores; constantes e variáveis; comandos de entrada e saída de dados.

Correção de questões em Portugol e Fluxogramas

5)         Estrutura condicional (if...else, switch..case)

6)         Resolução de exercícios sequenciais e condicionais

7)         Estruturas de Repetição: laço for,  while, do...while

8)         Exercícios de repetição - dúvidas e correção

9)         Primeira Avaliação Teórica

10)       Vetores e Matrizes

11)       Exercícios de vetores, matrizes, repetição

12)       Entrega da Primeira Avaliação; Correção de exercícios de vetores e matrizes

Manipulação de strings, funções da biblioteca string.h

13)       Finalização de string

Correção de questões de string

14)       Ordenação de vetores

15)       Ponteiros, Operações com ponteiros

16)       Funções e modularização: protótipos; tipos de retorno; técnicas de modularização; uso de bibliotecas e exemplos de funções embutidas

17)       Passagem de parâmetros para funções, visibilidade de variáveis: variáveis locais e globais, exercícios funções e ponteiros

18)       Funções recursivas

19)       Segunda Avaliação Teórica

20)       Depuração de código passo a passo através de debuggers

21)       Tipos de dados definidos pelo usuário: estruturas, estruturas aninhadas, uniões e enumerações

22)       Tipos de dados definidos pelo usuário: estruturas, estruturas aninhadas, uniões e enumerações

23)       Entrega da Segunda avaliação; Alocação dinâmica de memória

24)       Exemplos de uso de alocação dinâmica – vetores, lista, lista encadeada; operações sobre lista encadeada: inserção, remoção, ordenação, busca

25)       Lista de Exercício - Operações em Listas encadeadas

26)       Lista de Exercício - Operações em Listas encadeadas

27)       Aula de Exercícios sobre funções recursivas e alocação dinâmica

28)       Arquivos: texto e binário

29)       Aula de Exercícios

30)       Terceira Avaliação Teórica

31)       Aplicação de questionário de habilidades de programação (SCS1)

 

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.

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.