Alternativa C - Quando key não está na array
Análise da Questão
O fragmento de código apresentado implementa uma busca linear simples em um array. O objetivo é encontrar o primeiro índice onde o valor key aparece.
Funcionamento do Algoritmo
- Inicialização:
index começa em 0. - Loop While:
while (a[index] != key)
- Enquanto o valor na posição atual
a[index] for diferente de key, o índice é incrementado (index++).
- Verificação Final: Se o loop terminar porque encontrou o valor, o
if subsequente falha e o índice é mantido.
Onde está o erro?
O problema crítico reside na ausência de verificação de limites do array dentro do laço while. Em linguagens como C ou C++, arrays têm tamanho fixo definido. O código assume que key existirá em algum lugar.
Se key não estiver presente no array, a condição a[index] != key será sempre verdadeira. O índice index continuará aumentando indefinidamente:
- Acessará posições fora da memória reservada para o array (estouro de buffer).
- Provocará um erro de segmentação (Segmentation Fault) ou comportamento indefinido.
- O programa não conseguirá chegar à linha 14 para definir
index = -1.
Tabela Comparativa dos Cenários
| Cenário | Comportamento do Código | Resultado Esperado |
|---|
| Key é o 1º elemento | Loop não executa. index = 0. | Sucesso |
| Key é o último elemento | Loop executa até o fim. index = último. | Sucesso |
| Key não está na array | Loop infinito / Acesso ilegal de memória. | Falha Fatal |
| Key é 0 | Depende se 0 existe no array. | Variável |
Conclusão
A opção c descreve o único cenário em que o falha é definitiva. Se o elemento não existe, a lógica do while não possui uma "porta de saída" segura baseada no tamanho do array, tornando o código instável e incapaz de realizar a tarefa proposta (retornar -1 de forma controlada).
Portanto, a alternativa correta é C.