Problemas e algoritmos
-
Um robô está na posição da seta. Existe um tesouro escondido em um caixote amarelo, mas no outro há uma armadilha que o deixa preso para sempre. Para saber em que caixote está, pode-se verificar a chave marrom e ler o valor de X. Se X = -1, então o tesouro está em A, mas se X = 1, então o tesouro está em B.
a) Escreva um algoritmo para pegar o tesouro. O robô só entende os seguintes comandos:
- virar à direita
- virar à esquerda
- abrir um caixote
- andar N quadrados
- ler um valor e
- pegar o tesouro
b) Descreve o problema formalmente, isso é, descreva quem é o conjunto de entradas e o conjunto de saídas e o que caracteriza uma saída válida.
c) Concorde ou discorde: um algoritmo que abre um caixote antes de ler a chave está bem definido. Justifique.
-
Execute as seguintes instruções:
-
Pegue papel em branco e lápis;
-
Desenhe um semicírculo na esquerda;
-
Desenhe outro semicírculo na direita;
-
Desenhe um círculo menor em baixo de de cada semicírculo;
-
Desenhe um semicírculo maior sobre os semicírculos;
-
Pinte os semicírculos pequenos de verde;
-
Pinte o semicírculo grande de laranja;
a) Que figura você obteve? O procedimento acima é um algoritmo? Explique.
b) Reescreva o procedimento como um algoritmo bem definido cuja a saída é um desenho como o disponível aqui. Certifique-se de que qualquer pessoa que leia somente o algoritmo possa reproduzir o desenho. Atente-se para tamanho dos traços, ordem das instruções etc.
-
Exercícios criativos
-
Você tem três baldes, identificados como $A$, $B$ e $C$ com capacidades $2$, $7$ e $4$ litros respectivamente. Os baldes $A$ e $C$ estão vazios, enquanto o balde $B$ está cheio de água. Um amigo gostaria de, sem desperdiçar água, separar um litro, mas não há indicadores de medida nos baldes. Ele sugeriu o procedimento abaixo:
- Despeje a água do balde $B$ no balde $A$ até a borda;
- Despeje metade da água do balde $A$ no balde $C$;
- Entregue o balde $A$.
a) Argumente que este procedimento não é um algoritmo; para isso, dê a definição de um algoritmo e descreva as características que todo algoritmo deve ter.
b) Depois escreva um algoritmo para o problema.