Baixe o app para aproveitar ainda mais
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
Compartilhar