Sobre o algoritmo abaixo, é correto afirmar que: Proced...
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)
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