Prévia do material em texto
Analise o trecho abaixo que um aluno desenvolveu na linguagem C++ e escolha a opção onde estão os valores que aprecem na tela. int x = 4, y = 14, t; float z; if( x < y ) { t=x; x=y; y=t;} z = (x % y) / y; cout << x << " " << y << " " << z ; Considere o trecho de programa em C++ e assinale a opção que mostra o que é impresso na tela. int x, y, z; x = 10; y = 6; z = x/y; cout << z << " "; if (z > 0) z = x % y; cout << z << " "; 1. 4 14 0.5 4 14 0 14 4 0.5 14 4 0 0.5 4 14 Explicação: O operador / quando ambos são inteiros resulta em um quociente inteiro 2. 1 4 Ocorrerá erro, pois o trecho não compila. 4 4 4 1 1 1 Explicação: Basta fazer teste de mesa. DEssa forma, atribuir os valores das variáveis, testar e ver o que é impresso. Considere o trecho de programa em C++. O que é impresso na tela ? int x = 10, y = 3, z, k; y = x + y - 1; z = x/y; k = y % x; if (k == 0) cout << "x = " << x << " y = " << y << " z = " << z << " k = " << k; else cout << x + 1 << " " << y - 1 << " " << z + 2 << " " << k - 2; Analise o código abaixo e marque as saídas corretas: #include < iostream > using namespace std; int main () { int x, i; x = 1; cout << x; i = 6; x = x + i; cout << x; if ( x <= 7) { cout << x; x = x + 10; } else { cout << x; } retun 0; } 3. 10 12 2 0 x = 10 y = 12 z = 0 k = 0 x = 10 y = 12 z = 0.833 k = 0 x= 11 y = 11 z = 2 k = 0 11 11 2 0 Explicação: É preciso fazer um teste de mesa ou chinês e encontrar a resposta correta, como indicado. Para isso, o conteúdo sobre comando condicional, atualmente, na aula 5, é suficiente, junto com declaração de variáveis de aula anterior. x recebe 10 e depois y recebe 3 e depois y recebe 10+3-1, que dá 12 z recebe 10/12, que dá 0 k recebe 2 TEste do if é falso. Então, entra-se no else e é impresso : 11 11 2 0 4. 0, 6 e 7 1, 7 e 7 Em linguagem de programação, existe uma estrutura que é empregada em situações em que é preciso tomar uma decisão a respeito de determinado resultado que será obtido em duas situações diversas. Marque a opção que determina a estrutura de controle citada: Para satisfazer a regra de que para fazer AV3 o aluno deve ter nota maior ou igual a 4 em pelo menos uma das outras duas Avaliacoes, qual seria a sentença correta 1, 7, 17 1, 6 e 16 1, 6 e 7 Explicação: int x, i; x = 1; cout << x; i = 6; x = x + i; cout << x; if ( x <= 7) { cout << x; x = x + 10; } else { cout << x; } Fazendo um teste de mesa, temos : x = 1 e depois é impresso o valor 1 i recebe 6 e então, x recebe 1+6, que dá 7. Então, 7 é impresso. Chegamos na condição do if e testamos se 7 <= 7. É verdade ? Sim. Então, 7 é impresso e depois, x recebe 7 + 10, que dá 17. Ou seja, foi impresso 1 7 7 5. Decisão Vetorial Repetição Matricial Recursiva Explicação: A opção que determina a estrutura de controle citada é a Decisão 6. Se (AV1 >= 4) e (AV2 >= 4) Se (AV1 >= 4) ou (AV2 >= 4) Se (AV1 > 4) e (AV2 > 4) Se (AV1 > 4) ou (AV2 > 4) Quando estudamos sobre a estrutura do se ... entao...senao, sempre nos é dito que, quando tivermos duas possibilidades de respostas, devemos escolher a estrutura do se composto ao invés de usar duas estruturas do se simples. Observe as afirmativas abaixo e, depois, escolha a resposta que respalda o uso do se composto pelo que foi dito acima ao invés do se simples. I Maior clareza no código, mas não influência na eficiência do mesmo II Maior eficiência porque diminui o número de testes no código III Maior eficiência somente porque o código fica mais legível, visto que o resultado final é o mesmo IV Somente uma escolha do desenvolvedor, visto que o resultado o resultado final é o mesmo Nenhuma outra alternativa satisfaz Explicação: Verdadeira Se (AV1 >= 4)ou (AV2 >= 4) Falsa. Tinha que ser >= e não apenas > Se (AV1 > 4) ou (AV2 > 4) FAlsa. Nâo tem que ter 4 ou mais nas duas provas, mas apenas em uma das provas. Se (AV1 >= 4) e (AV2 >= 4) FAlsa. Tinha que ser >= e no lugar do e tinha que se ou. Se (AV1 > 4) e (AV2 > 4) Falsa. A 1a. alternativa é a correta. Ou seja : Se (AV1 >= 4) ou (AV2 >= 4) Nenhuma outra alternativa satisfaz 7. A II E IV estão corretas Somente a IV está correta Somente a I está correta A II E A III estão corretas Somente a II está correta Explicação: I Maior clareza no código, mas não influência na eficiência do mesmo . Considere o trecho de programa em C++. O que é impresso na tela ? int x = 10, y = 3, z, k; y = x + y - 1; z = x/y; k = y % x; if ( k != 0) cout << "x = " << x << " y = " << y << " z = " << z << " k = " << k << "\n"; Comentário : Falso. Traz clareza e afeta a eficiência sim, pois acaba se fazendo testes desnecessários. II Maior eficiência porque diminui o número de testes no código Comentário : Correto. III Maior eficiência somente porque o código fica mais legível, visto que o resultado final é o mesmo. Comentário : Falso. Não é só legibilidade, mas é uma questão de eficiência, pois evita-se teste desnecessário. IV Somente uma escolha do desenvolvedor, visto que o resultado o resultado final é o mesmo Comentário : Falso. O desenvolvedor pode escolher sim, mas o uso adequado do condicional composto pode trazer maior eficiência para o código. Opção correta : Somente a II está correta 8. x= 10 y = 12 z = 0 k = 2 Nada é impresso na tela, pois k é zero. 10 12 0.833 1.2 x = 10 y = 12 z = 0.833 k = 1.2 10 12 0 2 Explicação: É preciso fazer um teste de mesa ou chinês e encontrar a resposta correta, como indicado. Para isso, o conteúdo da aula 5 é suficiente, junto com declaração de variáveis de aula anterior. int x = 10, y = 3, z, k; y = x + y - 1; z = x/y; k = y % x; if ( k != 0) cout << "x = " << x << " y = " << y << " z = " << z << " k = " << k << "\n"; Teste de mesa x y z k 10 3 12 0 2 y recebe 10+3-1, que é 12. Logo, y recebe 12 z recebe x/y, que é 10/12 que dá zero. k recebe 12%10, que dá 2. Como k é diferente de 0 temos que será impresso : x = 10 y = 12 z = 0 k = 2