Académique Documents
Professionnel Documents
Culture Documents
14 Estruturas de Repetio
A linguagem C possui comandos para repetir uma sequncia de instrues.
Estas estruturas de repetio, tambm conhecidas como laos (do
ingls loops). A principal construo que veremos o while2
Sada:
contador = 0
contador = 1
contador = 2
contador = 3
contador = 4
ACABOU !!!!
continua na sentena que segue o lao (no caso, imprimir a frase ACABOU
!!!).
Aps a execuo do while, a varivel contador tem valor 5.
No exemplo acima, h uma sentena simples no corpo da repetio. Quando
este for definido por uma sentena composta (bloco), no se deve esquecer de
usar as chaves ({ e }) para delimitar o bloco da sentena composta.
O exemplo seguinte mostra um uso mais apropriado do comando while: Em
situaes onde o nmero de repeties no conhecido antes do inico do
comando while:
Exemplo 1:
Este programa pede nmeros ao usurio at que a soma de todos os nmeros
digitados for pelo menos 20.
#include <stdio.h>
main( ){
int total = 0, num;
while( total < 20 ) {
printf( "Total = %d\n", total );
printf( "Entre com um numero: " );
scanf( "%d", &num );
total += num;
}
printf( "Final total = %d\n", total );
}
Exemplo de sada:
Total
Entre
Total
Entre
Total
Entre
Final
= 0
com um numero: 3
= 3
com um numero: 8
= 11
com um numero: 15
total = 26
A regra principal ser consistente. Assim, seu programa ser mais legvel.
14.2.1 Colocao das chaves
H trs estilos comuns de colocar as chaves:
while (expressao)
{
sentenca;
}
while (expressao)
{
sentenca;
}
while (expressao) {
sentenca;
}
Embora as chaves possam ser omitidas, h uma nica razo para coloc-las
sempre:
while( i < 5 ) {
i += 1;
}
ou
while (i<5)
ou
while( i < 5 )
Isto tambm uma escolha pessoal. Porm seja consistente em sua escolha !
14.2.4 Laos aninhados
possvel colocar um lao dentro de outro (lao aninhado).
Exemplo 2:
#include <stdio.h>
int main( ){
int linha, coluna;
linha = 1;
while (linha < 5)
{
coluna = 1;
while (coluna < 5)
{
printf( "%3d", linha * coluna );
coluna += 1;
}
linha += 1;
}
printf( "\n" );
}
Sada:
1
2
2
4
3
6
4
8
3
4
6 9 12
8 12 16
No exemplo acima, para cada iterao do lao externo, o lao interno imprime
uma linha com nmeros e depois pula de linha.
Exemplo 3:
Este exemplo parecido com o anterior, exceto que o printf() colocado
dentro do lao interno. Como era de se esperar uma nova linha impressa
aps cada valor ao invs de ser depois de 4 valores.
#include <stdio.h>
int main( ){
int linha, coluna;
linha = 1;
while (linha < 5)
{
coluna = 1;
while (coluna < 5)
{
printf( "%3d", linha * coluna );
printf( "\n" );
coluna += 1;
}
linha += 1;
}
}
Sada:
1
2
3
4
2
4
6
8
3
6
9
12
4
8
12
16
Exemplo 4:
#include <stdio.h>
int main( ){
Sada:
*
**
***
****
*****
******
*******
********