O que são estruturas de repetição - Parte 1

Anteriormente, você já viu algumas estruturas de repetição, porém esta lição descreverá com muito mais detalhes. É o momento de discutir novos blocos que nos permitem criar laços explorando vários conceitos de programação.

 

Objetivos:

  • Entenda estruturas de repetição para executar instruções repetidamente;
  • Entenda a validar dados de entrada de usuários;
  • Aprenda a construir laços controlados por contadores e por eventos;
  • Aprenda a usar os blocos da categoria Loops.
  • Demonstre compreensão e aplique suas novas habilidades, criando um projeto que use o  micro:bit e um programa que explore os loops e condicionais de maneira correta e eficaz.

Podemos querer lidar com alguma entrada realizada por uma ação do usuário ou permanecer esperando uma determinada entrada por um longo tempo. Usamos estas estruturas de repetição ( categoria Loops  ) para garantir que nosso código será executado várias vezes, de forma controlada. Embora a maior parte das pessoas ache as tarefas repetitivas chatas e tediosas, os computadores demonstram uma certa apreciação por elas. 🙂

As estruturas de repetição, mais conhecidos como laços ou loops, são comandos de programação que dizem  a um computador para executar repetidamente uma instrução ou sequência de instruções .

O bloco Sempre, tem uma função muito próxima a estas estrutura de repetição que iremos tratar aqui, o bloco Sempre executa parte de uma programa em segundo plano e sem dúvida é muito comum usarmos ele. Nesta lição abordaremos especificamente os blocos tratados na categoria Loops, nesta categoria temos laços que são controlados por contadores, laços controlados por condição… Nesta lição você aprenderá a respeito das diferentes estruturas de repetição disponíveis no makecode.

nova versão

Damos o nome de iteraçao para cada repetição de um laço e usamos a palavra contador normalmente para descrever o número de vezes que um laço se repete. O bloco repetir … vezes, é um laço controlado por contador, pois ele irá repetir os blocos dentro dele um número específico de vezes, um exemplo comum de uso é quando queremos desenhar um polígono que tenha um número conhecido de lados ou apresentar uma sequência específica de números.

sempre… repetir… enquanto!!!

sempre

Em lições anteriores aprendemos a criar um contador com o micro:bit. O exemplo ao lado faz com que o micro:bit aguarde uma ação do usuário (pressionar Botão A) dentro de um loop  Sempre. Somente ao pressionar o Botão A é adicionado 1 à variável contador,  com algumas alterações este código poderia ser o ponto de partida para um cronômetro.

repetir ... vezes

Imagine que desejamos fazer um contador regressivo para a largada de uma corrida, ou para medir o tempo que alguém terá disponível para apresentar uma resposta para um quiz. O bloco repetir … vezes poderá controlar a apresentação no display do valor da variável contador. 

No exemplo ao lado:

  • ao iniciar é definido o valor 4 para a variável contador;
  • em seguida, entra no bloco repetir, onde será repetido 4 vezes o seguinte:
    • mostrar o número que está armazenado na variável contador;
    • define o valor de contador para contador – 1 e volta a repetir até que finalize as quatro repetições;
  • ao sair da repetição, mostrar o ícone quadriculado.

enquanto...


 O bloco de repetição enquanto verdadeiro permite que você continue repetindo algum código até que uma condição seja atendida. Esse bloco contém uma expressão booleana cujo valor é testado no início do laço. Se a expressão for falsa, os comando dentro do laço serão executados. Quando o último bloco do laço for executado, o laço será reiniciado e a expressão será testada novamente. Se a expressão continuar sendo falsa, os blocos dentro do laço serão executados novamente. Esse ciclo se repete até que a expressão de teste se torne verdadeira. Quando isso ocorrer  os blocos dentro do laço serão ignorados e o programa prosseguirá para o comando imediatamente após o laço. Lembre-se que, se a condição de teste já for verdadeira antes do programa executar o laço, logo na primeira vez, os comando do laço não serão executados.

A substituição do soquete ou parâmetro verdadeiro permite estabelecer um pouco de lógica e a construção de uma declaração adequada ao propósito de seu programa.

Vamos analisar o código:

  • ele irá mostrar a string “Pressione A” até que você pressione o Botão A.
  • Ao pressionar o Botão A, o fluxo do código irá entrar no SE … ENTÃO e ocorrerá a mudança do valor da variável pressionado para 1, tornando falso a condição pressionado = 0;
  • desta forma, o programa continuará para mostrar o ícone quadriculado.

O bloco enquanto verdadeiro tem uma vasta aplicabilidade.  Digamos que você esteja criando um jogo de quiz. Se a resposta do jogador estiver incorreta, a mesma pergunta será feita novamente para que o jogador tenha outras chances, até que ele possa acertar.  É evidente que o bloco repetir .. vezes não é adequado para esta tarefa porque não temos como prever quantas vezes serão necessárias para o jogador fornecer a resposta correta, pode ser que a primeira seja a correta, não sendo mais necessário continuar a repetição.

percorrendo strings

Neste tópico iremos abordar a possibilidade de “caminhar” por uma string, criar matrizes e se movimentar por elas através dos blocos de repetição.

A seguir detalhamos as características e uso destas estruturas e ao final está disponível um vídeo detalhando o projeto desenvolvido.

para ... de ... a ...

O bloco para … de … a … é usado para executar seu conteúdo o número de vezes que você descreve usando uma variável de índice. No exemplo acima índice é a variável que leva o valor do item dentro da sequência em cada iteração. O laço continua até chegarmos ao último item da sequência (4) iniciando em ZERO. Em nosso exemplo ao pressionar o Botão A, o programa irá mostrar a sequencia 0, 1, 2, 3 e 4 no display de LED´s.  

para elemento ... de ...

O bloco para elemento … de … tem função similar ao bloco anterior. Este bloco percorre objetos iterativos, por exemplo, uma lista ou matriz. Pode ter qualquer número de itens e eles podem ser de tipos diferentes (número inteiro, strings…). Podemos usar um operador de índice para acessar um item de uma lista. Os índices começam em 0, portanto, uma lista com 5 (cinco) elementos terá um índice de 0 a 4.  No makecode temos uma categoria  de bloco, em avançado, para tratar deste tema. 

Em nosso exemplo, ao pressionar o Botão A iremos criar a variável alfabeto contendo todas as letras do alfabeto, em seguida iremos usar um bloco que retorna qual é o tamanho desta string, este valor será armazenado em uma outra variável chamada qtdeletras.

O objetivo de saber a quantidade de letras, é usar este valor no bloco de repetição para índice de 0 a qtdeletras, uma vez dentro deste bloco de repetição o programa irá mostrar o item (letra) que corresponde ao índice em seguida iremos adicionar letra a letra, sequencialmente, em uma lista.

Agora temos uma matriz ou lista, contendo cada uma das letras do alfabeto. Podemos usar esta lista para diversos fins, por exemplo, criptografar uma mensagem, mas isto faremos mais adiante em outra lição.

Continuando nosso exemplo, criamos uma outra funcionalidade para ao pressionar o Botão B, inverter a ordem da lista, então usamos o bloco de repetição para elemento valor de lista, para percorrer e mostrar o valor correspondente.

Por exemplo, a letra H está posicionada na matriz LISTA e pode ser localizada no índice 7. Em resumo, o que faremos é percorrer lista através do valor de índice.

 

Abaixo estamos compartilhando o projeto e o vídeo para você acessar, testar, analisar e aprender mais sobre o uso deste poderoso bloco.

Rolar para cima