SóProvas


ID
740404
Banca
CEPERJ
Órgão
PROCON-RJ
Ano
2012
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Observe o algoritmo abaixo, referente a um programa de computador, onde / representa divisão entre inteiros.

      algoritmo prog;
     var 
         array[1..8] of inteiros : tab;
         lógica : achou;
         inteiro : D, m, ini, fim, centro;
     procedimento PROC11;
     início
         para m de 1 até 8 faça ler(tab[m]);
     fim_do_procedimento;
     procedimento PROC22;
     início
         ler(D);
         achou=false;
         ini = 1;fim = 8;centro = (ini+fim) / 2;
         enquanto (D < > tab[centro]) e (ini < > fim) faça
              início
                 se D > tab[centro] então ini = centro+1
                                           senão fim = centro;
                 centro = (ini + fim) / 2;
              fim_do_procedimento;
         se D = tab[centro] então achou = VERDADEIRO
                                   senão achou = FALSO;
         se achou então escreva(D,' encontra-se na posição ',centro)
                        senão escreva(D,' não se encontra na tabela...');
     fim_do_procedimento;
     início
        PROC11;
        PROC22;
     fim_do_algoritmo.


 

Alternativas
Comentários
  • Letra E.
    O algoritmo da questão preenche um vetor de inteiros de 8 posições e, dado um valor inteiro D, retorna a posição dele no vetor, se o encontrar.
    O procedimento de busca começa pelo meio do vetor e, partir da comparação de valores, redefine o início ou o fim, reduzindo o escopo de busca, (sempre pela metade), e pegando o valor do meio desse novo escopo para comparação com D, até encontrar, ou se certificar que não o valor não está no vetor.
    Não está explicito, mas subentende-se que os valores lidos já estão ordenados.
  • O algoritmo se refere a uma busca binária, porém só é aplicável se o vetor "tab" estiver ordenado (o que não está explícito na questão).

  • Força Guerreiro!!!!!!