![]() |
![]() |
![]() |
Este capítulo trata dos vários métodos de controlar o fluxo de execução de código num programa em C. Os operadores lógicos e de comparação são fundamentais para isso. Esses operadores são usados em conjunto com as instruções aqui tratadas.
![]() |
A instrução if
tem a mesma função e
estrutura de outras linguagens de programação, como por exemplo o Pascal. Assume em C duas formas
seguintes:
if (expressão) instrução;
ou
if (expressão) instrução_1; else instrução_2;
Pode ser facilmente imbricada para o teste de múltiplas condições, como se vê no exemplo seguinte:
if (expressão) instrução_1; else if (expressão) instrução_2; else instrução_3;
Outro exemplo:
void main(void)
{
int x, y, z;
...
if (x >= y)
{
z = x;
...
}
else
{
z = y;
...
}
...
}
Notar a colocação das chavetas.
![]() |
O operador ?:
(condição ternária) é, como
o nome indica, um operador que necessita de três operandos, que podem ser resultados de
expressões. Em certas situações pode substituir a instrução if
.
Tem a forma:
expressão_1 ? expressão_2 : expressão_3;
Tem como resultado o valor de expressão_2
ou
de expressão_3
consoante o valor de
expressão_1
for verdadeiro (!= 0) ou falso (== 0)
respetivamente. Por exemplo, para colocar o máximo de dois valores numa variável
podemos simplesmente escrever:
z = (a > b) ? a : b;
que é equivalente a:
if (a > b)
z = a;
else
z = b;
![]() |
A instrução switch
é semelhante à
instrução case
do Pascal, e tal como esta
permite uma escolha múltipla de execução baseada no valor de uma expressão. A sua
estrutura geral é a seguinte:
switch (expressão) { case item_1: instrução_1; break; case item_2: instrução_2; break; ... case item_n: instrução_n; break; default: instrução; }
Os itens
que aparecem a seguir à
palavra case
são valores constantes (não podem ser
expressões nem variáveis). Se a expressão
inicial
coincidir com algum desses itens executa-se a instrução que vem logo a seguir.
Caso contrário, e se a palavra default
estiver
presente (não é obrigatório), passa-se a essa instrução; se não estiver presente
passa-se à instrução que se segue à instrução switch
.
A palavra break
(é uma instrução do C) faz
com que se passe imediatamente à instrução que se segue à presente (a instrução que
virá a seguir a esta instrução switch
no
programa). Se não estiver presente a execução continua para a instrução do
próximo case
, o que não é usual noutras linguagens. Podemos
considerar o seguinte exemplo:
switch (letter)
{
case 'A':
case 'E':
case 'I':
case 'O':
case 'U':
nr_de_vogais++;
break;
case ' ':
nr_de_espacos++;
break;
default:
nr_de_consoantes++;
}
Notar os 5 cinco primeiros casos (vogais), que conduzem à mesma instrução.
![]() |
exit(1)
.
![]() |