Lista 1 - Problemas e algoritmos

Problemas e algoritmos

  1. 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.

  2. 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

  1. 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.