240 likes | 359 Views
Apresentação da Cadeira. 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
E N D
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
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
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
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
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
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
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
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
Bibliografia Adicional • Programação em C • Luis Damas, Linguagem C, FCA – Editora Informática
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
Super computador IBM BlueGene/P o computador mais rápido do mundo (Março de 2009) Argonne Leadership Computing Facility, USA Alguma Dúvida ?
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
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
hello, world #include <stdio.h> main() { printf("hello, world\n"); }
hello, world #include <stdio.h> main() { printf("hello, world\n"); } • Biblioteca de funções de entrada/saída
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
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
hello, world #include <stdio.h> main() { printf("hello, world\n"); } • Instruções associadas à função entre chavetas
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 ;
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 • \ttab • \bbackspace • \" aspas • \\ barra
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
Dennis Ritchie e Ken Thompson a programarem um computador Digital PDP-11, utilizando dois terminais Teletype 33 Alguma Dúvida ?