Você está na página 1de 6

Comandos de Deciso /

Comandos de Seleo
Expresses lgicas Comando IF Comando sw

Condies ou Expresses
Lgicas
A condio na linguagem C definida como uma expresso que pode
ser verdadeira ou falsa.

este tipo de expresso d-se o nome de expresso lgica.

Por exemplo, (3 > 2) uma expresso lgica que possui valor verdadeiro.
Por outro lado, (4 < 1) uma expresso lgica que possui valor falso.

Os operadores (< e >) usados nos exemplos acima so chamados


de operadores relacionais pois possibilitam saber qual a relao existente
entre seus dois operandos. Alm destes dois existem mais 4 operadores
relacionais, que podem ser vistos na tabela seguir:

Operadores Relacionais

== Igual a
!= Diferente
>= Maior ou igual
> Maior que
< Menor que
<= Maior ou igual

Alm dos operadores relacionais, existem os chamados operadores


lgicos ou "conectivos lgicos". Estes, servem para conectar duas expresses
relacionais. Os operadores lgicos da linguagem C so apresentados na tabela
a seguir:

Operadores Lgicos
|| OU lgico
&& E lgico
! Negao

Estes operadores OU e E devem ser sempre usados entre duas expresses


relacionais, como por exemplo:

((2 > 1) || (3 < 7)) : resultado VERDADEIRO


((3 < 2) && (2 == 2)) : resultado FALSO
((5 !=0) || (1 < 2)) : resultado VERDADEIRO

O operador de Negao deve ser usado antes de uma expresso relacional,


como por exemplo:

!(2 > 1): resultado VERDADEIRO


!(1 < 0): resultado FALSO

Precedncia de Operadores

! Operador de negao Executado


Antes
- menos unrio (sinal)
* / % Operadores Multiplicativos
+ - Operadores aditivos
< > <= >= == != Relacionais
&& AND lgico Executado
Depois
|| OR lgico

Comando IF
O comando IF serve para alterar o fluxo de execuo de um programa em
C baseado no valor, verdadeiro ou falso, de uma expresso lgica.

Formato 1:

if (expr_log)
comando1; // executado se "expr_log" for
verdadeira
comando2; // executado sempre independente da
condio

Formato 2:

if (expr_log)
comando1; // executado se "expr_log" for
verdadeira
else comando2; // executado se "expr_log" for falsa
comando3; // executado sempre, independente
// do resultado do teste

Comando IF com BLOCOS

Formato 3:

if (expr_log)
{
comando1; // executados se "expr_log" for
verdadeira
comando2;
comando3;
}
else
{
comando4; // executado se "expr_log" for falsa
comando5;
comando6;
}
comando7; // executado sempre independente da
condio
comando8; // executado sempre independente da
condio

Aninhamento de Ifs

Exemplo 1: sem blocos e sem ELSE

if (expr_log)
if (expr_log2)
comando2; // executado se "expr_log" e
// "expr_log2" forem AMBAS
verdadeiras
comando3; // executado sempre

Exemplo 2: sem blocos, o ELSE sempre do IF


anterior

if (expr_log)
if (expr_log2)
comando2; // executado se "expr_log" e
// "expr_log2" forem AMBAS
verdadeiras
else comando3; // executado se "expr_log" for
VERD
// e se "expr_log2" for FALSA
comando4; // executado sempre

Exemplo 3: O ELSE sempre do IF anterior dentro do


BLOCO

if (expr_log)
{
if (expr_log2)
comando2;
}
else comando3; // executado se "expr_log" for FALSO
// pertence ao primeiro IF
comando4; // executado sempre

Exemplo 4:

if (expr_log)
{
comando1; // executado se expr_log for
VERDADEIRA
comando11;
if (expr_log2)
{
comando2; // executado se expr_log e
expr_log2
comando21; // forem ambas VERDADEIRAS
}
else
{
comando3; // executado se expr_log for
VERDADEIRA
comando31; // e expr_log2 for FALSA
}
comando4; // executado se expr_log for
VERDADEIRA
}
else
{
comando5; // executado se expr_log for FALSA
comando51;
if (expr_log3)
{
comando6; // executado se expr_log for FALSA
comando61; // e expr_log3 for VERDADEIRA
}
else
{
comando7; // executado se expr_log for FALSA
comando71; // e expr_log3 for FALSA
}
comando8; // executado sempre que expr_log for
FALSA
}
comando9; // executado sempre

Comando SWITCH
int op;

printf("Digite a sua opo\n");


scanf ("%d",&op);
switch (op)
{

case VALOR1:
comando1; // executa estes comandos se
comando11; // op for igual a VALOR1
comando111;
break;
case VALOR2:
comando2; // executa estes comandos se
comando22; // op for igual a VALOR2
comando222;
break;
default:
comando3; // executa estes comandos se
comando33; // op for diferente de VALOR1 e
comando333; // de VALOR2

Observaes:
O parmetro do switch deve ser int ou char
O valor aps o case dever ser uma CONSTANTE
Muito Cuidado: A falta do break faz o controle
passar ao prximo case

Atribuio Condicional
a = (a>5)? 10 : 50;
Este comando equivalente a

if(a>5)
a = 10;
else a = 50;

Você também pode gostar