Escolar Documentos
Profissional Documentos
Cultura Documentos
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("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;
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.
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;