11
Linguagem C Linguagem C
2. Estrutura Condicional 2. Estrutura Condicional
Cláudio C.
Cláudio C. Rodrigues Rodrigues
Faculdade da Computação
Faculdade da Computação - - UFU UFU
Objetivo Objetivo
Apresentar
Apresentar os conceitos básicos os conceitos básicos relacionados
relacionados à tomada à tomada de decisão de decisão oferecidos na linguagem
oferecidos na linguagem C, C, tais tais como: como :
valores lógicos
valores lógicos , , operadores relacionais operadores relacionais e e conectivos conectivos
comandos condicionais
comandos condicionais
Faculdade da Computação Faculdade da Computação --UFUUFU 3
3
Estrutura Condicional Estrutura Condicional
1. 1. Expressões lógicas Expressões lógicas
Operador Relacional Operador Relacional Operador Lógico Operador Lógico
2. 2. Estrutura Condicional Simples Estrutura Condicional Simples 3. 3. Estrutura Condicional Composta Estrutura Condicional Composta 4. 4. Operador condicional Operador condicional
5. 5. Condicionais Aninhados e Encadeados Condicionais Aninhados e Encadeados 6. 6. Estrutura Case Estrutura Case
Faculdade da Computação Faculdade da Computação --UFUUFU 4
4
1. Expressões Lógicas 1. Expressões Lógicas
Em C, não existe um tipo específico Em C, não existe um tipo específico para a representação de valores
para a representação de valores lógicos.
lógicos.
Entretanto, qualquer valor pode ser Entretanto, qualquer valor pode ser interpretado como um valor lógico:
interpretado como um valor lógico:
zero zero representa falso representa falso e qualquer e qualquer outro valor
outro valor representa verdade representa verdade
Faculdade da Computação Faculdade da Computação --UFUUFU 5
5
Operadores Relacionais Operadores Relacionais
Para
Para gerar gerar um um valor lógico valor lógico , usamos os , usamos os operadores relacionais
operadores relacionais
Operador relacional Resultado x ==y verdade se xfor igual a y
x!= y verdade se xfor diferente de y x <y verdade se xfor menor que y x >y verdade se xfor maior que y
x<=y verdade se xfor menor ou igual a y
x >=y verdade se xfor maior ou igual a y
Operadores Lógicos Operadores Lógicos
AlémAlém dos operadores relacionaisdos operadores relacionais, C , C oferece oferece também
também operadores lógicosoperadores lógicos. Com . Com eleseles, ,
podemos criar expressões lógicas compostas podemos criar expressões lógicas compostas
Operador lógico Resultado
! x verdade se e só se xfor falso
x&&y verdade se e só se x e y forem
verdade
x|| y verdade se e só se x ou y for verdade
Faculdade da Computação Faculdade da Computação --UFUUFU 7
7
Estrutura Condicional Simples Estrutura Condicional Simples
A estrutura condicional de decisão simples A estrutura condicional de decisão simples serve para escolher um comando para serve para escolher um comando para execução, caso a condição for verdadeira.
execução, caso a condição for verdadeira.
Sintaxe da estrutura condicional simples:
Sintaxe da estrutura condicional simples:
if(if( condição ) condição ) comando1comando1;;
condição comando1
V
F
Faculdade da Computação Faculdade da Computação --UFUUFU 8
8
Estrutura Condicional Composta Estrutura Condicional Composta
A estrutura condicional ou de decisão simples A estrutura condicional ou de decisão simples serve para escolher um entre dois comandos serve para escolher um entre dois comandos alternativos.
alternativos.
A estrutura condicional é codificada como:
A estrutura condicional é codificada como:
if(if( condição ) condição ) comando1comando1;; elseelse comando2;comando2;
condição
comando1 comando2
V F
Faculdade da Computação Faculdade da Computação --UFUUFU 9
9
Estrutura Condicional Estrutura Condicional Exemplo:
Exemplo:
#include <
#include <stdiostdio.h>.h>
void
void main() main() {{
float a, b, m;
float a, b, m;
printf
printf(“\(“\n Informen Informe duas notas : ”);duas notas : ”);
scanf
scanf(“%f %f”, &a, &b);(“%f %f”, &a, &b);
m = (a+b)/2;
m = (a+b)/2;
if( m >= 7.0 )
if( m >= 7.0 ) printfprintf(“\(“\n n AprovadoAprovado”);”);
else
else printfprintf(“\(“\n Reprovadon Reprovado”);”);
}}
Desafios de Programação:
Desafios de Programação:
P1:Dado um P1:Dado um anoano, , informeinforme se elese ele é é ou não ou não bissexto
bissexto. .
[[DicaDica: um : um anoano é bissextoé bissexto se é divisível porse é divisível por 4 4 mas não por
mas não por 100]100]
P2:Numa empresa pagaP2:Numa empresa paga--se R$ 19,50 a horase R$ 19,50 a hora e e recolhe
recolhe--se parase para o impostoo imposto de rendade renda 10% dos 10% dos salários acima
salários acima de R$ 1500,00. Dado o númerode R$ 1500,00. Dado o número de de horas trabalhadas porhoras trabalhadas por um um funcionário, funcionário,
Faculdade da Computação Faculdade da Computação --UFUUFU 11
11
Operador Condicional Operador Condicional
C
C oferece tambémoferece também um um operador que operador que proporciona uma
proporciona uma forma mais compactaforma mais compacta de se de se representar decisões
representar decisões simples. O operador simples. O operador condicional
condicional, , cuja sintaxecuja sintaxe éé condição
condição ?? expressão1expressão1 :: expressão2expressão2 Ex.:Ex.:
abs = n>0 ? n : abs = n>0 ? n : --n;n;
Uma vantagem no uso do operador condicional
Uma vantagem no uso do operador condicional ééque, sendo que, sendo um operador, podemos utiliz
um operador, podemos utilizáá--lo em qualquer contexto em lo em qualquer contexto em que uma express
que uma expressãão o éé permitidapermitida..
Faculdade da Computação Faculdade da Computação --UFUUFU 12
12
Condicionais Aninhados e Condicionais Aninhados e Encadeados
Encadeados
estrutura condicional
estrutura condicional serve para selecionarserve para selecionar e e executar
executar um um entre dois comandos entre dois comandos alternativos
alternativos. .
É É possível quepossível que, , algumas vezesalgumas vezes, um , um destes destes comandos alternativos
comandos alternativos ((ouou ambos) sejam ambos) sejam também condicionais
também condicionais. . Nesse caso
Nesse caso, , dizemos quedizemos que o primeiro o primeiro condicional
condicional é o principalé o principal e o outro está e o outro está aninhado
aninhado ou encadeadoou encadeado
Faculdade da Computação Faculdade da Computação --UFUUFU 13
13
Condicionais Aninhados e Condicionais Aninhados e Encadeados
Encadeados
Sintaxe Sintaxe::
if( condiçãoif( condição)) /* principal *//* principal */
if ...
if ... /* aninhado/* aninhado */*/
else else
if ...
if ... /* encadeado/* encadeado */*/
Problema Problema::
“Dados tr“Dados trêês ns núúmeros verificar se eles podem meros verificar se eles podem representar as medidas dos lados de um tri
representar as medidas dos lados de um triâângulo e, se ngulo e, se puderem, classificar o tri
puderem, classificar o triâângulo em equilngulo em equiláátero, istero, isóósceles sceles ou escaleno
ou escaleno””..
-
-Para que três números representem os ladosPara que três números representem os ladosde um triângulode um triânguloé é necessário que cada
necessário que cada um deles um deles seja menor queseja menor quea soma dos outros doisa soma dos outros dois.. --Um triânguloUm triânguloé equiláteroé equiláterose tem se tem os três lados iguaisos três lados iguais, , isóscelesisósceles se tem se tem apenas dois lados iguais
apenas dois lados iguaise escalenoe escalenose tem se tem todos os lados distintostodos os lados distintos
#include <
#include <stdiostdio.h>.h>
#include <
#include <conioconio.h>.h>
void
void main() {main() { float a, b, c;
float a, b, c;
clrscr();
clrscr();
printf(
printf(““\\nInforme trnInforme trêês ns núúmeros: meros: ““););
scanf
scanf((““%f %f %f%f %f %f””, &a, &b, &c);, &a, &b, &c);
if( a<b+c && b<a+c && c<a+b ) { if( a<b+c && b<a+c && c<a+b ) {
printf(
printf(““\\nnÉÉum trium triâângulo: ngulo: ””););
if( a==b && b==c )
if( a==b && b==c ) printfprintf((““equilequilááterotero””););
else if( a==b || a==c || b==c )
else if( a==b || a==c || b==c ) printfprintf((““isisóóscelessceles””););
else printf(
else printf(““escalenoescaleno””););
}}
Faculdade da Computação Faculdade da Computação --UFUUFU 15
15
Desafio de Programação Desafio de Programação
P1:Numa faculdadeP1:Numa faculdade, , os alunosos alunos com média com média maior ou igual amaior ou igual a 7,0 7,0 são aprovadossão aprovados, , aquelesaqueles com médiacom média inferior a 3,0 são inferior a 3,0 são reprovados
reprovados e os demais ficame os demais ficam de de recuperaçãorecuperação. . DadasDadas as as duas notas
duas notas de um de um alunoaluno, , informe sua situaçãoinforme sua situação. . EmitirEmitir as as mensagens aprovado
mensagens aprovado, , reprovadoreprovado e e recuperaçãorecuperação, , respectivamente
respectivamente
P2:Dados P2:Dados os coeficientesos coeficientes (a≠(a≠0, b e c) de 0, b e c) de uma equaçãouma equação do do 2o 2o graugrau, , calculecalcule e informe suas raízes reaise informe suas raízes reais, , usandousando a a fórmula
fórmula de Báskarade Báskara::
a
ac b
x , b
2
2 4
2 1
−
±
= −
Faculdade da Computação Faculdade da Computação --UFUUFU 16
16
Estrutura Switch
Estrutura Switch - - Case Case
A A estruturaestrutura de decisão múltiplade decisão múltipla é bastante é bastante adequada quando precisamos escolher uma adequada quando precisamos escolher uma entre várias alternativas previamente
entre várias alternativas previamente definidas
definidas, , por exemplopor exemplo, num menu. , num menu.
A A decisão múltipladecisão múltipla tem a seguintetem a seguinte sintaxe:sintaxe:
switch(
switch( expressãoexpressão) ) {
{
case constante1 : comando1; break;
case constante1 : comando1; break;
case constante2 : comando2; break;
case constante2 : comando2; break;
...
...
case
case constantenconstanten: : comandoncomandon; break;; break;
default :
default : comandocomando; ; }
}
Faculdade da Computação Faculdade da Computação --UFUUFU 17
17
Estrutura switch
Estrutura switch- -case case exemplo:
exemplo:
#include <
#include <stdiostdio.h>.h>
void
void main() {main() { intint n;n;
printf(
printf(““\\n Digite um nn Digite um núúmero: mero: ””););
scanf(
scanf(““%d%d””, &n);, &n);
switch( n ) { switch( n ) { case 1:
case 1: putcharputchar('A'); break;('A'); break;
case 3:
case 3: putcharputchar('B');('B');
case 4:
case 4: putcharputchar('C'); break;('C'); break;
default:
default: printfprintf('*');('*');
case 5:
case 5: putcharputchar('D');('D');
}}
putchar
putchar('.'); ('.');
} }
Bibliografia Bibliografia
Pereira, S.L., Linguagem C
Pereira, S.L., Linguagem C –– Distribuição gratuitaDistribuição gratuita Schildt
Schildt, H., C , H., C CompletoCompleto e Total, e Total, Editora MakronEditora MakronBooks do Books do Brasil Editora Ltda
Brasil Editora Ltda, 1996., 1996.
Evaristo
Evaristo, J., , J., AprendendoAprendendo a programar programando em a programar programando em linguagem
linguagem C, Book Express, 2001.C, Book Express, 2001.
Mizrahi
Mizrahi, V. V., , V. V., Treinamento em LinguagemTreinamento em Linguagem C, C, Curso Curso Completo
Completo, , MódulosMódulos 1 e 2, 1 e 2, MakronMakron Books do Brasil Books do Brasil Editora Ltda
Editora Ltda,1990.,1990.
Kernighan
Kernighan, B.W & Ritchie, D. M., C a , B.W & Ritchie, D. M., C a LinguagemLinguagem de de Programação
Programação, , EditoraEditora Campus, 1986.Campus, 1986.