Objectivos:
|
|
|
O objectivo principal desta ficha é familiarizar o aluno com a
programação de jogos e problemas simples.
Pretende-se aferir também os conhecimentos adquiridos até ao momento
pelo que os alunos deverão resolvê-la em grupo na aula e enviá-la ao docente
até ao fim da mesma.
|
|
|
|
- Conjetura de Collatz
- 100 portas
- Polyspiral
- Números departamentais
|
by jcr
Exercício Nº1: Conjetura de Collatz
Quantas iterações/repetições são necessárias para atingir
o valor 1 com o seguinte algoritmo:
- Ler um número n;
- Repetir até n=1
- Se n é par, divide-se o n por 2;
- Se n é ímpar, multiplica-se por 3 e soma-se
1.
Exercício Nº2: 100 portas
Há 100 portas que estão inicialmente fechadas.
Vais fazer 100 passagens pelas 100 portas.
Na primeira passagem, visitas todas as portas e invertes o
seu estado: se está aberta vais fechá-la e se estiver
fechada vais abri-la.
Na segunda passagem, vais visitar as portas de 2 em 2
(portas 2, 4, 6, ...) e vais invertê-las.
Na terceira passagem, vais visitar as portas de 3 em 3
(portas 3, 6, 9, ...) e vais invertê-las.
Vais continuar o processo até que na última passagem, a
centésima, invertes apenas a última porta.
No fim, responde às questões: Em que estado ficaram as
portas? Quais estão abertas e quais estão fechadas?
Exercício Nº3: Polyspiral
Uma Poliespiral é uma espiral composta por múltiplos
segmentos de linha, em que cada segmento é mais ou menos
comprido que o anterior por um determinado valor. Cada
segmento também muda de direção por um determinado valor
angular.
Anima uma série de espirais, desenhando uma espiral
completa, limpando o monitor após o seu desenho e desenhando
a seguinte. A animação poderá terminar quando obtiveres um
círculo ou continuar indefinidamente.
Baseia-te no seguinte algoritmo para a tua
implementação:
set incr to 0.0
// animation loop
WHILE true
incr = (incr + 0.05) MOD 360
xi = 0
yi = 0
length = 5
angle = incr
// spiral loop
FOR 1 TO 150
drawline
change direction by angle
length = length + 3
angle = (angle + incr) MOD 360
ENDFOR
Numa segunda versão, adiciona umas teclas de controlo para
aumentar/diminuir o incremento do ângulo e do segmento de reta.
Exercício Nº4: Números departamentais
Há uma cidade muito organizada que decidiu atribuir um
número a cada um dos seus departamentos:
- departamento de polícia;
- departamento sanitário;
- departamento de proteção civil.
Cada departamento pode ser um número entre 1 e 7
(inclusive).
O número de cada departamento deve ser único (diferente
dos outros) e a soma dos 3 deverá ser 12.
O chefe da polícia não gosta de números ímpares e quer um
número par para o seu departamento.
Cria um programa que calcula todas as combinações
possíveis de números.