Capítulo 3 - Execução Condicional



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.

Tópicos



A instrução if

A instrução if tem a mesma função e estrutura de outras linguagens, como por exemplo o Pascal. Assume em C as duas formas básicas 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 chaves alinhadas em cada bloco.
 
 
Up

O operador ?:

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) respectivamente. Por exemplo, para colocar o máximo de dois valores numa variável podemos simplesmente escrever:
z = (a > b) ? a : b;
que é perfeitamente equivalente a:
if (a > b)
  z = a;
else
  z = b;

 
Up

A instrução switch

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 items que  aparecem  em seguida à palavra case são valores constantes (não podem ser expressões nem variáveis). Se a expressão inicial  coincidir com algum desses items 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 em outras 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.
 
 
Up

Exercícios

1. Escreva um programa que leia dois caracteres e os interprete como um número em hexadecimal. A saída deverá ser o valor correspondente em decimal.
Exemplos:
05 em decimal será 5
0A em decimal será 10
5B em decimal será 91
FF em decimal será 255

2. Leia um valor inteiro entre 1 e 12 e assuma que esse valor representa um mês. Escreva o seu nome.

3. Leia três inteiros representando uma data (dia, mês e ano). Escreva, da mesma forma, a data do dia seguinte.

4. Leia dois números reais. Se o primeiro for maior escreva "Maior"; se for menor escreva "Menor" e se forem iguais escreva "Iguais".
 

Lista dos alunos que entregaram os programas do capitulo 2
 
Aluno
Altair
Auricelia
Carlos Augusto
Decario
Edson Takahashi
Elenice
Gerson Mota
Jefferson Ancelmo
Paulo Emidio
Reginaldo Marcal
Reinaldo Cunha
Rodrigo Tavares
Taila
Teresa
Tiago Barros
Exercicio 1(Hexa->Decimal)
Hexadecimal
Cap31
hexadecimal
total.c
Hexa-Dec
exerc_1
hexa
Hexa
Ex1
HEXA
p1
Hexa
Hexa
HEXDEC
hexadec
Exercicio 3 (dia seguinte)
mes_ano
Cap33
diamais1
total.c
data
exerc_2
prox_dia
trocadia
Ex3
TROCADIA
p3
TROCADIA
Data
DIAMESAN
dataseg
Exercicio 4 (maior, menor, =)
----------
Cap34
----------
total.c
Reais
exerc_3
maior_menor_igual
----------
Ex4
MMI
p4
MA_ME
MaioMenorIgual
MAIMEN
maimenig
Up


  [REV 8/98]