Buscar

Gabaritos

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

É um exemplo de TAD Não Linear:
	
	
	
	Filas de Prioridade
	
	
	Listas
	
	
	Filas
	
	
	Pilhas
	
	
	Grafos
	
		2.
		Qual estrutura de dados é mais adequada para armazenar a estrutura do diretório do sistema de arquivos de um sistema operacional?
	
	
	
	Grafo
	
	
	Fila
	
	
	Árvore
	
	
	Lista
	
	
	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.
	
		3.
		          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 ?
	
	
	
	Grafo
	
	
	             Pilha
	
	
	 Lista
	
	
	Fila
	
	
	              Árvore
	
		4.
		Diferentes tipos de estrutura de dados são adequadas a diferentes tipos de aplicação e algumas são altamente especializadas, destinando-se a algumas tarefas específicas. Dessa forma a definição de Estrutura de Dados está expressa na alternativa:
	
	
	
	É um modo de deleção de dados em um computador.
	
	
	É um modo de distribuição e organização de dados em uma rede de computador de modo que possam ser usados de modo eficiente.
	
	
	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.
	
	
	É um modo de utilização de dados nos programas de computador.
	
	
	
		5.
		Analise as afirmativas abaixo e selecione a alternativa correta.
 
I Algumas aplicações da estrutura de dados grafo são: Diagrama de Entidade Relacionamento e Redes de computadores. 
 
II Árvore e lista duplamente encadeada são estruturas não lineares. 
III A Fila é uma estrutura não linear e a inserção de um elemento acontece ao final.  
IV A Lista é uma das estruturas de dados mais simples, mas não se pode ordená-la.
 
V O uso de ponteiros é fundamental para construção de listas encadeadas.
	
	
	
	II e V são verdadeiras
	
	
	I e V são verdadeiras
	
	
	II E IV são verdadeiras
	
	
	I , II e IV são verdadeiras
	
	
	III e V são verdadeiras
	
		6.
		           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
	
		7.
		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 é ...
	
	
	
	lista
	
	
	árvore
	
	
	grafo
	
	
	fila
	
	
	pilha
		8.
		A forma correta para imprimir o valor do último elemento de um vetor v com n posições é:
	
	
	
	cin >> v[-1];
	
	
	cout << v[n+1];
	
	
	cout << v[n];
	
	
	cout << v[ultimo];
	
	
	cout << v[n-1];
		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
	
	
	Todas as alternativas estão corretas.
	
	
	As alternativas II e IV estão corretas.
	
	
	As alternativas I e III estão corretas.
		2.
		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.
	
	
	
	árvore
	
	
	pilha
	
	
	grafo
	
	
	lista
	
	
	fila
	
		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 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
	
	
	Fila Sequencial
	
	
	Lista Encadeada
	
	
	Pilha Sequencial
	
	
	Pilha Encadeada
	
	
		4.
		Estão entre algumas das possíveis formas de se estruturar dados:
	
	
	
	Grafos, lista ordenada, vetores.
	
	
	Grafos, algoritmos, fila.
	
	
	Lista encadeada, vetores, algoritmos.
	
	
	Algoritmos, lista ordenada, vetores.
	
	
	Grafos, lista ordenada, algoritmos.
		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.
	
	
	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.
	
	
	Uma sequência de passos computacionais que transforma uma entrada em uma saída previamente determinada.
	
		6.
		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, III, IV e VI são afirmativas verdadeiras
	
	
	II, IV, V e VI são afirmativas verdadeiras
	
	
	I, II, III e VI são afirmativas verdadeiras
	
	
	II, IV e V são afirmativas verdadeiras
	
		7.
		Das estruturas de dados a seguir aquela que NÃO é uma estrutura linear é :
	
	
	
	Vetor.
	
	
	Grafo.
	
	
	Pilha.
	
	
	Fila.
	
	
	Lista.
	
Explicação:
Lineares : lista, pilha, fila, deque. Com ou sem vetor, que é linear.
Não lineares  : árvore e grafo.
 
	
	
	
		8.
		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 conjunto de técnicas de programação.
	
	
	É uma forma determinada de armazenamento de dados em um banco 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.
		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.
	
	
	
	árvore
	
	
	fila
	
	
	grafo
	
	
	lista
	
	
	pilha
	
		2.
		Das estruturas de dados a seguir aquela que NÃO é uma estrutura linear é :
	
	
	
	Lista.
	
	
	Pilha.
	
	
	Fila.
	
	
	Grafo.
	
	
	Vetor.
	
		3.
		As estruturas de dadossã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 Encadeada
	
	
	Fila Sequencial
	
	
	Pilha Sequencial
	
	
	Pilha Encadeada
	
	
	Lista Sequencial
	
	
	
		4.
		O que é estrutura 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.
	
	
	É 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 conjunto de técnicas de programação.
	
	
	É um modo particular de armazenamento e organização de dados em um computador de modo que possam ser usados eficientemente.
	
	
	É uma forma determinada de armazenamento de dados em um banco de dados.
	
		5.
		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 III estão corretas.
	
	
	Todas as alternativas estão corretas.
	
	
	As alternativas I e II estão corretas
	
	
	As alternativas III e IV estão corretas.
	
	
	As alternativas II e IV estão corretas.
	
	
		6.
		Podemos dizer que estrutura de dados é:
	
	
	
	A entrada, que satisfaz a quaisquer restrições impostas pelo problema, necessária para se calcular uma solução do problema.
	
	
	O meio para armazenar e organizar dados com o objetivo de facilitar o acesso e as modificações.
	
	
	Uma sequência de passos computacionais que transforma uma entrada em uma saída previamente determinada.
	
	
	O que permite o armazenamento e a recuperação de dados independentemente de seu conteúdo.
	
	
	É a saída, que satisfaz a quaisquer restrições impostas pelo problema, necessária para se calcular uma solução do problema.
	
		7.
		Estão entre algumas das possíveis formas de estruturas de dados:
	
	
	
	Grafos, funções, fila
	
	
	Listas, vetores, cin
	
	
	cout, Funções, vetores
	
	
	Árvores binárias, pilhas, vetores
	
	
	Árvores binárias, pilhas, algoritmos
	
		8.
		Assinale a alternativa correta sobre tipos abstratos de dados:
	
	
	
	Um tipo abstrato de dados deve sempre ser representado por meio dos recursos específicos de uma linguagem de programação.
	
	
	Um tipo abstrato de dados é composto por um modelo de dados e um conjunto de operadores definidos sobre esses 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.
	
	
	É fundamental que os tipos abstratos de dados proponham um conjunto eficiente de algoritmos para realização de suas operações.
	
	
	Um tipo abstrato de dados descreve, além do que se pode fazer com os dados, como as operações serão efetivamente implementadas.
		Sobre funções, é correto afirmar:
	
	
	
	Não devem conter variáveis locais em seu código.
	
	
	São blocos de instruções que são executados quando são chamadas em alguma parte do programa.
	
	
	Obrigatoriamente devem retornam algum valor.
	
	
	Obrigatoriamente devem possuir parâmetros.
	
	
	Não podem ser chamadas dentro de outras funções.
	
		2.
		Considere o trecho de um programa escrito em C++ : 
int func1 (int n1, int n2) {
    int soma=0;
    for (    ; n1 < n2 ; n1 +=  2) {
         soma +=  n1;
     }
    return soma;
}
main() {
    cout << func1(1.20);
}
Marque a opção correta que mostra o que é impresso na tela.
	
	
	
	100
	
	
	104
	
	
	102
	
	
	90
	
	
	80
	
	
		3.
		Considere a seguinte função: void dobro(int x) { x = 2 * x; } Qual valor será impresso na tela quando o seguinte programa principal for executado? int main() { int n = 3; n = n + 2; dobro(n); cout << n; return 0; }
	
	
	
	3
	
	
	5
	
	
	20
	
	
	0
	
	
	10
	
Explicação:
A função não retorna valor, então o valor de "n" não é alterado permanecendo igual a 5.
	
	
	
		4.
		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 Filas
	
	
	As Estruturas de Dados
	
	
	As funções
	
	
	Os Vetores
	
	
	Os Grafos
	
	
		5.
		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 4 3 2 1 5
	
	
	5 4 3 2 1 6
	
	
	5 3 4 2 1 0
	
	
	5 3 4 2 1 4
	
	
	5 4 3 2 1 0
	
	
		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);
	
	
	void func (int &a, int &b);
	
	
	int func (int &a, int b);
	
		7.
		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.
	
	
	
	5
	
	
	120
	
	
	1
	
	
	60
	
	
	24
		Caso uma estrutura homogênea (vetor) seja passada como parâmetro para uma função, então:
	
	
	
	Todos os valores contidos no vetor são copiados para a função
	
	
	Essa passagem é "por referência"
	
	
	Haverá um erro de compilação, pois vetores não podem ser parâmetros de funções
	
	
	Essa passagem pode ser "por valor" ou "por referência"
	
	
	Essa passagem é "por valor"
	
		2.
		Assinale a opção certa.
 Quando não se escreve o protótipo de uma função ...
	
	
	
	A chamada da função poderá ser feita em qualquer hipótese.
	
	
	A definição da função deverá ser escrita, obrigatoriamente, após o programa principal.
	
	
	O programa não funcionará de forma alguma.
	
	
	A chamada da função não poderá ser feita em qualquer hipótese.
	
	
	É preciso definir a função antes do programa principal.
	
		3.
		Funções são semelhantes aos procedimentos, exceto que uma função sempre retorna um valor. Um exemplo de função seria o conjunto de instruções para calcular o fatorial de um número e após a função ser executada, ela deve retornar o fatorial do número pedido. Marque a opção que representa um protótipo de função válido.
	
	
	
	nome tipo(parametros);
	
	
	tipo parametros(parametros);
	
	
	retorno nomeFuncao(parametros);
	
	
	tipo parametros(int a, int b);
	
	
	void float(int a, int b);
	
		4.
		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.
	
	
	
	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".
	
	
	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.
	
	
	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 modificarmos o valor da variável 'Y' na função "soma", e depois imprimirmos na tela esta variável em outra função, onde tambem está declarada a variável 'Y', será acusado um erro de compilação.
	
	
	Em duas funções diferentes temos duas variáveis também diferentes com o mesmo nome apresentando o mesmo valor.
	
		5.
		Considere o trecho de um programa escrito em C++.
 int func1 (int n1, int n2) {
     int aux = n1 % n2;
     while ( aux != 0) {
         n1 = n2;
         n2 = aux;
         aux = n1 % n2;
     }
     return n2;
}
int main() {
    cout << func1 (27, 18);
}
Marque a opção correta que mostra o que é impresso na tela.
	
	
	
	18
	
	
	6
	
	
	3
	
	
	9
	
	
	27
	
		6.
		Considere a seguinte função: void dobro(int x) { x = 2 * x; } Qual valor será impresso na tela quando o seguinte programa principal for executado? int main() { int n; n = 5; dobro(n); cout << n; return 0; }
	
	
	
	10
	
	
	5
	
	
	20
	
	
	0
	
	
	Haverá um erro de compilaçã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
	
	
	4; 2; 4
	
	
	1; 3; 1
	
	
	1; 2; 4
		#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 possui parâmetros.
	
	
	Retorna valor e não  possui parâmetros.
	
	
	Não retorna valor e não   possui parâmetros.
	
	
	Retorna valor.
	
	
	Não retorna valor e possui parâmetros.
		2.
		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;
  }
 
	
	
	
	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
	
	
	2 4 6 8
	
		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 dados globais / área de registro
	
	
	( ) área de pilha / área de registro
	
	
	( ) área de dados globais / área de pilha
	
	
	( ) área de registro / área de dados globais
	
	
	( ) área de registro / área de pilha
	
		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:
	
	
	
	Passagem por valor.
	
	
	Envio de valor.
	
	
	Envio de inteiro.
	
	
	Ponteiros.
	
	
	Registro.
		5.
		Considere a função Adivinhe , n  =  4 e que X é formado pela sequência "algoritmo".  Assinale a opção que corretamente mostra o vetor Y ao fim da execução da função  Adivinhe.
void Adivinhe (char X[ ], char Y [ ], int n)  {
    int i, j;
    j = 0;
    for ( i = n; i >= 0; i--)
    {
        Y[j] = X[i];
        j++;
    }
    Y[j] = '\0';
}
	
	
	
	ogla
	
	
	algor
	
	
	rogla
	
	
	algo
	
	
	Ocorre erro, pois a função, que é do tipo void, não retorna o vetor Y.
	
		6.
		Considere a função a seguir e a chamada da mesma efetuada no programa principal abaixo. Indique a opção que contem o que será impresso.
int executar (int x, int &y) {
    x = y * 2;
    y = ++x;
    return x + y;
}
int main () {
int a=2, b=2, c=2;
c = executar (a, b);
cout << a << ", " << b << ", " << c;
}
	
	
	
	2, 2, 9
	
	
	2, 5, 10
	
	
	4, 5, 9
	
	
	3, 5, 8
	
	
	3, 2, 8
	
		7.
		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
	
	
	5
	
	
	50
	
	
	0
	
	
	10
	
		8.
		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: 31 01
	
	
	Valores: 10 13
	
	
	Valores: 13 13
	
	
	Valores: 13 10
		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 do dado do valor retornado da função para quem a chamou.
	
	
	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 protótipo da função.
	
		2.
		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
	
		3.
		Considere a função abaixo:
void func (int a, int &b) {
    a++;
    b = a*2;
}
e o seguinte trecho de código na função  main :
int x=2, y=3;
func (x,y);
func (y,x);
cout << x << "  ;  " << y;
Após a execução do cout o que será impresso  ? 
	
	
	
	2; 6
	
	
	6; 14
	
	
	14; 6
	
	
	4; 12
	
	
	2; 12
	
		4.
		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 IV estão corretas
	
	
	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
	
		5.
		Considere o trecho de um programa escrito em C++.
int func1 (int vtx[], int tam) {
    int soma=0;
    for (int i=0 ; i < tam; i++) {
        if (i % 2 !=0)
             soma += vtx[i];     
    }
    return soma;
}
int main() {
    int vt[5] = {10,20,30,40,50};
    cout << func1 (vt,5);}
Marque a opção correta que mostra o que é impresso na tela.
	
	
	
	20
	
	
	40
	
	
	60
	
	
	50
	
	
	30
	
		6.
		 
	
	
	
	Auxiliar = 101  Numero1 = 900  Numero2 = 20
	
	
	Auxiliar = 100  Numero1 = 900  Numero2 = 20
	
	
	Auxiliar = 111  Numero1 = 1000  Numero2 = 80
	
	
	Auxiliar = 100  Numero1 = 1000  Numero2 = 20
	
	
	Auxiliar = 100  Numero1 = 900  Numero2 = 80
	
		7.
		Funções são instrumentos de modularização de programas, que tem como finalidade tornar o código mais legível, isto é mais fácil de entender, evita replicação de instruções e permite o reuso das funções em outros programas. Então considere o seguinte código:
#include< iostream >
using namespace std;
 
int main( )
{
   float a=10.0;
   float b=4.0;
   cout < < media(a,b);
   return 0;
}
float media(float x, float y) { return (x+y)/2;}
 
Marque a alternativa CORRETA:
	
	
	
	O código compila normalmente e apresenta como resultado o valor 7.0
	
	
	O código não compila, pois a função float media(float x, float y) retorna um valor que seria ser armazenado em uma variável do tipo float e só então poderia ser usado o comando cout para exibir o resultado.
	
	
	O código não compila, pois há necessidade de se declarar float media(float, float) como protótipo da função float media(float x, float y)antes da função principal.
	
	
	O código não compila, pois os parâmetros usados na chamada da função deveriam ser "x" e "y"; porém a chamada se deu com identificadores "a" e "b".
	
	
	O código compila normalmente, pois como a descrição da função float media(float x, float y)está posicionada após a função int main ( ), não há necessidade do uso de protótipos.
	
		8.
		Qual será a saída para o seguinte trecho de código?
 void FUNC1()
{
int B = -100; 
cout << "Valor de B dentro da função FUNC1: " << B;
}
void FUNC2() {
int B =  -200;
cout << "Valor de B dentro da função FUNC2: " << B;
}
int  main() {
int B = 10;
cout << "Valor de B: " << B;
B = 20;
FUNC1();
cout << "Valor de B: " << B;
B = 30;
FUNC2();
cout << "Valor de B: " << B;
}
	
	
	
	Valor de B: 10 Valor de B dentro da função FUNC1: -100 Valor de B: 20 Valor de B dentro da função FUNC2: -200 Valor de B: 20
	
	
	Valor de B: 10 Valor de B dentro da função FUNC1: -100 Valor de B: 20 Valor de B dentro da função FUNC2: -200 Valor de B: 30
	
	
	Valor de B: 10 Valor de B dentro da função FUNC1: -100 Valor de B: 10 Valor de B dentro da função FUNC2: -200 Valor de B: 30
	
	
	Valor de B: 10 Valor de B dentro da função FUNC1: -100 Valor de B: 20 Valor de B dentro da função FUNC2: -400 Valor de B: 30
	
	
	Valor de B: 10 Valor de B dentro da função FUNC1: -200 Valor de B: 20 Valor de B dentro da função FUNC2: -200 Valor de B: 30
		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:
	
	
	
	Apenas II
	
	
	Apenas I
	
	
	Apenas I e II
	
	
	Apenas III
	
	
	Nenhuma está correta
	
	
	
		2.
		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; }
	
	
	
	08 e 18
	
	
	28 e 08
	
	
	18 e 18
	
	
	18 e 28
	
	
	28 e 18
	
		3.
		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.
	
	
	
	2
	
	
	6
	
	
	3
	
	
	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.
	
		4.
		Para compararmos vetores de char, usaremos a função _____________________ . Para copiarmos o conteúdo de um vetor de char nas posições ocupadas por outro vetor de char, usaremos a função ______________________ .
	
	
	
	strcmp(); e strcpy();
	
	
	strcat(); e strcpy() ;
	
	
	strcmp(); e strcat();
	
	
	strcmp(); e strcmpi ();
	
	
	strcmp(); e strlen() ;
	
Explicação:
Nâo há outra possíbilidade de resposta.  Em cstring estão declaradas as funções da opção correta, que fazem exatamente o que foi mencionado no enunciado.
Ainda a saber :   strcat concatena e strlen conta o número de caracteres
	
		5.
		 
	
	
	
	O programa não executa corretamente, pois os protótipos estão fora da ordem em que as funções são descritas.
	
	
	O programa não executa corretamente pois as funções devem ser descritas antes da função main(), para que o compilador consiga reconhecê-las.
	
	
	O programa 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 o protótipo da função media( ) não apresenta a identificação dos parâmetros, mas apenas os tipos dos mesmos.
	
	
	O programa executa perfeitamente independente da ordem das funções já que existem os seus protótipos.
	
		6.
		  Assinale a opção CORRETA.  O protótipo da função que permitirá calcular o volume de um paralelepípedo com medidas a, b e c  de acordo com o trecho da  chamada  :     cout << "Volume  =   "  <<  volume(a,b,c);
	
	
	
	void volume (float , float);
	
	
	void volume (float, float, float &);
	
	
	float  volume (float, float, float);
	
	
	float volume (float, float);
	
	
	float volume (float ; float ; float);
	
Explicação:
Resposta única.
Pela chamada da função
cout << "Volume  =   "  <<  volume(a,b,c);
temos que a função retorna um valor, que pelo enunciado, vemos que é do tipo float. Há ainda os valores de a, b e c que são medidas de uma figura geométrica. Logo, a, b e c são do tipo float.
Como protótipo é uma declaração temos :
tipo de retorno da função seguido do seu nome seguido de parênteses e dentro dos parênteses, temos os tipos das variáveis que estavam na chamada da função.
Logo :   float volume(float, float, float);  
Note a vírgula para separar os tipos e o ponto  e vírgula ao final.
 
	
		7.
		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 = 100
sendo que z é um  parâmetro passado por referência
 
 
	
	
	Será impresso
Auxiliar = 15
Result = 1000  Valor = 85sendo 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
 
 
	
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.
	
		8.
		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: 10 13
	
	
	Valores: 13 13
	
	
	Valores: 13 10
	
	
	Valores: 31 01
		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 25
	
	
	15 e 15
	
	
	25 e 25
	
	
	0 e 5
	
	
	25 e 15
	
		2.
		O que será mostrado na tela pelo programa abaixo ? 
#include < iostream >
using namespace std;
int a,b;
void dobro(int x){ //x passado por valor
 x=2*x;
}
int triplo(int y){ //y passado por valor
 return 3*y;
}
void altera(int x, int &y) { //x passado por valor e y passado por referencia
 x=x+a;
 y=x+b;
} 
 
int main (){
 a=2;
 b=3;
 dobro(a);
 b=triplo(b);
 altera(a,b);
 cout<< a << " e " << b << endl;
}
 
	
	
	
	4 e 9
	
	
	2 e 9
	
	
	2 e 13
	
	
	4 e 12
	
	
	9 e 16
	
		3.
		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
		o programa de computador necessita preencher uma lista de alunos (nome e nota) até que a lista esteja cheia. Sabe-se que a lista tem capacidade para 25 alunos. Utilizando agregados heterogêneos, qual o trecho de código que exibe a melhor forma de solucionar este problema?
	
	
	
	for (int i = 0; i < 25; i++) { cin >> lista[i]->nome; cin >> lista[i]->nota; }
	
	
	for (int i = 0; i <= 25; i++) { cin >> lista[i].nome; cin >> lista[i].nota; }
	
	
	for (int i = 0; i < 25; i++) { cin >> lista->nome; cin >> lista->nota; }
	
	
	int i = 0; while( i < 25) { cin >> lista[i].nome; cin >> lista[i].cargo; i ++; }
	
	
	for (int i = 0; i < 25; i++) { cin >> lista[i].nome; cin >> lista[i].nota; }
		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.
	
	
	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 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.
	
	
	
	 
		
	
		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.
	
	
	
	aluno.vet[10].nota=5.7;
	
	
	vet[10].aluno.nota=5.7 ;
	
	
	aluno.vet[10]=5.7;
	
	
	vet[10].nota=5.7;
	
	
	vet[10]=aluno.5.7;
	
	
	
	 
		
	
		4.
		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, 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 + fim)/2;
        if (v[meio] == valor)
              return meio;
        if (valor < v[meio])
             fim = meio -1;
        else
             ini = meio+1;
    }
    return -1;
}
	
	
	 
		
	
		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[3].10=6.0;
	
	
	aluno[10]=6.0;
	
	
	aluno[3].media=6.0;
	
	
	vet[3].media=6.0;
	
	
	
	 
		
	
		6.
		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 :
	
	
	
	∙ (ponto).
	
	
	, (vírgula).
	
	
	& (e comercial ou eitza).
	
	
	-> (seta).
	
	
	* (asterisco).
	
Explicação:
Por definição, o operador que permite acessar os campos de uma variável struct é o ponto (.).
 
	
	
	
	 
		
	
		7.
		Marque a opção correta, considerando
struct Livro {
int codigo;
float preco;
} liv;
	
	
	
	liv.preco = 30.70;
	
	
	Livro.codigo = 12345;
	
	
	Livro.liv.codigo = 12345;
	
	
	liv->preco = 30.70;Livro->liv.codigo = 12345;
		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.
	
	
	 
		
	
		2.
		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, III e IV.
	
	
	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 II, III e IV.
	
	
	todas as afirmativas estão corretas.
		É 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 ...... 
	
	
	
	por contagem.
	
	
	randômica.
	
	
	binária.
	
	
	por comparação.
	
	
	linear.
	
		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 é:
	
	
	
	1,2,4,5
	
	
	2,1,4,5
	
	
	2,4,1,5
	
	
	4,1,2,5
	
	
	1,4,2,5
	
		3.
		Marque a afirmativa correta para a "Busca ou pesquisa binária".
	
	
	
	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.
	
	
	É o processo pelo qual um conjunto de dados é colocado em uma ordem crescente ou decrescente.
	
	
	Consiste em adicionar um valor no vetor, alterando a ordem existente e ajustando o total de elementos.
	
	
	Consiste em fazer uma busca em um vetor já ordenado, dividindo o espaço de busca ao meio e verificando se o dado está no meio ou, antes do meio ou depois do meio.
	
		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 1
	
	
	5 e 5
	
	
	6 e 4
	
	
	6 e 2
	
	
	7 e 1
	
		5.
		Os algoritmos de busca são muito utilizados em estrutura de dados. Sendo assim, o algoritmo que realiza a busca em vetores e que exige acesso aleatório aos elementos do mesmo e que parte do pressuposto de que o vetor está ordenado e realiza sucessivas divisões do espaço de busca comparando o elemento que se deseja com o elemento do meio do vetor, é chamado de:
	
	
	
	Pesquisa de seleção
	
	
	Pesquisa ordenada
	
	
	Pesquisa sequêncial
	
	
	Tabela Hash
	
	
	Pesquisa binária
	
Explicação:
O enunciado descreve a busca binária.
A busca sequencial trabalha sequencialmente testando elemento a elemento.
Pesquisa de seleção ou ordenada não foram abordadas.
Tabela hash trabalha com função hash e não se encaixa na descrição feita.
	
		6.
		Em uma pesquisa sequencial a lista deve estar?
	
	
	
	ordenada somente do início até a metade da lista.
	
	
	desordenada somente da metade da lista até o final.
	
	
	ordenada ou desordenada.
	
	
	sempre desordenada.
	
	
	ordenada somente o primeiro da lista.
	
		7.
		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 o valor de vl se o valor n foi encontrado.
	
	
	Retorna a posição de v se o valor vl foi encontrado.
	
	
	Retorna -1 se o valor de vl estiver dentro de v.
	
	
	Resulta em erro, se o valor de vl não estiver dentro de v.
	
	
	Retorna -1 se o valor de n foi encontrado.
	
		8.
		Qual característica NÃO podemos atribuir a PESQUISA BINÁRIA.
	
	
	
	A lista precisa estar ordenada.
	
	
	Quando o valor pesquisado é maior do que a chave do MEIO da lista, devemos dispensar  a metade que vem antes do meio da lista.
	
	
	São realizadas sucessivas divisões da lista ao meio.
	
	
	É eficiente quando se trata de listas ordenadas
	
	
	A lista pode estar desordenada.
`
		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 IV são corretas.
	
	
	Somente as afirmativas II, III e IV 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 III são corretas.
	
		2.
		O seguinte trecho de programa abaixo representa qual tipo de estrutura de ordenação?
void ordenar(float v[], int n) // n é o no. de elementos em v
{
 int i , // índice
 aux, // auxiliar para troca
trocou = true,
fim = n - 1;
while (trocou)
{
    trocou = false; // sinaliza que é falso que trocou
     for (i = 0; i < fim; i++)
     {
       if (v[i] > v[i+1])
       {
         aux = v[i];
         v[i] = v[i+1];
         v[i+1] = aux;
         // sinaliza que é verdadeiro que trocou
         trocou = true;
        } // fim if
    } // fim for
 fim--; // decrementa o fim
} // fim while
} // fim da função
	
	
	
	Bublesort
	
	
	Quicksort
	
	
	Mergesort
	
	
	Shellsort
	
	
	Heapsort
	
		3.
		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 buscasequencial
	
	
	trata-se da implementação do algortimo de ordenação por seleção.
	
	
	trata-se da implementação do algortimo de ordenação bolha.
	
	
	trata-se da implementação do algortimo de busca binária.
	
	
	trata-se da implementação do algortimo de ordenação por inserção.
	
		4.
		
	
	
	
	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;      
     }
	
	
	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-1]= vet[j];
         vet[j-1]=aux;      
     }
	
		5.
		Considere a função misterio e o trecho abaixo.
void misterio(int v[ ], int n) {     //n é o número de elementos de v
   int i, j, m, aux;
   for (j = 0; j < n-1; j++) {
        m = j;
        for (i = j+1; i < n; i++) {
             if (v[i] < v[m])
                    m = i;
        }
        aux  = v[j];
        v[j] = v[m];
        v[m] = aux;
	
   }
}
Trecho na main :        
int v[4] = {40,30,10,20};
misterio(v, 4);
Marque a  opção correta.  Como ficará o vetor após a execução da função misterio ?
 
	
	
	
	10  20  30  40  
	
	
	5  10  20  30 
	
	
	10  20  40  30  
	
	
	10  30  20 40
	
	
	10  30  40  20 
	
		6.
		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 valor de v[j] deve em v[0..j-1].
	
	
	Encontrar o menor valor v[j] que deve ser inserido em v[0..j-1].
	
	
	Encontrar o ponto onde v[j] deve ser inserido em v[0..j-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
	
		7.
		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:
	
	
	
	Bolha
	
	
	Seleção
	
	
	Binária
	
	
	Hash
	
	
	Inserção
	
		8.
		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 é:
	
	
	
	Inserção
	
	
	Pesquisa binária
	
	
	Seleção
	
	
	Pesquisa sequencial
	
	
	Bolha
		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
	
	
	5 e 5
	
	
	6 e 4
	
	
	7 e 1
	
	
	6 e 1
	
	
		2.
		Em uma pesquisa sequencial a lista deve estar?
	
	
	
	ordenada somente o primeiro da lista.
	
	
	ordenada ou desordenada.
	
	
	sempre desordenada.
	
	
	desordenada somente da metade da lista até o final.
	
	
	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.
	
		3.
		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);
	
	
	
	8
	
	
	6
	
	
	9
	
	
	5
	
	
	4
	
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
	
	
		4.
		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.
	
	
	
	Heapsort
	
	
	Inserção
	
	
	Seleção
	
	
	Bolha
	
	
	Quicksort
	
		5.
		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;
}
	
	
	
	Resulta em erro, se o valor de vl não estiver dentro de v.
	
	
	Retorna -1 se o valor de n foi encontrado.
	
	
	Retorna -1 se o valor de vl estiver dentro de v.
	
	
	Retorna a posição de v se o valor vl foi encontrado.
	
	
	Retorna o valor de vl se o valor n foi encontrado.
	
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.
	
		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 cadeias indexada
	
	
	pesquisa sequencial
	
	
	pesquisa indexada
	
	
	pesquisa binária
	
	
	pesquisa de cadeias
	
		7.
		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 independentedestes 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 4
	
	
	6 e 2
	
	
	6 e 1
	
	
	7 e 1
	
	
	5 e 5
	
		8.
		"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
	
	
	BubbleSort
	
	
	InsertionSort
	
	
	SelectionSort
	
	
	MergeSort
		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 Eficiente
	
	
	Ordenação Simples Externa
	
	
	Ordenação Externa
	
	
	Ordenação Simples
	
		3.
		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.
	
	
	
	Seleção
	
	
	Inserção
	
	
	Binária
	
	
	Bolha
	
	
	Hash
	
		4.
		Estude atentamente o código a segir:
int deciframe(int v[ ], int tam, int e){
int i = 0, f = tam -1, m;
while ( i <= f ){
m = ( i + f ) / 2;
if ( v[m] == e ) { return m; }
if ( e < v[m] ) { f = m - 1; }
else { i = m + 1; }
}
return -1;
}
Sabendo que a chamada da mesma foi feita com os parâmetros:
v[10] = {0, 2, 4, 6, 8, 10, 20, 100}
tam = 8
e = -6
É sabido que a mesma retornaria o valor -1, porque:
	
	
	
	Seria o retorno do while
	
	
	É o módulo do valor de e
	
	
	É a posição do elemento e no vetor v
	
	
	Porque ele não achou o elemento na coleção
	
	
	Seria o retorno do segundo if
	
		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
	
	
	
	2
	
	
	-2
	
	
	1
	
	
	-1
	
	
	0
		São métodos ou algoritmos conhecidos de ordenação de dados por troca:
	
	
	
	busca por ordenação e ordenação shell.
	
	
	hashing e bubble sort.
	
	
	bubble sort e quicksort.
	
	
	ordenação shell e hashing.
	
	
	quicksort e hashing.
	
		2.
		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
	
	
	Pilha Encadeada
	
	
	Lista Sequencial
	
	
	Lista Encadeada
	
	
	Fila Sequencial
	
	
	 
		
	
		3.
		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, III, IV
	
	
	I, II, III, IV
	
	
	I, II, IV
	
	
	I, II
	
	
	I, II, III
	
	
	
	 
		
	
		4.
		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
	
	
	Ordenação por inserção
	
	
	Substituição
	
	
	Inserção
	
	 
		
	
		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 = -6
	
	
	
	-1
	
	
	4
	
	
	6
	
	
	3
	
	
	0
	
	
	 
		
	
		6.
		Considere as seguintes afirmações: I. Só podemos ter uma matriz de no máximo duas dimensões. Exemplo: C[100][100]. II. Ao declararmos um vetor int A[10], se escrevemos A[2] acessamos o segundo elemento do vetor. III. Uma string declarada como char B[30] armazena no máximo 30 caracteres. Escolha a alternativa correta:
	
	
	
	Está correta apenas a afirmativa II.
	
	
	Estão corretas apenas as afirmativas I e II.
	
	
	Está correta apenas a afirmativa I.
	
	
	Nenhuma afirmação está correta.
	
	
	Estão corretas apenas as afirmativas I e III.
	
	
	
	 
		
	
		7.
		
	
	
	
	for (int i = 0; i < n; i++)
   cout << L.matricula << "  "  << L.nome << 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.matricula[i] << "  "  << L.nome[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].nome << endl;
		Em termos da estrutura de dados do tipo PILHA, a sequência de ações empilha(10), empilha(3), empilha(5), empilha(8), desempilha(), desempilha(), empilha(20), promoveria a configuração da estrutura a partir do topo :
	
	
	
	20 3 5 8
	
	
	20 10 3
	
	
	20 3 10
	
	
	5 8 20
	
	
	10 3 5 8
	
	
	
	 
		
	
		2.
		Sobre as pilhas, marque a alternativa correta:
	
	
	
	Pilhas são menos restritivas do que Listas, pois esta última impõe mais restrições às operações de inserção/remoção do que as primeiras.
	
	
	Pilhas não podem ser implementadas usando vetores, pois não será possível reproduzir a inserção e remoção pela mesma extremidade.
	
	
	A característica principal que define uma Pilha diz respeito às operações de inserção e remoção, que devem ser realizadas exclusivamente na mesma extremidade.
	
	
	Pilhas são estruturas de dados do tipo FIFO e permitem que os dados sejam manipulados diretamente no meio da estrutura.
	
	
	A operação de desempilhar um item de uma pilha e logo em seguida empilha-lo em outra pilha mantem a mesma ordem dos dados da primeira pilha na segunda pilha.
	
	
	
	 
		
	
		3.
		 
   Navegadores para internet armazenam os últimos endereços visitados em uma estrutura de dados. Cada vez que um novo site é visitado, o endereço do site é adicionado na estrutura de endereços. Quando se aciona o retorno ("back"), o navegador permite que o usuário retorne no último site visitado e retira o endereço do site da estrutura de dados.Assinale a estrutura de dados mais adequada para  este problema.
	
	
	
	árvore
	
	
	grafo
	
	
	lista
	
	
	pilha
	
	
	fila
	 
		
	
		4.
		Quando executado, um programa tem acesso à áreas de memória. A área de memória que se destina, principalmente, à alocação dos registros de ativação denomina-se:
	
	
	
	( ) área de código
	
	
	( ) área de registro
	
	
	( ) área de dados
	
	
	( ) área de pilha
	
	
	( ) área de heap
	
	
	
	 
		
	
		5.
		A estrutura de dados linear que obedece o seguinte critério: o último elemento inserido será o primeiro elemento a ser retirado (LIFO) é:
	
	
	
	Fila
	
	
	Árvore AVL
	
	
	Pilha
	
	
	Lista circular
	
	
	Árvore binária
	 
		
	
		6.
		Algoritmo Pilha
Inicio
IniciarPilha(s)
enquanto (não for o final das entradas) faca
leia (num)
se (num !=  3) então
   Empilhar (s, num)
senão
   Desempilhar(s)
   x := ElementoTopo(s)
fimse
fimenquanto
fimalgoritmo
Considere que, no trecho do algoritmo acima, representado por seu pseudocódigo, seja fornecido para num, sucessivamente, os valores inteiros 1, 2, 3, 4, 5, 3 e 6. Nesse caso, ao final da execução do algoritmo, o valor de x será igual a ...
	
	
	
	2 e a pilha terá os valores 6, 4 e 1.
	
	
	3 e a pilha terá os valores 6, 4 e 1.
	
	
	5 e a pilha terá os valores 6, 3, 5, 4, 3, 2 e 1.
	
	
	5 e a pilha terá os valores 6, 4 e 1.
	
	
	3 e a pilha terá os valores 6, 5, 4, 2 e 1.
	
	
	 
		
	
		7.
		Considere uma pilha sequencial de números reais representada por
 
    struct Pilha {
                             int topo;
                            float v[10];
    };
 
onde temos     Pilha p;
 
Marque a  opção que corretamente inicializa a pilha :
 
 
 
	
	
	
	 
p->topo = 0;
 
 
	
	
	 
Pilha.topo = 0;
 
 
	
	
	 
Pilha.topo = -1;
	
	
	 
topo.pilha = -1;
 
 
	
	
	p.topo = -1;
	 
		
	
		8.
		O almoxarifado de um órgão pediu ao técnico de informática que elaborasse um sistema de custeio que, para cada saída de material, considerasse o custo do mais recente que houvera dado entrada no almoxarifado. O técnico deve desenvolver um programa para tratar com uma estrutura de dados do tipo?
	
	
	
	LIFO
	
	
	ARRAY
	
	
	RECORD
	
	
	FIFO
	
	
	TABLE
		Um dos conceitos muito úteis na ciência da computação é a estrutura de dados chamada pilha. Uma pilha é um conjunto________ de itens, no qual novos itens podem ser inseridos no(a) ________ e itens podem ser retirados do(a)________ da pilha, por meio das operações________ e _________, respectivamente. Assinale a alternativa que completa corretamente as lacunas.
	
	
	
	ordenado - topo - topo - pop ou desempilhar  - push ou empilhar 
	
	
	desordenado - base - topo - down - up
	
	
	desordenado - topo - base - push ou empilhar  - pop ou desempilhar 
	
	
	ordenado - final - início - up - down
	
	
	ordenado - topo - topo - empilhar ou push  -  desempilhar ou pop
	
	
	
	 
		
	
		2.
		Pilha é uma estrutura de dados
	
	
	
	Que pode ser implementada somente por meio de vetores.
	
	
	Cujo acesso aos seus elementos ocorre de forma aleatória.
	
	
	Cujo acesso aos seus elementos segue a lógica LIFO.
	
	
	Cujo acesso aos seus elementos segue tanto a lógica LIFO quanto a FIFO.
	
	
	Que pode ser implementada somente por meio de listas.
	
	
	 
		
	
		3.
		Um jogo de memória fornece sequências de números e o jogador deve dizer qual a sequência inversa para cada nova sequência fornecida pelo jogo. Qual a estrutura de dados mais adequada para modelar esse jogo ?
	
	
	
	fila
	
	
	lista
	
	
	pilha
	
	
	grafo
	
	
	árvore
	 
		
	
		4.
		A estrutura de dados que segue a lógica LIFO (Last in First Out) é denominada :
	
	
	
	Lista duplamente encadeada
	
	
	Fila
	
	
	Pilha
	
	
	Vetor
	
	
	Árvore
	
	
	 
		
	
		5.
		Ao remover um elemento armazenado em uma pilha é necessário a atualização da variável (Topo) indicadora de posição. Qual das alternativas abaixo está correta?
	
	
	
	Após a operação de remoção incrementa a variável indicadora de inicio.
	
	
	Após a operação de remoção incrementa a variável indicadora de posição.
	
	
	Antes da operação de remoção incrementa a variável indicadora de posição.
	
	
	Antes a operação de remoção decrementa a variável indicadora de posição.
	
	
	Após a operação de remoção decrementa a variável indicadora de posição.
	 
		
	
		6.
		Tanto a operação TOP (acessa topo), quanto à operação POP (remover), permite acessar o último elemento armazenado em uma Pilha. Quanto à diferença entre ambas as operações em relação ao estado da Pilha é correto afirmar:
	
	
	
	Nenhuma das operações altera o estado da Pilha
	
	
	Ambas alteram o estado da Pilha
	
	
	Somente a operação POP altera o estado da Pilha
	
	
	Somente a operação TOP altera o estado da Pilha
	
	
	A operação TOP remove um elemento e altera o estado da Pilha
	
	
	 
		
	
		7.
		Assinale a opção que apresenta uma estrutura de dados embasada no princípio last in, first out (LIFO) ¿ último a entrar, primeiro a sair ¿, na qual, conforme a inserção, os dados inseridos primeiramente na estrutura são os últimos a serem removidos.
	
	
	
	árvores
	
	
	vetores
	
	
	pilhas
	
	
	listas
	
	
	filas
	
	
	
	 
		
	
		8.
		Um programador recebeu a tarefa de construir um programa que receba uma cadeia de caracteres e verifique se esta cadeia de caracteres é um PALÍNDROME, sabendo-se que um PALÍNDROME apresenta a mesma sequência de caracteres da esquerda pra direita, quanto da direita para esquerda, marque a opção que possui a estrutura de dados mais adequada a este programa.
	
	
	
	Grafos
	
	
	Árvores
	
	
	Fila Sequencial
	
	
	Pilha Sequencial
	
	
	Lista Sequencial
		Observar os quadros abaixo e reponder o que se pede:
O que aparecerá no topo da PILHA apos os comandos do quadro II?
	
	
	
	SANTOS_AGOSTINHO
	
	
	SANTO_ANTONIO
	
	
	SANTA_CATARINA
	
	
	SANTO_ESPEDITO
	
	
	SANTA_GENOVEVA
	
Explicação:
FAzendo passo a passo...
empilha SANTO_ANTONIO e depois, SANTA_FILOMENA. Fica SANTA_FILOMENA no topo.
No item c) desempilha. Então, sai SANTA_FILOMENA da pilha.
No item d) empilha SANTO_AGOSTINHO. Então, fica SANTO_ANTONIO e logo no topo, SANTO_AGOSTINHO.
No item e) temos o elemento do topo que é SANTO_AGOSTINHO.
No item f) empilhamos SANTA_CATARINA.  Então, a sequência é SANTO_ANTONIO -> SANTO_AGOSTINHO - >SANTA_CATARINA (NO TOPO DA PILHA)
No item g, destaca-se o elemento do topo que é  SANTA_CATARINA.
No item h) empilha-se SANTO_EXPEDITO .  Então, a pilha fica assim : SANTO_ANTONIO -> SANTO_AGOSTINHO - >SANTA_CATARINA -> SANTO_EXPEDITO (este último no topo da pilha).
No item i) Desempilha-se o item do topo, ou seja, SANTO_EXPEDITO. Então, a pilha fica assim : SANTO_ANTONIO -> SANTO_AGOSTINHO - >SANTA_CATARINA
No item j) empilha-se o valor do topo . Então, a pilha fica assim : 
SANTO_ANTONIO -> SANTO_AGOSTINHO - >SANTA_CATARINA -> SANTA_CATARINA
No item k) Desempilha-se um valor e este valor é empilhado. Sai SANTA_CATARINA, mas o mesmo é empilhado. Então : 
SANTO_ANTONIO -> SANTO_AGOSTINHO - >SANTA_CATARINA -> SANTA_CATARINA (no topo)
No item l)  empilha-se SANTA_GENOVEVA. Então, a pilha fica assim : SANTO_ANTONIO -> SANTO_AGOSTINHO - >SANTA_CATARINA -> SANTA_CATARINA -> SANTA_GENOVEVA
No item m) É desempilhado SANTA_GENOVEVA. A pilha fica : SANTO_ANTONIO -> SANTO_AGOSTINHO - >SANTA_CATARINA -> SANTA_CATARINA
No item n) Pega-se o elemento do topo e o mesmo é empilhado. Então : 
ANTO_ANTONIO -> SANTO_AGOSTINHO - >SANTA_CATARINA -> SANTA_CATARINA - > SANTA_CATARINA  (no topo)
Logo, no topo da pilha temos SANTA_CATARINA
 
	
	
	
	 
		
	
		2.
		Assumindo que estamos com uma estrutura de dados do tipo LIFO, as operações abaixo vão resultar em que elementos na mesma: PUSH(2), PUSH(3), PUSH(4), POP(), POP(), PUSH(5), PUSH(7), POP()
	
	
	
	5 7
	
	
	2 5
	
	
	2 3 4
	
	
	3 4 5
	
	
	2 4 7
	
	
	 
		
	
		3.Tei Ping, estudante de computação, precisou implementar parte de um jogo que trabalhava com cartas especiais. Cada carta possui um número e uma letra. Alguns jogadores teriam que jogar as cartas na mesa, enquanto outros deveriam devolver as cartas na sequência inversa à jogada. Tei Ping estudou o mecanismo do jogo e decidiu usar a melhor estrutura de dados na sua implementação. Qual a estrutura escolhida ?
	
	
	
	lista
	
	
	grafo
	
	
	pilha
	
	
	fila
	
	
	árvore
	
	
	 
		
	
		4.
		Ling Tang, estudante de computação, precisou implementar parte de um jogo de cartões com figuras de animais.  Alguns jogadores teriam que jogar os cartões na mesa, enquanto outros deveriam devolver os cartões  na sequência inversa à jogada.  Ling Tang  estudou o mecanismo do jogo e decidiu usar a melhor estrutura de dados  na sua implementação. Qual a estrutura escolhida ?
	
	
	
	lista
	
	
	 árvore
	
	
	fila 
	
	
	 grafo
	
	
	 pilha
	
	
	
	 
		
	
		5.
		Quando as inserções e as remoções ocorrem sempre no mesmo lado da lista, trata-se de uma estrutura de dados denominada
	
	
	
	Lista Encadeada
	
	
	Fila
	
	
	Vetor
	
	
	Pilha
	
	
	Lista Circular
	
	
	
	 
		
	
		6.
		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 a ordem reversa dos de armazenamento de dados e alocação destes de forma contínua na memória.
	
	
	
	Fila Sequencial
	
	
	Lista Sequencial
	
	
	Pilha Encadeada
	
	
	Lista Encadeada
	
	
	Pilha Sequencial
	
	
	
	 
		
	
		7.
		Sabe-se que Push() coloca um elemento na pilha, Pop() remove um elemento da pilha e Top() exibe o elemento que se encontra no topo.
Assinale a opção que indica o número que aparecerá após a execução das funções abaixo.
Sequencia: Push() / Push()/ Pop()/ Push()/Pop()/ Top()
Números que deverão ser empilhados nessa ordem: 8/ 15/ 23/ 13 / 18
	
	
	
	23
	
	
	13
	
	
	15
	
	
	18
	
	
	8
	 
		
	
		8.
		Considere que existe uma rotina para inserir um valor inteiro em uma pilha de inteiros com o protótipo abaixo:       
 int push (int pilha[], int valor, int &topo); //retorno: 1=empilhou; 0=não empilhou
Considere que existe uma função que remove um valor de uma pilha, que possui o protótipo abaixo:
 int pop (int pilha[], int &valor, int &topo);//retorno: 1=desempilhou; 0=não desempilhou
Considere ainda a execução do seguinte trecho do programa principal:
int primeira[5], topoP=-1, segunda[5], topoS=-1, numero;
push (primeira, 3, topoP);
push (primeira, 5, topoP);
pop (primeira, numero, topoP);
push (segunda, numero, topoS);
push (segunda, 7, topoS);
push (primeira, 1, topoP);
    Ao final da execução do techo de código acima, responda, nesta ordem,  quantos valores haverá na pilha primeira,  quantos valores haverá na pilha segunda, qual é o valor no topo da pilha primeira e  qual é o valor no topo da pilha segunda.   
	
	
	
	2; 1; 1; 5
	
	
	1; 2; 1; 7
	
	
	2; 2; 3; 5
	
	
	3; 2; 3; 5
	
	
	2; 2; 1; 7
	
		2.
		Observe a função que manipula uma pilha e assuma que TAM é uma constante definida com valor 5. Saiba que o nome da função já explícita a finalidade dela.
Considere a chamada da função conforme linha abaixo, sabendo-se que vet é um vetor de tamanho 5 e que não tem nenhum valor ainda:
Analise as afirmativas abaixo que sugerem correções, ou não, na definição na função e assinale a opção que contem as afirmativas corretas.
I Faltou & antes da variável vetor e irá acusar erro.
II A variável topo está sem tipo.
III O teste está correto porque o índice do primeiro elemento do vetor em C++ é 1, obrigatoriamente.
IV Na linha comentada deveria estar presente um comando de atribuição que decrementaria a variável topo.
V A linha vetor[topo]=valor; está correta.
	
	
	
	II e V estão corretas
	
	
	I e III estão corretas
	
	
	I e II estão corretas
	
	
	I, II e IV estão corretas
	
	
	I , III e V estão corretas
	
	
	 
		
	
		3.
		Um programador recebeu a tarefa de construir um programa que receba uma cadeia de caracteres e verifique se esta cadeia de caracteres é um PALÍNDROME, sabendo-se que um PALÍNDROME apresenta a mesma sequência de caracteres da esquerda pra direita, quanto da direita para esquerda, marque a opção que possui a estrutura de dados mais adequada a este programa.
	
	
	
	Pilha Sequencial
	
	
	Fila Sequencial
	
	
	Grafos
	
	
	Árvores
	
	
	Lista Sequencial
	
	
	 
		
	
		4.
		A estrutura de dados linear que obedece o seguinte critério: o último elemento inserido será o primeiro elemento a ser retirado (LIFO) é:
	
	
	
	Fila
	
	
	Árvore AVL
	
	
	Lista circular
	
	
	Árvore binária
	
	
	Pilha
	
	
	
	 
		
	
		5.
		Assumindo que estamos com uma estrutura de dados do tipo LIFO, as operações abaixo vão resultar em que elementos na mesma: PUSH(2), PUSH(3), PUSH(4), POP(), POP(), PUSH(5), PUSH(7), POP()
	
	
	
	3 4 5
	
	
	5 7
	
	
	2 5
	
	
	2 4 7
	
	
	2 3 4
	
	 
		
	
		6.
		Para gerenciar o acesso do usuário às URL pelas quais ele já passou utilizando as teclas de avanço para trás e para frente, um navegador (Explorer, Chrome, Firefox, etc.) deve armazenar as URL em estruturas de:
	
	
	
	Grafos
	
	
	Árvores
	
	
	Filas
	
	
	Pilhas
	
	
	Listas
	
	
	 
		
	
		7.
		Respeitando as ordens de inserção e de retirada dos dados, uma estrutura de:
	
	
	
	fila é também denominada FIFO ou LIFO.
	
	
	pilha é também denominada FIFO ou FILO.
	
	
	fila é também denominada FIFO ou FILO.
	
	
	fila é também denominada LIFO ou LILO.
	
	
	pilha é também denominada LIFO ou FILO.
	
	
	 
		
	
		8.
		Pilha é uma estrutura de dados
	
	
	
	Cujo acesso aos seus elementos segue tanto a lógica LIFO quanto a FIFO.
	
	
	Cujo acesso aos seus elementos ocorre de forma aleatória.
	
	
	Cujo acesso aos seus elementos segue a lógica LIFO.
	
	
	Que pode ser implementada somente por meio de vetores.
	
	
	Que pode ser implementada somente por meio de listas.
		Um órgão público adotou dois sistemas de senhas para atender os cidadãos na ordem de chegada. O sistema I atende os não idosos. O sistema II atende os idosos. Nessa situação:
	
	
	
	tanto o sistema I, quanto o II, adotam o esquema vetor de organização de dados.
	
	
	tanto o sistema I, quanto o II, adotam o esquema LIFO de organização de dados.
	
	
	tanto o sistema I, quanto o II, adotam o esquema FIFO de organização de dados.
	
	
	o sistema I, adota o esquema FIFO de organização de dados e o II, o esquema LIFO.
	
	
	o sistema I, adota o esquema LIFO de organização de dados e o II, o esquema FIFO.
	
	
	
	 
		
	
		2.
		         Assinale a opção que, corretamente, mostra exemplos em que a estrutura de dados fila é usada, de acordo com o critério de inserções e remoções que rege tal estrutura.
	
	
	
	Fila de arquivos para impressão e fila de pessoas no caixa de um supermercado.
	
	
	Fila de pessoas para tirar o visto e fila de pessoas para usar o caixa eletrônico.
	
	
	Fila de arquivos para impressão e buffer para gravação de dados em fila.
	
	
	Buffer para gravação de dados em mídia e fila de pessoas para comprar o ticket do metrô.
	
	
	Fila de documentos para xerox e fila de arquivos para impressão.
	
	
	 
		
	
		3.
		Considere uma estrutura de dados, representada pela variável P, com procedimentos de inclusão, exclusão e consulta do próximo elemento (e) disponível na estrutura, obedecendo às seguintes propriedades:
 Pode-se concluir, então, que P corresponde à seguinte estrutura de dados?
	
	
	
	PILHA
	
	
	LISTA
	
	
	PONTEIRO
	
	
	STRUCT
	
	
	CONJUNTO

Outros materiais