Os alunos no final desta aula deverão conhecer:
while
, for
e do
while
.Deverão também ser capazes de:
Caso os alunos sintam que os objectivos não foram atingidos na totalidade deverão concluir/repetir os exercícios desta aula autonomamente e ou recorrer aos horários de dúvidas.
O resumo da matéria abordada nesta aula prática pode ser consultado aqui.
Demonstre a correcção de todos os ciclos desenvolvidos (veja a secção Prova de correcção de um ciclo do Resumo).
Se conseguir, use demonstração inversa (partindo da condição objectivo de uma instrução, obtém-se a sua pré-condição mais fraca e depois demonstra-se que esta é implicada pela pré-condição da instrução).
Se não conseguir, use demonstração directa (partindo da pré-condição de uma instrução, demonstra-se informalmente a condição objectivo dessa mesma instrução). Faça um pequeno programa de teste para todas as rotinas desenvolvidas.
1. Escreva uma função que devolva a soma dos primeiros
n
naturais. E.g., a invocação somaDosPrimeirosNaturais(2)
devolve o valor 3.
2.a) Escreva uma função que calcule a multiplicação
inteira de dois números recorrendo apenas aos operadores aritméticos
+
e -
. Admite-se que o primeiro argumento passado à
função é não-negativo. (Pode interpretar o produto como um somatório.)
2.b) Haverá forma mais rápida de progredir no ciclo? Como?
De ora em diante use sempre demonstração inversa.
3.a) Escreva uma função que devolva a soma dos primeiros
n
naturais ímpares. E.g., a invocação
somaDosPrimeirosNaturaisÍmpares(2)
devolve o valor 4.
3.b) Compare o resultado das chamadas às funções desenvolvidas nos exercícios 1. e 3.a) com o resultado das fórmulas n × (n + 1) / 2 e n2. Conseguirá simplificar as funções? Que conclui?
4. Exercícios de contagem simples. Use, sempre que possível,
guardas com o operador !=
. Desenvolva um programa que leia
três inteiros m, n e s do teclado (assuma que
m
<= n e que 0 < s) e construa vários ciclos diferentes de modo a que
apareçam sucessivamente no ecrã:
4.a) os números inteiros de m a n exclusive;
4.b) os números inteiros de n a m (ordem decrescente);
4.c) os números inteiros de m a n exclusive
de s em s.
Não precisa de demonstrar a correcção dos ciclos.
4.d) Conseguiu usar a guarda !=
em todos estes exercícios?
Porquê?