Baixe o app para aproveitar ainda mais
Prévia do material em texto
INTRODUÇÃO À LÓGICA DE PROGRAMAÇÃO Prof. ANITA LOPES OBJETIVOS Identificar quando utilizar uma estrutura de decisão; Operadores Relacionais; Operadores Lógicos; Implementar estruturas de decisão em C++. Prof. ANITA LOPES ESTRUTURAS DE DECISÃO Qual o caminho? if(teste) if (teste)else... if(teste)else if(teste) ... switch() Qual escolher? Prof. ANITA LOPES ESTRUTURAS DE DECISÃO Muitas vezes em nossos programas precisaremos tomar uma decisão, ou várias, para que certas situações aconteçam. Nesses momentos, teremos que fazer uso da estrutura de decisão. Assim como em nossas vidas, muitas vezes nossos programas precisarão verificar condições para que possa decidir quais instruções deverão ser executadas. Em outras palavras: existem conjuntos diferentes de ações cuja execução de um deles depende do resultado de um teste. Conhecido como estrutura de decisão, seleção ou condicional. Mesmo para quem entende, reconheço que é muito mágico todo esse processo. Observe a sequência de figuras a seguir. Prof. ANITA LOPES ESTRUTURAS DE DECISÃO Você pressiona as teclas6789e pressiona a teclaenter. O que você digitou é enviado através de um barramento até chegar ao registrador e, depois, armazenado na memória principal. Nesse momento, começa a execução daestrutura doif. São várias etapas. Os dados e ordens são enviados paraUAL. O detalhamento a seguir não implica que seja exatamente assim o envio do teste para UAL. Prof. ANITA LOPES ESTRUTURAS DE DECISÃO Enviando a operação de comparação a ser realizada. Enviando a senha que veio do Banco de Dados. Retorno da “resposta” daUAL. O detalhamento a seguir não implica que seja exatamente assim o envio do teste para UAL. Prof. ANITA LOPES ESTRUTURAS DE DECISÃO Sinalizando para o usuário que a senha é inválida. O detalhamento a seguir não implica que seja exatamente assim o envio do teste para UAL. Prof. ANITA LOPES ESTRUTURAS DE DECISÃO Os matemáticos que contribuíram, significativamente, para a história da computação eram filósofos e foi aí que tive a certeza de que deveria começar filosofando sobre a conjunção subordinativa condicional/ partícula expletiva/ pronome reflexivo/ conectivo ou qualquer outra denominação que queiram dar a(o): se Fique pensando como seria a vida de cada um, se não tivesse acontecido isso, ou aquilo. Talvez alguns diriam que se não tivesse acontecido ... , então hoje eu não seria o que sou. Afirmativa reticente porque será que hoje ele é feliz, ou infeliz? Você já contabilizou quantas vezes disse: se eu ganhar aumento, então ...; se eu não precisar fazer a terceira prova, então ...; se não chover, então ...; se eu conseguir que me emprestem um carro, então ...; se eu não for trabalhar nesse final de semana, então ...; se meu time vencer, então ...; se eu ganhar na mega-sena, então ...; se eu juntar dinheiro então compro 10 abadás e vou passar o carnaval na Bahia, ou então vou para Jeriquaquara, ou então para Porto das Galinhas ou então ... e tudo isso depende de um simples, se. Quando estava escrevendo esse texto, lembrei-me de amigos de infância que trilharam caminhos diferentes dos meus e que, após muito tempo, nos encontramos e hoje caminhamos na mesma estrada. Prof. ANITA LOPES ESTRUTURA DE DECISÃO - if Simples - quando somente será executado o bloco, que poderá ter somente uma instrução, se a condição lógica for verdadeira. Composta - quando desejarmos que um bloco seja executado quando a condição for verdadeira e um outro bloco quando a condição for falsa. Encadeadas – quando tivermos pelo menos três possibilidades de respostas. Prof. ANITA LOPES Antes de apresentarmos as sintaxes dessas estruturas, estudaremos os operadores relacionais e lógicos. Obs: Todos têm a mesma hierarquia ESTRUTURA DE DECISÃO - if Prof. ANITA LOPES Antes de apresentarmos as sintaxes dessas estruturas, estudaremos os operadores relacionais e lógicos. Obs: Todos têm a mesma hierarquia Obs: !(not) tem maior hierarquia, seguido do &&(and) e, depois, ||(or) ESTRUTURA DE DECISÃO - if Prof. ANITA LOPES ! && || Antes de apresentarmos as sintaxes dessas estruturas, estudaremos os operadores relacionais e lógicos. Obs: !(not) tem maior hierarquia, seguido do &&(and) e, depois, ||(or) E - entrada S - saída E1 – entrada 1 E2 - entrada2 S - saída As duas precisam ser V E1 – entrada 1 E2 - entrada2 S - saída Somente uma precisa ser V ESTRUTURA DE DECISÃO - if Prof. ANITA LOPES EXPRESSÕES RELACIONAIS Expressão relacional notaProva >= 6 CERTA / valor = 0 ERRADA Prof. ANITA LOPES Expressão relacional salario >=1500 && salario < 2000 CERTA / letra >='A' && <= 'Z' ERRADA EXPRESSÕES RELACIONAIS e LÓGICAS Expressão relacional notaProva >= 6 CERTA / valor = 0 ERRADA Prof. ANITA LOPES Expressão relacional notaProva >= 6 CERTA / valor == 0 CERTA salario >=1500 && salario < 2000 CERTA / letra >='A' && letra <='Z' CERTA EXPRESSÕES RELACIONAIS e LÓGICAS Expressão relacional Prof. ANITA LOPES idade ≥ 18 idade >= 18 Se o sexo é feminino(F ou f) sexo == 'F' || sexo == 'f‘ IMC ≤ 24 IMC <= 24 denominador ≠ 0 denominador != 0 100≤numero ≤ 999 numero > = 100 && numero <= 999 Teste para saber se é par ou ímpar numero % 2 == 0 EXPRESSÕES RELACIONAIS e LÓGICAS - Praticando ATENÇÃO para ' Prof. ANITA LOPES idade ≥ 18 idade >= 18 Se o sexo é feminino(F ou f) sexo == 'F' || sexo == 'f‘ sexo == 'F' || sexo == 'f' IMC ≤ 24 IMC <= 24 denominador ≠ 0 denominador != 0 100≤numero ≤ 999 numero > = 100 && numero <= 999 Teste para saber se é par ou ímpar numero % 2 == 0 EXPRESSÕES RELACIONAIS e LÓGICAS - Praticando ATENÇÃO para ' Prof. ANITA LOPES idade ≥ 18 idade >= 18 Se o sexo é feminino(F ou f) sexo == 'F' || sexo == 'f' ou toupper(sexo) == 'F' IMC ≤ 24 IMC <= 24 denominador ≠ 0 denominador != 0 100≤numero ≤ 999 numero > = 100 && numero <= 999 Teste para saber se é par ou ímpar numero % 2 == 0 UMA CURIOSIDADE – toupper() Biblioteca cctype EXPRESSÕES RELACIONAIS e LÓGICAS - Praticando Prof. ANITA LOPES if(teste) { ... } if SIMPLES Prof. ANITA LOPES Mais de um comando OBRIGATÓRIAS if(teste) { ... } if SIMPLES Prof. ANITA LOPES Só um comando DISPENSÁVEIS if SIMPLES if(teste) _; Prof. ANITA LOPES Construa um programa que receba o nome de uma pessoa que prestou concurso e o total de pontos que ela conseguiu nas provas. O nome deverá ser exibido caso tenha alcançado 90, ou mais, pontos. if SIMPLES – Exemplo 1 Prof. ANITA LOPES #include <iostream> #include <cstdlib> #include <string> using namespace std; int main() { int pontos; string nome; cout<<"\nNome: "; getline(cin,nome); cout<<"\nPontos: "; cin>>pontos; if(pontos >= 80) { //Pode retirar cout<<"\n"<< nome<<"\n"; } //Pode retirar system("pause"); } if SIMPLES – Exemplo 1 Prof. ANITA LOPES Nome: JOAO RENATO Pontos: 99 JOAO RENATO Pressione qualquer tecla para continuar. . . #include <iostream> #include <cstdlib> #include <string> using namespace std; int main() { int pontos; string nome; cout<<"\nNome: "; getline(cin,nome); cout<<"\nPontos: "; cin>>pontos; if(pontos >= 80) { //Pode retirar cout<<"\n"<< nome<<"\n"; } //Pode retirar system("pause"); } if SIMPLES – Exemplo 1 Prof. ANITA LOPES #include <iostream> #include <cstdlib> #include <string> using namespace std; int main() { int pontos; string nome; cout<<"\nNome: "; getline(cin,nome);cout<<"\nPontos: "; cin>>pontos; if(pontos >= 80) { //Pode retirar cout<<"\n"<< nome<<"\n"; } //Pode retirar system("pause"); } Nome: JOAO RENATO Pontos: 99 JOAO RENATO Pressione qualquer tecla para continuar. . . Nome: RICARDO SM Pontos: 29 Pressione qualquer tecla para continuar. . . if SIMPLES – Exemplo 1 Prof. ANITA LOPES Construa um programa que receba três valores reais e, através de uma comparação por combinação 2 a 2 com troca dos conteúdos das varáveis, exiba em ordem crescente. if SIMPLES - Exemplo 2 Prof. ANITA LOPES #include <iostream> #include <cstdlib> using namespace std; int main() { double a,b,c, aux; cout<<"\nPrimeiro numero: "; cin>>a; cout<<"\nSegundo numero : "; cin>>b; cout<<"\nTerceiro numero: "; cin>>c; if(a > b) { aux = a; a = b; b = aux; } if( a > c) { aux = a; a = c; c = aux; } if( b > c) { aux = b; b = c; c = aux; } cout<<"\n"<<a<<"\t"<<b<<"\t"<<c<<"\n"; system("pause"); } a b c aux 23 6 18 if SIMPLES - Exemplo 2 Prof. ANITA LOPES a b c aux 23 6 18 23 if SIMPLES - Exemplo 2 #include <iostream> #include <cstdlib> using namespace std; int main() { double a,b,c, aux; cout<<"\nPrimeiro numero: "; cin>>a; cout<<"\nSegundo numero : "; cin>>b; cout<<"\nTerceiro numero: "; cin>>c; if(a > b) { aux = a; a = b; b = aux; } if( a > c) { aux = a; a = c; c = aux; } if( b > c) { aux = b; b = c; c = aux; } cout<<"\n"<<a<<"\t"<<b<<"\t"<<c<<"\n"; system("pause"); } Prof. ANITA LOPES a b c aux 23 6 6 18 23 if SIMPLES - Exemplo 2 #include <iostream> #include <cstdlib> using namespace std; int main() { double a,b,c, aux; cout<<"\nPrimeiro numero: "; cin>>a; cout<<"\nSegundo numero : "; cin>>b; cout<<"\nTerceiro numero: "; cin>>c; if(a > b) { aux = a; a = b; b = aux; } if( a > c) { aux = a; a = c; c = aux; } if( b > c) { aux = b; b = c; c = aux; } cout<<"\n"<<a<<"\t"<<b<<"\t"<<c<<"\n"; system("pause"); } Prof. ANITA LOPES a b c aux 23 6 6 23 18 23 if SIMPLES - Exemplo 2 #include <iostream> #include <cstdlib> using namespace std; int main() { double a,b,c, aux; cout<<"\nPrimeiro numero: "; cin>>a; cout<<"\nSegundo numero : "; cin>>b; cout<<"\nTerceiro numero: "; cin>>c; if(a > b) { aux = a; a = b; b = aux; } if( a > c) { aux = a; a = c; c = aux; } if( b > c) { aux = b; b = c; c = aux; } cout<<"\n"<<a<<"\t"<<b<<"\t"<<c<<"\n"; system("pause"); } Prof. ANITA LOPES a b c aux 23 6 6 6 23 23 18 18 23 if SIMPLES - Exemplo 2 #include <iostream> #include <cstdlib> using namespace std; int main() { double a,b,c, aux; cout<<"\nPrimeiro numero: "; cin>>a; cout<<"\nSegundo numero : "; cin>>b; cout<<"\nTerceiro numero: "; cin>>c; if(a > b) { aux = a; a = b; b = aux; } if( a > c) { aux = a; a = c; c = aux; } if( b > c) { aux = b; b = c; c = aux; } cout<<"\n"<<a<<"\t"<<b<<"\t"<<c<<"\n"; system("pause"); } Prof. ANITA LOPES a b c aux 23 6 6 6 6 23 23 18 18 23 23 if SIMPLES - Exemplo 2 #include <iostream> #include <cstdlib> using namespace std; int main() { double a,b,c, aux; cout<<"\nPrimeiro numero: "; cin>>a; cout<<"\nSegundo numero : "; cin>>b; cout<<"\nTerceiro numero: "; cin>>c; if(a > b) { aux = a; a = b; b = aux; } if( a > c) { aux = a; a = c; c = aux; } if( b > c) { aux = b; b = c; c = aux; } cout<<"\n"<<a<<"\t"<<b<<"\t"<<c<<"\n"; system("pause"); } Prof. ANITA LOPES a b c aux 23 6 6 6 6 23 23 18 18 18 23 23 if SIMPLES - Exemplo 2 #include <iostream> #include <cstdlib> using namespace std; int main() { double a,b,c, aux; cout<<"\nPrimeiro numero: "; cin>>a; cout<<"\nSegundo numero : "; cin>>b; cout<<"\nTerceiro numero: "; cin>>c; if(a > b) { aux = a; a = b; b = aux; } if( a > c) { aux = a; a = c; c = aux; } if( b > c) { aux = b; b = c; c = aux; } cout<<"\n"<<a<<"\t"<<b<<"\t"<<c<<"\n"; system("pause"); } Prof. ANITA LOPES a b c aux 23 6 6 6 6 23 23 18 18 18 23 23 23 if SIMPLES - Exemplo 2 #include <iostream> #include <cstdlib> using namespace std; int main() { double a,b,c, aux; cout<<"\nPrimeiro numero: "; cin>>a; cout<<"\nSegundo numero : "; cin>>b; cout<<"\nTerceiro numero: "; cin>>c; if(a > b) { aux = a; a = b; b = aux; } if( a > c) { aux = a; a = c; c = aux; } if( b > c) { aux = b; b = c; c = aux; } cout<<"\n"<<a<<"\t"<<b<<"\t"<<c<<"\n"; system("pause"); } Prof. ANITA LOPES if(teste) { ... } else { ... } if COMPOSTO Prof. ANITA LOPES OBRIGATÓRIAS Mais de um comando Mais de um comando if(teste) { ... } else { ... } if COMPOSTO Prof. ANITA LOPES if(teste) _ ; else _ ; DISPENSÁVEIS Só um comando Só um comando if COMPOSTO Prof. ANITA LOPES if(teste) { ... } else _ ; DISPENSÁVEIS Mais de um comando Só um comando OBRIGATÓRIAS if COMPOSTO Prof. ANITA LOPES Só um comando DISPENSÁVEIS Mais de um comando OBRIGATÓRIAS if(teste) _ ; else { ... } if COMPOSTO Prof. ANITA LOPES if COMPOSTO - Exemplo 1 Construa um programa que receba dois tempos de uma prova de nado livre e exiba o melhor tempo. Prof. ANITA LOPES #include <iostream> #include <cstdlib> using namespace std; int main() { float tempo1, tempo2; cout<<"\nPrimeiro tempo: "; cin>>tempo1; cout<<"\nSegundo tempo: "; cin>>tempo2; if( tempo1 < tempo2) cout<<"\n"<<tempo1; else cout<<"\n"<<tempo2; cout<<endl<<endl; system("pause"); } if COMPOSTO - Exemplo 1 Prof. ANITA LOPES Primeiro tempo: 27 Segundo tempo: 27.01 27 Pressione qualquer tecla para continuar. . . if COMPOSTO - Exemplo 1 #include <iostream> #include <cstdlib> using namespace std; int main() { float tempo1, tempo2; cout<<"\nPrimeiro tempo: "; cin>>tempo1; cout<<"\nSegundo tempo: "; cin>>tempo2; if( tempo1 < tempo2) cout<<"\n"<<tempo1; else cout<<"\n"<<tempo2; cout<<endl<<endl; system("pause"); } Prof. ANITA LOPES Primeiro tempo: 27.24 Segundo tempo: 27.123 27.123 Pressione qualquer tecla para continuar. . . if COMPOSTO - Exemplo 1 #include <iostream> #include <cstdlib> using namespace std; int main() { float tempo1, tempo2; cout<<"\nPrimeiro tempo: "; cin>>tempo1; cout<<"\nSegundo tempo: "; cin>>tempo2; if( tempo1 < tempo2) cout<<"\n"<<tempo1; else cout<<"\n"<<tempo2; cout<<endl<<endl; system("pause"); } Primeiro tempo: 27 Segundo tempo: 27.01 27 Pressione qualquer tecla para continuar. . . Prof. ANITA LOPES Construa um programa que deixe entrar com número, obrigatoriamente positivo, com três algarismos e exiba uma das mensagens: Numero tem tres algarismos ou Numero nao tem tres algarismos. if COMPOSTO - Exemplo 2 Prof. ANITA LOPES #include <iostream> #include <cstdlib> using namespace std; int main() { int n; cout<<"\nNumero com tres algarismos: "; cin>>n; if( n >= 100 && n <= 999) cout<<"\nNumero tem tres algarismos\n"; else cout<<"\nNumero nao tem tres algarismos\n"; cout<<"\n\n"; system("pause"); } if COMPOSTO - Exemplo 2 Prof. ANITA LOPES Numero com tres algarismos: 156 Numero tem tres algarismos Pressione qualquer tecla para continuar. . . #include <iostream> #include <cstdlib> using namespace std; int main() { int n; cout<<"\nNumero com tres algarismos: "; cin>>n; if( n >= 100 && n <= 999) cout<<"\nNumero tem tres algarismos\n"; else cout<<"\nNumero nao tem tres algarismos\n"; cout<<"\n\n"; system("pause"); } if COMPOSTO - Exemplo 2 Prof. ANITA LOPES Numero com tres algarismos: 1962 Numero naotem tres algarismos Pressione qualquer tecla para continuar. . . Numero com tres algarismos: 156 Numero tem tres algarismos Pressione qualquer tecla para continuar. . . #include <iostream> #include <cstdlib> using namespace std; int main() { int n; cout<<"\nNumero com tres algarismos: "; cin>>n; if( n >= 100 && n <= 999) cout<<"\nNumero tem tres algarismos\n"; else cout<<"\nNumero nao tem tres algarismos\n"; cout<<"\n\n"; system("pause"); } if COMPOSTO - Exemplo 2 Prof. ANITA LOPES Numero com tres algarismos: -156 Numero tem tres algarismos Pressione qualquer tecla para continuar. . . Numero com tres algarismos: -1962 Numero nao tem tres algarismos Pressione qualquer tecla para continuar. . . #include <iostream> #include <cstdlib> using namespace std; int main() { int n; cout<<"\nNumero com tres algarismos: "; cin>>n; if( abs(n) >= 100 && abs(n) <= 999) cout<<"\nNumero tem tres algarismos\n"; else cout<<"\nNumero nao tem tres algarismos\n"; cout<<"\n\n"; system("pause"); } if COMPOSTO - Exemplo 2 UMA CURIOSIDADE – Usando a função abs( ), o programa aceita números negativos. Prof. ANITA LOPES ifs ENCADEADOS if(teste) { ... } else if(teste) { ... } else { ... } Prof. ANITA LOPES ifs ENCADEADOS OBRIGATÓRIAS Mais de um comando Mais de um comando Mais de um comando if(teste) { ... } else if(teste) { ... } else { ... } Prof. ANITA LOPES ifs ENCADEADOS DISPENSÁVEIS Só um comando if(teste) _ ; else if(teste) _ ; else _ ; Só um comando Só um comando Prof. ANITA LOPES ifs ENCADEADOS Desenvolva um programa em C++ que deixe entrar com três números e exiba o menor deles. Desenvolva um programa em C++ que deixe entrar com três números e armazene em variáveis os dois maiores valores. Ao final, exiba os dois. Prof. ANITA LOPES ifs ENCADEADOS - Exemplos 1 e 2 #include <iostream> #include <cstdlib> using namespace std; int main() { double a,b,c; cout<<"\n1o numero: "; cin>>a; cout<<"\n2o numero: "; cin>>b; cout<<"\n3o numero: "; cin>>c; if( a < b && a < c ) cout<<a<<"\n"; // { m1=b; m2=c;} else if( b < c ) cout<<b<<"\n"; // { m1=a; m2=c;} else cout<<c<<"\n"; // { m1=a; m2=b;} //cout<<m1<< "\t" << m1 <<"\n"; system("pause"); } Prof. ANITA LOPES #include <iostream> #include <cstdlib> using namespace std; int main() { double a,b,c; cout<<"\n1o numero: "; cin>>a; cout<<"\n2o numero: "; cin>>b; cout<<"\n3o numero: "; cin>>c; if( a < b && a < c ) cout<<a<<"\n"; else if( b < c ) cout<<b<<"\n"; else cout<<c<<"\n"; system("pause"); } ifs ENCADEADOS - Exemplo 1 Prof. ANITA LOPES #include <iostream> #include <cstdlib> using namespace std; int main() { double a,b,c, m1, m2; cout<<"\n1o numero: "; cin>>a; cout<<"\n2o numero: "; cin>>b; cout<<"\n3o numero: "; cin>>c; if( a < b && a < c ) { m1=b; m2=c;} else if( b < c ) { m1=a; m2=c;} else { m1=a; m2=b;} cout<<m1<< "\t" << m2 <<"\n"; system("pause"); } ifs ENCADEADOS - Exemplo 2 Prof. ANITA LOPES Construa um programa que receba que receba três valores reais e exiba em ordem crescente. ifs ENCADEADOS - Exemplo 3 Prof. ANITA LOPES #include <iostream> #include <cstdlib> using namespace std; int main() { double a,b,c; cout<<"\nPrimeiro numero: "; cin>>a; cout<<"\nSegundo numero : "; cin>>b; cout<<"\nTerceiro numero: "; cin>>c; if(a < b) { if(c < a) cout<<"\n"<<c<<"\t"<<a<<"\t"<<b<<"\n"; else { if(c < b) cout<<"\n"<<a<<"\t"<<c<<"\t"<<b<<"\n"; else cout<<"\n"<<a<<"\t"<<b<<"\t"<<c<<"\n"; } } ifs ENCADEADOS - Exemplo 3 Prof. ANITA LOPES else { if(c < b) cout<<"\n"<<c<<"\t"<<b<<"\t"<<a<<"\n"; else { if(c < a) cout<<"\n"<<b<<"\t"<<c<<"\t"<<a<<"\n"; else cout<<"\n"<<b<<"\t"<<a<<"\t"<<c<<"\n"; } } system("pause"); } ifs ENCADEADOS - Exemplo 3 Prof. ANITA LOPES else { if(c < b) cout<<"\n"<<c<<"\t"<<b<<"\t"<<a<<"\n"; else { if(c < a) cout<<"\n"<<b<<"\t"<<c<<"\t"<<a<<"\n"; else cout<<"\n"<<b<<"\t"<<a<<"\t"<<c<<"\n"; } } system("pause"); } ifs ENCADEADOS - Exemplo 3 UMA CURIOSIDADE Se trocarmos o operador < por >, teremos a ordem decrescente. Prof. ANITA LOPES Posso usar vários ifs simples ou misturar ifs simples com if composto para obter o mesmo resultado dos ifs encadeados? UMA DÚVIDA MUITO COMUM Prof. ANITA LOPES Misturar if simples com if composto, NÃO! Entretanto, não posso dizer que não se pode usar só ifs simples, mas isso torna seu programa mais lento pela quantidade de testes que serão sempre realizados. Posso usar vários ifs simples ou misturar ifs simples com if composto para obter o mesmo resultado dos ifs encadeados? UMA DÚVIDA MUITO COMUM Prof. ANITA LOPES Claro! Pode dar um exemplo? UMA DÚVIDA MUITO COMUM Prof. ANITA LOPES EXEMPLO : Testar um número para saber se é positivo negativo ou nulo Ifs SIMPLES #include <iostream> #include <cstdlib> using namespace std; int main() { double a; cout<<"\nNumero: "; cin>>a; if(a > 0 ) cout<<"\nPOSITIVO\n"; if( a == 0) cout<<"\nNULO\n"; if( a < 0 ) cout<<"\nNEGATIVO\n"; system("pause"); } if(num > 0) cout << "\nPositivo\n"; if(num < 0) cout << "\nNegativo\n"; if(num == 0) cout << "\nNulo\n"; Prof. ANITA LOPES if(num > 0) cout << "\nPositivo\n"; else if(num < 0 ) cout << "\nNegativo\n"; else cout << "\nNulo\n“; Ifs ENCADEADOS #include <iostream> #include <cstdlib> using namespace std; int main() { double a; cout<<"\nNumero: "; cin>>a; if(a > 0 ) cout<<"\nPOSITIVO\n"; else if( a == 0) cout<<"\nNULO\n"; else cout<<"\nNEGATIVO\n"; system("pause"); } EXEMPLO : Testar um número para saber se é positivo negativo ou nulo Prof. ANITA LOPES Ifs SIMPLES Ambos exibem no display o resultado CORRETO, mas o segundo é mais eficiente, visto que só realiza um novo teste quando necessário. EXEMPLO : Testar um número para saber se é positivo negativo ou nulo if(num > 0) cout << "\nPositivo\n"; if(num < 0) cout << "\nNegativo\n"; if(num == 0) cout << "\nNulo\n"; if(num > 0) cout << "\nPositivo\n"; else if(num < 0 ) cout << "\nNegativo\n"; else cout << "\nNulo\n“; Ifs ENCADEADOS Prof. ANITA LOPES if(num > 0) cout << "\nPositivo\n"; if(num < 0) cout << "\nNegativo\n"; else cout << "\nNegativo\n“; Ifs SIMPLES e if COMPOSTO #include <iostream> #include <cstdlib> using namespace std; int main() { double a; cout<<"\nNumero: "; cin>>a; if(a > 0 ) cout<<"\nPOSITIVO\n"; if( a == 0) cout<<"\nNULO\n"; else cout<<"\nNEGATIVO\n"; system("pause"); } EXEMPLO : Testar um número para saber se é positivo negativo ou nulo Prof. ANITA LOPES if(num > 0) cout << "\nPositivo\n"; else if(num < 0 ) cout << "\nNegativo\n"; else cout << "\nNulo\n“; Ifs ENCADEADOS #include <iostream> #include <cstdlib> using namespace std; int main() { double a; cout<<"\nNumero: "; cin>>a; if(a > 0 ) cout<<"\nPOSITIVO\n"; else if( a == 0) cout<<"\nNULO\n"; else cout<<"\nNEGATIVO\n"; system("pause"); } EXEMPLO : Testar um número para saber se é positivo negativoou nulo Prof. ANITA LOPES PROBLEMA com if simples e if composto if(num > 0) cout << "\nPositivo\n"; else if(num < 0 ) cout << "\nNegativo\n"; else cout << "\nNulo\n“; Ifs ENCADEADOS if(num > 0) cout << "\nPositivo\n"; if(num < 0) cout << "\nNegativo\n"; else cout << "\nNegativo\n“; Ifs SIMPLES e if COMPOSTO EXEMPLO : Testar um número para saber se é positivo negativo ou nulo Prof. ANITA LOPES PROBLEMA com if simples e if composto if(num > 0) cout << "\nPositivo\n"; else if(num < 0 ) cout << "\nNegativo\n"; else cout << "\nNulo\n“; Ifs ENCADEADOS Numero: 23 POSITIVO NEGATIVO Pressione qualquer tecla para continuar. . . if(num > 0) cout << "\nPositivo\n"; if(num < 0) cout << "\nNegativo\n"; else cout << "\nNegativo\n“; Ifs SIMPLES e if COMPOSTO EXEMPLO : Testar um número para saber se é positivo negativo ou nulo Prof. ANITA LOPES Por que não tem ; depois do if(teste) ? OUTRA DÚVIDA MUITO COMUM Prof. ANITA LOPES Porque, se assim tivesse, tudo depois não diria respeito ao if, pois o ; na linguagem C++ finaliza qualquer instrução ou estrutura. O trecho do if, ou do else, é finalizado com o ; de uma instrução ou com a } que fecha o bloco. OUTRA DÚVIDA MUITO COMUM Por que não tem ; depois do if(teste) ? Prof. ANITA LOPES Pode me falar sobre OPERADOR TERNÁRIO? UMA PERGUNTA: PODE EXPLICAR O OPERADOR TERNÁRIO? Prof. ANITA LOPES Pode me falar sobre OPERADOR TERNÁRIO? A linguagem C++ tem muitas heranças da linguagem C. Essa é uma das que acho mais elegante. Irei aproveitar um exemplo dado nessa aula. UMA PERGUNTA: PODE EXPLICAR O OPERADOR TERNÁRIO? Prof. ANITA LOPES Poderá, de forma mais simples, substituir a estrutura do if(teste) quando só existe uma instrução. UMA PERGUNTA: PODE EXPLICAR O OPERADOR TERNÁRIO? <teste> ? Expressão para Verdade : Expressão para Falso; Prof. ANITA LOPES if( a < b && a < c ) cout<<a<<"\n"; else if( b < c ) cout<<b<<"\n"; else cout<<c<<"\n"; UMA PERGUNTA: PODE EXPLICAR O OPERADOR TERNÁRIO? <teste> ? Expressão para Verdade : Expressão para Falso; Prof. ANITA LOPES z= a < b && a < c ? a : b < c? b: c; cout<<"\nMenor: "<< z <<"\n"; if( a < b && a < c ) cout<<a<<"\n"; else if( b < c ) cout<<b<<"\n"; else cout<<c<<"\n"; UMA PERGUNTA: PODE EXPLICAR O OPERADOR TERNÁRIO? <teste> ? Expressão para Verdade : Expressão para Falso; Prof. ANITA LOPES if( a < b && a < c ) cout<<a<<"\n"; else if( b < c ) cout<<b<<"\n"; else cout<<c<<"\n"; UMA PERGUNTA: PODE EXPLICAR O OPERADOR TERNÁRIO? <teste> ? Expressão para Verdade : Expressão para Falso; (a<b && a<c)? cout<<a<<"\n": (b<c)? cout<<b<<"\n": cout<<c<<"\n"; Você poderá exibir também sem armazenar em uma variável. z= a < b && a < c ? a : b < c? b: c; cout<<"\nMenor: "<< z <<"\n"; Prof. ANITA LOPES <teste> ? Expressão para Verdade : Expressão para Falso; #include <iostream> #include <cstdlib> using namespace std; int main() { double a,b,c; cout<<"\n1o numero: "; cin>>a; cout<<"\n2o numero: "; cin>>b; cout<<"\n3o numero: "; cin>>c; (a<b && a<c)? cout<<a<<"\n": (b<c)? cout<<b<<"\n":cout<<c<<"\n"; system( "pause>NULL" ); } Prof. ANITA LOPES ESTRUTURA ALTERNATIVA PARA ifs encadeados - switch() switch( nomeVariavel ) { case <valor 1>: bloco 1 de comandos; break; case <valor 2>: bloco 2 de comandos; break; case <valor 3>: bloco 3 de comandos; break; case <valor n>: bloco n de comandos; break; default: bloco; } Prof. ANITA LOPES ESTRUTURA ALTERNATIVA PARA ifs encadeados - switch() Quando poderei usar? Prof. ANITA LOPES ESTRUTURA ALTERNATIVA PARA ifs encadeados - switch() Quando poderei usar? Quando você puder responder SIM às três perguntas abaixo: É a mesma variável em todos os testes? O tipo da variável é enumerável? Operador Relacional é == ? ** Prof. ANITA LOPES ESTRUTURA ALTERNATIVA PARA ifs encadeados - switch() Prof. ANITA LOPES SIM SIM ESTRUTURA ALTERNATIVA PARA ifs encadeados - switch() SIM Prof. ANITA LOPES SIM SIM SIM NÃO SIM NÃO ESTRUTURA ALTERNATIVA PARA ifs encadeados - switch() Prof. ANITA LOPES SIM NÃO NÃO SIM NÃO SIM ESTRUTURA ALTERNATIVA PARA ifs encadeados - switch() SIM SIM SIM Prof. ANITA LOPES ESTRUTURA switch() - Exemplo 1 Construa um programa que deixe entrar com uma idade e exiba a categoria ou a mensagem Nao existe categoria para essa idade. 8 - 11 –> Mirim 12 - 15 –> Infantil 16 -18 –>Infanto Prof. ANITA LOPES #include <iostream> #include <cstdlib> using namespace std; int main() { int idade; cout<<"\nDigite Idade "; cin>>idade; switch(idade) { case 8: case 9: case 10: case 11: cout<<"\nMirim\n"; break; case 12: case 13: case 14: case 15: cout<<"\nInfantil\n"; break; case 16: case 17: case 18: cout<<"\nInfanto\n"; break; default: cout<<"\nNao existe categoria para essa idade\n"; } system("pause"); } ESTRUTURA switch() - Exemplo 1 Prof. ANITA LOPES Digite Idade 15 Infantil Pressione qualquer tecla para continuar. . . #include <iostream> #include <cstdlib> using namespace std; int main() { int idade; cout<<"\nDigite Idade "; cin>>idade; switch(idade) { case 8: case 9: case 10: case 11: cout<<"\nMirim\n"; break; case 12: case 13: case 14: case 15: cout<<"\nInfantil\n"; break; case 16: case 17: case 18: cout<<"\nInfanto\n"; break; default: cout<<"\nNao existe categoria para essa idade\n"; } system("pause"); } ESTRUTURA switch() - Exemplo 1 Prof. ANITA LOPES Digite Idade 15 Infantil Pressione qualquer tecla para continuar. . . Digite Idade 40 Nao existe categoria para essa idade Pressione qualquer tecla para continuar. . . #include <iostream> #include <cstdlib> using namespace std; int main() { int idade; cout<<"\nDigite Idade "; cin>>idade; switch(idade) { case 8: case 9: case 10: case 11: cout<<"\nMirim\n"; break; case 12: case 13: case 14: case 15: cout<<"\nInfantil\n"; break; case 16: case 17: case 18: cout<<"\nInfanto\n"; break; default: cout<<"\nNao existe categoria para essa idade\n"; } system("pause"); } ESTRUTURA switch() - Exemplo 1 Prof. ANITA LOPES #include <iostream> #include <cstdlib> using namespace std; int main() { int idade; cout<<"\nDigite Idade "; cin>>idade; switch(idade) { case 8 ...11: cout<<"\nMirim\n"; break; case 12 ...15: cout<<"\nInfantil\n"; break; case 16 ...18: cout<<"\nInfanto\n"; break; default: cout<<"\nNao existe categoria\n"; } system("pause"); } CURIOSIDADE Pode não funcionar em alguma IDE ou em versões mais antigas da IDE que esteja usando. Precisa de UM espaço depois do número e antes de ... Significando que aceitará intervalo ESTRUTURA switch() - Exemplo 1 ** Digite Idade 14 Infantil Pressione qualquer tecla para continuar. . . Prof. ANITA LOPES É difícil construir um programa que funcione atravésde um Menu? ESTRUTURA switch() - MENU Prof. ANITA LOPES É difícil construir um programa que funcione através de um Menu? Claro que não, pois vamos fazer o passo a passo. Você vai gostar. Hoje, não haverá repetição, mas quando estudarmos do...while, ficará D+. ESTRUTURA switch() - MENU Prof. ANITA LOPES ESTRUTURA switch() - Exemplo 2 MENU 1- AULA 1 2- AULA 2 3- AULA 3 4- AULA 4 5- AULA 5 6- Sair Opcao:Pressione qualquer tecla para continuar. . . #include <iostream> #include <cstdlib> using namespace std; int main() { cout<<"\n\tMENU\n"; cout<<"\n1- AULA 1"; cout<<"\n2- AULA 2"; cout<<"\n3- AULA 3"; cout<<"\n4- AULA 4"; cout<<"\n5- AULA 5"; cout<<"\n6- Sair"; cout<<"\nOpcao:"; system("pause"); } BLOCO 1 Prof. ANITA LOPES MENU 1- AULA 1 2- AULA 2 3- AULA 3 4- AULA 4 5- AULA 5 6- Sair Opcao:3 Pressione qualquer tecla para continuar. . . #include <iostream> #include <cstdlib> using namespace std; int main() { int op; cout<<"\n\tMENU\n"; cout<<"\n1- AULA 1"; cout<<"\n2- AULA 2"; cout<<"\n3- AULA 3"; cout<<"\n4- AULA 4"; cout<<"\n5- AULA 5"; cout<<"\n6- Sair"; cout<<"\nOpcao:"; cin>>op; system("pause"); } BLOCO 2 ESTRUTURA switch() - Exemplo 2 Prof. ANITA LOPES #include <iostream> #include <cstdlib> using namespace std; int main() { int op; cout<<"\n\tMENU\n"; cout<<"\n1- AULA 1"; cout<<"\n2- AULA 2)"; cout<<"\n3- AULA 3"; cout<<"\n4- AULA 4"; cout<<"\n5- AULA 5"; cout<<"\n6- Sair"; cout<<"\nOpcao:"; cin>>op; switch(op) { case 1: cout<<"\nVisao geral e conceitos\n"; break; case 2: cout<<"\ncout / cin/ getline(cin, var))\n"; break; case 3: cout<<"\nEstruturas de Decisao\n"; break; case 4: cout<<"\nEstruturas de Repeticao\n"; break; case 5: cout<<"\nVetores\n"; break; default: cout<<"\nNao existe essa opcao\n"; } system("pause"); } BLOCO 3 MENU 1- AULA 1 2- AULA 2 3- AULA 3 4- AULA 4 5- AULA 5 6- Sair Opcao:3 Estruturas de Decisao Pressione qualquer tecla para continuar. . . ESTRUTURA switch() - Exemplo 2 Prof. ANITA LOPES Espero que goste Prof. ANITA LOPES
Compartilhar