IAED/AED Tagus, 2009/20010 Apresentação da Cadeira.
Transcript of IAED/AED Tagus, 2009/20010 Apresentação da Cadeira.
IAED/AED Tagus, 2009/20010
Apresentação da Cadeira
2 IAED/AED Tagus, 2009/20010
Docentes
• Aulas Teóricas– Vasco Manquinho (responsável)
• Aulas de Laboratório– Ana Matos– César Pimentel– Joel Sacramento– Joana Campos– Outro docente a definir...
• Aulas de Dúvidas– Todos os docentes têm um horário, que está afixado na página da
cadeira– A aula termina após 15 minutos sem comparência de alunos
3 IAED/AED Tagus, 2009/20010
Carga Horária
• Aulas Teóricas: 2 aulas semanais de 1h30 cada– 1ª aula da semana
• 3ª feira, 8h00 – 9h30, A1
• 3ª feira, 12h00 – 13h30, A2
– 2ª aula da semana• 5ª feira, 8h30 – 10h00, A2
• 5ª feira, 11h30 – 13h00, A2
4 IAED/AED Tagus, 2009/20010
Carga Horária
• Aulas de Laboratório: 1 aula semanal de 1h30– 18 turnos de laboratório, 8 grupos por turno e 3 elementos por
grupo (será o mesmo grupo do projecto)– Inscrições a partir das 14h00 de amanhã no Fénix, no
Agrupamento “Laboratórios”– Ver FAQ na página da cadeira sobre a constituição de grupos
– Guia de laboratório disponibilizado na semana anterior para preparação da aula
5 IAED/AED Tagus, 2009/20010
Programa
• Introdução à linguagem de programação C• Introdução ao estudo da eficiência de algoritmos• Algoritmos de ordenação: inserção directa, selecção
directa, bubblesort, quicksort, shellsort, heapsort e radixsort
• Estruturas de dados: pilhas, filas de espera, filas de prioridade, amontoados, árvores e tabelas de dispersão
• Grafos: representação, pesquisa em largura e profundidade, àrvores abrangentes de menor custo, caminhos mais curtos de fonte única
6 IAED/AED Tagus, 2009/20010
Avaliação
• Componente Teórica (T): média dos 2 testes, com repescagem de um deles (só conta se melhorar); nota mínima de 8.0 / 20 na média dos testes– 1º Teste: 27 de Abril– 2º Teste: 14 de Junho– Repescagem: 09 de Julho
• Projecto (P): média de 3 entregas; sem nota mínima; nota de cada aluno ponderada pela discussão final– 1ª Entrega: 12 de Abril– 2ª Entrega: 03 de Maio– 3ª Entrega: 31 de Maio– Enunciados disponíveis 15 dias antes da data de entrega
7 IAED/AED Tagus, 2009/20010
Avaliação
• Avaliação Contínua (C): média de 3 exercícios realizados nas aulas de laboratório; sem nota mínima
• Nota Final (NF)– 50% Componente Teórica– 40% Projecto– 10% Avaliação Continua
• NF = 0.5 * T + 0.4 * P + 0.1 * C
NF (trabalhador estudante) = 0.55 * T + 0.45 * P
8 IAED/AED Tagus, 2009/20010
Avaliação
• Não serão tolerados quaisquer tipos de fraude em qualquer componente da avaliação– Exemplos:
• Obtenção do enunciado antes da prova
• Cópia de respostas em teste
• Cópias totais ou parciais de funções/projecto
• Fornecer código do projecto a outro grupo
• ...
• Comunicação da tentativa de fraude aos orgãos do IST• Penalizações serão as maiores possíveis de acordo
com o regulamento do IST
9 IAED/AED Tagus, 2009/20010
Bibliografia Recomendada
• Programação em C– B. Kernighan e D. Ritchie, The C Programming Language, 1988,
Prentice Hall
• Estruturas de Dados e Algoritmos de Ordenação– R. Sedgewick, Algorithms in C: Parts 1-4, 1998, Addison-Wesley
Publishing Company
• Grafos– T. Cormen, C. Leiserson, R. Rivest, C. Stein, Introduction to
Algorithms, 2001, McGraw Hill e MIT Press– Livro também recomendado em Análise e Síntese de Algoritmos
10 IAED/AED Tagus, 2009/20010
Bibliografia Adicional
• Programação em C– Luis Damas, Linguagem C, FCA – Editora Informática
11 IAED/AED Tagus, 2009/20010
Material de Apoio
• Teóricas: slides das aulas teóricas, afixados depois da aula ter decorrido
• Laboratórios: enunciados dos exercícios de laboratório para cada semana (normalmente afixados no final da semana anterior para preparação da aula)
• Avaliação: enunciados e resoluções de testes de anos anteriores
• Projecto: enunciados dos projectos, ficheiros de exemplo, etc.
• Secção “Material de Apoio” no site da cadeira
12 IAED/AED Tagus, 2009/20010
Super computador IBM BlueGene/Po computador mais rápido do mundo
(Março de 2009) Argonne Leadership Computing Facility, USA
IAED/AED Tagus, 2009/20010
Introdução à Linguagem C
K&R: Capitulo 1
14 IAED/AED Tagus, 2009/20010
Introdução
• Desenvolvida em 1972 por Dennis Ritchie, nos Bell Labs, para utilização no sistema operativo UNIX
• O standard ANSI C (ISO/IEC 9899:1990) foi adoptado pela ISO em 1990
• Linguagem de alto nível, mas que permite acesso de baixo nível a memória e dispositivos
• A maioria dos sistemas operativos actuais (Linux, Windows, MacOS, etc) continua a ser programado em C
• Influenciou o desenvolvimento de diversas linguagem como: Java, C++, C#, Perl, PHP, JavaScript, etc
15 IAED/AED Tagus, 2009/20010
Introdução
• Introdução rápida à linguagem C, utilizando exemplos:– Programa que escreve hello, world– Conversão de temperaturas– Cópia de ficheiros– Contagem de caracteres– Contagem de linhas– Contagem de palavras– Tabelas– Funções– Passagem por valor– Tabelas de caracteres– Variáveis externas
16 IAED/AED Tagus, 2009/20010
hello, world
#include <stdio.h>
main()
{
printf("hello, world\n");
}
17 IAED/AED Tagus, 2009/20010
hello, world
#include <stdio.h>
main()
{
printf("hello, world\n");
}
• Biblioteca de funções de entrada/saída
18 IAED/AED Tagus, 2009/20010
hello, world
#include <stdio.h>
main()
{
printf("hello, world\n");
}
• Função main• Nome de uma função pode ser qualquer• Todos os programas têm uma função main• Função main é a primeira a ser executada• Funções podem ser definidas em múltiplos ficheiros
19 IAED/AED Tagus, 2009/20010
hello, world
#include <stdio.h>
main()
{
printf("hello, world\n");
}
• Parâmetros formais da função• Comunicação do exterior com a função• Neste caso não existem parâmetros
20 IAED/AED Tagus, 2009/20010
hello, world
#include <stdio.h>
main()
{
printf("hello, world\n");
}
• Instruções associadas à função entre chavetas
21 IAED/AED Tagus, 2009/20010
hello, world
#include <stdio.h>
main()
{
printf("hello, world\n");
}
• Apenas uma instrução• Chamada à função printf• Parâmetros actuais da função printf colocados entre
parênteses• Instruções separadas por ;
22 IAED/AED Tagus, 2009/20010
hello, world
#include <stdio.h>
main()
{
printf("hello, world\n");
}
• Cadeia de caracteres entre aspas• Outros caracteres
– \n Sequência de caracteres que representa newline– \t tab– \b backspace– \" aspas– \\ barra
23 IAED/AED Tagus, 2009/20010
hello, world
#include <stdio.h>
main()
{
printf("hello, world\n");
}
• E agora vamos vêr se funciona ...
$ cc –o hello hello.c
$ ./hello
hello, world
24 IAED/AED Tagus, 2009/20010
Dennis Ritchie e Ken Thompsona programarem um computador
Digital PDP-11, utilizando dois terminais Teletype 33