Você está na página 1de 12

Prova Institucional (PI) - M4 e M8 - 2023/1 - Tecnologia em Análise e

Desenvolvimento de Sistemas - 2º PERÍODO - Estruturas de Dados -


12000010124_20231_01
A A 

FINALIZAR AVALIAÇÃO?

RESUMO DA AVALIAÇÃO
Verifique as marcações abaixo e confirme o envio de suas respostas ao final desta janela.
Caso seja necessário alguma alteração, retorne para a avaliação e faça a correção antes do
envio.

Para finalizar sua avaliação é necessário digitar a chave de envio.

Estruturas de Dados
Questão 1)

Programar sistemas requer um leque de conhecimentos quanto ao


comportamento computacional e à forma que um computador interpreta os
dados nele inseridos. Diferentemente de um ser humano, um computador não
é capaz de determinar por conta própria se um determinado dado é um texto,
um número inteiro ou número decimal, de forma que compete ao programador
declarar o tipo de dado ao qual uma estrutura pertence (salvo em linguagens
fracamente tipadas que executam a identificação indireta, sem declaração
explícita). Dessa maneira, em linguagens fortemente tipadas, o programador
deve preparar a estrutura (variável, vetor, constante, etc.) para que ela seja
capaz de receber dados que sejam compatíveis com os tipos previamente
declarados, evitando erros ou falhas no funcionamento do software.
 
Baseando-se no texto apresentado, analise o seguinte cenário:
 
Artur é engenheiro e, visando otimizar suas atividades diárias, está
desenvolvendo um pequeno software que seja capaz de automatizar
determinadas tarefas de cálculos mediante a inserção de entradas feitas pelo
usuário do sistema. Uma das fórmulas utilizadas requer a inserção de dois
números que devem ser divididos entre si para gerar um resultado a ser
aplicado à etapa seguinte da inequação proposta pelo algoritmo do sistema.
 
Devido ao conhecimento na área, Artur, corretamente, declarou algumas
variáveis para resolver esse bloco de instruções, tomando o cuidado de manter
A)
todas as variáveis desse bloco declaradas como Float, o que garante que tanto
a inserção quanto o resultado tenham até 23 casas de precisão depois da
vírgula.

 
B)
as duas variáveis que se dividem entre si sendo do tipo Float, uma vez que
esse tipo de dado contém maior precisão que o tipo Double.
 
C)
o divisor e dividendo sendo do tipo Double e, para o resultado, o
tipo Float, garantindo maior precisão do quociente gerado.
 
D)
a variável de resultado sendo do tipo Inteiro, uma vez que números com casas
decimais em algoritmos de programação são sempre arredondados para mais.

E)
ao menos a variável que armazena o valor da divisão, sendo do tipo Double,
uma vez que o resultado pode ser um número decimal de alta precisão.

Estruturas de Dados
Questão 2)

Qual método é utilizado para remover e retornar o último elemento de um


deque em Python?
A)
pop()
B)
remove()
C)
popleft()
D)
append()
E)
appendleft()
Estruturas de Dados
Questão 3)

Muitos dos algoritmos conhecidos são recursivos em sua estrutura, ou seja,


para resolver um determinado problema, eles chamam recursivamente a si
próprios (uma ou mais vezes) e lidam com os subproblemas relacionados.
Esses algoritmos normalmente seguem uma abordagem de dividir e conquistar:
eles dividem o problema em várias instâncias semelhantes ao problema
original, mas menores em tamanho, resolvem as instâncias recursivamente e,
em seguida, as soluções são combinadas para construir uma solução para o
problema.
 
O algoritmo Merge Sort segue de perto o paradigma dividir e conquistar. Ele é
um importante algoritmo para ordenação de dados em memória principal.
Como ele é baseado em uma estratégia de divisão e conquista, uma de suas
principais operações está relacionada com a mesclagem dos subvetores
(instâncias de menor tamanho) ordenados.
 
Em um curso de Sistemas de Informação, algumas aulas foram dedicadas à
análise dos algoritmos de ordenação mais tradicionais. Em uma dessas aulas,
o algoritmo Merge Sort foi estudado e o professor lançou um desafio para os
alunos. Foi pedido para que eles julgassem algumas afirmações sobre o
processo de ordenação realizado pelo algoritmo sobre um vetor composto dos
seguintes elementos: 38, 27, 43, 3, 9, 82, 10.
 
Considerando o desafio proposto pelo professor, avalie as afirmações a seguir.

I. O professor afirmou que o número de chamadas recursivas até que todos os


subvetores de tamanho 1 sejam gerados é o mesmo para as duas metades do
vetor original.

II. De acordo com o professor, para a construção do vetor ordenado, o


procedimento de mesclagem precisa ser invocado seis vezes.

III. Outra afirmação feita pelo professor foi a de que apenas um subvetor
gerado a partir do processo de divisão tem tamanho 1.

IV. Finalmente, o professor disse que em todos os processos de mesclagem há


troca de posição entre chaves.
 
Está correto apenas o que se afirma em 
A)
II, III e IV.
B)
I, III e IV.
C)
II e III.
D)
I e II.
E)
I e IV.
Estruturas de Dados
Questão 4)

Qual das opções a seguir não é uma característica das listas sequenciais
estáticas?
A)
Alocação contígua de memória.
B)
Requer realocação de memória para expansão.
C)
Acesso rápido aos elementos.
D)
Inserção e remoção de elementos flexíveis.
E)
Tamanho fixo.

Estruturas de Dados
Questão 5)

Uma estrutura de dados comumente utilizada é a fila. Uma fila é semelhante a


uma fila de caixa de um supermercado, na qual o caixa atende a pessoa no
início da fila primeiro. Outros clientes entram no final da fila e esperam ser
atendidos. Os nós de fila são removidos apenas a partir da cabeça (ou no
início) da fila e são inseridos apenas na cauda (ou no final). Por essa razão,
uma fila é uma estrutura de dados primeiro a entrar, primeiro a sair (FIFO
- first-in, first-out). As operações de inserção e remoção são conhecidas
como enqueue e dequeue. Um exemplo do uso destas operações pode ser
visualizado na imagem a seguir, que representa a criação da classe Queue. As
filas também têm muitas utilizações em sistemas de computador. Cada CPU
em um computador pode atender a um único aplicativo por vez. Todo aplicativo
que requer tempo de processador é colocado em uma fila. O aplicativo na
frente da fila é o próximo a receber o serviço. Cada aplicativo avança
gradualmente para a frente à medida que os aplicativos antes dele recebem o
serviço.
 

 
DEITEL, Paul; DEITEL, Harvey. Java: como programar. 10. ed. São Paulo:
Pearson Education do Brasil, 2017.
 
Um programador, durante o desenvolvimento de uma determinada aplicação
identificou a necessidade de implementação de uma fila. Para implementação
desta, e a fim de atender às políticas citadas no texto apresentado e à estrutura
presente na imagem, precisou implementar algumas regras. Neste contexto,
avalie as asserções a seguir e a relação proposta entre elas sobre as regras
implementadas pelo programador para atender à política das filas.
 
I. O programador precisou criar um método Queue<T> responsável por chamar
o método List<T> adequado para cada situação, visto que enqueue chama
List<T> insertAtBack  e dequeue chama List<T> removeFromFront.
 
PORQUE
 
II. Para reutilização do método Queue, a classe Queue<T> precisa ser
declarada no pacote anteriormente criado.
 
A respeito dessas asserções, assinale a opção correta.
A)
As asserções I e II são proposições falsas.
B)
As asserções I e II são proposições verdadeiras, e a II é uma justificativa da I.
C)
A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.
D)
A asserção I é uma proposição falsa, e a II é uma proposição verdadeira.
E)
As asserções I e II são proposições verdadeiras, mas a II não é uma
justificativa da I.

Estruturas de Dados
Questão 6)

Na computação, duas das estruturas de dados mais conhecidas e comumente


utilizadas são a FILA e a PILHA. Muitas vezes, é necessário desenvolver
classes específicas para se trabalhar com essas estruturas. A fila implementa o
conceito First-in, First-out, em português “Primeiro a entrar, Primeiro a sair”, ou
seja, o primeiro elemento inserido na lista é também o primeiro a ser removido.
Podemos pensar, por exemplo, em uma fila de banco: a primeira pessoa a
entrar na fila será a primeira a ser atendida, logo, a primeira a sair da fila.

RODRIGUES, Joel. Queue e Stack: Trabalhando com os modelos FIFO e LIFO


em .NET. DevMedia, Rio de Janeiro, 2012. Disponível em:
https://www.devmedia.com.br/queue-e-stack-trabalhando-com-os-modelos-fifo-
e-lifo-em-net/25579. Acesso em: 14 maio 2021 (adaptado).
 
Perante o exposto, analise a situação hipotética a seguir.
 
João está implementando um sistema de atendimento on-line que deve
gerenciar uma Fila de Prioridades. Nesse sistema, serão concedidos três tipos
de prioridades: Tipo A, Tipo B e Tipo C. Dessa forma, os usuários com
prioridade do Tipo A devem ser atendidos antes dos usuários com prioridade
do Tipo B; os usuários que tiverem prioridade do Tipo B devem ser atendidos
antes dos usuários com prioridade do Tipo C. Diante disso, observe a ordem de
acesso à plataforma a seguir.
 
08h00min: Ana Paula (Tipo C)
08h02min: Pedro (Tipo C)
08h07min: João (Tipo A)
08h09min: Lila (Tipo B)
08h12min: Miguel (Tipo C)
08h15min: Clara (Tipo A)
 
Considerando que os atendimentos começaram às 08h e que cada um dura
exatamente 10 minutos, avalie as afirmações a seguir.
 
I. Quando os atendimentos começaram, havia somente Ana Paula na Fila de
Prioridades, por isso, ela foi a primeira a ser atendida.
 
II. João foi o segundo usuário a ser atendido, com o atendimento realizado
pontualmente às 08h10min.
 
III. Clara foi a terceira a ser atendida, com o atendimento iniciado às 08h20min
e concluído às 08h30min.
 
É correto o que se afirma em
A)
I e II, apenas.
B)
I, II e III.
C)
I, apenas.
D)
II e III, apenas.
E)
III, apenas.

Estruturas de Dados
Questão 7)

Uma estrutura de dados que possibilita consultas rápidas se chama árvore. Tal


estrutura mantém os dados organizados de forma hierárquica, o que reduz
bastante a quantidade de comparações necessárias para se encontrar algum
valor. Um exemplo é a árvore de diretórios, que organiza os arquivos em disco
em diretórios que formam um diagrama hierarquizado. Esse tipo de estrutura é
largamente utilizado em bancos de dados e também possui diversas aplicações
em muitas outras áreas de conhecimento (redes de computadores, análise
combinatória, mapas digitais, sistemas de decisão, linguística, diagramas em
geral).
 
Um exemplo de árvore é mostrado na figura a seguir. A hierarquia inicia em um
nodo chamado de raiz. Os demais nodos são conectados de forma hierárquica,
sem haver caminhos fechados. Cada nodo possui ramos que conectam os
nodos um nível abaixo na árvore. A quantidade de ramos de um nodo é
denominada grau do nodo, e o grau da árvore é dado pelo maior grau dentre os
nodos dessa árvore. Nodos com grau zero (que não possuem ramos) são
chamados de folhas. Uma árvore com grau dois (cujos nodos possuem no
máximo dois ramos cada) é chamada de árvore binária, sendo a árvore mais
simples que se pode criar.

Uma nova estrutura de dados chamada árvore de pesquisa binária proporciona


uma grande eficiência no tempo de busca de um dado. Ela também tem outras
propriedades interessantes e que são úteis para resolver diversos
problemas. Uma árvore de pesquisa binária é um tipo especial de árvore
binária usada para armazenar valores ordenáveis.
 
IFSC. Introdução a árvores binárias. Disponível
em: https://wiki.sj.ifsc.edu.br/index.php/PRG29003:_Introdu
%C3%A7%C3%A3o_a_%C3%A1rvores_bin%C3%A1rias. Acesso em: 14 out.
2020.
 
 
Em árvores binárias duas propriedades são verificadas: (1) valores menores
que o da raiz ou em um nodo ficam na árvore conectada ao ramo esquerdo da
árvore e (2) valores maiores que o da raiz em um nodo ficam na árvore
conectada ao ramo direito.
 
Assim, considere a árvore binária explicitada a seguir.

Observe que a raiz é o número 14, todos os números menores que 14


encontram-se à esquerda da árvore, enquanto os números maiores que 14
devem estar localizados no lado direito da árvore. Com base nessas
informações, julgue as afirmações a seguir.
 
I. Ao inserir os números 2 e 18 na árvore binária, estes se encontrarão nas
posições de   e  , respectivamente.
 
II. A visita dos nós feita em pré-ordem resultará na sequência  .
 
III. O número máximo de nós que a árvore suporta é igual à soma do número
máximo de nós em cada nível, ou seja, para   níveis, temos que o número de

nós é dado por  .


 
É correto o que se afirma em
A)
I, II e III.
B)
I, apenas.
C)
II, apenas.
D)
I e III, apenas.
E)
II e III, apenas.

Estruturas de Dados
Questão 8)

Um TAD (Tipo Abstrato de Dados) é um dado definido com base nos tipos
primitivos especificados pelas linguagens de programação, como int, float e
char, entre outros. Com ele, é possível criar estruturas compostas de
elementos de diversos tipos que podem ser tratadas de forma agrupada.
 
CELES, W.; CERQUEIRA, R.; RANGEL, J. L. Introdução a estrutura de
dados. São Paulo: Campus, 2004.

Uma lista é um conjunto de dados que estão relacionados em determinada


ordem linear. Cada item dela representa um nó da cadeia e pode conter
elementos de apenas um tipo de dados primitivo ou de um tipo composto,
como um TAD. As listas são amplamente utilizadas em sistemas
computacionais, nos quais diversas atividades do mundo real podem ser
representadas por elas.
 
EDELWEISS, N.; GALANTE, R. Estrutura de dados. Porto Alegre: Bookman,
2009. (Série Livros Didáticos Informática UFRGS, v. 18).
 
Analise o trecho de código a seguir, que trata de uma lista estática do tipo TAD:

 
Com base na análise do código apresentado na ilustração, avalie as
afirmações a seguir.
 
I. Define a estrutura TAD do Jogador.

II. Define os protótipos das funções de acesso à lista.

III. Define o número máximo de elementos de uma lista.

IV. Define o array que vai armazenar os dados dos jogadores em cada posição.

V. Define a inclusão dos protótipos das funções, bem como a sua estrutura de
definição
 
É correto apenas o que se afirma em
A)
I e II.

B)
III e IV.

C)
V.

D)
I, II, III e IV.

E)
I, III e V.

Estruturas de Dados
Questão 9)

O que é um algoritmo de pesquisa binária?


A)
Um algoritmo que utiliza a pesquisa por força bruta para encontrar a resposta.
B)
Um algoritmo que pesquisa cada elemento do conjunto de dados
individualmente até encontrar a resposta.
C)
Um algoritmo que divide o conjunto de dados em dois grupos, buscando a
resposta no grupo correto.
D)
Um algoritmo que utiliza uma estrutura de dados binária para armazenar os
elementos da pesquisa.
E)
Um algoritmo que utiliza uma técnica de pesquisa baseada em números
binários.

Estruturas de Dados
Questão 10)

Qual é a definição correta de uma lista encadeada simples?


A)
Uma estrutura de dados que permite acesso direto aos seus elementos.
B)
Uma estrutura de dados que armazena elementos de forma aleatória.
C)
Uma estrutura de dados que armazena elementos de forma sequencial.
D)
Uma estrutura de dados que armazena elementos de forma ordenada.
E)
Uma estrutura de dados que consiste em nós ligados entre si.

Você também pode gostar