Capítulo 04: Interação e Sensores (Entrada de Dados com Pergunte e Espere)

🎯 Objetivo da Aula

Até agora, nossos programas operavam com valores pré-definidos no código. No entanto, um sistema logístico real precisa receber dados do mundo exterior digitados pelos usuários: o nome do motorista, o número da nota fiscal e o peso da carga. No Scratch, a entrada de dados pelo teclado é realizada através dos Sensores de Pergunta.

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

  1. Compreender o ciclo fundamental de Entrada, Processamento e Saída (IPO) na programação visual.
  2. Utilizar o bloco 🔷 pergunte [texto] e espere da categoria Sensores.
  3. Capturar o valor digitado através do sensor oval 🔷 resposta.
  4. Salvar imediatamente a resposta em variáveis de memória dedicadas.
  5. Combinar textos e variáveis utilizando o operador de concatenação 🟢 junte [texto 1] com [texto 2].

📥 Material de Apoio e Roteiro de Blocos:


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

Situação: A portaria central da FastLog substituiu o atendimento manual em prancheta por um Totem Digital de Autoatendimento. Ao chegar com a carreta, o motorista estaciona em frente ao totem e digita suas informações pelo teclado interativo.

Missão: Você deve programar o totem de autoatendimento para:

  1. Perguntar o Nome Completo do motorista.
  2. Perguntar a Placa do Veículo.
  3. Perguntar a Cidade de Origem.
  4. Emitir uma mensagem personalizada na tela: “Acesso autorizado para [Nome], placa [Placa], vindo de [Cidade]!”.

🧠 Fundamentos: O Ciclo de Entrada e Saída no Scratch

1. Como Funciona o Bloco pergunte e espere?

Quando o Scratch executa o bloco 🔷 pergunte [...] e espere:

  1. Uma barra de digitação retangular surge na parte inferior do Palco.
  2. A execução do script pausa completamente (espera).
  3. Assim que o usuário digita o texto e aperta Enter (ou clica no botão azul de check), o que foi digitado é armazenado dentro do sensor 🔷 resposta.
  4. O script continua sua execução para a linha seguinte.
graph TD
    A["Gatilho: quando clicar em 🏁"] --> B["Entrada: pergunte 'Qual é o seu nome?' e espere"]
    B --> C["Usuário digita: 'Carlos Silva' e pressiona Enter"]
    C --> D["Captura: mude [Nome_Motorista] para (resposta)"]
    D --> E["Concatenação: junte 'Bem-vindo, ' com (Nome_Motorista)"]
    E --> F["Saída: diga a mensagem montada no Palco"]
    
    style A fill:#f39c12,stroke:#fff,color:#fff
    style B fill:#3498db,stroke:#fff,color:#fff
    style D fill:#e67e22,stroke:#fff,color:#fff
    style E fill:#2ecc71,stroke:#fff,color:#fff
    style F fill:#8e44ad,stroke:#fff,color:#fff

2. A Armadilha da Variável Volátil resposta

Cuidado com Perguntas Consecutivas!
O sensor 🔷 resposta armazena apenas a última resposta digitada no teclado. Se você fizer duas perguntas seguidas sem salvar a primeira em uma variável, o primeiro dado será apagado para sempre!

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
// ❌ FORMA ERRADA (O primeiro dado é perdido!):
pergunte [Qual seu nome?] e espere
pergunte [Qual sua placa?] e espere
diga (resposta) // Vai falar apenas a placa! O nome sumiu!

// ✅ FORMA CORRETA (Salvando em variáveis seguras):
pergunte [Qual seu nome?] e espere
mude [Nome_Motorista v] para (resposta) // Salvo na memória!
pergunte [Qual sua placa?] e espere
mude [Placa_Veiculo v] para (resposta) // Salvo na memória!

3. Concatenação de Textos com o Operador junte

Na categoria 🟢 Operadores, o bloco junte [apple] com [banana] é o equivalente visual à concatenação de strings (+ ou & no Excel/VBA). Para juntar três ou mais palavras, podemos aninhar blocos de junção:

$$\text{Mensagem} = \text{junte } (\text{“Olá, “} \text{ com } (\text{junte } (\text{Nome}) \text{ com } \text{”!”}))$$


📖 Exemplo Guiado: Totem de Recepção da Portaria

Passo a Passo no Scratch 3.0:

  1. Crie as variáveis globais: Nome_Motorista e Placa_Veiculo.
  2. Adicione um ator representando o Totem ou Atendente da Guarita.
  3. Arraste os blocos a seguir para a área de código:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
quando clicar em 🏁
diga [Iniciando Totem de Autoatendimento FastLog...] por (2) segundos
pergunte [Por favor, digite seu nome completo:] e espere
mude [Nome_Motorista v] para (resposta)

pergunte [Digite a placa da carreta (ex: ABC-1234):] e espere
mude [Placa_Veiculo v] para (resposta)

diga (junte [Crachá gerado para: ] (Nome_Motorista)) por (3) segundos
diga (junte [Veículo autorizado: ] (Placa_Veiculo)) por (3) segundos

🛠️ Prática Obrigatória 1: Cálculo do Frete com Entrada de Peso

O Desafio:

Crie um simulador de cotação de frete no totem:

  1. Crie as variáveis: Peso_Carga e Valor_Frete.
  2. Pergunte ao motorista: [Quantos kg de carga você está transportando?].
  3. Salve em Peso_Carga.
  4. Calcule o valor do frete considerando a tarifa fixa de R$ 2,50 por kg: mude [Valor_Frete v] para ((Peso_Carga) * (2.5)) (usando o operador de multiplicação verde *).
  5. Exiba o valor final com a mensagem: [Valor total do frete: R$ ] concatenado com a variável Valor_Frete.

🛠️ Prática Obrigatória 2: Formulário Completo de Romaneio

Expanda o totem para cadastrar o romaneio completo:

  1. Solicite:
    • Nome da Empresa Contratante
    • Quantidade de Paletes
    • Número da Nota Fiscal
  2. Armazene em 3 variáveis separadas.
  3. Exiba um resumo completo em balões de fala sequenciais ou em um único texto concatenado.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo do projeto com o nome: Atividade_04_SeuNome_SeuSobrenome.sb3.
  2. Teste digitando nomes diferentes no totem e veja se os dados são exibidos corretamente.
  3. No Microsoft Teams, envie na tarefa “Scratch Cap 04 - Entrada de Dados e Sensores”.
  4. Clique em Entregar (Turn In).

💡 Checkpoint de Lógica & Engenharia de Software

Você acabou de dominar o conceito de Captura de Strings e I/O (Input/Output). Todo sistema de interface (como sites web em HTML/React, formulários em PowerApps ou consoles de ERP) depende dessa mesma estrutura: capturar a entrada do usuário, validar e converter para variáveis de processamento.


🔥 Desafio de Fixação: Calculadora de Consumo de Diesel

Pergunte a distância da viagem em km e pergunte quantos litros de diesel o caminhão consumiu. Calcule a média de consumo em km/l com o operador verde / ((km) / (litros)) e exiba: [A média de consumo foi de X km/l].


🔑 Gabarito de Código (Blocos do Scratch)

Prática 1:

1
2
3
4
5
6
[Ator: Totem]
quando clicar em 🏁
pergunte [Quantos kg de carga você está transportando?] e espere
mude [Peso_Carga v] para (resposta)
mude [Valor_Frete v] para ((Peso_Carga) * (2.5))
diga (junte [Valor total do frete: R$ ] (Valor_Frete)) por (4) segundos

Prática 2:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
[Ator: Totem]
quando clicar em 🏁
pergunte [Qual o nome da empresa contratante?] e espere
mude [Empresa v] para (resposta)
pergunte [Quantos paletes estão no romaneio?] e espere
mude [Qtd_Paletes v] para (resposta)
pergunte [Qual o número da Nota Fiscal?] e espere
mude [Numero_NF v] para (resposta)

diga [--- RESUMO DO ROMANEIO ---] por (2) segundos
diga (junte [Cliente: ] (Empresa)) por (2.5) segundos
diga (junte (junte [Carga: ] (Qtd_Paletes)) [ paletes]) por (2.5) segundos
diga (junte [Nota Fiscal: #] (Numero_NF)) por (2.5) segundos

Desafio:

1
2
3
4
5
6
7
8
[Ator: Painel_Bordo]
quando clicar em 🏁
pergunte [Digite a distância percorrida em km:] e espere
mude [Distancia_Km v] para (resposta)
pergunte [Digite o total de litros de diesel abastecidos:] e espere
mude [Litros_Diesel v] para (resposta)
mude [Media_KmL v] para ((Distancia_Km) / (Litros_Diesel))
diga (junte (junte [A média de consumo foi de ] (Media_KmL)) [ km/l]) por (4) segundos

📥 Download do Roteiro Completo desta Aula:
Baixe o arquivo consolidado Capitulo_04.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. O que acontece no Palco quando o bloco pergunte [...] e espere é executado?
  2. Por que é perigoso fazer duas perguntas (pergunte e espere) seguidas sem salvar a resposta da primeira em uma variável?
  3. Qual bloco/sensor oval armazena o que o usuário digitou após um pergunte e espere?
  4. Para que serve o operador junte na categoria Operadores?
  5. No Exemplo Guiado, quais são os nomes das duas variáveis globais criadas para armazenar os dados do motorista?
  6. Na Prática Obrigatória 1, qual é a tarifa fixa (em R$ por kg) usada para calcular o Valor_Frete?
  7. Na Prática Obrigatória 1, qual operador matemático é usado para multiplicar Peso_Carga pela tarifa?
  8. Na Prática Obrigatória 2, quais três dados são solicitados ao motorista para montar o romaneio completo?
  9. Segundo o Checkpoint, que sigla em inglês resume o conceito de “Captura de Strings” aplicado nesta aula?
  10. Como podemos concatenar três ou mais textos usando o operador junte, que só aceita dois parâmetros de cada vez?