aula 06. pontifícia universidade católica de goiás puc goiÁs departamento de computação...

27
Aula 06

Upload: internet

Post on 18-Apr-2015

109 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Aula 06. 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

Aula 06

Page 2: Aula 06. 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

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

Page 3: Aula 06. 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

CONTROLE DE FLUXO

ESTRUTURA CONDICIONAL 1

INFORMÁTICA E COMPUTAÇÃOCMP 1060AULA 6

Page 4: Aula 06. 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

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

Page 5: Aula 06. 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

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

Page 6: Aula 06. 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

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

Page 7: Aula 06. 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

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

Page 8: Aula 06. 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

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

Page 9: Aula 06. 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

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

Page 10: Aula 06. 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

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.

Page 11: Aula 06. 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

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

Page 12: Aula 06. 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

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

Page 13: Aula 06. 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

// 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

Page 14: Aula 06. 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

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

Page 15: Aula 06. 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

#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

Page 16: Aula 06. 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

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.

Page 17: Aula 06. 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

#include <iostream> using namespace std;main() {

setlocale(LC_ALL, " "); // 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<< " é maior do que " << Y << endl; }

else { cout << X << " é 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

Page 18: Aula 06. 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

#include <iostream>using namespace std; main( ) { setlocale(LC_ALL, " "); int N; cout << " Digite um numero inteiro: "; cin >> N ; if ( N % 2 == 0 ) cout << N << " É par \n "; else cout<< N << " É impar \n "; system ("PAUSE")} parimpar.exe

// programa que verifica se um número é par ou ímpar*/

AnaliseN | 2 ` 0 quociente

PAR

Page 19: Aula 06. 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

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

Page 20: Aula 06. 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

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 {

}

Page 21: Aula 06. 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

Condicional Simples#include <iostream>using namespace std;main(){ setlocale(LC_ALL, " ");    int number = 75, nota; cout <<“\nEntre com sua nota, por favor "; cin>>nota; if (nota >= number) {

cout << "Incrivel, voce passou com mérito.\n"); }

system ("PAUSE")}

Exemplos de uso de estrutura condicional simples X composta

Page 22: Aula 06. 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

#include <iostream> Condicional Compostausing namespace std;main(){ setlocale(LC_ALL, " ");    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")}

Page 23: Aula 06. 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

#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

Page 24: Aula 06. 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

#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

Page 25: Aula 06. 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

Desafio

Faça um programa que leia um número inteiro e diga se ele é divisível por 2 e por 3 simultaneamente.

Informe se é divisível simultaneamente.

Caso não seja divisível simultaneamente.

Informe por qual é divisível ou se não é divisível por nenhum dos dois.

Page 26: Aula 06. 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

#include<iostream>using namespace std;main(){ setlocale(LC_ALL,""); int numero, num_2, num_3; cout<<"\n\nTeste de Número divisível por 2 e 3 simultaneamente"; cout<<"\n\nDigite o numero a ser testado : "; cin>>numero; num_2=numero%2; num_3=numero%3; if((num_2==0)&&(num_3==0)) cout<<"\n\nO número "<<numero<<" é divisivel por 2 e por 3 simultaneamente\n\n"; else { if(num_2==0) { cout<<"\n\nO número "<<numero<<" é divisivel por 2"; cout<<"\n\nO número "<<numero<<" não é divisivel por 3"; cout<<"\nO resto da divisão por 3 é : "<<num_3<<"\n\n"; }

Page 27: Aula 06. 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

else { if(num_3==0) { cout<<"\n\nO número "<<numero<<" é divisivel por 3"; cout<<"\n\nO número "<<numero<<" não é divisivel por 2"; cout<<"\nO resto da divisão por 2 é : "<<num_2<<"\n\n"; } else { cout<<"\nO número "<<numero<<" não é divisivel por 2"; cout<<"\nO resto da divisão por 2 é : "<<num_2<<"\n\n"; cout<<"\n\nO número "<<numero<<" não é divisivel por 3"; cout<<"\nO resto da divisão por 3 é : "<<num_3<<"\n\n"; } } } system("pause"); }