Unidade Curricular: | Código: | ||
Linguagens de Programação I | 1093LPR1 | ||
Ano: | Nível: | Curso: | Créditos: |
2 | Licenciatura | Engenharia Informática | 7 ects |
Período Lectivo: | Língua de Instrução: | Nº Horas: | |
Primeiro Semestre | Português/Inglês | 91 | |
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) |