Baixe o app para aproveitar ainda mais
Prévia do material em texto
ESTRUTURA DE DADOS 2a aula Lupa Vídeo PPT MP3 Exercício: CCT0753_EX_A2_201801153345_V1 17/03/2019 (Finaliz.) Aluno(a): JORGIVALDO NOGUEIRA LEAL 2019.1 EAD Disciplina: CCT0753 - ESTRUTURA DE DADOS 201801153345 1a 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. 9 27 18 3 6 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.. 2a 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: 20 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: -200 Valor de B: 20 Valor de B dentro da função FUNC2: -200 Valor de B: 30 Explicação: A execução começa pela main. Na main, B recebe 10. E daí é impresso : Valor de B : 10 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 3a Questão Auxiliar = 100 Numero1 = 900 Numero2 = 20 Auxiliar = 111 Numero1 = 1000 Numero2 = 80 Auxiliar = 101 Numero1 = 900 Numero2 = 20 Auxiliar = 100 Numero1 = 1000 Numero2 = 20 Auxiliar = 100 Numero1 = 900 Numero2 = 80 Explicação: Acompanhando a execução Na função main() é declarada a variável valor e inicializada com 1000. Quando na main(), a função mistério é chamada, é passado o endereço da variável valor. Logo, de forma bem simples, v seria o nome da variável valor para a função misterio(...) Dentro da função misterio(...), foi declarada uma variável local aux com conteúdo 11 Sendo assim, aux = aux - 11; Deixará aux com 100 v = v - aux ; Deixará v com 900(1000 - 100) Como a variável numero foi declarada globalmente, todas as funções poderão acessá-la e, com isso, alterar seu valor, numero = aux - numero; Deixará numero com 80(100 - 20) Dentro da função misterio(...) será exibido Auxiliar = 100 e quando retornar à função main(), serão exibidos Numero1 = 900 Numero2 = 80 Resposta correta: Auxiliar = 100 Numero1 = 900 Numero2 = 80 Gabarito Coment. 4a Questão Considere a função Adivinhe , n = 4 e que X é formado pela sequência "algoritmo". Assinale a opção que corretamente mostra o vetor Y ao fim da execução da função Adivinhe. void Adivinhe (char X[ ], char Y [ ], int n) { int i, j; j = 0; for ( i = n; i >= 0; i--) { Y[j] = X[i]; j++; } Y[j] = '\0'; } algo algor rogla ogla Ocorre erro, pois a função, que é do tipo void, não retorna o vetor Y. Explicação: Não há outra opção, pois a questão é objetiva. Vejamos passo a passo : X armazena "algoritmo" e Y será gerado. j i 0 4 1 3 2 2 3 1 4 0 5 -1 ... falha o teste i >= 0 A cada rodada do loop temos, considerando os valores de j e i acima, as seguintes atribuições : Y[0] recebe X[4], que é 'r' Y[1] recebe X[3], que é 'o' Y[2] recebe X[2], que é 'g' Y[3] recebe X[1], que é 'l' Y[4] recebe X[0], que é 'a' Y[5] recebe '\0' Daí, Y será rogla 5a 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, 5, 8 2, 2, 9 2, 5, 10 3, 2, 8 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. 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. 6a Questão Na passagem por ____________________ , o endereço da variável da função chamadora é passado para a função chamada e, dessa forma, o valor poderá ser alterado, ou não. caracter valor número void referência Explicação: Esse é o conceito de passagem por referência. 7a 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; } 10 20 0 Haverá um erro de compilação 5 8a 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: Local Global Constante Real Inteiro Gabarito Coment.
Compartilhar