Buscar

Aula 1 5 E. Dados

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 51 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 51 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 51 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

Aula 1 
1a 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. 
 
Uma sequência de passos computacionais que transforma uma entrada em uma 
saída previamente determinada. 
 
A entrada, que satisfaz a quaisquer restrições impostas pelo problema, necessária 
para se calcular uma solução do problema. 
 
O que permite o armazenamento e a recuperação de dados independentemente de 
seu conteúdo. 
 
O meio para armazenar e organizar dados com o objetivo de facilitar o acesso e 
as modificações. 
 
 
Ref.: 201701020252 
 
 2a 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 distribuição e organização de dados em uma rede de computador 
de modo que possam ser usados de modo eficiente. 
 
É um modo de utilização de dados nos programas de computador. 
 
É 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 particular de armazenamento e organização de dados em um 
computador de modo que possam ser usados de modo eficiente. 
 
 
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. 
 
 
 
Ref.: 201701566788 
 
 3a Questão 
 
Leia com atenção as afirmativas abaixo e assinale a resposta correta. 
 
I A estrutura de dados que melhor representa os diretórios ou pastas de arquivos do 
computador é a árvore. 
II A estrutura de dados FILA é não linear assim como o Grafo. 
III O termo folha em uma estrutura de dados é usado para um nó sem filhos e que tem grau 
0, 
IV O grau de uma árvore é definido pelo número de subárvores de um nó. 
V O grafo é uma estrutura de dados que tem limitação para o número de vértices. 
VI Uma das aplicações da estrutura de dados grafo é a Computação Gráfica. 
 
 
I, III, IV e VI são afirmativas verdadeiras 
 
II, IV e V são afirmativas verdadeiras 
 
I, II, III e VI são afirmativas verdadeiras 
 
II, IV, V e VI são afirmativas verdadeiras 
 
I, II e V são afirmativas verdadeiras 
 
 
Ref.: 201701230963 
 
 4a 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 I e II estão corretas 
 
As alternativas II e IV estão corretas. 
 
As alternativas I e III estão corretas. 
 
Todas as alternativas estão corretas. 
 
 
Ref.: 201701028722 
 5a Questão 
 
As estruturas de dados são importantes para a programação porque facilitam a 
pesquisa, pois permitem a ordenação dos dados de forma crescente ou decrescente. 
Dessa forma, assinale a alternativa correta que define um tipo de dado estruturado. 
 
 
Permitem agregar mais do que um valor em uma variável, existindo uma relação 
estrutural entre seus elementos. 
 
São tipos de dados indivisíveis. 
 
Consiste da definição do conjunto de valores (denominado domínio) que uma 
variável pode assumir ao longo da execução de um programa. 
 
Podem armazenar apenas um valor de cada vez, se algum valor for atribuído o 
anterior é apagado. 
 
Também são denominados tipos primitivos, não é possível decompor em partes 
menores. 
 
 
 
Ref.: 201701642270 
 
 6a 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. 
 
 
Pilha Encadeada 
 
Lista Encadeada 
 
Pilha Sequencial 
 
Lista Sequencial 
 
Fila Sequencial 
 
 
Ref.: 201701267732 
 
 7a 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 ? 
 
 
pilha 
 
lista 
 
árvore 
 
fila 
 
grafo 
 
 
Ref.: 201701095836 
 
 8a 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ões 
numé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. 
 
II, IV e V. 
 
II, III, IV e V. 
 
I, III, IV e V. 
 
I, II e III. 
 
Ref.: 201701619613 
 
 1a Questão 
 
 Os irmãos Silva irão viajar por vários países da Europa e por isso, traçaram no mapa o percurso 
que farão, de cidade a cidade. Qual a estrutura de dados mais adequada para modelar este 
problema ? 
 
 
Fila 
 
 Árvore 
 
 Lista 
 
 Pilha 
 
Grafo 
 
 
Ref.: 201701237852 
 
 2a Questão 
 
Analise as afirmativas abaixo e selecione a alternativa correta. 
 
I Algumas aplicações da estrutura de dados grafosã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 
 
II e V são verdadeiras 
 
I , II e IV são verdadeiras 
 
II E IV são verdadeiras 
 
III e V são verdadeiras 
 
 
Ref.: 201701619621 
 
 3a Questão 
 
 Preciso cadastrar todos os interessados em meu novo curso de programação. Qual a estrutura de 
dados mais adequada para modelar este problema, visto que não há qualquer preocupação com 
ordem de chegada ou saída de aluno da turma. 
 
 
Árvore 
 
Lista 
 
 Fila 
 
 Pilha 
 
Grafo 
 
 
Ref.: 201701642270 
 
 4a 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 
 
Pilha Sequencial 
 
Lista Encadeada 
 
Pilha Encadeada 
 
 
Ref.: 201701566788 
 
 5a Questão 
 
Leia com atenção as afirmativas abaixo e assinale a resposta correta. 
 
I A estrutura de dados que melhor representa os diretórios ou pastas de arquivos do 
computador é a árvore. 
II A estrutura de dados FILA é não linear assim como o Grafo. 
III O termo folha em uma estrutura de dados é usado para um nó sem filhos e que tem grau 
0, 
IV O grau de uma árvore é definido pelo número de subárvores de um nó. 
V O grafo é uma estrutura de dados que tem limitação para o número de vértices. 
VI Uma das aplicações da estrutura de dados grafo é a Computação Gráfica. 
 
 
I, II e V são afirmativas verdadeiras 
 
I, II, III e VI são afirmativas verdadeiras 
 
I, III, IV e VI são afirmativas verdadeiras 
 
II, IV e V são afirmativas verdadeiras 
 
II, IV, V e VI são afirmativas verdadeiras 
 
 
Ref.: 201701267732 
 
 6a 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 ? 
 
 
lista 
 
fila 
 
pilha 
 
grafo 
 
árvore 
 
 
Ref.: 201701028345 
 
 7a Questão 
 
Podemos dizer que estrutura de dados é: 
 
 
O que permite o armazenamento e a recuperação de dados independentemente de 
seu conteúdo. 
 
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. 
 
A entrada, que satisfaz a quaisquer restrições impostas pelo problema, necessária 
para se calcular uma solução do problema. 
 
É a saída, que satisfaz a quaisquer restrições impostas pelo problema, necessária 
para se calcular uma solução do problema. 
 
 
Ref.: 201701028722 
 8a Questão 
 
As estruturas de dados são importantes para a programação porque facilitam a 
pesquisa, pois permitem a ordenação dos dados de forma crescente ou decrescente. 
Dessa forma, assinale a alternativa correta que define um tipo de dado estruturado. 
 
 
Podem armazenar apenas um valor de cada vez, se algum valor for atribuído o 
anterior é apagado. 
 
Também são denominados tipos primitivos, não é possível decompor em partes 
menores. 
 
Permitem agregar mais do que um valor em uma variável, existindo uma relação 
estrutural entre seus elementos. 
 
Consiste da definição do conjunto de valores (denominado domínio) que uma 
variável pode assumir ao longo da execução de um programa. 
 
São tipos de dados indivisíveis. 
 
 
Aula 2 
1a Questão 
 
As variáveis em programação são utilizadas para armazenar um valor de determinado 
tipo em um espaço reservado na memória. Em algumas linguagens de programação 
podemos declarar, ou seja, reservar um espaço na memória, fora do escopo da função 
principal, e fora do escopo de qualquer outra função. Ao fazer a declaração desta 
forma estamos declarando uma variável do tipo: 
 
 
Global 
 
Real 
 
Constante 
 
Local 
 
Inteiro 
 
 
Ref.: 201701095872 
 
 2a Questão 
 
Assinale a opção certa. 
 Quando não se escreve o protótipo de uma função ... 
 
 
A chamada da função não poderá ser feita em qualquer hipótese. 
 
É preciso definir a função antes do programa principal. 
 
A chamada da função poderá ser feita em qualquer hipótese. 
 
O programa não funcionará de forma alguma. 
 
A definição da função deverá ser escrita, obrigatoriamente, após o programa 
principal. 
 
 
Ref.: 201701028736 
 
 3a Questão 
 
Com a utilização das estruturas de dados e seus tipos, em algumas situações é 
imprescindível a criação de funções que façam determinada verificação ou ação 
nestas estruturas. Dessa forma, analise a função abaixo e marque corretamente a 
alternativa que descreve as funcionalidades desta. 
int funcao(float v[], float vl, int n) 
{ 
 for (int i = 0; i < n; i++) 
 if (v[i] == vl) 
 return i; 
 return -1; 
} 
 
 
Retorna a posição de v se o valor vl foi encontrado. 
 
Retorna -1 se o valor de vl estiver dentro de v. 
 
Retorna o valor de vl se o valor n foi encontrado. 
 
Retorna -1 se o valor de n foi encontrado. 
 
Resulta em erro, se o valor de vl não estiver dentro de v. 
 
 
Explicação: 
A função apresentada é a busca sequencial. Note que ela retorna o índice do elemento 
vl, quando o valor vl é encontrado e ela retorna -1 caso o valor vl não for 
encontrado. 
 
 
Ref.: 201701610426 
 
 4a Questão 
 
Considere a função: 
void dobro(int x) { 
 x = 10 * x; 
} 
Qual será o valor impresso na tela quando o programa principal for executado? 
int main() { 
int n; 
n = 5; 
dobro(n); 
cout << n; 
return 0; 
} 
 
 
 
10 
 
0 
 
5 
 
50 
 
Haverá um erro de compilação 
 
 
Ref.: 201701028740 
 
 5a Questão 
 
A declaração de variáveis na programação é o ato de reservar um espaço na memória 
para poder armazenar valores de um determinado tipo. Essas variáveis podem ser 
classificadas como variáveis locais e globais. Sendo assim, qual das situações abaixo 
representa melhor o conceito das variáveis globais. 
 
 
Em uma função "resul" tem-se uma variável ali declarada por 'T' que recebe o 
valor inteiro 5. Ao tentar chamar esta variável em outra função é mencionado um 
warning. 
 
Se dentro de uma função "mostra" declararmos uma variável 'R' com um 
determinado valor poderemos imprimir esta variável em qualquer outra função do 
programa mostrando o valor atribuído na função "mostra". 
 
Em duas funções diferentes temos duas variáveis também diferentes com o 
mesmo nome apresentando o mesmo valor. 
 
Ao modificar o valor da variável 'X' na função "modifica" seu valor modificado 
poderá ser apresentado em qualquer outra função do programa. 
 
Se modificarmos o valor da variável 'Y' na função "soma", e depois imprimirmos 
na tela esta variável em outra função, onde tambemestá declarada a variável 'Y', 
será acusado um erro de compilação. 
 
 
Ref.: 201701605755 
 
 6a Questão 
 
 O que será impresso pela função Eureka ? Assinale a opção correta. 
 
void Eureka() 
 { 
 for (int i = 1; i <= 10; i++) 
 if (i % 2 == 0) 
 cout << i << " "; 
 else 
 if (i % 7 == 0) 
 return; 
 } 
 
 
 
2 4 6 
 
Nada é impresso, pois a função não compila. A função não deveria usar return, 
pois não está de acordo com o uso de void. 
 
2 4 6 8 10 
 
Nada é impresso, pois a função não compila. Para a função compilar, deveria ter 
int no lugar de void, já que há return na função. 
 
2 4 6 8 
 
 
Ref.: 201701020255 
 
 7a Questão 
 
Assinale a alternativa que apresenta duas formas de passagem de parâmetros para 
uma rotina ou função: 
 
 
Por valor e por referência 
 
Por reforço e por referência. 
 
Por inferência e por valor. 
 
Por memória e por disco. 
 
Por teste e por reforço. 
 
 
Explicação: 
Questão super objetiva. Só pode ser por valor e por referência. 
 
 
Ref.: 201701642260 
 
 8a 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 Estruturas de Dados 
 
As Filas 
 
As funções 
 
Os Vetores 
 
Os Grafos 
1a Questão 
 
 
 
 
O programa executa perfeitamente independente da ordem das 
funções já que existem os seus protótipos. 
 
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 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, mas não mostra o valor da 
media já que esta função não foi chamada na função main( ). 
 
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. 
 
 
Ref.: 201701611132 
 
 2a Questão 
 
Uma função possui um valor de retorno inteiro, recebe por valor um inteiro como 
primeiro parâmetro e por referência um inteiro como segundo parâmetro. Qual das 
respostas abaixo poderia representar o protótipo dessa função: 
 
 
void func (int a, int &b); 
 
int func (int &a, int b); 
 
int func (int a, int &b); 
 
void func (int &a, int &b); 
 
int func (&int, int); 
 
 
Ref.: 201701863099 
 
 3a Questão 
 
Considera a FUNÇÃO abaixo: 
 
void inverte(int &x, int &y) 
{ int aux = x; 
x = y; 
y = aux; } 
Quais valores serão impressos na tela quando o seguinte programa principal for 
executado? 
int main() 
{ int a = 18, b = 28; 
inverte(a, b); 
cout << a <<" e "<< b; 
return 0; } 
 
 
18 e 28 
 
28 e 18 
 
18 e 18 
 
08 e 18 
 
28 e 08 
 
 
Explicação: 
Teste de Mesa 
a b x y aux 
18 28 //Na main() 
18 28 18 28 //Quando a função é chamada x, recebe o endereço de a e y, o 
de b. Logo acessam os mesmos endereços 
18 28 18 28 18 //Na função, aux é declarada e inicializada com o valor de x 
18 28 28 28 18 //Na função x = y; Deixará x com valor 28 
18 28 28 18 18 //Na função y = aux; Deixará y com valor 18 
 
Como a função é void, nada retorna e nem precisa porque os valores foram trocados 
pela função misterio(...) que recebeu por passagem por referência. 
 
 
Ref.: 201701592530 
 
 4a Questão 
 
Na passagem por ____________________ , o endereço da variável da função 
chamadora é passado para a função chamada e, dessa forma, o valor poderá ser 
alterado, ou não. 
 
 
caracter 
 
número 
 
void 
 
referência 
 
valor 
 
 
Ref.: 201701261713 
 
 5a Questão 
 
Informe qual deverá ser a saída do programa abaixo: 
 
#include 
void func(int *x) 
{ 
 do{ 
 cout << *x << " "; 
 (*x)--; 
 }while(*x>0); 
} 
 
main() 
{ 
 int x=5; 
 func(&x); 
 cout << x; 
 system("pause"); 
} 
 
 
 
5 3 4 2 1 4 
 
5 3 4 2 1 0 
 
5 4 3 2 1 0 
 
5 4 3 2 1 5 
 
5 4 3 2 1 6 
 
 
Ref.: 201701617013 
 
 6a Questão 
 
Blocos únicos de códigos que realizam diversas tarefas distitintas são de dificil 
manutenção. Portanto, utiliza-se a tecnica da modularização de programas, a fim de 
facilitar a implementação e a manutenção dos programas. Esta técnica, também 
chamada de modularização, tem como principal elemento: 
 
 
As Estruturas de Dados 
 
Os Vetores 
 
As funções 
 
Os Grafos 
 
As Filas 
 
 
Ref.: 201701233385 
 
 7a Questão 
 
 
 
 
Auxiliar = 100 Numero1 = 900 Numero2 = 80 
 
Auxiliar = 111 Numero1 = 1000 Numero2 = 80 
 
Auxiliar = 101 Numero1 = 900 Numero2 = 20 
 
Auxiliar = 100 Numero1 = 1000 Numero2 = 20 
 
Auxiliar = 100 Numero1 = 900 Numero2 = 20 
 
 
Explicação: 
Acompanhando a execução 
Na função main() é declarada a variável valor e inicializada com 1000. 
Quando na main(), a função mistério é chamada, é passado o endereço da variável valor. 
Logo, de forma bem simples, v seria o nome da variável valor para a função misterio(...) 
Dentro da função misterio(...), foi declarada uma variável local aux com conteúdo 11 
Sendo assim, 
aux = aux - 11; Deixará aux com 100 
v = v - aux ; Deixará v com 900(1000 - 100) 
Como a variável numero foi declarada globalmente, todas as funções poderão acessá-la 
e, com isso, alterar seu valor, 
numero = aux - numero; Deixará numero com 80(100 - 20) 
Dentro da função misterio(...) será exibido Auxiliar = 100 e quando retornar à função main(), 
serão exibidos Numero1 = 900 Numero2 = 80 
Resposta correta: Auxiliar = 100 Numero1 = 900 Numero2 = 80 
 
 
Ref.: 201701028739 
 
 8a Questão 
 
Em programação podemos utilizar um recurso que modulariza o programa chamado 
função. As funções precisam ser ativadas para que possam ser executadas. Para isso, 
é necessário chamar a função pelo seu nome e enviar, quando necessário, os valores 
respectivos para os parâmetros de entrada. Ao enviar os valores para os parâmetros de 
entrada, o programa pode fazer uma cópia deste valor ou trabalhar em um endereço 
enviado. Quando se envia o endereço estamos ativando a função por meio de: 
 
 
Envio de inteiro. 
 
Envio de valor. 
 
Passagem por valor. 
 
Ponteiros. 
 
Registro. 
 
 
Explicação: 
Falso. Quando se tem endereço não é passagem por valor Passagem por valor. 
 
FAlso. Fala-se em endereço do valor Envio de inteiro. 
 
 Verdadeiro. Ponteiro armazena o endereço de memória de 
uma variável 
Ponteiros. 
 
Falso. Como é esse envio ? Envio de valor. 
 
FAlso. Sem sentido. Resgistro (struct em C++) agrega dados de 
tipos diferentes. Registro. 
 
 
 
Aula 3 
 
1a 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;aluno.vet[10].nota=5.7; 
 
vet[10].aluno.nota=5.7 ; 
 
vet[10]=aluno.5.7; 
 
aluno.vet[10]=5.7; 
 
 
Ref.: 201701668054 
 2a 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.nota=5.7 ; 
 
vet[10]=aluno.5.7; 
 
aluno.vet[10]=5.7; 
 
vet[10].nota=5.7; 
 
 
Ref.: 201701753148 
 3a 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->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; } 
 
for (int i = 0; i < 25; i++) { cin >> lista[i].nome; cin >> lista[i].nota; } 
 
 
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. 
 
 
 
 
 
 
Ref.: 201701233415 
 4a Questão 
 
Com relação à struct, é correto afirmar que : 
 
 
Cada elemento da struct é chamado campo e cada campo deve ser, 
obrigatoriamente, de um tipo de dados distinto de outro campo. 
 
A struct é sempre definida dentro da main. 
 
Não é possível criar um vetor de structs, pois o vetor trabalha apenas 
com dados do mesmo tipo. 
 
Cada elemento da struct é chamado componente. 
 
Cada elemento da struct é denominado membro ou campo, sendo que a 
struct pode armazenar elementos de tipos diferentes ou não. 
 
 
 
Ref.: 201701598576 
 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].media=6.0; 
 
vet[3].aluno=6.0; 
 
aluno[10]=6.0; 
 
aluno[3].10=6.0; 
 
aluno[3].media=6.0; 
 
 
Ref.: 201701028200 
 6a Questão 
 
Qual das seguintes estruturas de dados é classificada como heterogênea? 
 
 
Loop 
 
Registro 
 
Pilha 
 
Vetor 
 
Fila 
 
 
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. 
 
 
Ref.: 201701700304 
 7a Questão 
 
Marque a opção correta, considerando 
 
struct Livro { 
int codigo; 
float preco; 
} liv; 
 
 
Livro.liv.codigo = 12345; 
 
liv.preco = 30.70; 
 
liv->preco = 30.70; 
 
Livro->liv.codigo = 12345; 
 
Livro.codigo = 12345; 
 
 
Ref.: 201702071281 
 8a 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 II, III e IV. 
 
todas as afirmativas estão corretas. 
 
estão corretas apenas as afirmativas I, II e III. 
 
estão corretas apenas as afirmativas I, III e IV. 
 
 
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. 
1a 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.5.7; 
 
vet[10].aluno.nota=5.7 ; 
 
aluno.vet[10].nota=5.7; 
 
aluno.vet[10]=5.7; 
 
vet[10].nota=5.7; 
 
 
Ref.: 201701753148 
 2a 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? 
 
 
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; } 
 
for (int i = 0; i < 25; i++) { cin >> lista[i].nome; cin >> lista[i].nota; } 
 
 
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. 
 
 
 
 
 
 
Ref.: 201701598576 
 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 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[10]=6.0; 
 
aluno[3].media=6.0; 
 
aluno[3].10=6.0; 
 
vet[3].media=6.0; 
 
vet[3].aluno=6.0; 
 
 
Ref.: 201701668054 
 4a 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].nota=5.7; 
 
vet[10]=aluno.5.7; 
 
vet[10].aluno.nota=5.7 ; 
 
aluno.vet[10]=5.7; 
 
 
Ref.: 201701028200 
 5a Questão 
 
Qual das seguintes estruturas de dados é classificada como heterogênea? 
 
 
Fila 
 
Vetor 
 
Pilha 
 
Loop 
 
Registro 
 
 
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. 
 
 
Ref.: 201702071279 
 6a 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 : 
 
 
, (vírgula). 
 
& (e comercial ou eitza). 
 
-> (seta). 
 
∙ (ponto). 
 
* (asterisco). 
 
 
Explicação: 
Por definição, o operador que permite acessar os campos de uma variável struct é o 
ponto (.). 
 
 
 
Ref.: 201701700304 
 7a Questão 
 
Marque a opção correta, considerando 
 
struct Livro { 
int codigo; 
float preco; 
} liv; 
 
 
Livro.codigo = 12345; 
 
Livro->liv.codigo = 12345; 
 
Livro.liv.codigo = 12345; 
 
liv->preco = 30.70; 
 
liv.preco = 30.70; 
 
 
Ref.: 201702071281 
 8a 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 III. 
 
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 II, III e IV. 
 
todas as afirmativas estão corretas. 
 
 
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. 
 
Aula 4 
1a Questão 
 
Sabendo-se que o método de seleção também é um método de ordenação que baseia 
seu algoritmo em trocas entre os elementos de um vetor, se submetermos a sequencia 
de inteiros armazenada em um vetor inicialmente na seguinte ordem : 13, 23, 3, 8, 1. 
Pode-se dizer que quando o menor elemento do vetor alcançar sua posição final, a 
ordenação apresentada no vetor é: 
 
 
1,23,3,8,13 
 
1,23,13,8,3 
 
1,3,23,8,13 
 
1,13,23,8,3 
 
1,8,3,23,13 
 
 
Ref.: 201701613834 
 
 2a Questão 
 
Nos métodos de ordenação interna, quais são aqueles classificados como tipo método 
simples? 
 
 
Insert Sort, Bubble Sort e Quick Sort 
 
Insert Sort, Bubble Sort e Shell Sort 
 
Selection Sort, Insert Sort e Bubble Sort 
 
Shell Sort, Quick Sort e Heap Sort 
 
Selection Sort, Shell Sort e Bubble Sort 
 
 
Ref.: 201701613833 
 
 3a Questão 
 
Em relação à classificação do método de ordenação, assinale abaixo aquele que, 
durante o processo de ordenação, só usa a memória principal: 
 
 
Ordenação Simples 
 
Ordenação Eficiente 
 
Ordenação Interna 
 
Ordenação Externa 
 
Ordenação Simples Externa 
 
 
Ref.: 201701031537 
 
 4a 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 binária 
 
pesquisa cadeias indexada 
 
pesquisa indexada 
 
pesquisa sequencial 
 
pesquisa de cadeias 
 
 
Ref.: 201701028712 
 
 5a Questão 
 
Os métodos de ordenação são muito utilizados para facilitar a recuperação posterior 
de itens ordenados. Existem vários métodos de ordenação, por esse motivo, assinale 
corretamente a alternativa que mostra o nome do método que utiliza a estratégia de 
ordenação por trocas de vizinhos e é considerado o método mais simples. 
 
 
Hash 
 
Inserção 
 
Bolha 
 
Seleção 
 
Binária 
 
 
Ref.: 201701758817 
 
 6a 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 
 
10 e 1024 
 
9 e 10 
 
1024 e 512 
 
9 e 9 
 
 
Ref.: 201701028627 
 
 7a Questão 
 
O resultado do concurso para o cargo de uma empresa está armazenado em um vetor, que contém em 
cada um de seus elementos o nome e a nota obtida pelo candidato. Deseja-se que este vetor seja 
ordenado pela nota, em ordem decrescente. Sendo o vetor pequeno (poucos elementos), o programador 
responsável por desenvolver este algoritmo, escolheu um método de ordenação que executa os 
seguintes passos: 
 Selecione candidato com maior nota entre todos e troque-o com o candidato que está na 
primeira posição do vetor; 
 Selecione o segundo maior e troque-o com o candidato que está na segunda posição; 
 Os passos descritos anteriormente são seguidos para a terceira nota, quarta nota e assim por 
diante até que reste apenas um candidato. 
O algoritmo utilizado pelo programador trata-se do método de ordenaçãodenominado: 
 
 
Quicksort 
 
Bolha 
 
Heapsort 
 
Inserção 
 
Seleção 
 
 
Ref.: 201701028621 
 
 8a Questão 
 
Analise o seguinte trecho de algoritmo de ordenação de dados, cujos elementos estão dispostos em um 
vetor de nome v com n elementos. 
... 
{ 
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; 
} 
} 
... 
Assinale o método ao qual o trecho de algoritmo pertence. 
 
 
Bolha 
 
Seleção 
 
Quicksort 
 
Heapsort 
 
Inserção 
 
1a Questão 
 
Considere as afirmativas a seguir. 
I. Uma forma muito simples de fazer uma busca em um vetor consiste em 
percorrer o vetor, elemento a elemento, para verificar se o elemento procurado é 
igual a um dos elementos do vetor. 
II. A pesquisa sequencial é extremamente simples e eficiente quando o número 
de elementos do vetor for muito grande. 
III. Na pesquisa binária, a cada interação do algoritmo o tamanho do vetor é 
dividido ao meio. 
IV. A pesquisa binária funciona corretamente quanto o conjunto de dados estiver 
desordenado. 
Assinale a alternativa correta. 
 
 
Somente as afirmativas I e III são corretas. 
 
Somente as afirmativas I e II são corretas. 
 
Somente as afirmativas III e IV são corretas. 
 
Somente as afirmativas II, III e IV são corretas. 
 
Somente as afirmativas I e IV são corretas. 
 
 
Explicação: 
Analisando cada afirmativa : 
I. Uma forma muito simples de fazer uma busca em um vetor consiste em percorrer o 
vetor, elemento a elemento, para verificar se o elemento procurado é igual a um dos 
elementos do vetor. 
Correto. SEria uma busca sequencial. 
II. A pesquisa sequencial é extremamente simples e eficiente quando o número de 
elementos do vetor for muito grande. 
Falso. Se tivermos que procurar um elemento que está no fim do vetor ou que não 
seja encontrado, o tempo de execução será proporcional ao número de elementos. 
Então, quanto maior a lista, mais tempo levaremos. 
III. Na pesquisa binária, a cada interação do algoritmo o tamanho do vetor é dividido 
ao meio. 
Correto. 
IV. A pesquisa binária funciona corretamente quanto o conjunto de dados estiver 
desordenado. 
Falso. Por definição, a busca binária só pode atuar em listas ordenadas. 
Logo, apenas as afirmativas I e III estão corretas. 
 
 
Ref.: 201701028626 
 
 2a Questão 
 
O resultado do concurso para o cargo de uma empresa está armazenado em um vetor, 
que contém em cada um de seus elementos o número de inscrição, o nome e a nota 
obtida pelo candidato. Este vetor está ordenado pelo número de inscrição. Para 
realização de uma consulta que, dado um número de inscrição, apresenta o nome e 
nota do candidato, um programador utilizou um algoritmo de busca que realiza 
sucessivas divisões no vetor, comparando o número de inscrição procurado com o 
número de inscrição do candidato posicionado no meio do vetor. Se o candidato 
posicionado do meio do vetor tiver o número de inscrição igual ao número de 
inscrição procurado, a busca termina com sucesso. Caso contrário, se candidato 
posicionado do meio do vetor tiver número de inscrição menor que o procurado, 
então a busca continua na metade posterior do vetor. E finalmente, se candidato 
posicionado do meio do vetor tiver número de inscrição maior que o procurado, a 
busca continua na metade anterior do vetor. O algoritmo utilizado pelo programador 
trata-se do método denominado busca: 
 
 
linear. 
 
binária. 
 
por comparação. 
 
por contagem. 
 
randômica. 
 
 
Ref.: 201701028372 
 
 3a Questão 
 
Marque a afirmativa correta para a "inserção incremental". 
 
 
É um tipo de sequenciação por intercalação. 
 
Os pivôs são escolhidos aleatoriamente. 
 
É um tipo de ordenação por intercalação 
 
Consiste em adicionar um valor no vetor, mantendo a ordem existente e 
ajustando o total de elementos. 
 
A técnica é boa quando os dados ficam uniformemente distribuídos entre os seus 
compartimentos. 
 
 
Ref.: 201701869616 
 
 4a Questão 
 
Este vetor foi ordenado pelo método: 
 
 
Mergesort. 
 
Método da bolha (bubble sort). 
 
Quicksort. 
 
Ordenação por inserção (insertion sort). 
 
Ordenação por seleção (selection sort). 
 
 
Explicação: 
O bubblesort trabalha comparando e trocando, se preciso, duplas de dados 
vizinhos. Portanto, pelo comportamento na sequÊncia descrita temos o método da 
bolha ou bubblesort. 
 
 
Ref.: 201701617007 
 
 5a Questão 
 
Analisando o trecho de código a seguir: 
inicio=0; 
fim= tamanho - 1; 
meio=(inicio+fim)/2; 
while(procura != nomeVetor[meio] && inicio != fim) 
{ 
 if(procura > nomeVetor[meio]) 
 inicio=meio+1; 
 else 
 fim=meio; 
 meio=(inicio+fim)/2; 
} 
if(nomeVetor[meio]==procura) 
 cout<<"\n....: "< < outroVetor[meio]<<endl; 
else 
 cout<<"\nDado nao encontrado\n";</endl; 
Pode-se afirmar que: 
 
 
trata-se da implementação do algortimo de busca sequencial 
 
trata-se da implementação do algortimo de ordenação por seleção. 
 
trata-se da implementação do algortimo de busca binária. 
 
trata-se da implementação do algortimo de ordenação por inserção. 
 
trata-se da implementação do algortimo de ordenação bolha. 
 
 
Ref.: 201701738354 
 
 6a Questão 
 
Caso seja empregada uma busca binária em uma lista sequencial ordenada com 2048 
valores, qual seria o número máximo de comparações para encontrar um valor que 
esteja na lista? 
 
 
11 
 
8 
 
12 
 
9 
 
10 
 
 
Explicação: 
Como a busca binária sai continuamente dividindo o conjunto de dados ao meio (em 
duas partes), então vamos fatorar e organizar o resultado como potência de base 2. 
 Fatorando 2048 temos 2 11 
 Portanto, a resposta é 11. 
 
 
Ref.: 201701028377 
 
 7a Questão 
 
Marque a afirmativa correta para a "Ordenação em Listas Lineares Sequenciais". 
 
 
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 adicionar um valor no vetor, mantendo a ordem existente e ajustando 
o total de elementos. 
 
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. 
 
É o processo pelo qual um conjunto de dados é colocado em uma ordem 
crescente ou decrescente. 
 
 
Ref.: 201701617003 
 
 8a Questão 
 
Seja a seguinte função de ordenação: 
void ordena( int n, int v[]) 
{ 
 int i, j, x; 
 for (j = 1; j < n; ++j) { 
 x = v[j]; 
 for (i = j-1; i >= 0 && v[i] > x; --i) 
 v[i+1] = v[i]; 
 v[i+1] = x; 
 } 
} 
Pode-se dizer que é uma função de ordenação: 
 
 
Que utiliza o método inserção e realiza uma ordenação crescente nos elementos 
do vetor v. 
 
Que utiliza o método seleção e realiza uma ordenação decrescente nos 
elementos do vetor v. 
 
Que utiliza o método seleção e realiza uma ordenação crescente nos elementos 
do vetor v. 
 
Que utiliza o método inserção e realiza uma ordenação decrescente nos 
elementos do vetor v. 
 
Que utiliza o método bolha e realiza uma ordenação crescente nos elementos do 
vetor v. 
 
 
Aula 5 
1a Questão 
 
__________________________ é uma lista linear em que a alocação de memória 
pode ser estática, e que a forma de armazenamento é contígua ou sequencial namemória. Usamos este tipo de lista quando se tem em mente um tamanho pré-
definido, ou seja, quando se sabe até onde a lista pode crescer. 
 
 
Lista Não Linear 
 
Lista Linear Não Alocada 
 
Lista Linear Sequencial 
 
Lista Linear Não Sequencial 
 
Lista Linear de Alocação de Memória 
 
 
Ref.: 201701233464 
 2a Questão 
 
 
 
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[30] << 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; 
 
 
Ref.: 201701882105 
 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].matricula << " " << L[i].titulo[30] << endl; 
 
for (int i = 0; i < n; i++) 
cout << L[i] << endl; 
 
for (int i = 0; i < n; i++) 
cout << L.matricula[i] << " " << L.titulo[i] << 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 << " " << L.titulo << endl; 
 
 
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; 
 
 
Ref.: 201702083890 
 4a Questão 
 
Analise a função abaixo, considerando o tipo Livro e marque a opção correta. 
int R2D2 (Livro v[ ], int c, int n) { 
for (int i = 0; i < n; i++) 
 if (v[i].codigo == c) 
 return i; 
 return -1; 
} 
onde 
struct Livro { 
 int codigo; 
 char autor[30]; 
 }; 
 
 
Ocorre erro na função R2D2 se o valor de c não estiver sido encontrado em v. 
 
Retorna a posição do valor c em v , se o valor c for encontrado em v. 
 
Retorna -1 se o valor de c estiver em v. 
 
Retorna -1 se o valor de n foi encontrado. 
 
Retorna o valor de c se o valor n foi encontrado. 
 
 
Explicação: 
Questão objetiva. A função realiza uma busca sequencial. 
A cada rodada do loop é verificado se o código de v[i] é igual ao valor de c, passado 
como parâmetro. Se o código estiver em v[i], então a posição i é retornada. Se o teste 
do if nunca tiver sucesso, então, sairemos do for sem sucesso e ao final, será 
retornado -1, que não pode ser índice ou posição de qualquer valor no vetor. 
 
 
Ref.: 201701230980 
 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. 
 
 
Lista Sequencial 
 
Lista Encadeada 
 
Pilha Sequencial 
 
Pilha Encadeada 
 
Fila Sequencial 
 
 
Ref.: 201701676249 
 6a 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 : 
 
 
Busca 
 
Inicialização 
 
Inserção 
 
Substituição 
 
Ordenação por inserção 
 
 
Ref.: 201702150956 
 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: 
 
 
Nenhuma afirmação está correta. 
 
Estão corretas apenas as afirmativas I e III. 
 
Está correta apenas a afirmativa I. 
 
Está correta apenas a afirmativa II. 
 
Estão corretas apenas as afirmativas I e II. 
 
 
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. 
 
 
Ref.: 201701028706 
 8a 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 é: 
 
 
Variável 
 
Vetor 
 
Registro 
 
Função 
 
Matriz 
 
1a Questão 
 
Considere as seguintes afirmações sobre Listas Sequenciais: 
I - São estruturas lineares que utilizam as primeiras posições de um vetor para 
armazenar os dados de interesse. 
II - São compostas pelo conjunto dos dados que se deseja armazenar e por uma 
variável inteira que indica a quantidade de dados armazenados. 
III - Os dados são sempre inseridos ou removidos no final da lista, tomando-se o 
cuidado de atualizar a quantidade de dados da mesma. 
IV - A lista pode admitir ou não admitir que haja dados repetidos (listas podem ser 
com ou sem repetição). 
Marque a opção que contém apenas todas as afirmações verdadeiras: 
 
 
I, II, III 
 
I, II 
 
I, III, IV 
 
I, II, III, IV 
 
I, II, IV 
 
 
Explicação: 
Analisando cada afirmativa : 
 
I - São estruturas lineares que utilizam as primeiras posições de um vetor para 
armazenar os dados de interesse. 
Verdadeiro. As inserções vão ocorrendo do início do vetor (índice zero) em direção 
ao fim. 
 
II - São compostas pelo conjunto dos dados que se deseja armazenar e por uma 
variável inteira que indica a quantidade de dados 
armazenados. 
Verdadeiro. Armazenam-se os dados e controla-se a quantidade de dados na lista. 
 
III - Os dados são sempre inseridos ou removidos no final da lista, tomando-se o 
cuidado de atualizar a quantidade de dados 
da mesma. 
Falso. A inserção pode ser no início, no meio ou no final da lista. Na verdade, pode 
ocorrer inserção e remoção em qualquer posição. 
 
IV - A lista pode admitir ou não admitir que haja dados repetidos (listas podem ser 
com ou sem repetição). 
Verdadeiro. Uma lista pode ou não ter dados repetidos. 
 
Resposta certa : As afirmativas I, II, IV estão certas 
 
 
Ref.: 201702065368 
 2a Questão 
 
Em relação às listas sequenciais, considere as seguintesafirmações: 
I - são estruturas lineares que utilizam vetores para armazenamento dos dados; 
II - os componentes da lista são os dados que se deseja armazenar e um valor inteiro 
com a quantidade de dados da lista; 
III - os dados são sempre inseridos ou removidos no final da lista, tomando-se sempre 
o cuidado de atualizar a quantidade de dados da lista; 
IV - listas podem apresentar dados repetidos ou não admitir repetição (listas com e 
sem repetição). 
Assinale a opção que contém apenas todas as afirmativas corretas: 
 
 
I, II, III 
 
I, II, IV 
 
I, II 
 
I, II, III, IV 
 
II, III, IV 
 
 
Explicação: 
Analisando cada afirmativa : 
I - são estruturas lineares que utilizam vetores para armazenamento dos dados; 
Verdadeira. O vetor é sequencial e tem tamanho pré-definido. 
II - os componentes da lista são os dados que se deseja armazenar e um valor inteiro 
com a quantidade de dados da lista; 
Verdadeira. 
III - os dados são sempre inseridos ou removidos no final da lista, tomando-se sempre 
o cuidado de atualizar a quantidade de dados da lista; 
Falso, pois é possível inserirmos em qualquer posição da lista. 
IV - listas podem apresentar dados repetidos ou não admitir repetição (listas com e 
sem repetição). 
Verdadeiro. 
Logo, as afirmativas I, II e IV estão corretas 
 
 
Ref.: 201701028563 
 3a Questão 
 
Com relação as listas lineares sequenciais: 
I - Uma lista linear sequencial é um vetor em linguagens estruturadas, também chamado de array. 
II - Um elemento de uma lista linear sequencial pode ser acessado diretamente através de um índice. 
III - Uma lista linear sequencial pode ter elementos de um mesmo tipo, ou de tipos diferentes. 
 
 
Apenas as afirmações II e III estão corretas. 
 
Apenas as afirmações I e III estão corretas. 
 
Apenas as afirmações I e II estão corretas. 
 
Apenas as afirmações II está corretas. 
 
Apenas a afirmação I está correta. 
 
 
Ref.: 201701591796 
 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 recebendo os 
seguintes valores, o que ela retornaria? 
v[10] = {0, 2, 4, 6, 8, 10, 20, 100} 
tam = 8 
e = -6 
 
 
6 
 
0 
 
4 
 
3 
 
-1 
 
 
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. 
 
 
Ref.: 201701882105 
 5a 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.matricula << " " << L.titulo << endl; 
 
for (int i = 0; i < n; i++) 
cout << L.matricula[i] << " " << L.titulo[i] << endl; 
 
for (int i = 0; i < n; i++) 
cout << L[i] << 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; 
 
 
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; 
 
 
Ref.: 201701028706 
 6a 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 é: 
 
 
Registro 
 
Matriz 
 
Vetor 
 
Variável 
 
Função 
 
 
Ref.: 201701230980 
 7a 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. 
 
 
Lista Sequencial 
 
Lista Encadeada 
 
Fila Sequencial 
 
Pilha Encadeada 
 
Pilha Sequencial 
 
 
Ref.: 201701676249 
 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 
 
Inicialização 
 
Busca 
 
Inserção 
 
Ordenação por inserção

Outros materiais