Fundamentos de Programação

Conhecimentos de Base Recomendados

Não há.

Métodos de Ensino

Os conteúdos da disciplina são apresentados através da exposição de exemplos.

São propostos exercícios aos alunos para que pratiquem a resolução de problemas e compreendam melhor os conteúdos.

Resultados de Aprendizagem

  • Identificar e classificar os diferentes tipos de linguagens de programação. Distinguir paradigmas de programação. Comparar e analisar as suas principais características. Justificar a necessidade de compiladores e ilustrar a sua utilização.
  • Compreender o conceito de algoritmo. Definir algoritmo. Indicar e analisar as abordagens utilizadas para descrever algoritmos. Construir soluções recorrendo a algoritmos. Aplicar instruções e sequências lógicas na resolução de problemas. Utilizar as regras e as diferentes fases na elaboração de um algoritmo. Apresentar algoritmos em pseudocódigo. Compreender a estrutura de fluxogramas. Representar algoritmos através de fluxogramas. Identificar tipos abstratos de dados. Enumerar e identificar os operadores aritméticos, relacionais e lógicos. Utilizar estruturas de controlo, seleção e repetição de forma eficiente.
  • 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. 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.
  • 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.
  • 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.
  • 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.
  • Explicar o conceito de tabela. Classificar os tipos de tabela. 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 usem tabelas e strings.
  • 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.

Programa

  1. Linguagens de programação. Tipos de linguagens. Linguagens de baixo nível e linguagens de alto nível. Linguagens estruturadas e 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. Comandos condicionais. Comandos de repetição.
  3. Linguagem de programação em C. Características. Normalização. Ciclo de desenvolvimento de um programa: código fonte, pré-processador, compilação, linkagem, execução. Estrutura de um programa em C: inclusão de bibliotecas, 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 escrita e leitura formatada. Variáveis de números reais: Norma IEEE 754, tipos, formato. Caracteres: tipos, formato. Casting implícito e 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: identaçã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 (funções 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. Passagem de parâmetros por valor e por referência.
  8. Tabelas. Definição. Tabelas unidimensionais e multidimensionais. Declaração, inicialização e acesso aos elementos de uma tabela. Passagem de tabelas para uma função. 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. Ficheiros binários e ficheiros de texto. Operações em ficheiros: abertura, leitura, escrita, fecho. Modos de abertura: r, w, a, r+, w+, a+, b. Fim de um ficheiro: EOF, função feof().

Docente(s) responsável(eis)

Estágio(s)

NAO

Bibliografia

Damas, L. (2019). Linguagem C (24ª ed.). FCA.

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

Rocha, A. (2006). Introdução à programação usando C (3ª edição). FCA.

Szuhay, J. (2020). Learn C programming: A beginner’s guide to learning C programming the easy and disciplined way. Packt publishing.