Buscar

Exércicio 02 Estrutura de dados

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 6 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 6 páginas

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.

Continue navegando

Outros materiais