Buscar

Introdução a programação estruturada em C- Exercícios- Aula 8- Estrutura de repetição com variável de controle

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 21 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 21 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 21 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

Aula 8- Estrutura de repetição com variável de controle
	1a Questão 
	
	
	
	   Marque a opção correta.  O que é impresso na tela ?
   int conta, x = 1, r = 1;
   for (conta = 2; conta >= 0; conta--) {
       r = r * x + 1;
        x += 2;
       cout << "r= "  << r << "  x = " << x << endl;
   }
 
		
	
	        r = 3 x = 2
r = 5 x = 7
	
	          r = 2 x = 3
r = 7 x = 5
r = 36 x = 7
	
	          r = 3 x = 4
r = 8 x = 6
r = 37 x = 7
	
	          r = 2 x = 3
r = 7 x = 5
	
	 
 r = 36 x = 7
	Respondido em 30/05/2020 00:29:12
	
Explicação: 
 int conta, x = 1, r = 1;
   for (conta = 2; conta >= 0; conta--) {
       r = r * x + 1;
        x += 2;
       cout << "r= "  << r << "  x = " << x << endl;
   }
 
	conta
	conta >= 0
	x
	 r 
	2
	sim
	1
	1
	 
	 
	3
	 2
	1
	sim
	5
	 7
	 
	 
	 
	 
	0
	sim
	7
	36
	 
	 
	 
	 
	-1
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
TELA
r = 2  x = 3
r = 7  x = 5
r = 36  x = 7
 
 
 
	
	
	 
	
	 2a Questão 
	
	
	
	
	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 1
 
	
	6 5 3 2 1
 
	
	5 6 3 2 1
 
	
	5 4 3 2 1
 
	
	6 5 2 3 2
 
	Respondido em 30/05/2020 00:49:29
	
Explicação: 
  int x;
   for (x = 5; x > 0; x--)
     if (x % 3 == 0)
        cout << x - 1 << " ";
     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
	
	
	 
	
	 3a Questão 
	
	
	
	
	
		
	
	50 e 9
	
	9 e 9
	
	50 e 16
	
	16 e 9
	
	o valor de s está indefinido e o valor de num é 7
	Respondido em 30/05/2020 01:03:24
	
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
	
	
	 
	
	 4a Questão 
	
	
	
	
	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.
 
Marque a alternativa que representa apenas as afirmativas CORRETAS:
		
	
	III
	
	I e III
	
	II, III e IV
	
	I e IV
	
	I
	Respondido em 30/05/2020 01:10:26
	
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.
	
	
	 
	
	 5a Questão 
	
	
	
	
	Imagine que você precisa escrever um programa em C++ que receba o sexo de 100 pessoas (F para Feminino ou M para Masculino). Ao final da leitura dos sexos, o programa precisa exibir as seguintes informações: quantidade de mulheres, quantidade de homens, percentual de mulheres e percentual de homens.
Observações: 1. O programa deve funcionar com "F" e "M" maiúsculos ou minúsculos; 2. A estrutura de repetição a ser utilizada deve ser FOR.
Sabendo disso, qual seria o trecho de repetição adequado para esse programa?
		
	
	for (int cont=1;cont<=100;cont++) {
  cout <<"Qual o sexo? ";
  cin >>sexo;
  if (sexo==F || sexo==f)
  { qtdeF++; }
  else if (sexo==M || sexo==m)
  { qtdeM++; }
}
	
	for (int cont=1;cont<=100;cont++) {
  cin <<"Qual o sexo? ";
  cout >>qtdeF;
  if (sexo==F && sexo==f)
  { qtdeF++; }
  else if (sexo==M || sexo==m)
  { qtdeM++; }
}
	
	for (int cont=1;cont>=100;cont--) {
  cout <<"Qual o sexo? ";
  if (sexo==F && sexo==f)
  { qtdeF++; }
  else if (sexo==M &&| sexo==m)
  { qtdeM++; }
}
	
	for (int cont=1;cont>=100;cont--) {
  cout <<"Qual o sexo? ";
  cin >>sexo;
  if (sexo==F && sexo==f)
  { qtdeF++; }
  else if (sexo==M || sexo==m)
  { qtdeM++; }
}
	
	for (int cont=1;cont<=100;cont++) {
  cout <<"Qual o sexo? ";
  cin >>qtdeF;
  if (sexo==F && sexo==f)
  { qtdeF--; }
  else if (sexo==M || sexo==m)
  { qtdeM--; }
}
	Respondido em 30/05/2020 01:15:15
	
	
	 
	
	 6a Questão 
	
	
	
	
	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;
      num++;
   }
   cout << "Prod = "  << prod << "  num = " << num << endl;
 
		
	
	 
Prod = 6 num = 5
	
	 
Prod não pode ser calculado e num assumirá o valor final 5.
	
	 
Prod = 6 num = 4
	
	 
             Prod = 1 num = 2
Prod = 2 num = 3
Prod = 6 num = 4
Prod = 24 num = 5
 
	
	Prod = 24 num = 5
	Respondido em 30/05/2020 01:23:18
	
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
 
 
	
	
	 
	
	 7a Questão 
	
	
	
	
	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;
        y = y + x;   
    }
    cout << "Numero: " << y << "\n";
    system("PAUSE");
    return 0;
}
		
	
	A soma dos elementos pares
	
	A soma de todos os elementos
	
	A quantidade de elementos digitados
	
	O maior de todos os elementos digitados
	
	A média dos elementos digitados 
	Respondido em 30/05/2020 01:28:26
	
Explicação: 
Antes do loop é lido um valor e armazenado em x e a cada rodada o valor de x é acumulado em um somatório, indicado na linha :
    y = y + x;
Assim, ao final do for, teremos em y o somatório de todos os números que x armazenou.
	
	
	 
	
	 8a Questão 
	
	
	
	
	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;
}
		
	
	16 e 9
	
	o valor de s está indefinido e o valor de num é 7
	
	50 e 9
	
	9 e 9
	
	50 e 16
	Respondido em 30/05/2020 01:29:07
	
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
 
	
	 
		
	
		1.
		
	
	
	
	o valor de s está indefinido e o valor de num é 7
	
	
	50 e 16
	
	
	50 e 9
	
	
	16 e 99 e 9
	
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
	
	
	
	 
		
	
		2.
		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 << " ";
	
	
	
	5 6 3 2 1
	
	
	6 3 4 1 2
	
	
	6 5 3 2 1
	
	
	5 4 3 2 1
	
	
	6 3 4 1 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.
 
	
	
	
	 
		
	
		3.
		Considere a estrutura for ( ; ; ), e assinale a afirmação correta:
	
	
	
	Não é executada, pois não tem condição de teste.
	
	
	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.
	
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.
	
	
	
	 
		
	
		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" );
}
	
	
	
	25 19 13 7 1 
	
	
	10 5 0 13 7 
	
	
	0 0 0 0 0 
	
	
	12 5 10 7 13 
	
	
	12 8 10 7 15 
	
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.
		Qual dos comandos abaixo permite que um bloco de comandos seja executado enquanto a variável num seja diferente de 0? 
	
	
	
	enquanto (num > 0) 
	
	
	while (num != 0) 
	
	
	while (num == 0) 
	
	
	for (i = num; i > 0; i++) 
	
	
	for ( i = 0; i == num; i++) 
	
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++)
	 
	 FAlsa.  Não inicializa ou testa corretamente.
	for (i = num; i > 0; i++)
	
	
 
	
	
	
	 
		
	
		6.
		Após análise do código responda a questão:
 
 
 
Ao ser compilado e executado, o programa irá exibir na tela:
	
	
	
	Os valores entre 1 e 5 (inclusive) em ordem decrescente.
	
	
	Os números pares entre 1 e 5 (inclusive) em ordem crescente.
	
	
	Os números ímpares entre 1 e 5 (inclusive) em ordem decrescente.
	
	
	Os números ímpares entre 1 e 5 em ordem decrescente.
	
	
	Os valores entre 1 e 5 (inclusive)em ordem crescente.
	
Explicação: 
	 
	 
	Verdadeira, visto que o programa imprimirá :
O valor de i e 5
O valor de i e 3
O valor de i e 1
Portanto em ordem decrescente incluindo o 5 e o 1.
	Os números ímpares entre 1 e 5 (inclusive) em ordem decrescente.
	 
	Falso. Não é entre apenas, pois inclui 5 e 1.
	Os números ímpares entre 1 e 5 em ordem decrescente.
	 
	FAlso.  É em ordem decrescente e imprime os ímpares e não os pares.
	Os números pares entre 1 e 5 (inclusive) em ordem crescente.
	 
	FAlso. Não é qualquer valor, mas apenas os ímpares de 5 a 1, incluindo 5 e 1.
	Os valores entre 1 e 5 (inclusive) em ordem decrescente.
	 
	FAlso. Não é qualquer valor, mas apenas os ímpares em ordem decrescente de 5 a 1.
	Os valores entre 1 e 5 (inclusive)em ordem crescente.
	
	
	
	 
		
	
		7.
		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 << " ";
 
 
	
	
	
	5 4 3 2 1
 
	
	
	6 5 3 2 1
 
	
	
	5 6 3 2 1
 
	
	
	6 5 2 3 1
 
	
	
	6 5 2 3 2
 
	
Explicação: 
  int x;
   for (x = 5; x > 0; x--)
     if (x % 3 == 0)
        cout << x - 1 << " ";
     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
	
	
	
	 
		
	
		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;
}
	
	
	
	A quantidade de elementos pares
	
	
	A média dos elementos digitados 
	
	
	A quantidade de elementos digitados
	
	
	O menor de todos os elementos digitados
	
	
	O maior 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
Logo : O programa calcula a média dos números digitados (diferente de zero)

Outros materiais