Pontifícia Universidade Católica de Goiás PUC GOIÁS Departamento de Computação Informática e...
Transcript of Pontifícia Universidade Católica de Goiás PUC GOIÁS Departamento de Computação Informática e...
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