Capítulo 02: Variáveis Visuais na Memória (Placares e Estoques)

🎯 Objetivo da Aula

Em qualquer sistema de gestão empresarial, os dados não são estáticos: eles mudam a cada segundo conforme carretas chegam e partem. No Scratch, assim como em linguagens profissionais como Python ou Java, utilizamos Variáveis para que o computador se “lembre” de números, textos e estados do sistema.

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

  1. Compreender o que é uma Variável na Memória e como o Scratch a exibe no Palco como um placar.
  2. Dominar a criação de variáveis na categoria 🔴 Variáveis.
  3. Diferenciar Escopo Global (Para todos os atores) de Escopo Local (Apenas para este ator).
  4. Utilizar com precisão os blocos de Atribuição Direta (mude para) e Incremento Acumulativo (adicione a).

📥 Material de Apoio e Roteiro de Blocos:


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

Situação: O gerente de operações do armazém central da FastLog precisa de um painel de monitoramento no Palco (Dashboard Visual) que exiba continuamente:

  • A quantidade de Paletes em Estoque disponíveis no galpão.
  • O Faturamento Bruto Acumulado das taxas de descarga do dia.
  • A Capacidade Máxima do Armazém (limite de 500 paletes).

Missão: Você deve criar as variáveis de controle do armazém, programar a inicialização do sistema quando a bandeira verde for clicada e criar a rotina de entrada de cargas.


🧠 Fundamentos: Como as Variáveis Funcionam no Scratch?

1. A Analogia da Gaveta com Placar

No Scratch, uma variável é uma gaveta da memória RAM que possui:

  • Um Nome único (ex: Estoque_Paletes).
  • Um Valor armazenado (ex: 150).
  • Um Monitor Visual no Palco: uma caixinha retangular que os operadores conseguem acompanhar em tempo real.
graph TD
    A["Gatilho: quando clicar em 🏁"] --> B["Inicialização: mude (Estoque_Paletes) para (100)"]
    B --> C["Evento: Nova carreta descarrega 20 paletes"]
    C --> D["Incremento: adicione (20) a (Estoque_Paletes)"]
    D --> E["Placar no Palco exibe: 120 paletes"]
    
    style A fill:#f39c12,stroke:#fff,color:#fff
    style B fill:#e67e22,stroke:#fff,color:#fff
    style D fill:#d35400,stroke:#fff,color:#fff
    style E fill:#27ae60,stroke:#fff,color:#fff

2. Atribuição (mude) vs Incremento (adicione)

A Diferença Crucial que Todo Programador Deve Saber:

  • [mude (Total) para (50)]Apaga o que estava lá e força o valor a ser exatamente 50. (Usado para inicializar ou resetar o sistema).
  • [adicione (10) a (Total)]Soma 10 ao valor que já existia lá dentro. Se tinha 50, passa a ter 60! (Usado para acumular entradas, pontos ou faturamento).

3. Escopo no Scratch: Global vs Local

Ao clicar em “Criar uma Variável”, o Scratch oferece duas opções de escopo:

  • Para todos os atores (Global): Qualquer ator do projeto (caminhão, cancela, painel) pode ler e alterar essa variável. Ideal para dados compartilhados da empresa (como Saldo_Caixa, Estoque_Geral).
  • Apenas para este ator (Local): Somente aquele ator específico tem acesso. Ideal para propriedades individuais (como Velocidade_Caminhao_1).

4. Outro Gatilho de Evento: Clicar no Próprio Ator

Além do já conhecido quando clicar em 🏁, o Scratch oferece outros blocos de evento (categoria 🟡 Eventos) que servem como gatilho de um script. Um deles é quando este ator for clicado: ele dispara o script apenas quando o jogador toca com o mouse naquele ator específico (como um botão), e não quando a bandeira verde é clicada. Vamos usá-lo nos Gabaritos deste capítulo para simular botões clicáveis no palco; ele será estudado com mais detalhes no Capítulo 03.


📖 Exemplo Guiado: Painel de Controle de Almoxarifado

Passo a Passo no Scratch 3.0:

  1. Abra seu projeto no Scratch.
  2. Vá até a categoria 🔴 Variáveis e clique em Criar uma Variável.
  3. Crie duas variáveis com a opção “Para todos os atores”:
    • Estoque_Paletes
    • Faturamento_Dia
  4. Deixe a caixinha ao lado do nome delas marcada para que apareçam no topo do Palco como monitores.
  5. No ator Gerenciador_Patio (ou no próprio Palco), monte o script de inicialização:
1
2
3
4
quando clicar em 🏁
mude [Estoque_Paletes v] para (100)
mude [Faturamento_Dia v] para (0)
diga [Almoxarifado aberto! Saldo inicial: 100 paletes.] por (3) segundos

🛠️ Prática Obrigatória 1: Simulando a Descarga de um Lote

O Desafio:

Crie um botão no palco chamado Botao_Descarga. Quando o operador clicar nesse botão, simule o descarregamento de uma carreta com os seguintes blocos:

  1. O estoque deve aumentar em 25 paletes: [adicione (25) a (Estoque_Paletes v)].
  2. A empresa deve faturar a taxa de descarga de R$ 350,00: [adicione (350) a (Faturamento_Dia v)].
  3. Toque um efeito sonoro de caixa registradora ou sino: toque o som [Coin v].
  4. O botão deve mudar brevemente de tamanho para dar efeito de clique (pulsar): mude o tamanho para (110)%espere (0.1) segsmude o tamanho para (100)%.

🛠️ Prática Obrigatória 2: Simulando Expedição e Baixa de Estoque

Crie um segundo botão no palco chamado Botao_Expedicao. Quando clicado:

  1. O estoque deve diminuir em 15 paletes: [adicione (-15) a (Estoque_Paletes v)] (usando número negativo!).
  2. Toque um efeito sonoro de confirmação: toque o som [Pop v].
  3. O ator deve dizer em balão de fala: [Despacho de 15 paletes concluído com sucesso!] por 2 segundos.

📤 Instruções de Entrega (Microsoft Teams)

  1. Baixe seu projeto clicando em Arquivo ➔ Baixar para seu computador.
  2. Salve com o nome: Atividade_02_SeuNome_SeuSobrenome.sb3.
  3. No Microsoft Teams, envie na tarefa “Scratch Cap 02 - Variáveis e Placares”.
  4. Clique em Entregar (Turn In).

💡 Checkpoint de Lógica & Engenharia de Software

Você acabou de aplicar o conceito de Persistência de Estado em Memória. Em softwares de ERP como SAP e Totvs, cada movimentação física no armazém dispara uma transação no banco de dados que incrementa ou decrementa tabelas de inventário e contabilidade.


🔥 Desafio de Fixação: Botão de Zeramento com Confirmação

Crie um ator Botao_Zerar. Ao ser clicado, ele deve emitir um aviso sonoro, resetar as duas variáveis para zero (mude [Estoque_Paletes] para (0) e mude [Faturamento_Dia] para (0)) e avisar no palco que o inventário foi fechado.


🔑 Gabarito de Código (Blocos do Scratch)

Prática 1:

1
2
3
4
5
6
7
8
[Ator: Botao_Descarga]
quando este ator for clicado
mude o tamanho para (110)%
adicione (25) a [Estoque_Paletes v]
adicione (350) a [Faturamento_Dia v]
toque o som [Coin v]
espere (0.1) segundos
mude o tamanho para (100)%

Prática 2:

1
2
3
4
5
[Ator: Botao_Expedicao]
quando este ator for clicado
adicione (-15) a [Estoque_Paletes v]
toque o som [Pop v]
diga [Despacho de 15 paletes concluído com sucesso!] por (2) segundos

Desafio:

1
2
3
4
5
[Ator: Botao_Zerar]
quando este ator for clicado
mude [Estoque_Paletes v] para (0)
mude [Faturamento_Dia v] para (0)
diga [Inventário do dia fechado e zerado!] por (3) segundos

📥 Download do Roteiro Completo desta Aula:
Baixe o arquivo consolidado Capitulo_02.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 é uma variável no Scratch, segundo a analogia da “gaveta” apresentada no capítulo?
  2. Qual é a diferença entre o bloco mude ... para e o bloco adicione ... a?
  3. Qual é a diferença entre uma variável de escopo Global (“para todos os atores”) e uma Local (“apenas para este ator”)?
  4. Quais são os nomes das duas variáveis globais criadas no Exemplo Guiado?
  5. No Exemplo Guiado, com que valor a variável Estoque_Paletes é inicializada ao clicar na bandeira verde?
  6. Na Prática Obrigatória 1, qual é o nome do ator/botão criado, e quantos paletes ele adiciona ao estoque quando clicado?
  7. Na Prática Obrigatória 1, qual bloco de evento (de chapéu) é usado para disparar a ação ao clicar no botão?
  8. Na Prática Obrigatória 2, como é feita a diminuição do estoque usando o bloco adicione, que normalmente soma valores?
  9. Segundo o Checkpoint, quais dois sistemas corporativos reais (ERP) foram citados como exemplo de “Persistência de Estado em Memória”?
  10. Na Prática Obrigatória 1, qual é a taxa de descarga (em R$) adicionada à variável Faturamento_Dia?