Buscar

Simulado 1 - Aula 2

Prévia do material em texto

1a 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 III 
 
Apenas I e II 
 
Apenas I 
 
Apenas II 
 
 
 
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. 
 
 
 
 
 2a 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 
 
 
 
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.. 
 
 
 
 
 
 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 também o seguinte trecho de código no main : 
int x=2, y=3, z; 
z = func (x,y); 
cout << x << "; " << y<< "; " << z; 
Após a execução do cout, seria impresso: 
 
 2; 2; 1 
 
1; 3; 1 
 2; 2; 4 
 
1; 2; 4 
 
4; 2; 4 
 
 
 
Explicação: 
Começando a execução pela main, temos que x recebe 2 e y recebe 3. 
Chamando a função, são passados os valores 2 e 3, respectivamente para a e b. Note que b é passado por 
referência. 
Dentro da função tem-se o seguinte : 
a recebe 1, depois b recebe 2 e então, novamente, a é alterado e recebe 4. Daí, o valor de a igual a 4 é 
retornado para a main e é atribuído a z. 
Voltando para a main, temos que x não mudou, ficando igual a 2. Temos ainda que z recebeu 4, o valor 
retornado pela função e finalmente, y foi alterado para 2. 
Portanto, foi impresso 2;2;4, pois foram impressos os valores de x, y e z, respectivamente. 
 
 
 
 
 4a 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: 10 10 
 Valores: 31 01 
 Valores: 13 13 
 
 
 
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 
 
 
 
 
 5a 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. 
 
 
50 
 
30 
 
40 
 60 
 20 
7 
 
 
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. 
 
 
 
 
 6a Questão 
 
 
As variáveis em programação são utilizadas para armazenar um valor de determinado tipo em um espaço 
reservado na memória. Em algumas linguagens de programação podemos declarar, ou seja, reservar um 
espaço na memória, fora do escopo da função principal, e fora do escopo de qualquer outra função. Ao 
fazer a declaração desta forma estamos declarando uma variável do tipo: 
 
 Global 
 Constante 
 
Local 
 
Real 
 
Inteiro 
 
 
 
 
 
 
 7a 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 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. 
 
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 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. 
 
 
 
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. 
 
 
 
 
 8a Questão 
 
 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3690618307&cod_hist_prova=185009862&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3690618307&cod_hist_prova=185009862&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3690618307&cod_hist_prova=185009862&pag_voltar=otacka
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; 1 
 
1; 3; 1 
 
1; 2; 4 
 2; 2; 4 
 4; 2; 4 
 
 
 
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. 
Voltandopara 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

Continue navegando