Comandos de Repetição de Blocos em C

Os comandos de repetição de blocos em linguagens de programação, também são conhecidos como comandos de iteração, ou comandos de laço ou ainda “loop” de instruções.
Estes comandos executam os blocos de instruções subordinados enquanto uma determinada condição permanecer como verdadeira.

Comando - for


O comando for é o mais utilizado quando devemos repetir a execução de um ou mais blocos de instruções, um determinado número de vezes.

Sintaxe:
for(inicialização; teste; incremento)
{
   instruções;
}

A primeira expressão é utilizada para a inicialização, onde normalmente é inicializada uma variável contadora.
A inicialização é executada somente uma vez, no momento em que o laço é ativado.
O teste, normalmente é uma expressão relacional, que testa a validade de nova execução do laço.
O incremento, modifica o valor da variável utilizada para controle do laço.
Normalmente é um incremento de 1 no valor da variável.

Exemplo:
#include <stdio.h>
#include <conio.h>

void main()
{
int i;
for(i=1;i<=10;i++)
{
printf("\n%d",i);
}
getch();
}

Exemplos Flexibilidade - for

#include <stdio.h>
#include <conio.h>

void main()
{
int x,y;
for(x=0,y=0; x+y<10; x++,y++)
{
printf("\n%d",x+y);
}
getch();
}

Outro Exemplo:
#include <stdio.h>
#include <conio.h>

void main()
{
char c;
for( ; (c=getch()) != 's'; )
{
printf("\n%c",c);
}
}

Exercício:
Faça um programa que leia uma string do teclado e após isso escreva ela invertida na tela do usuário.
Solução:
#include <stdio.h>
#include <conio.h>
#include <string.h>

void main()
{
char str[50];
int i;
printf("Entre com uma palavra: ");
gets(str);

for(i=(strlen(str)-1);i>=0;i--)
{
printf("%c",str[i]);
}
getch();
}

Fazer um programa, usando obrigatoriamente a estrutura for, que calcule  escreva o valor de S onde:
Solução:
#include <stdio.h>
#include <conio.h>

void main()
{
int num, den;
float s=0;

for(num=1,den=1;num<=99;num+=2,den++)
{
s = s + (float)num/den;
}
printf("%f",s);
getch();
}

Sem o (float) a divisão seria uma divisão inteira:

Faça um programa que leia 20 valores reais e escreva seu somatório (use a estrutura for):
Solução:
#include <stdio.h>
#include <conio.h>

void main()
{
int num,i, s=0;
printf("Entre com 5 numeros\n");

for(i=1;i<=5;i++)
{
scanf("%d",&num);
s = s + num;
}
printf("%d",s);
getch();
}

Comando - while


Comando normalmente utilizado quando é necessário repetir um bloco de instruções sem saber de antemão quantas vezes este bloco deverá ser executado.

Sintaxe:
while(condição)
{
   instruções;
}

Quando precisamos testar uma condição antes mesmo de iniciar a execução de um bloco de instruções devemos então utilizar o comando while com teste no início.

Exemplo:
#include <stdio.h>
#include <conio.h>

void main()
{
int i=1;
while(i <= 10)
{
printf("%d \n",i);
i++;
}
getch();
}

Exercício:
Faça um programa para calcular um valor A elevado a um expoente B. Os valores A e B deverão ser lidos, onde a > 0, b >= 0:
Solução:
#include <stdio.h>
#include <conio.h>

void main()
{
int a, b, resultado = 1;
printf("Entre com a base e o expoente: \n");
scanf("%d %d",&a,&b);
while(b > 0)
{
resultado = resultado * a;
b--;
}
printf("Resultado: %d",resultado);
getch();
}

Faça um programa para calcular N!, onde  N >= 0.
Solução:
#include <stdio.h>
#include <conio.h>

void main()
{
long int n, resultado=1;
printf("Entre com um numero: \n");
scanf("%ld",&n);

while(n > 0)
{
resultado = resultado * n;
n--;
}
printf("O fatorial eh igual a %ld",resultado);
getch();
}

Comando – do ... while

Para executar um bloco de instruções, subordinado a um laço de repetição, pelo menos uma vez, temos o comando do...while

Sintaxe:
do
{
   instruções;
}while (condição);

Exemplo:
#include <stdio.h>
#include <conio.h>

void main()
{
int i=1;

do
{
printf("\n %d",i);
i++;
}while(i <=10);
getch();
}

Exercícios:
Faça um programa para calcular a série Fibonacci até o vigésimo termo. A série tem a seguinte forma:  1,1,2,3,5,8,13,21,34,… (use obrigatoriamente a estrutura do...while).

Solução:
#include <stdio.h>
#include <conio.h>

void main()
{
int ant=1, prox=1, novo, cont=2;
printf("%d, %d",ant,prox);
do
{
novo = ant + prox;
printf(“, %d",novo);
ant = prox;
prox = novo;
cont++;
}while(cont <=20);
getch();
}

Faça um programa para ler um valor X e calcular Y = X+2X+3X+4X+5X+…+20X (use a estrutura do...while):

Solução:
#include <stdio.h>
#include <conio.h>

void main()
{
int x, y=0, i=1;
printf("Entre com um valor para x: ");
scanf("%d",&x);

do
{
y = y + (i * x);
i++;
}while(i <= 20);
printf("y = %d",y);
getch();
}

Comandos de Desvio de Execução:
Muitas vezes é necessário interromper o fluxo normal de processamento de um laço de repetição, independente deste laço ter sido implementado com for ou while.
Para fazer isso, temos dois comandos de desvio: o break e o continue.

O Comando break;
O comando break desvia o fluxo de processamento para fora do comando de repetição.
Mais precisamente, para a primeira linha após o término do comando de repetição.

O comando break pode ser tanto usado para terminar um teste case dentro de um comando switch quanto interromper a execução de um laço.


Quando o comando é utilizado dentro de um comando for o laço é imediatamente interrompido e o programa continua a execução no comando seguinte ao comando for.

No trecho de programa abaixo o comando for deve ler 100 números inteiros positivos. No entanto, se for digitado um número negativo o comando for é interrompido imediatamente sem que o número seja impresso.

for (i = 0; i <100; i++)
{
   scanf("%d", &um);
   if (num < 0) break;
   printf("%d\n", num);
}

O Comando continue;
O comando continue transfere o fluxo de processamento para o teste do comando de repetição.
Usando o continue com o for, antes do teste de associado ao for ser verificado ocorre o incremento das variáveis na seção de incremento do for.

O comando continue é parecido com o comando break. A diferença é que o comando continue interrompe a execução da iteração corrente passando para a próxima iteração do laço, se houver uma. No comando for o controle passa para o teste e o incremento do laço sejam executados, nos comandos while e do-while o controle passa para a fase de testes.
No trecho de programa abaixo o laço lê 100 números inteiros, caso o número seja negativo ele um novo número é lido.

for (i = 0; i < 100; i++)
{
  scanf("%d", &num);
  if (num < 0) continue;
  printf("%d\n", num);
}

Exemplo:
void main()
{
   float idade, total_idade=0, total_pessoa=0;
   char resp;
   while(1)
   {
      printf("\nIDADE: ");
      scanf("%f",&idade);
      if(idade <= 0)
      {
  printf("\nIdade Invalida, deseja continuar?(s/n)");
  resp = getche();
  if(resp == 's')
     continue;
  else break;
  }
       else{
  total_idade += idade;
  total_pessoa++;
}
   }
   printf("\nA Media de Idade e %f",(total_idade/total_pessoa));
   getch();
}

Exercício:
Altere o programa que calcula o fatorial de um número, de maneira que seja perguntado ao usuário se ele deseja calcular ou não o fatorial de um próximo número.

Solução:
void main()
{
double n, resultado;
char c;

while(1)
{
resultado = 1;
printf("Entre com um numero: \n");
scanf("%lf",&n);

while(n > 0)
{
resultado = resultado * n;
n--;
}
printf("O fatorial eh igual a %lf \n",resultado);
printf("\nDeseja Continuar(s/n)? ");
c = getch();
if(c == 's')
continue;
else break;
clrscr();
}
}




O Comando continue em C

O comando continue transfere o fluxo de processamento para o teste do comando de repetição.
Usando o continue com o for, antes do teste de associado ao for ser verificado ocorre o incremento das variáveis na seção de incremento do for.

O comando continue é parecido com o comando break. A diferença é que o comando continue interrompe a execução da iteração corrente passando para a próxima iteração do laço, se houver uma. No comando for o controle passa para o teste e o incremento do laço sejam executados, nos comandos while e do-while o controle passa para a fase de testes.
No trecho de programa abaixo o laço lê 100 números inteiros, caso o número seja negativo ele um novo número é lido.

for (i = 0; i < 100; i++)
{
  scanf("%d", &num);
  if (num < 0) continue;
  printf("%d\n", num);
}

Exemplo:
void main()
{
   float idade, total_idade=0, total_pessoa=0;
   char resp;
   while(1)
   {
      printf("\nIDADE: ");
      scanf("%f",&idade);
      if(idade <= 0)
      {
   printf("\nIdade Invalida, deseja continuar?(s/n)");
   resp = getche();
   if(resp == 's')
      continue;
   else break;
   }
       else{
   total_idade += idade;
   total_pessoa++;
}
   }
   printf("\nA Media de Idade e %f",(total_idade/total_pessoa));
   getch();
}

Exercício:


Altere o programa que calcula o fatorial de um número, de maneira que seja perguntado ao usuário se ele deseja calcular ou não o fatorial de um próximo número.

Solução:
void main()
{
double n, resultado;
char c;

while(1)
{
resultado = 1;
printf("Entre com um numero: \n");
scanf("%lf",&n);

while(n > 0)
{
resultado = resultado * n;
n--;
}
printf("O fatorial eh igual a %lf \n",resultado);
printf("\nDeseja Continuar(s/n)? ");
c = getch();
if(c == 's')
continue;
else break;
clrscr();
}
}

O Comando break em C

O comando break desvia o fluxo de processamento para fora do comando de repetição.
Mais precisamente, para a primeira linha após o término do comando de repetição.

O comando break pode ser tanto usado para terminar um teste case dentro de um comando switch quanto interromper a execução de um laço.
Quando o comando é utilizado dentro de um comando for o laço é imediatamente interrompido e o programa continua a execução no comando seguinte ao comando for.



No trecho de programa abaixo o comando for deve ler 100 números inteiros positivos. No entanto, se for digitado um número negativo o comando for é interrompido imediatamente sem que o número seja impresso.

for (i = 0; i <100; i++)
{
   scanf("%d", &um);
   if (num < 0) break;
   printf("%d\n", num);
}

O Comando continue;
O comando continue transfere o fluxo de processamento para o teste do comando de repetição.
Usando o continue com o for, antes do teste de associado ao for ser verificado ocorre o incremento das variáveis na seção de incremento do for.

O comando continue é parecido com o comando break. A diferença é que o comando continue interrompe a execução da iteração corrente passando para a próxima iteração do laço, se houver uma. No comando for o controle passa para o teste e o incremento do laço sejam executados, nos comandos while e do-while o controle passa para a fase de testes.
No trecho de programa abaixo o laço lê 100 números inteiros, caso o número seja negativo ele um novo número é lido.

for (i = 0; i < 100; i++)
{
  scanf("%d", &num);
  if (num < 0) continue;
  printf("%d\n", num);
}

Exemplo:
void main()
{
   float idade, total_idade=0, total_pessoa=0;
   char resp;
   while(1)
   {
      printf("\nIDADE: ");
      scanf("%f",&idade);
      if(idade <= 0)
      {
   printf("\nIdade Invalida, deseja continuar?(s/n)");
   resp = getche();
   if(resp == 's')
      continue;
   else break;
   }
       else{
   total_idade += idade;
   total_pessoa++;
}
   }
   printf("\nA Media de Idade e %f",(total_idade/total_pessoa));
   getch();
}

Exercício:
Altere o programa que calcula o fatorial de um número, de maneira que seja perguntado ao usuário se ele deseja calcular ou não o fatorial de um próximo número.

Solução:
void main()
{
double n, resultado;
char c;

while(1)
{
resultado = 1;
printf("Entre com um numero: \n");
scanf("%lf",&n);

while(n > 0)
{
resultado = resultado * n;
n--;
}
printf("O fatorial eh igual a %lf \n",resultado);
printf("\nDeseja Continuar(s/n)? ");
c = getch();
if(c == 's')
continue;
else break;
clrscr();
}
}

Comando – do ... while em C

Para executar um bloco de instruções, subordinado a um laço de repetição, pelo menos uma vez, temos o comando do...while

Sintaxe:
do
{
   instruções;
}while (condição);

Exemplo:
#include <stdio.h>
#include <conio.h>

void main()
{
int i=1;

do
{
printf("\n %d",i);
i++;
}while(i <=10);
getch();
}

Exercícios:


Faça um programa para calcular a série Fibonacci até o vigésimo termo. A série tem a seguinte forma:  1,1,2,3,5,8,13,21,34,… (use obrigatoriamente a estrutura do...while).

Solução:
#include <stdio.h>
#include <conio.h>

void main()
{
int ant=1, prox=1, novo, cont=2;
printf("%d, %d",ant,prox);
do
{
novo = ant + prox;
printf(“, %d",novo);
ant = prox;
prox = novo;
cont++;
}while(cont <=20);
getch();
}

Faça um programa para ler um valor X e calcular Y = X+2X+3X+4X+5X+…+20X (use a estrutura do...while):

Solução:
#include <stdio.h>
#include <conio.h>

void main()
{
int x, y=0, i=1;
printf("Entre com um valor para x: ");
scanf("%d",&x);

do
{
y = y + (i * x);
i++;
}while(i <= 20);
printf("y = %d",y);
getch();
}

Comandos de Desvio de Execução:
Muitas vezes é necessário interromper o fluxo normal de processamento de um laço de repetição, independente deste laço ter sido implementado com for ou while.
Para fazer isso, temos dois comandos de desvio: o break e o continue.

Comando - while em C

Comando normalmente utilizado quando é necessário repetir um bloco de instruções sem saber de antemão quantas vezes este bloco deverá ser executado.

Sintaxe:
while(condição)
{
   instruções;
}


Quando precisamos testar uma condição antes mesmo de iniciar a execução de um bloco de instruções devemos então utilizar o comando while com teste no início.

Exemplo:
#include <stdio.h>
#include <conio.h>

void main()
{
int i=1;
while(i <= 10)
{
printf("%d \n",i);
i++;
}
getch();
}

Exercício:
Faça um programa para calcular um valor A elevado a um expoente B. Os valores A e B deverão ser lidos, onde a > 0, b >= 0:
Solução:
#include <stdio.h>
#include <conio.h>

void main()
{
int a, b, resultado = 1;
printf("Entre com a base e o expoente: \n");
scanf("%d %d",&a,&b);
while(b > 0)
{
resultado = resultado * a;
b--;
}
printf("Resultado: %d",resultado);
getch();
}

Faça um programa para calcular N!, onde  N >= 0.
Solução:
#include <stdio.h>
#include <conio.h>

void main()
{
long int n, resultado=1;
printf("Entre com um numero: \n");
scanf("%ld",&n);

while(n > 0)
{
resultado = resultado * n;
n--;
}
printf("O fatorial eh igual a %ld",resultado);
getch();
}

 
Design by Wordpress Theme | Bloggerized by Free Blogger Templates | JCPenney Coupons