Prévia do material em texto
1) Uma operação muito comum nos sistemas computacionais é a operação de consulta ou busca. Ela, geralmente, recebe como parâmetro o elemento que se deseja procurar e um elemento de partida a partir do qual devemos buscar o elemento. Pensando nessa funcionalidade, consideremos a definição das classes “Produto” e “NoProduto” a seguir. Fonte: Elaborada pela autora, 2019. Foi implementado um método de busca por um elemento a partir do valor do atributo de “nome” do “Produto”. Os parâmetros recebidos são o nó visitado (“noProd”) e o nó com os dados procurados (“noProcurado”). Observe o próximo código. Fonte: Elaborada pela autora, 2019. A respeito desse código, assinale a alternativa verdadeira sobre o método “buscar()”, apresentado anteriormente. 2) Um algoritmo pode ser definido como uma sequência finita de ações ou comandos, tendo como objetivo solucionar determinados problemas. Todo algoritmo deve ter uma finalidade, sendo, geralmente, utilizado para fazer operações e retornar um resultado, ou seja, a solução. Esta deve ser exibida ao usuário. Dessa forma, temos que, na linguagem Java, podemos utilizar o comando __________ para imprimir o resultado da soma de duas variáveis na tela. Considerando nossos estudos a respeito da impressão da soma das variáveis, apresentando o resultado formatado com o tipo inteiro, assinale a alternativa a seguir que completa corretamente a lacuna anterior. 3) Um algoritmo é uma sequência de passos que resolve algum problema ou alcança algum objetivo. E uma estrutura de dados definem como as informações serão organizadas na memória. Existem métodos ordenação que reduz o uso de memória e outros que aumentam o volume de memória utilizado. Sendo assim, analise a alternativa do método que possui como desvantagem um gasto extra de espaço de memória. 4) Algoritmos são desenvolvidos para facilitar a nossa vida e fornecer respostas de maneira rápida e eficiente. Podemos descrever a complexidade que um algoritmo possui analisando as funções existentes no código. O algoritmo Quick Sort possui complexidade ______________ no melhor caso, ___________ no caso médio e _____________ no pior caso. Assinale a alternativa que imprima a complexidade dos algoritmos na ordem correta. 5) Imagine que você foi contratado para implementar um aplicativo que testa os conhecimentos da disciplina de Estrutura de Dados no ENEM. Para isso, você modelou uma classe “ EstruturaDadosEnem”, que contém os seguintes atributos: uma string contendo o texto da pergunta, um inteiro correspondente à área do conhecimento e um vetor de cinco strings para armazenar as opções de resposta e dicas de estudo. Como o objetivo é, ao final, indicar para os alunos quais as áreas de estudo que ele tem que se dedicar mais, você decidiu que a estrutura de dados mais propícia seria uma árvore. Considerando essas informações, assinale a alternativa a seguir que contém a implementação de uma classe “EstruturaDadosEnem”, conforme descrito, para ser inserida em uma árvore. 6) Cada algoritmo possui uma complexidade para resolver problemas, no qual é analisado as funções implementadas no algoritmo. Assinale a complexidade do caso médio do algoritmo de ordenação Insertion-Sort. 7) Podemos dizer que uma árvore é binária quando cada um dos seus nós tem 0, 1 ou 2 filhos. Com esta característica, é possível definir uma estrutura de dados em que, além das informações armazenadas, tenhamos acesso ao filho da esquerda e da direita. A figura a seguir representa um nó “Produto”, com a referência para os outros filhos desse “Produto”: “filhoEsquerda” e “filhoDireita”. Fonte: Elaborada pela autora, 2019. Temos, ainda, que um tipo especial de árvore binária é chamado de AVL. Assinale a alternativa a seguir que contém a principal característica desse tipo de árvore. 8) Um array é uma estrutura de dados que armazena uma coleção de informações com o mesmo tipo. Cada elemento dessa estrutura deve ser identificado por nome, tamanho e tipo de dado que será armazenado. O tamanho do array é a quantidade de elementos que ele possui. A posição destes é definida pelo índice, sendo que, na linguagem Java, o índice é iniciado em zero. Assim, para criar e armazenar um valor dentro do array unidimensional, precisamos utilizar o código: 9) Conforme nossos estudos, pudemos entender que o vetor é uma estrutura de dados homogênea, ou seja, uma estrutura com variáveis de mesmo tipo. Assim, para se criar um vetor, devemos ter em mãos algumas informações importantes, como o nome do vetor, o tipo e o tamanho. Com base nisso, podemos dizer que a declaração de vetor se diferencia de uma declaração de variável, pelo uso do delimitador __________. Considerando nossos conhecimentos sobre as estruturas de dados, assinale a alternativa a seguir que preenche corretamente a lacuna anterior. 10) O processo de inserção de um nó em uma árvore binária de busca viabiliza que o processo de busca por um elemento tenha melhor performance que uma busca sequencial, se os dados forem dispostos em uma estrutura mais simples, como um vetor. Por performance, podemos entender como o tempo para se encontrar o elemento e o número de comparações que precisam ser feitas, a fim de se achar o item procurado. Com base nessas informações e em nossos estudos sobre o assunto, analise os esquemas de árvores apresentados a seguir. I. II. III. IV. Agora, assinale a alternativa que contém apenas as representações com árvores binárias de busca.