Tarefa 1 - Problemas e algoritmos

Prazo de entrega recomendado:

Exploraremos os conceitos básicos de problemas computacionais e algoritmos. Você deverá descrever um problema de forma não-ambígua e dar um algoritmo para resolvê-lo.


Nesta e em outras tarefas poderemos usar arquivos Markdown para organizar e deixar nossas respostas mais atrativas do que um simples arquivo de texto. Antes de começar a responder, leia o breve tutorial sobre esse formato de arquivos, disponível na página da disciplina. Lembre-se de atualizar o seu repositório utilizando o comando git pull e responda as questões abaixo criando os arquivos necessários na pasta da tarefa.

Problemas e algoritmos

Parte do processo de projetar algoritmos é definir o problema que estamos tentando resolver. Para isso, precisamos entender quais são as entradas do problema e quais são as saídas que devemos produzir. Vamos exercitar como definir um problema computacional em seguida.

1. Calculadora de datas

Você gostaria de somar um número de dias a uma data, obtendo assim uma nova data. Por exemplo, se a data é 30/03/2021 e tivermos que somar 3 dias, então a nova data será 02/04/2021. Crie um arquivo somar_datas.md, respondendo as seguintes questões.

a) Descreva de forma clara e precisa qual é a entrada e a saída desse problema. Procure especificar qual é o conjunto de entradas, qual é o conjunto de saídas e qual a relação entre eles.

b) Escreva um algoritmo em português para resolver esse problema. Lembre-se de que um algoritmo deve ser uma sequência de instruções não-ambíguas para receber a entrada e produzir a saída desejada. Busque descrever de forma precisa, de modo que qualquer pessoa que entenda português consiga executar essas instruções. Primeiro, tente listar quais instruções elementares seriam permitidas, depois escreva o algoritmo.

2. Lavando as mãos

Neste vídeo vemos uma pessoa demonstrando como lavar corretamente as mãos para evitar o contágio por organismos. Crie um arquivo lavar_maos.md e descreva em português, na forma de um algoritmo, como uma pessoa deve lavar as mãos de acordo com esse vídeo. Presuma que a pessoa nunca lavou as mãos antes e que ela só tenha a sua descrição de como fazê-lo.

Lembre-se de enviar as respostas para o repositório remoto e #fiqueEmCasa.

3. Baldes

Temos três baldes, identificados como A, B e C e 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.

Crie um arquivo baldes.md respondendo as seguintes questões.

a) O procedimento acima é um algoritmo? Dê a sua opinião se o procedimento acima é ou não um algoritmo. Para isso, dê a definição de um algoritmo e descreva todas suas características.

b) Escreva em português um algoritmo para resolver o problema descrito.

Correção

Esta tarefa não será corrigida manualmente, mas você deve tentar respondê-la genuinamente. Revise o texto que tiver escrito e, se tiver alguma dúvida se ela está ou não correta, procure os monitores. Tentativas de passar no teste automático sem responder as questões serão consideradas fraude.