Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
Pontifícia Universidade Católica de Goiás PUC GOIÁS
Departamento de Computação
Informática
e
Computação
Professor: MSc. Mário Oliveira Orsi
Cesar Augusto da Rocha Magalhães
1
CONTROLE DE FLUXO
ESTRUTURA CONDICIONAL 1
INFORMÁTICA E COMPUTAÇÃO
CMP 1060
AULA 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 = Y
else 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ógicos
SÃ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
F
V
V
V
F
V
V
V
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
&&
Exemplo
Descrição
Operador
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,00
Ar condicionado + 2500,00
Dir hidraulica + 2000,00
Pintura metálica + 650,00
Vidro elétrico + 500,00
Trava central + 400,00
Preço final carro 28050,00
Resposta:
‘s’ ‘n’ ‘S’ ‘N’
Entro com o valor do carro
Pergunto pelos opcionais:
Tabela de Preços:
Ar concionado R$ 2500,00
Dir . Hidraulica R$ 2000,00
Pintura metálica R$ 650,00
Vidro elétrico R$ 500,00
Trava 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,00
Ar condicionado + 2500,00
Dir hidraulica + 2000,00
Pintura metálica + 650,00
Vidro elétrico + 500,00
Trava 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
12
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ída
cout<< "R$ "<< PRECOFINAL<< " será o preço final do carro. \n“ ;
system("PAUSE");
}
Preço do carro = 22000,00
Ar condicionado + 2500,00
Dir hidraulica + 2000,00
Pintura metálica + 650,00
Vidro elétrico + 500,00
Trava central + 400,00
Preç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,00
Ar condicionado + 2500,00
Dir hidraulica + 2000,00
Pintura metálica + 650,00
Vidro elétrico + 500,00
Trava central + 400,00
Preço final do carro 28050,00
S
S
S
S
0
22000
24500
26500
27150
27650
28050
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*/
Analise
N | 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 verdadeira
Executo apenas a inst. 1
Se for falsa pulo a inst. 1 e
Executo 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 Composta
using 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