Buscar

Modularização de Programas

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

Parte superior do formulário
		
	
	
	 
	
		
		 
	ESTRUTURA DE DADOS
2a aula
		
	 
	Lupa
	 
	 
	
	
PPT
	
MP3
	 
		Exercício: CCT0826_EX_A2_201901045404_V1 
	13/04/2020
	Aluno(a): DENIS DOS REIS SANTOS 
	2020.1 EAD 
	Disciplina: CCT0826 - ESTRUTURA DE DADOS  
	201901045404
	
	 
	
	 1a 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 = 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
 
 
	
	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
 
 
	Respondido em 13/04/2020 14:44:22
	
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.
	
	
	 
	
	 2a Questão 
	
	
	
	
	Blocos únicos de códigos que realizam diversas tarefas distintas são de difícil manutenção. Portanto, utiliza-se a técnica da modularização de programas, a fim de facilitar a implementação e a manutenção dos programas. Esta técnica tem como principal elemento: 
		
	
	Os Vetores 
	
	As Filas 
	
	As Estruturas de Dados 
	
	Os Grafos 
	
	As funções 
	Respondido em 13/04/2020 14:44:15
	
	
	 
	
	 3a Questão 
	
	
	
	
	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
	
	2; 12
	
	4; 12
	
	14; 6
	
	6; 14
	Respondido em 13/04/2020 14:44:28
	
Explicação: 
  Fazendo um teste de mesa, chegaremos na opção correta.  Iniciando a execução pela main, temos que x recebe 2 e y recebe 3.  
Em seguida, na 1ª. chamada de func,  os valores de x e de y, respectivamente, 2 e 3, são passados para a função.
Executando a função func, que possui o parâmetro a  passado por valor e o parâmetro b passado por referência (usa &) ...
void func (int a, int &b) {
a++;
b = a*2;
}
Temos que a recebeu 2 e b recebeu 3. Daí, a ficará 3 e b receberá 6.  
Assim, ao terminar a função func e retornarmos para a main teremos x sem alteração igual a 2 e y com alteração igual a 6.
Após voltarmos para a main, temos uma nova chamada de func que recebe os valores de y e de x, respectivamente, que são 6 e 2.  Na 2ª. chamada de func para esses valores, teremos que a recebe 6 e y recebe 2.  Dentro da função, temos que a é incrementado para 7 e que b recebe 7 * 2 que dá 14. Ao terminarmos a execução da função, temos que y não sofreu mudança, ficando com o valor 6  e que x mudou para 14.  Logo, será impresso 14;6
Logo, as demais opções são incorretas.
 
	
	
	 
	
	 4a Questão 
	
	
	
	
	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; }
		
	
	5
	
	20
	
	Haverá um erro de compilação
	
	10
	
	0
	Respondido em 13/04/2020 14:44:20
	
	
	 
	
	 5a 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 II e IV estão corretas
	
	Somente I e II estão corretas
	
	Somente II está correta 
	
	Somente II e III estão corretas
	Respondido em 13/04/2020 14:44:24
	
	
	Gabarito
Coment.
	
	 
	
	 6a 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
	
	3
	
	2
	Respondido em 13/04/2020 14:44:39
	
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.
	
	
	 
	
	 7a Questão 
	
	
	
	
	#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 :
		
	
	Não retorna valor e não   possui parâmetros.
	
	Retorna valor.
	
	Não retorna valor e possui parâmetros.
	
	Retorna valor e não  possui parâmetros.
	
	Retorna valor e possui parâmetros.
	Respondido em 13/04/2020 14:44:44
	
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.
	
	
	 
	
	 8a Questão 
	
	
	
	
	Considere a função: 
void dobro(int x) { 
      x = 10 * x; 
} 
Qual será o valor impresso na tela quando o programa principal for executado? 
int main() { 
int n; 
n = 5; 
dobro(n); 
cout << n; 
return 0; 
} 
 
		
	
	Haverá um erro de compilação 
	
	10 
	
	50
	
	5
	
	0 
	Respondido em 13/04/2020 14:44:35
	
	
	Gabarito
Coment.
	
	
 
 
Parte superior do formulárioESTRUTURA DE DADOS
2a aula
		
	 
	Lupa
	 
	 
	
	
PPT
	
MP3
	 
		Exercício: CCT0826_EX_A2_201901045404_V2 
	13/04/2020
	Aluno(a): DENIS DOS REIS SANTOS 
	2020.1 EAD 
	Disciplina: CCT0826 - ESTRUTURA DE DADOS  
	201901045404
	
	 
	
	 1a Questão 
	
	
	
	
	Informe qual deverá ser a saída do programa abaixo:
#include 
void func(int *x)
{
 do{
 cout << *x << " ";
 (*x)--;
 }while(*x>0);
}
main()
{
 int x=5;
 func(&x);
 cout << x;
 system("pause");
}
		
	
	5 4 3 2 1 6
	
	5 4 3 2 1 0 
	
	5 3 4 2 1 0
	
	5 4 3 2 1 5 
	
	5 3 4 2 1 4
	Respondido em 13/04/2020 14:52:37
	
	
	 
	
	 2a Questão 
	
	
	
	
	  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);
		
	
	float  volume (float, float, float);
	
	void volume (float , float);
	
	void volume (float, float, float &);
	
	float volume (float, float);
	
	float volume (float ; float ; float);
	Respondido em 13/04/2020 14:52:51
	
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.
 
	
	
	 
	
	 3a Questão 
	
	
	
	
	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.
		
	
	void float(int a, int b);
	
	tipo parametros(parametros);
	
	retorno nomeFuncao(parametros);
	
	nome tipo(parametros);
	
	tipo parametros(int a, int b);
	Respondido em 13/04/2020 14:52:41
	
Explicação: 
Por definição, o protótipo de uma função é formado da seguinte forma :
   nome_da_função ( );
	
	
	 
	
	 4a Questão 
	
	
	
	
	Considere o trecho de um programa escrito em C++.
void func1 (bool x, int ini, int fim) {
    for ( int y=ini; y != fim ; y++) {
        x = !x;
        if (x)
            cout << y << endl;
        else
            cout << -y << endl;
    }
}
int main() {
    func1(false, 1, 7);
}
Marque a opção correta que mostra o que é impresso na tela.
		
	
	1, -2, 3, -4, 5, -6
	
	1, -2, -3, -4, -5, -6
	
	1, 2, 3, 4, 5, 6
	
	-1, -2, -3, -4, -5, -6
	
	-1, 2, -3, 4, -5, 6
	Respondido em 13/04/2020 14:52:56
	
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
 
 
 
	
	
	 
	
	 5a Questão 
	
	
	
	
	Uma função possui um valor de retorno inteiro, recebe por valor um inteiro como primeiro parâmetro e por referência um inteiro como segundo parâmetro. Qual das respostas abaixo poderia representar o protótipo dessa função:
		
	
	int func (&int, int);
	
	int func (int &a, int b);
	
	int func (int a, int &b);
	
	void func (int &a, int &b);
	
	void func (int a, int &b);
	Respondido em 13/04/2020 14:52:59
	
	
	Gabarito
Coment.
	
	 
	
	 6a 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; }
		
	
	08 e 18
	
	28 e 08
	
	18 e 28
	
	28 e 18
	
	18 e 18
	Respondido em 13/04/2020 14:53:01
	
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.
	
	
	 
	
	 7a Questão 
	
	
	
	
	Sobre funções, é correto afirmar:
		
	
	São blocos de instruções que são executados quando são chamadas em alguma parte do programa. 
	
	Não devem conter variáveis locais em seu código. 
	
	Obrigatoriamente devem retornam algum valor.
	
	Não podem ser chamadas dentro de outras funções.
	
	Obrigatoriamente devem possuir parâmetros.
	Respondido em 13/04/2020 14:52:52
	
Explicação: 
Uma função é um bloco de instruções que pode ser chamada a partir de outra função, que pode ter ou não parâmetros, que pode ou não retornar valor, que pode ter ou não variáveis locais.
	
	
	 
	
	 8a Questão 
	
	
	
	
	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.
		
	
	60
	
	40
	
	50
	
	20
	
	30
	Respondido em 13/04/2020 14:53:07
	
Explicação: 
int func1 (int vtx[], int tam) {
    int soma=0;  //inicializa soma com zero.
    for (int i=0 ; i < tam; i++) {
        if (i % 2 !=0)   //testa se i é ímpar. Se for, acumula na soma o valor de vtx[i]
             soma += vtx[i];     
    }
    return soma;
}
 
Fazendo um teste de mesa parcial ...
	vetor 
	tam
	soma
	i
	{10, 20, 30, 40, 50}
	5
	0
	0
	 
	 
	20
	1
	 
	 
	 
	2
E continua ... se vê que a função está somando os elementos do vetor que possuem índices ímpares. Logo, serão somados 20 e 40, que dará 60.
A soma 60 é retornada e impressa na main.
	
	
	
 
 
Parte superior do formulário
		
	
	
	 
	
		
		 
	ESTRUTURA DE DADOS
2a aula
		
	 
	Lupa
	 
	 
	
	
PPT
	
MP3
	 
		Exercício: CCT0826_EX_A2_201901045404_V3 
	13/04/2020
	Aluno(a): DENIS DOS REIS SANTOS 
	2020.1 EAD 
	Disciplina: CCT0826 - ESTRUTURA DE DADOS  
	201901045404
	
	 
	
	 1a Questão 
	
	
	
	
	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.
		
	
	9
	
	3
	
	6
	
	18
	
	27
	Respondido em 13/04/2020 14:53:36
	
Explicação: 
Fazendo um teste de mesa, temos que o valor 9 retornado e impresso na main.
Iniciando um teste de mesa....
	n1
	n2
	aux
	27
	18
	9 
	18
	9 
	0
	continua...
	continua...
	continua..
 
	
	
	 
	
	 2a 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 13
	
	Valores: 13 10
	
	Valores: 13 13
	
	Valores: 31 01
	
	Valores: 10 10
	Respondido em 13/04/2020 14:53:42
	
Explicação: 
Acompanhando passo a passoa execução do trecho dado temos :
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");
}
A execução começa pela main e os valores 13 e 10 são passados para a função na chamada em troca(a,b);
Ao iniciar a execução em troca, temos que x recebe 13 e y recebe 10. Mas x e y são parâmetros passados por valor então, nada ocorrerá com a e b na main. ASsim, após a função terminar sua execução e voltarmos para a main temos a seguinte impressão na tela :
Valores : 13  10
	
	
	 
	
	 3a Questão 
	
	
	
	
	A declaração de variáveis na programação é o ato de reservar um espaço na memória para poder armazenar valores de um determinado tipo. Essas variáveis podem ser classificadas como variáveis locais e globais. Sendo assim, qual das situações abaixo representa melhor o conceito das variáveis globais.
		
	
	Se dentro de uma função "mostra" declararmos uma variável 'R' com um determinado valor poderemos imprimir esta variável em qualquer outra função do programa mostrando o valor atribuído na função "mostra".
	
	Em 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.
	
	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 duas funções diferentes temos duas variáveis também diferentes com o mesmo nome apresentando o mesmo valor.
	Respondido em 13/04/2020 14:53:46
	
Explicação: 
Uma variável é classificada com Global quando for declarada fora de todas as funções, significando que poderá ser alterada em qualquer uma delas.
A resposta correta é :
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.
	
	
	Gabarito
Coment.
	
	 
	
	 4a Questão 
	
	
	
	
	 
		
	
	O programa executa perfeitamente independente da ordem das funções já que existem os seus protótipos. 
	
	O programa não executa corretamente pois as funções devem ser descritas antes da função main(), para que o compilador consiga reconhecê-las. 
	
	O programa não executa corretamente, pois os protótipos estão fora da ordem em que as funções são descritas. 
	
	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. 
	Respondido em 13/04/2020 14:54:12
	
	
	Gabarito
Coment.
	
	 
	
	 5a Questão 
	
	
	
	
	Diga, para o trecho do programa abaixo, qual a opção que representa a saída em tela. Considere que o programa será compilado sem erros, e irá executar também sem problemas.
void troca (int x, int *y){
    int tmp;
    tmp = *y;
    *y = x;
    x = tmp;
} 
int main() { 
    int a = 13, b = 10;
    troca( a, &b );
    cout<<"Valores: "<< a<<"\t"<< b<< endl;
    system("pause");
}
		
	
	Valores: 13 10
	
	Valores: 31 01
	
	Valores: 10 10
	
	Valores: 10 13
	
	Valores: 13 13
	Respondido em 13/04/2020 14:54:18
	
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
	
	
	 
	
	 6a Questão 
	
	
	
	
	Blocos únicos de códigos que realizam diversas tarefas distitintas são de dificil manutenção. Portanto, utiliza-se a tecnica da modularização de programas, a fim de facilitar a implementação e a manutenção dos programas. Esta técnica, também chamada de modularização, tem como principal elemento: 
		
	
	As funções 
	
	Os Grafos 
	
	Os Vetores 
	
	As Filas
	
	As Estruturas de Dados 
	Respondido em 13/04/2020 14:54:24
	
	
	 
	
	 7a 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.
		
	
	5
	
	24
	
	1
	
	120
	
	60
	Respondido em 13/04/2020 14:54:15
	
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.
	
	
	 
	
	 8a Questão 
	
	
	
	
	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;
}
		
	
	3, 5, 8
	
	2, 2, 9
	
	3, 2, 8
	
	2, 5, 10
	
	4, 5, 9
	Respondido em 13/04/2020 14:54:22
	
Explicação: 
Fazendo um teste de mesa, temos o seguinte : 
A execução começa pela main.  
As variáveis a, b e c são iniciadas com 2.
Chama-se a função executar e são passados os valores de a e b, ou seja, 2 e 2.
Ao iniciar a execução da função executar temos que x é passado por valor e y por referência. Iniciando a função temos :
Em x = y * 2;   Daí :  x  recebe 2 * 2, que dá 4
Em y = ++x;     Daí : x é incrementado para 5 e depois y recebe 5.
Então, a soma de x + y é retornado. Ou seja, 10 é retornado.
Mas como y é passado por referência, a variável b na chamada da função foi alterada para 5.  Nada, no entanto, ocorreu com a na chamada da função, pois x foi passado por valor.
Ao voltar para main, será impresso  2, 5, 10
Portanto, qualquer outra opção é totalmente inviável.
 
 
	
	
	
 
 
Parte superior do formulário
		
	
	
	 
	
		
		 
	ESTRUTURA DE DADOS
2a aula
		
	 
	Lupa
	 
	 
	
	
PPT
	
MP3
	 
		Exercício: CCT0826_EX_A2_201901045404_V4 
	13/04/2020
	Aluno(a): DENIS DOS REIS SANTOS 
	2020.1 EAD 
	Disciplina: CCT0826 - ESTRUTURA DE DADOS  
	201901045404
	
	 
	
	 1a Questão 
	
	
	
	
	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 registro / área de dados globais
	
	( ) área de dados globais / área de pilha
	
	( ) área de registro / área de pilha 
	
	( ) área de pilha / área de registro
	
	( ) área de dados globais / área de registro
	Respondido em 13/04/2020 14:57:35Explicação: 
Como y e r são variáveis, ficarão armazenadas em  na área de dados globais / área de pilha
	
	
	 
	
	 2a Questão 
	
	
	
	
	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; }
		
	
	10
	
	3
	
	20
	
	0
	
	5
	Respondido em 13/04/2020 14:57:38
	
Explicação: 
A função não retorna valor, então o valor de "n" não é alterado permanecendo igual a 5.
	
	
	 
	
	 3a Questão 
	
	
	
	
	O que será mostrado na tela pelo programa abaixo ? 
#include < iostream >
using namespace std;
int a,b;
void dobro(int x){ //x passado por valor
 x=2*x;
}
int triplo(int y){ //y passado por valor
 return 3*y;
}
void altera(int x, int &y) { //x passado por valor e y passado por referencia
 x=x+a;
 y=x+b;
} 
 
int main (){
 a=2;
 b=3;
 dobro(a);
 b=triplo(b);
 altera(a,b);
 cout<< a << " e " << b << endl;
}
 
		
	
	2 e 9
	
	4 e 9
	
	9 e 16
	
	4 e 12
	
	2 e 13
	Respondido em 13/04/2020 14:57:43
	
Explicação: 
Executando o programa, passo a passo, temos :
Na main, a recebe 2 e b recebe 3.  Note que a e b são variáveis globais.
Daí, ainda na main, a função dobro é chamada. Ao executar dobro, temos que o valor 2 é passado e x (local à dobro) recebe 2 * 2, que dá 4.
Ao terminar a função dobro, volta-se para a main, mas o valor de a passado não mudou, continuando 2.
Após a execução de dobro, a função triplo é chamada na main e é passado o valor de b,  que é  3.  Iniciando a execução da função triplo, temos que y recebe 3 e a função retorna 3 * 3, que é 9. Voltando para a main, temos que b recebe o valor retornado pela função, que é 9.
Até este ponto, temos que a vale 2 e b mudou para 9.
Em seguida, a função altera é chamada e são passados 2 e 9, respectivamente, para x e y.  Executando a função altera, temos que x recebe 2+2, que dá 4 e y recebe 4+9, que dá 13.  Como x é passado por valor e y por referência, temos que a mudará e b mudará (ambas na main).
Então, voltando para main temos que a vale 2 e que b vale 13. Assim, será impresso na tela
           2  e   13
	
	
	 
	
	 4a Questão 
	
	
	
	
	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';
}
		
	
	algor
	
	algo
	
	rogla
	
	Ocorre erro, pois a função, que é do tipo void, não retorna o vetor Y.
	
	ogla
	Respondido em 13/04/2020 14:57:47
	
Explicação: 
Não há outra opção, pois a questão é objetiva. Vejamos passo a passo :
X armazena "algoritmo" e Y será gerado.
	j
	i
	0
	4
	1
	3
	2
	2
	3
	1
	4
	0
	5
	 -1 ... falha o teste i >= 0
A cada rodada do loop temos, considerando os valores de j e i acima, as seguintes atribuições :
Y[0] recebe X[4], que é 'r'
Y[1] recebe X[3], que é 'o'
Y[2] recebe X[2], que é 'g'
Y[3] recebe X[1], que é 'l'
Y[4] recebe X[0], que é 'a'
Y[5] recebe '\0'
Daí, Y será rogla
	
	
	 
	
	 5a Questão 
	
	
	
	
	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?
		
	
	4; 2; 4
	
	2; 2; 4
	
	1; 2; 4
	
	1; 3; 1
	
	2; 2; 1
	Respondido em 13/04/2020 14:58:04
	
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
	
	
	 
	
	 6a Questão 
	
	
	
	
	Nas linguagens C e C++, ao se declarar qualquer função, a especificação de tipo de dados que antecede o nome desta função define
		
	
	o tipo das variáveis que serão utilizadas dentro da função.
	
	o protótipo da função.
	
	o tipo do dado do valor retornado da função para quem a chamou.
	
	o tipo dos dados dos parâmetros que são passados à função quando da sua chamada.
	
	o escopo das variáveis do programa.
	Respondido em 13/04/2020 14:57:58
	
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.
	
	
	 
	
	 7a Questão 
	
	
	
	
	Qual será a saída para o seguinte trecho de código?
 void FUNC1()
{
int B = -100; 
cout << "Valor de B dentro da função FUNC1: " << B;
}
void FUNC2() {
int B =  -200;
cout << "Valor de B dentro da função FUNC2: " << B;
}
int  main() {
int B = 10;
cout << "Valor de B: " << B;
B = 20;
FUNC1();
cout << "Valor de B: " << B;
B = 30;
FUNC2();
cout << "Valor de B: " << B;
}
		
	
	Valor de B: 10 Valor de B dentro da função FUNC1: -100 Valor de B: 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: -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: -200 Valor de B: 20 Valor de B dentro da função FUNC2: -200 Valor de B: 30
	
	Valor de B: 10 Valor de B dentro da função FUNC1: -100 Valor de B: 10 Valor de B dentro da função FUNC2: -200 Valor de B: 30
	
	Valor de B: 10 Valor de B dentro da função FUNC1: -100 Valor de B: 20 Valor de B dentro da função FUNC2: -200 Valor de B: 30
	Respondido em 13/04/2020 14:58:01
	
Explicação: 
A execução começa pela main. Na main, B recebe 10. E daí é impresso :  Valor de B : 10
DEpois, B muda e recebe 20.
Em seguida, é chamada a função FUNC1. Dentro desta função, existe um outro B que recebe -100. Então, é impresso  :
                      Valor de B dentro da função FUNC1: -100
A função termina e voltamos para a main, onde existe um outro cout que imprime o valor de B, que na main vale 20. Então, será impresso na tela :   
     Valor de B : 20         
Em seguida, ainda na main, B recebe 30 e logo depois, FUNC2 é chamada.  Executando FUNC2 temos que um B, local à função, recebe -200 e logo em seguida é impresso :  Valor de B dentro da função FUNC2 : -200
Terminando a execução de FUNC2, voltamos para a main onde é impresso o valor do B (local à main) :  Valor de B :  30
Logo, a opção correta é a que diz : 
      Valor de B : 10
      Valor de B dentro da função FUNC1: -100 
     Valor de B : 20      
     Valor de B dentro da função FUNC2 : -200
     Valor de B :  30
	
	
	 
	
	 8a Questão 
	
	
	
	
	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.
		
	
	90
	
	102
	
	100
	
	80
	
	104
	Respondido em 13/04/2020 14:58:09
	
Explicação: 
int func1 (int n1, int n2) {
    int soma=0;
    for (    ; n1 < n2 ; n1 +=  2) {
         soma +=  n1;
     }
    return soma;
}
main() {
    cout << func1(1,20);
}
Fazendo passo a passo :
	n1
	n2
	soma
	1
	20
	0
	3
	 
	1
	5
	 
	4
	7
	 
	9
	9
	 
	16
	11
	 
	25
	13
	 
	36
	15
	 
	49
	17
	 
	64
	19
	 
	81
	21 ... Teste dará falso
	 
	100
Retorna o valor 100 que é impresso na main.
	
	
	
 
 
Parte superior do formulário
		
	
	
	 
	
		
		 
	ESTRUTURA DE DADOS
2a aula
		
	 
	Lupa
	 
	 
	
	
PPT
	
MP3
	 
		Exercício: CCT0826_EX_A2_201901045404_V5 
	13/04/2020
	Aluno(a): DENIS DOS REIS SANTOS 
	2020.1 EAD 
	Disciplina:CCT0826 - ESTRUTURA DE DADOS  
	201901045404
	
	 
	
	 1a Questão 
	
	
	
	
	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"
	
	Todos os valores contidos no vetor são copiados para a função
	
	Haverá um erro de compilação, pois vetores não podem ser parâmetros de funções
	
	Essa passagem é "por referência"
	
	Essa passagem é "por valor"
	Respondido em 13/04/2020 14:58:55
	
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.
	
	
	 
	
	 2a Questão 
	
	
	
	
	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. Para a função compilar, deveria ter int no lugar de void, já que há return na função.
	
	2 4 6 8 10
	
	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
	
	2 4 6
	Respondido em 13/04/2020 14:58:50
	
	
	 
	
	 3a Questão 
	
	
	
	
	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 strlen() ;
	
	strcmp(); e strcpy();
	
	strcmp(); e strcmpi ();
	
	strcat(); e strcpy() ;
	
	strcmp(); e strcat();
	Respondido em 13/04/2020 14:58:54
	
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
	
	
	 
	
	 4a Questão 
	
	
	
	
	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;
		
	
	0 e 5
	
	25 e 25
	
	15 e 15
	
	15 e 25
	
	25 e 15
	Respondido em 13/04/2020 14:59:09
	
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
	
	
	 
	
	 5a Questão 
	
	
	
	
	Assinale a opção certa.
 Quando não se escreve o protótipo de uma função ... 
		
	
	A chamada da função não poderá ser feita em qualquer hipótese. 
	
	É preciso definir a função antes do programa principal. 
	
	A chamada da função poderá ser feita em qualquer hipótese.
	
	O programa não funcionará de forma alguma. 
	
	A definição da função deverá ser escrita, obrigatoriamente, após o programa principal. 
	Respondido em 13/04/2020 14:59:14
	
	
	Gabarito
Coment.
	
	 
	
	 6a Questão 
	
	
	
	
	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 III
	
	Apenas I e II
	
	Apenas I
	
	Nenhuma está correta
	
	Apenas II
	Respondido em 13/04/2020 14:59:15
	
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.
	
	
	 
	
	 7a 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 valor
 
 
	
	Será impresso 
Auxiliar = 15 
Result = 1000 Valor = 85 
sendo que z é um parâmetro passado por referência 
	
	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 = 100
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
 
 
	Respondido em 13/04/2020 14:59:18
	
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.
	
	
	 
	
	 8a 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 I e II estão corretas
	
	Somente II e IV estão corretas
	
	Somente II está correta 
	
	Somente II III e IV estão corretas
	
	Somente II e III estão corretas
	Respondido em 13/04/2020 14:59:25
	
	
	Gabarito
Coment.
	
	
 
 
Parte superior do formulário
		
	
	
	 
	
		
		 
	ESTRUTURA DE DADOS
2a aula
		
	 
	Lupa
	 
	 
	
	
PPT
	
MP3
	 
		Exercício: CCT0826_EX_A2_201901045404_V6 
	01/05/2020
	Aluno(a): DENIS DOS REIS SANTOS 
	2020.1 EAD 
	Disciplina: CCT0826 - ESTRUTURA DE DADOS  
	201901045404
	
	 
	
	 1a Questão 
	
	
	
	
	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; }
		
	
	5
	
	20
	
	0
	
	Haverá um erro de compilação
	
	10
	Respondido em 01/05/2020 08:39:01
	
	
	 
	
	 2a Questão 
	
	
	
	
	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.
		
	
	104
	
	90
	
	80
	
	102
	
	100
	Respondido em 01/05/2020 08:39:03
	
Explicação: 
int func1 (int n1, int n2) {
    int soma=0;
    for (    ; n1 < n2 ; n1 +=  2) {
         soma +=  n1;
     }
    return soma;
}
main() {
    cout << func1(1,20);
}
Fazendo passo a passo :
	n1
	n2
	soma
	1
	20
	0
	3
	 
	1
	5
	 
	4
	7
	 
	9
	9
	 
	16
	11
	 
	25
	13
	 
	36
	15
	 
	49
	17
	 
	64
	19
	 
	81
	21 ... Teste dará falso
	 
	100
Retorna o valor 100 que é impresso na main.
	
	
	 
	
	 3a Questão 
	
	
	
	
	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 registro / área de dados globais
	
	( ) área de dados globais / área de registro
	
	( ) área de dados globais / área de pilha
	Respondido em 01/05/2020 08:39:48
	
Explicação: 
Como y e r são variáveis, ficarão armazenadas em  na área de dados globais / área de pilha
	
	
	 
	
	 4a Questão 
	
	
	
	
	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 I
	
	Apenas II
	
	Apenas I e II
	
	Apenas III
	
	Nenhuma está correta
	Respondido em 01/05/2020 08:39:51
	
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.
	
	
	 
	
	 5a Questão 
	
	
	
	
	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;
}
		
	
	3, 5, 8
	
	2, 2, 9
	
	2, 5, 10
	
	4, 5, 9
	
	3, 2, 8
	Respondido em 01/05/2020 08:39:55
	
Explicação: 
Fazendo um teste de mesa, temos o seguinte : 
A execução começa pela main.  
As variáveis a, b e c são iniciadas com 2.
Chama-se a função executar e são passados os valores de a e b, ou seja, 2 e 2.
Ao iniciar a execução da função executar temos que x é passado por valor e y por referência. Iniciando a função temos :
Em x = y * 2;   Daí :  x  recebe 2 * 2, que dá 4
Em y = ++x;     Daí : x é incrementado para 5 e depois y recebe 5.
Então, a soma de x + y é retornado. Ou seja, 10 é retornado.
Mas como y é passado por referência, a variável b na chamada da função foi alterada para 5.  Nada, no entanto, ocorreu com a na chamada da função, pois x foi passado por valor.
Ao voltar para main, será impresso  2, 5, 10
Portanto, qualquer outra opção é totalmente inviável.
 
 
	
	
	 
	
	 6a Questão 
	
	
	
	
	Blocos únicos de códigos que realizam diversas tarefas distitintas são de dificil manutenção. Portanto, utiliza-se a tecnica da modularização de programas, a fim de facilitar a implementação e a manutenção dos programas. Esta técnica, também chamada de modularização, tem como principal elemento: 
		
	
	As Estruturas de Dados 
	
	Os Grafos 
	
	Os Vetores 
	
	As Filas
	
	As funções 
	Respondido em 01/05/2020 08:39:58
	
	
	 
	
	 7a Questão 
	
	
	
	
	Considere a função: 
void dobro(int x) { 
      x = 10 * x; 
} 
Qual será o valor impresso na tela quando o programa principal for executado? 
int main() { 
int n; 
n = 5; 
dobro(n); 
cout << n; 
return 0; 
} 
 
		
	
	0 
	
	10 
	
	Haverá um erro de compilação 
	
	50
	
	5
	Respondido em 01/05/2020 08:40:02
	
	
	Gabarito
Coment.
	
	 
	
	 8a Questão 
	
	
	
	
	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
	
	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
	
	2 4 6 8
	
	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.
	Respondido em 01/05/2020 08:40:05
	
	
	
 
 
Parte superior do formulário
		
	
	
	 
	
		
		 
	ESTRUTURA DE DADOS
2a aula
		
	 
	Lupa
	 
	 
	
	
PPT
	
MP3
	 
		Exercício: CCT0826_EX_A2_201901045404_V7 
	01/05/2020
	Aluno(a): DENIS DOS REIS SANTOS 
	2020.1 EAD 
	Disciplina: CCT0826 - ESTRUTURA DE DADOS  
	201901045404
	
	 
	
	 1a Questão 
	
	
	
	
	#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 :
		
	
	Não retorna valor e possui parâmetros.
	
	Retorna valor e possui parâmetros.
	
	Retorna valor e não  possui parâmetros.
	
	Retorna valor.
	
	Não retorna valor e não   possui parâmetros.
	Respondido em 01/05/2020 08:40:17
	
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.
	
	
	 
	
	 2a Questão 
	
	
	
	
	Qual será a saída para o seguinte trecho de código?
 void FUNC1()
{
int B = -100; 
cout << "Valor de B dentro da função FUNC1: " << B;
}
void FUNC2() {
int B =  -200;
cout << "Valor de B dentro da função FUNC2: " << B;
}
int  main() {
int B = 10;
cout << "Valor de B: " << B;
B = 20;
FUNC1();
cout << "Valor de B: " << B;
B = 30;
FUNC2();
cout << "Valor de B: " << B;
}
		
	
	Valor de B: 10 Valor de B dentro da função FUNC1: -100 Valor de B: 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: -200 Valor de B: 20 Valor de B dentro da função FUNC2: -200 Valor de B: 30
	
	Valor de B: 10 Valor de B dentro da função FUNC1: -100 Valor de B: 20 Valor de B dentro da função FUNC2: -200 Valor de B: 20
	
	Valor de B: 10 Valor de B dentro da função FUNC1: -100 Valor de B: 20 Valor de B dentro da função FUNC2: -400 Valor de B: 30
	Respondido em 01/05/2020 08:40:29
	
Explicação: 
A execução começa pela main. Na main, B recebe 10. E daí é impresso :  Valor de B : 10
DEpois, B muda e recebe 20.
Em seguida, é chamada a função FUNC1. Dentro desta função, existe um outro B que recebe -100. Então, é impresso  :
                      Valor de B dentro da função FUNC1: -100
A função termina e voltamos para a main, onde existe um outro cout que imprime o valor de B, que na main vale 20. Então, será impresso na tela :   
     Valor de B : 20         
Em seguida,ainda na main, B recebe 30 e logo depois, FUNC2 é chamada.  Executando FUNC2 temos que um B, local à função, recebe -200 e logo em seguida é impresso :  Valor de B dentro da função FUNC2 : -200
Terminando a execução de FUNC2, voltamos para a main onde é impresso o valor do B (local à main) :  Valor de B :  30
Logo, a opção correta é a que diz : 
      Valor de B : 10
      Valor de B dentro da função FUNC1: -100 
     Valor de B : 20      
     Valor de B dentro da função FUNC2 : -200
     Valor de B :  30
	
	
	 
	
	 3a Questão 
	
	
	
	
	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.
		
	
	tipo parametros(int a, int b);
	
	tipo parametros(parametros);
	
	nome tipo(parametros);
	
	void float(int a, int b);
	
	retorno nomeFuncao(parametros);
	Respondido em 01/05/2020 08:40:33
	
Explicação: 
Por definição, o protótipo de uma função é formado da seguinte forma :
   nome_da_função ( );
	
	
	 
	
	 4a Questão 
	
	
	
	
	 
		
	
	O programa executa perfeitamente independente da ordem das funções já que existem os seus protótipos. 
	
	O programa não executa corretamente, pois os protótipos estão fora da ordem em que as funções são descritas. 
	
	O programa não executa corretamente, pois o protótipo da função media( ) não apresenta a identificação dos parâmetros, mas apenas os tipos dos mesmos. 
	
	O programa 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( ). 
	Respondido em 01/05/2020 08:40:50
	
	
	Gabarito
Coment.
	
	 
	
	 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.
		
	
	120
	
	24
	
	1
	
	60
	
	5
	Respondido em 01/05/2020 08:40:58
	
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 
	
	
	
	
	Considere o trecho de um programa escrito em C++.
void func1 (bool x, int ini, int fim) {
    for ( int y=ini; y != fim ; y++) {
        x = !x;
        if (x)
            cout << y << endl;
        else
            cout << -y << endl;
    }
}
int main() {
    func1(false, 1, 7);
}
Marque a opção correta que mostra o que é impresso na tela.
		
	
	-1, 2, -3, 4, -5, 6
	
	-1, -2, -3, -4, -5, -6
	
	1, -2, 3, -4, 5, -6
	
	1, 2, 3, 4, 5, 6
	
	1, -2, -3, -4, -5, -6
	Respondido em 01/05/2020 08:41:02
	
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
 
 
 
	
	
	 
	
	 7a Questão 
	
	
	
	
	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;
		
	
	25 e 25
	
	25 e 15
	
	15 e 15
	
	0 e 5
	
	15 e 25
	Respondido em 01/05/2020 08:40:52
	
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
	
	
	 
	
	 8a Questão 
	
	
	
	
	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
	
	Ocorre erro, pois a função, que é do tipo void, não retorna o vetor Y.
	
	rogla
	
	algo
	
	algor
	Respondido em 01/05/2020 08:41:08
	
Explicação: 
Não há outra opção, pois a questão é objetiva. Vejamos passo a passo :
X armazena "algoritmo" e Y será gerado.
	j
	i
	0
	4
	1
	3
	2
	2
	3
	1
	4
	0
	5
	 -1 ... falha o teste i >= 0
A cada rodada do loop temos, considerando os valores de j e i acima, as seguintes atribuições :
Y[0] recebe X[4], que é 'r'
Y[1] recebe X[3], que é 'o'
Y[2] recebe X[2], que é 'g'
Y[3] recebe X[1], que é 'l'
Y[4] recebe X[0], que é 'a'
Y[5] recebe '\0'
Daí, Y será rogla
	
	
	
 
 
Parte superior do formulário
		
	
	
	 
	
		
		 
	ESTRUTURA DE DADOS
2a aula
		
	 
	Lupa
	 
	 
	
	
PPT
	
MP3
	 
		Exercício: CCT0826_EX_A2_201901045404_V8 
	01/05/2020
	Aluno(a): DENIS DOS REIS SANTOS 
	2020.1 EAD 
	Disciplina: CCT0826 - ESTRUTURA DE DADOS  
	201901045404
	
	 
	
	 1a Questão 
	
	
	
	
	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.
		
	
	60
	
	20
	
	30
	
	50
	
	40
	Respondido em 01/05/2020 08:41:32
	
Explicação: 
int func1 (int vtx[], int tam) {
    int soma=0;  //inicializa soma com zero.
    for (int i=0 ; i < tam; i++) {
        if (i % 2 !=0)   //testa se i é ímpar. Se for, acumula na soma o valor de vtx[i]
             soma += vtx[i];     
    }
    return soma;
}
 
Fazendo um teste de mesa parcial ...
	vetor 
	tam
	soma
	i
	{10, 20, 30, 40, 50}
	5
	0
	0
	 
	 
	20
	1
	 
	 
	 
	2
E continua ... se vê que a função está somando os elementos do vetor que possuem índices ímpares. Logo, serão somados 20 e 40, que dará 60.
A soma 60 é retornada e impressa na main.
	
	
	 
	
	 2a Questão 
	
	
	
	
	  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, float &);
	
	float volume (float, float);
	
	void volume (float , float);
	
	float volume (float ; float ; float);
	
	float  volume (float, float, float);
	Respondido em 01/05/2020 08:41:22
	
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.
 
	
	
	 
	
	 3a Questão 
	
	
	
	
	Uma função possui um valor de retorno inteiro, recebe por valor um inteiro como primeiro parâmetro e por referência um inteiro como segundo parâmetro. Qual das respostas abaixo poderia representar o protótipo dessa função:
		
	
	void func (int a, int &b);
	
	int func (int &a, int b);
	
	int func (&int, int);
	
	int func (int a, int &b);
	
	void func (int &a, int &b);
	Respondido em 01/05/2020 08:41:40
	
	
	Gabarito
Coment.
	
	 
	
	 4a Questão 
	
	
	
	
	Considera a FUNÇÃO abaixo:
void inverte(int &x, int &y)
{ int aux = x;
x = y;
y = aux; }
Quais valores serão impressos na tela quando o seguinte programa principal for executado?
int main()
{ int a = 18, b = 28;
inverte(a, b);
cout << a <<" e "<< b;
return 0; }
		
	
	18 e 18
	
	28 e 08
	
	08 e 18
	
	18 e 28
	
	28 e 18
	Respondido em 01/05/2020 08:41:56
	
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.
	
	
	 
	
	 5a Questão 
	
	
	
	
	Sobre funções, é correto afirmar:
		
	
	Não podem ser chamadas dentro de outras funções.
	
	Não devem conter variáveis locais em seu código. 
	
	Obrigatoriamente devem retornam algum valor.
	
	Obrigatoriamente devem possuir parâmetros.
	
	São blocos de instruções que são executados quando são chamadas em alguma parte do programa. 
	Respondido em 01/05/2020 08:42:00
	
Explicação: 
Uma função é um bloco de instruções que pode ser chamada a partir de outra função, que pode ter ou não parâmetros, que pode ou não retornar valor, que pode ter ou não variáveis locais.
	
	
	 
	
	 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 e III estão corretas
	
	Somente I e II estão corretas
	
	Somente II e IV estão corretas
	
	Somente II III e IV estão corretas
	
	Somente II está correta 
	Respondido em 01/05/2020 08:41:50
	
	
	Gabarito
Coment.
	
	 
	
	 7a 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 escopo das variáveis do programa.
	
	o tipo dos dados dos parâmetros que são passados à função quando da sua chamada.
	
	o protótipo da função.
	
	o tipo das variáveis que serão utilizadas dentro da função.
	
	o tipo do dado do valor retornado da função para quem a chamou.
	Respondido em 01/05/2020 08:41:52
	
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.
	
	
	 
	
	 8a Questão 
	
	
	
	
	Na passagem por ____________________ , o endereço da variável da função chamadora é passado para a função chamada e, dessa forma, o valor poderá ser alterado, ou não.
		
	
	número
	
	caracter
	
	valor
	
	referência
	
	void
	Respondido em 01/05/2020 08:41:56
	
Explicação: 
Esse é o conceito de passagem por referência.
	
	
	
 
 
Parte superior do formulário
		
	
	
	 
	
		
		 
	ESTRUTURA DE DADOS
2a aula
		
	 
	Lupa
	 
	 
	
	
PPT
	
MP3
	 
		Exercício: CCT0826_EX_A2_201901045404_V9 
	01/05/2020
	Aluno(a): DENIS DOS REIS SANTOS 
	2020.1 EAD 
	Disciplina: CCT0826 - ESTRUTURA DE DADOS  
	201901045404
	
	 
	
	 1a Questão 
	
	
	
	
	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 strcat();
	
	strcat(); e strcpy() ;
	
	strcmp(); e strlen() ;
	
	strcmp(); e strcpy();
	
	strcmp(); e strcmpi ();
	Respondido em 01/05/2020 08:42:07
	
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
	
	
	 
	
	 2a Questão 
	
	
	
	
	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  ? 
		
	
	6; 14
	
	2; 12
	
	14; 6
	
	2; 6
	
	4; 12
	Respondido em 01/05/2020 08:42:11
	
Explicação: 
  Fazendo um teste de mesa, chegaremos na opção correta.  Iniciando a execução pela main, temos que x recebe 2 e y recebe 3.  
Em seguida, na 1ª. chamada de func,  os valores de x e de y, respectivamente, 2 e 3, são passados para a função.
Executando a função func, que possui o parâmetro a  passado por valor e o parâmetro b passado por referência (usa &) ...
void func (int a, int &b) {
a++;
b = a*2;
}
Temos que a recebeu 2 e b recebeu 3. Daí, a ficará 3 e b receberá 6.  
Assim, ao terminar a função func e retornarmos para a main teremos x sem alteração igual a 2 e y com alteração igual a 6.
Após voltarmos para a main, temos uma nova chamada de func que recebe os valores de y e de x, respectivamente, que são 6 e 2.  Na 2ª. chamada de func para esses valores, teremos que a recebe 6 e y recebe 2.  Dentro da função, temos que a é incrementado para 7 e que b recebe 7 * 2 que dá 14. Ao terminarmos a execução da função, temos que y não sofreu mudança, ficando com o valor 6  e que x mudou para 14.  Logo, será impresso 14;6
Logo, as demais opções são incorretas.
 
	
	
	 
	
	 3a Questão 
	
	
	
	
	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?
		
	
	4; 2; 4
	
	1; 3; 1
	
	1; 2; 4
	
	2; 2; 1
	
	2; 2; 4
	Respondido em 01/05/2020 08:42:28
	
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
	
	
	 
	
	 4a Questão 
	
	
	
	
	Blocos únicos de códigos que realizam diversas tarefas distintas são de difícil manutenção. Portanto, utiliza-se a técnica da modularização de programas, a fim de facilitar a implementação e a manutenção dos programas. Esta técnica tem como principal elemento: 
		
	
	Os Grafos 
	
	As funções 
	
	As Estruturas de Dados 
	
	Os Vetores 
	
	As Filas 
	Respondido em 01/05/2020 08:42:22
	
	
	 
	
	 5a Questão 
	
	
	
	
	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.
		
	
	3
	
	9
	
	27
	
	6
	
	18
	Respondido em 01/05/2020 08:42:24
	
Explicação: 
Fazendo um teste de mesa, temos que o valor 9 retornado e impresso na main.
Iniciando um teste de mesa....
	n1
	n2
	aux
	27
	18
	9 
	18
	9 
	0
	continua...
	continua...
	continua..
 
	
	
	 
	
	 6a Questão 
	
	
	
	
	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; }
		
	
	5
	
	0
	
	3
	
	10
	
	20
	Respondido em 01/05/2020 08:42:27
	
Explicação: 
A função não retorna valor, então o valor de "n" não é alterado permanecendo igual a 5.
	
	
	 
	
	 7a 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 13
	
	Valores: 13 13
	
	Valores: 10 10
	
	Valores: 31 01
	
	Valores: 13 10
	Respondido em 01/05/2020 08:42:29
	
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
	
	
	 
	
	 8a Questão 
	
	
	
	
	A declaração de variáveis na programação é o ato de reservar um espaço na memória para poder armazenar valores de um determinado tipo. Essas variáveis podem ser classificadas como variáveis locais e globais. Sendo assim, qual das situações abaixo representa melhor o conceito das variáveis globais.
		
	
	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 duas funções diferentes temos duas variáveis também diferentes com o mesmo nome apresentando o mesmo valor.
	
	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.
	Respondido em 01/05/2020 08:42:32
	
Explicação: 
Uma variável é classificada com Global quando for declarada fora de todas as funções, significando que poderá ser alterada em qualquer uma delas.
A resposta correta é :
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.
	
	
	Gabarito
Coment.
	
	
 
 
Parte superior do formulário
		
	
	
	 
	
		
		 
	ESTRUTURA DE DADOS
2a aula
		
	 
	Lupa
	 
	 
	
	
PPT
	
MP3
	 
		Exercício: CCT0826_EX_A2_201901045404_V10 
	01/05/2020
	Aluno(a): DENIS DOS REIS SANTOS 
	2020.1 EAD 
	Disciplina: CCT0826 - ESTRUTURA DE DADOS  
	201901045404
	
	 
	
	 1a 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: 31 01
	
	Valores: 13 10
	
	Valores: 10 13
	
	Valores: 13 13
	
	Valores: 10 10
	Respondido em 01/05/2020 08:42:44
	
Explicação: 
Acompanhando passo a passo a execução do trecho dado temos :
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");
}
A execução começa pela main e os valores 13 e 10 são passados para a função na chamada em troca(a,b);
Ao iniciar a execução em troca, temos que x recebe 13 e y recebe 10. Mas x e y são parâmetros passados por valor então, nada ocorrerá com a e b na main. ASsim, após a função terminar sua execução e voltarmos para a main temos a seguinte impressão na tela :
Valores : 13  10
	
	
	 
	
	 2a 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.
		
	
	2
	
	6
	
	3
	
	4
	
	1
	Respondido em 01/05/2020 08:42:48
	
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.
	
	
	 
	
	 3a Questão 
	
	
	
	
	Em programação podemos utilizar um recurso que modulariza o programa chamado função. As funções precisam ser ativadas para que possam ser executadas. Para isso, é necessário chamar a função pelo seu nome e enviar, quando necessário, os valores respectivos para os parâmetros de entrada. Ao enviar os valores para os parâmetros de entrada, o programa pode fazer uma cópia deste valor ou trabalhar em um endereço enviado. Quando se envia o endereço estamos ativando a função por meio de:
		
	
	Registro.
	
	Passagem por valor.
	
	Envio de inteiro.
	
	Envio de valor.
	
	Ponteiros.
	Respondido em 01/05/2020 08:42:53
	
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.
	
	 
	
	 4a Questão 
	
	
	
	
	O que será mostrado na tela pelo programa abaixo ? 
#include < iostream >
using namespace std;
int a,b;
void dobro(int x){ //x passado por valor
 x=2*x;
}
int triplo(int y){ //y passado por valor
 return 3*y;
}
void altera(int x, int &y) { //x passado por valor e y passado por referencia
 x=x+a;
 y=x+b;
}int main (){
 a=2;
 b=3;
 dobro(a);
 b=triplo(b);
 altera(a,b);
 cout<< a << " e " << b << endl;
}
 
		
	
	4 e 12
	
	2 e 9
	
	2 e 13
	
	9 e 16
	
	4 e 9
	Respondido em 01/05/2020 08:42:57
	
Explicação: 
Executando o programa, passo a passo, temos :
Na main, a recebe 2 e b recebe 3.  Note que a e b são variáveis globais.
Daí, ainda na main, a função dobro é chamada. Ao executar dobro, temos que o valor 2 é passado e x (local à dobro) recebe 2 * 2, que dá 4.
Ao terminar a função dobro, volta-se para a main, mas o valor de a passado não mudou, continuando 2.
Após a execução de dobro, a função triplo é chamada na main e é passado o valor de b,  que é  3.  Iniciando a execução da função triplo, temos que y recebe 3 e a função retorna 3 * 3, que é 9. Voltando para a main, temos que b recebe o valor retornado pela função, que é 9.
Até este ponto, temos que a vale 2 e b mudou para 9.
Em seguida, a função altera é chamada e são passados 2 e 9, respectivamente, para x e y.  Executando a função altera, temos que x recebe 2+2, que dá 4 e y recebe 4+9, que dá 13.  Como x é passado por valor e y por referência, temos que a mudará e b mudará (ambas na main).
Então, voltando para main temos que a vale 2 e que b vale 13. Assim, será impresso na tela
           2  e   13
	
	
	 
	
	 5a Questão 
	
	
	
	
	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 4 3 2 1 0 
	
	5 3 4 2 1 4
	Respondido em 01/05/2020 08:43:01
	
	
	 
	
	 6a 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 valor
 
 
	
	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 = 999  Valor = 85
sendo que z é um  parâmetro passado por valor
 
 
	Respondido em 01/05/2020 08:43:05
	
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.
	
	
	 
	
	 7a Questão 
	
	
	
	
	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 pode ser "por valor" ou "por referência"
	
	Essa passagem é "por valor"
	
	Haverá um erro de compilação, pois vetores não podem ser parâmetros de funções
	
	Essa passagem é "por referência"
	Respondido em 01/05/2020 08:43:12
	
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.
	
	
	 
	
	 8a Questão 
	
	
	
	
	Assinale a opção certa.
 Quando não se escreve o protótipo de uma função ... 
		
	
	A chamada da função não poderá ser feita em qualquer hipótese. 
	
	A chamada da função poderá ser feita em qualquer hipótese.
	
	É preciso definir a função antes do programa principal. 
	
	O programa não funcionará de forma alguma. 
	
	A definição da função deverá ser escrita, obrigatoriamente, após o programa principal. 
	Respondido em 01/05/2020 08:43:27
	
	
	Gabarito
Coment.
	
	
 
 
Parte inferior do formulário
Parte inferior do formulário
Parte inferior do formulário
Parte inferior do formulário
Parte inferior do formulário
Parte inferior do formulário
Parte inferior do formulário
Parte inferior do formulário
Parte inferior do formulário
Parte inferior do formulário
Parte superior do formulário
Parte inferior do formulário

Outros materiais