Docentes
Paulo Cortez - (TP) www.dsi.uminho.pt/~pcortez pcortez@dsi.uminho.pt Joo Nuno Oliveira (JNO), jno@dsi.uminho.pt Joo Soares (JS), d5430@dsi.uminho.pt Stio de apoio via Web: https://elearning.uminho.pt, course: [10-11] Programao [MIEEICOM] Cdigo de activao: c++
Programao
Mtodo de Avaliao
Presena obrigatria a pelo menos 2/3 das aulas (TP e PL). Realizao de um Trabalho de Projecto (P), em Grupo de
4 elementos com componente experimental. No existe exame (poca recurso, especial,...)... A passagem disciplina exige uma Nota Final>=9.5 valores
A nota final disciplina dada por 100% x Projecto O projecto avaliado em 2 momentos principais e a nota
final no igual para todos elementos do grupo.
Metodologia de Ensino
Aulas Terico-Prticas (T) Mtodo Expositivo; Activo Mtodo Activo; Aulas Prticas Laboratoriais (PL) Resoluo de exerccios em grupos de 2; Execuo e Acompanhamento do Projecto em
grupo de 4; Material necessrio para as Aulas T e PL: Papel e caneta/lpis!!! O uso de porttil (cuidado com sons estranhos, imagens estranhas, chats, etc!!!);
Mtodo
Requisitos Prvios
Saber programar em C Aprovao a Informtica Geral!
Histrico 2009/2010
Alunos inscritos: 175 Alunos que tentaram fazer projecto: 141 (80%) Alunos que passaram: 90 (53%/64%) Nota Mxima: 19 valores.
Regras de Funcionamento As Aulas T iniciam-se s 9.30 de Sexta (B1.15); Faam um esforo por estar a horas na sala; Quem chegar mais tarde, no deve perturbar a aula, deve entrar em SILNCIO! Telemveis SEM SOM! Portteis SEM SOM! Espera-se um regular comportamento (no usar chats,
no escrever sms, no ter contedos no apropriados no porttil, no perturbar a sala de aula, )
Resoluo de Conflitos
Problema pessoal: falar directamente com o docente em
causa fora de aulas; Problema que interessa a todos: Falar directamente com o docente no final ou incio de uma aula; Em alternativa, contactar o delegado de turma, que depois contacta o docente em causa;
Atendimento...
Em primeiro lugar, as dvidas devem ser esclarecidas durante as aulas; Esclarecimentos adicionais via email; Para beneficiar do horrio de atendimento, contactar o docente via email, telefone ou final das aulas;
Horrio de Atendimento:
Sexta: 11h-13h (2 horas)
Turnos PL com mximo de 22 alunos (Grupos do mesmo turno!). P2: Seg, 9.10-10.50h, JNO, LAP.4-DSI P1: Seg, 11.10-12.50h, JNO, LAP.4-DSI P5: Qui, 9.10-10.50h, JNO, LAP.2-DSI P3: Qui, 11.10-12.50h, JS, LAP.2-DSI P4: Qui, 14.10-15.50h, JS, LAP.2-DSI > Marcao via sub-delegado de ano; > Aulas PL iniciam-se a 28 de Fevereiro;
Resultados de Aprendizagem
Compreender os conceitos relevantes sobre a programao orientada aos objectos em C++ e modelao de classes em UML; Escrever programas em objectos em C++ para resolver problemas do mundo real, por exemplo gesto de componentes electrnicos ou controlo de robots; Escrever programas em objectos em C++ que manipulam estruturas de dados complexas (e.g. pilhas, filas, rvores binrias) e com uso de memria dinmica; Desenvolver competncias transversais (soft skills), tais como auto-aprendizagem, cooperar em grupo, liderana, escrever um relatrio de projecto, apresentar um projecto,
Programa
Conceitos bsicos de programao em C++: Introduo linguagem C++ Classes e programao orientada aos objectos em C++ Herana Mltipla, Polimorfismo e Desenho de Software Estruturas de Dados Complexas e com uso de Memria Dinmica: Memria Dinmica, Polimorfismo e Vectores Dinmicos Anlise de Complexidade, Ordenao e Procura Binria Pilhas e Filas Listas Ligadas, Duplamente Ligadas e Circulares rvores Binrias
Declarao de Variveis
Globais: declaradas no incio do programa, fora das funes Locais: declaradas dentro de uma funo, no incio Exemplo: /* variaveis-globais */ char c=Z; double d1, d2=2e5; int main() /* funcao principal */ { /* variaveis-locais */ int a, b, c; long l=3333333; float f=0.1; return 0; }
Operadores
Aritmticos: +, -, /, *, % Lgicos: ==, >, <, >=, <=, !, !=, &&, || Atribuio: =, +=, ++, -=, --, *=, /= Tamanho em memria: sizeof(algo) Exemplo: (2+3)/4+5*6 (a>b || b<=c) && !(a==4) z=4+5*y; i+=1; i++; ++i; (a=3>2)||(3.2*4==b); sizeof(2*int); int a; sizeof(a);
Condio: if(a>1 && a<5) a=0; else a=1; switch(c) { case a: printf(caracter a\n); break; case b: printf(caracter b\n); break; default: printf(outro caracter\n); } Ciclo: for(sum=0,i=1;i<=9;i++) sum+=i; sum=0; i=1; while(i<10) { sum=sum+i; i=i+1;} sum=0; i=1; do {sum+=i; i++;} while (i<10);
tipo funcao(argumentos) { return } se no retornar dados, usar tipo void: void func(int a) Exemplos: int multiplica(int a, int b); /* prototipo */ int soma(int a, int b) { return a+b;} int dobro(int a) { return soma(a,a);} int quadrado(int a) { return multiplica(a,a);} int multiplica(int a, int b) { return a*b;}
Incluir a biblioteca: #include <stdio.h> MS Visual C++: no 100% compatvel com a norma ANSI, Assim, para correr cdigo C, usar antes: #include "stdafx.h Leitura: scanf(forma, &variaveis); getchar(); Escrita: printf(texto-forma,variaveis); putchar(char); Forma: %c, %d, %ld, %f, %lf (char, int, long, oat, double); Texto-forma: \n, \t (muda linha, tabulao); Exemplos: printf(Tenho %d castanhas e %d laranjas \n, c, l); printf(Qual a temperatura?); scanf(%f, &temperatura); printf (A sua temperatura: %f \n, temperatura); printf(Carregue numa tecla...); c=getchar();
Outras instrues em C:
Constantes: #define PI 3.14 Macros: #define quadrado(x) ((x)*(x)) Converso de tipos: var=(novo-tipo) var2; Exemplos: int i=1; double d=1.0; i=(int)(d/2.0); d=(double)(i/2.0);