Unidade Curricular:Código:
Linguagens de Programação I1093LPR1
Ano:Nível:Curso:Créditos:
2LicenciaturaEngenharia Informática7 ects
Período Lectivo:Língua de Instrução:Nº Horas:
Primeiro SemestrePortuguês/Inglês91
Objectivos de Aprendizagem:
Nesta unidade curricular pretende-se que os alunos consigam compreender e expressar-se algoritmicamente através da linguagem C. Mais concretamente:
• Dominar a sintaxe e a semântica da linguagem C
• Compreender, interpretar e identificar erros de compilação e execução de programas em C
• Utilizar fluentemente tipos de dados, operadores e expressões, controlo de fluxo, vectores, estruturas de dados, apontadores e operações de IO
• Aplicar funções na estruturação e implementação de aplicações em C
• Definir e implementar estruturas de dados dinâmicas com recurso a apontadores e estruturas
• Estruturar adequadamente o armazenamento de informação em formato texto e binário
• Aplicar ficheiros de texto e binários no armazenamento e recuperação de informação persistente
• Aplicar estruturas dinâmicas e ficheiros na resolução de problemas concretos
Conteúdos Programáticos:
1. Introdução ao C: estruturação dos programas; variáveis e tipos de dados; operadores e expressões; controlo do fluxo e IO.
2. Estruturação de programas em funções: passagem por valor; variáveis locais e recursividade.
3. Vectores e Strings: declaração e inicialização; parâmetros de funções e vectores multi-dimensionais.
4. Apontadores: declaração e inicialização; aritmética de apontadores; apontadores e vectores; passagem por referência e apontadores para apontadores.
5. Estruturas de dados: declaração de tipos; variáveis e parâmetros de funções; gestão de memória.
6. Apontadores e estruturas de dados dinâmicas: pilhas e filas com listas ligadas.
7. Ficheiros: entrada e saída de dados em ficheiros; ficheiros de texto e binários; ficheiros sequenciais e de acesso aleatório.
8. Conceitos avançados: instruções ao pré-processador; variáveis de registo, enumeração e união; apontadores para funções; funções e variáveis estáticas.
Demonstração da Coerência dos Conteúdos Programáticos com os Objectivos da Unidade Curricular:
O conteúdo programático cobre os objectivos previstos, uma vez que se organiza em módulos que endereçam especificamente os conceitos da linguagem C e a sua utilização na resolução de problemas concretos. Os conceitos básicos são revistos nos módulos 1, 2 e 3 (cf. tipos de dados, operadores e expressões, estruturas de controlo, IO, estruturação de funções, vectores e strings) e os conceitos avançados são abordados nos módulos 4, 5, 6, 7 e 8 (cf. apontadores, estruturas, gestão de memória dinâmica e ficheiros). Em todos os módulos são abordados os conceitos teóricos associados a cada tema e demonstrada, com exemplos concretos, a sua aplicação. Estimula-se ainda a resolução individual de exercícios em cada módulo.
Metodologias de Ensino (Avaliação Incluída):
Os conteúdos são introduzidos e expostos nas aulas teórico-práticas (TP), recorrendo tipicamente a exemplos simples e ilustrativos de aplicação a problemas concretos e realistas. Esta metodologia é complementada com a proposta de exercícios práticos, quer para resolução na aula, quer para resolução ou finalização individualmente em casa. As aulas práticas-laboratoriais (PL) acompanham o ritmo das aulas TP com a proposta e resolução de exercícios adequados a cada módulo, complementando o esfroço das aulas TP.
Os alunos instalam tipicamente um dos IDEs mais utilizado na comunicade de desenvolvimento em C (e.g. CodeBlocks, CLion, Xcode) e no qual criam um projecto que é organizado para acompanhar toda a unidade curricular e dentro do qual criam e integram os exercícios que desenvovem.
A avaliação compreende duas componentes TP e PL com as seguintes percentagens:
TP (25% Teste 1 + 45% Teste 2) + PL (30% Projecto)
Demonstração da Coerência das Metodologias de Ensino com os Objectivos de Aprendizagem da Unidade Curricular:
A metodologia de ensino foca-se na compreensão da sintaxe e semântica da linguagem de programação aplicada à resolução de problemas concretos e reais. Os exemplos de exercícios propostos direccionam-se para a compreensão dos mecanismos disponíveis na linguagem de programação, aplicados na estruturação e implementação de soluções de programação. A resolução recorrente de exercícios pretende estimular a aplicação dos conhecimentos sobre os mecanismos de programação. Esta prática pretende ainda consolidar o domínio sobre todo o processo de desenvolvimento, i.e., a concepção, implementação e teste de estruturas funcionais aplicados a problemas concretos.
Bibliografia:
1. L. Damas, Linguagem C, 10ª Edição, FCA, 1999.
2. B. Kernighan & D. Ritchie, The C Programming Language, Prentice-Hall International, 1988.
Docente (* Responsável):
João Viana (jviana@ufp.edu.pt)
Rui Silva Moreira (rmoreira@ufp.edu.pt)