C é uma linguagem que suporta a programação estruturada, ou seja, permite agrupar comandos na forma de seqüência, seleção e repetição.
Uma seqüência de comandos em uma função C é denotada simplesmente como
uma seqüência de expressões, como já exemplificado em diversos
exemplos anteriores. Além de uma expressão ser composta por um único
comando, é possível ter uma única expressão com a seqüência de
comandos separados pelo operador ,
(vírgula), como em
for (i=0, j=0; i<k; ++i, j+=2) { ... }
A construção de seleção IF-THEN-ELSE é expressa em C com as palavras-chaves if...else (Figura C.3). Após a palavra-chave if deve haver uma expressão condicional entre parênteses. Se a expressão for avaliada como verdadeira, então a expressão sob if será realizada; se for falsa, a expressão sob else será executada.
Nesta figura, introduz-se o conceito de expressão composta, ou seja, a expressão da parte else deste exemplo é na verdade um bloco contendo diversas expressões. Neste caso, o bloco de comandos que deve ser executado nesta condição deve ser delimitado por chaves { e }. Algumas observações adicionais relevantes com relação a este comando são:
A construção estruturada de seleção SWITCH é suportada em C pelo comando switch...case (Figura C.4). Neste caso, após a palavra-chave switch deve haver uma variável do tipo inteiro ou caráter entre parênteses. Após a variável, deve haver uma lista de casos que devem ser considerados, cada caso iniciando com a palavra-chave case seguida por um valor ou uma expressão inteira.
![]() |
Neste exemplo, a variável a pode ser do tipo int ou char. A palavra-chave especial default indica que ação deve ser tomada quando a variável assume um valor que não foi previsto em nenhum dos casos. Assim como a condição else no comando if é opcional, a condição default também é opcional para o switch-case. Observe também a importância da palavra-chave break para delimitar o escopo de ação de cada caso -- fossem omitidas as ocorrências de break no exemplo, a semântica associada ao comando seria essencialmente diferente (Figura C.5).
![]() |
Comandos de repetição em C são suportados em três formas distintas. A primeira forma é while, cuja construção equivale ao comando estruturado WHILE-DO (Figura C.6(a) e (b)), enquanto que a segunda forma equivale ao comando estruturado DO-WHILE (Figura C.6(c) e (d)).
![]() |
A terceira forma associada ao comando de repetição em C, for, facilita a expressão de iterações associadas a contadores. Um exemplo de uso deste comando é apresentado na Figura C.7.
Neste exemplo, a é uma variável que tem a função de contador, assumindo valores 0, 1, ..., MAX-1. Enquanto o valor de a for menor que MAX (a condição de término da iteração), a expressão (simples ou composta) no corpo da iteração será repetidamente avaliada.
Qualquer que seja forma usada para indicar o comando de repetição -- while, do while ou for -- há duas formas de se desviar a seqüência de execução do padrão do comando. A primeira forma, continue, serve para indicar o fim prematuro de uma iteração. A outra forma de interrupção de um comando de repetição é o comando break, que indica o fim prematuro de todo o comando de iteração. Por exemplo, em
for (a=0; a<MAX; ++a) { if (b == 0) { b = a; continue; } c = c/b; b = b-1; }se a linha com o comando continue for executada, o valor de a será incrementado e então o teste da iteração será reavaliado para definir a continuidade ou não do laço de repetição. Já no exemplo abaixo,
for (a=0; a<MAX; ++a) { if (b == 0) break; c = c/b; b = b-1; }quando (se) b assumir o valor 0, o laço será simplesmente interrompido.