Tarefa 5 - Os 4 Pilares Do Pensamento Computacional: Algoritmos
Tarefa 5 - Os 4 Pilares Do Pensamento Computacional: Algoritmos
Tarefa 5 - Os 4 Pilares Do Pensamento Computacional: Algoritmos
Data: 02/04/2024
Algoritmos
Considerado por Wing (2014) o elemento que agrega todos os demais, o algoritmo é um plano,
uma estratégia ou um conjunto de instruções claras necessárias para a solução de um problema
(CSIZMADIA et al., 2015). Em um algoritmo, as instruções são descritas e ordenadas para que o
seu objetivo seja atingido e podem ser escritas em formato de diagramas ou pseudocódigo
(linguagem humana), para depois serem escritos códigos em uma linguagem de programação.
Liukas (2015) define “Algoritmos” como “um conjunto de passos específicos usado para
solucionar um problema” e ainda o diferencia do termo “Programa” como sendo “uma sequência
de instruções precisas escritas em uma linguagem que computadores compreendam”.
É o que se pode chamar do núcleo principal, pois possui uma grande abrangência em diversos
momentos das atividades propostas pelo Pensamento Computacional. É um conjunto de regras
para a resolução de um problema, como a receita de um bolo; porém, diferentemente de uma
simples receita de bolo, pode-se utilizar diversos fatores mais complexos. Existem algoritmos
muito pequenos, que podem ser comparados a pequenos poemas. Outros algoritmos são
maiores e precisam ser escritos como se fossem livros, ou então maiores ainda, necessitariam
inevitavelmente serem escritos em diversos volumes de livros. Para entender melhor, é possível
fazer questionamentos que possam facilitar a compreensão de como gerar e quais as limitações
do mesmo, tais como: “É possível solucionar um problema utilizando algoritmos?”, ou “Qual a
precisão que se necessita para solucionar um problema?”.
Algoritmos devem ser compreendidos como soluções prontas, pois já passaram pelo processo de
decomposição, abstração e reconhecimento de padrões para sua formulação. Ao serem
executados, seguirão os passos pré-definidos, ou seja, aplicar-se-á solução quantas vezes forem
necessárias, não havendo a necessidade de criar um novo algoritmo para cada uma de suas
execuções posteriores.
A propósito, pode-se exemplificar através de uma atividade que é ensinada nas escolas durante
as aulas de Matemática: calcular uma soma com a sobreposição dos números (“conta armada”).
Um exemplo de conta armada é apresentada na Figura 13, onde é possível identificar uma
sequência de passos necessários para atingir o resultado (algoritmo). Se os alunos ou o
computador seguirem as mesmas regras claras para resolver a conta, ambos teriam condições de
determinar a soma de quaisquer números. No momento em que se define corretamente todos os
passos do algoritmo nos sistemas computacionais, não há mais necessidade de preocupar-se
com a resolução deste problema e pode-se, então, focar em elementos mais complexos do
sistema. A principal característica do algoritmo é a possibilidade de automação das soluções.
Conseguindo planejar bem o dia, otimizamos o uso do nosso tempo! O dia parece mais longo.
Veja um exemplo de uma rotina diária de um soldado:
1. Despertar;
2. Calçar as sandálias;
3. Colocar a roupa de treinos;
4. Ir até o campo de treinamento;
5. Apresentar-se para o soldado da vigília;
6. Começar aquecimentos;
7. Cumprimentar o general que passará o treinamento;
8. Executar as rotinas de treinamento;
9. Parada para o almoço;
10. Executar os movimentos de posicionamento militar;
11. Estudar as demandas do general;
12. Parada para a janta;
13. Conversa com os colegas soldados;
14. Tomar banho;
15. Retornar ao alojamento.
Algoritmo: uma sequência finita de etapas (passos), cada qual executável em um tempo finito, por
um agente computacional, natural (humano) ou sintético (computador).
Alguns algoritmos são tão repetidos por nós, que os executamos automaticamente, ou seja, sem
refletir. Não é por acaso que, quando observamos alguém repetir uma sequência de etapas muito
concentrado, dizemos “hoje ele/ela está no automático”. Mas não se assuste, isso não faz de nós
uma máquina.
Algoritmo 2 – vamos analisar agora de que forma os algoritmos podem ser adaptados à tomada
de decisões. Veja a rotina diária do soldado do algoritmo 1 em dias frios. Informação: em dias
mais frios ele faz 1 hora de aquecimento, e em dias mais quentes, 40 minutos. Veja como fica a
rotina diária nessa condição:
1. Despertar;
2. Calçar as sandálias;
3. Colocar a roupa de treinos;
4. Ir até o campo de treinamento;
5. Apresentar-se para o soldado da vigília;
6. Se for um dia frio:
a. então fazer 1h de aquecimento;
b. senão fazer 40 min de aquecimento;
7. Cumprimentar o general que passará o treinamento;
8. Executar as rotinas de treinamento;
9. Parada para o almoço;
10. Executar os movimentos de posicionamento militar;
11. Estudar as demandas do general;
12. Parada para a janta;
13. Conversa com os colegas soldados;
14. Tomar banho;
15. Retornar ao alojamento.
Durante a execução do novo algoritmo, se a sentença “Se for um dia frio” for satisfeita, a ação
que sucede o termo “então”, “fazer 1h de aquecimento”, será realizada e, se a sentença não for
satisfeita, a ação que sucede o termo “senão”, “fazer 40 min de aquecimento”, será realizada.
Com muita frequência, a realização de uma atividade requer a execução de atividades mais
simples, por várias vezes. Assim, além da tomada de decisão, precisamos desse outro padrão de
ação, conhecido como repetição. A ideia é simples e consiste na realização da mesma atividade,
ou sequência de atividades, várias vezes.
1. Despertar;
2. Calçar as sandálias;
3. Colocar a roupa de treinos;
4. Ir até o campo de treinamento;
5. Apresentar-se para o soldado da vigília;
6. Se for um dia frio:
a. então:
i. aquecer por 20 min;
ii. aquecer por 20 min;
iii. aquecer por 20 min;
b. senão:
i. aquecer por 20 min;
ii. aquecer por 20 min;
7. Cumprimentar o general que passará o treinamento;
8. Executar as rotinas de treinamento;
9. Parada para o almoço;
10. Executar os movimentos de posicionamento militar;
11. Estudar as demandas do general;
12. Parada para a janta;
13. Conversa com os colegas soldados;
14. Tomar banho;
15. Retornar ao alojamento.
Ficou um tanto repetitivo dessa forma, não ficou? Imagine se tivéssemos divido essas abstrações
de 1 em 1 minuto... Vamos simplificar esse algoritmo introduzindo a expressão “repita n vezes”.
Algoritmo 4
1. Despertar;
2. Calçar as sandálias;
3. Colocar a roupa de treinos;
4. Ir até o campo de treinamento;
5. Apresentar-se para o soldado da vigília;
6. Se for um dia frio:
a. então repita 3 vezes aquecer por 20 min;
b. senão repita 2 vezes aquecer por 20 min;
7. Cumprimentar o general que passará o treinamento;
8. Executar as rotinas de treinamento;
9. Parada para o almoço;
10. Executar os movimentos de posicionamento militar;
11. Estudar as demandas do general;
12. Parada para a janta;
13. Conversa com os colegas soldados;
14. Tomar banho;
15. Retornar ao alojamento.
Suponha que lhe foi encomendada a revisão completa de um determinado texto. O Algoritmo 5,
apresentado a seguir, detalha os passos necessários para essa tarefa.
1. Obtenha o texto;
2. Enquanto houver uma página por ler faça:
3. Revise a página corrente;
4. Vire a página;
5. Devolva o texto.
Comecemos por uma atividade, subir uma escada, que de tão corriqueira nem nos damos conta
dela quando precisamos realizá-la, a menos em casos como quando a escada é muito alta e nos
provoca preocupações. Nessas situações, em geral perguntamos “será que não tem um elevador
por perto?”
Essa também é uma rotina bem corriqueira, mas alguns motoristas precisam recorrer ao manual,
enquanto outros chamam o socorro do seguro ou alguém com experiência no assunto. Seja como
for, quem for trocar o pneu de um carro precisa executar essa rotina.
Exemplo 3:
Professores diariamente precisam propor atividades para seus alunos, buscando apoiá-los na
construção de conhecimento sobre determinados assuntos. No caso a seguir, estamos supondo
que os alunos tenham acesso a computadores e Internet, seja no laboratório de Informática da
escola ou mesmo em suas residências. Assim, estamos considerando a possibilidade do uso de
editor de texto, consultas à Internet e troca de mensagens por email.
Pré condições: sentados em suas mesas, dispostas em círculo, os alunos recebem um texto
selecionado pelo(a) professor(a).
1. Ler o texto atentamente;
2. Elaborar e registrar, em uma folha com seu nome, 2 questões sobre o texto lido;
3. Passar as suas questões para o colega que está à sua esquerda;
4. Receber a lista de questões que lhe foi passada pelo colega que está à sua direita;
5. Responder uma das questões;
6. Passar a lista para o colega que está à sua esquerda;
7. Receber uma nova lista que lhe foi passada pelo colega que está à sua direita;
8. Responder uma das questões ainda não respondidas;
9. Entregar a lista que está em suas mãos ao colega que a escreveu;
10. Em casa, digitar a sua questão e as respostas recebidas e compartilhá-lhas por email com
o professor;
11. Fazer pesquisas nos livros e na Internet e escrever um pequeno texto com as respostas às
suas perguntas e enviar por email para todos os colegas e para o professor.
Posteriormente o professor fará uma compilação das perguntas e respostas e distribuirá para
todos os alunos. Em outro momento presencial, a turma discutirá sobre as questões que surgiram
e as diferentes respostas, para consolidar as aprendizagens.
Refinamentos sucessivos
Problemas de maior porte podem ser desdobrados em problemas menores, para facilitar a
resolução. Usando o pilar “Decomposição”, podemos modularizar um algoritmo, definindo com
isso novos problemas menores. Vejamos a seguir o algoritmo com a preparação do almoço de
domingo, desdobrado em novos problemas. A solução apresentada a seguir considera uma
decomposição formada por três módulos auxiliares, onde se prepara diferentes partes do
cardápio e um módulo principal que organiza o uso dos módulos auxiliares.
Cardápio: Filé de peixe, assado com molho de cogumelo, acompanhado de risoto de alho poró.
É importante destacar que algoritmos que contêm tomadas de decisão e repetições requerem
cuidados especiais, pois possuem mais de um caminho possível durante a execução. Por
exemplo, no caso do aquecimento, temos duas possibilidades de resultados esperados ao final
da execução, aquecer por 1h ou aquecer por 40 min.
Em geral, para um mesmo problema existem diversos algoritmos que produzem resultados
corretos. Ter uma solução correta para um problema é fundamental, mas não basta. É necessário
também que ela possa ser executada em um tempo que nos permita esperar pelos resultados.
Problemas que tratam com grande quantidade de dados são alguns dos que podem nos
apresentar essa dificuldade. Desses, um dos mais conhecidos é o problema da ordenação de
dados. Considere, por exemplo, criar uma lista ordenada dos alunos de uma turma, por ordem
decrescente das alturas. Os dados podem estar registrados em fichas, uma ficha por aluno, com
nome e altura. O problema da ordenação de dados segundo algum critério é muito importante em
diversas aplicações. Existem vários algoritmos bem conhecidos para resolvê-lo e sabe-se que a
diferença de desempenho entre esses algoritmos pode ser da ordem de 100, ou seja, um
algoritmo pode ser 100 vezes mais lento do que outros.
Exercícios
1) Algoritmo com recipientes: Considere o algoritmo a seguir, sobre o qual fazemos algumas
afirmações. Identifique a alternativa que parece menos apropriada para se referir a este algoritmo.
Considere que:
Algoritmo:
a) Para obter 7 litros de água podemos retirar as duas últimas operações do Algoritmo 2;
b) A execução do algoritmo resultará em 4 litros de água no recipiente R3;
c) O algoritmo descreve uma sequencia de operações cuja execução completa nos permite
obter exatos 4 litros de água no recipiente R5;
d) Se retirarmos a Operação 7, o algoritmo passa a descrever uma solução para se obter 7
litros de água.
1. Pegue o macaco;
2. Pegue um recipiente vazio onde serão colocados os parafusos da roda;
3. Posicione o macaco no ponto indicado para levantar o carro com respeito a uma dada
roda;
4. Acione um pouco o macaco, sem tirar o carro do piso;
5. Afrouxe todos os parafusos da roda;
6. Levante o carro, deixando-o cerca de 10 centímetros acima do piso;
7. Enquanto houver parafuso por retirar da roda faça:
a. Retire um dos parafusos restantes na roda;
b. Coloque o parafuso retirado da roda dentro do recipiente;
c. Coloque na roda um dos parafusos disponíveis no recipiente.
8. Tire o pneu.
3) Pilha de pratos: Considere uma pilha de pratos sujos e a inexistência de uma pilha de pratos
limpos.
Algoritmo:
Considere o algoritmo acima, sobre o qual se fazem algumas afirmações. Selecione aquela que
lhe parece com menos possibilidade de estar correta.
Considere que se tenha uma lista de compras e que um agente está com ela em um
supermercado.
Algoritmo A
d) Podemos dividir a lista de compras em duas ou mais partes, obtendo outras listas, que
podem ser atribuídas a compradores diferentes. Se solicitarmos que cada um execute o
Algoritmo A, cada comprador terá que pagar a conta relativa à sua própria compra.
Descreva o algoritmo para determinação do máximo divisor comum entre dois números.
Acrescente a carne para fritar até ficar sequinha. Junte a cenoura e o tomate e refogue por 3
minutos.
Adicione a batata, tempere com sal e páprica. Coloque o molho de tomate, a água e deixe ferver
até os legumes começarem a ficar macios.
Cozinhe o macarrão.
O planejamento de estudo de uma disciplina, do itinerário das matérias que serão cursadas no
período.