Você está na página 1de 6

25/05/2020 EPS

ESTRUTURA DE DADOS
Lupa
2a aula
PPT MP3

Exercício: CCT0826_EX_A2_201901306054_V1 22/05/2020

Aluno(a): JONATAS RICIANO SILVEIRA 2020.1 EAD

Disciplina: CCT0826 - ESTRUTURA DE DADOS 201901306054

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?

2; 2; 4
1; 2; 4
2; 2; 1
1; 3; 1
4; 2; 4
Respondido em 23/05/2020 22:28:16

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

simulado.estacio.br/alunos/?user_cod=2253538&matr_integracao=201901306054 1/6
25/05/2020 EPS

2a 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 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 protótipo da função.
o escopo das variáveis do programa.
Respondido em 23/05/2020 22:29:10

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.

3a 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: 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: 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: 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
Respondido em 23/05/2020 22:38:42

Explicação:

A execução começa pela main. Na main, B recebe 10. E daí é impresso : Valor de B : 10

simulado.estacio.br/alunos/?user_cod=2253538&matr_integracao=201901306054 2/6
25/05/2020 EPS
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

4a Questão

Ao definirmos uma função, podemos afirmar:

I Toda função tem parâmetros

II Quando nada retorna, o po é void


III Quando todos os parâmetros são do mesmo po, é suficiente usar o po 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 afirma vas acima, escolha a opção correta.

Somente I e II estão corretas


Somente II e III estão corretas
Somente II está correta
Somente II e IV estão corretas
Somente II III e IV estão corretas
Respondido em 23/05/2020 22:39:24

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() {
simulado.estacio.br/alunos/?user_cod=2253538&matr_integracao=201901306054 3/6
25/05/2020 EPS
int a = 13, b = 10;

troca( a, &b );

cout<<"Valores: "<< a<<"\t"<< b<< endl;

system("pause");

Valores: 31 01
Valores: 13 10
Valores: 10 10
Valores: 10 13
Valores: 13 13
Respondido em 23/05/2020 22:40:09

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

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 I e II
Apenas II
Nenhuma está correta
Apenas III
Respondido em 23/05/2020 22:41:08

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

Considera a FUNÇÃO abaixo:

void inverte(int &x, int &y)


{ int aux = x;
x = y;
y = aux; }

simulado.estacio.br/alunos/?user_cod=2253538&matr_integracao=201901306054 4/6
25/05/2020 EPS
Quais valores serão impressos na tela quando o seguinte programa principal for executado?
int main()
{ int a = 18, b = 28;
inverte(a, b);
cout << a <<" e "<< b;
return 0; }

18 e 28
28 e 08
08 e 18
28 e 18
18 e 18
Respondido em 23/05/2020 22:42:38

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.

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;

4, 5, 9
3, 2, 8
3, 5, 8
2, 2, 9
2, 5, 10
Respondido em 23/05/2020 22:43:02

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.


simulado.estacio.br/alunos/?user_cod=2253538&matr_integracao=201901306054 5/6
25/05/2020 EPS
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.

simulado.estacio.br/alunos/?user_cod=2253538&matr_integracao=201901306054 6/6