46
CI208 Programação de Computadores Aula 6: Comandos Estruturados Estrutura Condicional Prof. MSc. Diego Roberto Antunes Universidade Federal do Paraná Setor de Ciências Exatas Departamento de Informática [email protected] www.inf.ufpr.br/diegor

Aula&6:&Comandos&Estruturados&& EstruturaCondicional · CI208&’&Programação&de&Computadores& Aula&6: ... Estrutura&Condicional: ... Façam!a!Lista!2!deExercícios!eas!Listas!Complementares!

Embed Size (px)

Citation preview

CI208  -­‐  Programação  de  Computadores  Aula  6:  Comandos  Estruturados    

Estrutura  Condicional  

Prof.  MSc.  Diego  Roberto  Antunes  

Universidade  Federal  do  Paraná  Setor  de  Ciências  Exatas  

Departamento  de  Informática  

[email protected]  www.inf.ufpr.br/diegor  

Nas  Últimas  Aulas  

Modelo  do  Computador,  Compilação/Execução,  Memória    Algoritmos  vs.  Programas  Estrutura  de  um  Programa  C++  Variáveis  (Tipos,  Nomes,  Valor,  Inicialização)  e  Operadores  Comandos  de  Entrada  e  Saída  

Obs.:  revisem  e  resolvam  todos  os  exercícios  das  listas  anteriores  

Estrutura  Condicional?  

Estrutura  Condicional:  Exemplos  1)  Construir  um  Programa  em  C++  que  leia  dois  números  do  tipo  inteiro  do  teclado  N1  e  N2.  Se  N2  for  maior  que  0  (zero),  calcule  a  divisão  N1/N2  e  mostre  o  resultado  na  tela.    

2)  Construir  um  programa  que  leia  dois  números  e  mostre  qual  é  o  maior.  

3)  Construir  um  Programa  em  C++  que  leia  dois  números.  Se  os  números  forem  iguais,  mostre  uma  mensagem  informando  o  usuário.  Caso  contrário,  mostre  na  tela  qual  o  maior  entre  os  números.    

4)  Construir  um  Programa  em  C++  para  ajudar  o  professor  a  calcular  a  média  parcial  da  disciplina  CI208.  Seu  programa  deve  ler  do  teclado  as  notas  das  três  provas  PI  e  P2  e  P3,  calcular  a  média  e  informar  o  resultado:  aprovado  por  média,  reprovado  por  nota  ou  exame.    

Comando  if:  Sintaxe  

…  

if    (expressao)  {  

 sentencas;    

}  …  

expressão  (condição)  

sentenças  

verdadeira

falsa

Exemplo  Comando  if  1)  Construir  um  Programa  em  C++  que  leia  dois  números  do  tipo  inteiro  do  teclado  N1  e  N2.  Se  N2  for  maior  que  0  (zero),  calcule  a  divisão  N1/N2  e  mostre  o  resultado  na  tela.    

Exemplo  Comando  if  1)  Construir  um  Programa  em  C++  que  leia  dois  números  do  tipo  inteiro  do  teclado  N1  e  N2.  Se  N2  for  maior  que  0  (zero),  calcule  a  divisão  N1/N2  e  mostre  o  resultado  na  tela.    

#include  <iostream>    using  namespace  std;    

int  main(  ){      int  N1,    N2;      cout  <<  "Entre  com  dois  números  (N1  e  N2):  ";      cin  >>  N1  >>  N2;      cout  <<  ”O  resultado  da  divisão  eh:  "  <<  N1/N2  <<  endl;    

}  

Exemplo  Comando  if  1)  Construir  um  Programa  em  C++  que  leia  dois  números  do  tipo  inteiro  do  teclado  N1  e  N2.  Se  N2  for  maior  que  0  (zero),  calcule  a  divisão  N1/N2  e  mostre  o  resultado  na  tela.    

#include  <iostream>    using  namespace  std;    

int  main(  ){      int  N1,    N2;      cout  <<  "Entre  com  dois  números  (N1  e  N2):  ";      cin  >>  N1  >>  N2;      cout  <<  ”O  resultado  da  divisão  eh:  "  <<  N1/N2  <<  endl;    

}  

Exemplo  Comando  if  1)  Construir  um  Programa  em  C++  que  leia  dois  números  do  tipo  inteiro  do  teclado  N1  e  N2.  Se  N2  for  maior  que  0  (zero),  calcule  a  divisão  N1/N2  e  mostre  o  resultado  na  tela.    

#include  <iostream>    using  namespace  std;    

int  main(  ){      int  N1,    N2;      cout  <<  "Entre  com  dois  números  (N1  e  N2):  ";      cin  >>  N1  >>  N2;    

 if  (  N2  >  0  )  {      cout  <<  ”O  resultado  da  divisão  eh:  "  <<  N1/N2  <<  endl;      }  

}  

Exemplo  Comando  if  2)  Construir  um  Programa  em  C++  que  leia  um  número  do  teclado.  Se  o  número  for  negativo,  transforme-­o  para  positivo.  Ao  ginal,  mostre  o  número  na  tela.    

Exemplo  Comando  if  2)  Construir  um  Programa  em  C++  que  leia  um  número  do  teclado.  Se  o  número  for  negativo,  transforme-­o  para  positivo.  Ao  ginal,  mostre  o  número  na  tela.    

#include  <iostream>    using  namespace  std;    

int  main(  ){      int  n;      cout  <<  "Entre  com  um  número:  ";      cin  >>  n;    

 if  (  n  <  0  )  {      n  =  n  *  -­1;      }  

 cout  <<  ”O  número  positivo  é:  "  <<  n  <<  endl;  }  

Mas,  como  resolvemos  os  problemas:      

a)  No  exemplo  1,  queremos  avisar  o  usuário  que  a  divisão  não  pode  ser  feita;  

b)  Construir  um  programa  que  leia  dois  números  e  mostre  qual  é  o  maior;  

Comando  if-­else  Se  uma  condição  resultar  em  verdadeiro,  então  execute  as  sentenças  A.    Senão  (caso  contrário),  as  sentenças  B  serão  executadas.  

…  if    (expressao)  {    sentencasA;    

}  else  {    sentencasB;    

}  …  

sentencasB;  

falsa expressão  (condição)  

sentencasA;  

verdadeira

Exemplo  Comando  if-­else  1)  Construir  um  Programa  em  C++  que  leia  dois  números  do  tipo  inteiro  do  teclado  N1  e  N2.  Se  N2  for  maior  que  0  (zero),  calcule  a  divisão  N1/N2  e  mostre  o  resultado  na  tela.    

#include  <iostream>    using  namespace  std;    

int  main(  ){      int  N1,    N2;      cout  <<  "Entre  com  dois  números  (N1  e  N2):  ";      cin  >>  N1  >>  N2;    

 if  (  N2  >  0  )  {      cout  <<  ”O  resultado  da  divisão  eh:  "  <<  N1/N2  <<  endl;      }    else  {      cout  <<  ”Erro!  N2  deve  ser  maior  que  0.  ”  <<  endl;      }  

}  

Exemplo  Comando  if-­else  2)  Construir  um  programa  que  leia  dois  números  e  mostre  qual  é  o  maior;  

#include  <iostream>    using  namespace  std;    

int  main(  ){      gloat  n1,    n2,  maior;      cout  <<  "Entre  com  dois  números  (n1  e  n2):  ";      cin  >>  n1  >>  n2;    

 if  (  n1  >=  n2  )  {      maior  =  n1;      }    else  {      maior  =  n2;      }    cout  <<  ”O  maior  número  é:  ”  <<  maior  <<  endl;  

}  

Exercício:      a)  Faça  um  programa  em  C++  que  leia  um  número  do  tipo  inteiro  

do  teclado  e  mostre  na  tela  se  ele  é  par  ou  ímpar.  

Comando  condicional:  Problemas  comuns  O  programa  a  seguir  está  correto?    

#include  <iostream>    using  namespace  std;    

int  main(  ){      int  saldo  =  2000;    

 if  (saldo  =  1)  {      cout  <<  ”Saldo:  "  <<  endl;      cout  <<  "Voce  esta  quebrado!  "  <<  endl;      else  {      cout  <<  "Seu  saldo  eh  "  <<  saldo  <<  endl;    }  

}  

Comando  condicional:  Problemas  comuns  O  programa  a  seguir  está  correto?    

#include  <iostream>    using  namespace  std;    

int  main(  ){      int  saldo  =  2000;    

 if  (saldo  =  1)  {      cout  <<  ”Saldo:  "  <<  endl;      cout  <<  "Voce  esta  quebrado!  "  <<  endl;      else  {      cout  <<  "Seu  saldo  eh  "  <<  saldo  <<  endl;    }  

}  

Onde  está  a  chave  }  que  indica    o  ginal  do  bloco  if  ?

Comando  condicional:  Problemas  comuns  O  programa  a  seguir  está  correto?    

#include  <iostream>    using  namespace  std;    

int  main(  ){      int  saldo  =  2000;    

 if  (saldo  =  1)  {      cout  <<  ”Saldo:  "  <<  endl;      cout  <<  "Voce  esta  quebrado!  "  <<  endl;      }    else  {      cout  <<  "Seu  saldo  eh  "  <<  saldo  <<  endl;    }  

}  

Você  deve  sempre  abrir  e  fechar  as  chaves  nos  comandos  if-­else

Comando  condicional:  Problemas  comuns  O  programa  a  seguir  está  correto?    

#include  <iostream>    using  namespace  std;    

int  main(  ){      int  saldo  =  2000;    

 if  (saldo  =  1)  {      cout  <<  ”Saldo:  "  <<  endl;      cout  <<  "Voce  esta  quebrado!  "  <<  endl;      }    else  {      cout  <<  "Seu  saldo  eh  "  <<  saldo  <<  endl;    }  

}  

Comando  condicional:  Problemas  comuns  O  programa  a  seguir  está  correto?    

#include  <iostream>    using  namespace  std;    

int  main(  ){      int  saldo  =  2000;    

 if  (saldo  =  1)  {      cout  <<  ”Saldo:  "  <<  endl;      cout  <<  "Voce  esta  quebrado!  "  <<  endl;      }    else  {      cout  <<  "Seu  saldo  eh  "  <<  saldo  <<  endl;    }  

}  

Esta  expressão  é  relacional?  

Comando  condicional:  Problemas  comuns  O  programa  a  seguir  está  correto?    

#include  <iostream>    using  namespace  std;    

int  main(  ){      int  saldo  =  2000;    

 if  (saldo  ==  1)  {      cout  <<  ”Saldo:  "  <<  endl;      cout  <<  "Voce  esta  quebrado!  "  <<  endl;      }    else  {      cout  <<  "Seu  saldo  eh  "  <<  saldo  <<  endl;    }  

}  

O  operador  relacional  de  igualdade  é  ==,  não  confundir  com  atribuição!

Comando  condicional:  Problemas  comuns  Cuidado  ao  utilizar  os  operadores  relacionais.  O  programa  a  seguir  está  correto  do  ponto  de  vista  semântico?    

#include  <iostream>    using  namespace  std;    

int  main(  ){      int  numero  =  0;    

 if  (numero  >  0)  {      cout  <<  ”O  numero  eh  positivo!  "  <<  endl;      }    else  {      cout  <<  ”O  numero  eh  negativo?”  <<  endl;    }  

}  

Mas,    e  para  o  seguinte  problema:      

Construir  um  Programa  em  C++  que  leia  dois  números.  Se  os  números  forem  iguais,  mostre  uma  mensagem  informando  o  usuário.  Caso  

contrário,  mostre  na  tela  qual  o  maior  entre  os  números.  

Aninhando  sentenças  if-­else  Então  podemos  colocar  sentenças  condicionais  dentro  de  outras  sentenças  condicionais,  ou  seja,  estamos  aninhando  sentenças  .  Resolvendo:    

#include  <iostream>    using  namespace  std;    

int  main(  ){      int  n1,  n2;      cout  <<  ”Informe  n1  e  n2:  ”;    cin  >>    n1    >>  n2;  

 if  (n1  ==  n2)  {      cout  <<  “Os  números  são  iguais!  ”  <<  endl;    }    else  {      //caso  contrário,  precisamos  verigicar  o  maior    }    

}  

Aninhando  sentenças  if-­else  Lembrando  que  para  verigicar  o  maior  entre  dois  números:    

…  

 if  (n1  >  n2)  {      cout  <<  “O  número  ”  <<  n1  <<  “  eh  o  maior  !”<<  endl;    }    else  {      cout  <<  “O  número  ”  <<  n2  <<  “  eh  o  maior  !”<<  endl;    }    

…  

Aninhando  sentenças  if-­else  #include  <iostream>    using  namespace  std;    

int  main(  ){      int  n1,  n2;      cout  <<  ”Informe  n1  e  n2:  ”;    cin  >>    n1    >>  n2;  

 if  (n1  ==  n2)  {      cout  <<  “Os  números  são  iguais!  ”  <<  endl;    }    else  {      if  (n1  >  n2)  {        cout  <<  “O  número  ”  <<  n1  <<  “  eh  o  maior  !”<<  endl;      }      else  {        cout  <<  “O  número  ”  <<  n2  <<  “  eh  o  maior  !”<<  endl;      }    }    

}  

Operadores  Lógicos  

Operadores  Lógicos  

!  NÃO  lógico,  operação  de  negação  (operador  unário)    

&&  E  lógico,  conjunção  (operador  binário)  

||  OU  lógico,  disjunção  (operador  binário).  

Operadores  Lógicos  Exemplo:  se  quisermos  testar  se  um  número  é  positivo  e  par,  e  imprimir  uma  mensagem  como  no  exemplo  anterior,  podemos  escrever:  

if  (  (num  >=  0)  &&  (num  %  2  ==  0)  ){    

 cout  <<  ”O  numero  eh  par  e  positivo."  <<  endl;  

}  

Operadores  Lógicos  Exemplo:  verigicar  se  o  aluno  está  no  exame  ginal  a  partir  da  média  parcial  MP  

if  (  (MP  >=  40)  &&  (MP  <  70)  ){      cout  <<  ”O  aluno  esta  no  Exame  Final."  <<  endl;  

}  

Exemplo:  verigicar  se  o  aluno  reprovou  a  partir  da  média  parcial  MP  e  da  média  ginal  MF:  

if  (  (MP  <  40)  ||  (MF  <  50)  ){      cout  <<  ”O  aluno  esta  Reprovado  por  nota!"  <<  endl;  

}  

Operadores  Lógicos  Resultado  das  operações  lógicas  &&  e  ||:  

Ou  seja,  uma  comparação  entre  2  expressões  usando  os  Operadores  Lógicos:    

a)  usando  o  &&,  somente  resulta  verdadeiro  se  ambas  resultarem  verdadeiro;  b)  usando  o  ||,  somente  resulta  falso  se  ambas  resultarem  falso;  

Precedência:  !,  &&,  ||  

expressão1   expressão2   expressão1  &&  expressão2   expressão1  ||  expressão2  

verdadeiro   verdadeiro   verdadeiro   verdadeiro  

verdadeiro   falso   falso   verdadeiro  

falso   verdadeiro   falso   verdadeiro  

falso   Falso   falso   falso  

Exercícios  

Exemplos  Assuma  as  seguintes  declaraçõoes  de  variáveis:  int  x  =  4;  int  y  =  8;    

O  que  é  impresso  pelo  seguinte  programa  ?    

 if  (y  =  8)  {      if  (x  =  5){          cout  <<  "a  ";        }        else  {          cout  <<  "b  ";        }      cout  <<  "c  ";      cout  <<  "d"  <<  endl;    }  

Exemplos  Assuma  as  seguintes  declaraçõoes  de  variáveis:  int  x  =  4;  int  y  =  8;    

O  que  é  impresso  pelo  seguinte  programa  ?    

 if  (y  ==8)  {      if  (x  ==  5){          cout  <<  "a  ";        }        else  {          cout  <<  "b  ";        }      cout  <<  "c  ";      cout  <<  "d"  <<  endl;    }  

Exemplos  Assuma  as  seguintes  declaraçõoes  de  variáveis:  int  x  =  5;  int  y  =  8;    

O  que  é  impresso  pela  seguinte  sentença?    

 if  (x  ==  5  &&  y  ==  8)  {      cout  <<  "a"  <<  endl;      }      else  {        cout  <<  "b"  <<  endl;  

 }  

Exemplos  Assuma  as  seguintes  declaraçõoes  de  variáveis:  int  x  =  4;  int  y  =  8;    

O  que  é  impresso  pela  seguinte  sentença?    

 if  (  !(x  ==  5  ||  y  ==  8)  )  {      cout  <<  "a"  <<  endl;      }      else  {        cout  <<  "b"  <<  endl;  

 }  

Precedência  completa  de  operadores  

Construção  else  if  Problema:      

Construir  um  Programa  em  C++  para  ajudar  o  professor  a  calcular  a  média  parcial  da  disciplina  CI208.  Seu  programa  deve  ler  do  teclado  as  

notas  das  duas  provas  PI,  P2  e  P3,  calcular  a  média  e  informar  o  resultado:  aprovado  por  média,  reprovado  por  nota  ou  exame.  

Construção  else  if  Usada  para  uma  sequência  de  decisões  sem  a  necessidade  de  aninhar  comandos  condicionais.  Por  exemplo,  pode  ser  usado  em  um  menu  de  opções  if    (expressao1)  {  

 sentencas1;    }  else  if    (expressao2)  {  

 sentencas2;    }  …  else  if    (expressaon-­‐1)  {  

 sentencasn-­1;    }  else  {  

 sentencasn;  (último  caso)    }  

Construção  else  if  Usada  para  uma  sequência  de  decisões  sem  a  necessidade  de  aninhar  comandos  condicionais.  Por  exemplo,  pode  ser  usado  em  um  menu  de  opções  if    (expressao1)  {  

 sentencas1;    }  else  if    (expressao2)  {  

 sentencas2;    }  …  else  if    (expressaon)  {  

 sentencasn;    }  

Quando  o  else  não  for  necessário  como  opção  default,  ele  pode  ser  removido.  

Construção  else  if  Problema:  construir  um  Programa  em  C++  para  ajudar  o  professor  a  calcular  a  média  parcial  da  disciplina  CI208.  Seu  programa  deve  ler  do  teclado  as  notas  das  duas  provas  PI,    P2  e  P3,  calcular  a  média  e  informar  o  resultado:  aprovado  por  média,  reprovado  por  nota  ou  exame.  

…  cin  >>  p1  >>  p2  >>  p3;  media_parcial  =  0.25*  (p1+p2)  +  0.5*p3;  

if  (media_parcial  >=  70){    cout  <<  “O  aluno  está  aprovado  por  média  ”  <<  endl;  

}  else  if  (media_parcial  <  70    &&    media_parcial  >=  40){  

 cout  <<  “O  aluno  está  em  Exame  Final”  <<  endl;  }  else  {  

 cout  <<  “O  aluno  está  reprovado  por  nota  ”  <<  endl;  }  

Dúvidas?  

Exercícios  

1.  Faça  um  programa  em  C++  que  leia  do  teclado  3  (três)  números  do  tipo  inteiro  e  mostre  na  tela  o  maior  entre  eles.    

2.  Faça  um  programa  que  leia  do  teclado  a  idade  de  um  nadador  e,  em  seguuida,  verigique  e  mostre  qual  a  sua  categoria,  de  acordo  com:  infantil  A  =  5-­10  anos    juvenil  A  =  11-­13  anos    juvenil  B  =  14-­17  anos    adulto  =  maiores  de  18  anos  

3.  A  partir  de  uma  competição  entre  as  turmas  A  e  B,  escreva  um  programa  que  leia  do  teclado  2  números  que  indicam  o  número  de  vitórias  da  turma  A  e  o  número  de  vitórias  da  turma  B,  e  mostre  na  tela  o  vencedor.  Se  houver  empate  seu  programa  deve  mostrar  na  tela.  

4.  Tendo  os  dados  de  entrada  altura  e  o  sexo  de  uma  pessoa  (1  masculino  e  0  feminino),  construa  um  programa  que  calcule  seu  peso  ideal:    homens:  (72.7  ∗  h)  −  58              mulheres:  (62.1  ∗  h)  −  44.7  

Conclusão  

Façam  a  Lista  2  de  Exercícios  e  as  Listas  Complementares  Revisem  os  conceitos    na  bibliogra\ia  Próxima  Aula:  Prática  para  Implementação  de  exercícios  e  Dúvidas  Trazer  o  computador  e  os  Exercícios(impressos  ou  no  computador)