Baixe o app para aproveitar ainda mais
Prévia do material em texto
CCT0753_EX_A2_200801097536_V1 ESTRUTURA DE DADOS 2a aula Lupa Vídeo PPT MP3 Exercício: CCT0753_EX_A2_200801097536_V1 14/08/2018 11:21:21 (Finalizada) Aluno(a): GABRIEL MARINHO PINHEIRO WEBLER 2018.3 EAD Disciplina: CCT0753 - ESTRUTURA DE DADOS 200801097536 Ref.: 200802272203 1a Questão Caso uma estrutura homogênea (vetor) seja passada como parâmetro para uma função, então: Essa passagem é "por valor" Todos os valores contidos no vetor são copiados para a função Haverá um erro de compilação, pois vetores não podem ser parâmetros de funções Essa passagem pode ser "por valor" ou "por referência" Essa passagem é "por referência" Explicação: Quando o vetor é um parâmetro de uma função ele é sempre passado por referência, não havendo outra possibilidade. Não ocorrerá erro, se o vetor for devidamente passado para a função. Ref.: 200801202569 2a Questão Assinale a opção certa. Quando não se escreve o protótipo de uma função ... A chamada da função poderá ser feita em qualquer hipótese. A definição da função deverá ser escrita, obrigatoriamente, após o programa principal. A chamada da função não poderá ser feita em qualquer hipótese. É preciso definir a função antes do programa principal. O programa não funcionará de forma alguma. Ref.: 200802291493 EPS http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?num_s... 1 of 6 14/08/2018 12:46 3a Questão Considere o trecho de um programa escrito em C++ : int func1 (int n1, int n2) { int soma=0; for ( ; n1 < n2 ; n1 += 2) { soma += n1; } return soma; } main() { cout << func1(1.20); } Marque a opção correta que mostra o que é impresso na tela. 90 100 80 104 102 Explicação: int func1 (int n1, int n2) { int soma=0; for ( ; n1 < n2 ; n1 += 2) { soma += n1; } return soma; } main() { cout << func1(1,20); } Fazendo passo a passo : n1 n2 soma 1 20 0 3 1 5 4 7 9 9 16 11 25 13 36 15 49 17 64 19 81 21 ... Teste dará falso 100 EPS http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?num_s... 2 of 6 14/08/2018 12:46 Retorna o valor 100 que é impresso na main. Ref.: 200801937433 4a 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 4 e 9 2 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 Ref.: 200802291505 EPS http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?num_s... 3 of 6 14/08/2018 12:46 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. 40 20 30 60 50 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. Ref.: 200803941279 EPS http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?num_s... 4 of 6 14/08/2018 12:46 6a 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: 10 10 Valores: 13 10 Valores: 31 01 Valores: 13 13 Explicação: Acompanhando passo a passo a execução do trecho dado temos : 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"); } A execução começa pela main e os valores 13 e 10 são passados para a função na chamada em troca(a,b); Ao iniciar a execução em troca, temos que x recebe 13 e y recebe 10. Mas x e y são parâmetros passados por valor então, nada ocorrerá com a e b na main. ASsim, após a função terminar sua execução e voltarmos para a main temos a seguinte impressão na tela : Valores : 13 10 Ref.: 200802133169 7a 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 III Apenas II Apenas I e II EPS http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?num_s... 5 of 6 14/08/2018 12:46 Apenas I Nenhuma está correta 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. Ref.: 200801748957 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 a implementação e a manutenção dos programas. Esta técnica tem como principal elemento: As funções As Estruturas de Dados Os Vetores As Filas Os Grafos EPS http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?num_s...6 of 6 14/08/2018 12:46
Compartilhar