engenharia informtica programa§£o i & estruturas de dados e algoritmos 2001/2002 1...

Download Engenharia Informtica Programa§£o I & Estruturas de Dados e Algoritmos 2001/2002 1 Capitulo 5 - Decisµes Capitulo 5 Decisµes

Post on 17-Apr-2015

105 views

Category:

Documents

0 download

Embed Size (px)

TRANSCRIPT

  • Slide 1
  • Engenharia Informtica Programao I & Estruturas de Dados e Algoritmos 2001/2002 1 Capitulo 5 - Decises Capitulo 5 Decises
  • Slide 2
  • Engenharia Informtica Programao I & Estruturas de Dados e Algoritmos 2001/2002 2 Capitulo 5 - Decises Uma deciso
  • Slide 3
  • Engenharia Informtica Programao I & Estruturas de Dados e Algoritmos 2001/2002 3 Capitulo 5 - Decises A instruo if if (condio) { instruo } if (amount = 8.0) r = ">= 7.0) r = "Many buildings destroyed"; else if (richter_ >= 6.0) r = "Many buildings considerably damaged, some collapse"; else if (richter_ >= 4.5) r = "Damage to poorly constructed buildings"; else if (richter_ >= 3.5) r = "Felt by many people, no destruction"; else if (richter_ >= 0) r = "Generally not felt by people"; else r = "Negative numbers are not valid"; return r; } private double richter_; } // Nota: a regra de estilo n.10 no foi respeitada apenas por // falta de espao">
  • Engenharia Informtica Programao I & Estruturas de Dados e Algoritmos 2001/2002 16 Capitulo 5 - Decises public String getDescription() { String r; if (richter_ >= 8.0) r = "Most structures fall"; else if (richter_ >= 7.0) r = "Many buildings destroyed"; else if (richter_ >= 6.0) r = "Many buildings considerably damaged, some collapse"; else if (richter_ >= 4.5) r = "Damage to poorly constructed buildings"; else if (richter_ >= 3.5) r = "Felt by many people, no destruction"; else if (richter_ >= 0) r = "Generally not felt by people"; else r = "Negative numbers are not valid"; return r; } private double richter_; } // Nota: a regra de estilo n.10 no foi respeitada apenas por // falta de espao
  • Slide 17
  • Engenharia Informtica Programao I & Estruturas de Dados e Algoritmos 2001/2002 17 Capitulo 5 - Decises Ciclos aninhados if (condio1) { if (condio1a) { instruo1a; } else { instruo1b;}
  • Slide 18
  • Engenharia Informtica Programao I & Estruturas de Dados e Algoritmos 2001/2002 18 Capitulo 5 - Decises Clculo de impostos
  • Slide 19
  • Engenharia Informtica Programao I & Estruturas de Dados e Algoritmos 2001/2002 19 Capitulo 5 - Decises Program Tax.java public class Tax { // method to calculate the incoming tax // status may be M or S public getTax(double income,String status) { TaxReturn aTaxReturn = new TaxReturn(income, status); return aTaxReturn.getTax(); }
  • Slide 20
  • Engenharia Informtica Programao I & Estruturas de Dados e Algoritmos 2001/2002 20 Capitulo 5 - Decises public class TaxReturn { public TaxReturn(double anIncome, String aStatus) { income_ = anIncome; status_ = aStatus; } public double getTax() { double tax = 0; final double RATE1 = 0.15; final double RATE2 = 0.28; final double RATE3 = 0.31; final double SINGLE_CUTOFF1 = 21450; final double SINGLE_CUTOFF2 = 51900;
  • Slide 21
  • Engenharia Informtica Programao I & Estruturas de Dados e Algoritmos 2001/2002 21 Capitulo 5 - Decises final double SINGLE_BASE2 = 3217.50; final double SINGLE_BASE3 = 11743.50; final double MARRIED_CUTOFF1 = 35800; final double MARRIED_CUTOFF2 = 86500; final double MARRIED_BASE2 = 5370; final double MARRIED_BASE3 = 19566; if (status_.equalsIgnoreCase("S")) { if (income_ bday)) )...
  • Slide 25
  • Engenharia Informtica Programao I & Estruturas de Dados e Algoritmos 2001/2002 25 Capitulo 5 - Decises Fluxograma para combinaes de && e ||
  • Slide 26
  • Engenharia Informtica Programao I & Estruturas de Dados e Algoritmos 2001/2002 26 Capitulo 5 - Decises Tabelas de verdade A B A && B true true true true false false false any false A B A || B true any true false true true false false false A !A true false false true
  • Slide 27
  • Engenharia Informtica Programao I & Estruturas de Dados e Algoritmos 2001/2002 27 Capitulo 5 - Decises Lei de De Morgan !(A && B) idntico a !A || !B !(A || B) idntico a !A && !B if ( !(country.equals("USA") && !state.equals("AK) && !state.equals("HI")) )... if (!country.equals("USA") || !!state.equals("AK) || !!state.equals("HI"))...
  • Slide 28
  • Engenharia Informtica Programao I & Estruturas de Dados e Algoritmos 2001/2002 28 Capitulo 5 - Decises Variveis booleanas boolean shipByAir = false; if (!country.equals("USA")) { shipByAir = true; } else if ( state.equals("AK") || state.equals("HI") ) { shipByAir = true; } if (shipByAir)... else... As variveis bolenas so por vezes chamadas flags
  • Slide 29
  • Engenharia Informtica Programao I & Estruturas de Dados e Algoritmos 2001/2002 29 Capitulo 5 - Decises Boolean do's and don'ts no escrever: if (shipByAir == true)... if (shipByAir != false)... escrever: if (shipByAir)... no escrever: if (balance < 0) { return true; } else { return false; } escrever: return balance < 0;