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:#fff

2. 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

  1. Crie uma lista chamada Cargas_Autorizadas.
  2. Adicione manualmente 3 códigos nela (Ex: 101, 202, 303).

Passo 2: O Código de Busca

Encaixe os blocos:

  1. 🟡 Eventos: [quando clicar em 🏁]
  2. 🔵 Sensores: [pergunte "Digite o código da carga para conferência:" e espere]
  3. 🟠 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]
  4. 🟠 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]

✅ 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)

  1. Crie uma lista de Nomes de Motoristas.
  2. Faça o sistema perguntar o nome. Se o nome estiver na lista, diga “Acesso Liberado”. Senão, diga “Acesso Negado”.
  3. 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"]