Baixe o app para aproveitar ainda mais
Prévia do material em texto
1a 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 III estão corretas Somente II está correta Somente II e IV estão corretas Somente I e II estão corretas Respondido em 02/04/2020 15:03:34 Gabarito Coment. 2a 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 = 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 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 = 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 valor Respondido em 02/04/2020 15:03:53 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. 3a Questão Assinale a alternativa que apresenta duas formas de passagem de parâmetros para uma rotina ou função: Por inferência e por valor. Por valor e por referência Por teste e por reforço. Por memória e por disco. Por reforço e por referência. Respondido em 02/04/2020 15:04:11 Explicação: Questão super objetiva. Só pode ser por valor e por referência. Gabarito Coment. 4a 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 6; 14 14; 6 4; 12 2; 6 Respondido em 02/04/2020 15:04:20 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. 5a 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: Nenhuma está correta Apenas I Apenas II Apenas III Apenas I e II Respondido em 02/04/2020 15:04:19 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. 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; n = 5; dobro(n); cout << n; return 0; } 0 10 5 Haverá um erro de compilação 20 Respondido em 02/04/2020 15:04:36 7a 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 02/04/2020 15:04:44 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 O programa não executa corretamente pois as funções devem ser descritas antes da função main(), para que o compilador consiga reconhecê-las. O programa executa perfeitamente, mas não mostra o valor da media já que esta função não foi chamada na função main( ). O programa não executa corretamente, pois 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 executa perfeitamente independente da ordem das funções já que existem os seus protótipos. Respondido em 02/04/2020 15:05:01 Gabarito Coment.
Compartilhar