Sumário de operadores de controle de fluxo em ANSI C
Comandos de controle de fluxo em ANSI C: Ramificação e repetição. Ramificação está decidindo que ações tomar de acordo com certas condições e repetição está tratando de quantas vezes realizar determinada ação.
Ramificação
Um ramo é chamado (executado) apenas se o programa escolher percorrê-lo através de testes lógicos. Desta forma é possível executar determinadas instruções ou outras de acordo com condições que podem variar no tempo.
operador if
É a mais simples forma de ramificação. A expressão entre parênteses será testada, se for verdadeira uma instrução ou um bloco de instruções será executado. Se for falso esta instrução ou bloco será ignorada e o programa segue seu curso sem portanto executar certo trecho de código. Um teste é tido como verdadeiro se seu resultado é um valor diferente de zero. Abaixo dois exemplos, o primeiro executando um comando simples e outro um bloco (instrução composta)
//comando simples if (expressão_de_teste_logico) instrução;
if (expressão_de_teste_logico) { instrução1; instrução2; instruçãoN; }
comando if em estrutura if...else
Pode-se também determinar o que se deve fazer se o teste for falso. Neste caso em uma execução apenas um trecho será executado, não há possibilidade de ambos serem executados na mesma execução.
if (expressão_de_teste_logico) { instrução1; instrução2; instruçãoN; } else { instrução1_2; instrução2_2; instruçãoN_2; }
Operador em if aninhado (em cascata)
Pode-se ainda configurar operadores if em cascata, desta forma pode-se testar diferentes condições lógicas. Apenas um trecho de código será executado em um ciclo de execução.
if (expressão_de_teste_logico) { instrução1; instrução2; instruçãoN; } else if(expressão_de_teste_logico) { instrução1_2; instrução2_2; instruçãoN_2; } else { instrução1_3; instrução2_3; instruçãoN_3; }
Operador ? :
Se assemelha ao "if...else". Primeiro se declara o teste lógico (fazendo a função do conteúdo entre parênteses do if), depois do "?" a instrução para caso verdadeiro (equivale ao comando simples após o if) e após ":" o comando se falso (equivale a instrução simples do else).
//Formato da estrutura "? :" //se o teste lógico der verdadeiro o instrução1 será executado, //caso contrário será executado o instrução2 expressão_teste_lógico ? instrução1 : instrução2
Operador switch
Se assemelha ao if aninhado podendo tratar diversos casos, porém testa apenas uma variável de números inteiros. Tem a vantagem de ser mais eficiente e fácil de ler. É necessário ter ao menos um caso declarado. O operador default é opcional.
switch (expressão_de_teste_logico) { case constante1: instrução1; break; case constante2: instrução2; break; case constante1: instrução3; break; default : instrução4; break; }
Palavras-chave
break
A palavra-chave break faz com que a execução do switch pare naquela linha. Caso se deseje que o programa continue executando as instruções em um switch basta omitir o break. Pela estrutura, portanto, serão executadas todas as instruções a partir do caso verdadeiro até que seja encontrado um break ou se chegue ao fim do switch.
continue
A palavra-chave continue faz com que a corrente execução seja interrompida e se retorne ao teste lógico do laço. Se parece com o break mas ao invés de sair do laço, a execução continua testando. Serve para "pular" a execução do laço.