Módulo 11 - Listas, muitas caixas juntas

Procurando na lista: tem ou não tem?

8 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 02/07/2026

O que você vai aprender

  • Escrever a busca que percorre a lista comparando caixa por caixa.
  • Guardar a POSIÇÃO onde o valor foi encontrado, não só o sim ou não.
  • Usar -1 como sinal honesto de “não encontrei”.
  • Parar o percurso assim que o valor aparecer, sem trabalho à toa.

A pergunta mais feita da computação

Pense em quantas vezes por dia algo é procurado dentro de uma lista: seu CPF na lista da vacina, o nome do filme no catálogo, o produto no estoque, o contato na agenda do celular. Toda essa procura, lá no fundo, começa com o algoritmo desta aula: a busca linear. Ela pega o valor procurado e caminha pela lista comparando caixa por caixa, exatamente como o segurança confere a lista de convidados na porta da festa: dedo no papel, nome por nome, de cima para baixo, até achar ou até a lista acabar.

A moldura você já tem: é o percurso da aula 3, com um SE do módulo 8 no miolo. A novidade está em duas decisões de projeto. Primeira: o que responder? Um simples “tem ou não tem” serve às vezes, mas guardar a POSIÇÃO do achado responde as duas coisas de uma vez (se posicao é 2, o valor está lá; e está na caixa 2). Segunda: como dizer “não achei” sem mentir? A resposta é o valor sentinela -1, um número que nenhum índice de verdade usa, já que índices começam no zero e nunca são negativos.

convidados <- ["Ana", "Bruno", "Carla", "Davi"]
procurado <- "Carla"
posicao <- -1
para i de 0 até tamanho(convidados) - 1 faça
  se convidados[i] = procurado então
    posicao <- i
  fim
fim
se posicao = -1 então
  escreva("Não está na lista")
senão
  escreva("Encontrado na posição " + posicao)   // Encontrado na posição 2
fim

A busca completa: percorre, compara, guarda a posição e responde com honestidade.

Parar quando achar: a elegância de não trabalhar à toa

O algoritmo acima funciona, mas tem um desperdício escondido: mesmo achando a Carla na caixa 2, ele continua conferindo o Davi. Em quatro convidados, ninguém percebe. Numa lista de 1 milhão de clientes em que o procurado está na caixa 10, seriam 999.990 comparações jogadas fora. A correção é declarar vitória e encerrar: assim que lista[i] for igual ao procurado, guarde a posição e saia do laço. Em pseudocódigo, usamos o comando pare, que interrompe o laço na hora; as linguagens reais têm o equivalente (break).

para i de 0 até tamanho(convidados) - 1 faça
  se convidados[i] = procurado então
    posicao <- i
    pare              // achou: não há motivo para continuar
  fim
fim

Com o pare, a busca faz só o trabalho necessário: no melhor caso, uma comparação.

🎮 Jogo da aula

Caça-mitos da busca

Verdadeiro ou falso? Julgue cada afirmação sobre procurar valores em uma lista.

As afirmações do jogo escondem uma ideia que vale destacar: a busca tem melhor caso, pior caso e caso médio. Achar na primeira caixa custa 1 comparação; não achar custa tamanho(lista) comparações. Quando a lista está ORDENADA, existe uma estratégia radicalmente melhor, a busca binária, que abre a lista no meio como quem procura num dicionário e descarta metade a cada passo. Ela não é assunto deste curso introdutório, mas fica o gostinho: com 1 milhão de itens ordenados, ela acha qualquer um em cerca de 20 passos.

O fecho do módulo: quatro ferramentas no cinto

Faça o balanço do módulo. Você aprendeu o que é uma lista (caixas numeradas sob um nome), gravou a contagem do zero (primeira caixa no índice 0, última no tamanho menos 1), casou o laço PARA com o índice para percorrer tudo e aplicou o percurso nos quatro clássicos: somar, tirar média, achar o maior e buscar. Não é exagero dizer que uma fatia enorme dos programas do mundo real é feita desses movimentos combinados: o extrato do banco soma, o placar do campeonato acha o maior, o campo de pesquisa busca.

  • Percorrer: para i de 0 até tamanho(lista) - 1 faça ... fim.
  • Somar: acumulador que nasce 0 e cresce com lista[i] a cada volta.
  • Maior: campeão provisório que nasce lista[0] e defende o posto caixa a caixa.
  • Buscar: comparar caixa a caixa, guardar a posição, parar ao achar, responder -1 se não achar.

No módulo 12, esses algoritmos ganham nome próprio e viram peças reutilizáveis: as funções. Você vai embrulhar a busca desta aula numa máquina chamada buscar(lista, valor) e usá-la em qualquer programa com uma linha, sem copiar e colar o laço nunca mais.

Teste rápido

Ao final de uma busca, a variável posicao vale -1. O que isso significa?

Perguntas frequentes

Por que usar -1 e não 0 para dizer “não encontrei”?
Porque 0 é um índice VÁLIDO: é a primeira caixa da lista. Se “não achei” fosse 0, seria impossível distinguir de “achei na primeira caixa”. O -1 nunca é índice de caixa nenhuma, então funciona como sinal inequívoco. As linguagens reais adotam a mesma convenção em várias funções de busca.
E se o valor aparecer duas vezes na lista?
A busca desta aula devolve a posição da PRIMEIRA ocorrência, porque percorre do índice 0 em diante e para ao achar. Se o problema pedir todas as ocorrências, tire o pare e troque a variável única por um contador ou por uma segunda lista que acumula as posições encontradas.
Buscar texto é igual a buscar número?
A moldura é idêntica; muda a comparação. Textos comparam caractere por caractere, e “Ana” é diferente de “ana” para o computador, como você viu no módulo 6. Programas reais costumam padronizar tudo para minúsculas antes de comparar, para a busca não falhar por causa de uma letra maiúscula.
O campo de pesquisa dos aplicativos usa essa busca?
Nos casos simples e em listas pequenas, sim, é busca linear pura. Sistemas grandes usam estruturas mais espertas (listas ordenadas com busca binária, índices como os de fim de livro) porque conferir bilhões de caixas uma a uma seria lento. Todas essas técnicas, porém, existem para responder a MESMA pergunta desta aula: onde está o valor?
O que é a busca binária que a aula mencionou?
É a busca do dicionário: com a lista ORDENADA, você abre no meio, compara e descarta a metade onde o valor não pode estar, repetindo até achar. Cada passo elimina metade das caixas, então 1 milhão de itens caem em cerca de 20 comparações. Ela exige ordem prévia, e por isso a linear continua útil: funciona em qualquer lista, bagunçada ou não.
Terminei o módulo. O que devo conseguir fazer agora?
Olhar para um problema com vários valores da mesma natureza e, sem consultar nada, montar: a lista, o percurso de 0 a tamanho menos 1 e o miolo certo (somar, comparar para achar o maior ou buscar com posição e -1). Faça a mini-prova para validar e revisite os conceitos que o mapa de conhecimento apontar; o módulo 12 constrói em cima de todos eles.

Fontes

Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.