Buscar

AO1 - Algoritimo e lógica de programação3

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 6 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 6 páginas

Prévia do material em texto

Pontuação desta tentativa: 1 de 1
Pergunta 1
0,2 / 0,2 pts
Leia o texto a seguir:
A busca de uma determinada informação em banco de dados depende de um identificador, 
chamada de chave. O identificador chave é um elemento de valor único que serve para 
identificar um conjunto de dados. Por exemplo, o código de registro do aluno, conhecido como 
RA, identifica um conjunto de dados de um determinado aluno. Logo, se necessitarmos acessar 
alguma informação de um aluno no banco de dados, basta que tenhamos seu número de RA e, 
com isso, faremos a busca no banco de dados para recuperar o conjunto de dados do aluno. 
Destacamos duas técnicas de busca em um conjunto de dados: a sequencial e a binária. A 
busca binária consiste em fazer sucessivas divisões do conjunto de dados ao meio e verificar 
em qual metade a chave procurada pode estar. Essa busca termina quando a chave é 
encontrada ou quando não há mais possibilidade de divisão.
Considerando as informações apresentadas, avalie as afirmações a seguir:
I. A utilização da técnica da pesquisa sequencial e a técnica da pesquisa binária são 
equivalentes, em termos de performance, pois ambas fazem a mesma quantidade de 
comparação no pior caso.
II. O método de busca binária é muito eficiente, independentemente se estes dados 
estiverem ordenados ou não, pois a técnica de divisões sucessivas é o ponto mais 
importante.
III. Utilizando-se a técnica da busca, para encontrar informações em um conjunto de 
dados, no caso em que estes estejam desordenados, requer que façamos uma pesquisa 
sequencial, começando do primeiro elemento. Por outro lado, a busca pode ficar mais 
eficiente, se estes dados estiverem ordenados. Podemos então utilizar a técnica da busca 
binária.
É correto o que se afirma, apenas, em:
 
I e II, apenas.
Correto!
 
III, apenas.
Alternativa está correta. A afirmativa I está incorreta, pois a técnica da pesquisa sequencial e pesquisa binária não é 
equivalente em termos de performance. No pior caso, para a busca em um conjunto com n elementos, a pesquisa 
sequencial necessita fazer n verificações, ao passo que a pesquisa binária faz somente . A afirmativa II está 
incorreta, pois o método de busca binária é aplicado apenas se os de conjunto de dados estiverem ordenados. A 
afirmativa III está correta, pois a técnica de busca, considerando-se um conjunto de dados desordenados, deve ser 
feita por busca sequencial; partindo-se do primeiro, deve-se verificar cada elemento na sequência. A busca termina 
quando o elemento for encontrado ou quando for percorrido todo o conjunto. Nesse caso, não podemos fazer com a 
busca binária porque se utiliza a técnica de sucessivas divisões em metades. Depois, compara-se a chave de 
pesquisa com o elemento central. Se a chave for maior do que o elemento central, significa que o elemento 
procurado somente poderá estar do lado direito do elemento central, portanto, o lado esquerdo será desprezado na 
busca. Essa técnica somente funciona para dados ordenados.
 
I, II e III.
 
II e III, apenas.
 
I, apenas.
Pergunta 2
0,2 / 0,2 pts
Leia o texto abaixo:
A melhor forma de resolução de problemas computacionais de resolução complexa é dividi-lo 
em partes menores. Tecnicamente, na linguagem C, isso pode ser resolvido com a utilização de 
função. Uma função são as partes de um código que realizam alguma tarefa específica e que 
podem ser chamadas em vários pontos do programa.
Um fator que proporciona a utilização da técnica de subdivisão de problemas (dividir para 
conquistar) é o fato de as linguagens implementarem a passagem e o recebimento de valores, 
para que as funções os manipulem. Nesse sentido, a linguagem C proporciona uma estrutura e 
sintaxe para que a utilização de funções seja um benefício para a programação. As funções na 
linguagem C podem receber valores de todos os tipos de dados suportados pela linguagem, 
inclusive estruturas de vetores e matrizes.
Considerando esse texto, avalie as seguintes asserções e a relação proposta entre elas.
I. Uma função pode ser declarada sem lista de parâmetros, tendo assim uma lista vazia. Mas na 
linguagem C, mesmo na situação de lista vazia, faz-se necessário que sejam codificados a 
abertura e o fechamento de parênteses.
PORQUE
II. Na linguagem C, a sintaxe da definição de uma função é:
 especificador_de_tipo nome_da_função(lista de parâmetros)
 {
 corpo da função
 }
A esse respeito, assinale a opção correta:
Correto!
 
As asserções I e II são proposições verdadeiras, e a asserção II é uma justificativa da I.
Alternativa está correta. A asserção I é verdadeira porque, em linguagem C, uma função pode, ou não, exigir a 
passagem de parâmetros. Isso depende da finalidade da passagem e da estratégia de arquitetura que o 
programador aplicou no programa. Portanto, a forma que a linguagem C disponibiliza para essa situação de lista de 
parâmetros vazia é pura e simplesmente a codificação da abertura e do fechamento de paracenteses. A asserção II 
é verdadeira e justifica a asserção I, pois, mesmo com a lista vazia, a sintaxe da linguagem exige a codificação dos 
 
A asserção I é uma proposição verdadeira, e a asserção II é uma proposição falsa.
 
As asserções I e II são proposições verdadeiras, mas a asserção II não é uma justificativa da I.
 
A asserção I é uma proposição falsa, e a asserção II é uma proposição verdadeira.
 
As asserções I e II são ambas proposições falsas.
Pergunta 3
0,2 / 0,2 pts
Leia o texto abaixo:
No universo da computação, existe uma tarefa que é muito importante pela amplitude de sua 
utilização: a ordenação e pesquisa. Essas tarefas são amplamente utilizadas em todos os 
gerenciadores de banco de dados.
A ordenação é o processo de arranjar um conjunto de informações semelhantes em uma ordem 
crescente ou decrescente. Existem três métodos de ordenação: por troca, por seleção e por 
inserção. A ordenação por troca envolve repetidas comparações e, se necessário, a troca de 
dois elementos adjacentes. A ordenação por seleção aplica a técnica de seleção do elemento 
de menor valor e troca-o pelo primeiro elemento. A ordenação por inserção inicialmente ordena 
os dois primeiros membros do vetor. Em seguida, o algoritmo insere o terceiro membro de sua 
posição ordenada com relação aos dois primeiros membros.
Na implementação das técnicas de ordenação, podemos utilizar os paradigmas de laço de 
repetição e a linguagem de programação C oferece comando de controle de laço de repetição.
(Fonte: SCHILDT, H. C Completo e Total. São Paulo: Makron Books, 2006, p. 501).
Sobre métodos de ordenação e busca, assinale a opção correta:
 
Para o ordenador de uma matriz unidimensional, a única estrutura de repetição (linguagem C) 
que atende à necessidade é o comando do-while. Isso ocorre porque os outros comandos (for e 
while) não proporcionam formas de acesso a cada posição do vetor a ser ordenado.
 
Para ordenar uma matriz unidimensional, podemos utilizar a estrutura de decisão switch, com a 
qual podemos ter acesso a cada elemento da matriz com a utilização de indexadores criados 
para essa finalidade.
 
É totalmente inviável a utilização do comando while (linguagem C) para ordenador de uma 
matriz unidimensional, pois, ao contrário da estrutura for, não podemos utilizar a variável que 
controla o laço de repetição while para indexar a todas as posições do vetor.
Correto!
 
Para ordenar uma matriz unidimensional, a estrutura de repetição for (linguagem C) é 
fortemente recomendada porque a estrutura do comando proporciona um controle automático 
do acesso a todas as posições do vetor. Outro ponto positivo é que podemos utilizar a própria 
variável que controla o laço for para indexar a todas as posições do vetor.
Alternativa está correta, pois a estrutura de repetição for é uma boa recomendação de uso para atender aos 
paradigmas de ordenação de uma matriz unidimensional. Isso se justifica porque a ordenação de uma matriz 
unidimensional se dá aocomparar seus elementos. Para ter acesso a esses elementos, é necessário que eles 
sejam referenciados por indexadores. O laço for possui um contador que varia de 0 (zero) a n. Para um vetor de n 
posições, podemos utilizar esses contadores na indexação do vetor. Portanto, a estrutura do comando proporciona 
um controle automático do acesso a todas posições do vetor.
 
Não podemos utilizar o laço de repetição for (linguagem C) na técnica de ordenação por troca 
porque o laço for não proporciona ponto de troca de posição dos valores quando da 
comparação entre os valores das posições [k - 1] e [k].
Pergunta 4
0,2 / 0,2 pts
Em programação, as estruturas de controle de fluxo (como as condicionais e os laços de 
repetição) são fundamentais para realizar diversas tarefas, inclusive a busca em vetores.
Nesse sentido, uma tarefa comum é a busca linear, onde o algoritmo percorre elemento por 
elemento de um vetor até encontrar o valor desejado, retornando sua posição.
Esse método é simples, mas pode ser ineficiente para vetores muitos grandes, principalmente 
se o elemento estiver nas últimas posições (ou se não estiver contido no vetor).
Sobre a busca linear e sua implementação, assinale a opção correta:
Correto!
 
A busca linear percorre sequencialmente um vetor até encontrar o valor desejado ou confirmar 
que o valor não está presente, retornando a posição do valor caso ele seja encontrado.
 
A busca linear é incompatível com vetores que contêm elementos repetidos, uma vez que o 
algoritmo termina a execução após encontrar a primeira ocorrência do valor desejado, sem 
verificar o resto do vetor.
 
A busca linear não pode ser implementada em linguagem C, pois essa linguagem não suporta a 
passagem de vetores como parâmetros para funções.
 
A eficiência da busca linear aumenta conforme o tamanho do vetor aumenta, pois o algoritmo 
utiliza técnicas avançadas de predição de posição para encontrar valores rapidamente.
 
Ao realizar uma busca linear em um vetor, o algoritmo sempre encontra o valor desejado na 
primeira posição, tornando o processo altamente eficiente, independentemente do tamanho do 
vetor.
Alternativa correta. A busca linear funciona exatamente como descrito, percorrendo cada 
elemento do vetor sequencialmente até encontrar o valor desejado, retornando a posição desse 
valor. Se o valor não for encontrado, retornará o valor indicado para retorno, caso ele tenha sido 
indicado no código.
Pergunta 5
0,2 / 0,2 pts
Ao aprender sobre estruturas de controle de fluxo em algoritmos, é fundamental entender as 
instruções de decisão, que permitem que o programa tome diferentes direções de execução 
com base em condições. As mais básicas são a estrutura "if" (se) e a "switch" (escolha).
A estrutura "if" avalia uma condição: se essa condição for verdadeira, executa um bloco de 
código; caso contrário, pode seguir para outras verificações ou encerrar a estrutura de decisão. 
A "switch", por outro lado, compara o valor de uma variável com múltiplos casos definidos, 
executando o bloco de código correspondente ao caso que a variável satisfaça.
Com base nessa explicação, avalie os trechos de pseudocódigo a seguir:
I. Se (a > b) Então
 Escreva("A é maior que B")
 Senão
 Escreva("B é maior ou igual a A")
 FimSe
II. Escolha x
 Caso 1:
 Escreva("Opção 1 selecionada")
 Caso 2:
 Escreva("Opção 2 selecionada")
 FimEscolha
III. Se (x == 1) Então
 Escreva("Um")
 CasoContrario Se (x == 2)
 Escreva("Dois")
 FimSe
IV. Para i De 1 Até 10 Faça
 Escreva(i)
 FimPara
Assinale a alternativa com os itens que ilustram corretamente a utilização de uma 
estrutura de decisão "if":
Correto!
 
I, apenas.
 
III, apenas.
 
II e IV, apenas.
 
I, II e III.
 
I e III, apenas.
Alternativa correta. Somente o item I ilustra claramente o uso da estrutura de decisão "if" com 
uma condição, um bloco de código a ser executado se a condição é verdadeira e outro bloco 
para quando a condição é falsa, seguindo a explicação fornecida no enundiado.
Já o item II está incorreto, porque exemplifica o uso da estrutura de decisão "switch" (Escolha-
Caso, neste contexto), e não do "if". A pergunta específica era sobre a estrutura de decisão "if", 
sendo "switch" uma estrutura completamente diferente que seleciona um bloco de código para 
executar com base no valor de uma variável, ao invés de basear esta decisão em uma condição 
verdadeira ou falsa.
O item III é também falso, porque mistura conceitos, tentando ilustrar uma estrutura "if", mas 
com a inclusão da opção "CasoContrario" de forma isolada e sem a ligação correta com outro 
"Se", o que torna a construção lógica da alternativa inadequada para demonstrar claramente a 
estrutura de decisão "if". Além disso, parece tentar combinar em uma única estrutura elementos 
típicos tanto do "if" quanto do "switch", sem aderir corretamente à sintaxe de nenhum dos dois.
O item IV, por sua vez, também é falso, pois apresenta uma estrutura de repetição "for" (Para-
Faça, neste contexto), e não uma estrutura de decisão como "if". A questão estava pedindo 
especificamente a ilustração de uma estrutura de decisão "if", enquanto essa alternativa mostra 
como realizar um loop ou repetição de um bloco de código um número determinado de vezes, o 
que é uma função totalmente distinta.

Outros materiais