Capítulo 18: Transmissão de Mensagens (Comunicação Entre Atores)
🎯 Objetivo da Aula
Em um sistema complexo, os objetos não operam de forma isolada: quando um caminhão se aproxima da guarita, ele precisa avisar a cancela para que ela abra; quando a cancela abre, ela precisa avisar o semáforo para ficar verde; e quando a carreta estaciona na doca, ela precisa avisar os operadores de esteira para iniciar o descarregamento. No Scratch, a comunicação entre diferentes atores é realizada através da Transmissão de Mensagens (Broadcasting).
Ao final desta aula, você será capaz de:
- Compreender o padrão de mensageria Publicador/Assinante (Pub/Sub Pattern).
- Utilizar o bloco transmissor 🟡
transmita [mensagem]. - Compreender a diferença para o bloco síncrono 🟡
transmita [mensagem] e espere. - Utilizar os blocos receptores de escuta 🟡
quando eu receber [mensagem]. - Construir a Rede Integrada de Portaria, Semáforo e Cancela Automatizada da FastLog.
📥 Material de Apoio e Roteiro de Blocos:
- 📄 Roteiro Estruturado (.txt): Baixar Capitulo_18.txt (guia textual com a sequência de blocos)
- 📦 Exercícios Separados (.zip): Baixar Capitulo_18.zip
🏢 O Cenário Prático (Seu Desafio)
Situação: O pátio da FastLog possui três atores interdependentes:
- O Caminhão: Avança até a cancela e solicita abertura.
- A Cancela: Recebe a ordem, ergue a barra de segurança e avisa que o caminho está livre.
- O Semáforo: Ao ouvir que a cancela abriu, troca a luz para verde.
- O Caminhão: Ao ver a luz verde, cruza a portaria e, ao terminar de passar, avisa a cancela para fechar novamente.
Missão: Programar essa coreografia perfeita de atores utilizando exclusivamente troca de mensagens no Scratch.
🧠 Fundamentos: O Mecanismo de Mensageria no Scratch
1. O Conceito do “Rádio Walkie-Talkie”
Transmitir uma mensagem no Scratch é como dar uma ordem no rádio da empresa:
- O transmissor grita no rádio:
"LIBERAR_ENTRADA". - Todos os outros atores do projeto escutam a transmissão.
- Apenas os atores que possuem o bloco
quando eu receber [LIBERAR_ENTRADA]tomarão uma atitude!
graph TD
A["Ator: Caminhão"] -- "transmita [ABRIR_PORTAO]" --> B((Barramento de Mensagens do Scratch))
B --> C["Ator: Cancela<br/>(quando eu receber ABRIR_PORTAO)"]
B --> D["Ator: Semáforo<br/>(quando eu receber ABRIR_PORTAO)"]
C --> E["Gira barra 90 graus para cima"]
D --> F["Muda fantasia para Verde"]
style A fill:#2980b9,stroke:#fff,color:#fff
style B fill:#f1c40f,stroke:#fff,color:#000
style C fill:#27ae60,stroke:#fff,color:#fff
style D fill:#8e44ad,stroke:#fff,color:#fff2. transmita vs transmita e espere
| Bloco | Comportamento | Quando Usar? |
|---|---|---|
[transmita (msg)] | Dispara a mensagem e continua seu próprio código imediatamente (Assíncrono). | Quando a ação seguinte não depende do término da animação do outro ator. |
[transmita (msg) e espere] | Dispara a mensagem e pausa sua execução até que todos os receptores terminem suas ações (Síncrono). | Quando o caminhão só pode andar depois que a cancela tiver concluído 100% da abertura física! |
📖 Exemplo Guiado: O Sistema Integrado de Portaria
Passo a Passo no Scratch 3.0:
- Crie 3 atores:
Caminhao,CancelaeSemaforo. - Programe os scripts de cada um:
🛠️ Prática Obrigatória 1: Alerta Geral de Evacuação
O Desafio:
Crie um botão vermelho no palco chamado Botao_Panico:
- Quando este ator for clicado:
- Transmita a mensagem
"ALARME_GERAL".
- Transmita a mensagem
- No ator
Caminhao:quando eu receber [ALARME_GERAL]: Pare imediatamente de andar e diga[PARADA DE EMERGÊNCIA ATIVADA!].
- No ator
Sirene:quando eu receber [ALARME_GERAL]: Toque o som [Alert] e pisque a luz em vermelho.
🛠️ Prática Obrigatória 2: Notificação de Doca Pronta para Descarregamento
Crie a comunicação entre o caminhão e a doca de descarga:
- Quando o caminhão terminar de estacionar, faça-o transmitir
"CHEGUEI_NA_DOCA". - No ator
Operador_Doca:quando eu receber [CHEGUEI_NA_DOCA]:- Diga
[Iniciando conferência de romaneio e despaletização...]por 3 segundos. - Toque o som de abertura de baú.
- Diga
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo do projeto com o nome:
Atividade_18_SeuNome_SeuSobrenome.sb3. - Execute e observe a coordenação milimétrica entre o caminhão, a cancela e o semáforo.
- No Microsoft Teams, envie na tarefa “Scratch Cap 18 - Transmissão de Mensagens”.
- Clique em Entregar (Turn In).
💡 Checkpoint de Lógica & Engenharia de Software
Você acabou de aplicar o conceito de Arquitetura Orientada a Mensagens (Message-Oriented Middleware - MOM) e Barramento de Eventos (Event Bus). É exatamente assim que microsserviços em nuvem (AWS SNS/SQS, Google Cloud Pub/Sub e Apache Kafka) comunicam sistemas de pagamento com sistemas de separação em centros de distribuição da Amazon.
🔥 Desafio de Fixação: Troca de Telas (Menu Principal ➔ Pátio)
Crie um ator de tela inicial com o botão "INICIAR SIMULAÇÃO".
Ao ser clicado, ele transmite "COMEÇAR_TURNO".
O cenário troca de tela, o botão se esconde com 🟣 esconda e todos os caminhões e cancelas só aparecem com 🟣 mostre quando receberem essa mensagem!
🔑 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_18.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.
- Qual é a diferença de comportamento entre os blocos
transmita [mensagem]etransmita [mensagem] e espere, segundo os Fundamentos? - Qual bloco é usado por um ator para “escutar” e reagir a uma mensagem transmitida por outro ator?
- No Exemplo Guiado, quais são as duas mensagens transmitidas ao longo do fluxo entre o Caminhão, a Cancela e o Semáforo?
- No Exemplo Guiado, qual variante do bloco de transmissão o Caminhão usa para solicitar a abertura da cancela, e por que essa variante é necessária nesse ponto do script?
- Na Prática Obrigatória 1, qual é o nome do ator que, ao ser clicado, transmite a mensagem
"ALARME_GERAL"? - Na Prática Obrigatória 1, o que o ator
Caminhaodeve fazer ao receber a mensagem"ALARME_GERAL"? - Na Prática Obrigatória 2, qual mensagem o caminhão transmite ao terminar de estacionar, e qual ator é responsável por recebê-la?
- Segundo o Checkpoint de Lógica & Engenharia de Software, a que padrão de arquitetura de mensageria o mecanismo de transmissão do Scratch é comparado, e quais exemplos de serviços de nuvem são citados?
- Segundo os Fundamentos (a analogia do “Rádio Walkie-Talkie”), quem escuta a transmissão de uma mensagem, e quem de fato toma uma atitude?
- No Exemplo Guiado, quais são as duas fantasias entre as quais o ator
Cancelaalterna, e em qual mensagem recebida cada uma delas é ativada?