Baixe o app para aproveitar ainda mais
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.
Compartilhar