Código: | EIC0012 | Sigla: | PROG |
Áreas Científicas | |
---|---|
Classificação | Área Científica |
OFICIAL | Programação |
Ativa? | Sim |
Página Web: | https://moodle.up.pt/course/view.php?id=1437 |
Unidade Responsável: | Departamento de Engenharia Informática |
Curso/CE Responsável: | Mestrado Integrado em Engenharia Informática e Computação |
Sigla | Nº de Estudantes | Plano de Estudos | Anos Curriculares | Créditos UCN | Créditos ECTS | Horas de Contacto | Horas Totais |
---|---|---|---|---|---|---|---|
MIEIC | 212 | Plano de estudos a partir de 2009/10 | 1 | - | 7,5 | 70 | 202,5 |
Os objetivos principais desta unidade curricular são dotar os estudantes com:
- conhecimentos fundamentais sobre a programação procedimental e a programação baseada em objectos;
- a capacidade de aplicar esses paradigmas de programação para desenvolver programas, usando a linguagem C++ como ferramenta.
Os estudantes que concluirem com sucesso esta unidade curricular, deverão ser capazes de:
- Resolver problemas de programação de baixa/média complexidade utilizando a linguagem C++ e as abstrações definidas na biblioteca standard (STL) de C++;
- Desenvolver soluções para problemas de programação que passem pela definição e implementação em C++ de abstrações definidas pelo próprio;
- Escrever programas bem estruturados, legíveis e bem comentados.
- Compilar programas, executá-los e corrigir os seus erros.
INTRODUÇÃO À LINGUAGEM C/C++ Tipos de dados simples e E/S básica. Operadores. Expressões aritméticas e booleanas. Estruturas de controlo: estruturas de selecção e de repetição. Tipos de dados estruturados: "arrays","strings" e "structs" de C; "vectors" e "strings" de C++. Apontadores e alocação dinâmica de memória. Funções: definição e declaração de funções; variáveis locais e variáveis globais; mecanismos de passagem de parâmetros e retorno de valores (passagem de parâmetros por valor e por referência); "overloading" de funções; “templates”. Funções recursivas. "Streams": entrada e saída usando ficheiros de texto; "stringstreams". INTRODUÇÃO ÀS CLASSES E ABSTRAÇÃO DE DADOS Conceitos fundamentais. Classes e "structs". Membros-dado e membros-função de uma classe; visibilidade dos membros; conceito de encapsulamento. Construtores; construtores com parâmetros. “Templates”. Introdução à conceção de programas OO. Relações entre classes; implementação de associações. Introdução à notação UML. STANDARD TEMPLATE LIBRARY Contentores: "vector", "list", "queue", "stack", "map", "multimap", "set", "multiset". Iteradores e algoritmos. CLASSES – CONCEITOS ADICIONAIS Uso de qualificativos especiais: "const", "static", "friend". Construtores de cópia. Destrutores. "Overloading" de operadores. HERANÇA E POLIMORFISMO Conceitos de herança e de polimorfismo. Classes derivadas. Acesso aos membros da classe base. Formas de polimorfismo: "overloading" de funções; "overriding" (funções virtuais); "templates". Classes abstratas. TRATAMENTO DE EXCEÇÕES (introdução) EXEMPLOS DE APLICAÇÃO (ao longo da unidade curricular) Conceção de programas usando programação OO. Implementação de abstrações
• Aulas Teóricas: A exposição dos temas programáticos acompanhada pela discussão e resolução de casos. • Aulas Teórico-Práticas: Na primeira parte do semestre serão dedicadas à realização de exercícios de programação. Seguir-se-á o desenvolvimento de dois projectos em C++ e avaliação do trabalho realizado pelos estudantes, organizados em pequenos grupos (normalmente, de 2 estudantes).
Designação | Peso (%) |
---|---|
Exame | 50,00 |
Teste | 20,00 |
Trabalho laboratorial | 30,00 |
Total: | 100,00 |
Designação | Tempo (Horas) |
---|---|
Estudo autónomo | 59,00 |
Frequência das aulas | 70,00 |
Trabalho laboratorial | 60,00 |
Total: | 189,00 |
Condições para obtenção de frequência: não exceder o limite de faltas estabelecido nas normas e obter uma classificação mínima de 40% na avaliação distribuída e uma classificação mínima de 30% no mini-teste. Os estudantes que obtiveram frequência no ano letivo anterior podem manter a nota de frequência que obtiveram nesse ano; devem, neste caso, informar o docente responsável pela U.C., durante a primeira semana de aulas, e não devem inscrever-se nas turmas teórico-práticas. Nota: apesar de o 1.o projeto não ser classificado, é condição necessária para a obtenção de frequência o desenvolvimento, entrega e apresentação (quando solicitada) desse projeto.
Avaliação distribuída (AvD) com exame final (AvEx). • AvD - A classificação desta componente será obtida com base nos resultados de um "mini-teste", a realizar em meados do semestre, e de um projeto. Durante o semestre, serão apresentados 2 projetos que os grupos desenvolverão tanto nas aulas teórico-práticas, como fora das aulas; apenas o 2º projeto será sujeito a classificação. No início das aulas teórico-práticas, o docente organizará as turmas em grupos de, normalmente, 2 estudantes. O docente avaliará o trabalho dos grupos pelo respetivo desempenho nas aulas e também pelo material que submeterão na página da disciplina. Para o segundo projeto, cada grupo apresentará um pequeno relatório e o projeto será defendido oralmente por elementos do grupo, escolhidos pelo docente. • AvD e AvEx são especificadas numa escala de 0 a 20 valores. • Classificação AvD: - Mini-teste - 40% - Projecto 2 - 60% • Classificação final = AvD * 50% + AvEx * 50% • Prova oral: sempre que a equipa docente achar necessário, o estudante poderá ser submetido a uma prova oral. Nesta situação, a classificação final será dada pela média aritmética da classificação calculada pela fórmula anterior e da classificação da prova oral. Observação: é condição de aprovação a obtenção de uma classificação mínima de 40% na componente AvEx.
Ver AvD, em Componentes de avaliação.
Os alunos com estatuto especial, embora possam estar dispensados da frequência das aulas práticas, estão sujeitos às mesmas condições de avaliação dos alunos regulares. Devem realizar e submeter os trabalhos práticos nos períodos e datas estabelecidos para os restantes alunos.
A classificação distribuída desta ocorrência pode ser melhorada da seguinte forma: a classificação do mini-teste pode ser melhorada no exame final, sendo a classificação atribuída ao mini-teste igual à classificação obtida no exame; a classificação do trabalho prático pode ser melhorada na ocorrência seguinte desta unidade curricular. A classificação do exame final pode ser melhorada nas épocas legalmente previstas.
Os estudantes que pretendam melhorar a classificação obtida no ano letivo anterior, poderão optar por realizar apenas o trabalho prático, apenas o exame ou ambos. A melhoria do mini-teste será feita no exame, sendo a classificação atribuída ao mini-teste igual à classificação obtida no exame. Os estudantes que pretendam melhorar o trabalho prático devem contactar o docente responsável para a marcação de sessões de acompanhamento do trabalho. A entrega do trabalho prático ocorrerá em simultâneo com a dos restantes estudantes.
Recomenda-se a frequência com aproveitamento de Fundamentos de Programação ou equivalente.