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
- 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.
- 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.
- 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 (/* */, //).
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.