Buscar

Ex. Aula 2 ESTRUTURA DE DADOS FUNÇÕES

Prévia do material em texto

09/04/2019 EPS
estacio.webaula.com.br/Classroom/index.html?id=2294224&classId=1132751&topicId=2652356&p0=03c7c0ace395d80182db07ae2c30f034&en… 1/6
CCT0753_EX_A2_201802216618_V1
 
 
 
 ESTRUTURA DE DADOS 2a aula
 Lupa 
Vídeo
 
PPT
 
MP3
 
 
Exercício: CCT0753_EX_A2_201802216618_V1 20/02/2019 (Finaliz.)
Aluno(a): WALDIR DE SOUZA PINTO 2019.1 EAD
Disciplina: CCT0753 - ESTRUTURA DE DADOS 201802216618
 
 1a 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
 2; 2; 4
1; 2; 4
2; 2; 1
 
 
Explicação:
a recebeu o valor de x que era 2
b recebeu 3, a partir de y, que foi passado por referência.
 
Executando a função, passo a passo, tem-se :
a recebeu 1
 b recebeu 2
 a recebeu um novo valor, que é 4.
Daí a função retorna o valor de a, que é 4. 
Voltando para a main temos que z recebeu o retorno da função que é 4, x não se alterou, valendo 2 e y recebeu 4, devido a
alteração na função no parâmetro b, passado por referência.
 Daí, na tela será impresso : 2; 2; 4
 
09/04/2019 EPS
estacio.webaula.com.br/Classroom/index.html?id=2294224&classId=1132751&topicId=2652356&p0=03c7c0ace395d80182db07ae2c30f034&en… 2/6
 
 2a 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:
Os Grafos
As Estruturas de Dados
As Filas
Os Vetores
 As funções
 
 
 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; 12
2; 6
6; 14
 14; 6
4; 12
 
 
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. 
09/04/2019 EPS
estacio.webaula.com.br/Classroom/index.html?id=2294224&classId=1132751&topicId=2652356&p0=03c7c0ace395d80182db07ae2c30f034&en… 3/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
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
08 e 18
28 e 08
18 e 28
 28 e 18
 
 
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
09/04/2019 EPS
estacio.webaula.com.br/Classroom/index.html?id=2294224&classId=1132751&topicId=2652356&p0=03c7c0ace395d80182db07ae2c30f034&en… 4/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:
void func (int a, int &b);
int func (&int, int);
 int func (int a, int &b);
void func (int &a, int &b);
int func (int &a, int b);
Gabarito
 Coment.
 
 
 6a 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 13
4 e 12
2 e 9
4 e 9
9 e 16
 
 
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
 
 
 7a Questão
09/04/2019 EPS
estacio.webaula.com.br/Classroom/index.html?id=2294224&classId=1132751&topicId=2652356&p0=03c7c0ace395d80182db07ae2c30f034&en… 5/6
Considere o trecho de um programa escrito em C++.
void func1 (bool x, int ini, int fim) {
 for ( int y=ini; y != fim ; y++) {
 x = !x;
 if (x)
 cout << y << endl;
 else
 cout << -y << endl;
 }
}
int main() {
 func1(false, 1, 7);
}
Marque a opção correta que mostra o que é impresso na tela.
 1, -2, 3, -4, 5, -6
-1, 2, -3, 4, -5, 6
1, -2, -3, -4, -5, -6
1, 2, 3, 4, 5, 6
-1, -2, -3, -4, -5, -6
 
 
Explicação:
Fazendo um teste de mesa temos que será impresso a seguinte sequência : 1 -2 3 -4 5 -6, um embaixo do outro.
Parte de um teste de mesa :
 
x ini fim y
false 1 7 1
true 2
false 
E continua x, ini, fim e y recebendo valores
Tela :
1
-2
3
-4
5
-6
 
 
 
 
 
 8a Questão
Blocos únicos de códigos que realizam diversas tarefas distintas são de difícil manutenção. Portanto, utiliza-se a técnica da
modularização de programas, a fim de facilitar aimplementação e a manutenção dos programas. Esta técnica tem como principal
elemento:
Os Grafos
As Estruturas de Dados
Os Vetores
09/04/2019 EPS
estacio.webaula.com.br/Classroom/index.html?id=2294224&classId=1132751&topicId=2652356&p0=03c7c0ace395d80182db07ae2c30f034&en… 6/6
 As funções
As Filas

Continue navegando

Outros materiais