Estruturas de Controle


1 - Considera��es Gerais

Na linguagem C, por n�o termos um tipo de dado booleano, uma express�o � considerada falsa quando retornar 0 e verdadeira qundo retorna qualquer outro valor.

Qualquer condi��o em C deve estar entre par�nteses.

Delimitadores de Bloco

As chaves {} s�o usadas como delimitadores, substituindo o begin e o end do Pascal.

Terminador de Comandos

O ponto r v�rgula ";" funcionar� como um terminador de comandos e n�o como um separador de comandos, sendo assim, ele aparecer� sempre que precisarmos terminar um comnado, n�o tendo nenhuma restri��o se ap�s ele vem um else ou um delimitador de final de bloco.

2 - Sele��o

2.1) If:

Com dois processamentos alternativos.

Forma Geral:

if (< condi��o >)
< bloco 1 >
else < bloco 2 >

Considera��es:
- Se o resultado de condi��o for igual a zero o bloco 2 ser� executado, se for qualquer valor diferente de zero, ser� executado o bloco 1.
- Cada bloco de comandos pode ser constitu�do de um ou mais comandos de qualquer tipo, incluindo o pr�prio if.
- O else � opcional (caso n�o haja cl�usula sen�o, ele n�o necessita ser usado).
- No caso de m�ltiplos if's aninhados, o else sempre se associa ao if imediatamente mais pr�ximo.

Ex 1:
if (x == y)
printf("igual");
else
printf("diferente");

Ex 2:
if (z)
{
x +=y;
z = x;
}

2.2) Switch:

Com m�ltiplos processamentos alternativos

Forma Geral:

switch (< express�o >)
{
case < valor 1 >: {< bloco 1 >}
case < valor 2 >: {< bloco 2 >}
case < valor 3 >: {< bloco 3 >}
case < valor n >: {< bloco n >}
default: {< bloco x >}
}

Considera��es:
- Uma �nica condi��o (express�o) � avaliada e seu valor comparado com os valores dos casos.
- Poder�amos ter o mesmo processamento utilizando if's aninhados.
- Cada case possui um valor ou express�o constante.
- O "default" � opcional, correspondente ao else do if.
- O switch n�o � mutuamente exclusivo. O resultado da express�o � comparado com os valores existentes nos CASE's e todos os valores iguais encontrados s�o executados.
- Para que o switch se torne mutuamente exclusivo � necess�rio ap�s o bloco de comandos de cada case incluir o comando BREAK, que desvia a execu��o do algoritmo para o pr�ximo comando ap�s a estrutura switch.

switch (< express�o >)
{
case < valor 1 >: {< bloco 1 > break;}
case < valor 2 >: {< bloco 2 > break;}
case < valor 3 >: {< bloco 3 > break;}
case < valor n >: {< bloco n > break;}
default: {< bloco x >}
}

Ap�s o bloco de comandos do default n�o � necess�rio o break, visto que n�o existe outro bloco ap�s ele. Se o resultado da express�o n�o for igual a nenhum dos valores listados nos cases, o bloco correspondente ao default ser� executado.

3 - Repeti��o

3.1) While:

O n�mero de repeti��es n�o � conhecido e o bloco de comandos pode nunca ser executado.

Forma Geral:

While (< condi��o >)
< bloco >

Considera��es:
- O bloco � executado enquanto a condi��o for verdadeira (ou seja, diferente de 0).

Ex:
while (x < y)
{
x++;
printf("teste");
}

3.2) Do:

O n�mero de repeti��es n�o � conhecido e o bloco de comandos � executado pelo menos uma vez.

Forma Geral:

do
< bloco >
While < condi��o >

Considera��es:
- O bloco � executado enquanto a condi��o for verdadeira (ou seja, diferente de 0).
- O bloco � executado ao menos uma vez.

Ex:
do
{
x++;
printf("teste");
} while ( x < y )

3.3) For:

O n�mero de repeti��es � conhecido.

Forma Geral:

for ( < express�o 1 > ; < express�o 2 > ; < express�o 3 > )
< bloco >

Considera��es:
- express�o 1: inicializa a vari�vel de controle e � executada uma �nica vez, antes da execu��o do bloco.
- express�o 2: teste da condi��o e � executada tantas vezes quantas forem as repeti��es, antes da execu��o do bloco.
- express�o 3: incremento da vari�vel de controle e � executada tantas vezes quantas forem as repeti��es, depois da execu��o do bloco.

Ex: Se quis�ssemos repetir um determinado bloco de comandos 10 vezes, as estruturas utilizadas seriam as seguintes:

for( i = 1; i <= 10; i++ )
printf("%d",i);