Capítulo 10: Repita Até Que (Loops Condicionais e Sentinelas)
🎯 Objetivo da Aula
Nem todos os laços de repetição devem rodar para sempre. Em processos operacionais, executamos uma tarefa até que uma meta seja atingida: descarregamos caixas até que o caminhão fique vazio; insistimos na pergunta de senha até que o operador acerte o código. No Scratch, usamos o bloco repita até que <condição>.
Ao final desta aula, você será capaz de:
- Compreender a lógica de funcionamento do laço
repita até que <condição>. - Compreender a inversão da condição: o Scratch repete enquanto a condição for Falsa e interrompe o laço assim que ela se torna Verdadeira.
- Implementar Travas de Validação Defensiva de senhas e dados.
- Construir uma Manobra Gradual de Atracamento em Doca com Sensor de Parada.
📥 Material de Apoio e Roteiro de Blocos:
- 📄 Roteiro Estruturado (.txt): Baixar Capitulo_10.txt (guia textual com a sequência de blocos)
- 📦 Exercícios Separados (.zip): Baixar Capitulo_10.zip
🏢 O Cenário Prático (Seu Desafio)
Situação: Para ligar o motor elétrico da empilhadeira autônoma do armazém da FastLog, o operador deve digitar o PIN de segurança ("1234"). Se ele errar, o sistema não pode prosseguir: ele deve emitir um bipe de erro e insistir na pergunta até que a senha correta seja inserida.
Missão: Programar a rotina de autenticação do operador e o avanço gradual da empilhadeira de 5 em 5 passos até que ela alcance o palete na prateleira.
🧠 Fundamentos: Como Funciona o repita até que?
1. A Lógica do “Repeat UNTIL”
Ao contrário do comando enquanto (que repete enquanto a condição for verdadeira), o bloco 🟠 repita até que do Scratch foi desenhado com foco na Condição de Parada:
graph TD
A["Entra no Laço: repita até que <condição>"] --> B{"A condição hexagonal é VERDADEIRA?"}
B -- "NÃO (Falso)" --> C["Executa o bloco interno<br/>(Pergunta senha ou move passos)"]
C --> B
B -- "SIM (Verdadeiro)" --> D["INTERROMPE O LAÇO IMEDIATAMENTE"]
D --> E["Executa o próximo comando abaixo do laço"]
style B fill:#f39c12,stroke:#fff,stroke-width:2px,color:#fff
style C fill:#3498db,stroke:#fff,stroke-width:2px,color:#fff
style D fill:#27ae60,stroke:#fff,stroke-width:2px,color:#fff- Enquanto for Falso: O Scratch continua repetindo os blocos internos.
- No momento em que vira Verdadeiro: O Scratch pula imediatamente para fora do laço!
2. A Armadilha do Loop Infinito Involuntário
Cuidado para não criar um loop que nunca para!
Para que o bloco repita até que <(resposta) = [1234]> consiga sair um dia, o bloco 🔷 pergunte ... e espere DEVE estar DENTRO do laço. Se você colocar a pergunta do lado de fora, a resposta nunca mudará e o programa travará eternamente!
📖 Exemplo Guiado: Autenticação de Operador de Empilhadeira
Passo a Passo no Scratch 3.0:
- Crie a variável:
Tentativas_Senha. - Adicione o ator
Terminal_Logine insira o script abaixo:
🛠️ Prática Obrigatória 1: Aproximação Gradual de Manobra na Doca
O Desafio:
Crie uma manobra gradual e suave:
- Posicione o
Caminhaoem $x: -200, y: 0$. - Posicione o ator
Doca_Cargaem $x: 100, y: 0$. - Use o bloco:
repita até que <tocando em [Doca_Carga v]?>:mova (5) passosespere (0.05) segundos
- Fora do laço (quando encostar na doca):
- Toque o som de freio:
toque o som [Car Brake v]. - Diga:
[Atracamento concluído com sucesso! Iniciar descarregamento.]por 3 segundos.
- Toque o som de freio:
🛠️ Prática Obrigatória 2: Abastecimento de Tanque até o Nível Máximo
O Desafio:
Simule a bomba de abastecimento de diesel:
- Crie a variável
Nivel_Tanqueinicializada em20(litros). - Use o laço
repita até que <(Nivel_Tanque) > (99)>:- Adicione 10 litros ao tanque:
adicione (10) a [Nivel_Tanque v]. - Toque o som de clique:
toque o som [Pop v]. - Diga (junte
[Abastecendo... ]comNivel_Tanque). - Espere
0.3segundos.
- Adicione 10 litros ao tanque:
- Fora do laço, avise:
[Tanque 100% cheio! Desligar mangueira.].
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo do projeto com o nome:
Atividade_10_SeuNome_SeuSobrenome.sb3. - Teste errando a senha de propósito para comprovar que o sistema insiste.
- No Microsoft Teams, envie na tarefa “Scratch Cap 10 - Laços Condicionais”.
- Clique em Entregar (Turn In).
💡 Checkpoint de Lógica & Engenharia de Software
Você acabou de aplicar o conceito de Validação Sentinela e Tratamento de Polling. Em conexões de rede (como requisições HTTP e conexão via Bluetooth de coletores de dados de almoxarifado), os sistemas enviam pacotes repetidamente até que o servidor retorne um código de sucesso (HTTP 200 OK).
🔥 Desafio de Fixação: Bloqueio por 3 Erros Consecutivos
Aprimore o validador de senha: se o operador errar 3 vezes, encerre o laço com uma trava de segurança e diga: [TERMINAL BLOQUEADO: Contate a chefia de segurança patrimonial!] usando o comando 🟠 pare [este script].
🔑 Gabarito de Código (Blocos do Scratch)
Prática 1:
Prática 2:
Desafio:
📥 Download do Roteiro Completo desta Aula:
Baixe o arquivo consolidado Capitulo_10.txt ou o pacote compactado (.zip) com os scripts e desafios da aula.
📝 Atividade Extra: Questionário de Fixação (Caderno)
Instruções: Responda no caderno, de próprio punho, as 10 perguntas abaixo com base no que foi estudado neste capítulo. Ao concluir, leve o caderno até o professor para correção e visto.
- No laço
repita até que <condição>, em que momento exatamente o Scratch interrompe a repetição? - Por que o bloco
pergunte ... e espereDEVE estar dentro do laçorepita até que <(resposta) = [1234]>, e não fora dele? - No Exemplo Guiado, qual é o PIN correto de 4 dígitos usado para liberar o motor da empilhadeira?
- No Exemplo Guiado, qual é o nome da variável que conta o número de tentativas incorretas de senha?
- Na Prática Obrigatória 1, qual é a condição de parada (bloco hexagonal) do laço que move o Caminhao até a Doca_Carga?
- Na Prática Obrigatória 1, quantos passos o caminhão avança a cada repetição do laço?
- Na Prática Obrigatória 2, com que valor a variável Nivel_Tanque é inicializada, e qual é a condição de parada do laço de abastecimento?
- Segundo o Checkpoint, a que código de resposta HTTP o capítulo compara a lógica de “repetir até que o servidor confirme sucesso”?
- Na Prática Obrigatória 2, quantos litros são adicionados ao tanque a cada repetição do laço?
- Enquanto a condição do
repita até quefor Falsa, o que o Scratch faz com os blocos internos do laço?