Publicação em Diário da República: Aviso de Registo nº R/Cr 55/2017 de 13-07-2017
5 ECTS; 1º Ano, 1º Semestre, 60,0 TP , Cód. 63903.
Docente(s)
- Jorge Miguel Oliveira Lourenco Ferreira (1)
(1) Docente Responsável
(2) Docente que lecciona
Pré-requisitos
Conhecimentos de Matemática.
Saber trabalhar com ambiente de computador na edição de texto.
Domínio de análise e resolução de problemas.
Objetivos
Os alunos terão que aprender a focar-se num determinado problema (ou parte) proposto para programar e, com recurso a algoritmos já estudados ou a implementar, chegar a uma conclusão lógica e racional, de forma que a solução encontrada tenha um mínimo de custo de tempo e ciclos de execução.
O facto de o aluno ter noção de que os algoritmos, já existentes, podem ajudá-lo na solução de um determinado problema, em parte ou num todo, poderá criar nele uma metodologia de alcance rápido ao desenvolvimento.
O objectivo centra-se essencialmente na abstracção e enfoque, sabendo que um problema complexo pode ser dividido em pequenas soluções, das quais, depois de agregadas numa sequência lógica, levarão à solução da questão inicial. O aluno terá que, no final, conseguir partir de um objectivo global e dele desenvolver as etapas, com recurso a ferramentas/algoritmos já implementados/conhecidos ou com recurso aqueles que possa haver necessidade de criar, para ter o resultado criado em software funcional.
Programa
- Arquitectura computacional básica (breve introdução)
1. - Ferramentas de desenvolvimento;
- Algoritmos e linguagem alto nível sequêncial e estruturada (em Português);
1. - Constituintes dos Algoritmos;
- Paradigmas da programação;
1. programação procedimental;
2. programação modular;
3. Abstracção de tipo de dados;
- Ambiente Integrado de Desenvolvimento (IDE);
1. Editor;
2. Compilador;
3. Linker;
4. Debugger;
- Liguagem C++
1. Tipos, Operadores e Expressões;
1. Tipo de dados e representação;
2. Representação de caracteres;
3. Operadores, precedência e ordem de avaliação;
4. Expressões aritméticas;
5. Incremento (++) e decremento ()
2. Instruções de controlo de execução;
1. instrução if-else
2. instrução switch
3. instrução while
4. instrução for
5. instrução do-while
6. instruções break, continue e goto
3. Entrada e Saída de dados;
1. Biblioteca de streams do C++
1. Entrada e saída formatada;
1. Operador insersor <<
2. Manipuladores
3. Operador extractor >>
4. Métodos scanf / printf da livraria stdio.h
2. Entrada e saída não formatada;
1. Método put()
2. Método get()
3. Método putback()
4. Método getline()
3. Acesso a ficheiros
1. Teste de erro na abertura de um fstream
2. Especificação do modo de acesso
3. Método write()
4. Método read()
5. Acesso aleatório a ficheiros
4. Conversão de e para texto, nas extracções e inserções
1. conversão de valores inteiros para texto
2. conversão de texto para valores inteiros
3. conversão entre arrays de char e palavras
5. Acções I/O directas sobre o terminal
1. Funções getch(), getche(), putch(), kbhit()
6. Manipulação de Strings
1. strlen(), strcpy(), strcmp(), strcat(), strstr(), strchr()
4. Declarações e Definições
1. Alcance (scope) de um nome;
2. Tempo de existência de um objecto;
5. Enumerados e Structs
6. Arrays
1. Inicialização de arrays
2. Apontadores e arrays
3. Indexação e aritmética de apontadores
4. Array de caracteres e string
5. Arrays multi-dimensionais
7. Apontadores
1. Apontadores para void
2. Referências
3. Diferença entre referência e apontador
8. Definição e Declaração de funções
1. Argumentos de funções
2. Retorno de valores
3. Sobrecarga de um nome de função (overload)
4. Referência como argumento de funções
5. Referência como retorno de funções
9. Recursividade
10. Algoritmos Elementares
1. Listas inserções, remoções e buscas.
2. Algoritmos de ordenação quicksort, shellsort, bubblesort e heapsort.
3. Manipulação de strings algoritmos Knuth-Morris-Pratt e Boyer-Moore.
4. Manipulação de matrizes mono, bi e multi-dimensionais.
Metodologia de avaliação
a) Avaliação contínua;
b) Realização de trabalho prático final (Jogo do Tetris em ambiente consoloa) em grupo de 2 alunos.
Cada componente terá que ter nota mínima de 10 valores;
A nota final terá um peso de 40% de a) e 60% de b)
Bibliografia
Método de Ensino
Aulas Teorica-Prática onde é dada a matéria a leccionar e são aplicados pequenos problemas a resolver, de acordo com o curso da mesma.
Software utilizado nas aulas
Poderão haver duas vertentes, do ambiente de desenvolvimento, dado que o objectivo é o desenvolvimento de aplicações em consola:
Linux: Code::blocks IDE, gcc
Windows: VisualStudio 2008.