Pontifícia Universidade Católica de Goiás PUC GOIÁS
Departamento de Computação
Informática e
ComputaçãoProfessor: MSc. Mário Oliveira Orsi
Cesar Augusto da Rocha Magalhães
CONTROLE DE FLUXO
ESTRUTURA CONDICIONAL 1
INFORMÁTICA E COMPUTAÇÃOCMP 1060AULA 6
Os programas que vimos até agora têm a seguinte estrutura:
main( ) { declarações
instrução 1 instrução 2 instrução 3...
instrução N
}
ESTRUTURA SEQUENCIAL
O caso geral da instrução if - else:
if ( expressão )
instrução1 ;
else instrução2 ;
If Se a (expressão) entre os parenteses for
VERDADEIRA
executo a instrução 1 else senão executo
a instrução 2
Exemplo:If (X > Y)X = Yelse X = X +1
Estrutura Condicional
// se for verdade que o valor de X é maior que Y
// atribui o valor de Y para X
// senão adciono 1 ao valor de X
O caso geral da instrução if - else:
if ( expressão )
instrução1 ;
else instrução2 ;
O comando else não é obrigatório:
if ( expressão ) // se a expressao for verdadeira
instrução1 ; // executo a instrução 1 e sigo a execução
If Se a (expressão) entre os parenteses for
VERDADEIRA
executo a instrução 1 else senão executo
a instrução 2
Estrutura Condicional
Símbolo Significado
< menor
> maior
<= menor ou igual
>= maior ou igual== igual
!= diferente
Símbolos Relacionais
Expressões Logicas: é a expressão cujo operadores são lógicos e cujos operandos são relações, constantes e/ou variáveis do tipo lógico.
Relações: X > Y o resultado será verdadeiro ou falso.
Estrutura Condicional
Exemplos: X + Y = Z , X e Y = Z
Operadores LógicosSÃO CONECTORES QUE RELACIONAM PROPOSIÇÕES QUE
PODEM SER VERDADEIRAS OU FALSAS.
e conjunção (é verdadeira se e somente se ambas as proposições são verdadeiras).
ou disjunção ( é verdadeira se pelo menos uma delas for verdadeira).
não negação (é negação da expressão)
Estrutura Condicional
FALSO
VERDADEIRO
VERDADEIRO
VERDADEIRO
FALSO
VERDADEIRO
FV
VV
FV
VV
Estrutura Condicional
!(2 > 3)NÃO!
!(5>1)!
(4> 2) || (10 > 5)OU||
(3> 1) || (10 > 11)OU||
(2 >1) && (10 > 9)E&&
(5 > 1) && (3>10)E&&
ExemploDescriçãoOperador
NÃO
Resultado
Estrutura Condicional Simples
if ( expressão )
instrução1 ;
Exemplo
Desenvolver um programa para entrar com um preço do carro e calcular o preço final de acordo com as opções do usuário com os opcionais de
vidro elétrico, ar condicionado, trava central, pintura metálica e ar condicionado.
Desenvolver um programa para entrar com um preço do carro e calcular o preço final de acordo com as opções do usuário com os opcionais de
vidro elétrico, ar condicionado, trava central, pintura metálica e ar condicionado.
Análise: Preço do carro = 22000,00Ar condicionado + 2500,00Dir hidraulica + 2000,00Pintura metálica + 650,00Vidro elétrico + 500,00Trava central + 400,00 Preço final carro 28050,00
Resposta:
‘s’ ‘n’ ‘S’ ‘N’
Entro com o valor do carroPergunto pelos opcionais:
Tabela de Preços: Ar concionado R$ 2500,00Dir . Hidraulica R$ 2000,00Pintura metálica R$ 650,00Vidro elétrico R$ 500,00Trava central R$ 400,00
Desenvolver um programa para entrar com um preço do carro e calcular o preço final de acordo com as opções do usuário com os opcionais de
vidro elétrico, ar condicionado, trava central, pintura metálica e ar condicionado.
Análise: Preço do carro = 22000,00Ar condicionado + 2500,00Dir hidraulica + 2000,00Pintura metálica + 650,00Vidro elétrico + 500,00Trava central + 400,00 Preço final carro 28050,00
Resposta:
‘s’ ‘n’ ‘S’ ‘N’
RESPAC
RESPDH
RESPPM
RESPVE
RESPTC
PRECOFINAL
DEFINIÇÃO DAS VARIÁVEIS
Se não for adicionado nenhum opcional o PRECOFINAL é o valor do preço
INICIAL do carro
// programa PRECOCARRO#include <iostream>using namespace std; main( ){char RESPAC, RESPDH, RESPPM, RESPVE, RESPTC;float PRECOFINAL=0;//leia os dados de entrada
cout << "Qual o preco inicial do carro";cin >> PRECOFINAL;cout << "Deseja Ar Condicionado (S/N) , (s/n)? ";cin >> RESPAC;cout << ”Deseja Direcao Hidraulica (S/N) , (s/n)? ";cin >> RESPDH;cout << "Deseja Pintura Metalica (S/N) , (s/n)? ";cin >> RESPPM;cout << "Deseja Vidros Eletricos (S/N) , (s/n)? ";cin >> RESPVE;cout << "Deseja Trava Central (S/N) , (s/n)? ";cin >> RESPTC;
// teste da resposta do cliente
RESPAC
RESPDH
RESPPM
RESPVE
RESPTC
PRECOFINAL
Resposta:
‘s’ ‘n’ ‘S’ ‘N’
O preço inicial do carro será = preço final sem nenhum opcional, entretanto existe a
possibilidade de se querer comprar só item(s) opcionais PRECOFINAL=preço do carro = 0
if ( (RESPAC == 'S') || (RESPAC == 's') )PRECOFINAL = PRECOFINAL + 2500. ;
if ( (RESPDH == 'S') || (RESPDH == 's') )PRECOFINAL = PRECOFINAL + 2000. ;
if ( (RESPPM == 'S') || (RESPPM =='s') )PRECOFINAL = PRECOFINAL + 650. ;
if( (RESPVE == 'S') || (RESPVE == 's') ) PRECOFINAL = PRECOFINAL + 500. ;
if ( (RESPTC == 'S') || (RESPTC == 's') ) PRECOFINAL = PRECOFINAL + 400. ;
//exiba os resultados de saídacout<< "R$ "<< PRECOFINAL<< " será o preço final do carro. \n“ ;
system("PAUSE");
}
Preço do carro = 22000,00Ar condicionado + 2500,00Dir hidraulica + 2000,00Pintura metálica + 650,00Vidro elétrico + 500,00Trava central + 400,00Preço final do carro 28050,00
RESPAC
RESPDH
RESPPM
RESPVE
RESPTC
PRECOFINAL
Resposta: ‘s’ ‘n’ ‘S’ ‘N’// teste da resposta do cliente
#include <iostream>using namespace std;main( ) { char RESPAC, RESPDH, RESPPM, RESPVE, RESPTC; float PRECOFINAL=0;
cout << "Qual o preco inicial do carro";cin >> PRECOFINAL;cout << "Deseja Ar Condicionado (S/N) , (s/n)? ";cin >> RESPAC;cout << ”Deseja Direcao Hidraulica (S/N) , (s/n)? ";cin >> RESPDH;cout << "Deseja Pintura Metalica (S/N) , (s/n)? ";cin >> RESPPM;cout << "Deseja Vidros Eletricos (S/N) , (s/n)? ";cin >> RESPVE;cout << "Deseja Trava Central (S/N) , (s/n)? ";cin >> RESPTC;
If ( (RESPAC == 'S') || (RESPAC == 's') )PRECOFINAL = PRECOFINAL + 2500. ;
If ( (RESPDH == 'S') || (RESPDH == 's') ) PRECOFINAL = PRECOFINAL + 2000. ;
If ( (RESPPM == 'S') || (RESPPM =='s') )PRECOFINAL = PRECOFINAL + 650. ;
If ( (RESPVE == 'S') || (RESPVE == 's')) PRECOFINAL = PRECOFINAL + 500. ;If ( (RESPTC == 'S') || (RESPTC == 's') ) PRECOFINAL = PRECOFINAL + 400. ;
cout<< "R$ "<< PRECOFINAL<< " será o preço final do carro. \n“ ; system("PAUSE"); }
RESPAC
RESPDH
RESPPM
RESPVE
RESPTC
PRECOFINAL
S
RASTREAMENTO
Preço do carro = 22000,00Ar condicionado + 2500,00Dir hidraulica + 2000,00Pintura metálica + 650,00Vidro elétrico + 500,00Trava central + 400,00Preço final do carro 28050,00
S
S
S
S
022000 2450026500271502765028050
carroaut.exe
Estrutura Condicional Composta
if ( expressão )
instrução1 ;
else instrução2 ;
Exemplo 1
Desenvolver um programa para entrar com dois números e exibir o maior entre eles.
#include <iostream> using namespace std;main() { // define dois inteiros int X, Y; // entra com dois números inteiros cout <<“ Digite dois numeros inteiros diferentes: ”;
cin >>X >> Y; //exibe uma mensagem dizendo qual número é maior
if (X > Y) {cout << X<<“ eh maior do que " << Y << endl; }
else { cout << X << " eh menor do que " << Y << endl; } system("PAUSE");
}maior.exe
943
X
Y
587
// prog para exibir o maior de 2 numeros X e Y
RASTREAMENTO
#include <iostream>using namespace std; main( ) { int N; cout << " Digite um numero inteiro: "; cin >> N ; if ( N % 2 == 0 ) cout << N << " Eh par \n "; else cout<< N << " Eh impar \n "; system ("PAUSE")} parimpar.exe
// programa que verifica se um número é par ou ímpar*/
AnaliseN | 2 ` 0 quociente
PAR
ERROS FREQUENTES
if(...) instrução1; instrução2;
Provavelmente aquilo que queriam fazer era:
if(...) {
instrução1; instrução2; }
Se a (express..) verdadeira
Executo inst. 1 e inst. 2
Desta forma :Se a (expressão) for
verdadeiraExecuto apenas a inst. 1Se for falsa pulo a inst. 1
eExecuto a instrução 2
If ( expressão )
{
instrução1;
instrução2;
instrução3 ;
instrução4 ;
}
else
{
instrução5;
instrução6 ;
}
Instrução7;
Instrução8;
SE EXISTIR MAIS DE UMA INSTRUÇÃO PARA SER EXECUTADA DENTRO
DO COMANDO if
OU DO else
DEVEMOS COLOCAR AS CHAVES {
}
Condicional Simples#include <iostream>using namespace std;main(){ int number = 75, nota; cout <<“Entre com sua nota, por favor \n"; cin>>nota; if (nota >= number) {
cout << "Incrivel, voce passou com merito.\n"); }
system ("PAUSE")}
Exemplos de uso de estrutura condicional simples X composta
#include <iostream> Condicional Compostausing namespace std;main(){ int number = 75, nota; cout << “ Entre com sua nota, por favor \n”; cin >> nota;
if (nota >= number) { cout << " Incrível, voce passou com mérito. \n"; } else { cout << " Que pena, voce reprovou. \n"; }system ("PAUSE")}
#include <iostream>#include <cstdlib>using namespace std;main(){ int number = 75, nota; cout <<”Entre com sua nota, por favor \ n"; cin >> nota; if (nota >= number) { cout <<"Incrivel, voce passou com merito. \n"; } else if (nota >= 50) { cout<<”Você passou \n"; } else { cout<<”Que pena, você reprovou.\n"; } system (“PAUSE”);}
Condicional Composta Aninhada
#include <iostream>#include <cstdlib>using namespace std;main(){ int number = 75, nota; cout <<”Entre com sua nota, por favor \ n"; cin >> nota; if (nota >= number) { cout <<"Incrivel, voce passou com merito. \n"; } else if (nota >= 50) { cout<<”Você passou \n"; } else { cout<<”Que pena, você reprovou.\n"; } system (“PAUSE”);}
Condicional Composta Aninhada