Programação II
Áreas Científicas |
Classificação |
Área Científica |
OFICIAL |
Ciências da Computação e da Informação |
Ocorrência: 2023/2024 - 2S 
Ciclos de Estudo/Cursos
Língua de trabalho
Português
Objetivos
Pretende-se complementar conhecimentos prévios de programação numa linguagem interpretada (Python) com uma formação específica para programação numa linguagem compilada e de baixo-nível (C). No final desta UC, os estudantes deverão ser capazes de:
-
Traduzir programas elementares em Python para a linguagem C;
- Usar ferramentas de desenvolvimento da linguagem (compilador, debugger);
- Usar funcionalidades básicas da biblioteca padrão de C para cadeias e entrada/saída de dados;
- Compreender o conceito de apontador e usá-los em programas que processem estruturas de dados elementares (vetores e listas ligadas).
Resultados de aprendizagem e competências
Pretende-se que os estudantes:
- Conheçam a semântica de constituintes fundamentais da linguagem C;
- sejam capazes de escrever, testar e executar programas para para resolução de problemas simples a partir de uma especifição informal;
- conhecer alguns algoritmos básicos (computação numérica, contagem, pesquisa, ordenação)adquiram competências básicas de programação estruturada.
Modo de trabalho
Presencial
Programa
Introdução à linguagem C. Características da linguagem: vantagens, desvantagens e cuidados na sua utilização.
Fundamentos de linguagem C. Estrutura sintática de programas. Diretivas, declarações, expressões. Compilação e execução.
Tipos básicos (inteiros, virgula flutuante, carateres). Controlo de fluxo. Ciclos. Definição de funções. Entrada e saida formatada.
Exemplos de tradução de programas Python que implementam algoritmos elementares para linguagem C.
Variáveis indexadas. Cadeias de carateres.
Tipos estruturados e uniões.
Organização de programas: ficheiros "header", bibliotecas.
Deteção e correção de erros. Utilização de um "debugger" e uso de asserções.
Introdução programação com alocação dinâmica de memória e apontadores.
Bibliografia Obrigatória
K. N. King;
C programming. ISBN: 0-393-96945-2
Bibliografia Complementar
Brian W. Kernighan;
The C programming language. ISBN: 0-13-110163-3
Jon Bentley;
Programming pearls. ISBN: 9780201657883
Métodos de ensino e atividades de aprendizagem
Aulas teóricas: exposição oral de conceitos suportada por apresentação de "slides"; resolução interativa de exemplos de programação ilustrativos e exercícios complementares.
Aulas laboratoriais: resolução de problemas em computador; utlização de ferramentas de desenvolvimento (editor, debugger, sistema de testes automático) como auxiliar para a deteção e correção de erros em exercícios selecionados.
Utilização de sistemas de avaliação automática (Mooshak e/ou Codex).
Software
gcc - gnu c compiler
gdb - gnu debugger
Tipo de avaliação
Avaliação distribuída sem exame final
Componentes de Avaliação
Designação |
Peso (%) |
Teste |
90,00 |
Trabalho prático ou de projeto |
10,00 |
Total: |
100,00 |
Componentes de Ocupação
Designação |
Tempo (Horas) |
Estudo autónomo |
53,00 |
Frequência das aulas |
28,00 |
Total: |
81,00 |
Obtenção de frequência
Frequência obrigatória às aulas práticas (conforme o regulamento da Universidade do Porto).
Fórmula de cálculo da classificação final
A classificação final é obtida tendo em conta as seguintes provas:
- A: classificação dos exercícios submetidos no sistema on-line de testes automáticos;
- T1: classificação de um primeiro teste realizado durante o semestre;
- T2: classificação de um segundo teste realizado durante a primeira época de exames
A classificação final (F) determinada por F = A*0.1 + T1*0.40 + T2*0.50
Os exames de época de recurso, melhoria de nota e de épocas especiais são cotados para 100% da classificação.
Melhoria de classificação
Os estudantes podem melhorar a nota do exame final de acordo com os regulamentos gerais.
Exame (com peso de 100% na nota).
Observações
Júri da UC: Sérgio Crisóstomo e Pedro Vasconcelos.