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.
Ouvir o resumo desta aula
Um recap de cerca de 2 minutos na voz do Valim, para ouvir no trânsito ou na academia.
Ler a transcrição do resumo
Resumo da aula: Procurando na lista: tem ou não tem?.
Os objetivos desta aula. 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.
Veja o essencial, parte por parte.
A pergunta mais feita da computação. Buscar = percorrer a lista comparando cada caixa com o valor procurado: se lista[i] = procurado, achou.
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.
O fecho do módulo: quatro ferramentas no cinto. 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.
Esse foi o resumo do essencial. Para se aprofundar, leia a aula completa e responda os exercícios.
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
fimA 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
fimCom 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.