Capítulo 14: Listas II: Buscas e Consultas
🎯 Objetivo da Aula
Ter os dados guardados em uma lista é ótimo, mas saber se um item específico está lá dentro é fundamental. Nesta aula, você aprenderá a Processar listas. O objetivo é dominar os blocos de busca, permitindo que seu sistema valide se um produto já foi bipado ou se um motorista está autorizado.
🏢 O Cenário Prático (Seu Desafio)
Situação: O sistema da FastLog tem uma lista de “Cargas Suspeitas” (Blacklist). O Problema: Quando um caminhão chega, o sistema deve verificar se o código dele está nessa lista. Se estiver, o alarme deve tocar.
Missão: Criar um “Scanner de Segurança” que verifique se um item digitado existe na lista do Scratch.
🧠 Fundamentos: A Teoria Traduzida
1. O Bloco de Contém 🟥
Diferente das linguagens de texto onde você precisa fazer um loop para buscar, o Scratch tem um bloco “mágico” hexagonal que faz a pergunta direto.
🔑 Exemplo 1: Cotidiano (Chaves)
[se (bolso contém chaves?)]->[abrir porta]
📦 Exemplo 2: Técnico (Rastreio de Carga)
[se (Manifesto contém SKU-99?)]->[Carga Autorizada]
graph TD
A[Usuário digita Código] --> B{Lista contém o Código?}
B -- "Sim" --> C[Status: AUTORIZADO]
B -- "Não" --> D[Status: BLOQUEADO]
style B fill:#e74c3c,stroke:#fff,color:#fff
style C fill:#2ecc71,stroke:#fff,color:#fff2. Buscas Manuais (Loop)
Às vezes, queremos saber em qual posição o item está. Para isso, usamos um loop repita (tamanho da lista) e comparamos o item da posição i.
🛠️ Mão na Massa: Atividade 14 - Scanner de Segurança
Vamos programar a consulta rápida:
Passo 1: Preparação
- Crie uma lista chamada
Cargas_Autorizadas. - Adicione manualmente 3 códigos nela (Ex: 101, 202, 303).
Passo 2: O Código de Busca
Encaixe os blocos:
- 🟡 Eventos:
[quando clicar em 🏁] - 🔵 Sensores:
[pergunte "Digite o código da carga para conferência:" e espere] - 🟠 Controle:
[se ( (Cargas_Autorizadas) contém (resposta) ? ) então]⬅️ Use o bloco hexagonal vermelho de lista- 🟣 Aparência:
[diga "CONFERIDO: Carga autorizada para embarque!" por 2 segundos] - 🔊 Som:
[toque o som 'Collect' até o fim]
- 🟣 Aparência:
- 🟠 Controle:
[senão]- 🟣 Aparência:
[diga "ALERTA: Código não encontrado no manifesto!" por 2 segundos] - 🔊 Som:
[toque o som 'Bleep' até o fim]
- 🟣 Aparência:
✅ Resultado Esperado
O programa deve reagir de forma diferente: se o código digitado estiver na lista, ele toca um som positivo. Se não estiver, toca um sinal de alerta.
📤 Instruções de Entrega (Microsoft Teams)
- Crie uma lista de Nomes de Motoristas.
- Faça o sistema perguntar o nome. Se o nome estiver na lista, diga “Acesso Liberado”. Senão, diga “Acesso Negado”.
- Envie o print do código no Microsoft Teams na tarefa “Scratch Cap 14 - Buscas em Listas”.
💡 Checkpoint de Lógica
- Para TI (Busca de Dados): O bloco
[lista] contém (item)?é um atalho poderoso do Scratch para busca linear. Ele poupa o trabalho de criar um loop manual de pesquisa. - Para ADM (Conferência): Use buscas em listas para realizar Checklists de Segurança ou conferência de manifestos de carga.
🔥 Desafio de Fixação (ADM/TI)
Validador de Acesso: Crie uma lista com 3 nomes de funcionários autorizados. Peça o nome do usuário. Se o nome estiver na lista, diga “Bem-vindo!”. Senão, diga “Acesso Negado”.
🔑 Gabarito de Lógica (Blocos)
Busca e Bloqueio:
[pergunte "Nome?"][se ( (Lista_Motoristas) contém (resposta) ? ) então][diga "Liberado"][senão][diga "Negado"]