Guião da 2ª Aula Prática

Sumário

  1. Estrutura básica de um programa.

Escrever o programa de exemplo no quadro.  Aproveitar para ir descrevendo em que é que consiste.  Estrutura básica de um programa, noção de variável, instruções, expressões, definições, inserção e extracção de canais.

O primeiro exercício serve para os alunos verificarem na prática a ordem de execução das instruções.

Resoluções

2.a)  Por analogia com o exemplo.  Ver ex2a.C.

2.b)  Basta substituir int por double (ou float ou long double).  Ver ex2b.C.

2.c)  Solução ingénua.  Ver ex2c.C.

2.d)  Solução melhorada.  Ver ex2d.C.  A maior parte dos noviços da programação tem muitos problemas neste passo.  É o primeiro em que se usa raciocínio algorítmico.  É conveniente apelar à sua intuição, afastando-os um pouco do computador (desligando o ecrã).  Fazer uma analogia com encher um tanque a partir de uma fonte (c/ torneira) usando um copo.  Depois passar para um computador de papel e lápis, em que eles são o computador e têm apenas duas folhas de papel disponíveis, podendo apenas escrever um número de cada vez em cada uma.  O docente pode fazer de teclado.  Pode-se fazer um pequeno teatro.

2.e)  Solução usando ciclos.  Ver ex2e.C.  Aqui o problema para os noviços é semelhante.  Convém talvez que eles façam o traçado de um ciclo simples, para escrever todos os inteiros entre 0 e 10 exclusive.

3.  Ver ex3.C.

4.a)  Não funciona porque 2147483647 é o maior dos int numa máquina Linux de arquitectura Intel.

4.b)  Não funciona como expectável porque os float não têm precisão suficiente para guardar o inteiro 2147483647.  Ver ex4b.C.

4.c)  Como seria de esperar, porque a precisão do tipo double o permite, o programa funciona.  Ver ex4c.C.

5.  A constante x tem de passar a variável.  Além disso é escusado inicializá-la.  Ver ex5.C.

6.  A primeira versão é interpretada pelo compilador como

(cout << x) < (y << endl);

pois o operador << tem maior precedência que o operador >.  Ver ex6.C (incompleto).

7.a)  Ver ex7a.C.  Note-se que int(c) devolve o código do caractere c como um inteiro.  Note-se ainda que cin.get(c) lê um caractere do teclado coloca o seu código em c.  A solução com cin >> c descarta todos os espaços, tabuladores e fins-de-linha que encontrar antes do caracter, e por isso o utilizador não conseguirá saber o código do caractere espaço ' '.

7.b)  Ver ex7b.C.  Nota para os alunos:  Que acontece se o caractere introduzido for uma letra maiúscula?  E se não for uma letra de todo?  Experimente...

7.c)  Ver ex7c.C.  Nota para os alunos:  Que acontece se o caractere introduzido for 'z' ou 'Z'?  E se não for uma letra de todo?  Experimente...  Tente fazer surgir a letra 'a'.

8.  Ver ex8.C.