Você está na página 1de 38

LGICA DE PROGRAMAO PARA

ENGENHARIA
Prof. Dr. Daniel Caetano
2012 - 2

ESTRUTURA COM
DECISO MLTIPLA
Objetivos
Entender o que so decises
mltiplas
Compreender como
implementar decises mltiplas
Capacitar para a criao de
menus

PARA CASA
Lista de Exerccios 2 est ONLINE!

Material de Estudo
Material Acesso ao Material
Notas de Aula http://www.caetano.eng.br/
(Aula 10)
Apresentao http://www.caetano.eng.br/
(Aula 10) PARCIAL / COMPLETO
Material Didtico Fundamentos da Programao de Computadores
Parte 1 Pginas 50 a 92.
MOTIVAO
O que so decises mltiplas?
Deciso Simples: uma nica comparao
Deciso Mltipla: mltiplas regras
Como? Exemplo: aprovao/reprovao

N 6.0
E
F 75
Verdadeiro
Falso
N < 6.0
OU
F < 75
Verdadeiro
Falso
O que so decises mltiplas?
if ( NOTA >= 6.0) {






}
else {
cout << F: Reprovado!;
}

N 6
E
F 75
Verdadeiro
Falso
O que so decises mltiplas?
if ( NOTA >= 6.0) {
if ( FREQ >= 75) {
cout << V: Aprovado!;
}
else {
cout << F: Reprovado!;
}
}
else {
cout << F: Reprovado;
}

N 6
E
F 75
Verdadeiro
Falso
O que so decises mltiplas?
N < 6.0
OU
F < 75
Verdadeiro
Falso
if ( NOTA < 6.0) {
cout << V: Reprovado!;
}
else {






}

O que so decises mltiplas?
N < 6.0
OU
F < 75
Verdadeiro
Falso
if ( NOTA < 6.0) {
cout << V: Reprovado!;
}
else {
if ( FREQ < 75) {
cout << V: Reprovado!;
}
else {
cout << F: Aprovado!;
}
}

O que so decises mltiplas?
N < 6.0
OU
F < 75
Verdadeiro
Falso
if ( NOTA < 6.0) {
cout << V: Reprovado!;
}
else {
if ( FREQ < 75) {
cout << V: Reprovado!;
}
else {
cout << F: Aprovado!;
}
}

No pode ser
to complicado!
DECISES MLTIPLAS
Deciso Mltipla
Receba a nota de
um aluno e a
frequncia dele e
responda: aprovado
caso a nota seja
maior ou igual a 6,0
e a frequncia seja
maior ou igual a
75% e reprovado
caso contrrio

Incio
N, F
N 6.0
E
F 75
Aprovado
V
Fim
F
Reprovado
Deciso Mltipla
Receba a nota de um aluno e a
frequncia dele e responda: aprovado
caso a nota seja maior ou igual a 6,0 e a
frequncia seja maior ou igual a 75% e
reprovado caso contrrio

Incio
N, F
N 6.0
E
F 75
Aprovado
V
Fim
F
Reprovado
#include <iostream>
using namespace std;
int main(void) {
float N, F;
cout << Digite a nota: ;
cin >> N;
cout << Digite a freq.: ;
cin >> F;
if ( N >= 6.0 && F >= 75 ) {
cout << Aprovado;
}
else {
cout << Reprovado;
}
}
Operadores Lgicos
O que vem a ser && ?

Operador Smbolo Exemplo Significado
OU || x == 2 || x == 9
Verdadeiro se x == 2 OU x
== 9
E && x > 2 && x < 9
Verdadeiro se x > 2 E x < 9
(testa se 2 < x < 9)
NO ! !(x == 2)
Verdadeiro se x NO for
igual a 2
Operadores Lgicos
O que vem a ser &&, || e ! ?

Operador Smbolo Exemplo Significado
OU || x == 2 || x == 9
Verdadeiro se x == 2 OU x
== 9
E && x > 2 && x < 9
Verdadeiro se x > 2 E x < 9
(testa se 2 < x < 9)
NO ! !(x == 2)
Verdadeiro se x NO for
igual a 2
Exerccio
Faa um programa que l dois nmeros e depois
apresente um menu com duas opes: 1- Soma;
2- Subtrai e age de acordo com a opo escolhida.
Se o usurio escolher uma opo invlida, deve
apresentar mensagem de erro.

Incio
N1, N2
OP 1
E
OP 2
Opo
Invlida
V
Fim
F
1: Soma,
2: Subtrai
OP
OP = 1 R = N1 + N2
OP = 2 R = N1 - N2
R
R
V
F
V
F
Exerccio
Soluo
Incio
N1, N2
OP 1
E
OP 2
Opo
Invlida
V
Fim
F
1: Soma,
2: Subtrai
OP
OP = 1 R = N1 + N2
OP = 2
R = N1 - N2
R
R
V
F
V
F
#include <iostream>
using namespace std;
int main(void) {
float N1, N2, R;
int OP;
cout << Digite N1: ;
cin >> N1;
cout << Digite N2: ;
cin >> N2;
cout << Menu << endl;
cout << 1: Soma << endl;
cout << 2: Subtrai << endl;
cin >> OP;
if ( OP == 1 ) {
R = N1 + N2;
cout << Res: << R;
}
if ( OP == 2 ) {
R = N1 - N2;
cout << Res: << R;
}
if ( OP != 1 && OP != 2 ) {
cout << Opo Invlida!;
}
}
Exerccio Soluo (zoom)
#include <iostream>
using namespace std;
int main(void) {
float N1, N2, R;
int OP;
cout << Digite N1: ;
cin >> N1;
cout << Digite N2: ;
cin >> N2;
cout << Menu << endl;
cout << 1: Soma << endl;
cout << 2: Subtrai << endl;
cin >> OP;
if ( OP == 1 ) {
R = N1 + N2;
cout << Res: << R;
}
if ( OP == 2 ) {
R = N1 - N2;
cout << Res: << R;
}
if ( OP != 1 && OP != 2 ) {
cout << Opo Invlida!;
}
}
Exerccio Soluo (Outra Forma)
#include <iostream>
using namespace std;
int main(void) {
float N1, N2, R;
int OP;
cout << Digite N1: ;
cin >> N1;
cout << Digite N2: ;
cin >> N2;
cout << Menu << endl;
cout << 1: Soma << endl;
cout << 2: Subtrai << endl;
cin >> OP;
if ( OP == 1 ) {
R = N1 + N2;
cout << Res: << R;
}
else if ( OP == 2 ) {
R = N1 - N2;
cout << Res: << R;
}
else {
cout << Opo Invlida!;
}
}
Exerccio Soluo (Outra Forma)
#include <iostream>
using namespace std;
int main(void) {
float N1, N2, R;
int OP;
cout << Digite N1: ;
cin >> N1;
cout << Digite N2: ;
cin >> N2;
cout << Menu << endl;
cout << 1: Soma << endl;
cout << 2: Subtrai << endl;
cin >> OP;
if ( OP == 1 ) {
R = N1 + N2;
cout << Res: << R;
}
else if ( OP == 2 ) {
R = N1 - N2;
cout << Res: << R;
}
else {
cout << Opo Invlida!;
}
}
Encadeamento
de IFs
Exerccio Soluo (Outra Forma)
#include <iostream>
using namespace std;
int main(void) {
float N1, N2, R;
int OP;
cout << Digite N1: ;
cin >> N1;
cout << Digite N2: ;
cin >> N2;
cout << Menu << endl;
cout << 1: Soma << endl;
cout << 2: Subtrai << endl;
cin >> OP;
if ( OP == 1 ) {
R = N1 + N2;
cout << Res: << R;
}
else if ( OP == 2 ) {
R = N1 - N2;
cout << Res: << R;
}
else {
cout << Opo Invlida!;
}
}
Se OP == 1...
Exerccio Soluo (Outra Forma)
#include <iostream>
using namespace std;
int main(void) {
float N1, N2, R;
int OP;
cout << Digite N1: ;
cin >> N1;
cout << Digite N2: ;
cin >> N2;
cout << Menu << endl;
cout << 1: Soma << endl;
cout << 2: Subtrai << endl;
cin >> OP;
if ( OP == 1 ) {
R = N1 + N2;
cout << Res: << R;
}
else if ( OP == 2 ) {
R = N1 - N2;
cout << Res: << R;
}
else {
cout << Opo Invlida!;
}
}
Se OP == 1...
Se OP ! = 1...
Exerccio Soluo (Outra Forma)
#include <iostream>
using namespace std;
int main(void) {
float N1, N2, R;
int OP;
cout << Digite N1: ;
cin >> N1;
cout << Digite N2: ;
cin >> N2;
cout << Menu << endl;
cout << 1: Soma << endl;
cout << 2: Subtrai << endl;
cin >> OP;
if ( OP == 1 ) {
R = N1 + N2;
cout << Res: << R;
}
else if ( OP == 2 ) {
R = N1 - N2;
cout << Res: << R;
}
else {
cout << Opo Invlida!;
}
}
Se OP == 1...
Se OP ! = 1...
...e OP == 2
Exerccio Soluo (Outra Forma)
#include <iostream>
using namespace std;
int main(void) {
float N1, N2, R;
int OP;
cout << Digite N1: ;
cin >> N1;
cout << Digite N2: ;
cin >> N2;
cout << Menu << endl;
cout << 1: Soma << endl;
cout << 2: Subtrai << endl;
cin >> OP;
if ( OP == 1 ) {
R = N1 + N2;
cout << Res: << R;
}
else if ( OP == 2 ) {
R = N1 - N2;
cout << Res: << R;
}
else {
cout << Opo Invlida!;
}
}
Se OP == 1...
Se OP ! = 1...
...e OP != 2
ESTRUTURA DE
ESCOLHA
Estrutura de Escolha
muito comum precisar criar estruturas como
a indicada anteriormente...
Ler opes do usurio
Atuar em uma tecla de equipamento
Agir de acordo com o resultado de um processo

Por isso existe uma estrutura especial para
este tipo de menu!
Estrutura de Escolha
switch ( varivel ) {
case 1:
Cdigo caso varivel == 1
break;
case 2:
Cdigo caso varivel == 2
break;
default:
Cdigo para todos os outros casos
}
Estrutura de Escolha: Ex.: Menu
#include <iostream>
using namespace std;

int main(void) {
int OP;
cout << Menu: << endl;
cout << 1: Opo 1 << endl;
cout << 2: Opo 2 << endl;
cout << Digite uma Opo: ;
cin >> OP;
switch (OP) {
case 1:
cout << Opo 1;
break;
case 2:
cout << Opo 2;
break;
default:
cout << Invlido;
}
}
Exerccio: Converta para Switch
#include <iostream>
using namespace std;
int main(void) {
float N1, N2, R;
int OP;
cout << Digite N1: ;
cin >> N1;
cout << Digite N2: ;
cin >> N2;
cout << Menu << endl;
cout << 1: Soma << endl;
cout << 2: Subtrai << endl;
cin >> OP;
if ( OP == 1 ) {
R = N1 + N2;
cout << Res: << R;
}
if ( OP == 2 ) {
R = N1 - N2;
cout << Res: << R;
}
if ( OP != 1 && OP != 2 ) {
cout << Opo Invlida!;
}
}
Exerccio: Soluo
#include <iostream>
using namespace std;
int main(void) {
float N1, N2, R;
int OP;
cout << Digite N1: ;
cin >> N1;
cout << Digite N2: ;
cin >> N2;
cout << Menu << endl;
cout << 1: Soma << endl;
cout << 2: Subtrai << endl;
cin >> OP;
switch ( OP ) {
case 1:
R = N1 + N2;
cout << Res: << R;
break;
case 2:
R = N1 - N2;
cout << Res: << R;
break;
default:
cout << Opo Invlida!;
}
}
Exerccio: Soluo
#include <iostream>
using namespace std;
int main(void) {
float N1, N2, R;
int OP;
cout << Digite N1: ;
cin >> N1;
cout << Digite N2: ;
cin >> N2;
cout << Menu << endl;
cout << 1: Soma << endl;
cout << 2: Subtrai << endl;
cin >> OP;
switch ( OP ) {
case 1:
R = N1 + N2;
cout << Res: << R;
break;
case 2:
R = N1 - N2;
cout << Res: << R;
break;
default:
cout << Opo Invlida!;
}
}
ATENO: SWITCH s
funciona com
variveis INTEIRAS
ATIVIDADE
Exerccio
Modifique o programa da soma e subtrao para
que tambm tenha opes de multiplicao e
diviso.
ATENO: verifique TUDO que for necessrio!
Pode dividir por zero?

CONCLUSES
Resumo
Decises compostas so aquelas que atendem,
simultaneamente, a vrios requisitos
As estruturas de deciso permitem que decises
compostas sejam tomadas
Para facilitar alguns tipos de construo, existe a
estrutura de escolha: switch~case
No deixe de praticar!

TAREFA!
Lista de Exerccios 2!
Prxima Aula
Vamos exercitar com
problemas reais?
Como podemos usar
todos esses recursos
para resolver problemas
do dia-a-dia?
PERGUNTAS?
BOM DESCANSO
A TODOS!

Você também pode gostar