Você está na página 1de 18

Programao em linguagem C:

estruturas de repetio
TE207 Tcnicas de Programao em Engenharia Eltrica I
Prof. Vitor Yano DELT/UFPR vitoryano@gmail.com

Estrutura de repetio
Estrutura de repetio / lao / loop;
Repete um bloco de instrues de acordo com uma condio;
Trs estruturas:
while
do ... while
for

Estrutura while
instrues anteriores;

instrues anteriores

while(condio) {
corpo da repetio;
}
instrues posteriores;

condio?
Sim
corpo da repetio

instrues posteriores

No

Exemplo 1 (while):
#include <stdio.h>
int main() {
int num = 1;
while(num<=10) {
printf("%d\n",num);
num++;
}
return 0;
}

Exemplo 2 (while):
#include <stdio.h>
int main( ){
int linha = 1, coluna;
while (linha<5) {
coluna = 1;
while (coluna<5) {
printf("%3d", linha*coluna);
coluna++;
}
printf("\n");
linha++;
}
}

return 0;

Exemplo 3 (while):
#include <stdio.h>
int main( ){
int n;
printf("Digite um valor positivo: ");
scanf("%d",&n);
while(n<=0) {
printf("Digite um valor positivo: ");
scanf("%d",&n);
}
printf("OK!\n");
}

return 0;

Estrutura do...while
instrues anteriores;
instrues anteriores

do {
corpo da repetio;
} while(condio)
instrues posteriores;

corpo da repetio
Sim
condio?
No
instrues posteriores

Exemplo 4 (do...while):
#include <stdio.h>
int main( ){
int n;

do {

printf("Digite um valor positivo: ");


scanf("%d",&n);
} while(n<=0)

printf("OK!\n");
}

return 0;

Estrutura for
instrues anteriores;

instrues anteriores

for(inicializao;condio;atualizao) {
inicializao

corpo da repetio;
}

condio?

instrues posteriores;
Sim
atualizao

corpo da repetio

instrues posteriores

No

Exemplo 5 (for):
#include <stdio.h>
int main() {
int num;
for(num=1;num<=10;num++) {
printf("%d\n",num);
}
return 0;
}

Exemplo 6 (for):
#include <stdio.h>
int main() {
int num;
printf("Mltiplos de 7 at 100:\n");
for(num=0;num<=100;num+=7) {
printf("%d\n",num);
}
return 0;
}

Vantagens do for
O programador obrigado a declarar toda a lgica de execuo no cabealho;
Um erro muito comum no while o programador esquecer de inicializar ou
atualizar a varivel de controle;

As instrues de controle de repetio so claramente separadas das instrues


de execuo.

Usos
Toda estrutura de repetio escrita com while pode ser escrita com for e viceversa;
No caso do do...while, o corpo de repetio sempre executado pelo menos
uma vez;
Sugestes:
while: casos gerais, quando no h necessidade de inicializao ou atualizao ou
quando as mesmas requerem muitas instrues;
do ... while: quando o bloco de repetio deve ser executado pelo menos uma vez;
for: quando h um nmero definido de vezes para repetir e uma varivel
controladora.

Comandos break e continue


break: fora a interrupo da repetio;
continue: reinicia imediatamente a repetio;

Exemplo 7 (break):
#include <stdio.h>
int main() {
int cont, numero=0;
for(cont=1; cont<=2*6*9*11*19*55; count++) {
if((numero==0)&&(cont%2==0)&&(cont%6==0)&&(cont%9==0)&&
(cont%11==0)&&(cont%19==0)&&(cont%55==0))
numero=cont;
}
printf("O MMC : %d\n", numero);
return 0;
}

Exemplo 7 (break):
#include <stdio.h>
int main() {
int cont, numero;
for(cont=1; cont<=2*6*9*11*19*55; count++) {
if((cont%2==0)&&(cont%6==0)&&(cont%9==0)&&
(cont%11==0)&&(cont%19==0)&&(cont%55==0)) {
numero=cont;
break;
}
}
printf("O MMC : %d\n", numero);
}

return 0;

Exemplo 8 (continue):
#include <stdio.h>
#include <math.h>
int main() {
float angulo;
float pi = 3.14159265358979;
for (angulo = 0; angulo <= 180; angulo += 10) {
if (angulo == 90)
continue;
printf("tan(%f) = %f\n", angulo, tan(angulo/180*pi));
}
}

return 0;

Exerccios
Altere o programa do exerccio 1 da primeira lista de exerccios (programa da
tabuada) para imprimir os 100 primeiros mltiplos de um nmero entre 1 e 100
(validar a entrada).
Escreva um programa que leia 20 nmeros e escreva o maior entre eles;

Você também pode gostar