Anda di halaman 1dari 5

Controle do fluxo de execuo

C uma linguagem que suporta a programao estruturada, ou seja, permite agrupar comandos na forma de seqncia, seleo e repetio. Uma seqncia de comandos em uma funo C denotada simplesmente como uma seqncia de expresses, como j exemplificado em diversos exemplos anteriores. Alm de uma expresso ser composta por um nico comando, possvel ter uma nica expresso com a seqncia de comandos separados pelo operador , (vrgula), como em
for (i=0, j=0; i<k; ++i, j+=2) { ... }

A construo de seleo IF-THEN-ELSE expressa em C com as palavraschaves if...else (Figura C.3). Aps a palavra-chave if deve haver uma expresso condicional entre parnteses. Se a expresso for avaliada como verdadeira, ento a expresso sob if ser realizada; se for falsa, a expresso sob else ser executada.

Figura: Seleo com if...else em C: (a) fluxograma; (b) equivalente em C.

Nesta figura, introduz-se o conceito de expresso composta, ou seja, a expresso da parte else deste exemplo na verdade um bloco contendo diversas expresses. Neste caso, o bloco de comandos que deve ser executado nesta condio deve ser delimitado por chaves { e }. Algumas observaes adicionais relevantes com relao a este comando so: 1. Em C, h diferenas entre letras minsculas e maisculas. Como todos os comandos em C, as palavras chaves deste comando esto em letras

minsculas. Assim, as formas IF (ou If ou iF) no so formas vlidas em C para denotar o comando if. 2. Ao contrrio do que ocorre em Pascal ou FORTRAN, a palavra then no faz parte da sintaxe deste comando em C. 3. A clusula else pode ser omitida quando a expresso a executar na condio falsa for nula. 4. No caso de haver mais de um if que possa ser associado a uma clusula else, esta ser associada ao comando if precedente mais prximo. A construo estruturada de seleo SWITCH suportada em C pelo comando switch...case (Figura C.4). Neste caso, aps a palavrachave switch deve haver uma varivel do tipo inteiro ou carter entre parnteses. Aps a varivel, deve haver uma lista de casos que devem ser considerados, cada caso iniciando com a palavra-chave case seguida por um valor ou uma expresso inteira.

Figura C.4: Seleo em C usando a forma switch... case. Observe que o conjunto de aes associado a cada caso encerra-se com a palavra-chave break.

Neste exemplo, a varivel a pode ser do tipo int ou char. A palavra-chave especial default indica que ao deve ser tomada quando a varivel assume um valor que no foi previsto em nenhum dos casos. Assim como a condio else no comando if opcional, a condio default tambm opcional para o switch-case. Observe tambm a importncia da palavrachave break para delimitar o escopo de ao de cada caso -- fossem omitidas

as ocorrncias de break no exemplo, a semntica associada ao comando seria essencialmente diferente (Figura C.5).

Figura C.5: Seleo em C usando a forma switch...case onde se omitiu a palavrachave break do bloco de comandos.

Comandos de repetio em C so suportados em trs formas distintas. A primeira forma while, cuja construo 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)).

Figura: Repetio em C: (a) forma while, fluxograma; (b) forma while, cdigo C; (c) forma do... while, fluxograma; (d) forma do...while, cdigo C.

A terceira forma associada ao comando de repetio em C, for, facilita a expresso de iteraes associadas a contadores. Um exemplo de uso deste comando apresentado na Figura C.7.

Figura: Repetio em C usando a forma for: (a) fluxograma; (b) cdigo C.

Neste exemplo, a uma varivel que tem a funo de contador, assumindo valores 0, 1, ..., MAX-1. Enquanto o valor de a for menor que MAX (a condio de trmino da iterao), a expresso (simples ou composta) no corpo da iterao ser repetidamente avaliada. Qualquer que seja forma usada para indicar o comando de repetio -while, do while ou for -- h duas formas de se desviar a seqncia de execuo do padro do comando. A primeira forma, continue, serve para indicar o fim prematuro de uma iterao. A outra forma de interrupo de um comando de repetio o comando break, que indica o fim prematuro de todo o comando de iterao. 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 ento o teste da iterao ser reavaliado para definir a continuidade ou no do lao de repetio. 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 lao ser simplesmente interrompido.

Anda mungkin juga menyukai