Licenciatura | Engenharia Informática
Programação I
Área Científica
Ciências Informáticas
Duração
Semestral
ECTS
6
Horas de Contacto Teórico Práticas
60h
OBJETIVOS DA APRENDIZAGEM
Para concluir com sucesso esta unidade curricular, os estudantes deverão demonstrar possuir os seguintes conhecimentos e capacidades:
- Conhecer as técnicas fundamentais de programação;
- Conhecer a estrutura da linguagem C;
- Saber compilar e executar programas em C;
- Saber escrever programas que utilizem as estruturas de decisão;
- Saber escrever programas que utilizem as estruturas de repetição;
- Saber utilizar funções de manipulação de strings;
- Saber escrever programas que usem arrays;
- Saber escrever programas que usem pointers e structures;
- Criar programas que acedam a ficheiros;
- Compreender os conceitos de classes e objetos e respetiva implementação em C++;
- Saber escrever, compilar executar programas em C++ utilizando classes e objetos.
PROGRAMA
1. Técnicas básicas de programação
1.1. Algoritmos e programas
1.2. Programas e linguagens
1.3. Tipos de dados
1.4. Identificadores, variáveis e constantes
1.5. Operadores e expressões
1.6. Strings
1.7. Estruturas de decisão e repetição
2. Apresentação da linguagem C
2.1. Programas e linguagens de programação
2.2. Contextualização da linguagem C perante os diferentes paradigmas de programação
2.3. Compiladores e interpretadores
2.4. Compilação e linkagem
2.5. O código fonte e o executável
2.6. Identificadores
2.7. Constantes e strings de caracteres
2.8. Operadores e funções
3. Variáveis, constantes e tipos básicos de dados
3.1. Declaração e inicialização de variáveis
3.2. Variáveis locais e globais
3.3. Constantes
4. Input e output
4.1. A função printf()
4.2. Data identifiers
4.3. A função scanf()
4.4. O operador addressof
5. Operadores
5.1. Operadores e expressões
5.2. Operadores aritméticos
5.3. Operadores lógicos
5.4. Operadores de comparação
5.5. Operadores de incremento e decremento
6. Estruturas de decisão e repetição
6.1. O statement if
6.2. O statement switch
6.3. O statement while
6.4. O statement for
7. Funções
7.1. Criar e aceder a funções
7.2. Argumentos de funções
7.3. O valor retornado pelas funções
7.4. Recursividade
8. Arrays
8.1. Declaração e inicialização de arrays
8.2. Aceder aos elementos de arrays
8.3. Arrays multidimensionais
9. Strings
9.1. Conceito de string
9.2. Inicializar strings de caracteres
9.3. Funções básicas de strings
10. Pointers
10.1. Aceder a variáveis através de endereços
10.2. Variáveis do tipo pointer
10.3. Programação de pointers para pointers
11. Structures
11.1. Conceito de Structures
11.2. Criar Structures
11.3. Aceder aos membros das Structures
12. Ficheiros
12.1. Ficheiros de Texto
12.2. Ficheiros Binários
13. Elementos da linguagem C++
13.1. Tipos de dados
13.2. Input do teclado
13.3. Output para o ecrã
14. Classes e objetos
14.1. Conceitos base
14.2. Data members e function members
14.3. Comunicação entre objectos
14.4. Class Constructors
14.5. Criar múltiplos objectos de uma classe
14.6. Class Destructor
14.7. Herança de classes
15. Desenvolvimento de uma Aplicação em C/C++
DEMONSTRAÇÃO DE COERÊNCIA ENTRE CONTEÚDOS PROGRAMÁTICOS E RESULTADOS DA APRENDIZAGEM
Para muitos alunos, esta cadeira pode constituir o primeiro contacto com uma linguagem de programação. Por esse motivo, antes de iniciar o estudo da linguagem C, são apresentados conceitos básicos de lógica de programação, usando uma linguagem de pseudocódigo.
Posteriormente, e sem prejuízo do rigor e do formalismo, a linguagem C é apresentada através de exemplos simples de programas de input e output. A apresentação dos vários tipos de statements é acompanhada de exemplos de progressiva complexidade. A linguagem C++ é usada para apresentar os conceitos de classes e objetos.
METODOLOGIA DE ENSINO E AVALIAÇÃO
Todas as aulas são de natureza teórico-prática. Estão previstas 60 horas de contato. O tempo total de trabalho do aluno corresponde a 162 horas. A apresentação da estrutura das linguagens C e C++ é feita com base em exemplos apresentados pelo professor e em pequenos exercícios propostos aos alunos, como forma de facilitar a compreensão das estruturas e dos statements da linguagem. Esta evolução gradual permitirá que os alunos possam acompanhar o desenvolvimento da matéria e criar programas de complexidade crescente.
De acordo com o Regulamento de Funcionamento do ISTEC a avaliação é efetuada através de um exame escrito individual e obrigatório. Na classificação final, poderão ser considerados elementos de avaliação contínua, tais como testes, trabalhos individuais ou em grupo, assim como a participação nas aulas presenciais e em recursos de aprendizagem proporcionados por sistemas de e-learning.
DEMONSTRAÇÃO DE COERÊNCIA ENTRE METODOLOGIAS DE ENSINO E RESULTADOS DE APRENDIZAGEM
Ao longo do processo de aprendizagem da unidade curricular, os alunos participam e resolvem um vasto e diversificado número de exemplos e exercícios que lhes permitem adquirir familiaridade com as linguagens. A elaboração de uma aplicação final em C/C++, usando todos as estruturas da linguagem, designadamente as estruturas de decisão e repetição, as funções, os arrays, os pointers, as structures, os ficheiros e ainda, as classes e os objetos, permite adquirir os conhecimentos e as capacidades definidas como objetivos da unidade curricular.
BIBLIOGRAFIA
Fundamental:
Deitel, Paul e Deitel, Harvey (2016). C How to Program – With an introduction to C++
ROCHA, António; Introdução à Programação Utilizando C, Editora FCA
RODRIGUES, Pimenta; Programação em C++, Editora FCA
Complementar:
CARRIÇO, Rui; Introdução à Programação usando linguagem C, Edições Chambel
CARRIÇO, Rui; Linguagem C++, Edições Chambel
DAMAS, Luís; Linguagem C, Editora FCA
RITCHIE, Dennis; KERNIGHAN, Brian; The C Programming Language, Prentice Hall
MEYERS, Scot; Effective Modern C++, O’Reily
ECKEL, Bruce; Using C++, MacGraw Hill
HENNEFELD, Julien; BAKER, Laura; BURCHARD, Charles. Using C++ An Introduction 2nd Edition,
Brooks/Cole
GUERREIRO, Pedro; Programação de Classes em C++, Editora FCA
INTERNET:
Acesso a publicações da especialidade, gratuitamente, através da rede SPRINGER:
https://link.springer.com/