Elabore um algoritmo que leia um valor x e logo após um número n que indicará a quantidade de números a serem lidos após a leitura de n. Em seguida, leia n números (conforme o valor informado anteriormente) e, ao final imprima se o elemento x aparece e sua posição, caso positivo. (2)

Passo 1

O que o enunciado pede e quais dados nos dão.
  • O enunciado pede que seja elaborado um algoritmo que:
    1. Leia um valor x.
    2. Leia um número n que indica quantos números serão lidos em seguida.
    3. Leia esses n números.
    4. Ao final, imprima se o elemento x aparece entre os n números lidos e, caso positivo, imprima a sua posição.
  • Informações relevantes (explicitadas):
    • O primeiro valor lido é x.
    • O segundo valor lido é n, um inteiro não-negativo que diz quantos valores virão depois.
    • Em seguida vêm exatamente n valores (podem ser inteiros ou reais — o enunciado não especifica).
    • Precisamos indicar se x aparece (sim/não) e, se aparecer, a posição onde ele aparece.
    • Decisão prática (escolhida aqui): vamos reportar a primeira posição onde x aparece (índice começando em 1). Se o professor quiser todas as posições, dá para adaptar o algoritmo fácil — eu explico isso nos próximos passos.

Passo 2

Idéia geral do método (explicação didática, sem código ainda).
  • A maneira mais simples e comum é fazer uma varredura linear (um “scan”) pelos n números: ler cada número, comparar com x e, se igual, guardar a posição.
  • Vantagens desse método:
    • Simples de entender e implementar.
    • Usa pouca memória (não precisa armazenar todos os números).
    • Opera em tempo linear O(n), que é ótimo para este problema.
  • Alternativas:
    • Guardar todos os números em um vetor e depois buscar: usa mais memória sem vantagem aqui.
    • Estruturas avançadas (hash, ordenação) só valem se houver muitas consultas, o que não é o caso.

Passo 3

Definição das variáveis e convenções (ensinando o que cada variável representa).
  • x: o valor que queremos localizar.
  • n: quantidade de valores que serão lidos depois.
  • v: variável temporária para cada valor lido na sequência.
  • i: índice do laço, vai de 1 até n (usar indexação iniciando em 1 facilita entender a “posição” que o enunciado pede).
  • pos: posição onde x foi encontrado; inicializamos com um valor especial que indica “não encontrado”. Uma escolha comum é pos \leftarrow -1.
  • Convenção de igualdade:
    • Se os valores são inteiros, a comparação v = x é direta.
    • Se são reais, cuidado com comparação exata (pode-se usar uma tolerância \varepsilon se for necessário); aqui vou assumir que a comparação direta é apropriada (caso comum em exercícios básicos).

Passo 4

Estratégia detalhada passo a passo (em palavras, preparando para o código).
  • Inicializar pos \leftarrow -1 (significa "ainda não achei x").
  • Para i variando de 1 até n:
    • Ler o próximo valor e guardar em v.
    • Comparar v com x.
    • Se v = x e pos = -1 (ou simplesmente se ainda não achou), definir pos \leftarrow i e interromper a leitura precoce (opcionalmente, pode-se continuar lendo para consumir entrada, mas não necessário para o resultado).
  • Depois do laço:
    • Se pos = -1, imprimir que x não aparece.
    • Se pos \neq -1, imprimir que x aparece e mostrar pos.
Observação sobre interromper cedo (break) versus continuar lendo:
  • Parar no primeiro encontro (usar break) é eficiente e suficiente se só for necessária a primeira posição.
  • Se for obrigatório consumir todos os n valores (por especificação de entrada em alguns juízes), pode-se ainda parar a busca mas continuar lendo os valores sem compará-los (ou simplesmente não parar e registrar a primeira ocorrência sem break).

Passo 5

Exemplo prático passo a passo (vai ajudar a fixar).
  • Exemplo: suposição de entrada
    • x = 7
    • n = 5
    • sequência de n valores: 3, 7, 4, 7, 9
  • Execução:
    • Inicialmente pos = -1.
    • i=1: lê v=3. 3 = 7? Não. pos continua -1.
    • i=2: lê v=7. 7 = 7? Sim. pos \leftarrow 2. Como queremos a primeira posição, podemos dar um break aqui.
    • Conclusão: pos = 2, então imprimir que x aparece e sua posição é 2.
Se preferirmos listar todas as posições, ao invés de parar em i=2 continuaríamos e guardaríamos as posições 2 e 4.

Passo 6

Cuidados e casos especiais (para não ser pego de surpresa na prova).
  • Caso n = 0: não há números a ler; algoritmo deve simplesmente imprimir que x não aparece.
  • Entrada inválida (por exemplo n < 0): normalmente assumir que a entrada é válida; em prova com especificação estrita, pode-se tratar como erro.
  • Tipos numéricos:
    • Inteiros: usar v = x sem preocupação.
    • Reais: para evitar erros por precisão use uma tolerância \varepsilon e compare |v-x| < \varepsilon.
  • Formato de saída:
    • O enunciado não especifica o texto exato; escolha um formato claro: por exemplo imprimir uma linha “NAO” se não aparece, ou “SIM pos” se aparecer. Atenção a possíveis exigências do avaliador/questão (alguns pedem exatamente “SIM” e “NAO” ou outras palavras).

Passo 7

Complexidade e por que essa escolha é boa para a prova.
  • Tempo: no pior caso o algoritmo lê e compara todos os n valores — complexidade O(n).
  • Espaço: apenas algumas variáveis auxiliares — espaço O(1).
  • Por ser simples, evita erros de implementação em condição de prova e é rápido o suficiente para praticamente qualquer n típico de exercícios.

Passo 8

Resumo final do raciocínio e pequenas dicas de implementação para linguagens comuns.
  • Implementar um laço for/while lendo um valor por iteração e comparando com x.
  • Usar pos = -1 para marcar “não encontrado”.
  • Ao encontrar, atribuir pos e parar (ou guardar e continuar, dependendo do que se pede).
  • Exemplo de detalhe em C/Python/Java: lembre-se de converter corretamente tipos de entrada (int, float) e de imprimir a posição começando em 1.

Resposta

Leia x\nLeia n\n pos \leftarrow -1\nPara i \leftarrow 1 até n faça\n Leia v\n Se v = x então\n pos \leftarrow i\n Pare o laço\nFim do para\nSe pos = -1 então\n Imprimir “Elemento não encontrado”\nSenão\n Imprimir “Elemento encontrado na posição”, pos\nFim se

Exercícios relacionados