🐱 Capítulo 03: Scratch 3.0 e Programação Visual em Blocos
Bem-vindo ao Material Didático Completo de Scratch 3.0 e Pensamento Computacional. Este material foi desenvolvido com rigor técnico e engenharia pedagógica para fundamentar os conceitos essenciais da Ciência da Computação através da programação visual em blocos, servindo como ponte cognitiva definitiva para a programação textual clássica.
🗺️ Trilha Pedagógica do Capítulo
flowchart TD
M1["📍 MÓDULO 1: Fundamentos & Anatomia do Palco Cartesiano\n(Espaço bidimensional, coordenadas, ângulos e eliminação de erros)"]
M2["🧩 MÓDULO 2: Tipologia & Anatomia dos Blocos Scratch\n(Hat, Stack, Reporter, Boolean e C-Blocks)"]
M3["⚙️ MÓDULO 3: Os Pilares da Lógica no Scratch\n(Sequenciamento, Decisão Condicional, Loops e Variáveis)"]
M4["🚀 MÓDULO 4: Projetos Práticos Passo a Passo (Hands-On)\n(Projeto A: Validador de Acesso | Projeto B: Game Loop Coletor)"]
M5["🔍 MÓDULO 5: Guia Prático de Depuração (Debugging)\n(Diagnóstico de bugs, loops travados e rastreamento de estado)"]
M6["📝 MÓDULO 6: Caderno de Exercícios & Avaliação\n(Questões teóricas, desafios práticos e rubrica)"]
M1 --> M2 --> M3 --> M4 --> M5 --> M6
style M1 fill:#e1f5fe,stroke:#03a9f4,stroke-width:2px
style M2 fill:#e8f5e9,stroke:#4caf50,stroke-width:2px
style M3 fill:#fff3e0,stroke:#ff9800,stroke-width:2px
style M4 fill:#fce4ec,stroke:#e91e63,stroke-width:2px
style M5 fill:#ede7f6,stroke:#673ab7,stroke-width:2px
style M6 fill:#eceff1,stroke:#607d8b,stroke-width:2px
📍 MÓDULO 1: Fundamentos e Anatomia do Palco (Stage)
1.1. O Algoritmo e a Eliminação do Atrito Sintático
Um algoritmo é uma sequência finita, ordenada e não ambígua de instruções para solucionar um problema computacional. Em linguagens puramente textuais (como C, Java ou Python), estudantes iniciantes frequentemente enfrentam barreiras causadas por erros tipográficos: esquecimento de ponto-e-vírgula (;), chaves desbalanceadas ({ }) ou erros de indentação.
O Scratch 3.0 (desenvolvido pelo MIT Media Lab) elimina completamente essa barreira sintática ao transformar instruções em blocos com encaixes físicos geométricos:
- Gramática Visual: Instruções só se conectam se a combinação fizer sentido lógico e operacional.
- Modelo IPO em Tempo Real: Entrada (Input), Processamento (Process) e Saída (Output) tornam-se imediatamente visíveis e auditivos.
- Semântica por Cores: Cada domínio funcional (movimento, controle, sensores, variáveis) possui uma identidade cromática padronizada.
1.2. O Sistema de Coordenadas Cartisianas do Palco
O ambiente visual onde os atores (sprites) interagem e executam suas instruções é o Palco (Stage). O palco é uma grade bidimensional baseada no plano cartesiano clássico:
- Dimensões Totais: Largura de $480\text{ pixels}$ (Eixo X de $-240$ a $+240$) e Altura de $360\text{ pixels}$ (Eixo Y de $-180$ a $+180$).
- Origem Cartesiana: O centro exato da tela possui as coordenadas $(X=0, Y=0)$.
- Convenção de Direções e Ângulos (Scratch Heading):
- $0^\circ$ = Apontar para Cima (Norte / $Y+$)
- $90^\circ$ = Apontar para a Direita (Leste / $X+$) — Padrão inicial de todo ator
- $180^\circ$ = Apontar para Baixo (Sul / $Y-$)
- $-90^\circ$ ($270^\circ$) = Apontar para a Esquerda (Oeste / $X-$)
🎨 SVG 1: O Palco Cartesiano do Scratch 3.0
🧩 MÓDULO 2: Tipologia e Anatomia dos Blocos
No ecossistema do Scratch 3.0, a forma visual do bloco comunica diretamente o seu papel computacional. Existem cinco tipos estruturais universais:
flowchart LR
A["1. Hat Block\n(Disparador de Evento)"] --> B["2. Stack Block\n(Comando Imperativo)"]
B --> C["3. Reporter Block\n(Função com Retorno / Dado)"]
C --> D["4. Boolean Block\n(Predicado Lógico 0 ou 1)"]
D --> E["5. C-Block\n(Controle de Fluxo / Laço)"]
style A fill:#fff9c4,stroke:#fbc02d,stroke-width:1.5px
style B fill:#e1f5fe,stroke:#03a9f4,stroke-width:1.5px
style C fill:#ffe0b2,stroke:#ff9800,stroke-width:1.5px
style D fill:#e8f8f5,stroke:#2ecc71,stroke-width:1.5px
style E fill:#fce4ec,stroke:#e91e63,stroke-width:1.5px
🎨 SVG 2: As 5 Formas Anatômicas dos Blocos Scratch 3.0
⚙️ MÓDULO 3: Os Pilares da Lógica no Scratch
3.1. Sequenciamento Linear
No modelo de arquitetura de von Neumann, a CPU executa instruções de forma estritamente sequencial (de cima para baixo), a menos que um desvio de controle explícito ocorra. No Scratch, a pilha de blocos conectados verticalmente representa exatamente esse fluxo de execução síncrono.
3.2. Estruturas Condicionais (Decisão)
As estruturas condicionais permitem que o algoritmo tome caminhos distintos dependendo da avaliação de uma expressão lógica booleana:
- Condicional Simples (
se <condição> então): Executa o bloco interno apenas se a proposição for verdadeira. - Condicional Composta (
se <condição> então ... senão ...): Fornece dois caminhos mutuamente exclusivos — um para resultado verdadeiro e outro para falso.
flowchart TD
Inicio(["Início da Decisão"]) --> Teste{"A condição é VERDADEIRA?"}
Teste -- Sim --> RamoVerdadeiro["Executa Bloco Interno 1\n(Caminho 'Então')"]
Teste -- Não --> RamoFalso["Executa Bloco Interno 2\n(Caminho 'Senão')"]
RamoVerdadeiro --> FimDecisao(["Fim da Estrutura Condicional"])
RamoFalso --> FimDecisao
style Inicio fill:#e1f5fe,stroke:#03a9f4,stroke-width:2px
style Teste fill:#fff3e0,stroke:#ff9800,stroke-width:2px
style RamoVerdadeiro fill:#e8f5e9,stroke:#4caf50,stroke-width:2px
style RamoFalso fill:#fce4ec,stroke:#e91e63,stroke-width:2px
style FimDecisao fill:#eceff1,stroke:#607d8b,stroke-width:2px
🎨 SVG 3: Estrutura do Bloco Se ... Senão (C-Block)
3.3. Estruturas de Repetição (Laços / Loops)
O Scratch disponibiliza três categorias fundamentais de iteração:
flowchart LR
subgraph L1["1. Laço Determinado (Contador)"]
direction TB
F1["repita (N) vezes"] --> F2["Executa exatamente N vezes"]
end
subgraph L2["2. Laço Condicional (Until)"]
direction TB
C1["repita até que <condição>"] --> C2["Repete enquanto a condição for FALSA\nPara quando se torna VERDADEIRA"]
end
subgraph L3["3. Laço Infinito (Game Loop)"]
direction TB
I1["sempre"] --> I2["Executa continuamente a 30 FPS\nBase para jogos e simulações"]
end
style L1 fill:#e8f5e9,stroke:#4caf50,stroke-width:1.5px
style L2 fill:#fff3e0,stroke:#ff9800,stroke-width:1.5px
style L3 fill:#e1f5fe,stroke:#03a9f4,stroke-width:1.5px
3.4. Variáveis e Operações Lógicas
- Declaração e Escopo: No Scratch, uma variável pode ser global (“Para todos os atores”) ou local (“Apenas para este ator”).
- Atribuição:
mude [var ▾] para (valor)equivale ao operador=ou<-. - Acumulador / Incremento:
adicione (1) a [var ▾]equivale avar = var + 1. - Operadores Booleanos:
< <cond1> e <cond2> >(Conjunção lógica $AND$)< <cond1> ou <cond2> >(Disjunção lógica $OR$)< não <cond> >(Negação lógica $NOT$)
🚀 MÓDULO 4: Projetos Práticos Passo a Passo (Hands-On)
Abaixo, apresentamos dois projetos completos e funcionais com suas regras de negócio, diagramação lógica, representação SVG e correlação comparativa tripla.
🔒 Projeto A: Sistema Validador de Senha e Controle de Acesso
Regras de Negócio:
- Ao clicar na bandeira verde, o sistema solicita a senha de segurança do usuário.
- A resposta é armazenada na variável
senha_digitada. - Se
senha_digitada == "1234":- O sistema exibe “Acesso Autorizado! Bem-vindo.” e toca o som
Coin.
- O sistema exibe “Acesso Autorizado! Bem-vindo.” e toca o som
- Caso contrário:
- O sistema exibe “Senha Incorreta! Acesso Bloqueado.” e toca o som
Buzz.
- O sistema exibe “Senha Incorreta! Acesso Bloqueado.” e toca o som
Diagrama de Fluxo Lógico (Mermaid):
flowchart TD
Start(["⚑ Início"]) --> In[/"Perguntar 'Digite sua senha:'"/]
In --> Read["senha_digitada = resposta"]
Read --> Cond{"senha_digitada == '1234' ?"}
Cond -- Sim --> OutOk[/"Dizer 'Acesso Autorizado!' + Som Coin"/]
Cond -- Não --> OutFail[/"Dizer 'Senha Incorreta!' + Som Buzz"/]
OutOk --> EndNode(["Fim do Script"])
OutFail --> EndNode
style Start fill:#e1f5fe,stroke:#03a9f4,stroke-width:2px
style Cond fill:#fff3e0,stroke:#ff9800,stroke-width:2px
style OutOk fill:#e8f5e9,stroke:#4caf50,stroke-width:2px
style OutFail fill:#fce4ec,stroke:#e91e63,stroke-width:2px
style EndNode fill:#eceff1,stroke:#607d8b,stroke-width:2px
🎨 SVG 4: Pilha de Blocos do Projeto A (Validador de Acesso)
📊 Tabela Comparativa Tripla (Projeto A)
| Etapa Lógica | Scratch 3.0 | Portugol / VisualG | Python 3 |
|---|---|---|---|
| 1. Entrada | pergunte [Senha:] e esperemude [senha ▾] para (resposta) |
escreva("Digite a senha: ")leia(senha) |
senha = input("Digite a senha: ") |
| 2. Decisão | se <(senha) = [1234]> então...senão... |
se (senha = "1234") entao...senao...fimse |
if senha == "1234": ...else: ... |
| 3. Feedback OK | diga [Acesso Autorizado!] por (3) segs |
escreval("Acesso Autorizado!") |
print("Acesso Autorizado!") |
| 4. Feedback Erro | diga [Senha Incorreta!] por (3) segs |
escreval("Senha Incorreta!") |
print("Senha Incorreta!") |
🎮 Projeto B: Game Loop “Coletor de Estrelas Interativo”
Regras de Negócio:
- Inicializar a
pontuaçãoem0e posicionar o jogador no chão do palco $(X=0, Y=-140)$. - Executar um laço infinito (
sempre) para garantir a taxa de atualização contínua do jogo (Game Loop):- Se a Seta para Direita estiver pressionada: adiciona $+10$ à coordenada $X$.
- Se a Seta para Esquerda estiver pressionada: adiciona $-10$ à coordenada $X$.
- Se o jogador tocar na Estrela: incrementa a
pontuaçãoem $+1$ e reposiciona a estrela em uma coordenada $X$ aleatória entre $-200$ e $+200$ no topo da tela $(Y=160)$.
Diagrama de Fluxo do Game Loop (Mermaid):
flowchart TD
Init["⚑ Início: pontuação = 0\nPosição Inicial: (0, -140)"] --> Loop{"Game Loop (sempre)"}
Loop --> KeyRight{"Seta Direita Pressionada?"}
KeyRight -- Sim --> MoveRight["X = X + 10"]
KeyRight -- Não --> KeyLeft{"Seta Esquerda Pressionada?"}
MoveRight --> KeyLeft
KeyLeft -- Sim --> MoveLeft["X = X - 10"]
KeyLeft -- Não --> Colisao{"Tocando em 'Estrela'?"}
MoveLeft --> Colisao
Colisao -- Sim --> Score["pontuação = pontuação + 1\nReposiciona Estrela em X aleatório"]
Colisao -- Não --> Loop
Score --> Loop
style Init fill:#e1f5fe,stroke:#03a9f4,stroke-width:2px
style Loop fill:#fff3e0,stroke:#ff9800,stroke-width:2px
style Score fill:#e8f5e9,stroke:#4caf50,stroke-width:2px
🎨 SVG 5: Pilha de Blocos do Projeto B (Game Loop)
📊 Tabela Comparativa Tripla (Projeto B)
| Lógica do Game Loop | Scratch 3.0 | Portugol / Pseudocódigo | Python 3 (Pygame) |
|---|---|---|---|
| Inicialização | mude [pontos ▾] para [0]vá para x:(0) y:(-140) |
pontos <- 0pos_x <- 0; pos_y <- -140 |
pontos = 0player_x, player_y = 0, -140 |
| Loop Principal | sempre { ... } |
enquanto (verdadeiro) faca |
while running: |
| Entrada Contínua | se <tecla [dir ▾] pressionada?>adicione (10) a x |
se (tecla_pressionada(DIR)) entaopos_x <- pos_x + 10 |
if keys[pygame.K_RIGHT]: player_x += 10 |
| Tratamento de Colisão | se <tocando em [Item ▾]?>adicione (1) a [pontos ▾] |
se (detectou_colisao()) entaopontos <- pontos + 1 |
if player_rect.colliderect(star): pontos += 1 |
🔍 MÓDULO 5: Guia Prático de Depuração (Debugging)
Depurar (debug) é a habilidade de identificar, rastrear e corrigir falhas lógicas em um programa. Abaixo estão os quatro erros mais comuns cometidos por programadores no Scratch e como solucioná-los.
Tabela Diagnóstica: Sintoma → Causa → Solução
| Sintoma do Bug | Causa Lógica Raiz | Como Corrigir no Scratch |
|---|---|---|
| 1. Animação travada / Ator teletransporta instantaneamente | Uso de laço de repetição (repita) sem temporizador entre os quadros. O computador processa os ciclos em microssegundos. |
Insira o bloco espere (0.05) segundos (🟨 Controle) dentro do laço para permitir a renderização visual fluida. |
| 2. Variável acumula valores da execução anterior | Esquecimento de resetar o estado da variável ao iniciar o programa. | Encaixe mude [minha_variavel ▾] para [0] logo abaixo de quando ⚑ for clicado. |
| 3. Ator anda na vertical quando deveria andar na horizontal | Inversão dos blocos adicione a x com adicione a y. |
Lembre-se: $X$ é horizontal (esquerda/direita) e $Y$ é vertical (cima/baixo). |
| 4. Comportamentos concorrentes imprevisíveis | Ter múltiplos blocos quando ⚑ for clicado no mesmo ator alterando a mesma variável simultaneamente (Race Condition). |
Centralize o fluxo principal em um único script estruturado ou utilize mensagens com transmita [mensagem ▾] e espere. |
📝 MÓDULO 6: Caderno de Exercícios e Avaliação
🧠 Parte 1: Questões Teóricas e Leitura de Código
Questão 1 (Interpretação de Variáveis):
Considere que a variável total inicia em 10. Em seguida, o Scratch executa o bloco repita (4) vezes, contendo internamente a instrução adicione (5) a [total ▾]. Qual será o valor final de total após a execução do laço?
- A)
10 - B)
20 - C)
30 - D)
50
Questão 2 (Avaliação Booleana):
Dadas as variáveis idade = 16 e autorizacao_pais = VERDADEIRO. A expressão lógica < < (idade) >= [18] > ou < (autorizacao_pais) = [VERDADEIRO] > > resultará em:
- A)
Falso, pois a idade é menor que 18. - B)
Verdadeiro, pois o operador lógicoOUrequer que apenas uma das condições seja verdadeira. - C)
Erro de compilação. - D)
Nulo.
Questão 3 (Coordenadas Cartesianas):
Se um ator está na posição $(X=100, Y=-50)$ e executa os blocos:
adicione (-40) a xmude y para [100]
Quais serão suas coordenadas finais no Palco?
- A) $(X=60, Y=100)$
- B) $(X=140, Y=50)$
- C) $(X=60, Y=-50)$
- D) $(X=-40, Y=100)$
🛠️ Parte 2: Desafios Práticos de Programação
Desafio 1: Conversor de Temperatura Interativo
- Objetivo: Criar um programa que pergunte a temperatura em graus Celsius ($^\circ C$), calcule o valor equivalente em Fahrenheit ($^\circ F$) usando a fórmula $F = (C \times 1.8) + 32$, e faça o ator dizer o resultado formatado.
- Critérios de Aceitação:
- Uso correto do sensor
pergunte ... e espere. - Criação de variáveis
celsiusefahrenheit. - Aninhamento correto dos operadores matemáticos de multiplicação e soma.
- Uso correto do sensor
Desafio 2: Tabuada Automatizada
- Objetivo: O usuário digita um número inteiro (ex: $7$) e o ator recita a tabuada daquele número de $1$ a $10$ utilizando um laço
repita (10) vezese uma variável contadora. - Critérios de Aceitação:
- Inicialização do contador em
1. - Multiplicação
numero * contadora cada iteração. - Incremento do contador em $+1$ ao final de cada volta do laço.
- Inicialização do contador em
Desafio 3: Radar de Velocidade com Penalidade
- Objetivo: O programa pergunta a velocidade de um veículo em km/h. Se a velocidade for maior que $80$, calcula a multa ($R$ 7,00$ para cada km/h acima de 80) e exibe: “Multado! Valor: R$ [valor]”. Se for $\le 80$, exibe: “Velocidade Permitida. Boa viagem!”.
- Critérios de Aceitação:
- Uso do bloco condicional composto
se ... então ... senão. - Cálculo correto da diferença
(velocidade - 80) * 7.
- Uso do bloco condicional composto
🔑 Gabarito Oficial e Rubrica de Avaliação
Respostas das Questões Teóricas:
- Questão 1: C) 30 (Cálculo: $10 + (4 \times 5) = 10 + 20 = 30$).
- Questão 2: B) Verdadeiro (A primeira condição $16 \ge 18$ é Falsa, mas a segunda é Verdadeira. No operador
OU, $F \lor V = V$). - Questão 3: A) (X=60, Y=100) (Novo $X = 100 - 40 = 60$; $Y$ foi redefinido diretamente para $100$).
📋 Rubrica de Avaliação dos Desafios Práticos (Pontuação Máxima: 100 pts)
| Critério de Engenharia Pedagógica | Excelente (100% dos pts) | Regular (70% dos pts) | Insuficiente (0-40% dos pts) |
|---|---|---|---|
| 1. Correção Lógica e Modelo IPO (40 pts) | O algoritmo atende 100% das regras de negócio, sem erros de cálculo ou desvios indevidos. | O algoritmo executa, mas apresenta pequenas falhas de arredondamento ou precedência. | Não realiza o cálculo solicitado ou entra em loop infinito. |
| 2. Uso Adequado de Variáveis (30 pts) | Variáveis bem nomeadas, inicializadas no início do script com escopo correto. | Variáveis funcionais, porém sem inicialização explícita na bandeira verde. | Falta de variáveis; sobrescrita acidental de dados. |
| 3. Interface e Feedback ao Usuário (30 pts) | Mensagens claras, uso de temporizadores adequados nos balões e formatação legível. | O programa emite respostas, mas os balões somem rápido demais para leitura. | Não exibe resposta de saída para o usuário. |
🔗 Recursos Pedagógicos do Capítulo
| Recurso | Descrição | Acesso Direto |
|---|---|---|
| 📊 Slides de Aula | Apresentação visual estruturada com diagramas | Ver Slides |
| 🧠 Quiz Formativo | Teste de fixação com feedback imediato por alternativa | Fazer Quiz |
| 💻 Exemplos Práticos | Código executável e simulações do Scratch | Ver Exemplos |
| 🧩 Exercícios Progressivos | Lista de atividades práticas em 4 níveis | Resolver Exercícios |
🧭 Navegação do Capítulo: ⬅️ Capítulo Anterior · 📚 Sumário do Módulo · ➡️ Próximo Capítulo