Prévia do material em texto
Na execução do comando while o teste da condição que controla a execução, ou não, dos comandos subordinados, é feito, sempre, antes de cada iteração. Desta forma, é correto afirmar que: Independentemente da condição de teste, os comandos subordinados sempre serão executados. Os comandos subordinados serão executados no mínimo uma vez. A condição de teste deverá ser sempre verdadeira antes do início da execução. Os comandos subordinados poderão não ser executados. A condição de teste deverá ser sempre falsa antes do início da execução. Explicação: No comando enquanto primeiro se testa a condição para depois se executar o corpo da repetição. Se a condição for falsa nada dentro do corpo da repetição será executado. 2. A fim de possibilitar a implementação de algoritmos estudamos algumas estruturas básicas, como estrutura de desvio de fluxo, estrutura de repetição etc. Entre as estrutura de repetição há uma na qual uma ação será executada pelo menos uma vez, antes da avaliação da condição. Esta estrutura é implementada em C++ pelo comando básico: do/for do/while for for/while while Explicação: O comando do...while faz para depois testar. Então, o bloco a ser repetido será executado pelo menos uma vez antes de testarmos a condição. Os comando for ou while, temos que testar antes de fazer. 3. Considere o trecho de programa em C++ abaixo. Marque a opção que, corretamente, mostra o que é impresso na tela. int x, y, z; x = 5; y = 20; while (x <= y) { z = x + y; x = x + 5; } cout << z << endl; 25 30 20 35 40 Explicação: Analisando passo a passo... x recebe 5 e y recebe 20 1o. teste ... 5 <= 20 ? sim. Entra no loop e faz : z recebe 25 x recebe 5+5, que dá 10 2o. teste ... 10 <= 20 ? sim. Entra no loop e faz : z recebe 30 x recebe 15 3o. teste ... 15 <= 20 ? sim. Entra no loop e faz : z recebe 35 x recebe 20 4o. . teste ... 20 <= 20 ? sim. Entra no loop e faz : z recebe 40 x recebe 25 5o. teste ... 25 <= 20 ? Falso. Depois do fim do while será impresso o valor de z que é 40. 4. A linguagem de programação C++ dispõe de três estruturas de repetição: do..while, while e for. Pensando na maneira como cada uma delas funciona, observe o trecho de código a seguir: Qual das alternativas a seguir, escritas com a estrutura for, equivale à estrutura while anterior? for (cont++; cont <= 10; int cont=0) { cout << "Estamos na " << cont << "a. rodada..."; } for (int cont=10; cont <= 0; cont++) { cout << "Estamos na " << cont << "a. rodada..."; } for (int cont=10; cont <= 200; cont+=2) { cout << "Estamos na " << cont << "a. rodada..."; } for (int cont=0; cont <= 10; cont++) { cout << "Estamos na " << cont << "a. rodada..."; } for (int cont=0; cont <= 10; cont+=2) { cout << "Estamos na " << cont << "a. rodada..."; } 5. Qual a estrutura de repetição mais indicada para os casos em que é necessário que o bloco de código a ser repetido seja sempre repetido pelo menos uma vez? while do do{ }while repeat until for{} while{} Explicação: O comando do... while deixa fazer para depois testar. Logo, é feita apenas 1 vez. No caso do comando while ou for, é possível não entrarmos no bloco do loop nenhuma vez. 6. Assinale a opção que corresponde à condição da estrutura de repetição que faz com que o programa abaixo imprima 4 vezes a expressão Bom dia. int a = 8; while ( ____ ) { cout << "Bom dia\n"; a = a -2; } a == 0 a < 0 a >= 0 a > 0 a <= 0 Explicação: Analisando o trecho temos que : · a variável a funciona como contador e começa com 8. · a variável a varia de 2 em 2. Assim : · quando a é 8 imprime-se Bom dia (Logo após ele vai decaindo, ou seja a= a-2 --> a= 8-2 = 6) · quando a é 6 imprime-se Bom dia (Logo após ele vai decaindo, ou seja a= a-2 --> a= 6-2 = 4) · quando a é 4 imprime-se Bom dia (Logo após ele vai decaindo, ou seja a= a-2 --> a= 4-2 = 2) · quando a é 2 imprime-se Bom dia (Logo após ele vai decaindo, ou seja a= a-2 --> a= 2-2 = 4) porém como já imprimiu 4 vezes ele para. · quando a for zero não se pode mais imprimir Bom dia, pois já se imprimiu 4 vezes, como visto acima. Logo, a opção certa é : a > 0, pois quando a for zero (a=0), a repetição irá terminar. Lembrando que a não pode ser 0 pois já terá impresso 4 vezes bom dia. 7. Imagine que você precisa escrever um programa em C++ que receba uma sequência de números e, para cada número informado, diga se ele é par ou ímpar. Essa sequência se encerra quando o usuário digitar 0 e você precisa utilizar uma estrutura repetitiva com pré-teste. Qual dos trechos a seguir atenderia essa solicitação? for (num==0; num!=0; num--) { if (num%2==0) { cout <<"Este número é par.\n"; } else { cout <<"Este número é ímpar.\n"; } cout <<"Informe um número qualquer: "; cin >>num; } while (num!=0) { if (num%2==0) { cin <<"Este número é par.\n"; } else { cin <<"Este número é ímpar.\n"; } cin <<"Informe um número qualquer: "; cout >>num; } for (num!=0) { switch (num%2==0) { cout <<"Este número é par.\n"; } switch { cout <<"Este número é ímpar.\n"; } cout <<"Informe um número qualquer: "; cin >>num; } do { if (num%2==0) { cout <<"Este número é par.\n"; } else { cout <<"Este número é ímpar.\n"; } cout <<"Informe um número qualquer: "; cin >>num; } while (num!=0) while (num!=0) { if (num%2==0) { cout <<"Este número é par.\n"; } else { cout <<"Este número é ímpar.\n"; } cout <<"Informe um número qualquer: "; cin >>num; } 8. Considere o trecho abaixo sabendo que num é um variável inteira. num = 11; do { if (num % 2 == 0) cout << num << "\n"; num = num -1 ; } while (num != 0); Assinale a opção correta : o trecho fornecido pára quando num for diferente de zero e são exibidos os valores 10 e 8, pelo menos. O trecho entra em loop. O trecho fornecido pára quando num for diferente de zero e o único número exibido é o 10. O trecho fornecido pára quando num for zero e os números exibidos são todos os pares de 10 até 0, nesta ordem. O trecho fornecido pára quando num for zero e os números exibidos são todos os pares de 10 até 2, nesta ordem. Explicação: 1a. opção está correta. Veja o teste de mesa : num num % 2 é igual a zero ? num é diferente de zero ? 11 11 % 2 é 1. Logo, é falso o teste do if. 10 10 diferente de 0 ? sim 10 % 2 é zero ? sim. Imprime o 10 9 9 é diferente de 0 ? sim 9 % 2 é zero ? Não 8 8 é diferente de zero ? sim 8 % 2 é zero ? Sim. Imprime o 8 7 7 é diferente de zero ? sim 7 % 2 é zero ? Não 6 6 % 2 é zero ? Sim. Imprime o 6 e decrementa para 5 valor de num 6 é diferente de zero ? sim E assim continua ... irá parar quando num for zero... Note que está imprimindo os pares de 10 até 2, pois quando decrementa num para zero, o teste do do...while falha. Imprimirá os números 10 8 6 4 2 , um embaixo do outro. 2a. opção é falsa. Pára quando o valor de num for zero, mas não imprime o valor 0, justamente pelo já explicado no item anterior. 3a. opção é falsa. Pára quando o valor de num for zero. Além disso, é um loop, então imprimem-se vários níumeros como mostrado na explicação da 1a. opção. 4a. opção é falsa. Como mostrado no 1o. item, vários números são impressos : os números 10 8 6 4 2 , um embaixo do outro. 5a. opção é falsa. Falso. Como mostrado no1o. item, vários números são impressos : os números 10 8 6 4 2 , um embaixo do outro. Ocorre a parada do loop quando num for zero.