Fundamentos de Programação

Conhecimentos de Base Recomendados

N/A

Métodos de Ensino

Não disponível.

 

Resultados de Aprendizagem

No final da unidade curricular o aluno deverá ficar habilitado a:
1. Identificar e classificar os diferentes tipos de linguagens de programação. Comparar e analisar as suas principais características. Justificar a necessidade de compiladores e ilustrar a sua utilização.
2. Definir algoritmo. Indicar e analisar as abordagens utilizadas para descrever algoritmos. Construir soluções recorrendo a algoritmos, fluxogramas e pseudo-código.
3. Analisar as principais características da linguagem C. Explicar o percurso de normalização desta linguagem. Discutir o ciclo de desenvolvimento e a estrutura de um programa em C.
4. Classificar os diferentes tipos de dados na linguagem C. Discutir os vários tipos e formatos das variáveis. Ilustrar a criação, inicialização e modificação de variáveis. Demonstrar e justificar a utilização de casting entre variáveis.
5. Explicar o controlo de fluxo condicional e incondicional. Identificar os diferentes tipos de estruturas de controlo condicional de tomada de decisão. Justificar a representação de valores lógicos. Ilustrar a aplicação e precedência de operadores lógicos e relacionais. Criar programas que demonstrem a utilização de testes e condições.
6. Identificar as diferentes estruturas disponíveis para controlo condicional interativo. Justificar a utilização de operadores e atribuições para otimização do código. Identificar cenários e utilizações de ciclos infinitos. Criar programas que demonstrem a utilização de ciclos.
7. Definir funções. Classificar os tipos de funções. Identificar as principais funções pré-definidas. Explicar a sintaxe de uma função. Demonstrar a utilização de múltiplos ficheiros. Criar programas que exemplifiquem o funcionamento e utilidade das funções.
8. Explicar o conceito de vetor. Classificar os tipos de vetores. Analisar como é efetuada a sua criação, acesso e manipulação. Demonstrar como podem ser criadas constantes. Definir String. Identificar como é realizada a sua criação, acesso e manipulação. Criar programas que façam uso de vetores e strings.
9. Definir ficheiros. Comparar ficheiros com streams. Classificar os tipos de ficheiros e de streams. Analisar as diferentes operações associadas aos ficheiros de texto. Discutir os modos de abertura. Sumariar as soluções existentes para delimitar o fim de um ficheiro. Demonstrar a passagem de parâmetros através da linha de comando. Criar programas que leiam e escrevam em ficheiros de texto.
10. Analisar o funcionamento do pré-processador. Explicar o conceito de diretivas. Classificar os diferentes tipos de diretivas. Ilustrar como obter os resultados produzidos pelo pré-processador. Criar programas que demonstrem a utilização dos vários tipos de diretivas.

Programa

1. Linguagens de programação. Tipos de linguagens. Linguagens de baixo nível. Linguagem assembly. Linguagens de alto nível. Linguagens estruturadas. Linguagens orientadas a objetos. Tipos de dados, estruturas de controlo (sequencial, seleção, repetição). Compiladores (gcc) e assembladores.
2. Introdução à algoritmia: fluxogramas e pseudo-código. Definições. Declaração de variáveis e atribuição de valores. Operadores aritméticos, relacionais e lógicos. Comando de desvio condicional. Comandos de repetição.
3. Linguagem de programação em C. Características. Etapas da normalização (K&R C, ANSI C, C18). Ciclo de desenvolvimento: código fonte, pré-processador, compilação, linkagem, execução. Estrutura de um programa em C: #include, main(), blocos, comentários (/* */, //).
4. Tipos de dados. Variáveis: definição, tipo, nomenclatura, declaração, atribuição, aritmética. Variáveis Inteiras: tipos (short, long, signed, unsigned), formato. Funções printf() e scanf(). Variáveis Reais: Norma IEEE 754, tipos, formato. Caracteres: tipos, formato. Casting: implícito, explicito.
5. Testes e Condições. Valores Lógicos. Operadores Relacionais (<, <=, >, >=, ==, !=). Operadores Lógicos (!, &&, ||). Precedência de Operadores. Controlo de fluxo condicional. Instrução if…else: indentação, blocos de instruções, instruções encadeadas. Instrução switch. Controlo de fluxo incondicional: break.
6. Ciclos. Otimização: operadores de incremento/decremento (++, –), atribuições compostas (+=, -=). Controlo de fluxo condicional iterativo: while, for, do…while. Ciclos Infinitos. Controlo de fluxo incondicional: continue.
7. Funções. Tipos de funções: pré-definidas (stdio.h, string.h), definidas pelo utilizador. Sintaxe: tipo de retorno, nome, parâmetros, corpo, return. Variáveis locais. Posição da função: protótipo. Múltiplos Ficheiros: header files (.h). Passagem de parâmetros por valor e por referência.
8. Vetores. Definição. Classificação: unidimensionais, multidimensionais. Declaração, inicialização e acesso aos elementos. Passagem de vetores para uma função. Constantes: #define, const. Strings: declaração, inicialização, leitura e escrita (printf, puts, scanf, gets). Funções para manipulação de strings.
9. Ficheiros. Definição. Tipos de streams: stdin, stdout, stderr. Tipos de ficheiros: binários, texto (EOL: n, nr). Operações em ficheiros de texto: abertura, leitura, escrita, fecho. Modos de abertura: r, w, a, r+, w+, a+, b. Macro EOF e função end-of-file (feof()). Passagem de argumentos através da linha de comando (argc(), argv()).
10. Pré-processador. Diretivas. Expansão de Macros: #define, macros definidas por utilizadores (constant-like, function-like), macros pré-definidas, operadores (, #, ##). Inclusão de ficheiros: #include. Compilação condicional.

Estágio(s)

NAO

Bibliografia

Damas, L. (1999). Linguagem C (24th ed.). FCA.
Gustedt, J. (2019). Modern C. Manning Publications.
Kernighan, B. W., & Ritchie, D. M. (1988). The C Programming Language. Pearson.
King, K. N. (2008). C Programming: A Modern Approach (2nd ed.). W. W. Norton & Company.
Perry, G., & Miller, D. (2013). C Programming Absolute Beginner’s Guide (3rd ed.). Que Publishing.
Rocha, A. (2006). Introdução à programação usando C. FCA.