Buscar

Atividade 7

Prévia do material em texto

ESTRUTURA DE DADOS 
7a aula Lupa 
 
 
 
 
 
 
Disciplina: CCT0826 - ESTRUTURA DE DADOS 
 
 
1 
 Questão 
 
 
Complete os espaços na afirmativa abaixo e assinale a alternativa que apresenta as respostas corretas: 
O escalonamento .................... é do tipo.................., em que o processo que chegar primeiro na fila de 
pronto é o escolhido para ser executado. 
 
 
SJF (Shortest-Job-First), preemptivo. 
 
FIFO, não-preemptivo. 
 
Circular, não-preemptivo. 
 
LIFO, não-preemptivo. 
 
Por prioridades, preemptivo. 
Respondido em 21/09/2020 20:12:56 
 
 
Explicação: 
O algoritmo de escalonamento FIFO (First in, first out, em português: "O primeiro a entrar é o 
primeiro a sair, sigla PEPS), ou FCFS(First come, first served, em português: "O primeiro a chegar é o 
primeiro a ser servido") é conhecido popularmente por Algoritmo de Fila Simples, é uma estrutura de 
dados que apresenta o seguinte critério: O primeiro elemento a ser retirado é o primeiro que tiver sido 
inserido, é um algoritmo de escalonamento não preemptivo que entrega a CPU os processos pela 
ordem de chegada. Ele executa o processo como um todo do inicio ao fim não interrompendo o 
processo executado até ser finalizado, então quando um novo processo chega e existe um ainda em 
execução ele vai para uma fila de espera. Esta fila de espera nada mais é do que uma fila que organiza 
os processos que chegam até eles serem atendidos pela CPU. 
Neste escalonamento todos os processos tendem a serem atendidos (por isso evita o fenômeno 
do starvation) ao menos que um processo possua um erro ou loop infinito. O loop infinito irá parar a 
máquina, pois com o FIFO não terá como dar continuidade a execução dos processos que estão 
aguardando na fila de espera. 
O algoritmo FIFO não garante um tempo de resposta rápido pois é extremamente sensível a ordem de 
chegada de cada processo e dos antecessores (se existirem) e se processos que tendem a demorar mais 
tempo chegarem primeiro o tempo médio de espera e o turnaround acabam sendo aumentados. 
 
 
 
2 
 Questão 
 
 
javascript:diminui();
javascript:aumenta();
Qual estrutura de dados é mais adequada para armazenar em um sistema operacional os processos que 
estão prontos para utilizar o processador? 
 
 
Lista 
 
Pilha 
 
Árvore 
 
Grafo 
 
Fila 
Respondido em 21/09/2020 20:12:52 
 
 
Explicação: 
Pode se ter uma fila de processos para a CPU (processador), visto que o primeiro processo a chegar à 
fila será atendido primeiro e sairá da fila primeiro, o que faz a lógica FIFO, que rege a fila. Observe a 
característica linear do problema. Por tudo isso, a resposta é fila. 
 
Lista : linear e não segue FIFO. Insere-se em qualquer posição e retira-se de qualquer posição ou se 
mantém a ordem, se for ordenada. 
 
Pilha : segue LIFO 
 
Árvore e Grafo : estrutura de dados não linear. 
 
 
 
3 
 Questão 
 
 
Para organizar o acesso dos processos que demandam recursos do computador (uso da CPU, acesso ao 
disco rígido e a outros dispositivos de Entrada e Saída), o Sistema Operacional gerencia essas 
demandas colocando os processos requisitantes em: 
 
 
Pilhas 
 
Structs 
 
Listas 
 
Árvores 
 
Filas 
Respondido em 21/09/2020 20:14:55 
 
 
Explicação: 
Um exemplo de aplicação de fila : fila de processos para CPU. O primeiro processo a chegar fará uso 
da CPU. O mesmo para os dispostivos de I/O. 
 
 
 
4 
 Questão 
 
 
IFMT - Técnico em Tecnologia da Informação - 2013 
Considere a função insere(x: inteiro), que recebe como parâmetro um número inteiro e o insere em 
uma Fila, e ainda, a função remove(), que retira um valor de uma Fila. 
Dada a Fila [3-4-6-8-10], executam-se os comandos na ordem: insere(1), insere(2), remove(). 
Após a execução desses comandos, qual será a Fila resultante? 
 
 
[2-1-3-4-6-8] 
 
[3-4-6-8-10] 
 
[3-4-6-8-10-1] 
 
[2-3-4-6-8-10] 
 
[4-6-8-10-1-2] 
Respondido em 21/09/2020 20:16:20 
 
 
Explicação: 
Temos a fila inicialmente 
 3 4 6 8 10 
Após inserir 1, a fila ficará : 3 4 6 8 10 1 
Após isnerir 2 : 3 4 6 8 10 1 2 
Após uma remoção : 4 6 8 10 1 2 
 
 
 
5 
 Questão 
 
 
 Considere uma fila simples F de inteiros, do tipo Fila definido abaixo. Tal fila deverá armazenar códigos de agentes de uma 
firma de espionagem, desde que haja espaço para um novo agente. Assinale a opção que corretamente desenfileira o código de 
um agente, sabendo que a fila F foi inicializada de acordo com o trecho de código abaixo. 
struct Fila { in t v[100], inicio, fim; } ; 
Fila F; 
F. inicio = 0; 
F.fim = -1; 
 
 
 
 
 
void desenfileirar(Fila &F) { 
 if (F.fim == -1 && F.inicio == 0) 
 cout << "Não há agentes para retirar. " << endl; 
 else { 
 cout << "Removido o agente " << F.v[F.inicio]; 
 F.inicio++; 
 } 
} 
 
 
 
void desenfileirar(Fila &F) { 
 if (F.inicio > F.fim) 
 cout << "Não há agentes para retirar. " << endl; 
 else { 
 cout << "Removido o agente " << F.v[F.inicio]; 
 } 
} 
 
 
void desenfileirar(Fila F) { 
 cout << "Removido o agente " << F.v[F.inicio]; 
 F.inicio--; 
 } 
 
 
void desenfileirar(Fila &F) { 
 if (F.inicio > F.fim) 
 cout << "Não há agentes para retirar. " << endl; 
 else { 
 cout << "Removido o agente " << F.v[F.inicio]; 
 F.inicio++; 
 } 
} 
 
 
void desenfileirar(Fila F) { 
 if (F.inicio > F.fim) 
 cout << "Não há agentes para retirar. " << endl; 
 else { 
 cout << "Removido o agente " << F.v[F.inicio]; 
 F.inicio++; 
 } 
} 
Respondido em 21/09/2020 20:18:01 
 
 
Gabarito 
Comentado 
 
 
 
 
 
6 
 Questão 
 
 
Considerando que uma fila seqüencial utiliza dois apontadores para indicar suas posições de final e 
início da estrutura, supondo que a fila foi criada com os apontadores apontando para a posição zero do 
vetor, qual das alternativas a seguir pode caracterizar uma fila vazia? 
 
 
Quando o apontador de início apontar para zero. 
 
Quando o apontador de final apontar para zero. 
 
Quando os apontadores de final e início apontarem para zero. 
 
Quando o apontador de final menos um (final-1) for igual ao inicio. 
 
Quando o apontador de posição final for igual ao início. 
Respondido em 21/09/2020 20:26:24 
 
 
Explicação: 
Suponha que nossa fila mora em um vetor fila[0..N-1]. (A natureza dos elementos do vetor é 
irrelevante: eles podem ser inteiros, bytes, ponteiros, etc.) Digamos que a parte do vetor ocupada pela 
fila é 
fila[p..u-1] . 
https://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=4107577239&cod_hist_prova=205808548&pag_voltar=otacka
https://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=4107577239&cod_hist_prova=205808548&pag_voltar=otacka
O primeiro elemento da fila está na posição p e o último na posição u-1. 
A fila está vazia se p == u e cheia se u == N. 
 
 
 
 
 
7 
 Questão 
 
 
Analisando a figura abaixo, marque a alternativa correta que apresenta o tipo de estrutura de dados 
utilizado. 
 
 
 
Fila 
 
Struct 
 
Matriz 
 
Pilha 
 
Hash 
Respondido em 21/09/2020 20:27:09 
 
 
Explicação: 
Na fila insere-se no fim e retira-se do início. 
 
 
 
Gabarito 
Comentado 
 
 
 
 
 
8 
 Questão 
 
 
https://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=4107577239&cod_hist_prova=205808548&pag_voltar=otacka
https://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=4107577239&cod_hist_prova=205808548&pag_voltar=otacka
Considere uma fila simples F de inteiros, do tipo Fila definido abaixo. Tal fila deverá armazenar códigos de agentes de uma 
firma deespionagem, desde que haja espaço para um novo agente. Assinale a opção que corretamente enfileira o código de 
um agente, sabendo que a fila F foi inicializada de acordo com o trecho de código abaixo. 
struct Fila { in t v[100], inicio, fim; } ; 
Fila F; 
F. inicio = 0; 
F.fim = -1; 
 
 
 
 
void enfileirar(Fila F, int codigo) { 
 F.fim++; 
 F.v[F.fim] = codigo; 
} 
 
 
 
void enfileirar(Fila &F, int codigo) { 
 F.v[F.fim] = codigo; 
 F.fim++; 
} 
 
void enfileirar(Fila &F, int codigo) { 
 if (F.fim == 99) 
 cout << "Não há espaço na firma para mais agentes. " << endl; 
 else 
 F.fim++; 
 F.v[F.fim] = codigo; 
} 
 
 
 
void enfileirar(Fila &F, int codigo) { 
 if (F.fim == 99) 
 cout << "Não há espaço na firma para mais agentes. " << endl; 
 else { 
 F.fim++; 
 F.v[F.fim] = codigo; 
 } 
} 
 
 
void enfileirar(Fila F, int codigo) { 
 if (F.fim == 100) 
 cout << "Não há espaço na firma para mais agentes. " << endl; 
 else { 
 F.fim++; 
 F.v[F.fim] = codigo; 
 } 
} 
 
Respondido em 21/09/2020 20:31:11 
 
 
Gabarito 
Comentado 
 
 
 
 
 
 
 
 
https://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=4107577239&cod_hist_prova=205808548&pag_voltar=otacka
https://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=4107577239&cod_hist_prova=205808548&pag_voltar=otacka
javascript:abre_colabore('38403','205808548','4107577239');

Continue navegando

Outros materiais