English version
Ficha da Disciplina
OBJECTIVOS E COMPETÊNCIAS
Introduzir os conceitos fundamentais de programação imperativa
enfatizando a noção de algoritmo e de modularidade, tendo por base a
linguagem de programação C. Será dada ênfase à resolução prática de
problemas, algoritmos básicos de contagem, pesquisa e ordenação, e à
qualidade de escrita de código.
Ao concluirem esta unidade curricular os estudantes deverão saber:
- usar a sintaxe e semântica de constituintes fundamentais da linguagem C.
- escrever, testar e executar programas para resolução de problemas simples a partir de uma especifição informal.
- implementar alguns algoritmos elementares em C.
- usar o conceito de apontador e usá-lo no processamento de variáveis indexadas e cadeias de carateres.
- utilizar a alocação dinâmica de memória.
- utilizar funções da biblioteca padrão da linguagem C para
processamento de cadeias e leitura/escrita de ficheiros.
- aplicar técnicas de programação estruturada.
- utilizar estruturas elementares de dados (listas ligadas, arvores).
PROGRAMA
- Introdução à linguagem C. Breve contextualização histórica. Características da linguagem. Vantagens e desvantagens da linguagem. Perigos 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.
- Algoritmos numéricos e semi-numéricos elementares.
- Variáveis indexadas. Algortimos fundamentas: contagem, pesquisa e ordenação. Cadeias de carateres.
- Organização de programas: ficheiros "header" e bibliotecas padrão.
- Deteção e correção de erros. Utilização de um "debugger" e uso de
asserções.
- Introdução ao modelo de memória da linguagem C. Programação com
apontadores. Utilização de apontadores para processar cadeias e
variáveis indexadas.
- Recursividade. Resolução de problemas simples usando algoritmos
iterativos e recursivos.
- Definição de novos tipos de dados (estruturas, unions).>
- Leitura e escrita de ficheiros.
- Definição e uso de estruturas de dados elementares (listas ligadas, arvores).
MÉTODOS DE ENSINO
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 Práticas
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).
As aulas envolverão:
- O uso da linguagem de programação C.
- A resolução de exercícios propostos para treino de programação.
- A resolução de exercícios propostos para efeitos de avaliação.
BIBLIOGRAFIA:
Principal
Outros livros recomendados
- Cormen, Leiserson, Rivest and Stein, Introduction to
Algorithms, 4th edition, The MIT Press, 2022.
- Robert Sedgewick, Kevin Wayne, Algorithms, 4th edition,
Addison-Wesley, 2011.
MÉTODO DE AVALIAÇÃO:
A avaliação tem em conta as seguintes provas:
- (E) Exame escrito (época normal e recurso): 70% da nota-final.
Avaliação teórico-prática sem recurso a consulta ou computador
classificada de 0 a 20.
- (P) Prática de resolução de problemas (2 avaliações práticas):
25% da nota final.
Cada avaliação prática valerá 2.5 valores. Os problemas serão de dificuldade similar aos problemas de treino
disponibilizados nas aulas práticas.
- (R) Resolução de exercícios durante o semestre (exercícios das
aulas #3 a #12): 5% da nota final, i.e. máximo de 1 valor.
Classificação final (escala de 0 a 20): (CF = 0.7*E+P+R).
Ficam aprovados os estudantes que satisfaçam as seguintes condições:
- E ≥ 7 valores (em 20),
- CF ≥ 9.5 valores.
Na época de recurso não é possível repetir a
componente prática de avaliação, ou seja as componentes P e R.
ORGANIZAÇÂO DO PROCESSO DE AVALIAÇÂO:
- As avaliações práticas terão lugar fora das
aulas práticas, com turnos de 90
minutos.
- Os problemas a resolver serão semelhantes aos problemas das aulas práticas;
- Os estudantes terão de comparecer no turno que
lhes for indicado e a troca de turno apenas será possível se
solicitada com pelo menos 48 horas de antecedência.
- A não comparência numa avaliação corresponde a não a ter
realizado e será classificado com 0 valores.
- As soluções submetidas ao Mooshak serão avaliadas parcelarmente,
sendo o resultado final a soma das pontuações parcelares nos vários
casos de teste.
OBTENÇÃO DE FREQUÊNCIA
- Perdem frequência os estudantes que não tenham uma assiduidade às
aulas superior a 50% das aulas dadas.
AVALIAÇÃO EM SITUAÇÕES ESPECIAIS
- Salvo em casos pontuais de força maior (ou estudantes com estatuto
especial), não haverá concessão de dispensa de frequência da componente prática. A presença nas aulas é fortemente aconselhada.
- Os estudantes que tendo tido aproveitamento na disciplina em anos
lectivos anteriores e pretendam efectuar exame para melhoria de nota
no presente ano lectivo, podem fazer apenas a componente de exame que,
nestes casos, será cotado para 100%.