Módulo 11 - Listas, muitas caixas juntas

O índice começa no zero (sim, no zero)

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

O que você vai aprender

  • Gravar que a primeira caixa é a de índice 0.
  • Calcular o índice da última caixa: tamanho menos 1.
  • Prever a saída de acessos como frutas[1] sem escorregar.
  • Reconhecer o erro de acessar um índice que não existe.

A regra que mais derruba iniciante

No dia a dia, contamos a partir do 1: o primeiro degrau, o primeiro andar, o primeiro colocado. As listas de programação contam a partir do ZERO, e essa diferença tem motivo técnico. O índice não responde “qual é a posição?”, responde “quantas caixas eu pulo a partir do começo?”. Para pegar a primeira caixa, você não pula nenhuma: pula 0. Para pegar a segunda, pula 1. O computador guarda a lista como uma fileira na memória e usa o índice como deslocamento a partir do ponto de partida, por isso o zero é natural para ele.

Grave as duas pontas, porque é nelas que os bugs nascem. A ponta de cima: primeira caixa, índice 0. A ponta de baixo: última caixa, índice tamanho menos 1. Numa lista de 7 temperaturas, os índices vão de 0 a 6; o 7 não existe. Essa conta de “menos 1” vai aparecer em todo laço que percorre lista pelo resto da sua vida de programação, então vale repetir em voz alta: tamanho 4, índices de 0 a 3. Tamanho 30, índices de 0 a 29.

Lendo índices sem escorregar

O jeito mais rápido de fixar a contagem do zero é prever saídas de código, errar em ambiente seguro e ajustar a intuição. Leia cada acesso traduzindo mentalmente: notas[2] não é “a nota 2”, é “pule 2 caixas a partir do começo”, ou seja, o TERCEIRO valor. Com poucos dias de prática a tradução some e o reflexo assume. O jogo abaixo aplica exatamente essa previsão numa lista de frutas; jogue antes de continuar a leitura.

frutas <- ["banana", "maçã", "uva", "laranja"]
// índices:      0         1       2        3
escreva(frutas[0])   // banana (pulei 0 caixas)
escreva(frutas[3])   // laranja (última: tamanho 4 - 1)
escreva(frutas[4])   // ERRO: essa caixa não existe

A régua mental: o índice diz quantas caixas você pula a partir do começo.

🎮 Jogo da aula

Qual fruta aparece na tela?

Leia a lista, conte os índices A PARTIR DO ZERO e escolha o que o comando escreva mostra.

frutas <- ["banana", "maçã", "uva", "laranja"]
escreva(frutas[1])

Se você errou o jogo, ótimo: errou aqui, onde não custa nada, e não num programa de verdade. Esse tropeço tem até nome na profissão: erro de “off-by-one”, o erro de uma unidade. Ele aparece quando alguém trata o índice 1 como primeiro elemento ou quando pede o índice igual ao tamanho da lista. Programadores experientes ainda cometem esse deslize de vez em quando; a diferença é que eles desconfiam dele PRIMEIRO quando algo sai errado com uma lista.

O erro de sair da lista

O que acontece quando o programa pede notas[4] numa lista de 4 elementos? Nada de bom. Nas linguagens reais, ou o programa para com uma mensagem de erro (o Python avisa “index out of range”, índice fora do alcance), ou devolve um valor vazio que contamina as contas seguintes em silêncio. Dos dois males, o erro barulhento é o menor, como você aprendeu no módulo 1: ele aponta a linha exata do problema. O silencioso deixa a média da turma errada sem ninguém perceber.

Teste rápido

A lista notas tem 4 valores. Qual índice acessa o ÚLTIMO deles?

Perguntas frequentes

Por que as linguagens não contam a partir do 1, como as pessoas?
Porque o índice representa o deslocamento a partir do começo da fileira na memória: a primeira caixa está a 0 passos do início. Essa convenção veio das linguagens antigas de baixo nível e se manteve em quase todas as atuais, como Python, JavaScript, Java e C. Existem exceções (Lua conta do 1), mas são raras.
Existe um truque para não errar mais a contagem do zero?
Traduza o índice como “quantas caixas eu pulo”: lista[0] pula nenhuma (primeiro valor), lista[2] pula duas (terceiro valor). E memorize a fórmula da outra ponta: último índice = tamanho menos 1. Com esses dois reflexos, os erros de uma unidade praticamente somem.
O que acontece exatamente se eu acessar um índice que não existe?
Depende da linguagem. O Python interrompe o programa com o erro “list index out of range”. O JavaScript devolve undefined (vazio) e segue em frente, o que costuma ser pior, porque o estrago aparece longe da causa. Em pseudocódigo, tratamos como erro e pronto: caixa que não existe não pode ser lida.
Índice negativo existe?
Em algumas linguagens, sim, como atalho: no Python, lista[-1] devolve o último elemento e lista[-2] o penúltimo. É conveniente, mas é um recurso da linguagem, não da lógica. Neste curso usamos apenas índices de 0 a tamanho menos 1, que funcionam em qualquer lugar.
Como sei o tamanho de uma lista no pseudocódigo?
Usamos a palavra tamanho(lista), que devolve a quantidade de caixas. As linguagens reais têm o equivalente: len(lista) no Python, lista.length no JavaScript. É esse valor que alimenta a fórmula do último índice e os limites dos laços da próxima aula.
Esse tal erro de uma unidade some com a experiência?
Diminui muito, mas não some: ele é considerado um dos bugs mais persistentes da profissão justamente por ser pequeno e silencioso. O que a experiência muda é a desconfiança: diante de uma lista que se comporta estranho, o programador confere primeiro as pontas, o índice 0 e o tamanho menos 1. No módulo 13 o teste de mesa formaliza essa conferência.

Fontes

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