Saltar para o conteúdo
edumaterial.netMudar idioma

Voltar a Aplicações Informáticas B

Arrays, índices e limites

12.º anoPercurso edumaterial

O que vais aprender

  • Executar operações básicas sobre arrays respeitando índices válidos.

Compreender

Um índice localiza um elemento, enquanto o valor é o dado guardado nesse lugar. Na lista 12, 15 e 14 segundos, o máximo é 15, encontra-se na posição 1 e o último valor é 14 na posição 2. Confundir tamanho 3 com índice 3 conduz a acesso inválido. Uma operação de máximo deve ainda prever o caso de lista vazia.

Valor e posição respondem a perguntas diferentes: 15 é o maior tempo registado, e 1 é o índice onde se encontra. Se dois tempos fossem iguais, uma procura do máximo precisaria de definir se devolve a primeira posição, todas as posições ou apenas o valor. Um array vazio não possui máximo sem regra suplementar. Esses casos de fronteira pertencem ao contrato da operação, não a detalhes invisíveis do código. A frase «Ter três elementos torna o índice 3 válido porque três é o tamanho da lista.» ultrapassa aquilo que foi demonstrado. Para a corrigir, é necessário verificar comprimento e percorrer apenas índices de zero a comprimento menos um. A decisão resulta da comparação entre o dado, o conceito e a condição que ficou por testar.

A lista [12, 15, 14] tem comprimento 3 e índices 0, 1 e 2. Um algoritmo de máximo começa pelo primeiro valor, compara os restantes e pode guardar também o índice onde encontrou 15. A posição 3 não existe, embora 3 seja o comprimento. Para um vetor vazio, não se pode iniciar o máximo com a posição 0; o programa precisa de devolver uma indicação de ausência de dados ou rejeitar a operação segundo um contrato declarado.

Exemplo resolvido

Na lista de três tempos da teoria, [12, 15, 14] segundos, calcula a média e indica quantos índices são válidos sem confundir índice com valor.

  1. Somando os valores, obtenho 12 + 15 + 14 = 41 segundos.
  2. Divido 41 por três elementos e mantenho a unidade segundos: 41/3, aproximadamente 13,67 segundos.
  3. O comprimento é três, logo os índices válidos continuam a ser 0, 1 e 2, independentemente da média calculada.

A média é 41/3 s, cerca de 13,67 s, e há três índices válidos: 0, 1 e 2.

Atenção ao erro

Ter três elementos torna o índice 3 válido porque três é o tamanho da lista.

Três cartões ordenados com termómetros; uma mão aponta para o cartão central.
Representar acesso por índice numa lista ordenada.

Verifica agora

  1. Ver a ilustração

    Qual é o maior tempo, em que índice está e qual é o último tempo?

    Ver solução explicada

    Resposta: O maior é 15 segundos no índice 1; o último é 14 segundos no índice 2.

    Separa máximo, posição e último elemento.

  2. Ver a ilustração

    Um colega toma a seguinte conclusão como demonstrada: «Ter três elementos torna o índice 3 válido porque três é o tamanho da lista.». Localiza o salto e corrige a frase.

    Ver solução explicada

    Resposta: A conclusão excede o recorte. Índice é posição, não valor; aceder à posição 3 excede uma lista com três elementos. O máximo dos valores é 15 na posição 1; o último valor é 14 na posição 2.

    Refuta a inferência com uma condição concreta do caso.

  3. Ver a ilustração

    Se o tempo da posição 2 mudar de 14 para 17 segundos, qual passa a ser o máximo e em que índice?

    Ver solução explicada

    Resposta: O máximo passa a 17 segundos na posição 2; o comprimento e os índices válidos continuam 3 e 0, 1, 2.

    Atualiza o máximo sem alterar indevidamente o intervalo de índices.

  4. Ver a ilustração

    Define um teste para uma lista vazia que evite um acesso inválido ao primeiro elemento.

    Ver solução explicada

    Resposta: Entrada: lista []. Resultado esperado: indicação explícita de que não existe máximo, ou erro de entrada documentado; o programa não deve tentar ler o índice 0.

    Declara comportamento esperado para comprimento zero e previne acesso fora dos limites.

Alinhamento curricular e fontes