Capítulo 05: Condicionais Simples (O Bloco 'Se Então' e Sensores)

🎯 Objetivo da Aula

Até o momento, todos os nossos programas executavam comandos cegamente em linha reta. No entanto, o verdadeiro poder da computação surge quando o sistema ganha a capacidade de Tomar Decisões: avaliar uma condição e decidir se deve ou não executar uma ação.

Ao final desta aula, você será capaz de:

  1. Compreender o funcionamento do desvio condicional simples com o bloco 🟠 se <condição> então.
  2. Utilizar operadores de comparação hexagonais verdes: ( ) > ( ), ( ) < ( ) e ( ) = ( ).
  3. Integrar Sensores Físicos da categoria 🔷 Sensores, como <tocando em [ator]?> e <tocando na cor [#]?>.
  4. Construir uma Cancela Automática com Sensor de Aproximação.

📥 Material de Apoio e Roteiro de Blocos:


🏢 O Cenário Prático (Seu Desafio)

Situação: No pátio de manobras da FastLog, os caminhões precisam estacionar em frente à guarita de segurança. Se o motorista se aproximar demais da cancela fechada, o sistema deve acionar o freio de segurança e emitir um aviso sonoro no painel da portaria para evitar colisões.

Missão: Programar o caminhão e o sensor da cancela para monitorar a distância física e frear o veículo caso a condição de segurança seja violada.


🧠 Fundamentos: Como o Scratch Toma Decisões?

1. A Estrutura do Bloco se então

O bloco 🟠 se então possui um encaixe hexagonal (com pontas angulares). Dentro desse encaixe, só é permitido inserir blocos hexagonais, que retornam sempre um valor booleano: Verdadeiro (True) ou Falso (False).

graph TD
    A["Início do Script"] --> B{"Condição Hexagonal:<br/>Distância < 50 ou Tocando na Cancela?"}
    B -- "VERDADEIRO" --> C["Executa os Blocos Internos<br/>(Frear caminhão e tocar buzina)"]
    B -- "FALSO" --> D["Ignora e pula os blocos internos"]
    C --> E["Continua o fluxo do programa"]
    D --> E
    
    style B fill:#f39c12,stroke:#fff,stroke-width:2px,color:#fff
    style C fill:#27ae60,stroke:#fff,stroke-width:2px,color:#fff
    style D fill:#c0392b,stroke:#fff,stroke-width:2px,color:#fff
  • Se a condição for Verdadeira: O Scratch executa os comandos abrigados dentro da “boca” do bloco se.
  • Se a condição for Falsa: O Scratch pula completamente o conteúdo interno e segue em frente.

2. Os Blocos Hexagonais de Comparação (🟢 Operadores)

  • <(Valor 1) > (Valor 2)>: Retorna verdadeiro se o primeiro valor for estritamente maior.
  • <(Valor 1) < (Valor 2)>: Retorna verdadeiro se o primeiro valor for estritamente menor.
  • <(Valor 1) = (Valor 2)>: Retorna verdadeiro se os dois valores forem exatamente iguais.

3. Sensores Físicos de Pátio (🔷 Sensores)

O Scratch possui sensores visuais poderosos que detectam a interação física entre atores no Palco:

  • <tocando em [mouse-ponteiro / ator]?>: Detecta se a imagem do ator tocou em outro objeto.
  • <tocando na cor [#]?>: Detecta se o ator encostou em uma cor específica do cenário (ex: uma linha amarela pintada no chão).
  • <distância até [ator]>: Retorna um número com a distância em pixels entre os dois centros dos atores.

📖 Exemplo Guiado: Sensor de Parada na Linha de Retenção

Passo a Passo no Scratch 3.0:

  1. Posicione o ator Caminhao_Entrega no lado esquerdo do palco ($x: -200, y: 0$).
  2. Crie uma linha vermelha no cenário ou um ator Linha_Parada na posição $x: 50, y: 0$.
  3. No caminhão, monte o script a seguir:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
quando clicar em 🏁
vá para x: (-200) y: (0)
diga [Avançando em direção à portaria...] por (1.5) segundos

mova (150) passos

// Teste de Condição
se <tocando em [Linha_Parada v]?> então
    toque o som [Car Brake v] até o fim
    diga [FRENAGEM ACIONADA: Veículo parado na linha de retenção!] por (3) segundos
fim

🛠️ Prática Obrigatória 1: Alerta de Estoque Crítico de Paletes

O Desafio:

Crie um sistema que monitore o saldo do almoxarifado:

  1. Crie a variável Estoque_Atual.
  2. Pergunte ao operador: [Digite a quantidade de paletes restantes:] e salve em Estoque_Atual.
  3. Se (Estoque_Atual) < (50):
    • Mude a cor do ator para vermelho: mude o efeito [cor v] para (0).
    • Toque um som de alerta: toque o som [Alert v].
    • Exiba a mensagem: [ALERTA DE SEGURANÇA: Estoque abaixo do limite mínimo de 50 paletes!] por 3 segundos.

🛠️ Prática Obrigatória 2: Detector de Veículo Vazio

Crie as variáveis Peso_Bruto e Tara_Caminhao (peso do caminhão sem carga = 3.000 kg).

  1. Pergunte o peso medido na balança rodoviária e armazene em Peso_Bruto.
  2. Se (Peso_Bruto) = (3000):
    • O ator deve emitir a mensagem: [AVISO: Veículo registrado sem carga (TARA PURA). Liberado para pátio de espera.] por 3 segundos.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo do projeto com o nome: Atividade_05_SeuNome_SeuSobrenome.sb3.
  2. Teste executando com valores abaixo e acima de 50 para comprovar que o se só ativa na condição certa.
  3. No Microsoft Teams, envie na tarefa “Scratch Cap 05 - Condicionais Simples”.
  4. Clique em Entregar (Turn In).

💡 Checkpoint de Lógica & Engenharia de Software

Você acabou de aplicar o conceito de Gatilhos Condicionais e Triggers. Em sistemas de Internet das Coisas (IoT) em armazéns modernos (como sensores RFID e leitoras a laser de esteiras), microcontroladores Arduino e ESP32 usam essa exata lógica if (sensor == TRUE) para disparar atuadores mecânicos.


🔥 Desafio de Fixação: Radar de Velocidade do Pátio

No pátio da FastLog, o limite máximo é de 20 km/h. Pergunte ao operador a velocidade registrada pelo radar do pátio. Se a velocidade for estritamente maior que 20, aplique uma multa de R$ 150,00 e diga: [MULTA: Velocidade acima do limite permitido no pátio!].


🔑 Gabarito de Código (Blocos do Scratch)

Prática 1:

1
2
3
4
5
6
7
8
9
[Ator: Painel_Estoque]
quando clicar em 🏁
pergunte [Digite a quantidade de paletes restantes:] e espere
mude [Estoque_Atual v] para (resposta)
se <(Estoque_Atual) < (50)> então
    mude o efeito [cor v] para (0)
    toque o som [Alert v] até o fim
    diga [ALERTA DE SEGURANÇA: Estoque abaixo do limite mínimo de 50 paletes!] por (3) segundos
fim

Prática 2:

1
2
3
4
5
6
7
8
[Ator: Balanca]
quando clicar em 🏁
mude [Tara_Caminhao v] para (3000)
pergunte [Digite o peso aferido na balança (kg):] e espere
mude [Peso_Bruto v] para (resposta)
se <(Peso_Bruto) = (Tara_Caminhao)> então
    diga [AVISO: Veículo registrado sem carga (TARA PURA). Liberado para pátio de espera.] por (3) segundos
fim

Desafio:

1
2
3
4
5
6
7
8
9
[Ator: Radar_Patio]
quando clicar em 🏁
pergunte [Velocidade capturada pelo radar (km/h):] e espere
mude [Velocidade v] para (resposta)
se <(Velocidade) > (20)> então
    toque o som [Siren v] até o fim
    diga (junte [MULTA POR EXCESSO: ] (Velocidade)) por (2) segundos
    diga [Veículo autuado em R$ 150,00 por violar velocidade máxima de 20 km/h!] por (3) segundos
fim

📥 Download do Roteiro Completo desta Aula:
Baixe o arquivo consolidado Capitulo_05.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.

  1. Que formato tem o encaixe do bloco se então, e que tipo de blocos podem ser inseridos nele?
  2. O que acontece com os blocos internos do se então quando a condição é Falsa?
  3. Qual é a diferença entre os operadores de comparação >, < e =?
  4. Cite os três sensores físicos apresentados na seção “Sensores Físicos de Pátio”.
  5. No Exemplo Guiado, qual bloco de sensor é usado para detectar se o caminhão tocou o ator Linha_Parada?
  6. Na Prática Obrigatória 1, qual é o valor limite de Estoque_Atual que dispara o alerta de segurança (menor que quanto)?
  7. Na Prática Obrigatória 2, qual é o valor (em kg) da Tara_Caminhao usada para verificar se o veículo está vazio?
  8. Segundo o Checkpoint, que microcontroladores foram citados como exemplo de uso da lógica if (sensor == TRUE) em sistemas de IoT?
  9. No Exemplo Guiado, quantos passos o caminhão avança antes de o teste de condição ser verificado?
  10. Na Prática Obrigatória 1, qual bloco é usado para mudar a cor do ator quando o estoque está abaixo do limite?