Buscar

Programação em C++: Estruturas de Repetição e Teste de Mesa

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 16 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 16 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 9, do total de 16 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

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)