Prévia do material em texto
1. O que o trecho de programa em C++ abaixo imprime na tela ? int y; for (y = 5; y > 0; y--) if (y % 2 == 0) cout << y - 1 << " "; else cout << y + 1 << " "; 6 3 4 1 1 5 6 3 2 1 6 5 3 2 1 6 3 4 1 2 5 4 3 2 1 Explicação: FAzer teste de mesa. A cada rodada do loop atribuir um valor a y e testar se o valor de y é par. Se for par, deverá ser impresso o valor do antecessor de y. Caso contrário, deverá ser impresso o valor do sucessor de y. 2. As estruturas de repetição permitem executar mais de uma vez um mesmo trecho de código. Trata- se de uma forma de executar blocos de comandos somente sob determinadas condições, mas com a opção de repetir o mesmo bloco quantas vezes forem necessárias. As estruturas de repetição são úteis, por exemplo, para repetir uma série de operações semelhantes que são executadas para todos os elementos de uma lista ou de uma tabela de dados, ou simplesmente para repetir um mesmo processamento até que uma certa condição seja satisfeita. Sejam as seguintes afirmativas: I - Toda estrutura de repetição apresenta um teste no início e um na saída. II - Toda estrutura de repetição pode ser substituída por um conjunto de estruturas de decisão, onde não haja testes ou condições. III - Toda estrutura de repetição apresenta um critério de parada. IV- Toda estrutura de repetição apresenta fluxo de execução invertido devido a diversas iterações. http://simulado.estacio.br/bdq_simulados_exercicio.asp http://simulado.estacio.br/bdq_simulados_exercicio.asp Marque a alternativa que representa apenas as afirmativas CORRETAS: III I I e IV II, III e IV I e III Explicação: I - Toda estrutura de repetição apresenta um teste no início e um na saída. Falso. Ou no início ou no fim. II - Toda estrutura de repetição pode ser substituída por um conjunto de estruturas de decisão, onde não haja testes ou condições. Falso. São estruturas diferentes. III - Toda estrutura de repetição apresenta um critério de parada. Verdadeiro. IV- Toda estrutura de repetição apresenta fluxo de execução invertido devido a diversas iterações. Falso. 3. Qual dos comandos abaixo está escrito de forma errada? for (X=0 , Y=0 ; X < 10 ; X++ , Y=Y+2) for (X=0 ; X < 10 ; X++) for (X < 10 ; X=0 ; X++) for (X=0 , Y=4 ; X < 10 ; X++ , Y--) for (X=10 ; X > 0 ; X--) Explicação: http://simulado.estacio.br/bdq_simulados_exercicio.asp Está correto. Temos a inicialização, o teste e a parte do incremento for (X=0 ; X < 10 ; X++) Está correto. Temos duas inicializações separadas por vírgula e incremento e decremento separados por vírgula. E ainda o teste corretamente. for (X=0 , Y=4 ; X < 10 ; X++ , Y--) Está correto. Temos a inicialização, o teste e a parte dodecremento. for (X=10 ; X > 0 ; X--) Está correto. Temos duas inicializações separadas por vírgula e incremento e decremento separados por vírgula. E ainda o teste corretamente. for (X=0 , Y=0 ; X < 10 ; X++ , Y=Y+2) A sintaxe desta opção está incorreta e portanto, deve ser marcada. O teste lógico e a inicialização estão trocados de lugar. for (X < 10 ; X=0 ; X++) 4. O que será impresso, após a execução do código, a seguir? #include < iostream > using namespace std; int main() { for(int i=25;i>0;i=i-6) cout << i << " "; system( "pause" ); } 10 5 0 13 7 25 19 13 7 1 0 0 0 0 0 12 8 10 7 15 12 5 10 7 13 http://simulado.estacio.br/bdq_simulados_exercicio.asp Explicação: Analisando o trecho do programa : for(int i = 25 ;i>0 ;i=i-6) cout << i << " "; Façamos um teste de mesa : i i > 0 ? 25 sim 19 sim 13 sim 7 sim 1 sim -5 não TELA : 25 19 13 7 1 5. Marque a opção correta. Considere o trecho de programa feito em C++. O valor final de s e o valor final de num, são respectivamente: int conta, num=1, s=0; for(conta = 10; conta < = 40; conta= conta+10){ s= s+num; num= num +2; } 50 e 16 16 e 9 50 e 9 o valor de s está indefinido e o valor de num é 7 http://simulado.estacio.br/bdq_simulados_exercicio.asp 9 e 9 Explicação: Acompanhe o teste de mesa : num s conta conta <= 10 ? 1 0 10 sim 3 1 20 sim 5 4 30 sim 7 9 40 sim 9 16 50 não Logo, s vale 16 e num vale 9 6. 9 e 9 o valor de s está indefinido e o valor de num é 7 50 e 16 50 e 9 16 e 9 http://simulado.estacio.br/bdq_simulados_exercicio.asp Explicação: conta num s conta <= 40 ? 10 1 0 sim 20 3 0 + 1 , que dá 1 sim 30 5 1 + 3, que dá 4 sim 40 7 4 + 5, que é 9 sim 50 9 9 + 7, que é 16 Falso ! Valor final de s é 16 e o valor final de num é 9 7. Analise o trecho do código abaixo, e indique a saída obtida se for lido o valor 5 para n: cin>>n; total=0; for (i=15; i>n; i-=2) { total+=i; } cout < < total;<total;< p=""> </total;<> 39 63 60 55 48 Explicação: Considerando o trecho e n sendo 5 : http://simulado.estacio.br/bdq_simulados_exercicio.asp cin>>n; total=0; for (i=15; i>n; i-=2) { total+=i; } cout < < total; temos o teste de mesa : n total i 5 0 15 0 + 15 que é 15 13 15 + 13 que é 28 11 28 + 11 que é 39 9 39 + 9 que é 48 7 48 + 7 que é 55 5 ( 5 > 5 dá falso) Logo, total é 55 8. Se você desejasse escrever um programa em C++ que recebesse um número qualquer e exibisse a sua tabuada, precisaria da seguinte repetição: para (cont=10;cont<=0;cont++) { escreva(num," x ",cont," = ",num*5,"\n")} para (cont=0;cont<=10;cont++) { escreva(num," x ",cont," = ",num*cont,"\n")} para (cont=0;cont<=10;cont++) { escreva(num," x ",cont," = ",cont*cont,"\n")} para (cont=10;cont<=0;cont--) { escreva(num," x ",cont," = ",num*cont,"\n")} para (cont=0;cont<=10;num++) { escreva(num," x ",cont," = ",num*num,"\n")} http://simulado.estacio.br/bdq_simulados_exercicio.asp 1. Considere a estrutura for ( ; ; ), e assinale a afirmação correta: Não é executada, pois não tem variável. Não é executada pois não tem incremento. Tem a sintaxe incorreta. É um laço infinito. Não é executada, pois não tem condição de teste. Explicação: Verdadeiro É um laço infinito. Falso. É possível para loops infinitos ou quase infinitos Tem a sintaxe incorreta. FAlso. É possível para loops infinitos ou quase infinitos Não é executada, pois não tem variável. Falso. O teste pode ser feito dentro do for. Não é executada, pois não tem condição de teste. Falso. O incremento pode ser posto dentro do for. Não é executada pois não tem incremento. 2. Marque a opção correta. Considere o trecho de programa feito abaixo em C++. O que é impresso na tela ? int conta, num = 1, prod = 1; for (conta = 4; conta > 0; conta--) { prod = prod *num; http://simulado.estacio.br/bdq_simulados_exercicio.asp http://simulado.estacio.br/bdq_simulados_exercicio.asp num++; } cout << "Prod = " << prod << " num = " << num << endl; Prod = 6 num = 5 Prod = 24 num = 5 Prod = 1 num = 2 Prod = 2 num = 3 Prod = 6 num = 4 Prod = 24 num = 5 Prod = 6 num = 4 Prod não pode ser calculado e num assumirá o valor final 5. Explicação:Analisando o trecho e fazendo em seguida um teste de mesa : int conta, num = 1, prod = 1; for (conta = 4; conta > 0; conta--) { prod = prod *num; num++; } cout << "Prod = " << prod << " num = " << num << endl; TESTE de mesa : conta conta > 0 num prod 4 4 > 0 ? sim 1 1 3 3 > 0 ? sim 2 1 2 2 > 0 ? sim 3 2 1 1 > 0 ? sim 4 6 0 0 > 0 ? FAlso 5 24 Terminando o for, será impresso : Prod = 24 num = 5 3. O que o trecho de programa em C++ abaixo imprime na tela ? int x; for (x = 5; x > 0; x--) if (x % 3 == 0) cout << x - 1 << " "; else cout << x + 1 << " "; 6 5 2 3 2 5 4 3 2 1 6 5 3 2 1 5 6 3 2 1 6 5 2 3 1 Explicação: int x; for (x = 5; x > 0; x--) if (x % 3 == 0) cout << x - 1 << " "; http://simulado.estacio.br/bdq_simulados_exercicio.asp else cout << x + 1 << " "; Analisando o trecho dado e fazendo teste de mesa : x x > 0 ? (x % 3 == 0) ? 5 5 > 0 ? sim 5 % 3 é zero ? Não. Imprime 6 4 4 > 0 ? sim 4 % 3 é zero ? não. Imprime 5 3 3 > 0 ? Sim 3 % 3 é zero ? sim. Imprime 2 2 2 > 0 ? sim 2 % 3 é zero ? não. Imprime 3 1 1 > 0 ? sim 1 % 3 é zero ? não. Imprime 2 0 0 > 0 ? não TELA 6 5 2 3 2 4. Leia atentamente o trecho de código abaixo e diga o que ele retornaria ao usuário: int main ( ) { int i; double x, y = 0; for (i = 0; i < 10; i++){ cout << "Digite um numero: "; cin >> x; if ((x % 2) == 1){ y = y + x; } } cout << "Numero: " << y << "\n"; system("PAUSE"); return 0; } O maior de todos os elementos digitados A quantidade de elementos digitados A soma dos elementos ímpares A média dos elementos digitados A soma de todos os elementos http://simulado.estacio.br/bdq_simulados_exercicio.asp Explicação: Comentando o programa : double x, y = 0; //inicializa o somatório for (i = 0; i < 10; i++){ cout << "Digite um numero: "; cin >> x; //lê número e armazena em x if ((x % 2) == 1){ //testa se x é ímpar. Se for então faz a acumulação em y, ou seja, gera um somatório com o valor de cada x y = y + x; } } cout << "Numero: " << y << "\n"; //imprime y que acumulou a soma dos valores armazenados em x, ou seja, os valores ímpares 5. Ao fazer um programa de computador, algumas estruturas precisam ser utilizadas. Assinale a alternativa correta para que um programa repita 200 vezes um bloco de comandos através da estrutura de repetição FOR na linguagem C++. for (int i=0, i <= 200, i++) for (int i=0; i <= 200; i++) for (int i=0; i =< 200; i++) for (int i=0; i < 200; i++) for ( i=0; i <= 200; i++) Explicação: Verdadeira for (int i=0; i < 200; i++) Falsa. Entraremos 201 vezes no bloco do for, pois i começou de 0 e é <= no teste do for. for (int i=0; i <= 200; i++) http://simulado.estacio.br/bdq_simulados_exercicio.asp FAlsa. A variável i não foi declarada. for ( i=0; i <= 200; i++) Falsa. Não existe =< for (int i=0; i =< 200; i++) Falsa. Uso indevido do for. Não se põe vírgula e sim ponto e vírgula. for (int i=0, i <= 200, i++) 6. Após a execução do trecho de código, abaixo, quais números serão exibidos na tela? for(int i=3; i<100; i=i+19) cout << " " << i; 3 22 41 60 79 99 3 22 41 59 79 98 3 23 40 60 79 98 3 23 42 61 80 99 3 22 41 60 79 98 Explicação: Considerando o trecho for(int i = 3; i<100; i = i+19) cout << " " << i; fazendo passo a passo : i i < 100 ? 3 3 < 100 ? Sim 3+ 19 é 22 22 < 100 ? Sim 22+ 19 é 41 41 < 100 ? Sim 41 + 19 é 60 60 < 100 ? sim http://simulado.estacio.br/bdq_simulados_exercicio.asp 60 + 19 é 79 79 < 100 ? sim 79 + 19 é 98 98 < 100 ? sim 98 + 19 é 117 117 < 100 ? falsa. Então não entra no loop TELA 3 22 41 60 79 98 7. Qual dos comandos abaixo permite que um bloco de comandos seja executado enquanto a variável num seja diferente de 0? while (num == 0) for ( i = 0; i == num; i++) for (i = num; i > 0; i++) enquanto (num > 0) while (num != 0) Explicação: verdadeira while (num != 0) FAlsa. Diferente é !=. Nesta opção está "enquanto num é igual a zero." while (num == 0) FAlsa. Nesta opção está "enquanto num for maior que zero" enquanto (num > 0) Falsa. Teste incorreto no for. == é para teste de igualdade. for ( i = 0; i == num; i++) http://simulado.estacio.br/bdq_simulados_exercicio.asp FAlsa. Não inicializa ou testa corretamente. for (i = num; i > 0; i++) 8. Leia atentamente o trecho de código abaixo e diga o que ele retornaria ao usuário: int main ( ) { int i = 0; double x, y = 0; cout << "Digite um numero: "; cin >> x; while (x != 0){ i = i + 1; y = y + x; cout << "Digite um numero: "; cin >> x; } y = y / i; cout << "Numero: " << y << "\n"; system("PAUSE"); return 0; } O maior de todos os elementos digitados A média dos elementos digitados A quantidade de elementos pares A quantidade de elementos digitados O menor de todos os elementos digitados Explicação: int i = 0; //inicializa a quantidade de elementos digitados diferentes de zero double x, y = 0; // y inicializa o somatorio dos valores de entrada cout << "Digite um numero: "; cin >> x; //Lê o primeiro valor while (x != 0){ //Enquanto o valor de entrada não for zero i = i + 1; //conta mais um número lido y = y + x; //acumula o valor de x em y, gerando o somatório dos números lidos e armazenados em x cout << "Digite um numero: "; cin >> x; //Lê o proóximo número } y = y / i; //Divide a soma dos números lidos não nulos por i ( i é o total de números lidos não nulos) cout << "Numero: " << y << "\n"; //Imprime a média armazenada em y http://simulado.estacio.br/bdq_simulados_exercicio.asp Logo : O programa calcula a média dos números digitados (diferente de zero)