Вы находитесь на странице: 1из 7

Linguagem C - Estruturas condicionais

Junho 2014

O que uma estrutura condicional?


Chamamos de estrutura condicional as instrues para
testar se uma condio verdadeira ou no. Estas estruturas
condicionais podem ser associados com as estruturas que
se repetem, aps o cumprimento da condio, chamamos
essas estruturas d estruturas de loop.

O conceito de bloco
Uma expresso seguida de um ponto e virgula chamado de instruo. Veja um exemplo de
instruo:
a++;
Quando voc quiser agrupar vrias instrues, voc pode criar o que chamamos de bloco, isto
, um conjunto de instrues (seguidas, respectivamente, por pontos e vrgulas) entre chaves
{e}.
As instrues if, while e for podem, por exemplo, ser seguidas de um bloco de instrues a
serem executadas...

A instruo "if"
A instruo "if" a estrutura de teste mais bsica, ela encontrada em todas as linguagens (com
sintaxes diferentes...). Ela executa uma srie de instrues caso uma condio se realize.
A sintaxe desta expresso a seguinte:
if (condio realizada) {
lista de instrues;
}
Observaes:

A condio deve ficar entre parnteses


possvel definir vrias condies a serem cumpridas com os operadores E</ ital>
<ital>OU (&& e ||)
Por exemplo, a seguinte instruo testa se as duas condies so verdadeiras:
if ((condio1)&&(condio2))
A seguinte instruo executar as instrues se uma das duas condies for verdadeira:
if ((condio1)||(condio2))
Se houver apenas uma instruo, as chaves so desnecessrias ...
As instrues localizadas no bloco que segue o else so as instrues que sero
executadas, caso a, ou as condies, no forem realizadas.

A instruo if ... else


A instruoif em sua forma bsica s testa uma condio ou, na maioria das vezes, gostaramos
de poder escolher as instrues a serem executadas em caso do no cumprimento da
condio...
A expresso if ... else executa outra srie de instrues, em caso do no cumprimento da
condio.
A sintaxe desta expresso a seguinte:
if (condio realizada) {
lista de instrues
}
else {
outra srie de instrues
}

Uma maneira mais rpida de fazer o teste


possvel fazer um teste com uma estrutura muito mais leve, graas seguinte estrutura:

(condio) ? instruo se verdadeira : instruo se falsa</ital>


Observaes:
A condio deve ficar entre parnteses
Quando a condio for verdadeira, a Instruo da esquerda ser executada
Quando a condio for falsa, a instruo da direito ser executada

Alm de ser executada, a estrutura ?: retorna o valor resultante da instruo executada.


Assim, esta forma forma: frequentemente utilizada como segue:
posio = ((Antes == 1) ? contador+1 : contador-1);

A instruo switch
A Instruo switch efetua vrios testes de valores sobre o contedo de uma mesma varivel.
Esta conexo condicional simplifica muito o teste de v rios valores de uma varivel, pois esta
operao teria sido complicada (mas possvel) com ifs</ ital> aninhados. Sua sintaxe a
seguinte:
switch (varivel) {
casa Valor1 :
Lista d instrues;
break;
casa Valor2 :
Lista d instrues;
break;
casa Valores... :
Lista d instrues;
break;
default:
Lista d instrues;
}

Os parnteses aps a palavra-chave <ital> switch indicam uma expresso cujo valor testado,
sucessivamente, para cada uma das casas. Quando a expresso testada igual a um dos
seguintes valores seguindo uma casa, a lista de instruo que vem depois, executada. A
palavra-chave break indica a sada da estrutura condicional. A palavra-chave default precede a
lista de instrues, que ser executada se a expresso nunca for igual a um dos valores.
No se esquea de inserir instrues break entre cada teste; esse tipo de esquecimento difcil
de ser detectado pois nenhum erro assinalado...
Na verdade, ao omitir o break, a execuo continuar nos blocos seguintes!

Alis, este fato tambm pode ser usado criteriosamente, a fim de executar as mesmas instrues
para os diferentes valores consecutivos; assim, podemos colocar vrias casas antes do bloco:
switch(varivel)
{
casa 1:
casa 2:
{ instrues executadas para a varivel = 1 ou para a varivel = 2 }
break;
casa 3:
{ instrues executadas para a varivel = 3 apenas }
break;
default:
{ instrues executadas para qualquer outro valor de varivel }
}

Loops
Os loops so estruturas que executam vrias vezes a mesma srie de instrues at que uma
condio no seja mais realizada...
s vezes, chamamos estas estruturas de instrues repetitivas ou iteraes. A forma mais
comum de fazer um loop criar um contador (uma varivel que se incrementa, ou seja, que
aumenta de 1 a cada volta do loop) e parar o loop quando o contador excede um determinado
valor.

O loop for
A instruofor executa vrias vezes a mesma srie de instrues: um loop!
Em sua sintaxe, basta especificar o nome da varivel que serve de contador (e, eventualmente,
o seu valor inicial, a condio sobre a varivel pela qual o loop para (basicamente uma
condio que testa se o valor do contador excede um limite) e, finalmente, uma instruo que
incrementa (ou decrementa) o contador.
A sintaxe desta expresso a seguinte:
for (contador; condio; modificao do contador) {
lista de instrues;
}
Por exemplo:
for (i=1; i<6; i++) {
printf("%d", i);
}
Este loop exibe cinco vezes o valor do i</ ital>, ou seja, 1, 2, 3, 4, 5.

Ele comea em i = 1, verifique se i inferior a 6, e assim por diante, at atingir o valor de i = 6,


para o qual a condio no ser realizada, o loop vai se interromper e o programa continuar
seu curso.

Voc dever sempre verificar se o loop tem uma condio de sada (ou seja, o contador
incrementa corretamente)
Uma instruo <ital> printf(); em seu loop uma boa maneira de verificar, passo a passo, o
valor do contador, exibindo-o!
preciso contar o nmero de vezes que voc deseja executar o loop:
for(i=0;i<10;i++) executa 10 vezes o loop (i de 0 a 9)
for(i=0;i<=10;i++) executa 11 vezes o loop (i de 0 a 10)
for(i=1;i<10;i++) executa 9 vezes o loop (i de 1 a 9)
for(i=1;i<=10;i++) executa 10 vezes o loop (i de 1 a 10)

A instruo while
A instruowhile representa outro meio de executar vrias vezes a mesma srie de instrues.
LA sintaxe desta expresso a seguinte:
while (condio realizada) {
lista de instrues;
}
Esta instruo executa a lista de instrues enquanto (while uma palavra inglesa que
significa enquanto) a condio se realiza.
Como a condio de sada pode ser qualquer estrutura condicional, o risco de loop infinito (loop
cuja condio sempre verdadeira) grande, isto , pode causar uma falha do programa em
curso de execuo

Pulo incondicional
Pode ser necessrio pular um ou mais valores do loop, sem precisar par-lo.
A sintaxe desta expresso " continue" (esta instruo colocada em um loop!), e geralmente
associada a uma estrutura condicional, caso contrrio, as linhas entre esta instruo e o final do
loop seriam obsoletas.
Exemplo: Suponhamos que desejamos imprimir para x indo de 1 a 10 o valor de 1/(x-7); claro
que para x = 7, haver um erro. Felizmente, graas instruo continue possvel tratar este
valor separadamente, e continuar o loop!

x=1;
while (x<=10) {
if (x == 7) {
printf("Diviso por zero !");
continue;
}
a = 1/(x-7);
printf("%f", a);
x++;
}
Havia um erro neste programa ... mas talvez voc no tenha visto:
Quando x for igual a 7, o contador no incrementar mais, ele continuar com o valor 7, voc
deveria ter escrito:
x = 1;
while (x<=10) {
if (x == 7) {
printf("Division par 0");
x++;
continue;
}
a = 1/(x-7);
printf("%f", a);
x++;
}

Parada incondicional
Por outro lado, voc pode querer parar prematuramente o loop, para outra condio almda que
foi especificada no cabealho do loop. A instruo break para um loop (for, ou while). Trata-se,
assim como o continue, para associ-lo a uma estrutura condicional, sem a qual o loop no
daria mais que uma volta!
No exemplo anterior, por exemplo, se ns no soubessemos quando o denominador (x-7) se
anularia (tudo bem... OK ... para equaes mais complicadas, por exemplo), seria possvel
interromper o loop, em caso de cancelamento do denominador, para evitar diviso por zero!

for (x=1; x<=10; x++) {


a = x-7;
if (a == 0) {
printf("Diviso por 0");
break;
}
printf("%f", 1/a);
}
Traduo feita por Lucia Maurity y Nouira
Este documento, intitulado Linguagem C - Estruturas condicionais a partir de Kioskea (pt.kioskea.net) est
disponibilizado sob a licena Creative Commons. Voc pode copiar, modificar cpias desta pgina, nas condies
estipuladas pela licena, como esta nota aparece claramente.

Вам также может понравиться