Capítulo 06: Condicionais Compostas (O Bloco 'Se Então Senão')

🎯 Objetivo da Aula

Na vida real e nas operações de negócios, as decisões raramente terminam em “fazer algo ou não fazer nada”. Na maioria das vezes, temos duas alternativas mutuamente exclusivas: se a mercadoria estiver aprovada, libere para embarque; caso contrário (senão), envie para a quarentena de auditoria.

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

  1. Compreender o funcionamento da bifurcação completa com o bloco 🟠 se <condição> então ... senão.
  2. Compreender por que o senão é mais seguro, elegante e eficiente do que usar dois blocos se separados.
  3. Implementar regras de negócio com limites numéricos e tolerâncias de carga.
  4. Construir uma Balança Rodoviária Inteligente de Triagem de Cargas.

📥 Material de Apoio e Roteiro de Blocos:


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

Situação: As carretas que chegam ao terminal da FastLog passam pela balança eletrônica de entrada. A lei de trânsito estipula que a capacidade máxima por eixo para aquele tipo de carreta é de 15.000 kg.

  • Se o peso for menor ou igual a 15.000 kg: O caminhão é considerado Regular e o semáforo fica verde.
  • Senão (se ultrapassar 15.000 kg): O caminhão é classificado com Sobrecarga, o semáforo fica vermelho, a cancela permanece travada e uma taxa de destombamento de R$ 500,00 é aplicada.

Missão: Programar a lógica completa da balança no Scratch, garantindo que o sistema tome uma das duas atitudes de forma 100% automática.


🧠 Fundamentos: A Estrutura se então senão

1. A Bifurcação Completa no Scratch

O bloco 🟠 se então senão divide o fluxo de execução em dois caminhos opostos:

graph TD
    A["Início: Captura Peso do Veículo"] --> B{"Condição Hexagonal:<br/>Peso <= 15000?"}
    B -- "VERDADEIRO" --> C["Caminho ENTÃO:<br/>1. Semáforo Verde<br/>2. Mensagem: Trânsito Liberado!"]
    B -- "FALSO" --> D["Caminho SENÃO:<br/>1. Semáforo Vermelho<br/>2. Mensagem: Bloqueio por Sobrecarga!"]
    C --> E["Fim da Verificação"]
    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
  • Ramo “Então”: É executado única e exclusivamente se o teste hexagonal for Verdadeiro.
  • Ramo “Senão”: É executado única e exclusivamente se o teste hexagonal for Falso. O computador nunca executará os dois blocos ao mesmo tempo!

2. Por que Não Usar Dois Blocos se Separados?

EstruturaComportamento no ScratchVeredito
Dois se independentesO Scratch faz dois testes no processador. Se a variável mudar no meio do caminho, pode gerar comportamentos inesperados.⚠️ Ineficiente e sujeito a bugs.
Um se então senãoO Scratch faz apenas um teste. Se for falso, ele cai direto no senão.✅ Padrão ouro da Engenharia de Software.

3. Prévia Rápida: O Operador não

O Exemplo Guiado a seguir usa o operador lógico não (categoria 🟢 Operadores) dentro da condição. Ele simplesmente inverte o resultado de uma condição: se o que está dentro dele for verdadeiro, não transforma em falso, e vice-versa. Assim, <não <(Peso_Veiculo) > (15000)>> significa “o peso NÃO é maior que 15000”, ou seja, o peso é menor ou igual a 15000. O Capítulo 07 vai aprofundar esse operador junto com e e ou.


📖 Exemplo Guiado: Balança Rodoviária de Entrada

Passo a Passo no Scratch 3.0:

  1. Crie a variável global: Peso_Veiculo.
  2. Adicione o ator Balança_Eletronica (ou desenhe uma plataforma cinza no chão).
  3. Arraste para a área de código:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
quando clicar em 🏁
pergunte [Digite o peso aferido na pesagem (kg):] e espere
mude [Peso_Veiculo v] para (resposta)

se <não <(Peso_Veiculo) > (15000)>> então
    mude o efeito [cor v] para (50) // Verde
    toque o som [Bell v]
    diga [PESAGEM CONFORME: Carga autorizada para descarga!] por (3) segundos
senão
    mude o efeito [cor v] para (0) // Vermelho
    toque o som [Buzz v]
    diga [BLOQUEIO POR EXCESSO DE PESO: Risco de infração viária!] por (3) segundos
fim

🛠️ Prática Obrigatória 1: Classificador de Turno de Trabalho

O Desafio:

Crie um sistema para liberar o crachá do operador com base no horário do turno:

  1. Crie a variável Hora_Atual.
  2. Pergunte: [Digite a hora atual (número inteiro de 0 a 23):].
  3. Se (Hora_Atual) < (18):
    • Exiba: [TURNO DIURNO: Acesso liberado ao galpão A.] por 3 segundos.
  4. Senão:
    • Exiba: [TURNO NOTURNO: Acesso especial liberado ao pátio B com adicional.] por 3 segundos.

🛠️ Prática Obrigatória 2: Política de Desconto por Volume

Crie um simulador para o setor comercial da FastLog:

  1. Pergunte a quantidade de caixas a serem enviadas e salve em Total_Caixas.
  2. Pergunte o valor bruto do frete e salve em Valor_Frete.
  3. Se (Total_Caixas) > (100):
    • O cliente ganha 10% de desconto no frete: mude [Valor_Final v] para ((Valor_Frete) * (0.9)).
    • Diga: [DESCONTO APLICADO: 10% concedido para grandes volumes!] por 3 segundos.
  4. Senão:
    • Sem desconto: mude [Valor_Final v] para (Valor_Frete).
    • Diga: [TARIFA REGULAR: Sem desconto para remessas abaixo de 100 caixas.] por 3 segundos.
  5. Exiba o Valor_Final na tela.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo do projeto com o nome: Atividade_06_SeuNome_SeuSobrenome.sb3.
  2. Teste cenários abaixo e acima de 15.000 kg para comprovar a alternância dos caminhos.
  3. No Microsoft Teams, envie na tarefa “Scratch Cap 06 - Condicionais Compostas”.
  4. Clique em Entregar (Turn In).

💡 Checkpoint de Lógica & Engenharia de Software

Você acabou de aplicar o conceito de Bifurcação Binária (Binary Branching). Esse é o mecanismo fundamental por trás de algoritmos de roteamento de pacotes na internet, aprovação de transações com cartão de crédito e validação de autenticação em bancos de dados.


🔥 Desafio de Fixação: Validador de Capacidade de Combustível

Pergunte o nível atual do tanque de diesel do caminhão em porcentagem (de 0 a 100). Se o tanque estiver com 30% ou mais, diga: [Nível de combustível seguro para viagem]. Senão, toque um alarme e diga: [REABASTECIMENTO OBRIGATÓRIO: Risco de pane seca na rodovia!].


🔑 Gabarito de Código (Blocos do Scratch)

Prática 1:

1
2
3
4
5
6
7
8
9
[Ator: Catraca]
quando clicar em 🏁
pergunte [Digite a hora atual (número inteiro de 0 a 23):] e espere
mude [Hora_Atual v] para (resposta)
se <(Hora_Atual) < (18)> então
    diga [TURNO DIURNO: Acesso liberado ao galpão A.] por (3) segundos
senão
    diga [TURNO NOTURNO: Acesso especial liberado ao pátio B com adicional.] por (3) segundos
fim

Prática 2:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
[Ator: Balcao_Comercial]
quando clicar em 🏁
pergunte [Digite o total de caixas a enviar:] e espere
mude [Total_Caixas v] para (resposta)
pergunte [Digite o valor bruto do frete R$:] e espere
mude [Valor_Frete v] para (resposta)

se <(Total_Caixas) > (100)> então
    mude [Valor_Final v] para ((Valor_Frete) * (0.9))
    diga [DESCONTO APLICADO: 10% concedido para grandes volumes!] por (3) segundos
senão
    mude [Valor_Final v] para (Valor_Frete)
    diga [TARIFA REGULAR: Sem desconto para remessas abaixo de 100 caixas.] por (3) segundos
fim
diga (junte [Valor final a pagar: R$ ] (Valor_Final)) por (3) segundos

Desafio:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
[Ator: Sensor_Tanque]
quando clicar em 🏁
pergunte [Nível atual de diesel no tanque (%):] e espere
mude [Nivel_Diesel v] para (resposta)
se <(Nivel_Diesel) > (29)> então
    toque o som [Chime v]
    diga [Nível de combustível seguro para viagem.] por (3) segundos
senão
    toque o som [Alert v] até o fim
    diga [REABASTECIMENTO OBRIGATÓRIO: Risco de pane seca na rodovia!] por (3) segundos
fim

📥 Download do Roteiro Completo desta Aula:
Baixe o arquivo consolidado Capitulo_06.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. Por que usar um único bloco se então senão é mais seguro e eficiente do que usar dois blocos se separados?
  2. Em que condição o ramo “Senão” de um bloco se então senão é executado?
  3. No Exemplo Guiado da balança rodoviária, qual é o peso limite (em kg) que separa um veículo “Regular” de um veículo com “Sobrecarga”?
  4. No Exemplo Guiado, que valor é usado no bloco mude o efeito [cor v] para para representar a pesagem “Conforme” (aprovada, cor verde)?
  5. Na Prática Obrigatória 1, qual é a hora limite que separa o “Turno Diurno” do “Turno Noturno”?
  6. Na Prática Obrigatória 2, qual porcentagem de desconto é aplicada quando o Total_Caixas é maior que 100?
  7. Na Prática Obrigatória 2, qual operador matemático e qual valor multiplicam o Valor_Frete para aplicar o desconto de 10%?
  8. Segundo o Checkpoint, cite dois exemplos reais de sistemas que usam o conceito de “Bifurcação Binária” (Binary Branching).
  9. No Exemplo Guiado, qual é o nome da variável global criada para armazenar o peso do veículo pesado na balança?
  10. Segundo a tabela do capítulo, quantos testes o Scratch realiza ao usar um único se então senão, comparado ao uso de dois blocos se independentes?