Buscar

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 84 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 84 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 9, do total de 84 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

Prévia do material em texto

ESTRUTURA DE DADOS 
1a aula Lupa 
Vídeo PPT MP3
1a Questão 
Para organizar as fotos de minha família com os ancestrais de várias gerações, 
minha filha usou uma estrutura de dados que é ..... Assinale a opção certa.
lista 
árvore 
grafo 
pilha 
fila 
Respondido em 18/02/2019 20:17:36 
Explicação: 
Conforme gabarito e aula 1. 
2a Questão 
Estão entre algumas das possíveis formas de estruturas de dados: 
Listas, vetores, cin 
cout, Funções, vetores 
Árvores binárias, pilhas, vetores 
Árvores binárias, pilhas, algoritmos 
Grafos, funções, fila 
Respondido em 18/02/2019 20:18:25 
Explicação: 
Árvores binárias, pilhas, vetores 
Verdadeiro. 
Grafos, funções, fila 
Falso. Funções não são estruturas de dados. Funções são módulos dos programas. 
Árvores binárias, pilhas, algoritmos 
FAlso. Algoritmos não são estrutura de dados. 
Listas, vetores, cin 
Falso. cin não é estrutura de dados. É usado para fazer entrada de dados. 
cout, Funções, vetores 
Falso. Funções e cout não são estrutura de dados. 
3a Questão 
Qual estrutura de dados é mais adequada para armazenar a estrutura do diretório do sistema de arquivos 
de um sistema operacional? 
Pilha 
Grafo 
Fila 
Lista 
Árvore 
Respondido em 18/02/2019 20:18:55 
Explicação: 
A estrutura de diretórios mostra hierarquia e um relacionamento 
não linear. Por isso, a resposta certa é árvore.
Lista, pilha e fila são estruturas de dados linear.
Grafo é não linear, mas não é hierárquica.
4a Questão 
Em relação a estruturas de dados, avalie a correspondência existente entre as 
estruturas de dados Lineares e Não Lineares com suas respectivas coleções 
de dados.
A correta associação entre os elementos das duas tabelas é: 
a1, b1, c2, d1 
a1, b2, c1, d1. 
a2, b2, c1, d2. 
a2, b1, c2, d1. 
a1, b1, c2, d2. 
Respondido em 18/02/2019 20:19:41 
Explicação: 
Por definição : pilha, fila, lista, vetor são estruturas lineares. Já árvore e grafos são estruturas de dados não 
lineares. 
Gabarito 
Coment. 
5a Questão 
A forma correta para imprimir o valor do último elemento de um vetor v com n posições é: 
cout << v[n+1]; 
cout << v[ultimo]; 
cin >> v[-1]; 
cout << v[n]; 
cout << v[n-1]; 
Respondido em 18/02/2019 20:20:05 
6a Questão 
Estão entre algumas das possíveis formas de se estruturar dados: 
Algoritmos, lista ordenada, vetores. 
Grafos, lista ordenada, algoritmos. 
Lista encadeada, vetores, algoritmos. 
Grafos, algoritmos, fila. 
Grafos, lista ordenada, vetores. 
Respondido em 18/02/2019 20:20:21 
Explicação: 
FAlso. Algoritmos não são estrutura de dados Grafos, algoritmos, fila. 
. 
FAlso. Algoritmos não são estrutura de dados. Grafos, lista ordenada, algoritmos. 
Correto. Grafos, lista ordenada, vetores. 
FAlso. Algoritmos não são estrutura de dados. Algoritmos, lista ordenada, vetores. 
FAlso. Algoritmos não são estrutura de dados. 
Lista encadeada, vetores, algoritmos. 
Gabarito 
Coment. 
7a Questão 
Diferentes tipos de estrutura de dados são adequadas a diferentes tipos de aplicação e algumas são altamente 
especializadas, destinando-se a algumas tarefas específicas. Dessa forma a definição de Estrutura de Dados 
está expressa na alternativa: 
É um modo de deleção de dados em um computador. 
São os nomes dados as variáveis na montagem de uma rotina. 
É um modo de utilização de dados nos programas de computador. 
É um modo particular de armazenamento e organização de dados em um computador de modo que 
possam ser usados de modo eficiente. 
É um modo de distribuição e organização de dados em uma rede de computador de modo que 
possam ser usados de modo eficiente. 
Respondido em 18/02/2019 20:20:29 
Explicação: 
Analisando cada item : 
É um modo particular de armazenamento e organização de dados em um computador de modo que 
possam ser usados de modo eficiente. 
Correta. 
É um modo de distribuição e organização de dados em uma rede de computador de modo que possam 
ser usados de modo eficiente. 
FAlso. Não há distribuição de dados ou organização de dados em uma rede via estrutura de dados. 
É um modo de utilização de dados nos programas de computador. 
FAlso. Não se diz como se utiliza dados. Variáveis armazenam dados, por exemplo e em atribuições ou em 
expressões também utilizamos dados. 
São os nomes dados as variáveis na montagem de uma rotina. 
FAlso. Nomes de variáveis são identificadores. 
É um modo de deleção de dados em um computador. 
Falso. Para "deletar" um dado não temos que usar estrutura de dados. 
Gabarito 
Coment. 
8a Questão 
Assinale a alternativa correta sobre tipos abstratos de dados: 
Um tipo abstrato de dados é um modo particular de armazenamento e organização de dados em 
um computador de modo que possam ser usados eficientemente. 
Um tipo abstrato de dados deve sempre ser representado por meio dos recursos específicos de uma 
linguagem de programação. 
Um tipo abstrato de dados descreve, além do que se pode fazer com os dados, como as operações 
serão efetivamente implementadas. 
Um tipo abstrato de dados é composto por um modelo de dados e um conjunto de operadores 
definidos sobre esses dados. 
É fundamental que os tipos abstratos de dados proponham um conjunto eficiente de algoritmos 
para realização de suas operações. 
Respondido em 18/02/2019 20:21:39 
Explicação: 
 Falso : Não se pensa em programa ou na linguagem de programação, pois o TAD não está vinculado à 
implementação. 
ESTRUTURA DE DADOS 
1a aula Lupa 
Vídeo PPT MP3
1a Questão 
Na maioria dos sistemas operacionais, os arquivos são organizados hierarquicamente em um esquema de 
diretórios (pastas) e sub-diretórios. Qual a estrutura mais adequada para representar este problema ? 
árvore 
lista 
fila 
pilha 
grafo 
Respondido em 18/02/2019 20:22:05 
Gabarito 
Coment. 
2a Questão 
Qual estrutura de dados não linear que é utilizada na implementação de Redes de Computadores, na 
Computação Gráfica, em modelagem de circuitos digitais e etc. E que se caracteriza por apresentar um 
conjunto de nós e conexões entre eles. 
Pilhas Encadeadas 
Vetores 
Filas Encadeadas 
Listas Encadeadas. 
Grafos 
Respondido em 18/02/2019 20:22:53 
3a Questão 
As estruturas de dados podem ser caracterizadas como sendo uma forma organizada de armazenar 
dados ou informações na memória, de modo a otimizar o acesso a estes. Muitas vezes existem 
algoritmos de manipulação dados associados a estas estruturas. Verifique as seguintes sentenças: 
I-Filas são estruturas que recuperam os dados na ordem direta em que estes 
foram armazenados. 
II-As Pilhas são estruturas que recuperam os dados na ordem reversa em que estes 
foram armazenados. 
III-As Pilhas são estruturas que recuperam os dados na ordem direta em que estes 
foram armazenados. 
IV-As Filas são estruturas que recuperam os dados na ordem reversa em que estes 
foram armazenados. 
Marque a alternativa CORRETA: 
As alternativas III e IV estão corretas. 
As alternativas II e IV estão corretas. 
Todas as alternativas estão corretas. 
As alternativas I e III estão corretas. 
As alternativas I e II estão corretas 
Respondido em 18/02/2019 20:23:31 
Gabarito 
Coment. 
4a Questão 
Sobre estrutura de dados, identifique o que está correto afirmar. 
I. Pilha é uma estrutura de dados com acesso restrito aos seus elementos, uma vez que eles são colocados
e retirados por um único lado e são ordenados pelo princípio LIFO (last in first out). Assim, sempre que um
elemento é adicionado ou retirado seu topo é alterado.
II. Pilha é o tipo de estrutura usada, por exemplo, na avaliação de expressõesnuméricas, na recursividade
e pelos compiladores, na passagem de parâmetros para as funções.
III. Registro é uma estrutura básica que permite guardar coleções de dados de diferentes tipos, sendo
normalmente utilizado quando um objeto tem diferentes atributos, isto é, contém campos de diferentes
tipos.
IV. Lista pode conter um número qualquer de elementos, expandindo-se ou contraindo-se conforme o
elementos são inseridos ou retirados. Nesse tipo de estrutura, os acessos tanto podem ser feitos
sequencialmente como diretamente.
V. Fila, assim como a pilha , é uma versão especial de lista, e como tal, seus elementos são ordenados pelo
princípio LIFO (last in first out).
I, III e V. 
I, III, IV e V. 
II, IV e V. 
I, II e III. 
II, III, IV e V. 
Respondido em 18/02/2019 20:24:51 
Gabarito 
Coment. 
5a Questão 
É um exemplo de TAD Não Linear: 
Filas 
Filas de Prioridade 
Grafos 
Listas 
Pilhas 
Respondido em 18/02/2019 20:23:42 
Explicação: Um grafo é um tipo de dados abstrato não linear 
6a Questão 
Analise as afirmativas abaixo e selecione a alternativa correta.
I Algumas aplicações da estrutura de dados grafo são: Diagrama de 
Entidade Relacionamento e Redes de computadores. 
II Árvore e lista duplamente encadeada são estruturas não lineares. 
III A Fila é uma estrutura não linear e a inserção de um elemento 
acontece ao final. 
IV A Lista é uma das estruturas de dados mais simples, mas não se 
pode ordená-la.
V O uso de ponteiros é fundamental para construção de listas 
encadeadas.
I e V são verdadeiras 
I , II e IV são verdadeiras 
III e V são verdadeiras 
II E IV são verdadeiras 
II e V são verdadeiras 
Respondido em 18/02/2019 20:25:40 
Gabarito 
Coment. 
7a Questão 
Podemos dizer que estrutura de dados é: 
É a saída, que satisfaz a quaisquer restrições impostas pelo problema, necessária para se calcular 
uma solução do problema. 
A entrada, que satisfaz a quaisquer restrições impostas pelo problema, necessária para se calcular 
uma solução do problema. 
O meio para armazenar e organizar dados com o objetivo de facilitar o acesso e as modificações. 
Uma sequência de passos computacionais que transforma uma entrada em uma saída previamente 
determinada. 
O que permite o armazenamento e a recuperação de dados independentemente de seu conteúdo. 
Respondido em 18/02/2019 20:26:06 
Gabarito 
Coment. 
8a Questão 
A que estrutura pertence a definição: " Uma estrutura não linear que é um conjunto de nós e suas 
conexões entre eles e não há limitação de vértices. Muito utilizada para representação de percursos em 
mapas." 
filas encadeadas 
structs 
listas encadeadas 
grafos 
pilhas encadeadas 
ESTRUTURA DE DADOS 
2a aula Lupa 
Vídeo PPT MP3
1a Questão 
O programa não executa corretamente, pois os protótipos estão 
fora da ordem em que as funções são descritas.
O programa não executa corretamente pois as funções devem 
ser descritas antes da função main(), para que o compilador 
consiga reconhecê-las.
O programa não executa corretamente, pois o protótipo da função 
media( ) não apresenta a identificação dos parâmetros, mas 
apenas os tipos dos mesmos.
O programa executa perfeitamente independente da ordem das 
funções já que existem os seus protótipos.
O programa executa perfeitamente, mas não mostra o valor da 
media já que esta função não foi chamada na função main( ).
Respondido em 18/02/2019 21:32:22 
Gabarito 
Coment. 
2a Questão 
Nas linguagens C e C++, ao se declarar qualquer função, a especificação de tipo de dados que antecede o 
nome desta função define 
o tipo das variáveis que serão utilizadas dentro da função.
o protótipo da função.
o tipo do dado do valor retornado da função para quem a chamou.
o escopo das variáveis do programa.
o tipo dos dados dos parâmetros que são passados à função quando da sua chamada.
Respondido em 18/02/2019 21:23:18 
Explicação: 
Por definição, antes do nome da função colocamos o tipo de dados retornado. Por exemplo, int, double, 
char ... Quando a função nada retorna colocamos void. 
3a Questão 
Qual será a saída para o seguinte trecho de código? 
 void FUNC1() 
{ 
int B = -100; 
cout << "Valor de B dentro da função FUNC1: " << B; 
} 
void FUNC2() { 
int B = -200; 
cout << "Valor de B dentro da função FUNC2: " << B; 
} 
int main() { 
int B = 10; 
cout << "Valor de B: " << B; 
B = 20; 
FUNC1(); 
cout << "Valor de B: " << B; 
B = 30; 
FUNC2(); 
cout << "Valor de B: " << B; 
} 
Valor de B: 10 Valor de B dentro da função FUNC1: -100 Valor de B: 10 Valor de B dentro da 
função FUNC2: -200 Valor de B: 30 
Valor de B: 10 Valor de B dentro da função FUNC1: -100 Valor de B: 20 Valor de B dentro da 
função FUNC2: -200 Valor de B: 30 
Valor de B: 10 Valor de B dentro da função FUNC1: -200 Valor de B: 20 Valor de B dentro da 
função FUNC2: -200 Valor de B: 30 
Valor de B: 10 Valor de B dentro da função FUNC1: -100 Valor de B: 20 Valor de B dentro da 
função FUNC2: -200 Valor de B: 20 
Valor de B: 10 Valor de B dentro da função FUNC1: -100 Valor de B: 20 Valor de B dentro da 
função FUNC2: -400 Valor de B: 30 
Respondido em 18/02/2019 21:28:50 
Explicação: 
A execução começa pela main. Na main, B recebe 10. E daí é impresso : Valor de B : 10 
DEpois, B muda e recebe 20. 
Em seguida, é chamada a função FUNC1. Dentro desta função, existe um outro B que recebe -100. Então, é 
impresso : 
 Valor de B dentro da função FUNC1: -100 
A função termina e voltamos para a main, onde existe um outro cout que imprime o valor de B, que na 
main vale 20. Então, será impresso na tela : 
 Valor de B : 20 
Em seguida, ainda na main, B recebe 30 e logo depois, FUNC2 é chamada. Executando FUNC2 temos que 
um B, local à função, recebe -200 e logo em seguida é impresso : Valor de B dentro da função FUNC2 : 
-200
Terminando a execução de FUNC2, voltamos para a main onde é impresso o valor do B (local à main) 
: Valor de B : 30 
Logo, a opção correta é a que diz : 
 Valor de B : 10 
 Valor de B dentro da função FUNC1: -100 
 Valor de B : 20 
 Valor de B dentro da função FUNC2 : -200 
 Valor de B : 30 
4a Questão 
O que será mostrado na tela pelo programa abaixo ? 
#include < iostream > 
using namespace std; 
int a,b; 
void dobro(int x){ //x passado por valor 
x=2*x; 
} 
int triplo(int y){ //y passado por valor 
 return 3*y; 
} 
void altera(int x, int &y) { //x passado por valor e y passado 
por referencia 
x=x+a; 
y=x+b; 
} 
int main (){ 
a=2; 
b=3; 
dobro(a); 
b=triplo(b); 
altera(a,b); 
cout<< a << " e " << b << endl; 
} 
4 e 9 
4 e 12 
2 e 13 
9 e 16 
2 e 9 
Respondido em 18/02/2019 21:40:46 
Explicação: 
Executando o programa, passo a passo, temos : 
Na main, a recebe 2 e b recebe 3. Note que a e b são variáveis globais. 
Daí, ainda na main, a função dobro é chamada. Ao executar dobro, temos que o valor 2 é passado e x 
(local à dobro) recebe 2 * 2, que dá 4. 
Ao terminar a função dobro, volta-se para a main, mas o valor de a passado não mudou, continuando 2. 
Após a execução de dobro, a função triplo é chamada na main e é passado o valor de b, que 
é 3. Iniciando a execução da função triplo, temos que y recebe 3 e a função retorna 3 * 3, que é 9. 
Voltando para a main, temos que b recebe o valor retornado pela função, que é 9. 
Até este ponto, temos que a vale 2 e b mudou para 9. 
Em seguida, a função altera é chamada e são passados 2 e 9, respectivamente, para x e y. Executando a 
função altera, temos que x recebe 2+2, que dá 4 e y recebe 4+9, que dá 13. Como x é passado por valor 
e y por referência, temos quea mudará e b mudará (ambas na main). 
Então, voltando para main temos que a vale 2 e que b vale 13. Assim, será impresso na tela 
 2 e 13 
5a Questão 
Considere o trecho de um programa escrito em C++. 
void func1 (bool x, int ini, int fim) { 
 for ( int y=ini; y != fim ; y++) { 
x = !x; 
 if (x) 
 cout << y << endl; 
else 
 cout << -y << endl; 
 } 
} 
int main() { 
 func1(false, 1, 7); 
} 
Marque a opção correta que mostra o que é impresso na tela. 
-1, 2, -3, 4, -5, 6
1, -2, -3, -4, -5, -6 
-1, -2, -3, -4, -5, -6
1, -2, 3, -4, 5, -6 
1, 2, 3, 4, 5, 6 
Respondido em 18/02/2019 21:38:26 
Explicação: 
Fazendo um teste de mesa temos que será impresso a seguinte sequência : 1 -2 3 -4 5 -6, um 
embaixo do outro. 
Parte de um teste de mesa : 
x ini fim y 
false 1 7 1 
true 2 
false 
E continua x, ini, fim e y recebendo valores 
Tela : 
1 
-2
3 
-4
5 
-6
6a Questão 
Blocos únicos de códigos que realizam diversas tarefas distintas são de difícil manutenção. Portanto, utiliza-
se a técnica da modularização de programas, a fim de facilitar a implementação e a manutenção dos 
programas. Esta técnica tem como principal elemento: 
As funções 
Os Vetores 
As Estruturas de Dados 
Os Grafos 
As Filas 
Respondido em 18/02/2019 21:23:47 
7a Questão 
Sobre funções, é correto afirmar: 
Não podem ser chamadas dentro de outras funções. 
Não devem conter variáveis locais em seu código. 
Obrigatoriamente devem retornam algum valor. 
Obrigatoriamente devem possuir parâmetros. 
São blocos de instruções que são executados quando são chamadas em alguma parte do 
programa. 
Respondido em 18/02/2019 21:24:02 
Explicação: 
Uma função é um bloco de instruções que pode ser chamada a partir de outra função, que pode ter ou não 
parâmetros, que pode ou não retornar valor, que pode ter ou não variáveis locais. 
8a Questão 
Diga, para o trecho do programa abaixo, qual a opção que representa a saída em tela. Considere que o programa será compilado sem 
erros, e irá executar também sem problemas. 
void troca (int x, int *y){ 
 int tmp; 
 tmp = *y; 
 *y = x;
 x = tmp; 
} 
int main() { 
 int a = 13, b = 10; 
 troca( a, &b ); 
 cout<<"Valores: "<< a<<"\t"<< b<< endl; 
 system("pause"); 
} 
Valores: 13 10 
Valores: 31 01 
Valores: 10 10 
Valores: 13 13 
Valores: 10 13 
Respondido em 18/02/2019 21:35:47 
Explicação: 
A execução começa pela main. São passados o valor de a, que é 13 e o endereço de b, que vale 10. Em 
seguida, é chamada a função troca e são passados o valor de a e o endereço de b. 
Executando a função troca, x recebe 13 e *y recebe 10. Mas ocorre a troca, usando tmp como auxiliar. 
Então x recebe 10 e *y recebe 13. Ao terminar a execução da função, voltamos para a main e temos a sem 
mudanças e b com a mudança ocorrida na função. Note que x é um parâmetro passado por valor e y é 
um parÂmetro passado por referência. 
Portanto, a ficou 13 e b ficou 13. 
Logo, será impresso : Valores: 13 13 
ESTRUTURA DE DADOS 
3a aula Lupa 
Vídeo PPT MP3
1a Questão 
Dadas as afirmativas abaixo, identifique as corretas e marque a alternativa verdadeira. 
I- Vetores e matrizes servem apenas para construir agregados de dados heterogêneos.
II- Registros em C++ são tipos de dados compostos formados por mais de um tipo de dados.
III- Na Linguagem C++, "struct" é uma palavra reservada que serve para definir registros.
IV- Registros são tipos de dados heterogêneos.
estão corretas apenas as afirmativas I, II e IV. 
estão corretas apenas as afirmativas I, III e IV. 
estão corretas apenas as afirmativas I, II e III. 
todas as afirmativas estão corretas. 
estão corretas apenas as afirmativas II, III e IV. 
Respondido em 18/03/2019 22:04:17 
Explicação: 
Analisando as afirmativas, temos : 
Afirmativa I : Falso. Vetores e matrizes são agregados homogêneos. 
Afirmativas II, III e IV : Estão corretas. Basicamente, structs são agregados heterogêneos. 
Logo, a opção correta é estão corretas apenas as afirmativas II, III e IV. 
2a Questão 
Com relação à struct, é correto afirmar que :
A struct é sempre definida dentro da main.
Cada elemento da struct é chamado componente.
Não é possível criar um vetor de structs, pois o vetor trabalha apenas 
com dados do mesmo tipo.
Cada elemento da struct é denominado membro ou campo, sendo que 
a struct pode armazenar elementos de tipos diferentes ou não. 
Cada elemento da struct é chamado campo e cada campo deve ser, 
obrigatoriamente, de um tipo de dados distinto de outro campo.
Respondido em 18/03/2019 22:05:43 
Gabarito 
Coment. 
3a Questão 
Pode-se definir uma estrutura heterogênea como sendo um conjunto de elementos, geralmente, 
agrupados sob uma lógica e associados por um nome. 
Esses elementos podem ser variáveis simples, matrizes ou ainda outras estruturas. Seja a definição 
de uma estrutura como: 
 struct aluno { 
string nome; 
float nota; 
}; 
Suponha ainda que exista um vetor desta estrutura, definido como: 
 aluno vet [ 100]; 
Marque a alternativa em que é atribuída de forma correta a nota 5.7 para o décimo primeiro 
elemento deste vetor. 
vet[10].nota=5.7; 
vet[10]=aluno.5.7; 
vet[10].aluno.nota=5.7 ; 
aluno.vet[10]=5.7; 
aluno.vet[10].nota=5.7; 
Respondido em 18/03/2019 22:06:46 
4a Questão 
o programa de computador necessita preencher uma lista de alunos (nome e nota) até que a lista esteja cheia.
Sabe-se que a lista tem capacidade para 25 alunos. Utilizando agregados heterogêneos, qual o trecho de
código que exibe a melhor forma de solucionar este problema?
for (int i = 0; i < 25; i++) { cin >> lista[i].nome; cin >> lista[i].nota; } 
for (int i = 0; i < 25; i++) { cin >> lista->nome; cin >> lista->nota; } 
int i = 0; while( i < 25) { cin >> lista[i].nome; cin >> lista[i].cargo; i ++; } 
for (int i = 0; i <= 25; i++) { cin >> lista[i].nome; cin >> lista[i].nota; } 
for (int i = 0; i < 25; i++) { cin >> lista[i]->nome; cin >> lista[i]->nota; } 
Respondido em 18/03/2019 22:08:30 
Explicação: 
Analisando cada item : 
for (int i = 0; i <= 25; i++) { cin >> lista[i].nome; cin >> lista[i].nota; } 
>> Falso. Veja que se há 25 itens, os índices começarão de 0 e irao até 24 e não 25.
for (int i = 0; i < 25; i++) { cin >> lista[i]->nome; cin >> lista[i]->nota; } 
>> Falso. Para acessar o campo de struct é ponto e não seta. lista[i] é uma struct e não um ponteiro.
for (int i = 0; i < 25; i++) { cin >> lista->nome; cin >> lista->nota; } 
>> Falso. Para acessar o campo de struct é ponto e não seta. lista é um vetor e lista[i] é um componente de
lista. Usamos o operador seta quando temos ponteiro para struct.
for (int i = 0; i < 25; i++) { cin >> lista[i].nome; cin >> lista[i].nota; } 
>> Verdadeiro.
int i = 0; while( i < 25) { cin >> lista[i].nome; cin >> lista[i].cargo; i ++; } 
>> Falso, porque foi pedido nome e nota e não cargo.
5a Questão 
Pode-se definir uma estrutura heterogênea como sendo um conjunto de elementos, geralmente, agrupados 
sob uma lógica e associados por um nome. Esses elementos podem ser variáveis simples, matrizes ou 
ainda outras estruturas. Seja a definição de uma estrutura como: struct aluno { string nome; float media; 
}; Suponha ainda que exista um vetor desta estrutura, definido como: aluno vet [ 10]; Marque a 
alternativa em que é atribuída de forma correta a media 6.0 para o quarto elemento deste vetor. 
vet[3].aluno=6.0; 
aluno[3].media=6.0; 
aluno[3].10=6.0; 
aluno[10]=6.0; 
vet[3].media=6.0; 
Respondido em 18/03/2019 22:09:17 
6a Questão 
Marque a opção correta, considerando 
struct Livro { 
intcodigo; 
float preco; 
} liv; 
Livro.codigo = 12345; 
liv->preco = 30.70; 
liv.preco = 30.70;
Livro.liv.codigo = 12345; 
Livro->liv.codigo = 12345; 
Respondido em 18/03/2019 22:09:52 
7a Questão 
Pode-se definir uma estrutura heterogênea como sendo um conjunto de elementos, geralmente, agrupados 
sob uma lógica e associados por um nome. 
Esses elementos podem ser variáveis simples, matrizes ou ainda outras estruturas. Seja a definição de uma 
estrutura como: 
struct aluno { 
string nome; 
float nota; 
}; 
Suponha ainda que exista um vetor desta estrutura, definido como: 
aluno vet [100]; 
Marque a alternativa em que é atribuída de forma correta a nota 5.7 para o décimo primeiro elemento 
deste vetor. 
aluno.vet[10].nota=5.7; 
vet[10]=aluno.5.7; 
vet[10].nota=5.7; 
vet[10].aluno.nota=5.7 ; 
aluno.vet[10]=5.7; 
Respondido em 18/03/2019 22:10:21 
8a Questão 
Os métodos de ordenação são muito utilizados em estruturas de dados para facilitar a busca e a 
recuperação posterior de itens de conjuntos ordenados. Existem vários métodos de ordenação, por este 
motivo, marque corretamente a alternativa que apresenta o código do método de seleção. 
int ordena(float v[], float valor, int n) { 
 int ini = 0, fim = n -1, meio; 
 while (ini <= fim){ 
 meio = (ini + fim)/2; 
 if (v[meio] == valor) 
 return meio; 
 if (valor < v[meio]) 
 fim = meio -1; 
 else 
 ini = meio+1; 
 } 
 return -1; 
} 
void ordena(int v[], int n){ 
int i, j, menor, aux; 
for (j = 0; j < n-1; j++) { 
 for (i = j+1; i < n; i++) { 
 if (v[i] < v[j]) { 
 aux = v[j]; 
 v[j] = v[i]; 
 v[i] = aux; 
 } 
 } 
} 
} 
int ordena(float v[], float valor, int n) { 
 int ini = 0, fim = n-1, meio; 
 while (ini >= fim){ 
 meio = ini/2; 
 if (v[meio] == valor) 
 return meio; 
 if (valor < v[meio]) 
 fim = meio -1; 
 else 
 ini = meio+1; 
} 
void ordena (int v[], int n){ 
 int i, j, aux; 
 for (j = 1; j < n; j++) 
 for (i=j; i > 0 && v[i-1]> v[i]; i--){ 
 aux = v[i-1]; 
 v[i-1] = v[i]; 
 v[i] = aux; 
} 
} 
int ordena(float v[], float valor, int n){ 
 for (int i = 0; i < n; i++) 
 if (v[i] == valor) 
 return i; 
 return -1; 
} 
Respondido em 18/03/2019 22:11:30 
Explicação: 
Na ordenação por seleção, a idéia é sempre procurar o menor elemento do vetor e inseri-lo no início do 
vetor. Procuramos o menor valor do vetor e colocamos ele em vetor. 
Procuramos o menor valor do vetor excluindo o já colocado e colocamos ele em vetor. E assim vamos indo 
até termos todo o vetor ordenado. 
Partindo sempre a partir do último elemento reordenado (a partir do i), o programa procura o menor 
elemento no vetor e o substitue pelo elemento i atual. 
É o que está ocorrendo na primeira opção! 
ESTRUTURA DE DADOS 
3a aula Lupa 
Vídeo PPT MP3
1a Questão 
Qual das seguintes estruturas de dados é classificada como heterogênea? 
Fila 
Loop 
Pilha 
Registro 
Vetor 
Respondido em 18/03/2019 22:12:06 
Explicação: 
Registro permite agregar dados de tipos diferentes. 
Vetor permite agregar dados do mesmo tipo. 
Pilha e fila implementadas com vetor ou lista encadeada. 
Loop : termo genérico para repetições. 
Gabarito 
Coment. 
2a Questão 
Marque a afirmativa correta para a "Inserção em lista linear sequencial ordenada". 
Consiste em adicionar um valor no vetor, mantendo a ordem existente e ajustando o total de 
elementos. 
É o processo pelo qual um conjunto de dados é colocado em uma ordem crescente ou decrescente. 
Consiste em fazer uma busca em um vetor desordenado, dividindo o espaço de busca ao meio e 
verificando se o dado está no meio ou, antes do meio ou depois do meio. 
Consiste em adicionar um valor no vetor, alterando a ordem existente e ajustando o total de 
elementos. 
Consiste em fazer uma busca em um vetor já ordenado, dividindo o espaço de busca ao meio e 
verificando se o dado está no meio ou, antes do meio ou depois do meio. 
Respondido em 18/03/2019 22:12:44 
Explicação: 
Consiste em adicionar um valor no vetor, mantendo a ordem existente e ajustando o total de elementos. 
Só pode ocorrer, no entanto, se a lista não estiver cheia. 
3a Questão 
Em C++, quando uma variável é declarada como uma struct, o acesso para atribuição e leitura dos membros 
(campos) deste registro se dá pelo operador : 
& (e comercial ou eitza). 
∙ (ponto).
* (asterisco).
-> (seta). 
, (vírgula). 
Respondido em 18/03/2019 22:13:14 
Explicação: 
Por definição, o operador que permite acessar os campos de uma variável struct é o ponto (.). 
4a Questão 
Os métodos de ordenação são muito utilizados em estruturas de dados para facilitar a busca e a 
recuperação posterior de itens de conjuntos ordenados. Existem vários métodos de ordenação, por este 
motivo, marque corretamente a alternativa que apresenta o código do método de seleção. 
 
 
 
int ordena(float v[], float valor, int n) { 
 int ini = 0, fim = n-1, meio; 
 while (ini >= fim){ 
 meio = ini/2; 
 if (v[meio] == valor) 
 return meio; 
 if (valor < v[meio]) 
 fim = meio -1; 
 else 
 ini = meio+1; 
} 
 
int ordena(float v[], float valor, int n){ 
 for (int i = 0; i < n; i++) 
 if (v[i] == valor) 
 return i; 
 return -1; 
} 
 
int ordena(float v[], float valor, int n) { 
 int ini = 0, fim = n -1, meio; 
 while (ini <= fim){ 
 meio = (ini + fim)/2; 
 if (v[meio] == valor) 
 return meio; 
 if (valor < v[meio]) 
 fim = meio -1; 
 else 
 ini = meio+1; 
 } 
 return -1; 
} 
 void ordena (int v[], int n){ 
 int i, j, aux; 
 for (j = 1; j < n; j++) 
 for (i=j; i > 0 && v[i-1]> v[i]; i--){ 
 aux = v[i-1]; 
 v[i-1] = v[i]; 
 v[i] = aux; 
 } 
} 
 void ordena(int v[], int n){ 
int i, j, menor, aux; 
for (j = 0; j < n-1; j++) { 
 for (i = j+1; i < n; i++) { 
 if (v[i] < v[j]) { 
 aux = v[j]; 
 v[j] = v[i]; 
 v[i] = aux; 
 } 
 } 
} 
} 
Respondido em 18/03/2019 22:13:26 
 
 
Explicação: 
Na ordenação por seleção, a idéia é sempre procurar o menor elemento do vetor e inseri-lo no início do 
vetor. Procuramos o menor valor do vetor e colocamos ele em vetor. 
Procuramos o menor valor do vetor excluindo o já colocado e colocamos ele em vetor. E assim vamos indo 
até termos todo o vetor ordenado. 
Partindo sempre a partir do último elemento reordenado (a partir do i), o programa procura o menor 
elemento no vetor e o substitue pelo elemento i atual. 
É o que está ocorrendo na primeira opção! 
Gabarito 
Coment. 
5a Questão 
o programa de computador necessita preencher uma lista de alunos (nome e nota) até que a lista esteja cheia.
Sabe-se que a lista tem capacidade para 25 alunos. Utilizando agregados heterogêneos, qual o trecho de
código que exibe a melhor forma de solucionar este problema?
for (int i = 0; i < 25; i++) { cin >> lista[i]->nome; cin >> lista[i]->nota; } 
int i = 0; while( i < 25) { cin >> lista[i].nome; cin >> lista[i].cargo; i ++; } 
for (int i = 0; i < 25; i++) { cin >> lista->nome; cin >> lista->nota; } 
for (int i = 0; i <= 25; i++) { cin >> lista[i].nome; cin >> lista[i].nota; } 
for (int i = 0; i < 25; i++) { cin >> lista[i].nome; cin >> lista[i].nota; } 
Respondido em 18/03/2019 22:13:53 
Explicação: 
Analisando cada item : 
for (int i = 0; i <= 25; i++) { cin >> lista[i].nome; cin >> lista[i].nota; } 
>> Falso. Veja que se há 25 itens, os índices começarão de 0 e irao até 24 e não 25.
for (int i = 0; i < 25; i++) { cin >> lista[i]->nome; cin >> lista[i]->nota; }>> Falso. Para acessar o campo de struct é ponto e não seta. lista[i] é uma struct e não um ponteiro.
for (int i = 0; i < 25; i++) { cin >> lista->nome; cin >> lista->nota; } 
>> Falso. Para acessar o campo de struct é ponto e não seta. lista é um vetor e lista[i] é um componente de
lista. Usamos o operador seta quando temos ponteiro para struct.
for (int i = 0; i < 25; i++) { cin >> lista[i].nome; cin >> lista[i].nota; } 
>> Verdadeiro.
int i = 0; while( i < 25) { cin >> lista[i].nome; cin >> lista[i].cargo; i ++; } 
>> Falso, porque foi pedido nome e nota e não cargo.
6a Questão 
Pode-se definir uma estrutura heterogênea como sendo um conjunto de elementos, geralmente, agrupados 
sob uma lógica e associados por um nome. Esses elementos podem ser variáveis simples, matrizes ou 
ainda outras estruturas. Seja a definição de uma estrutura como: struct aluno { string nome; float media; 
}; Suponha ainda que exista um vetor desta estrutura, definido como: aluno vet [ 10]; Marque a 
alternativa em que é atribuída de forma correta a media 6.0 para o quarto elemento deste vetor. 
aluno[3].10=6.0; 
aluno[10]=6.0; 
vet[3].aluno=6.0; 
vet[3].media=6.0; 
aluno[3].media=6.0; 
Respondido em 18/03/2019 22:14:13 
7a Questão 
Marque a opção correta, considerando 
struct Livro { 
int codigo; 
float preco; 
} liv; 
Livro->liv.codigo = 12345; 
liv->preco = 30.70; 
Livro.codigo = 12345; 
liv.preco = 30.70;
Livro.liv.codigo = 12345; 
Respondido em 18/03/2019 22:14:24 
8a Questão 
Pode-se definir uma estrutura heterogênea como sendo um conjunto de elementos, geralmente, agrupados 
sob uma lógica e associados por um nome. 
Esses elementos podem ser variáveis simples, matrizes ou ainda outras estruturas. Seja a definição de uma 
estrutura como: 
struct aluno { 
string nome; 
float nota; 
}; 
Suponha ainda que exista um vetor desta estrutura, definido como: 
aluno vet [100]; 
Marque a alternativa em que é atribuída de forma correta a nota 5.7 para o décimo primeiro elemento 
deste vetor. 
vet[10].aluno.nota=5.7 ; 
vet[10]=aluno.5.7; 
aluno.vet[10].nota=5.7; 
vet[10].nota=5.7; 
aluno.vet[10]=5.7; 
ESTRUTURA DE DADOS 
4a aula Lupa 
Vídeo PPT MP3
1a Questão 
O seguinte trecho de programa abaixo representa qual tipo de estrutura de ordenação? 
void ordenar(float v[], int n) // n é o no. de elementos em v 
{ 
 int i , // índice 
 aux, // auxiliar para troca 
trocou = true, 
fim = n - 1; 
while (trocou) 
{ 
 trocou = false; // sinaliza que é falso que trocou 
 for (i = 0; i < fim; i++) 
 { 
 if (v[i] > v[i+1]) 
 { 
 aux = v[i]; 
 v[i] = v[i+1]; 
 v[i+1] = aux; 
 // sinaliza que é verdadeiro que trocou 
 trocou = true; 
 } // fim if 
 } // fim for 
 fim--; // decrementa o fim 
} // fim while 
} // fim da função 
Heapsort 
Shellsort 
Mergesort 
Bublesort 
Quicksort 
Respondido em 19/03/2019 08:40:22 
Gabarito 
Coment. 
2a Questão 
Marque a afirmativa correta para a "Busca ou pesquisa binária". 
Consiste em adicionar um valor no vetor, alterando a ordem existente e ajustando o total de 
elementos. 
Consiste em fazer uma busca em um vetor já ordenado, dividindo o espaço de busca ao meio e 
verificando se o dado está no meio ou, antes do meio ou depois do meio. 
Consiste em fazer uma busca em um vetor desordenado, dividindo o espaço de busca ao meio e 
verificando se o dado está no meio ou, antes do meio ou depois do meio. 
É o processo pelo qual um conjunto de dados é colocado em uma ordem crescente ou decrescente. 
Consiste em adicionar um valor no vetor, mantendo a ordem existente e ajustando o total de 
elementos. 
Respondido em 19/03/2019 08:33:27 
Gabarito 
Coment. 
3a Questão 
Para consultarmos uma estrutura de dados, normalmente, empregamos um tipo de pesquisa de dados. O 
trecho de programa a seguir refere-se a uma pesquisa por um elemento único (sua primeira ocorrência), 
em um conjunto de elementos de dados armazenado em uma estrutura de acesso indexado e aleatório. 
Selecione a opção correspondente ao algoritmo utilizado, no programa, para a referida pesquisa: 
int busca(float v[], float valor, int n) { 
int ini = 0, fim = n -1, meio; 
while (ini <= fim) { 
meio = (ini + fim)/2; 
if (v[meio] == valor) return meio; 
if (valor < v[meio]) fim = meio -1; 
 else ini = meio+1; 
} 
return -1; 
} 
pesquisa sequencial 
pesquisa de cadeias 
pesquisa cadeias indexada 
pesquisa binária 
pesquisa indexada 
Respondido em 19/03/2019 08:38:33 
Gabarito 
Coment. 
4a Questão 
 
 
Estude atentamente o código a segir: 
int deciframe(int v[ ], int tam, int e){ 
int i = 0, f = tam -1, m; 
while ( i <= f ){ 
m = ( i + f ) / 2; 
if ( v[m] == e ) { return m; } 
if ( e < v[m] ) { f = m - 1; } 
else { i = m + 1; } 
} 
return -1; 
} 
Sabendo que a chamada da mesma foi feita com os parâmetros: 
v[10] = {0, 2, 4, 6, 8, 10, 20, 100} 
tam = 8 
e = -6 
É sabido que a mesma retornaria o valor -1, porque: 
 
 
 Porque ele não achou o elemento na coleção 
 
Seria o retorno do while 
 
É o módulo do valor de e 
 
Seria o retorno do segundo if 
 
É a posição do elemento e no vetor v 
Respondido em 19/03/2019 08:38:21 
 
 
Explicação: 
 Veja que para retornar -1 o return m; não foi executado. E para o return m; não poder ser 
executado, o teste if ( v[m] == e ) foi sempre falso. Logo, retornar -1 é o caso do elemento e = -6 não 
ser encontrado no vetor v. 
 
 
 
 
 
 
 5a Questão 
 
 
Estude atentamente o código a segir: 
int deciframe(int v[ ], int tam, int e){ 
int i = 0, f = tam -1, m; 
while ( i <= f ){ 
m = ( i + f ) / 2; 
if ( v[m] == e ) { return m; } 
if ( e < v[m] ) { f = m - 1; } 
else { i = m + 1; } 
} 
return -1; 
} 
Sabendo que a chamada da mesma foi feita com os parâmetros recebendo os seguintes valores, o que ela 
retornaria? 
v[10] = {0, 2, 4, 6, 8, 10, 20, 100} 
tam = 8 
e = 0 
 
 
 
-2 
 -1 
1 
0 
2 
Respondido em 19/03/2019 08:38:02 
Explicação: 
A busca pode retornar o índice do elemento encontrado ou pode retornar -1, caso o elemento e não seja 
encontrado. Vemos que o valor de e é encontrado. Logo, a função retornará a posição do valor e = 0 no 
vetor. No caso, o elemento zero está na posição 0. 
Resposta : 0 
6a Questão 
Marque a afirmativa correta para a "inserção incremental". 
A técnica é boa quando os dados ficam uniformemente distribuídos entre os seus compartimentos. 
É um tipo de ordenação por intercalação 
É um tipo de sequenciação por intercalação. 
Consiste em adicionar um valor no vetor, mantendo a ordem existente e ajustando o total de 
elementos. 
Os pivôs são escolhidos aleatoriamente. 
Respondido em 19/03/2019 08:35:32 
Gabarito 
Coment. 
7a Questão 
Suponha uma listagem, contendo número de inscrição e pontuação (ordenada pelo número de inscrição) 
dos candidatos para o cargo de Analista de Sistemas de uma grande empresa pública. São 1024 candidatos 
inscritos e o sistema implementado para consulta do resultado, permite busca binária ou busca sequencial 
pelo número de inscrição. O número máximo de comparações executadas se fosse utilizada a busca binária 
e se fosse utilizada busca sequencial, respectivamente, seria de: 
10 e 10 
1024 e 512 
10 e 1024 
9 e 9 
9 e 10 
Respondido em 19/03/2019 08:36:49 
Gabarito 
Coment. 
8a Questão 
Qual a importância de se entender a "ordenação" de dados ? 
A ordenação é a base na qual, muitos sistemas são construídos. Entendendo a ordenação, tem-se 
conhecimento para manter outros problemas. 
A ordenação é a base na qual, muitosalgoritmos são construídos. Entendendo a ordenação, tem-se 
conhecimento para manter outros problemas. 
A ordenação é a base na qual, muitos programas são construídos. Entendendo a ordenação, tem-se 
conhecimento para manter outros problemas. 
A ordenação é a base na qual, muitos sistemas são construídos. Entendendo a ordenação, tem-se 
conhecimento para resolver outros problemas. 
A ordenação é a base na qual, muitos algoritmos são construídos. Entendendo a ordenação, tem-se 
conhecimento para resolver outros problemas. 
ESTRUTURA DE DADOS 
5a aula Lupa 
Vídeo PPT MP3
1a Questão 
for (int i = 0; i < n; i++)
 cout << L[i].matricula << " " << L[i].nome[30] << endl;
for (int i = 0; i < n; i++)
 cout << L.matricula << " " << L.nome << endl;
for (int i = 0; i < n; i++)
 cout << L.matricula[i] << " " << L.nome[i] << endl;
for (int i = 0; i < n; i++)
 cout << L[i].matricula << " " << L[i].nome << endl;
for (int i = 0; i < n; i++)
 cout << L[i] << endl;
Respondido em 11/04/2019 20:03:35 
Gabarito 
Coment. 
2a Questão 
Estude atentamente o código a segir: 
int deciframe(int v[ ], int tam, int e){ 
int i = 0, f = tam -1, m; 
while ( i <= f ){ 
m = ( i + f ) / 2; 
if ( v[m] == e ) { return m; } 
if ( e < v[m] ) { f = m - 1; } 
else { i = m + 1; } 
} 
return -1; 
} 
Sabendo que a chamada da mesma foi feita com os parâmetros recebendo os seguintes valores, o que ela 
retornaria? 
v[10] = {0, 2, 4, 6, 8, 10, 20, 100} 
tam = 8 
e = -6 
3 
6 
4 
0 
-1
Respondido em 11/04/2019 20:02:57 
Explicação: 
Analisando 
int deciframe(int v[ ], int tam, int e) { 
int i = 0, f = tam -1, m; 
while ( i <= f ){ 
 m = ( i + f ) / 2; 
 if ( v[m] == e ) { return m; } 
 if ( e < v[m] ) 
 { f = m - 1; } 
 else 
 { i = m + 1; } 
} 
return -1; 
} 
 
Sabendo que a chamada da mesma foi feita com os parâmetros recebendo os seguintes valores, o que ela 
retornaria? 
v[10] = {0, 2, 4, 6, 8, 10, 20, 100} 
tam = 8 
e = -6 
Está procurando pelo valor e = -6. Como se sabe pelo estudo da busca binária e olhando o código dado, 
temos que -6 não existe na lista então a função irá retornar -1 (vide última linha da função). SE a busca 
tivesse sucesso, o teste do 1o. if no while seria verdadeiro e então o índice m de v seria retornado. Mas não 
é o caso, pois -6 não foi encontrado. 
 
 
 
 
 
 3a Questão 
 
 
Considere uma lista sequencial L com n fichas de professores, sendo que cada ficha de professor é 
modelada pela struct : 
struct professor { 
int matricula; 
char titulo[30]; 
}; 
e a lista L é assim declarada : professor L[n]; 
 
Assinale o trecho que corretamente exibe todas as matrículas e titulações de todos os n professores de L . 
 
 
 
for (int i = 0; i < n; i++) 
cout << L[i] << endl; 
 
for (int i = 0; i < n; i++) 
cout << L.matricula << " " << L.titulo << endl; 
 
for (int i = 0; i < n; i++) 
cout << L[i].matricula << " " << L[i].titulo[30] << endl; 
 for (int i = 0; i < n; i++) 
cout << L[i].matricula << " " << L[i].titulo << endl; 
 
for (int i = 0; i < n; i++) 
cout << L.matricula[i] << " " << L.titulo[i] << endl; 
Respondido em 11/04/2019 20:00:59 
 
 
Explicação: 
Como L é um vetor de n elementos do tipo professor. Então, para percorrer o vetor de índice i temos que 
fazer L[i] seguido do ponto seguido do campo, que pode ser matricula ou titulo. 
Assiim, a opção correta é 
for (int i = 0; i < n; i++) 
 cout << L[i].matricula << " " << L[i].titulo << endl; 
 
4a Questão 
As estruturas de dados em programação são muito utilizadas para tornar o acesso aos dados mais eficiente 
e organizado. A estrutura de dados considerada mais simples e tem como característica apresentar apenas 
uma dimensão é: 
Matriz 
Vetor 
Registro 
Variável 
Função 
Respondido em 11/04/2019 19:56:23 
Gabarito 
Coment. 
5a Questão 
As estruturas de dados são utilizadas para manter dados ou informações organizados na memória, o que 
possibilita a otimização do uso destes dados. Porém, as estruturas guardam características especiais na 
manipulação destes dados, assim deve-se escolher a estrutura certa ou mais adequada para uma 
determinada aplicação. Portanto marque a opção que representa a melhor estrutura, quando se tem como 
requisitos principais o acesso aleatório aos dados e alocação destes de forma contínua na memória. 
Fila Sequencial 
Lista Sequencial 
Lista Encadeada 
Pilha Encadeada 
Pilha Sequencial 
Respondido em 11/04/2019 19:56:58 
Gabarito 
Coment. 
6a Questão 
São métodos ou algoritmos conhecidos de ordenação de dados por troca: 
hashing e bubble sort. 
bubble sort e quicksort. 
quicksort e hashing. 
busca por ordenação e ordenação shell. 
ordenação shell e hashing. 
Respondido em 11/04/2019 19:57:13 
Explicação: 
Bubble sort é o algoritmo mais simples, mas o menos eficientes. Neste algoritmo cada elemento da 
posição i será comparado com o elemento da posição i + 1, ou seja, um elemento da posição 2 será 
comparado com o elemento da posição 3. Caso o elemento da posição 2 for maior que o da posição 3, eles 
trocam de lugar e assim sucessivamente. Por causa dessa forma de execução, o vetor terá que ser 
percorrido quantas vezes que for necessária, tornando o algoritmo ineficiente para listas muito grandes. 
O Quicksort é o algoritmo mais eficiente na ordenação por comparação. Nele se escolhe um elemento 
chamado de pivô, a partir disto é organizada a lista para que todos os números anteriores a ele sejam 
menores que ele, e todos os números posteriores a ele sejam maiores que ele. Ao final desse processo o 
número pivô já está em sua posição final. Os dois grupos desordenados recursivamente sofreram o mesmo 
processo até que a lista esteja ordenada. 
7a Questão 
Considere as seguintes afirmações: I. Só podemos ter uma matriz de no máximo duas dimensões. 
Exemplo: C[100][100]. II. Ao declararmos um vetor int A[10], se escrevemos A[2] acessamos o segundo 
elemento do vetor. III. Uma string declarada como char B[30] armazena no máximo 30 caracteres. Escolha 
a alternativa correta: 
Está correta apenas a afirmativa I. 
Nenhuma afirmação está correta. 
Está correta apenas a afirmativa II. 
Estão corretas apenas as afirmativas I e III. 
Estão corretas apenas as afirmativas I e II. 
Respondido em 11/04/2019 19:58:08 
Explicação: 
Analisando cada afirmativa : 
I. Só podemos ter uma matriz de no máximo duas dimensões. Exemplo: C[100][100].
 Falso. Podemos ter matrizes unidimensionais, tridimensionais, etc... 
II. Ao declararmos um vetor int A[10], se escrevemos A[2] acessamos o segundo elemento do vetor.
Falso. Em C++ o índice inicial é zero. Logo, A[2] é o elemento de índice 2, ou seja, o 3o. elemento do 
vetor. 
III. Uma string declarada como char B[30] armazena no máximo 30 caracteres. Escolha a alternativa
correta:
Falso. B pode armazenar no máximo 29 caracteres que sejam dados, pois existe uma área para o caracter 
nulo. 
Logo, todas as opções são falsas. 
8a Questão 
Considere uma lista com n livros, em que cada livro é modelado pela struct : 
struct Livro { 
 string titulo, editora, autor; 
 float preco; 
}; 
A função X abaixo 
void X (Livro v[ ], int &n, Livro L) 
{ 
 v[n] = L; 
 n++; 
 cout << "Operação realizada com sucesso."; 
} 
implementa a operação de : 
Substituição 
Ordenação por inserção
Inicialização
Inserção 
Busca
ESTRUTURA DE DADOS 
6a aula Lupa 
Vídeo PPT MP3
1a Questão 
 
 
Tanto a operação TOP (acessa topo), quanto à operação POP (remover), permite acessar o último elemento 
armazenado em uma Pilha. Quanto à diferença entreambas as operações em relação ao estado da Pilha é 
correto afirmar: 
 
 
 
Ambas alteram o estado da Pilha 
 
A operação TOP remove um elemento e altera o estado da Pilha 
 
Somente a operação TOP altera o estado da Pilha 
 
Nenhuma das operações altera o estado da Pilha 
 Somente a operação POP altera o estado da Pilha 
Respondido em 06/05/2019 20:17:25 
 
 
Explicação: 
Por definição, o TOP só acessa o dado do topo. A operação POP desempilha, acessando o último dado que 
entrou na pilha, retirando-o. Assim, o topo diminui. Logo, POP altera o estado da pilha. 
 
 
Gabarito 
Coment. 
 
 
 
 
 2a Questão 
 
 
Respeitando as ordens de inserção e de retirada dos dados, uma estrutura de: 
 
 
 pilha é também denominada LIFO ou FILO. 
 
fila é também denominada FIFO ou FILO. 
 
pilha é também denominada FIFO ou FILO. 
 
fila é também denominada LIFO ou LILO. 
 
fila é também denominada FIFO ou LIFO. 
Respondido em 06/05/2019 20:18:39 
 
 
Gabarito 
Coment. 
 
 
 
 
 3a Questão 
 
 
Algoritmo Pilha 
Inicio 
IniciarPilha(s) 
enquanto (não for o final das entradas) faca 
leia (num) 
se (num != 3) então 
 Empilhar (s, num) 
senão 
 Desempilhar(s) 
 x := ElementoTopo(s) 
fimse 
fimenquanto 
fimalgoritmo 
Considere que, no trecho do algoritmo acima, representado por seu pseudocódigo, seja fornecido 
para num, sucessivamente, os valores inteiros 1, 2, 3, 4, 5, 3 e 6. Nesse caso, ao final da execução do 
algoritmo, o valor de x será igual a ... 
2 e a pilha terá os valores 6, 4 e 1. 
3 e a pilha terá os valores 6, 5, 4, 2 e 1. 
5 e a pilha terá os valores 6, 3, 5, 4, 3, 2 e 1. 
5 e a pilha terá os valores 6, 4 e 1. 
3 e a pilha terá os valores 6, 4 e 1. 
Respondido em 06/05/2019 20:23:23 
Explicação: 
Seguindo o fluxo do algoritmo, serão empilhados 1 e 2. Ao chegar no 3, o valor 2 será desempilhado e 
armazenado em x. 
Continuando o loop, 4 é mepilhado, depois 5 é empilhado e ao chegar novamente em 3, o 5 é deempilhado 
e armazenado em x. Continuando o loop enquanto existe entrada, empilha-se o 6. 
Dessa forma temos que o valor em 5 é 5 e a pilha possui os valors 6, 4 e 1, sendo 6 no topo da pilha. 
Logo, a opção correta é 5 e a pilha terá os valores 6, 4 e 1. 
4a Questão 
Considere dados sendo manipulados em uma pilha sequencial em que as operações possíveis são: inserção 
- push(novo valor) ou remoção - pop().
Se realizarmos a seguinte sequencia de operações: 
push(A),push(B),push(C),pop(),pop(),push(D),pop(),pop(). 
Pode-se dizer que o interior da pilha apresenta-se: 
Com os dados A e B 
Apenas com o dado A 
Apenas com o dado D 
Vazio 
Com os dados A e D 
Respondido em 06/05/2019 20:19:32 
5a Questão 
A estrutura de dados Pilha funciona de acordo com o seguinte fundamento básico: 
O último a entrar é o último a sair. 
Quem estra no topo da pilha não sai mais. 
O primeiro a entrar é o primeiro a sair. 
O primeiro a entrar é o último a sair. 
Tanto o primeiro como o último podem sair primeiro. 
Respondido em 06/05/2019 20:19:54 
Gabarito 
Coment. 
6a Questão 
Assinale a opção que apresenta uma estrutura de dados embasada no princípio last in, first out (LIFO) ¿ 
último a entrar, primeiro a sair ¿, na qual, conforme a inserção, os dados inseridos primeiramente na 
estrutura são os últimos a serem removidos. 
vetores 
listas 
pilhas 
árvores 
filas 
Respondido em 06/05/2019 20:20:11 
Explicação: 
Por definição, a estrutura de dados pilha é uma lista linear em que as inserções e remoções seguem o 
critério ou lógica LIFO (Last In Firsts Out). 
Em uma lista, árvore ou vetor a inserção pode ser em qualquer posição, desde que não haja ordem. E a 
estrutura de dados fila segue a lógica FIFO. 
7a Questão 
Sobre as pilhas, marque a alternativa correta: 
A característica principal que define uma Pilha diz respeito às operações de inserção e remoção, que 
devem ser realizadas exclusivamente na mesma extremidade. 
Pilhas são menos restritivas do que Listas, pois esta última impõe mais restrições às operações de 
inserção/remoção do que as primeiras. 
Pilhas são estruturas de dados do tipo FIFO e permitem que os dados sejam manipulados diretamente 
no meio da estrutura. 
Pilhas não podem ser implementadas usando vetores, pois não será possível reproduzir a inserção e 
remoção pela mesma extremidade. 
A operação de desempilhar um item de uma pilha e logo em seguida empilha-lo em outra pilha mantem 
a mesma ordem dos dados da primeira pilha na segunda pilha. 
Respondido em 06/05/2019 20:21:06 
Explicação: 
Analisando cada item. 
Pilhas são estruturas de dados do tipo FIFO e permitem que os dados sejam 
manipulados diretamente no meio da estrutura. 
Falso. Pilha segue a lógica LIFO e as operações de inserção e remoção ocorrem 
apenas em uma extremidade, o topo da pilha 
A operação de desempilhar um item de uma pilha e logo em seguida empilhá-lo 
em outra pilha mantém a mesma ordem dos dados da primeira pilha na segunda 
pilha. 
FAlso. Por exemplo, o elemento do topo da primeira pilha, será o 1o. elemento 
empilhado na 2a. pilha. 
Pilhas não podem ser implementadas usando vetores, pois não será possível 
reproduzir a inserção e remoção pela mesma extremidade. 
Falso. É possível usar vetor ou lista encadeada para implementar pilha. 
Pilhas são menos restritivas do que Listas, pois esta última impõe mais restrições 
às operações de inserção/remoção do que as primeiras. 
FAlso. Em uma lista podemos inserir ou retirar de qualquer posição. Em pilha, não. 
A característica principal que define uma Pilha diz respeito às operações de 
inserção e remoção, que devem ser realizadas exclusivamente na mesma 
extremidade. 
Vedadeiro. 
8a Questão 
Considere as seguintes afirmativas: 
1- Pilhas são um exemplo de estrutura linear, enquanto filas são um exemplo de estrutura não linear
2- Pilhas são estruturas eficientes quando se trata de inserir ou remover de qualquer posição.
3- Pilhas e filas seguem, respectivamente, as lógicas LIFO e FIFO, nas quais a ordem de inserção e
remoção de dados da estrutura são bem definidas.
Todas estão corretas 
Somente 1 está correta 
Somente 3 está correta 
Somente 2 e 3 estão corretas 
Somente 2 está correta 
Respondido em 06/05/2019 20:21:49 
Explicação: 
Analisando cada afirmativa : 
1- Pilhas são um exemplo de estrutura linear, enquanto filas são um exemplo de estrutura não linear
Falso. Pilha e fila são estruturas de dados lineares. 
2- Pilhas são estruturas eficientes quando se trata de inserir ou remover de qualquer posição.
Falso. Nâo se pode inserir ou remover de qualquer posição de uma pilha ou de uma fila. 
3- Pilhas e filas seguem, respectivamente, as lógicas LIFO e FIFO, nas quais a ordem de inserção e
remoção de dados da estrutura são bem definidas.
Verdadeiro. 
Logo, apenas a afirmativa 3 está correta. 
ESTRUTURA DE DADOS 
7a aula Lupa 
Vídeo PPT MP3
1a 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? 
[3-4-6-8-10-1] 
[2-1-3-4-6-8] 
[3-4-6-8-10] 
[2-3-4-6-8-10] 
[4-6-8-10-1-2] 
Respondido em 06/05/2019 20:45:30 
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 68 10 1 2 
2a 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 posição final for igual ao início. 
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 final apontar para zero. 
Quando o apontador de início apontar para zero. 
Respondido em 06/05/2019 20:44:46 
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] . 
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. 
3a Questão 
Qual das alternativas a seguir pode definir uma estrutura de fila? 
Entrada de dados pelo final e saída pelo início. 
Entrada e saída de dados pelo início. 
Entrada e saída de dados pelo final. 
Entrada de dados pelo início e saída pelo final. 
Entrada e saída de dados em qualquer local. 
Respondido em 06/05/2019 20:36:27 
Explicação: 
Na fila insere-se no fim e retira-se no início, usando a lógica da FIFO onde o primeiro 
que entra é o primeiro a sair
Gabarito 
Coment. 
4a Questão 
Ao treinar macacos, foi realizado um jogo para avaliar sua memória. O cientista fornecia sequências de cartas com figuras 
geométricas e o macaco devia reproduzir a mesma sequência usando figuras geométricas reais. Qual a estrutura de dados mais 
adequada para modelar esse jogo ? 
pilha 
fila 
lista 
grafo 
árvore 
Respondido em 06/05/2019 20:36:59 
Explicação: 
Fila é baseada na lógica FIFO, o primeiro a entrar será o primeiro a sair da fila. Portanto, como as cartas 
serão retornadas na mesma ordem da entrada, a resposta certa é fila. 
Veja porque não podem ser as outras opções: 
Não pode ser pilha, pois pilha retorna os valores na ordem inversa à ordem de entrada. 
Não pode ser lista porque na lista insere-se ou retira-se de qualquer posição. 
Não pode ser Árvore ou Grafo pois são não lineares e o problema descrito é linear. 
5a Questão 
Sobre pilhas, lista e filas, considere as afirmativas a seguir. I. As estruturas de dados pilhas, filas e listas 
armazenam coleções de itens. A característica que as distinguem é a ordem em que podem ser retirados os 
itens dessas coleções e a ordem em que foram inseridos. II. Considere que os itens A, B, C, D, E foram 
inseridos nessa ordem em uma fila. Necessariamente, o primeiro elemento a ser removido dessa fila é o 
elemento A. III. Considere que os itens A, B, C, D, E foram inseridos nessa ordem em uma pilha. 
Necessariamente, o último elemento a ser removido dessa pilha é o elemento E. IV. Considere que os itens 
A, B, C, D, E foram inseridos nessa ordem em uma lista. Necessariamente, o primeiro elemento a ser 
removido dessa lista é o elemento A. 
Somente as afirmativas I e IV são corretas. 
Somente as afirmativas III e IV são corretas. 
Somente as afirmativas I e II são corretas. 
Todas as afirmativas estão corretas 
Somente as afirmativas I, II e III são corretas. 
Respondido em 06/05/2019 20:44:04 
Explicação: 
Analisando cad afirmativa: 
I. As estruturas de dados pilhas, filas e listas armazenam coleções de itens. A característica que as
distinguem é a ordem em que podem ser retirados os itens dessas coleções e a ordem em que foram
inseridos.
>>>>>Verdadeira. A pilha segue a lógica LIFO, fila segue a lógica FIFO e em uma lista insere-se e retira-
se de qualquer posição. 
II. Considere que os itens A, B, C, D, E foram inseridos nessa ordem em uma fila. Necessariamente, o
primeiro elemento a ser removido dessa fila é o elemento A.
>>>>> Verdadeira. O 1o. a entrar, será o 1o. a sair. 
III. Considere que os itens A, B, C, D, E foram inseridos nessa ordem em uma pilha. Necessariamente, o
último elemento a ser removido dessa pilha é o elemento E.
>>>>> FAlso. O último a entrar foi o E, portanto, pela lógica LIFO é o primeiro a sair. 
IV. Considere que os itens A, B, C, D, E foram inseridos nessa ordem em uma lista. Necessariamente, o
primeiro elemento a ser removido dessa lista é o elemento A.
>>>> Falso. Em uma lista insere-se em qualquer posição e retira-se de qualquer posição. 
Logo, as afirmativa I e II estão corretas. 
6a 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. 
LIFO, não-preemptivo. 
FIFO, não-preemptivo. 
Circular, não-preemptivo. 
SJF (Shortest-Job-First), preemptivo. 
Por prioridades, preemptivo. 
Respondido em 06/05/2019 20:37:33 
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. 
7a Questão 
 Considere uma fila circular de tamanho 5, contendo os valores A, Z e C. Assim, o início está na posição 
0 (zero) e o fim na posição 2 (dois). Dica: O vetor inicia na posição 0 (zero). Supondo agora que as 
seguintes operações ocorrerão na lista: 
1. D é inserido
2. H é inserido
3. Um elemento é deletado
4. F é inserido
5. Um elemento é deletado
Qual os valores de início e fim ao final dessas operações? 
Nenhuma das opções 
Início 0 e fim 0 
inicio 2 e fim 0 
Início 1 e fim 4 
Início 4 e fim 4 
Respondido em 06/05/2019 20:42:29 
Explicação: 
Inicialmente temos inicio em 0 e fim em 2, sendo A no início e C no fim da fila. 
Ao termos D inserido ->>> A -> Z -> C -> D onde inicio é zero e fim é 3. 
Ao termos H inserido ->>> A -> Z ->C -> D -> H onde inicio é zero e fim é 4 
Ao ser deletado um valor, o A sai. Então Z->C -> D -> H, onde inicio é 1 e fim é 4. 
Ao termos F inserido : Z->C -> D -> H -> F, onde inicio é 1 e fim é 0 
Ao ser deletado um valor, o Z sai. Então C -> D -> H -> F, onde inicio é 2 e fim é 0 
8a Questão 
O que acontece quando se deseja inserir um elemento em uma FILA que já está cheia? 
Underflow. 
Dequeue. 
Overflow. 
A inserção é feita sem problema. 
Enqueue. 
ESTRUTURA DE DADOS 
7a aula LupaVídeo PPT MP3
1a Questão 
 As filas sequenciais são estruturas de dados utilizadas em diversas aplicações, tais como fila de 
processo, fila de impressão, sistemas de senha etc. Entretanto, nas aplicações onde há muita 
movimentação de dados, inserções e remoções de dados na fila, surgem espaços ociosos que 
podem levar ao fenômeno chamado de esgotamento de memória. Para sanar este problema pode-
se substituir a fila sequencial por: 
lista sequencial 
pilha circular 
lista circular 
pilha sequencial 
fila circular 
Respondido em 06/05/2019 20:47:18 
Gabarito 
Coment. 
2a Questão 
A estrutura de dados conhecida pela lógica FIFO (First In First Out) é denominada : 
Lista circular 
Vetor 
Fila 
Pilha 
Árvore 
Respondido em 06/05/2019 20:46:49 
Explicação: 
Fila é, por definição, uma lista linear ordenada em que as inserções e remoções seguem a lógica FIFO. 
3a Questão 
Ao inserirmos em uma estrutura de dados do tipo fila sequencial os seguintes elementos: A, B, C, D, 
exatamente nesta ordem. E em seguida realizarmos duas operações consecutivas de remoção na fila e 
imediatamente inserirmos dois novos elementos o X e o W. Podedmos afirmar que se realizarmos uma 
nova operação de remoção, o elemento que será removido desta fila sera o: 
A 
X 
D 
C 
W 
Respondido em 06/05/2019 20:47:51 
Gabarito 
Coment. 
Gabarito 
Coment. 
Gabarito 
Coment. 
4a Questão 
 Assinale a opção que, corretamente, mostra exemplos em que a estrutura de dados fila é usada, 
de acordo com o critério de inserções e remoções que rege tal estrutura.
Fila de arquivos para impressão e fila de pessoas no caixa de um supermercado.
Fila de pessoas para tirar o visto e fila de pessoas para usar o caixa eletrônico.
Buffer para gravação de dados em mídia e fila de pessoas para comprar o ticket do metrô.
Fila de arquivos para impressão e buffer para gravação de dados em fila.
Fila de documentos para xerox e fila de arquivos para impressão.
Respondido em 06/05/2019 20:48:57 
Gabarito 
Coment. 
5a Questão 
Pode-se citar os seguintes exemplos de aplicação da estrutura fila: Fila de arquivos para impressão: 
 Atendimento de processos requisitados a um sistema operacional.
 Buffer para gravação de dados em mídia.
 O tratamento do armazenamento das teclas que estão sendo digitadas antes da tecla enter ser
pressionada.
Agora analise as seguintes afirmativas: 
I- Uma fila guarda a ordem direta em que os elementos foram armazenados.
II- Uma fila guarda a ordem reversa em que os elementos foram armazenados.
III- O algoritmo que é implementado em uma fila é baseao no princípio: " O último a entrar é o primeiro a
sair".
IV- O algoritmo que é implementado em uma fila é baseao no princípio: " O primeiro a entrar é o primeiro
a sair".
 Marque a alternativa correta: 
II e Iv estão corretas 
I e IV estão corretas 
II e III estão corretas 
Apenas a IV está correta 
I e III estão corretas 
Respondido em 06/05/2019 20:50:01 
Gabarito 
Coment. 
Gabarito 
Coment. 
Gabarito 
Coment. 
6a Questão 
Um aluno do EAD estava estudando para a prova de Estrutura quando 
viu o trecho do programa abaixo em uma apostila.
Como não estava com seu micro, começou a analisar a função 
entra(...), ficando atento a alguns membros da struct.
Quando finalizou, virou a página da apostila e viu a resposta. Então, 
ficou muito feliz por ter identificado a estrutura
Assinale a alternativa onde está presente a resposta correta.
Lista simplesmente encadeada
Fila Circular
Pilha
Fila
Lista Linear
Respondido em 06/05/2019 20:50:29 
Gabarito 
Coment. 
7a Questão 
Analisando a figura abaixo, marque a alternativa correta que apresenta o tipo de estrutura de dados utilizado. 
Hash 
Matriz 
Struct 
Fila 
Pilha 
Respondido em 06/05/2019 20:50:43 
Explicação: 
Na fila insere-se no fim e retira-se do início. 
Gabarito 
Coment. 
8a 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: 
Listas 
Pilhas 
Filas 
Structs 
Árvores 
Respondido em 06/05/2019 20:51:00 
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. 
ESTRUTURA DE DADOS 
8a aula Lupa 
Vídeo PPT MP3
1a Questão 
As structs (estruturas) são utilizadas para modelar os nodos de 
estruturas dinâmicas como, por exemplo, as listas encadeadas, 
seja o seguinte exemplo de nodo de uma lista de produtos:
struct nodo{
 float valor;
 string produto;
 nodo * proximo;
 };
Suponha que um determinado ponteiro pt esteja apontando para 
um nodo desta lista, e que se queira alterar o conteúdo do 
campo valor deste nodo, que está sendo apontado por pt, para 
5.60. Marque a alternativa que corretamente possibilita esta 
operação:
pt->valor=5.60;
pt->5.60;
pt.valor->5.60;
pt->próximo.valor=5.60;
pt->próximo->valor=5.60;
Respondido em 23/05/2019 20:16:39 
Explicação: 
O codigo será: 
pt->valor=5.60; 
2a Questão 
As variáveis são na verdade trecho de memórias que armazenam 
dados de diversas naturezas, portanto sempre que declara-se uma 
variável, na linguagem C++, é necessário informar o tipo de dado 
que esta irá armazenar. Um tipo especial de variáveis são os 
ponteiros, isto é, variáveis que armazenam apenas os endereços 
de outras variáveis. Assim os ponteiros são usados para que se 
possa acessar de forma indireta uma outra variável. Sabendo-se 
disto e supondo que o endereço na memória da variável "a" é 100 
e o endereço da memória da variável ponteiro é 200, analise o 
trecho de código abaixo e marque a alternativa que representa a 
saída do programa:
100 9 200
200 9 100
9 9 200
100 100 200
9 100 200
Respondido em 23/05/2019 20:18:25 
Explicação: 
100 ===> endereço da memória da variável a 
9 ===> valor da variável a 
200 ===> endereço da memória da variável ponteiro 
3a Questão 
Marque a afirmativa que represente uma separação. 
Organizar os dados da lista em ordem crescente ou decrescente. 
Juntar duas listas, colocando uma lista no final de outra, obtendo, ao final, uma só lista resultante. 
Consiste em dividir a lista em duas outras listas. A quantidade de nós que cada lista terá, depende 
da necessidade. 
Alterar a ordem dos dados da lista do final para o início, atualizando a lista. 
Intercalar a ordem dos dados da lista do final para o início, atualizando a lista. 
Respondido em 23/05/2019 20:18:47 
Gabarito 
Coment. 
4a Questão 
O conceito de ponteiros foi estudado em uma de nossas aulas. Sendo assim, leia 
atentamente as afirmativas abaixo e assinale a opção correta. 
I A variável ponteiro não precisa ser declarada. 
II A variável ponteiro armazena endereço. 
III Quanto se usa &nomeDaVariávelPonteiro com o comando cout, é exibido o endereço 
da variável apontada pela variável ponteiro. 
IV Quando se usa nomeDaVariávelPonteiro com o comando cout, é exibido o endereço da 
variável ponteiro. 
V Quando se usa *nomeDaVariávelPonteiro com o comando cout, é exibido o conteúdo 
da variável apontada pela variável ponteiro.
IV e V estão corretas
Somente a II está correta
II e V estão corretas
I IV e V estão corretas
I, II e IV estão corretas
Respondido em 23/05/2019 20:24:54 
Gabarito 
Coment. 
5a Questão 
Na linguagem C++, temos que : 
I. Se p é um ponteiro, *p é o valor da variável apontada por p.
II. Um ponteiro pode receber o endereçode uma variável cujo tipo é o mesmo tipo usado na declaração
do ponteiro.
III. &v apresenta o endereço da variável v.
Qual a alternativa correta? 
Apenas as afirmações II e III estão corretas. 
As afirmações I, II e III estão corretas. 
Apenas as afirmações I e II estão corretas. 
Apenas a afirmação I está correta. 
Apenas a afirmação II está correta. 
Respondido em 23/05/2019 20:21:04 
Explicação: 
Analisando cada afirmativa : 
I. Se p é um ponteiro, *p é o valor da variáel apontada por p.
Verdadeira. 
II. Um ponteiro pode receber o endereço de uma variável cujo tipo é o mesmo tipo usado na declaração
do ponteiro.
Verdadeira 
III. &v apresenta o endereço da variável v.
Verdadeira. 
Logo, as afirmativas I, II e III estão corretas. 
6a Questão 
 Tenho uma lista não ordenada de clientes em que registro apenas a matrícula, o nome, o endereço e o telefone de cada cliente. 
Como não tenho limites para o crescimento da minha lista, como posso implementar a inserção de um novo cliente na lista, sabendo 
que cada cliente é do tipo Cliente e a lista é do tipo Lista assim definidos : 
struct Cliente { 
 long int matricula; 
 string nome, endereco, tel; 
}; 
struct Lista { 
 Cliente c; 
 struct Lista *link; 
 }; 
Lista * insereCliente(Lista *p) { 
 Lista *novo = new Lista; 
 Cliente cl; 
 novo->c = cl; 
 novo->link = p; 
 return novo; 
} 
Lista * insereCliente(Lista *p, Cliente cl) 
{ 
 Lista *novo = new Lista; 
 novo->c = cl; 
 novo->link = p; 
 return novo; 
} 
Lista * insereCliente(Lista *p, Cliente cl) 
{ 
 Lista *novo ; 
 novo->c = cl; 
 novo->link = p; 
 return novo; 
} 
 Lista * insereCliente(Lista *p, Cliente cl) 
{ 
 Lista *novo = new Lista; 
 novo.c = cl; 
 novo.link = p; 
 return novo; 
} 
 
Lista insereCliente(Lista *p, Cliente cl) 
{ 
 Lista novo[]; 
 novo[0].c = cl; 
 novo[0].link = p; 
 return novo; 
} 
 
Respondido em 23/05/2019 20:23:52 
 
 
Gabarito 
Coment. 
 
 
 
 
 7a Questão 
 
 
Considerando a afirmação: "Ponteiro é uma variável que armazena o endereço de outra variável", a forma 
correta de se atribuir ao ponteiro p o endereço de uma variável é 
 
 
 
*p = matricula; 
 
p.matricula = 20170562; 
 
char *p; 
 p = &matricula; 
 p->matricula = 20170562; 
Respondido em 23/05/2019 20:21:30 
 
 
Explicação: 
 
Analisando na sequência : 
 Falsa. Declara um ponteiro para char. 
 Falsa. Acessa o campo de uma struct apontada por um ponteiro p. 
 Falsa. Acessa o campo de uma struct, sem usar ponteiro. 
Verdadeira. Faz um ponteiro p receber o endereço de uma variável matricula. 
 Falsa. ACessa a área apontada por um ponteiro e atribui o valor de matricula. 
8a Questão 
Dr. Pei Tam possui uma lista não ordenada de pacientes de seu consultório em que registra apenas o nome endereço e o telefone de 
cada paciente. Como não há limites para o crescimento de sua lista, como se pode implementar a inserção de um novo paciente na 
lista, sabendo que cada paciente é do tipo Paciente e a lista é do tipo List assim definidos : 
struct Paciente { 
 long int matricula; 
 string nome, endereco e tel; 
}; 
struct List { 
 Paciente p; 
 struct List *link; 
 }; 
 List * inserePac(List *i, Paciente pac) 
{ 
 List *novo = new List; 
 novo.p = pac; 
 novo.link = i; 
 return novo; 
} 
List * inserePac(List *i) { 
 List *novo = new List; 
 Paciente pat; 
 novo->p = pat; 
 novo->link = i; 
 return novo; 
} 
List * inserePac(List *i, Paciente pt) 
{ 
 List *novo = new List; 
 novo->p = pt; 
 novo->link =i; 
 return novo; 
} 
List insereCliente(List *i, Paciente pac) 
{ 
 List novo[]; 
 novo[0].p = pac; 
 novo[0].link = i; 
 return novo; 
} 
List * inserePac(List *i, Paciente pt){ 
 List *novo ; 
 novo->p = pt; 
 novo->link = i; 
 return novo; 
}
ESTRUTURA DE DADOS 
9a aula Lupa 
Vídeo PPT MP3
1a Questão 
Seja o seguinte exemplo de nodo de uma lista de encadeada:
struct nodo{
 float valor;
 string produto;
 nodo * proximo;
 };
Sabendo-se que nesta lista o último nó ou nodo possui o 
campo próximo nulo (null), marque a alternativa que representa 
corretamente a operação de busca do último nodo, a partir de um 
ponteiro pt apontado para o primeiro nodo da lista. 
 
 
 while(pt->próximo)pt=pt->próximo; 
 while(próximo)pt=próximo; 
 while(pt->próximo->proximo)pt=pt->próximo; 
 while(pt->próximo != null)pt=pt->próximo->proximo; 
 while(pt != null)pt=pt->próximo; 
Respondido em 23/05/2019 20:53:48 
 
 
Explicação: 
O código será: 
while(pt->próximo)pt=pt->próximo; 
 
 
 
 
 
 2a Questão 
 
 
Para converter de decimal para binário usamos a estrutura de dados pilha. Assinale a opção que, 
corretamente, indica as ações corretas para empilhar o resto da divisão gerado no processo de conversão, 
considerando uma lista simplesmente encadeada. Considere o tipo definido abaixo : 
 
struct no { 
int dado; 
struct no *link; 
}; 
 
 
 
Não é necessário alocar memória com new. Basta criar uma struct do tipo no, armazenar o resto 
da divisão número por 2 no campo dado e aterrar o campo link. 
 
Basta alocar memória com new e armazenar o resto da divisão do número por 2 no campo dado 
do novo nó . 
 É preciso armazenar o resto da divisão do número por 2 no campo dado do primeiro nó da lista e 
retornar o ponteiro para este nó. 
 
Basta alocar memória com new, armazenar o resto da divisão do número por 2 no campo dado do 
novo nó e aterrar o link do novo nó. 
 É preciso alocar memória com new, armazenar o resto da divisão do número por 2 no campo dado 
do novo nó, apontar o link do novo nó para o início da lista e enfim, retornar o ponteiro para o 
novo nó. 
Respondido em 23/05/2019 20:54:02 
 
 
Gabarito 
Coment. 
 
 
 
3a Questão 
Estava um aluno estudando Lista Simplesmente Encadeada quando 
encontrou em um site a definição da struct nodo e de uma função cujo nome 
você deverá escolher para substituir XXX nas opções abaixo depois que analisar 
a função, assumindo que teste foi realizado, permitindo que a operação fosse 
realizada. 
 struct nodo 
{ 
 int info; 
 struct nodo *prox; 
};
nodo* XXX(nodo *ptr, int valor) 
{ 
 nodo *temp = new nodo; 
 ... 
 temp->info = valor; 
 temp->prox = ptr; 
 return temp; 
}
BuscaNaLista
RemoveNo
InsereNoFrente
ListaNo
InsereNoFim
Respondido em 23/05/2019 20:54:47 
Gabarito 
Coment. 
4a Questão 
Sobre uma estrutura de dados do tipo LIFO, observe as seguintes afirmações: 
(1) É uma pilha.
(2) Pode ser uma fila com prioridades
(3) É uma estrutura onde o primeiro elemento a entrar é o último a sair.
Sobre estas afirmações marque a opção correta: 
Todas as afirmações são falsas 
Todas as afirmações são verdadeiras 
Apenas as afirmações (1) e (3) são verdadeiras 
Apenas a afirmação (1) é verdadeira 
Apenas a afirmação (3) é verdadeira 
Respondido em 23/05/2019 20:55:05 
5a Questão 
Em termos da estrutura de dados do tipo FILA (fila encadeada com alocação dinâmica), a sequência de 
ações 
 insere(10), insere(3), insere(5), insere(8), remove(), remove(), insere(20), 
promoveria a configuração da estrutura: 
10 3 20 
10 3 5 8 20 
5 8 20 
20 5 8 
5

Mais conteúdos dessa disciplina