Algoritmos e pensamento computacional
Você já seguiu uma receita de bolo ou explicou a um colega o caminho até a padaria? Então já usou um algoritmo. Antes de escrever qualquer programa, é preciso ter muito claros os passos exatos a dar. Pensar assim, dividindo o problema, procurando padrões e ficando só com o que importa, é o pensamento computacional. Vamos descobrir como explicar algo com tanta precisão que até um robô consiga seguir.
O que é um algoritmo
Um jeito de não esquecer nada é pensar em entrada → processamento → saída: com o que você começa, o que faz exatamente com isso e o que obtém no final.
Escreva o algoritmo, sob a forma de uma lista de passos numerados, para preparar um sanduíche de queijo, de modo que uma pessoa que nunca tenha feito um possa segui-lo…
Escreva o algoritmo, sob a forma de uma lista de passos numerados, para preparar um sanduíche de queijo, de modo que uma pessoa que nunca tenha feito um possa segui-lo sem dúvidas. Revise a lista e confirme que não faltam passos que você considerava óbvios.
Escreva o algoritmo para preparar um copo de leite com cacau em seis a oito passos, tão precisos que pudessem ser seguidos por um robô: quantidades, ordem dos passos e…
Escreva o algoritmo para preparar um copo de leite com cacau em seis a oito passos, tão precisos que pudessem ser seguidos por um robô: quantidades, ordem dos passos e como verificar se o cacau se dissolveu antes de terminar.
Na receita «fritar um ovo», identifique a entrada (os ingredientes e utensílios), o processamento (os passos com o fogão e a frigideira) e a saída (o resultado).…
Na receita «fritar um ovo», identifique a entrada (os ingredientes e utensílios), o processamento (os passos com o fogão e a frigideira) e a saída (o resultado). Explique por que pensar assim ajuda a escrever algoritmos claros.
Uma receita diz «mexa o molho até engrossar». Explique por que razão um algoritmo deve terminar sempre e o que poderia acontecer se o molho nunca engrossasse. Reescreva…
Uma receita diz «mexa o molho até engrossar». Explique por que razão um algoritmo deve terminar sempre e o que poderia acontecer se o molho nunca engrossasse. Reescreva esse passo para que o cozinheiro não fique mexendo para sempre.
Decisões e repetições no fluxograma
A decisão faz o caminho se dividir: segue por um lado se a resposta é «sim» e por outro se é «não». A repetição (ou laço) faz o algoritmo voltar a um passo anterior enquanto uma condição for verdadeira, como em «enquanto restarem cartas na mão, distribua uma».
Para ter certeza de que um algoritmo funciona, fazemos o rastreamento: executamos os passos à mão e anotamos o valor depois de cada um.
Estes passos do algoritmo «ir para a escola» estão desordenados: (a) entrar na sala de aula, (b) levantar-se, (c) tomar o café da manhã, (d) sair de casa, (e) vestir-se,…
Estes passos do algoritmo «ir para a escola» estão desordenados: (a) entrar na sala de aula, (b) levantar-se, (c) tomar o café da manhã, (d) sair de casa, (e) vestir-se, (f) caminhar até a escola. Ordene-os corretamente e adicione ao algoritmo uma decisão: o que fazer se estiver chovendo ao sair de casa.
A figura mostra, com blocos encaixados, o algoritmo de uma luminária de leitura automática que deve acender apenas quando há pouca luz, mas falta um bloco. Indique que…
A figura mostra, com blocos encaixados, o algoritmo de uma luminária de leitura automática que deve acender apenas quando há pouca luz, mas falta um bloco.
Indique que bloco você colocaria no espaço vazio e explique com suas palavras como funciona o algoritmo completo, passo a passo.
Muitos aparelhos do dia a dia seguem algoritmos. Escolha dois desta lista — máquina de lavar roupa, micro-ondas, semáforo — e descreva para cada um que dados recebe…
Muitos aparelhos do dia a dia seguem algoritmos. Escolha dois desta lista — máquina de lavar roupa, micro-ondas, semáforo — e descreva para cada um que dados recebe (entrada), o que decide ou repete (processamento) e o que faz no final (saída).
Leia este algoritmo: (1) pegue o baralho, (2) enquanto restarem cartas na mão, distribua uma a cada jogador começando pela sua esquerda, (3) quando não restarem mais…
Leia este algoritmo: (1) pegue o baralho, (2) enquanto restarem cartas na mão, distribua uma a cada jogador começando pela sua esquerda, (3) quando não restarem mais cartas, anuncie «distribuídas». Explique em uma frase o que o algoritmo faz e indique qual parte é a repetição e quando ela termina.
Faça o rastreio deste algoritmo com $n = 7$: (1) começar com o valor de $n$, (2) repetir três vezes: somar 2 a ele, (3) subtrair 5 dele, (4) escrever o resultado.…
Faça o rastreio deste algoritmo com $n = 7$: (1) começar com o valor de $n$, (2) repetir três vezes: somar 2 a ele, (3) subtrair 5 dele, (4) escrever o resultado. Registre o valor após cada passo, indique o resultado final e explique o que é um rastreio e para que serve fazê-lo à mão.
Escreva o algoritmo para contar quantas pessoas entram pela porta da sala de aula usando apenas uma variável «contador» que começa em 0: o que você faz cada vez que…
Escreva o algoritmo para contar quantas pessoas entram pela porta da sala de aula usando apenas uma variável «contador» que começa em 0: o que você faz cada vez que entra alguém, como você sabe quando parar de contar e que valor o contador terá no final.
Decompor, reconhecer padrões e abstrair
Dividir ajuda porque cada parte pequena é mais fácil de resolver, de testar e de repartir entre pessoas. Já os padrões permitem resolver de uma vez só muitos casos parecidos: na sequência $5, 10, 15, 20, \dots$ a regra é «somar 5», e o próximo valor é $25$.
Um mesmo problema pode ter vários algoritmos. Para organizar cartas, você pode pegar a menor carta e colocá-la no começo, de novo e de novo, ou ir inserindo cada carta no lugar certo. Um algoritmo é «melhor» quando, por exemplo, gasta menos tempo ou comete menos erros.
Quando há tarefas que dependem umas das outras (não dá para servir o café antes de fazê-lo), elas têm uma ordem obrigatória. As que não dependem entre si podem ser feitas ao mesmo tempo por pessoas diferentes.
Decomponha o problema «organizar a festa de final de ano» em quatro subproblemas menores e escreva dois passos concretos para resolver cada um. Explique que vantagem há…
Decomponha o problema «organizar a festa de final de ano» em quatro subproblemas menores e escreva dois passos concretos para resolver cada um. Explique que vantagem há em dividir assim um problema grande.
Para ordenar um baralho de cartas existem vários algoritmos diferentes, e uns são mais rápidos do que outros. Explique com um exemplo do dia a dia que um mesmo problema…
Para ordenar um baralho de cartas existem vários algoritmos diferentes, e uns são mais rápidos do que outros. Explique com um exemplo do dia a dia que um mesmo problema pode ter vários algoritmos que o resolvem e o que significa um ser «melhor» do que outro.
Reconhecer padrões é encontrar a regra que se repete. Descubra o padrão destas três sequências e expresse-o como uma regra clara: (a) 5, 10, 15, 20, …, (b) 100, 90, 80,…
Reconhecer padrões é encontrar a regra que se repete. Descubra o padrão destas três sequências e expresse-o como uma regra clara: (a) 5, 10, 15, 20, …, (b) 100, 90, 80, 70, …, (c) segunda-feira: 1 flexão, terça-feira: 2, quarta-feira: 4, quinta-feira: 8, … Indique que valor viria a seguir em cada uma.
O mapa do metrô não desenha a cidade real: elimina distâncias, curvas e ruas, ficando apenas com as estações e ligações. Explique o que é a abstração usando este exemplo…
O mapa do metrô não desenha a cidade real: elimina distâncias, curvas e ruas, ficando apenas com as estações e ligações. Explique o que é a abstração usando este exemplo e aplique-a depois à planta da sua escola: que três elementos você incluiria e que três elementos eliminaria.
Você pode fazer isso no papel e enviar uma foto com a sua resposta.
Duas pessoas preparam juntas o café da manhã para quatro convidados: é preciso fazer café, torrar pão, espremer suco e pôr a mesa. Distribua as tarefas entre as duas…
Duas pessoas preparam juntas o café da manhã para quatro convidados: é preciso fazer café, torrar pão, espremer suco e pôr a mesa. Distribua as tarefas entre as duas respeitando as dependências (não se pode servir o café antes de fazê-lo) e explique quais tarefas podem ser feitas ao mesmo tempo e quais não podem, indicando a sua ordem.
Para a reciclagem na sala de aula, propõem-se dois algoritmos: (a) todos os dias, a pessoa responsável separa todo o lixo do dia nas três lixeiras de coleta seletiva, e…
Para a reciclagem na sala de aula, propõem-se dois algoritmos: (a) todos os dias, a pessoa responsável separa todo o lixo do dia nas três lixeiras de coleta seletiva, e (b) todas as semanas, em rodízio, uma dupla classifica o que foi acumulado. Avalie ambos com base nos critérios de tempo total, erros de separação e distribuição do esforço, e escolha um justificando a opção.
Casos limite e erros nos algoritmos
Uma receita diz: «adicione sal e deixe cozinhar por algum tempo em fogo baixo». Explique por que um computador não conseguiria seguir essa instrução e reescreva-a como…
Uma receita diz: «adicione sal e deixe cozinhar por algum tempo em fogo baixo». Explique por que um computador não conseguiria seguir essa instrução e reescreva-a como um passo de algoritmo preciso, indicando quantidades, tempos e como verificar se o passo terminou.
Este algoritmo de «lavar a roupa» tem um erro: (1) colocar toda a roupa na máquina de lavar, branca e colorida junta, (2) adicionar sabão, (3) escolher o programa longo…
Este algoritmo de «lavar a roupa» tem um erro: (1) colocar toda a roupa na máquina de lavar, branca e colorida junta, (2) adicionar sabão, (3) escolher o programa longo de água quente, (4) estender a roupa. Encontre dois passos problemáticos, explique o que pode dar errado em cada um e reescreva o algoritmo corrigido com um passo de separação prévia.
O algoritmo de uma lanchonete distribui um sanduíche a cada participante, mas falha quando há mais participantes do que sanduíches. Explique o que é um «caso limite» em…
O algoritmo de uma lanchonete distribui um sanduíche a cada participante, mas falha quando há mais participantes do que sanduíches. Explique o que é um «caso limite» em um algoritmo, proponha como a distribuição deveria se comportar nessa situação e reescreva o passo problemático para que o algoritmo não falhe.
Um caixa eletrônico só tem notas de $\text{R\$}\ 20$ e o seu algoritmo distribui a quantia pedida em notas. Explique o que acontece quando alguém pede $\text{R\$}\ 75$,…
Um caixa eletrônico só tem notas de $\text{R\$}\ 20$ e o seu algoritmo distribui a quantia pedida em notas. Explique o que acontece quando alguém pede $\text{R\$}\ 75$, por que razão é um caso-limite e reescreva as regras do caixa para que responda sempre algo razoável.
Desenvolva o algoritmo completo, com passos numerados que incluam decisões e repetições, de um semáforo de pedestres com botão: o que acontece desde que alguém aperta o…
Desenvolva o algoritmo completo, com passos numerados que incluam decisões e repetições, de um semáforo de pedestres com botão: o que acontece desde que alguém aperta o botão até que o semáforo volte ao seu estado inicial, incluindo os tempos de cada luz.
Pense em um programa para jogar o jogo da velha. Descreva a estratégia que ele seguiria em cada turno: quais dados do tabuleiro deve observar, em que ordem, e quais…
Pense em um programa para jogar o jogo da velha. Descreva a estratégia que ele seguiria em cada turno: quais dados do tabuleiro deve observar, em que ordem, e quais regras você usaria para decidir onde colocar a peça. Não é necessário escrever código: basta apresentar as regras em linguagem natural.
A figura mostra, com blocos encaixados, a estrutura de um jogo de adivinhar um número secreto, mas dentro do laço falta uma peça para que o jogo dê dicas ao jogador.…
A figura mostra, com blocos encaixados, a estrutura de um jogo de adivinhar um número secreto, mas dentro do laço falta uma peça para que o jogo dê dicas ao jogador.
Descreva qual bloco (ou blocos) você colocaria no espaço vazio para que o jogo diga ao jogador se o número dele é maior ou menor do que o secreto, e explique o funcionamento completo do algoritmo: o que se repete, quando termina e o que acontece se o jogador acertar de primeira.
Voltando ao início: explicar algo com tanta precisão que um robô o siga exige passos exatos, decisões, repetições que terminam e atenção aos casos limite.