IAED/AED Tagus, 2009/20010 Apresentação da Cadeira.

Post on 18-Apr-2015

115 views 0 download

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