Buscar

Estrutura de 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 255 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 255 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 255 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

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
	
	fila
	
	pilha
	Respondido em 09/04/2020 19:15:27
	
Explicação:
Conforme gabarito e aula 1.
	
	
	 
	
	 2a 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
	
	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
	
	II, IV e V são afirmativas verdadeiras
	Respondido em 09/04/2020 19:17:09
	
	
	Gabarito
Coment.
	
	 
	
	 3a 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 Sequencial
	 
	Lista Encadeada
	
	Pilha Encadeada
	
	Fila Sequencial
	 
	Lista Sequencial
	Respondido em 09/04/2020 19:17:53
	
	
	 
	
	 4a Questão
	
	
	
	
	Observe o trecho do programa em C++ abaixo e, após, entrar com os valores sugeridos para sua execução assinale a alternativa que representa a resposta final.
cin >> a;
cin >> b;
cin >> c;
cin >> d;
cout << a;
cout << b;
cout << c;
cout << d;
cout << d;
cout << c;
cout << b;
cout << a;
		
	 
	Após a impressão dos valores pela ordem teremos uma fila e uma pilha.
	
	Após a impressão dos valores pela ordem teremos uma pilha e uma fila.
	
	Após a impressão dos valores pela ordem teremos duas filas.
	
	Após a impressão dos valores pela ordem teremos duas pilhas.
	
	Após a impressão dos valores pela ordem teremos uma fila e um grafo.
	Respondido em 09/04/2020 19:18:53
	
	
	 
	
	 5a 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.
	
	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.
	Respondido em 09/04/2020 19:20:30
	
	
	Gabarito
Coment.
	
	 
	
	 6a Questão
	
	
	
	
	Das estruturas de dados a seguir aquela que NÃO é uma estrutura linear é :
		
	
	Vetor.
	
	Pilha.
	 
	Grafo.
	
	Fila.
	
	Lista.
	Respondido em 09/04/2020 19:20:28
	
Explicação:
Lineares : lista, pilha, fila, deque. Com ou sem vetor, que é linear.
Não lineares  : árvore e grafo.
 
	
	
	 
	
	 7a Questão
	
	
	
	
	Estão entre algumas das possíveis formas de estruturas de dados:
		
	
	cout, Funções, vetores
	
	Grafos, funções, fila
	 
	Árvores binárias, pilhas, vetores
	
	Listas, vetores, cin
	
	Árvores binárias, pilhas, algoritmos
	Respondido em 09/04/2020 19:21:06
	
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.
	
	
	 
	
	 8a Questão
	
	
	
	
	O que é estrutura de dados?
		
	
	É um conjunto de comandos para uma tarefa específica referenciada por um nome no algoritmo principal, retornando um determinado valor no seu próprio nome.
	 
	É um modo particular de armazenamento e organização de dados em um computador de modo que possam ser usados eficientemente.
	
	É um conjunto de técnicas de programação.
	
	É uma forma determinada de armazenamento de dados em um banco de dados.
	
	É uma sequência finita de instruções bem definidas e não ambíguas, cada uma das quais devendo ser executadas mecânica ou eletronicamente em um intervalo de tempo finito e com uma quantidade de esforço finita.
	Respondido em 09/04/2020 19:21:49
	
Explicação:
Estrutura de dados não é banco de dados . Estrutura de dados não é Tipo de dados.
Estrutura de dados não é ¿ É um conjunto de comandos para uma tarefa específica referenciada por um nome no algoritmo principal, retornando um determinado valor no seu próprio nome¿ que no caso, fala de função.
 
Estrutura de dados não é ¿ É uma sequência finita de instruções bem definidas e não ambíguas, cada uma das quais devendo ser executadas mecânica ou eletronicamente em um intervalo de tempo finito e com uma quantidade de esforço finita.¿    Esta definição é de algoritmo.
 
Portanto, Estrutura de Dados é ¿ É um modo particular de armazenamento e organização de dados em um computador de modo que possam ser usados eficientemente.¿
 
Na Aula 1 do conteúdo online há elementos para tal 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
	
	
	I, II e V são afirmativas verdadeiras
	
	
	II, IV, V e VI são afirmativas verdadeiras
	
	
	II, IV e V são afirmativas verdadeiras
	
	
	I, II, III e VI são afirmativas verdadeiras
		
	Gabarito
Coment.
	
	
	
	 
		
	
		2.
		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 de 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 I e II estão corretas
	
	
	As alternativas I e III estão corretas.
	
	
	As alternativas II e IV estão corretas.
	
	
	As alternativas III e IV estão corretas.
	
	
	Todas as alternativas estão corretas.
	
	
	
	 
		
	
		3.
		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 especiaisna 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 Sequencial
	
	
	Fila Sequencial
	
	
	Lista Sequencial
	
	
	Lista Encadeada
	
	
	Pilha Encadeada
	
	
	
	 
		
	
		4.
		           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.
	
	
	
	Lista
	
	
	Árvore
	
	
	Grafo
	
	
	         Fila
	
	
	          Pilha
	
	
	
	 
		
	
		5.
		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.
	
	
	O que permite o armazenamento e a recuperação de dados independentemente de seu conteúdo.
	
	
	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.
		
	Gabarito
Coment.
	
	
	
	 
		
	
		6.
		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:
	
	
	
	Todas as alternativas estão corretas.
	
	
	As alternativas I e II estão corretas
	
	
	As alternativas III e IV estão corretas.
	
	
	As alternativas I e III estão corretas.
	
	
	As alternativas II e IV estão corretas.
		
	Gabarito
Coment.
	
	
	
	 
		
	
		7.
		          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
	
	
	Grafo
	
	
	 Lista
	
	
	              Árvore
	
	
	             Pilha
	
	
	
	 
		
	
		8.
		É um exemplo de TAD Não Linear:
	
	
	
	Filas de Prioridade
	
	
	Pilhas
	
	
	Filas
	
	
	Listas
	
	
	Grafos
	
Explicação: Um grafo é um tipo de dados abstrato não linear
		1.
		Observe o trecho do programa em C++ abaixo e, após, entrar com os valores sugeridos para sua execução assinale a alternativa que representa a resposta final.
cin >> a;
cin >> b;
cin >> c;
cin >> d;
cout << a;
cout << b;
cout << c;
cout << d;
cout << d;
cout << c;
cout << b;
cout << a;
	
	
	
	Após a impressão dos valores pela ordem teremos uma fila e um grafo.
	
	
	Após a impressão dos valores pela ordem teremos duas pilhas.
	
	
	Após a impressão dos valores pela ordem teremos uma fila e uma pilha.
	
	
	Após a impressão dos valores pela ordem teremos duas filas.
	
	
	Após a impressão dos valores pela ordem teremos uma pilha e uma fila.
	
	
	
	 
		
	
		2.
		Preciso fazer uma relação de tudo o que levar em minha viagem de mochila pela Europa.  A estrutura de dados mais adequada para armazenar tudo que preciso levar é ...
	
	
	
	árvore
	
	
	fila
	
	
	pilha
	
	
	grafo
	
	
	lista
	
Explicação:
Conforme gabarito e aula 1.
	
	
	
	 
		
	
		3.
		Estão entre algumas das possíveis formas de estruturas de dados:
	
	
	
	Árvores binárias, pilhas, algoritmos
	
	
	Listas, vetores, cin
	
	
	Árvores binárias, pilhas, vetores
	
	
	Grafos, funções, fila
	
	
	cout, Funções, vetores
	
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.
	
	
	
	 
		
	
		4.
		Estão entre algumas das possíveis formas de se estruturar dados:
	
	
	
	Grafos, algoritmos, fila.
	
	
	Algoritmos, lista ordenada, vetores.
	
	
	Grafos, lista ordenada, algoritmos.
	
	
	Grafos, lista ordenada, vetores.
	
	
	Lista encadeada, vetores, algoritmos.
	
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.
	
	
	
	 
		
	
		5.
		A forma correta para imprimir o valor do último elemento de um vetor v com n posições é:
	
	
	
	cout << v[n];
	
	
	cout << v[ultimo];
	
	
	cin >> v[-1];
	
	
	cout << v[n-1];
	
	
	cout << v[n+1];
	
	
	
	 
		
	
		6.
		Qual estrutura de dados é mais adequada para armazenar a estrutura do diretório do sistema de arquivos de um sistema operacional?
	
	
	
	Árvore
	
	
	Fila
	
	
	Lista
	
	
	Grafo
	
	
	Pilha
	
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.
	
	
	
	 
		
	
		7.
		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 particular de armazenamento e organização de dados em um computador de modo que possam ser usados de modo eficiente.
	
	
	É 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 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.
	
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.
	
	
	
	 
		
	
		8.
		Assinale a alternativa correta sobre tipos abstratos de dados:
	
	
	
	É fundamental que os tipos abstratos de dados proponham um conjunto eficiente de algoritmospara realização de suas operações.
	
	
	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 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.
	
	
	Um tipo abstrato de dados deve sempre ser representado por meio dos recursos específicos de uma linguagem de programação.
	
Explicação:
	
	Um tipo abstrato de dados é composto por um modelo de dados e um conjunto de operadores definidos sobre esses dados.
	Verdadeiro.  Por definição de TAD (tipo abstrato 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.
	Falso.   Quando se pensa em TAD não há vínculos com implementaçã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.
	FAlso.  Não se pensa em implementação quando se trabalha com TAD.
	
	É fundamental que os tipos abstratos de dados proponham um conjunto eficiente de algoritmos para realização de suas operações.
	FAlso. Não se pensa em implementação ou eficiência quando se trabalha com TAD. Se pensa na semântica das operações.
	
	Um tipo abstrato de dados deve sempre ser representado por meio dos recursos específicos de uma linguagem de programação.
	
	
 Falso : Não se pensa em programa ou na linguagem de programação, pois o TAD não está vinculado à implementação.
	1a 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; }
		
	
	28 e 08
	
	18 e 28
	
	18 e 18
	 
	28 e 18
	
	08 e 18
	Respondido em 10/04/2020 20:58:13
	
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.
	
	
	 
	
	 2a Questão
	
	
	
	
	Considere os trechos abaixo:
int valor = 100;
void eureka (int &z)   {
    int temp = 25;
     z--;
     temp = temp - 10;
     valor = valor - temp;
     cout << "Auxiliar = " << temp << endl;
}
int main()  {
     int R = 1000;
     eureka(R);
     cout << "Result = " <<  R << "  Valor  = " << valor << endl;
}
Assinale a opção correta.
		
	 
	Será impresso
Auxiliar = 15
Result = 999  Valor = 85
sendo que z é um  parâmetro passado por referência
 
 
	
	Será impresso
Auxiliar = 15
Result = 1000 Valor = 85
sendo que z é um parâmetro passado por referência
	
	Será impresso
Auxiliar = 15
Result = 1000  Valor = 85
sendo que z é um  parâmetro passado por valor
 
 
	 
	Será impresso
Auxiliar = 15
Result = 999  Valor = 85
sendo que z é um  parâmetro passado por valor
 
 
	
	Será impresso
Auxiliar = 15
Result = 1000  Valor = 100
sendo que z é um  parâmetro passado por referência
 
 
	Respondido em 10/04/2020 21:16:55
	
Explicação:
Questão objetiva. Só é possível ser marcada a opção indicada no gabarito.
Vejamos a análise passo a passo do trecho de código....
int valor = 100;
void eureka (int &z)   {
    int temp = 25;
     z--;
     temp = temp - 10;
     valor = valor - temp;
     cout << "Auxiliar = " << temp << endl;
}
int main()  {
     int R = 1000;
     eureka(R);
     cout << "Result = " <<  R << "  Valor  = " << valor << endl;
}
Passo a passo ....
Temos que valor recebeu 100 e valor é uma variável global.
Começando a execução pela main, temos que eureka é chamada e o valor 1000 é passado.
Iniciando a execução de eureka temos que :
    temp (local à eureka) recebe o valor 25, depois o valor 1000 passado é decrementado para 999, temp recebe 15, valor recebe 100-15, que dá 85. Daí, o valor de temp é impresso, sendo mostrado na tela :     Auxiliar = 15.  DAí, a função termina e volta-se para a main.  Lá na main, após a chamada da eureka, temos a seguinte impressão :
    Result = 999   Valor = 85
Note que para R valer 999 só foi possível porque z é um parâmetro passado por referência.
	
	
	 
	
	 3a 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 do dado do valor retornado da função para quem a chamou.
	
	o protótipo da função.
	
	o tipo dos dados dos parâmetros que são passados à função quando da sua chamada.
	 
	o tipo das variáveis que serão utilizadas dentro da função.
	
	o escopo das variáveis do programa.
	Respondido em 10/04/2020 21:20:59
	
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.
	
	
	 
	
	 4a 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 Filas
	 
	As funções
	
	Os Grafos
	
	As Estruturas de Dados
	
	Os Vetores
	Respondido em 10/04/2020 21:21:38
	
	
	 
	
	 5a Questão
	
	
	
	
	Considere o trecho de um programa escrito em C++ : 
long func1 (int n1) {
   int ft=1, i = 1;
   while ( i <= n1) {
         ft *= i;
         i++;
   }
   return ft;
}
main() {
    cout << func1 (5);
}
Marque a opção correta que mostra o que é impresso na tela.
		
	
	60
	
	5
	 
	120
	
	1
	
	24
	Respondido em 10/04/2020 21:24:46
	
Explicação:
Acompanhando passo a passo :
long func1 (int n1) {
   int ft=1, i = 1;
   while ( i <= n1) {
         ft *= i;
         i++;
   }
   return ft;
}
main() {
    cout << func1 (5);
}
Passo a passo :
1) Começando a execução pela main ... func1 é chamada e é passado o valor 5.
2) Entrando na função, temos que n1 recebeu 5, i recebeu 1  e ft recebeu 1.
3) Ainda na função func1 ...   teste do loop ... 1 <= 5 ? Sim.
    Então, ft recebe 1*1, que dá 1 e i passa a valer 2.  Acompanhar na tabela desde o início da execução de func1
	ft
	i
	i <= n1
	1
	1
	1 <= 5 / Sim
	1
	2
	2 <= 5 ? Sim
	2
	3
	3 <= 5 ? sim
	6
	4
	4 <= 5 ? Sim
	24
	5
	 5 <= 5 ? Sim
	120
	6
	6 <= 5 ? FAlso
SErá retornado o valor de ft que é 120.  Volta-se então para a main e o valor 120 é impresso.
	
	
	 
	
	 6a Questão
	
	
	
	
	Ao definirmos uma função, podemos afirmar:
I Toda função tem parâmetros
II Quando nada retorna, o tipo é void
III Quando todos os parâmetros são do mesmo tipo, é suficiente usar o tipo uma vez e separar os nomes dos parâmetros por vírgulas
IV  Na passagem por valor, o endereço da variável da função chamadora é passado para a função chamada
Após uma análise das afirmativas acima, escolha a opção correta.
		
	 
	Somente II III e IV estão corretas
	
	Somente I e II estão corretas
	 
	Somente II está correta
	
	Somente II e III estão corretas
	
	Somente II e IV estão corretas
	Respondido em 10/04/2020 21:25:34
	
	
	Gabarito
Coment.
	
	 
	
	 7a Questão
	
	
	
	
	Considere o trecho de um programa escrito em C++ : 
int func1 (long num) {
    int n, na=1;
    while (num / 10 != 0){
          na += 1;
          num /= 10;
    }
    return na;
}
main() {
     cout <<func1 (132041);
}
Marque a opção correta que mostra o que é impresso na tela.
		
	 
	1
	
	4
	 
	6
	
	2
	
	3
	Respondido em 10/04/2020 21:30:25
	
Explicação:
Fazendo passo a passo :
int func1 (long num) {
    int n, na=1;
    while (num / 10 != 0){
          na += 1;
          num /= 10;
    }
    return na;
}
main() {
     cout << func1 (132041);
}
Passos : 
1) Chamada da função passando o valor 132041
2) Começa a função com num recebendo o valor 132041
3) na recebe 1 
4) enquanto num/10 é diferente de zero faça ...   Vejamos : 132041/10 é diferente de zero então
   na recebe 2 e num recebe 13204
5) Volta no teste do loop... 13204 /10 é diferente de zero ? Sim. Então, na recebe 3 e num recebe 1320
6) Volta no teste do loop... 1320 /10 é diferente de zero ? Sim. Então, na recebe 4 e num recebe 132 
7) Volta no teste do loop... 132 /10 é diferente de zero ? Sim. Então, na recebe 5 e num recebe 13
8) Volta no teste do loop... 13 /10 é diferente de zero ? Sim. Então, na recebe 6 e num recebe 1
9) Volta no teste do loop... 1 /10 é diferente de zero ?  Não.
Então, retorna o valor e na que é 6.
	
	
	 
	
	 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: 10 10
	
	Valores: 13 10
	
	Valores: 31 01
	 
	Valores: 13 13
	 
	Valores: 10 13
	Respondido em 10/04/2020 21:32:38
	
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
		Das estruturas de dados a seguir aquela que NÃO é uma estrutura linear é :
	
	
	
	Vetor.
	
	
	Grafo.
	
	
	Fila.
	
	
	Lista.
	
	
	Pilha.
	
Explicação:
Lineares : lista, pilha, fila, deque. Com ou sem vetor, que é linear.
Não lineares  : árvore e grafo.
 
	
	
	
	 
		
	
		2.
		O que é estrutura de dados?
	
	
	
	É um modo particular de armazenamento e organização de dados em um computador de modo que possam ser usados eficientemente.
	
	
	É uma sequência finita de instruções bem definidas e não ambíguas, cada uma das quais devendo ser executadas mecânica ou eletronicamente em um intervalo de tempo finito e com uma quantidade de esforço finita.
	
	
	É uma forma determinada de armazenamento de dados em um banco de dados.
	
	
	É um conjunto de técnicas de programação.
	
	
	É um conjunto de comandos para uma tarefa específica referenciada por um nome no algoritmo principal, retornando um determinado valor no seu próprio nome.
	
Explicação:
Estrutura de dados não é banco de dados . Estrutura de dados não é Tipo de dados.
Estrutura de dados não é ¿ É um conjunto de comandos para uma tarefa específica referenciada por um nome no algoritmo principal, retornando um determinado valor no seu próprio nome¿ que no caso, fala de função.
 
Estrutura de dados não é ¿ É uma sequência finita de instruções bem definidas e não ambíguas, cada uma das quais devendo ser executadas mecânica ou eletronicamente em um intervalo de tempo finito e com uma quantidade de esforço finita.¿    Esta definição é de algoritmo.
 
Portanto, Estrutura de Dados é ¿ É um modo particular de armazenamento e organização de dados em um computador de modo que possam ser usados eficientemente.¿
 
Na Aula 1 do conteúdo online há elementos para tal questão.
	
	
	
	 
		
	
		3.
		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
	
	
	grafo
	
	
	fila
	
	
	pilha
	
	
	árvore
	
Explicação:
Conforme gabarito e aula 1.
	
	
	
	 
		
	
		4.
		          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 ?
	
	
	
	 Lista
	
	
	Grafo
	
	
	             Pilha
	
	
	              Árvore
	
	
	Fila
	
	
	
	 
		
	
		5.
		           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
	
	
	Grafo
	
	
	         Fila
	
	
	Lista
	
	
	          Pilha
	
	
	
	 
		
	
		6.
		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 de 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.
	
	
	
	 
		
	
		7.
		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
	
	
	Pilha Sequencial
	
	
	Lista Sequencial
	
	
	Fila Sequencial
	
	
	Lista Encadeada
	
	
	
	 
		
	
		8.
		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.
	
	
	
	II, IV, V e VI são afirmativas verdadeiras
	
	
	II, IV e V são afirmativas verdadeiras
	
	
	I, III, IV e VI são afirmativas verdadeiras
	
	
	I, II, III e VI são afirmativas verdadeiras
	
	
	I, II e V são afirmativas verdadeiras
		#include  < iostream  >
 using namespace std;
void SOMA(float a, int b)  {
  float result  =  a+b;
  cout << "A soma de " << a << " com " << b << " é: " << result;
}
int main()
{
int a;
float b;
a = 10; b = 12.3;
SOMA(b,a);
}
A função SOMA acima possui as seguintes características :
	
	
	
	Retorna valor e não  possui parâmetros.
	
	
	Não retorna valor e não   possui parâmetros.
	
	
	Não retorna valor e possui parâmetros.
	
	
	Retorna valor.
	
	
	Retornavalor e possui parâmetros.
	
Explicação:
A função
void SOMA(float a, int b)  {
  float result  =  a+b;
  cout << "A soma de " << a << " com " << b << " é: " << result;
}
tem o tipo de retorno void, o que significa que nenhum valor é retornado. Além disso, a função possui 2 parâmetros, que são a e b.
Logo, a resposta certa é  Não retorna valor e possui parâmetros.
	
	
	
	 
		
	
		2.
		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 escopo das variáveis do programa.
	
	
	o tipo dos dados dos parâmetros que são passados à função quando da sua chamada.
	
	
	o tipo do dado do valor retornado da função para quem a chamou.
	
	
	o tipo das variáveis que serão utilizadas dentro da função.
	
	
	o protótipo da função.
	
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.
	
	
	
	 
		
	
		3.
		No programa abaixo em C++, que sequência de valores serão impressos ? int x; x = 15; if (x > 0) { int x; x = 25; cout << x << endl; } cout << x << endl;
	
	
	
	15 e 15
	
	
	15 e 25
	
	
	0 e 5
	
	
	25 e 25
	
	
	25 e 15
	
Explicação:
Analisando passo a passo, temos :
x é declarado e inicializado com 15. Daí, testa-se a condição do if, que é verdadeira. Em seguida, entra-se no bloco do if onde um outro x é declarado, recebe 25 e é impresso. Terminado o bloco do if, o x local ao bloco do if não é mais enxergado. Então, ao executarmos a última linha do cout, que está fora do if, vemos que o valor de  x impresso é 15.
Logo, a resposta correta é 25 e 15
	
	
	
	 
		
	
		4.
		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:
	
	
	
	Ponteiros.
	
	
	Envio de valor.
	
	
	Passagem por valor.
	
	
	Envio de inteiro.
	
	
	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.
		
	Gabarito
Coment.
	
	
	
	 
		
	
		5.
		1)      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
	
	
	2 4 6 8 10
	
	
	2 4 6 8
	
	
	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.
	
	
	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.
	
	
	
	 
		
	
		6.
		Caso uma estrutura homogênea (vetor) seja passada como parâmetro para uma função, então:
	
	
	
	Essa passagem pode ser "por valor" ou "por referência"
	
	
	Essa passagem é "por referência"
	
	
	Todos os valores contidos no vetor são copiados para a função
	
	
	Essa passagem é "por valor"
	
	
	Haverá um erro de compilação, pois vetores não podem ser parâmetros de funções
	
Explicação:
Quando o vetor é um parâmetro de uma função ele é sempre passado por referência, não havendo outra possibilidade. Não ocorrerá erro, se o vetor for devidamente passado para a função.
	
	
	
	 
		
	
		7.
		Considere a função abaixo:
int func (int a, int& b){
   a = b - a;
   b = a * 2;
   a = b * 2;
   return a;
}
Considere o seguinte código na função main:
    int x = 2, y = 3, z;
    z = func (x, y);
    cout << x << "; " << y << "; " << z;
O que será impresso?
	
	
	
	2; 2; 4
	
	
	2; 2; 1
	
	
	1; 2; 4
	
	
	4; 2; 4
	
	
	1; 3; 1
	
Explicação:
a recebeu o valor de x que era 2
b recebeu 3, a partir de y, que foi passado por referência.
Executando a função, passo a passo, tem-se :
a recebeu 1
b recebeu  2
a recebeu um novo valor, que é  4.
Daí a função retorna o valor de a, que é 4.  
Voltando para a main temos que z recebeu o retorno da função que é 4, x não se alterou, valendo 2 e y recebeu 4, devido a alteração na função no parâmetro b, passado por referência.
  Daí, na tela será impresso :  2; 2; 4
	
	
	
	 
		
	
		8.
		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;
}
 
	
	
	
	Haverá um erro de compilação
	
	
	50
	
	
	0
	
	
	5
	
	
	10
		
	Gabarito
Coment.
		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 Grafos
	
	
	As funções
	
	
	As Filas
	
	
	Os Vetores
	
	
	
	 
		
	
		2.
		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
	
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
 
 
 
	
	
	
	 
		
	
		3.
		No programa abaixo, diga em que área de memória serão alocados os elementos de dados y e r, respectivamente.
#include
using namespace std;
int x, y;
float media( float a, float b )
{ float tmp;
tmp = (a + b ) / 2.0;
return ( tmp );
}
int main()
{
float r;
cout<<"Informe 2 valores: ";
cin>>x>> y;
r = media( x, y );
cout<<"\nMedia = "<< r<<"\n";
system ("pause");
}
	
	
	
	( ) área de pilha / área de registro
	
	
	( ) área de registro / área de pilha
	
	
	( ) área de dados globais / área de registro
	
	
	( ) área de dados globais / área de pilha
	
	
	( ) área de registro / área de dados globais
	
Explicação:
Como y e r são variáveis, ficarão armazenadas em  na área de dados globais / área de pilha
	
	
	
	 
		
	
		4.
		Considere o trecho de um programa escrito em C++ : 
int func1 (long num) {
    int n, na=1;
    while (num / 10 != 0){
          na += 1;
          num /= 10;
    }
    return na;
}
main() {
     cout << func1 (132041);
}
Marque a opção correta que mostra o que é impresso na tela.
	
	
	
	3
	
	
	2
	
	
	6
	
	
	4
	
	
	1
	
Explicação:
Fazendo passo a passo :
int func1 (long num) {
    int n, na=1;
    while (num / 10 != 0){
          na += 1;
          num /= 10;
    }
    return na;
}
main() {
     cout << func1 (132041);
}
Passos : 
1) Chamada da função passando o valor 132041
2) Começa a função com num recebendo o valor 132041
3) na recebe 1 
4) enquanto num/10é diferente de zero faça ...   Vejamos : 132041/10 é diferente de zero então
   na recebe 2 e num recebe 13204
5) Volta no teste do loop... 13204 /10 é diferente de zero ? Sim. Então, na recebe 3 e num recebe 1320
6) Volta no teste do loop... 1320 /10 é diferente de zero ? Sim. Então, na recebe 4 e num recebe 132 
7) Volta no teste do loop... 132 /10 é diferente de zero ? Sim. Então, na recebe 5 e num recebe 13
8) Volta no teste do loop... 13 /10 é diferente de zero ? Sim. Então, na recebe 6 e num recebe 1
9) Volta no teste do loop... 1 /10 é diferente de zero ?  Não.
Então, retorna o valor e na que é 6.
	
	
	
	 
		
	
		5.
		Considere as seguintes afirmativas :
I) Os vetores em C++, quando passados como parâmetros de funções,  são obrigatoriamente passados "por valor" e não "por referência".
II) Variáveis globais são um recurso adequado para troca de informações entre funções distintas.
III) Caso uma função necessite retornar mais de um valor ao programa que a chamou, deve fazê-lo usando parâmetros passados "por valor".
As afirmativas corretas são:
	
	
	
	Nenhuma está correta
	
	
	Apenas I e II
	
	
	Apenas I
	
	
	Apenas II
	
	
	Apenas III
	
Explicação:
Analisando cada afirmativa ...
I .   Falso. Em C++ os vetores passados como parâmetros são sempre passados por referência.
II.  FAlso. Variáveis globais são uma péssima forma de usar recursos, comprometendo principalmente a manutenção do programa.
III.  FAlso.  A função poderá retornar explicitamente um valor com return, mas terá que passar o outro parâmetro por referência e não por valor. Outra forma, será passar todos os parâmetros por referência.
Portanto, não opção correta.
	
	
	
	 
		
	
		6.
		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:
	
	
	
	int func (&int, int);
	
	
	void func (int a, int &b);
	
	
	int func (int a, int &b);
	
	
	int func (int &a, int b);
	
	
	void func (int &a, int &b);
		
	Gabarito
Coment.
	
	
	
	 
		
	
		7.
		Ao definirmos uma função, podemos afirmar:
I Toda função tem parâmetros
II Quando nada retorna, o tipo é void
III Quando todos os parâmetros são do mesmo tipo, é suficiente usar o tipo uma vez e separar os nomes dos parâmetros por vírgulas
IV  Na passagem por valor, o endereço da variável da função chamadora é passado para a função chamada
Após uma análise das afirmativas acima, escolha a opção correta.
	
	
	
	Somente II e III estão corretas
	
	
	Somente II III e IV estão corretas
	
	
	Somente II está correta
	
	
	Somente I e II estão corretas
	
	
	Somente II e IV estão corretas
		
	Gabarito
Coment.
	
	
	
	 
		
	
		8.
		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.
	
	
	A definição da função deverá ser escrita, obrigatoriamente, após o programa principal.
	
	
	É 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.
		Qual das seguintes estruturas de dados é classificada como heterogênea?
	
	
	
	Vetor
	
	
	Pilha
	
	
	Loop
	
	
	Fila
	
	
	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.
		
	Gabarito
Coment.
	
	
	
	 
		
	
		2.
		Marque a afirmativa correta para a "Inserção em lista linear sequencial ordenada".
	
	
	
	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.
	
	
	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 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.
	
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.
	
	
	
	 
		
	
		3.
		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.nota=5.7 ;
	
	
	aluno.vet[10]=5.7;
	
	
	aluno.vet[10].nota=5.7;
	
	
	vet[10]=aluno.5.7;
	
	
	
	 
		
	
		4.
		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].media=6.0;
	
	
	vet[3].media=6.0;
	
	
	aluno[10]=6.0;
	
	
	aluno[3].10=6.0;
	
	
	vet[3].aluno=6.0;
	
	
	
	 
		
	
		5.
		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).
	
	
	* (asterisco).
	
	
	-> (seta).
	
	
	∙ (ponto).
	
	
	& (e comercial ou eitza).
	
Explicação:
Por definição, o operador que permite acessar os campos de uma variável struct é o ponto (.).
 
	
	
	
	 
		
	
		6.
		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.codigo = 12345;
	
	
	Livro.liv.codigo = 12345;
	
	
	
	 
		
	
		7.
		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].nota=5.7;
	
	
	vet[10]=aluno.5.7;
	
	
	aluno.vet[10].nota=5.7;
	
	
	aluno.vet[10]=5.7;
	
	
	
	 
		
	
		8.
		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;
}
	
	
	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;
        }
    }
}
}
	
	
	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) { 
     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;
}
	
	
	int ordena(float v[], float valor, int n){
   for (int i = 0; i < n; i++)
     if (v[i] == valor)
       return i;
   return -1;
}
	
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!
		Qual das seguintes estruturas de dados é classificada como heterogênea?
	
	
	
	Loop
	
	
	Registro
	
	
	Vetor
	
	
	Pilha
	
	
	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.
		
	Gabarito
Coment.
	
	
	
	 
		
	
		2.
		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.
	
	
	
	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;
}
	
	
	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;
}
	
	
	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;
}
	
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.
	
	
	
	 
		
	
		3.
		Marque a afirmativa correta para a "Inserção em lista linear sequencial ordenada".
	
	
	
	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.
	
	
	É 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.
	
	
	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.
	
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.
	
	
	
	 
		
	
		4.
		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;
	
	
	aluno.vet[10]=5.7;
	
	
	vet[10]=aluno.5.7;
	
	
	vet[10].nota=5.7;
	
	
	vet[10].aluno.nota=5.7 ;
	
	
	
	 
		
	
		5.
		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].media=6.0;
	
	
	aluno[3].10=6.0;
	
	
	vet[3].media=6.0;
	
	
	aluno[10]=6.0;
	
	
	vet[3].aluno=6.0;
	
	
	
	 
		
	
		6.
		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;
	
	
	
	 
		
	
		7.
		Marque a opção correta, considerando
struct Livro {
int codigo;
float preco;
} liv;
	
	
	
	liv.preco = 30.70;
	
	
	Livro.liv.codigo = 12345;
	
	
	liv->preco = 30.70;
	
	
	Livro->liv.codigo = 12345;
	
	
	Livro.codigo = 12345;
	
	
	
	 
		
	
		8.
		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 :
	
	
	
	-> (seta).
	
	
	* (asterisco).
	
	
	, (vírgula).
	
	
	∙ (ponto).
	
	
	& (e comercial ou eitza).
	
Explicação:
Por definição, o operador que permite acessar os campos de uma variável struct é o ponto (.).
 
		Qual das seguintes estruturas de dados é classificada como heterogênea?
	
	
	
	Vetor
	
	
	Pilha
	
	
	Registro
	
	
	Loop
	
	
	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.
		
	Gabarito
Coment.
	
	
	
	 
		
	
		2.
		Os métodos de ordenação são muito utilizados em estruturas de dados para facilitar a busca e a recuperaçãoposterior 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, 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;
}
	
	
	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;
}
	
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.
	
	
	
	 
		
	
		3.
		Marque a afirmativa correta para a "Inserção em lista linear sequencial ordenada".
	
	
	
	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 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, mantendo 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.
	
	
	É o processo pelo qual um conjunto de dados é colocado em uma ordem crescente ou decrescente.
	
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.
	
	
	
	 
		
	
		4.
		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].nota=5.7;
	
	
	aluno.vet[10].nota=5.7;
	
	
	aluno.vet[10]=5.7;
	
	
	vet[10]=aluno.5.7;
	
	
	
	 
		
	
		5.
		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[10]=6.0;
	
	
	vet[3].media=6.0;
	
	
	aluno[3].10=6.0;
	
	
	aluno[3].media=6.0;
	
	
	
	 
		
	
		6.
		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;
	
	
	aluno.vet[10]=5.7;
	
	
	vet[10]=aluno.5.7;
	
	
	vet[10].aluno.nota=5.7 ;
	
	
	
	 
		
	
		7.
		Marque a opção correta, considerando
struct Livro {
int codigo;
float preco;
} liv;
	
	
	
	liv->preco = 30.70;
	
	
	Livro->liv.codigo = 12345;
	
	
	Livro.codigo = 12345;
	
	
	liv.preco = 30.70;
	
	
	Livro.liv.codigo = 12345;
	
	
	
	 
		
	
		8.
		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).
	
	
	∙ (ponto).
	
	
	* (asterisco).
	
	
	-> (seta).
	
Explicação:
Por definição, o operador que permite acessar os campos de uma variável struct é o ponto (.).
		Qual papel do for mais interno na função ordena abaixo ?
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;
   }
}
	
	
	
	Encontrar o maior valor de x que deve ser inserido em v[0..j-1].
	
	
	Encontrar o elmento a ser eliminado do vetor
	
	
	Encontrar o menor valor v[j] que deve ser inserido em v[0..j-1].
	
	
	Encontrar o valor de v[j] deve em v[0..j-1].
	
	
	Encontrar o ponto onde v[j] deve ser inserido em v[0..j-1].
		
	Gabarito
Coment.
	
	
	
	 
		
	
		2.
		Sabendo-se que o método de ordenção bolha ou bubble sort realiza a troca de elementos adjacentes até que todos os elementos de um vetor esteja ordenado. Então, se submetermos a sequencia de inteiros armazenada em um vetor inicialmente na seguinte ordem : 4, 2, 5, 1.
Pode-se dizer que quando o maior elemento do vetor alcançar sua posição final, a ordenação apresentada no vetor é:
	
	
	
	2,4,1,5
	
	
	1,2,4,5
	
	
	2,1,4,5
	
	
	1,4,2,5
	
	
	4,1,2,5
		
	Gabarito
Coment.
	
	
	
	 
		
	
		3.
		Nos métodos de ordenação interna, quais são aqueles classificados como tipo método simples?
	
	
	
	Shell Sort, Quick Sort e Heap Sort
	
	
	Insert Sort, Bubble Sort e Shell Sort
	
	
	Selection Sort, Insert Sort e Bubble Sort
	
	
	Insert Sort, Bubble Sort e Quick Sort
	
	
	Selection Sort, Shell Sort e Bubble Sort
		
	Gabarito
Coment.
	
		
	Gabarito
Coment.
	
		
	Gabarito
Coment.
	
	
	
	 
		
	
		4.
		
	
	
	
	if(vet[j] < vet[j-1] )
    { 
         aux=vet[j];
         vet[j-1]= vet[j];
         vet[j-1]=aux;      
     }
	
	
	if(vet[j-1] > vet[j] )
    { 
         aux=vet[j];
         vet[j]= vet[j-1];
         vet[j-1]=aux;      
     }
	
	
	if(vet[j] < vet[j-1] )
    { 
         aux=vet[j];
         vet[j]< vet[j-1];
         vet[j-1]=aux;      
     }
	
	
	if(vet[j] == vet[j-1] )
    { 
         aux=vet[j];
         vet[j]= vet[j-1];
         vet[j-1]=aux;      
     }
	
	
	if(vet[j-1] < vet[j] )
    { 
         aux=vet[j];
         vet[j]= vet[j-1];
         vet[j-1]=aux;      
     }
	
	
	
	 
		
	
		5.
		Marque a afirmativa correta para a "inserção incremental".
	
	
	
	A técnica é boa quando os dados ficam uniformemente distribuídos entre os seus compartimentos.Os pivôs são escolhidos aleatoriamente.
	
	
	Consiste em adicionar um valor no vetor, mantendo a ordem existente e ajustando o total de elementos.
	
	
	É um tipo de sequenciação por intercalação.
	
	
	É um tipo de ordenação por intercalação
		
	Gabarito
Coment.
	
	
	
	 
		
	
		6.
		Qual a importância de se entender a "ordenação" de dados ?
	
	
	
	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 algoritmos são construídos. Entendendo a ordenação, tem-se conhecimento para resolver 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 manter outros problemas.
	
	
	A ordenação é a base na qual, muitos sistemas são construídos. Entendendo a ordenação, tem-se conhecimento para manter outros problemas.
		
	Gabarito
Coment.
	
	
	
	 
		
	
		7.
		"Algoritmo de ordenação por trocas  que varre um vetor um certo número de vezes, comparando os elementos vizinhos dois a dois. A cada varredura, se o par de elementos está em ordem crescente, nada é feito, caso contrário os elementos do par são permutados". Esta definição está descrevendo o algoritmo de ordenação conhecido por :
	
	
	
	QuickSort
	
	
	InsertionSort
	
	
	BubbleSort
	
	
	SelectionSort
	
	
	MergeSort
	
Explicação:
Das opções apresentadas, as únicas que são ordenações por troca são Bubblesort e Quicksort.
Dessas  duas ordenações, a única que trabalha com duplas de elementos  vizinhos é o Bubblesort. O Quicksort, que está fora do escopo da disciplina, trabalha com pivô.
	
	
	
	 
		
	
		8.
		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.
	
	
	
	Inserção
	
	
	Quicksort
	
	
	Heapsort
	
	
	Bolha
	
	
	Seleção
		Entre os diversos algoritmos de pesquisa existentes, certamente os mais famosos são os da pesquisa sequencial e o da pesquisa binária. A busca ou pesquisa sequencial pode ser aplicada em vetores independente destes estarem ordenados, entretanto a busca binária só se aplica em vetores ordenados.
Seja o vetor A= {10,35,41,55,69,70,98}, suponha que o número 70 foi pesquisado pelo algoritmo da busca sequencial e também pelo algoritmo da busca binária, ambos algoritmos realizam testes nos elementos do vetor até achar o que procuram ou definirem que o elemento não se encontra no vetor. Sendo assim marque a alternativa que expressa o número de testes realizados pela busca sequencial e o número de testes realizados pela busca binária, respectivamente, até encontrarem o 70.
	
	
	
	5 e 5
	
	
	6 e 2
	
	
	6 e 1
	
	
	7 e 1
	
	
	6 e 4
		
	Gabarito
Coment.
	
	
	
	 
		
	
		2.
		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.
	
	
	por contagem.
	
	
	por comparação.
	
	
	binária.
	
	
	randômica.
		
	Gabarito
Coment.
	
	
	
	 
		
	
		3.
		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,8,3,23,13
	
	
	1,3,23,8,13
	
	
	1,13,23,8,3
	
	
	1,23,3,8,13
	
	
	1,23,13,8,3
		
	Gabarito
Coment.
	
	
	
	 
		
	
		4.
		Entre os diversos algoritmos de pesquisa existentes, certamente os mais famosos são os da pesquisa sequencial e o da pesquisa binária. A busca ou pesquisa sequencial pode ser aplicada em vetores independente destes estarem ordenados, entretanto a busca binária só se aplica em vetores ordenados. Seja o vetor A= {10,35,41,55,69,70,98}, suponha que o número 70 foi pesquisado pelo algoritmo da busca sequencial e também pelo algoritmo da busca binária, ambos algoritmos realizam testes nos elementos do vetor até achar o que procuram ou definirem que o elemento não se encontra no vetor. Sendo assim marque a alternativa que expressa o número de testes realizados pela busca sequencial e o número de testes realizados pela busca binária, respectivamente, até encontrarem o 70.
	
	
	
	6 e 2
	
	
	6 e 1
	
	
	6 e 4
	
	
	5 e 5
	
	
	7 e 1
	
	
	
	 
		
	
		5.
		É um método de pesquisa ou busca, cujo algoritmo parte do pressuposto de que o vetor está ordenado e realiza sucessivas divisões do espaço de busca, comparando o elemento buscado (chave) com o elemento no meio do vetor. Se o elemento do meio do vetor for a chave, a busca termina com sucesso. Caso contrário, se o elemento do meio vier antes do elemento buscado, então a busca continua na metade posterior do vetor. E finalmente, se o elemento do meio vier depois da chave, a busca continua na metade anterior do vetor.
A descrição apresentada trata-se do método denominado busca ...... 
	
	
	
	linear.
	
	
	binária.
	
	
	randômica.
	
	
	por contagem.
	
	
	por comparação.
		
	Gabarito
Coment.
	
	
	
	 
		
	
		6.
		Existem vários algoritmos de busca em estruturas de dados, um destes realiza a busca em vetores, e requer acesso aleatório aos elementos desta estrutura e parte do pressuposto de que os dados do vetor estejam ordenados e utiliza a técnica de divisão e conquista comparando o elemento desejado com o elemento do meio do vetor. Esta técnica ainda verifica se o elemento do meio do vetor for o desejado, a busca termina. Caso contrário, se o elemento do meio vier antes do elemento buscado, então a busca continua na metade posterior do vetor. E se o elemento do meio vier depois da chave, a busca continua na metade anterior do vetor. O algoritmo que utiliza esta metodologia é:
	
	
	
	Pesquisa binária
	
	
	Bolha
	
	
	Pesquisa sequencial
	
	
	Seleção
	
	
	Inserção
		
	Gabarito
Coment.
	
	
	
	 
		
	
		7.
		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 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, mantendo 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 depoisdo meio.
	
	
	É o processo pelo qual um conjunto de dados é colocado em uma ordem crescente ou decrescente.
		
	Gabarito
Coment.
	
	
	
	 
		
	
		8.
		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 II, III e IV são corretas.
	
	
	Somente as afirmativas I e III são corretas.
	
	
	Somente as afirmativas III e IV são corretas.
	
	
	Somente as afirmativas I e II 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.
		
		Considere a seguinte função busca escrita em linguagem C++ :
bool busca(int vetor[ ], int n, int tam)
{
    int ini=0, mid;
    while (ini <= tam)
    {
         cout << " x ";
         mid = (ini + tam)/2;
         if (vetor[mid] == n)
             return true;
         else if (n > vetor[mid])
             ini = mid+1;
         else
             tam = mid-1;
    }
    return false;
}
Qual a quantidade total de impressões da letra x nas buscas pelos números n = 4, n = 2 e n = 0 no vetor [1,2,3,4,5,6,7,8], sendo tam = 7 ?
int vetor[] = {1,2,3,4,5,6,7,8};
busca(vetor, 4, 7);
busca(vetor, 2, 7);
busca(vetor, 0, 7);
	
	
	
	4
	
	
	6
	
	
	9
	
	
	8
	
	
	5
	
Explicação:
Na 1a. execução da busca... para n = 4 temos impresso :  x
Na 2a. execução da busca ... para n = 2   temos impresso :  x    x
Na 3a. execução da busca ... para n = 0   temos impresso :  x   x   x 
Total de impressões da letra x :  6
	
	
	
	 
		
	
		2.
		Em uma pesquisa sequencial a lista deve estar?
	
	
	
	ordenada ou desordenada.
	
	
	desordenada somente da metade da lista até o final.
	
	
	ordenada somente o primeiro da lista.
	
	
	sempre desordenada.
	
	
	ordenada somente do início até a metade da lista.
	
Explicação:
A busca sequencial pode se usada para listas ordenadas ou não ordenadas, não havendo qualquer restrição a parte ou à  totalidade da lista na ordenação.  Já a busca binária só pode ser usada para listas ordenadas.
		
	Gabarito
Coment.
	
	
	
	 
		
	
		3.
		Sobre o funcionamento da busca binária, é correto afirmar que dividindo seu vetor em duas metades.
	
	
	
	Se o item for menor que o item que está na metade do vetor, o item foi encontrado.
	
	
	Se o item for igual ao item que está na metade do vetor, o item foi encontrado.
	
	
	Se o item for maior que o item que está na metade do vetor procure na primeira metade, ou seja, a da direita.
	
	
	Se o item for menor que o item que está na metade do vetor, procure na segunda metade, ou seja, a da direita.
	
	
	Se o item for igual ao item que está na metade do vetor, o item não foi encontrado.
	
Explicação:
Neste tipo de busca, o vetor deve estar ordenado.
Divide-se o conjunto de dados ao meio e procura-se no meio do vetor. Se achou, retorna a posição do dado do meio. SE não achou, verifica-se se o valor procurado vem antes do  valor do meio. Se for verdade,  redefine-se o fim do vetor, voltando a realizar a busca à esquerda do meio. Se o valor procurado vier depois do valor do meio do vetor, então redefine-se o início e segue-se para a busca na parte à direita do meio do vetor.
		
	Gabarito
Coment.
	
	
	
	 
		
	
		4.
		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 Interna
	
	
	Ordenação Simples
	
	
	Ordenação Simples Externa
	
	
	Ordenação Externa
	
	
	Ordenação Eficiente
		
	Gabarito
Coment.
	
		
	Gabarito
Coment.
	
		
	Gabarito
Coment.
	
	
	
	 
		
	
		5.
		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
	
	
	
	1
	
	
	-2
	
	
	-1
	
	
	2
	
	
	0
	
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
	
	
	
	 
		
	
		6.
		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 binária
	
	
	pesquisa indexada
	
	
	pesquisa cadeias indexada
	
	
	pesquisa de cadeias
		
	Gabarito
Coment.
	
	
	
	 
		
	
		7.
		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
	
	
	Binária
	
	
	Inserção
	
	
	Seleção
	
	
	Bolha
		
	Gabarito
Coment.
	
	
	
	 
		
	
		8.
		O processo de rearranjar um conjunto de dados em uma ordem crescente ou decrescente é chamado de ordenação. Existem várias técnicas de ordenação, entretanto a técnica que procura o menor valor entre todos os elementos do vetor e troca-o pelo primeiro elemento; para os n - 1 elementos restantes, determinação do elemento de menor valor e troca pelo segundo elemento e assim sucessivamente, é chamado de:
	
	
	
	Hash
	
	
	Seleção
	
	
	Binária
	
	
	Bolha
	
	
	Inserçã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 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 crescente nos elementos do vetor v.
	
	
	Que utiliza o método bolha

Outros materiais