Sobre o algoritmo abaixo, é correto afirmar que: Proced...

Próximas questões
Com base no mesmo assunto
Q222012 Algoritmos e Estrutura de Dados
Sobre o algoritmo abaixo, é correto afirmar que:
Procedimento XYZ( TABELA, NUMERO DE CODIGOS, CEP);
tipo tabela de conversão = vetor[1: NUMERO DE CODIGOS] conversão;
tipo de conversão = registro inteiro: CA, CN fim registro;
tabela de conversão: TABELA;
inteiro: NUMERODECODIGOS, CEP;
inicio

       inteiro comeco, meio, fim;
       COMECO <- 1; FIM <- NUMERODECODIGOS;
       repita
       MEIO ,<-( COMECO + FIM) /2 
       se CEP <TABELA[MEIO].CA;
                então FIM <- MEIO -1;
                senão
                       se CEP>TABELA[MEIO].CA;
                       então
                       CEP <- TABELA[MEIO] +1;
                       senão
                       Imprima( " Falta CEP", NUMERO);
            fim se;
            abandone;
      fim se; 
fim se;
até COMECO> FIM;
fim(XYZ)


















Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa Correta: E

Vamos analisar a questão e entender as razões pelas quais a alternativa E é a correta, além de explicar por que as outras estão incorretas.

O algoritmo apresentado na questão é uma implementação de pesquisa binária em uma tabela de conversão. A pesquisa binária é um método eficiente para encontrar um elemento em uma lista ordenada, dividindo repetidamente o espaço de busca pela metade.

Aqui está a análise detalhada das alternativas:

A - é um algoritmo de pesquisa sequencial.

Esta alternativa está incorreta porque o algoritmo apresentado não percorre a tabela de forma sequencial. Em uma pesquisa sequencial, os elementos são verificados um por um, do início ao fim da lista. No entanto, o algoritmo faz uso de variáveis COMECO, MEIO e FIM, o que é característico da pesquisa binária, não sequencial.

B - repita ... até COMECO > FIM é um comando condicional.

Esta alternativa está incorreta porque a estrutura repita ... até representa um laço de repetição (loop) que executa o bloco de código até que a condição COMECO > FIM seja verdadeira. Ou seja, é um comando de repetição, não condicional.

C - a dimensão de pesquisa é definida pela variável NUMERODECODIGOS/2.

Esta alternativa está incorreta porque a dimensão de pesquisa não é definida por NUMERODECODIGOS/2. Na verdade, o valor de MEIO é calculado como (COMECO + FIM) / 2 durante cada iteração do laço de repetição, o que é típico da pesquisa binária para achar o elemento central da área de pesquisa.

D - COMECO é uma variável global.

Esta alternativa está incorreta porque a variável COMECO é declarada dentro do procedimento XYZ, o que a torna uma variável local ao procedimento e não global.

E - o algoritmo pesquisa a tabela de conversão TABELA, procurando o CA que seja igual ao CEP. Encontrando troca CEP pelo CN correspondente e, não encontrando, move brancos para CEP.

Esta alternativa está correta. O algoritmo busca na tabela de conversão (TABELA) por um valor CA que corresponda ao CEP. Se encontra, imprime a mensagem "Falta CEP". Caso contrário, a busca continua ajustando COMECO e FIM até que o valor seja encontrado ou que a condição COMECO > FIM se torne verdadeira, indicando que a busca terminou sem sucesso.

Lembre-se que o entendimento correto de como os algoritmos de pesquisa funcionam é crucial para resolver questões como esta. A pesquisa binária, por exemplo, é um algoritmo muito eficiente para listas ordenadas, reduzindo significativamente o número de comparações em comparação com a pesquisa sequencial.

Se precisar de mais alguma explicação ou tiver dúvidas sobre outros temas, estou à disposição para ajudar!

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo