Unidade Curricular:Código:
Introdução à Algoritmia e Programação831IAPG
Ano:Nível:Curso:Créditos:
1LicenciaturaEngenharia Informática6 ects
Período Lectivo:Língua de Instrução:Nº Horas:
Segundo SemestrePortuguês/Inglês78
Objectivos de Aprendizagem:
Competências (Descritores Dublin):
1. Conhecimento e compreensão:
1.1. Noção de programa de computador: descrição, implementação e teste
2. Aplicação de conhecimento e compreensão:
2.1. Aplicar e conceber programas de computador em certas classes de problemas.
2.2. Utilizar a linguagem de programação C na implementação de algoritmos.
3. Avaliação/tomada de decisões:
3.1. Escolha dos algoritmos adequados para a resolução de problemas e/ou projetos de software.
4. Comunicação:
4.1. Descrever um algoritmo nas representações estudadas.
4.2. Trabalhar em grupo.
4.3. Argumentar oralmente e por escrito.
5. Autonomia e aprendizagem:
5.1. Conhecer e aprofundar outras linguagens de programação existentes.
5.2. Autonomia para ultrapassar dificuldades inerentes a novos problemas
Conteúdos Programáticos:
1. Algoritmos (ALG) e Computação
1.1 Definições
1.2 Representação de ALG
1.3 Prova e Teste de ALG
1.5 Metodologias de desenho software
2. Introdução à Programação
2.1 Conceitos de software
2.2 Linguagem máquina, assembly e de alto nível
2.3 Programação em linguagens de alto nível
3. Tipos e declarações de dados, expressões e funções intrínsecas
3.1 Tipos de dados: ordinais, reais, cadeia de caracteres, definição e conversão de tipos
3.2 Constantes
3.3 Operadores e expressões
3.4 Funções intrínsecas
4. Estruturas de controlo
4.1 Instruções simples e estruturadas
4.2 Instruções: condicionais, repetitivas, de salto
4.3 Estruturas embutidas
5. Funções
5.1 Conceito
5.2 Variáveis locais e globais
5.3 Funções
5.4 Recursão
6. Variáveis indexadas e cadeias de caracteres
6.1 Conceitos
6.2 Vetores e Matrizes
6.4 Cadeias de caracteres
7. Tipos Estruturados
7.1 Definições
7.2 Registos definidos pelo utilizador
8. Ficheiros
8.1 Noção, tipo e uso de ficheiros
8.2 Ficheiros de texto e de acesso direto
Demonstração da Coerência dos Conteúdos Programáticos com os Objectivos da Unidade Curricular:
Os conteúdos programáticos apresentados são coerentes com os objectivos de aprendizagem da unidade curricular uma vez que existe uma grande convergência entre os capítulos do programa da cadeira e os conhecimentos que é suposto o aluno adquirir em cada um desses capítulos.
Os conceitos fundamentais de algoritmia e computação são apresentados nos capítulos introdutórios, nos capítulos seguintes são apresentados os fundamentos de programação de computadores.
Os objectivos da aprendizagem são atingidos complementando os conceitos teóricos com exemplos e exercícios concretos executados em ambiente de laboratório recorrendo a software apropriado
Metodologias de Ensino (Avaliação Incluída):
Componente teórico-prática (TP) e prático-laboratorial (PL). Nas aulas TP os conceitos são apresentados intercalados com exemplos e exercícios. Nas aulas PL são colocados e resolvidos exercícios e problemas, eventualmente recorrendo a software apropriado.
Nota_Final_IAP = (2/3) x Nota_TP + (1/3) x Nota_PL
Obrigatório:
Nota_TP >= 10
Nota_PL >= 10
Nota_PL: obrigatoriamente por avaliação contínua e não é sujeita a exame. Consiste num projeto de programação realizado durante o semestre. Caso o aluno não submeta o projeto terá zero valores e apenas poderá realizar o projeto numa edição subsequente da UC.
Nota_PL = Nota do projeto prático
Nota_TP:
Em avaliação contínua, duas frequências F1 e F2, Nota_TP = (50%) x F1 + (50%) x F2
Em exame, Nota_TP = Nota_Exame_TP
Se apenas uma componente TP ou PL for positiva fica válida durante um prazo máximo de dois anos lectivos após o ano em que o aluno obteve aprovação nessa componente. Durante esse período a UC está não concluída (NC)
Demonstração da Coerência das Metodologias de Ensino com os Objectivos de Aprendizagem da Unidade Curricular:
A metodologia de ensino/aprendizagem aplicada nesta unidade curricular bem como o seu sistema de avaliação encontram-se perfeitamente alinhados com os objectivos a atingir pelos alunos no final do período letivo. Os conceitos teóricos são apresentados, discutidos, aplicados e avaliados no contexto das aulas teóricas o que garante aos alunos uma base sólida de conhecimentos fundamentais para entenderem de forma aprofundada os desafios que se colocam a esta área do conhecimento. Por outro lado, para que o estudo não fique restrito a modelos conceptuais, nas aulas práticas são apresentados casos de estudo concretos e implementadas soluções para problemas reais recorrendo a ferramentas de software apropriadas. Esta combinação garante uma formação aos alunos que lhes permite conhecer os fundamentos científicos essenciais a uma boa compreensão do tema bem como a capacidade de eles se adaptarem a mudanças tecnológicas constantes. O processo de avaliação constituído por testes teóricos e trabalhos práticos garante também um correto equilíbrio entre o esforço dedicado a ambas as componentes. O objectivo é formar profissionais conhecedores das técnicas e ferramentas do estado da arte mas também garantir a sua capacidade de evolução futura. Nesta unidade curricular os conceitos relacionados com a algoritmia e programação são apresentados e avaliados na componente teórica. Estes conceitos são depois aplicados na resolução das fichas e trabalhos práticos no contexto das aulas práticas.
Bibliografia:
[Sa] Marques de Sá, J. P. “Fundamentos de Programação Usando C”, Editora FCA, 2004, ISBN 972-722-475-X
[Damas] Damas, Luis “Linguagem C”, Editora FCA, 1999, ISBN 972-722-156-4
[Samp] Sampaio, Isabel; Sampaio, Alberto “Fundamental da Programação em C”, Editora FCA, 1998, ISBN 972-722-130-0
[Vasc] José Vasconcelos e João Carvalho, “Algoritmia e Estruturas de Dados – Programação nas linguagens C e Java”, Editora, Centro Atlântico, 2005, ISBN 989-615-012-5
[KR] Kernighan, Brian W. “The C Programming Language”, Prentice-Hall International, 1988
[CLR] Cormen, Leiserson, Rivest “Introduction to Algorithms “ MIT-Press, 1990, ISBN: 0-262-03141-8
Docente (* Responsável):
Ana Ribeiro Gomes (argomes@ufp.edu.pt)
José Manuel Torres (jtorres@ufp.edu.pt)