[CAPÍTULO 1] - [CAPÍTULO 2] - [CAPÍTULO 3]
[PARTE 1] - [PARTE 2] - [PARTE 3] - [PARTE 4] - [PARTE 5] - [PARTE 6] - [PARTE 7] - [PARTE 8]
[PARTE 1] - [PARTE 2] - [PARTE 3] - [PARTE 4] - [PARTE 5] - [PARTE 6] - [PARTE 7] - [PARTE 8]
Controle de Fluxo: Laços e Desvios Incondicionais
Laços:
Em C, há três comandos de ITERAÇÃO ou LAÇOS:-
for -
while -
do ... while
for) ou com o final em aberto (como nos laços while e do ... while).
Laço for:
FORMA GERALfor( INICIALIZAÇÃO ; CONDIÇÃO ; INCREMENTO ) COMANDO;
-
INICIALIZAÇÃO- geralmente um comando de atribuição para colocar um valor na variável de controle do laço; -
CONDIÇÃO- é uma expressão relacional que determina quando o laço acaba; -
INCREMENTO- define como a variável de controle do laço varia cada vez que o laço é repetido; -
COMANDO- um único comando ou um bloco de comandos executados enquato aCONDIÇÃOé verdadeira.
VARIAÇÕES
1. Operador Vígula - uma das variações mais comuns é o uso do operador vírgula para permitir que duas ou mais variáveis controlem o laço:
for( x = 0 , y = 100 ; x < y ; x ++ , y -= x )
printf("x = %i, y = %i\n",x,y);
2. Laço infinito - Nenhuma das três expressões que formam um laço
for é obrigatória. Assim, você pode criar um laço infinito assim:for ( ; ; )
printf(" Laço infinito \n");
3. Laço sem corpo - Um comando pode ser vazio. Isso significa que o corpo do laço
for (ou qualquer outro laço) também pode ser vazio.int pausa ( unsigned long int p) {
for ( t = 0 ; t < p ; t++ )
;
}
Laço while
FORMA GERALwhile( CONDIÇÃO ) COMANDO;
COMANDO é executado enquanto a CONDIÇÃO for verdadeira ( diferente de zero ); quando for falsa, o controle passa para a linha após COMANDO. VARIAÇÕES
1. Laço infinito :
while ( 1 )
printf(" Laço infinito \n");
2. Laço sem corpo.
int pausa ( unsigned long int p) {
while ( p-- )
;
}
Laço do ... while
Ao contrário dos laços for e while, que testam a condição do laço no começo, o laço do ... while verifica a condição ao final do laço. Isso significa que um laço do ... while SEMPRE SERÁ EXECUTADO AO MENOS UMA VEZ.FORMA GERAL
do {
COMANDO;
} while( CONDIÇÃO );
Embora as chaves não sejam necessárias quando apenas um comando está presente, elas são geralmente usadas para evitar confusão (para você, não para o compilador) com o
while.O laço
do ... while repete até que a CONDIÇÃO se torne falsa.VARIAÇÕES
1. Laço infinito :
do{
printf(" Laço infinito \n");
} while ( 1 )
2. Laço sem corpo.
int pausa ( unsigned long int p) {
do {} while ( p-- );
}
Desvios Incondicionais:
-
return -
goto -
break -
continue
O comando return
Este comando é usado para retornar de uma função. Ele é um comando de desvio porque faz com que a execução retorne (salte de volta) ao ponto em que a chamada à função foi feita. Se
return tem um valor associado a ele, esse valor é o valor de retorno da função. Se nenhum valor de retorno é especificado, assume-se que apenas lixo é retornado (alguns compiladores irão automaticamente retornar 0 se nenhum valor for especificado, mas não conte com isso).FORMA GERAL
return EXPRESSÃO;
O comando goto
Na programação estruturada, não há nenhuma situação que necessite do goto. No entanto, o goto é uma conveniência que, se usada com prudência, pode ser uma vantagem em certas situações.FORMA GERAL
goto RÓTULO; ... RÓTULO:
O comando
goto requer um RÓTULO - um identificador válido seguido por dois-pontos).O RÓTULO tem de estar na mesma função do
goto que o usa — não é permitido desvios entre funções.O RÓTULO pode vir antes, e não apenas depois, do comando
goto.laço infinito
LOOP:
printf("laço infinito\n");
goto LOOP;
O comando break
O comando break tem dois usos. Você pode usá-lo para terminar um case em um comando switch (vide aula Controle de Fluxo: Comandos de Seleção). Você pode também utilizá-lo para forçar uma terminação imediata de um laço, evitando o teste condicional normal do laço.Quando o comando
break é encontrado dentro de um laço, o laço é imediatamente terminado e o controle do programa retorna ao comando seguinte ao laço.
O comando continue
O comando continue trabalha de uma forma pouco parecida com a do comando break. Porém, em vez de forçar a terminação, continue força que ocorra a próxima iteração do laço, pulando qualquer código intermediário.Para o laço
for, o comando continue faz com que o incremento e o teste condicional sejam executados.Para os laços
while e do ... while, o controle do programa passa para o teste condicional.int conta_espacos(const char * str) {
int i = 0, nesp = 0;
while ( str[i] ) {
if ( str[i] != ' ' )
continue;
nesp ++;
}
return nesp;
}
Leitura Recomendada:
- CCT capítulo 3
- K&R capítulos 3
Bibliografia e fonte:
- [CCT] Schildt, H. (1996) C, completo e total: 3a Ed.. São Paulo, Makron.
- LP, UFMA; Coutinho, Lucian. Linguagem de programação para ciencia da computação da ufma.http://www.deinf.ufma.br/~lrc/2009.1/LP/
- [K&R] KERNIGHAN, B. e RITCHIE, D. (1990) C, a linguagem de programação: padrão ANSI. Rio de Janeiro: Campus.
- DEITEL, H. M. (1999) Como programar em C. Rio de Janeiro: LTC.
- Módulo Consultoria e Informática (1989) Linguagem C: programação e aplicações. Rio de Janeiro: LTC.
Coloque aqui o seu email