Buscar

Introdução a programação estruturada em C- Exercícios- Aula 7- Estrutura de repetição com pré-teste e com pós-teste

Prévia do material em texto

Aula 7: Estrutura de repetição com pré-teste e com pós-teste
	
	
	
		1.
		Considere que uma refeição saudável envolve o consumo máximo de 550 calorias. Sabendo disso, você deseja escrever um programa que, a partir da quantidade de calorias consumidas em uma refeição, informe se você ultrapassou esse valor ou permaneceu dentro do limite. Para fazer o cálculo do consumo total, você precisará que seja digitado o valor calórico de cada elemento. Como não se sabe exatamente quantos alimentos diferentes foram consumidos, considere que será digitado 0 quando não houver mais consumo a ser informado. Ao final do programa, é necessário exibir o consumo total de calorias e informar se foi ultrapassado o valor sugerido por refeição, se o usuário permaneceu dentro do limite ou se consumiu exatamente a quantidade de calorias sugerida. Qual das alternativas a seguir apresenta a estrutura repetitiva adequada para este problema? 
 
	
	
	
	while (cont!=0) {
  cont++; totCalorias+=0;
  cout<< "Informe as calorias do alimento " << cont <<": ";
  cin>> calAlimento;
}
	
	
	while (calAlimento!=0) {
  cont++; totCalorias+=calAlimento;
  cout<< "Informe as calorias do alimento " << cont <<": ";
  cin>> calAlimento;
}
	
	
	while (calAlimento!=0) {
  cont++; totCalorias+=calAlimento;
  cin<< "Informe as calorias do alimento " << cont <<": ";
  cout>> calAlimento;
}
	
	
	for (calAlimento!=0) {
  cont++; totCalorias+=calAlimento;
  cout<< "Informe as calorias do alimento " << cont <<": ";
  cin>> calAlimento;
}
	
	
	do (calAlimento!=0) {
  cont++; totCalorias+=calAlimento;
  cout<< "Informe as calorias do alimento " << cont <<": ";
  cin>> calAlimento;
}
	
	
	
	 
		
	
		2.
		Considere o seguinte problema: Uma turma precisa escolher seu representante. Sabendo que existem apenas dois candidatos, identificados pelas letras A e B, receba o número do aluno e o candidato por ele escolhido e contabilize os votos de cada um. A leitura de votos será finalizada quando o número do aluno informado for 0.
A linha inicial da estrutura repetitiva com pré-teste capaz de controlar o recebimento dos votos é:
 
	
	
	
	while (num!=0)
	
	
	if (num!=0)
	
	
	while (num==0)
	
	
	for (num<=0)
	
	
	do (num!=0)
	
	
	
	 
		
	
		3.
		Em relação às técnicas de programação e construção de algoritmos, assinale a alternativa que apresente corretamente duas características da estrutura de controle repetir ... até que.
	
	
	
	O teste de controle é realizado no início da estrutura / a saída da estrutura de repetição ocorre quando o resultado do teste é verdadeiro.
	
	
	As instruções no loop são executadas pelo menos uma vez / a saída da estrutura de repetição ocorre quando o resultado do teste é verdadeiro.
	
	
	O teste de controle é realizado no fim da estrutura / a saída da estrutura de repetição ocorre quando o resultado do teste é verdadeiro.
	
	
	A execução permanece no loop enquanto o resultado do teste for falso / a saída da estrutura de repetição ocorre quando o resultado do teste é verdadeiro.
	
	
	A execução permanece no loop enquanto o resultado do teste for verdadeiro / a saída da estrutura de repetição ocorre quando o resultado do teste é falso.
	
Explicação:
A execução permanece no loop enquanto o resultado do teste for verdadeiro / a saída da estrutura de repetição ocorre quando o resultado do teste é falso.
	
	
	
	 
		
	
		4.
		Assinale a alternativa correta em relação a quantidade de vezes que a palavra "ALGORITMO" será impressa, no trecho de código abaixo:
cont = 0;
while( cont < 30 ) {
   cout << "ALGORITMO" << endl;
   cont = cont + 1;
}
	
	
	
	Nenhuma das alternativas.
	
	
	29
	
	
	15
	
	
	30
	
	
	31
	
Explicação:
Fazendo passo a passo :
cont = 0;
while( cont < 30 ) {
   cout << "ALGORITMO" << endl;
   cont = cont + 1;
}
	variável cont
	Teste cont < 30 ? Sim ou não ?
	0
	0 < 30 ? sim
	1
	1 < 30 ? sim
	2
	2 < 30 ? Sim
	3
	3 < 30 ? Sim
	4
	4 < 30 ? Sim
	5
	5 < 30 ? sim
	6
	6 < 30 ? sim
	7
	7 < 30 ? sim
	continuando até 29 
	 29  < 30 ? Sim
	30
	30 < 30 ? Não. Falso.  Não entra no while
Note que entrou 30 vezes no corpo do while e a cada vez que entrou imprimiu ALGORITMO
TELA
ALGORITMO
ALGORITMO
ALGORITMO
ALGORITMO
ALGORITMO
ALGORITMO
ALGORITMO
ALGORITMO
ALGORITMO
ALGORITMO
ALGORITMO
ALGORITMO
ALGORITMO
ALGORITMO
ALGORITMO
ALGORITMO
ALGORITMO
ALGORITMO
ALGORITMO
ALGORITMO
ALGORITMO
ALGORITMO
ALGORITMO
ALGORITMO
ALGORITMO
ALGORITMO
ALGORITMO
ALGORITMO
ALGORITMO
ALGORITMO
>>>>>>>>>>>>>>>>>>  Logo, imprimiu 30 vezes a palavra   ALGORITMO
 
	
	
	
	 
		
	
		5.
		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 diferente de zero : ";
    cin >> x;
    while (x != 0){
        i = i + 1;
        y = y + x;
        cout << "Digite um numero diferente de zero: ";
        cin >> x;
    }
    y = y / i;
    cout << "Numero: " << i << "\n";
    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 diferentes de zero.
	
	
	O menor de todos os elementos digitados
	
Explicação:
A condição para entrar no loop e contar é x ser diferente de zero. O que será exibido ao final do programa é a quantidade i calculada.
Note que o primeiro valor de x digitado é testado, então entra-se no loop e logo depois, este valor é contado através do uso de i que é incrementado.  Claro que x é manipulado, tendo seu valor somado com o valor de y, mas ao final do programa a quantidade i é impressa.  Se o valor zero for digitado, ele não será contado.
	
	
	
	 
		
	
		6.
		O trecho de código a seguir utiliza uma estrutura de repetição do tipo  for . Marque a alternativa que apresenta de forma correta o mesmo trecho utilizando a estrutura de repetição while.
Seja:
for( int i=3; i<100; i+=2)
     cout <<   i ;
 
	
	
	
	   int i;
    while (i<100) {
         cout << i;
         i=3;
         i=i+2;
    }
	
	
	   int i;
    i=3;
    while (i<100)   {
      cout << i;
      i=i+2;
 }
	
	
	   int i;
    while (i<100) {
       i=3;
      cout << i;
      i=i+2;
   }
	
	
	    int i;
    i=3;
    while(i<100)   
     cout << i;
      i=i+2;
   
	
	
	    int i;
    i=3;
    while(i<100)
    {
         i=i+2;
        cout << i;
    }
	
Explicação:
A estrutura dos dois comandos é a seguinte :
 inicialização, teste lógico, incremento/decremento e o trecho da repetição.
conforme aula e gabarito.
 
	
	
	
	 
		
	
		7.
		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:
	
	
	
	while
	
	
	for/while
	
	
	for
	
	
	do/for
	
	
	do/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.
	
	
	
	 
		
	
		8.
		A partir da comparação entre as estruturas while e do...while, é certo afirmar que:
	
	
	
	Dependendo da condição de teste, em ambos os casos o bloco de comandos controlado poderá não ser executado.
	
	
	No do...while, o bloco de comandos controlado poderá não ser executado. Enquanto que no while o bloco de comandos será sempre executado, pelo menos uma vez.
	
	
	Em termos de execução não há diferença. A diferença está, apenas, na sintaxe.
	
	
	Dependendo da condição de teste, em ambos os casos o bloco de comandos controlado será sempre executado, pelo menos uma vez.
	
	
	No while, o bloco de comandos controlado poderá não ser executado. Enquanto que no do...while o bloco de comandoscontrolado será sempre executado, pelo menos uma vez.
	
Explicação:
	Falso.  No do/while primeiro se faz o que está no corpo do loop para depois testar e no while, se testa para depois fazer o queestá no corpo do loop.
	Em termos de execução não há diferença. A diferença está, apenas, na sintaxe.
	 
	Falso. No do/while o bloco de instruções será feito pelo menos 1 vez.
	No do...while, o bloco de comandos controlado poderá não ser executado. Enquanto que no while o bloco de comandos será sempre executado, pelo menos uma vez.
	 
	 Verdadeiro
	No while, o bloco de comandos controlado poderá não ser executado. Enquanto que no do...while o bloco de comandos controlado será sempre executado, pelo menos uma vez.
	 
	Falso.  No while pode não ser executado nenhuma vez.
	Dependendo da condição de teste, em ambos os casos o bloco de comandos controlado será sempre executado, pelo menos uma vez.
	 
	Falso. No do/while as instruções serão feitas pelo menos 1 vez.
	Dependendo da condição de teste, em ambos os casos o bloco de comandos controlado poderá não ser executado
	
	
	
	 
		
	
		1.
		Em relação às técnicas de programação e construção de algoritmos, assinale a alternativa que apresente corretamente duas características da estrutura de controle repetir ... até que.
	
	
	
	O teste de controle é realizado no fim da estrutura / a saída da estrutura de repetição ocorre quando o resultado do teste é verdadeiro.
	
	
	O teste de controle é realizado no início da estrutura / a saída da estrutura de repetição ocorre quando o resultado do teste é verdadeiro.
	
	
	As instruções no loop são executadas pelo menos uma vez / a saída da estrutura de repetição ocorre quando o resultado do teste é verdadeiro.
	
	
	A execução permanece no loop enquanto o resultado do teste for falso / a saída da estrutura de repetição ocorre quando o resultado do teste é verdadeiro.
	
	
	A execução permanece no loop enquanto o resultado do teste for verdadeiro / a saída da estrutura de repetição ocorre quando o resultado do teste é falso.
	
Explicação: 
A execução permanece no loop enquanto o resultado do teste for verdadeiro / a saída da estrutura de repetição ocorre quando o resultado do teste é falso.
	
	
	
	 
		
	
		2.
		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?
	
	
	
	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)
	
	
	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;
}
	
	
	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;
}
	
	
	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;
}
	
	
	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;
}
	
	
	
	 
		
	
		3.
		A estrutura de dados de iteração na qual uma ação será executada pelo menos uma vez, antes da avaliação da condição, é implementada pelo comando básico
	
	
	
	de atribuição
	
	
	condicional
	
	
	de seleção
	
	
	de repetição
	
	
	sequencial
	
Explicação: 
A estrutura de dados de iteração na qual uma ação será executada pelo menos uma vez, antes da avaliação da condição, é implementada pelo comando básico de repetição
	
	
	
	 
		
	
		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 <= 200; cont+=2)
{  cout << "Estamos na " << cont << "a. rodada..."; }
	
	
	for (int cont=10; cont <= 0; cont++)
{  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.
		O trecho de código a seguir utiliza uma estrutura de repetição do tipo  for . Marque a alternativa que apresenta de forma correta o mesmo trecho utilizando a estrutura de repetição while.
Seja:
for( int i=3; i<100; i+=2)
     cout <<   i ;
 
	
	
	
	    int i;
    i=3;
    while(i<100)
    {
         i=i+2;
        cout << i;
    }
	
	
	    int i;
    i=3;
    while(i<100)   
     cout << i;
      i=i+2;
   
	
	
	   int i;
    i=3;
    while (i<100)   {
      cout << i;
      i=i+2;
 }
	
	
	   int i;
    while (i<100) {
       i=3;
      cout << i;
      i=i+2;
   }
	
	
	   int i;
    while (i<100) {
         cout << i;
         i=3;
         i=i+2;
    }
	
Explicação: 
A estrutura dos dois comandos é a seguinte :
 inicialização, teste lógico, incremento/decremento e o trecho da repetição.
conforme aula e gabarito.
 
	
	
	
	 
		
	
		6.
		A partir da comparação entre as estruturas while e do...while, é certo afirmar que:
	
	
	
	No while, o bloco de comandos controlado poderá não ser executado. Enquanto que no do...while o bloco de comandos controlado será sempre executado, pelo menos uma vez.
	
	
	No do...while, o bloco de comandos controlado poderá não ser executado. Enquanto que no while o bloco de comandos será sempre executado, pelo menos uma vez.
	
	
	Dependendo da condição de teste, em ambos os casos o bloco de comandos controlado poderá não ser executado.
	
	
	Dependendo da condição de teste, em ambos os casos o bloco de comandos controlado será sempre executado, pelo menos uma vez.
	
	
	Em termos de execução não há diferença. A diferença está, apenas, na sintaxe.
	
Explicação: 
	Falso.  No do/while primeiro se faz o que está no corpo do loop para depois testar e no while, se testa para depois fazer o queestá no corpo do loop.
	Em termos de execução não há diferença. A diferença está, apenas, na sintaxe.
	 
	Falso. No do/while o bloco de instruções será feito pelo menos 1 vez.
	No do...while, o bloco de comandos controlado poderá não ser executado. Enquanto que no while o bloco de comandos será sempre executado, pelo menos uma vez.
	 
	 Verdadeiro
	No while, o bloco de comandos controlado poderá não ser executado. Enquanto que no do...while o bloco de comandos controlado será sempre executado, pelo menos uma vez.
	 
	Falso.  No while pode não ser executado nenhuma vez.
	Dependendo da condição de teste, em ambos os casos o bloco de comandos controlado será sempre executado, pelo menos uma vez.
	 
	Falso. No do/while as instruções serão feitas pelo menos 1 vez.
	Dependendo da condição de teste, em ambos os casos o bloco de comandos controlado poderá não ser executado
	
	
	
	 
		
	
		7.
		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.
	
	
	
	 
		
	
		8.
		Considere o seguinte problema: Uma turma precisa escolher seu representante. Sabendo que existem apenas dois candidatos, identificados pelas letras A e B, receba o número do aluno e o candidato por ele escolhido e contabilize os votos de cada um. A leitura de votos será finalizada quando o número do aluno informado for 0.
A linha inicial da estrutura repetitiva com pré-teste capaz de controlar o recebimento dos votos é:
 
	
	
	
	while (num!=0)
	
	
	while (num==0)
	
	
	if (num!=0)
	
	
	do (num!=0)
	
	
	for (num<=0)

Continue navegando