Prazo de entrega recomendado:
Exercitaremos os conceitos de problema computacional e algoritmo. Você deverá definir um problema de maneira precisa. Além disso, deverá descrever algoritmos e identificar o que torna um algoritmo válido.
Nesta tarefa, suas respostas serão em texto. Você usará Markdown para
que essas respostas fiquem com uma boa leitura e apresentação.
Portanto, antes de começar a tarefa, leia o pequeno
guia sobre esse formato de
arquivos que pode ser encontrado na página inicial da disciplina.
Lembre-se de atualizar o seu repositório usando git pull
e responda
às questões abaixo criando os arquivos necessários na pasta da tarefa.
Problemas e algoritmos
Antes de escrever um algoritmo, precisamos entender qual problema computacional desejamos resolver. Portanto, é importante saber definir de maneira precisa o problema em questão. Especificamente, é preciso determinar quais as entradas possíveis para esse problema e as saídas correspondentes. É o que vamos exercitar 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/2022 e tivermos que somar 3
dias, a nova data será 02/04/2022. Crie um arquivo somar_datas.md
para responder às seguintes questões:
a) Descreva precisamente o problema computacional da soma de datas. Procure especificar qual é o conjunto de entradas, qual é o conjunto de saídas e qual é a relação entre esses conjuntos.
b) Escreva, em língua portuguesa, um algoritmo que resolva o problema definido acima. Lembre-se de que um algoritmo deve ser uma sequência de instruções não-ambíguas e suficientemente básicas para, recebendo a entrada, produzir a saída desejada. Busque descrever de forma precisa e clara, de modo que qualquer pessoa que entenda português consiga executar essas instruções. Antes de escrever seu algoritmo, procure listar quais instruções elementares seriam permitidas. Você pode supor que o ano não é bissexto e que a soma não ultrapassará o próximo ano bissexto.
c) Imagine agora uma variação desse problema: a soma de datas contando dias úteis. Por exemplo, se a data é 30/03/2022 e desejamos somar 3 dias (úteis), a nova data será 04/04/2022. Se a data é 02/04/2022 e desejamos somar 4 dias (úteis), a nova data será 07/04/2022. Explique brevemente qual seria a diferença entre os dois problemas computacionais. Sua resposta deverá envolver os conceitos relevantes para problema computacional: as entradas, saídas e a relação entre elas. Apenas responda a questão, não é necessário escrever um algoritmo que resolva essa variação.
2. 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.
- 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.
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 será corrigida automaticamente sempre que você realizar um
git push
. Depois de terminada a tarefa, deve-se utilizar o botão na
interface de notas para solicitar a correção de um monitor.