capitulo 6 n.
Skip this Video
Loading SlideShow in 5 Seconds..
Capitulo 6 PowerPoint Presentation
play fullscreen
1 / 27
Download Presentation

Capitulo 6 - PowerPoint PPT Presentation

alvaro
113 Views
Download Presentation

Capitulo 6

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. Capitulo 6 Iterações

  2. Ciclo while • while (condição)instruções; • Repete o ciclo enquanto a condição é verdadeira • while (balance < 2 * initial){ year++; balance = balance + balance * rate / 100;}

  3. Programa DoubleInv.java public class DoubleInv { public double getYearsDoubleInv(double rate, double initialBalance) { int year = 0; double balance = initialBalance; double interest = 0.0;

  4. // keep accumulating interest until balance // doubles while (balance < 2 * initialBalance) { year++; interest = balance * rate / 100; balance = balance + interest; } return year; } } // End Class Nota: As regras de estilo no que toca aos comentários não foram seguidas apenas por falta de espaço.

  5. Floxograma de um ciclo while

  6. Erro comum : Ciclo Infinito • while (year < 20) { balance = balance + balance * rate / 100; } • while (year > 0) { year++; . . . } • O ciclo nunca termina

  7. Ciclo for • for (init; condition; update)statement • Exemplo: for (i = 1; i <= 10; i++) ...for (y = 20; y > 0; y--) ... • Equivalente a:init;while (condition){ statement; update; }

  8. Programa Invest.java public class Invest { public double getBalance(double rate) { final double INITIAL_BALANCE = 10000; final int NYEARS = 20; double balance = INITIAL_BALANCE; double interest = 0.0;

  9. for (int year = 1; year <= NYEARS; year++) { interest = balance * rate / 100; balance = balance + interest; System.out.println("year: " + year + " balance: " + balance); } return balance; } } // End Class Nota: As regras de estilo no que toca aos comentários não foram seguidas apenas por falta de espaço.

  10. Floxograma de um ciclofor

  11. Ciclo do • doinstruções;while (condição); • Executa as instruções pelo menos uma vez • Examplo:do{ rate ++;} while (rate <= 0);

  12. Floxograma de um ciclo do

  13. Diferenças • while : repete 0 ou mais vezes • do ... while : repete 1 ou mais vezes • for : repete n vezes

  14. Erros comuns (1) • year = 0;while (balance < 2 * initial){ year++; balance = balance + balance * rate / 100;}System.out.println("Doubled after " + year + " years."); • Oyeardeve iniciar a 0 ou 1 ? • O teste deve ser<ou<= ?

  15. Erros comuns (2) • Um ponto e virgula que não deve existir sum = 0;for (i = 1; i <= 10; i++); { sum = sum + i; } System.out.println(sum); • Um ponto e virgula que falta for (i = 1; i <= 10; sum = sum + i++)System.out.println(sum);

  16. Ciclos Aninhados (1) • Tabela de potências x y 1 1 1 1 1 2 4 8 16 32 3 9 27 81 243 . . . • Exemplofor (int x = 0; x <= ROWS; x++){print row // usa outro ciclo}

  17. Ciclos Aninhados (2) • Ciclo detro de um ciclo:for (int x = 0; x <= ROWS; x++){for (int y = 0; y <= COLS; y++) {compute valueprint value}System.out.println();} • Número de ciclos:ROWS * COLS

  18. Programa Table.java public class Table { public void print() { final int COLUMN_WIDTH = 10; int p = 0; for (int x = 1; x <= 10; x++) { // print table row for (int y = 1; y <= 8; y++) { p = (int)Math.pow(x, y);

  19. // convert value to string String pstr = "" + p; // pad with spaces while (pstr.length() < COLUMN_WIDTH) { pstr = " " + pstr; } System.out.print(pstr); } System.out.println(); } } } // End Class Nota: As regras de estilo no que toca aos comentários não foram seguidas apenas por falta de espaço.

  20. “Loop and a Half” • boolean done = false;while (!done){ if (line == null) { done = true; }else {process data }}

  21. Sentinela (1) • Marcam o fim de um ciclo • Exemplo:3.52.61.20 • Ou melhor, usar uma sentinela não numérica comoQ

  22. Sentinela (2) boolean done = false;while (!done){ if (line.equalsIgnoreCase(“Q”)) { done = true; }else {process data }}

  23. Separação de Palavras • Separa a String em palavras (as palavras são delimitadas por espaços em branco) • StringTokenizer tokenizer = new StringTokenizer();while (tokenizer.hasMoreTokens()){ String token = tokenizer.nextToken();process token}

  24. Tipo de Dados : char • char: recebe um único caracter • Exemplos:'A', '\u00E9' • 'A‘ não é o mesmo que"A" • String s = . . .;for (int i = 0; i < s.length(); i++){ char ch = s.charAt(i);process ch;}

  25. Programa Reverse.java public class Reverse { public String reverse(String s) { String r = ""; char ch; for (int i = 0; i < s.length(); i++) { ch = s.charAt(i); r = ch + r; // add ch in front } return r; } } // End Class

  26. Números Aleatórios e Simulações • Gerar números aleatórios:Random generator = new Random();int n = generator.nextInt(CHOICES);double x = generator.nextDouble(); • Exemplo (gerar números entre 1 e 6)int d = 1 + generator.nextInt(6);

  27. Programa Dice.java import java.util.Random; public class Dice { public Dice() { generator_ = new Random(); } public int cast() { return 1 + generator_.nextInt(6); } private Random generator_; } // End Class