Fundamentos de Programação

Conhecimentos de Base Recomendados

Sem conhecimentos base recomendados.

Métodos de Ensino

Nesta unidade curricular são utilizadas as seguintes metodologias de ensino:

1. Método expositivo: método explicativo onde fundamentos teóricos e conceitos são apresentados pelo docente e discutidos com a turma. Os conceitos e informações serão apresentados aos estudantes através, por exemplo, de apresentações em slides ou discussões orais. Será utilizado nas aulas para a estruturação e esquematização da informação.

2. Método demonstrativo: baseia-se na exemplificação pelo docente de uma operação técnica ou prática que se deseja aprendida. Centra-se na forma como se executa uma dada operação, destacando as técnicas, as ferramentas e os equipamentos mais adequados. Será por exemplo utilizado em aulas práticas e laboratoriais.

3. Método interrogativo: processo que se fundamenta em interações verbais, sob a condução do docente, adotando o formato de questões e respostas. Permite obter maior dinâmica na aula e consolidar a aprendizagem. Será utilizado por exemplo para recordar elementos de aulas anteriores, e em revisões do conteúdo lecionado.

4. Métodos ativos: serão utilizadas técnicas pedagógicas em que o estudante é o centro do processo de aprendizagem, sendo um participante ativo e envolvido na sua própria formação. O docente assume o papel de facilitador, estimulando o pensamento crítico, a colaboração, a criatividade e a autonomia dos estudantes. Serão aplicados nas aulas para alcançar um ambiente de aprendizagem dinâmico e mais duradouro.

Resultados de Aprendizagem

No final da unidade curricular o estudante ficará habilitado a:

1. Classificar os diferentes tipos de linguagens de programação. Analisar as suas principais características. Justificar a necessidade de compiladores.

2. Definir algoritmo. Analisar as abordagens utilizadas para descrever algoritmos. Construir soluções recorrendo fluxogramas e pseudo-código.

3. Analisar as principais características de uma linguagem de programação. Explicar o percurso de normalização. Discutir o ciclo de desenvolvimento e a estrutura de um programa.

4. Discutir os tipos e formatos de variáveis. Ilustrar a criação, inicialização e modificação de variáveis. Demonstrar 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. 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 estruturas para controlo condicional interativo. Justificar a utilização de operadores 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 subprogramas. Classificar os tipos de subprogramas (procedimentos e funções). Explicar a sintaxe de um subprograma. Demonstrar a utilização de múltiplos ficheiros. Criar programas que exemplifiquem o funcionamento e utilidade dos subprogramas.

8. Explicar o conceito de tabela. Analisar como é efetuada a sua criação, acesso e manipulação. Demonstrar como podem ser criadas constantes. Definir String. Discutir como é realizada a sua criação, acesso e manipulação. Criar programas que façam uso de tabelas e strings.

9. Definir ficheiros. Classificar os tipos de ficheiros e de streams. Analisar as diferentes operações associadas aos ficheiros de texto. Demonstrar a passagem de parâmetros através da linha de comando. Criar programas que leiam e escrevam em ficheiros de texto.

Programa

1. Linguagens de programação. Tipos de linguagens. Linguagens de baixo nível. 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. 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 de leitura e escrita formatada (printf() e scanf()). Variáveis Reais: Norma IEEE 754, tipos, formato. Caracteres: tipos, formato. Casting: implícito, explícito.

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. Subprogramas. Tipos de subprogramas: funções pré-definidas (de bibliotecas 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. Tabelas. Definição. Classificação: unidimensionais, multidimensionais. Declaração, inicialização e acesso aos elementos. Passagem de tabelas para um subprograma. Constantes: #define, const. Strings: declaração, inicialização, leitura e escrita. 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, \n\r). 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()).

Docente(s) responsável(eis)

Célia Teresa Ligeiro Mendes Pereira

Métodos de Avaliação

Os alunos podem obter aprovação na unidade curricular através da Avaliação Periódica ou de Avaliação Por exame.

A Avaliação Periódica consiste na realização de:

  • dois testes: 75% da nota final;
  • um trabalho prático individual : 25% da nota final.

Todos os elementos de avaliação têm 6 (em 20) como nota mínima.

 

A Avaliação Por Exame consiste na realização de um exame em qualquer das épocas de avaliação previstas.


    Estágio(s)

    NAO

    Bibliografia

    Damas, L. (2025). Linguagem C (25th ed.). FCA.

    Gustedt, J. (2019). Modern C. Manning Publications.

    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.