Anda di halaman 1dari 28

Programao II

Programao II

Aula 03- Comandos Condicionais


Professor Marlia Costa Machado
email: marilia.machado@uemg.br
Programao II

As estruturas de controle de fluxo so


fundamentais para qualquer linguagem
de programao.
Sem elas s haveria uma maneira do
programa ser executado: de cima para
baixo, comando por comando.
A linguagem C possui diversos
comandos de controle de fluxo.
Programao II

ESTRUTURAS DE CONTROLE DE
FLUXO

Os comandos de controle de fluxo so a


base de qualquer linguagem.
C tem um conjunto muito rico e poderoso de
comandos de controle de fluxo.
Eles se dividem em comandos de teste de
condies e comandos de controle de loop.
Programao II

Comandos de testes de condies


Estes comandos avaliam uma condio e
executam um bloco de cdigo de acordo com o
resultado. So eles:

if

switch
Programao II

Comandos de testes de condies


Um comando condicional aquele que
permite decidir se um determinado bloco
de comandos deve ou no ser executado, a
partir do resultado de uma expresso
lgica.
Programao II

Comandos condicionais

Comandos de Deciso - if

No Visualg 2.0 trabalhamos a estrutura


condicional se, que era utilizada da seguinte forma:
Programao II

Comandos condicionais

O funcionamento da estrutura de controle if


semelhante ao funcionamento da estrutura de
controle SE no Visualg.
A sintaxe do comando if obedece a seguinte
forma:
Programao II

Comandos condicionais
Programao II

A construo if executa uma sentena ou bloco de sentenas somente se uma


determinada condio for verdadeira.

A Figura 2 ilustra a sintaxe da estrutura condicional if em C. Ela controla se o


prximo bloco de sentenas deve ser executado ou no.
O bloco de sentenas delimitado pelas chaves ({ e }). Primeiro, avalia-se a
expresso, que representa a condio a ser verificada. Note que esta expresso
obrigatoriamente envolvida por parnteses. Muito possivelmente, essa
expresso utilizar um dos operadores de comparao.
Programao II

Comando if
Exemplo:

Este programa pede para o usurio para digitar sua idade. Baseando-se
nessa informao, ele imprime se a pessoa pode obter sua carteira de
habilitao.
Cdigo fonte:
{
int idade; // Declarar variveis
printf("Digite sua idade: "); // Pedir ao usurio para escrever sua idade
scanf("%d", &idade);
if (idade >= 18) { // Comparar com a idade mnima
printf("Ja pode obter habilitacao!");
}
return 0;
}
Programao II

Comando if

Descrio passo a passo:

int idade; Primeiro, declara-se a varivel que recebe o valor da idade digitada pelo
usurio. A idade declarada como um nmero inteiro, mas seu valor inicial no foi
atribudo.
printf("Digite sua idade: ");
scanf("%d", &idade);

Em seguida, o comando printf imprime uma mensagem para solicitar a idade do


usurio, e scanf realiza a leitura de um nmero inteiro na varivel idade.
if (idade >= 18)
{ printf("Ja pode obter habilitacao!"); }
Por fim, o valor da varivel idade comparado com o valor 18. Se o resultado da
expresso (idade >= 18) for verdadeiro (diferente de zero), ento o prximo bloco
executado. Este bloco contm apenas o comando printf que imprime a
autorizao. Caso contrrio, a execuo salta este bloco e passa para o comando
return 0, que finaliza o programa.
Programao II

if... else

O comando else complementar ao if. Executa comandos


caso a expresso lgica de if for falsa. Repare que o
comando else no possui condio (expresso lgica).
Sintaxe:
if (expresso lgica)
{ bloco de comandos; }
else { bloco de comandos; }
Programao II

Estrutura Condicional if...else

Vamos continuar estudando o exemplo anterior, o qual decide se a


idade do usurio lhe permite tirar carteira de habilitao. Desejamos
agora imprimir uma mensagem negando a autorizao, caso a pessoa
seja menor de idade. Basta adicionar uma segunda estrutura
condicional if para verificar o caso oposto (menor que 18 anos).
Programao II

Estrutura Condicional if...else


Note que, pela lgica do programa, se a condio da expresso do
primeiro if for avaliada como verdadeira, ento, obrigatoriamente, a
expresso do segundo if necessariamente falsa e vice-versa. Ou
seja, as duas condies so mutuamente exclusivas e apenas um dos
blocos das estruturas condicionais do if executado. Para estas
situaes, a linguagem oferece a estrutura condicional if...else, que
executa exatamente um dentre dois blocos de sentenas, dependendo
do resultado de uma determinada condio.
Programao II

else if

O comando else if permite ao programador


separar vrios blocos de comandos e
condicionar a execuo desses blocos.
Sintaxe:
if (expresso lgica)
{ bloco de comandos; }
else if (expresso lgica)
{ bloco de comandos; }
else { bloco de comandos; }
Programao II

Comandos condicionais

A estrutura de controle if pode expressar uma


sequncia de condicionais.
A sintaxe utilizada deve ser a seguinte:
Programao II

Comandos condicionais
Exemplo:

if (a == 10) {
printf(Vermelho);
}
else if ( a == 20 ){
printf(Azul);
}
else{ printf(Preto);
}
Programao II

Condicionais aninhados

Vamos continuar estudando o primeiro exemplo deste


captulo, que decide se a idade do usurio permite ou no
obter carteira de habilitao. Alm de avaliar se a pessoa
maior de idade, agora desejamos verificar se ela tem
mais de 65 anos (e precisa fazer exames regulares a cada
3 anos). A linguagem C oferece a estrutura condicional
if...else if...else, com capacidade de realizar decises
mltiplas. A estrutura oferece vrios blocos como
alternativas para serem executados, cada qual associado
sua prpria expresso condicional.
Programao II

Condicionais aninhados
Programao II

Condicionais aninhados
A Figura mostra a sintaxe desta estrutura. Ela executa somente o primeiro o
bloco se a primeira expresso satisfeita, ignorando os demais blocos.
Depois, a execuo do programa continua normalmente com a primeira
sentena aps toda esta estrutura. As expresses so avaliadas em ordem,
de cima para baixo. Se uma expresso resultar em zero (falso), ento a
prxima expresso avaliada. Quando a expresso for diferente de zero
(verdadeiro), ento apenas o bloco correspondente a ela executado,
sendo as demais expresses ignoradas.
Figura 7 ilustra o fluxo de execuo desta estrutura. Observao 1: A
estrutura pode apresentar tantos blocos else if quantos forem necessrios
para descrever a lgica de um algoritmo. Tanto a Figura 7 como a Figura 8
mostram um caso particular com apenas 2 condies. Observao 2: O
ltimo bloco, associado com o else, executado quando nenhuma das
outras condies for verdadeira. Este bloco opcional e pode ser omitido.
Programao II

Condicionais aninhados

Figura 7 ilustra o fluxo de execuo desta estrutura.


Observao 1: A estrutura pode apresentar tantos blocos else if quantos
forem necessrios para descrever a lgica de um algoritmo. Tanto a Figura 7
como a Figura 8 mostram um caso particular com apenas 2 condies.
Observao 2: O ltimo bloco, associado com o else, executado quando
nenhuma das outras condies for verdadeira. Este bloco opcional e pode
ser omitido.
Programao II

Condicionais aninhados

Exemplo: Um programa para informar o perodo de renovao dos exames da


carteira de habilitao. Menores de idade no possuem carteira. At 65 anos, os
prazos so de 5 em 5 anos; depois, o exame precisa de renovao a cada 3 anos.
Programao II

Condicionais aninhados
Programao II

Condicionais aninhados
Descrio passo a passo:
int idade;

Comeamos declarando a varivel inteira chamada idade que


armazena o valor digitado pelo usurio.

if ( (idade >= 0) && (idade < 18) )


{ printf("Nao possui habilitacao.\n"); } ...

A primeira condio avaliada. Ela formada por duas expresses,


unidas pelo operador && (e). Ambas precisam ser satisfeitas para se
executar este bloco. Se idade for maior ou igual a zero e menor que
18, o bloco executado imprimindo a mensagem. As demais
condies sero ignoradas. ...
Programao II

Condicionais aninhados

else if ( (idade >= 18) && (idade < 65) )


{ printf("Renove exames a cada 5 anos.\n"); }
Se a primeira condio for falsa, ento a segunda ser avaliada.
Ela tambm formada por duas expresses, unidas pelo
operador && (e). Se idade for maior ou igual a 18 e menor que
65, o bloco executado imprimindo a mensagem. ..
.else if (idade >= 65)
{ printf("Renove exames a cada 3 anos.\n"); }
Se a primeira e a segunda condio forem falsas, ento a
terceira ser avaliada. Se a idade for maior ou igual a 65, o
bloco executado, imprimindo a mensagem.
Programao II

Condicionais aninhados Sempre que puder,


simplifique:
if (expressoA) {
if (expressoB)
comando 1;
} else {
comando 2;
}
Pode ser reescrita como:
if ((expressoA) && (expressoB)){
comando 1;
} else {
comando 2;
}
Programao II

Exemplo Programa que l 3 inteiros e verifica qual o


maior deles.
int a, b, c;
scanf("%d %d %d", &a, &b, &c);
if (a > b ){
if (a > c){
printf ("O maior valor eh: %d \n", a);
} else {
printf ("O maior valor eh: %d \n", c); }
} else {
if (b > c){
printf ("O maior valor eh: %d \n", b);
} else {
printf ("O maior valor eh: %d \n", c); }
}
Programao II

Exerccios

1) Para doar sangue necessrio ter entre 18 e 67 anos. Faa um aplicativo


na linguagem C que pergunte a idade de uma pessoa e diga se ela pode
doar sangue ou no. Use alguns dos operadores lgicos OU (||) e E (&&).

2) Escreva um programa que pergunte o dia, ms e ano do aniversrio de


uma pessoa e diga se a data vlida ou no. Caso no seja, diga o motivo.
Suponha que todos os meses tem 31 dias e que estejamos no ano de 2013.

Anda mungkin juga menyukai