1.3 Conditionals and Loops Copyright 2004, FoxTrot by Bill Amend www.ucomics.com/foxtrot/2003/10/03.

Slides:



Advertisements
Similar presentations
Topic 03 Control Statements Programming II/A CMC2522 / CIM2561 Bavy Li.
Advertisements

1 Control Structures (and user input). 2 Flow of Control The order statements are executed is called flow of control By default, statements in a method.
5-1 Flow of Control Recitation-01/25/2008  CS 180  Department of Computer Science  Purdue University.
CS 106 Introduction to Computer Science I 02 / 12 / 2007 Instructor: Michael Eckmann.
Chapter 6 - Repetition. Introduction u Many applications require certain operations to be carried out more than once. Such situations require repetition.
Loops Repeat after me …. Loops A loop is a control structure in which a statement or set of statements execute repeatedly How many times the statements.
Copyright © 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Java Software Solutions Foundations of Program Design Sixth Edition by Lewis.
Loops Repetition Statements. Repetition statements allow us to execute a statement multiple times Often they are referred to as loops Like conditional.
© 2004 Pearson Addison-Wesley. All rights reserved5-1 Iterations/ Loops The while Statement Other Repetition Statements.
©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Chapter 6 Repetition Statements.
ECE122 L9: While loops March 1, 2007 ECE 122 Engineering Problem Solving with Java Lecture 9 While Loops.
Control Structures II. Why is Repetition Needed? There are many situations in which the same statements need to be executed several times. Example: Formulas.
Chapter 4: Control Structures II
Chapter 5 Loops Liang, Introduction to Java Programming, Tenth Edition, (c) 2015 Pearson Education, Inc. All rights reserved.
Chapter 5: Control Structures II (Repetition)
CHAPTER 5: CONTROL STRUCTURES II INSTRUCTOR: MOHAMMAD MOJADDAM.
EGR 2261 Unit 5 Control Structures II: Repetition  Read Malik, Chapter 5.  Homework #5 and Lab #5 due next week.  Quiz next week.
1.3 Conditionals and Loops Introduction to Programming in Java: An Interdisciplinary Approach · Robert Sedgewick and Kevin Wayne · Copyright © 2008 · October.
CS303ELoops1 CS 303E Lecture 8: Loops Self-referentially, short for GNU's not UNIX, a Unix-compatible software system developed by the Free Software Foundation.
Java Programming: From the Ground Up
Java Programming: From Problem Analysis to Program Design, Second Edition1 Lecture 4 Objectives  Learn about repetition (looping) control structures.
Liang, Introduction to Java Programming, Tenth Edition, (c) 2015 Pearson Education, Inc. All rights reserved.1 Chapter 5 Loops.
1 Debugging. 2 A Lot of Time is Spent Debugging Programs Debugging. Cyclic process of editing, compiling, and fixing errors. n Always a logical explanation.
Chapter 5 Loops.
October 28, 2015ICS102: For Loop1 The for-loop and Nested loops.
Chapter 5: Control Structures II (Repetition). Objectives In this chapter, you will: – Learn about repetition (looping) control structures – Learn how.
Control Structures II Repetition (Loops). Why Is Repetition Needed? How can you solve the following problem: What is the sum of all the numbers from 1.
Chapter 5: Control Structures II J ava P rogramming: From Problem Analysis to Program Design, From Problem Analysis to Program Design,
4.1 Additional Operators Extended Assignment Operators –The assignment operator can be combined with the arithmetic and concatenation operators to provide.
Logic Our programs will have to make decisions on what to do next –we refer to the decision making aspect as logic Logic goes beyond simple if and if-else.
Chapter 4: Control Structures II
Chapter 5: Control Structures II
Repetition. Control of Flow SEQUENCE SELECTION (if..else, switch…case) REPETITION.
Loops (cont.). Loop Statements  while statement  do statement  for statement while ( condition ) statement; do { statement list; } while ( condition.
Control Structures II: Repetition.  Learn about repetition (looping) control structures  Explore how to construct and use count-controlled, sentinel-controlled,
Java iteration statements ● Iteration statements are statements which appear in the source code only once, but it execute many times. ● Such kind of statements.
CONTROL STATEMENTS LOOPS. WHY IS REPETITION NEEDED?  There are many situations in which the same statements need to be executed several times.  Example:
Repetition Statements (Loops) The do while Loop The last iteration structure in C++ is the do while loop. A do while loop repeats a statement or.
2.1 Functions. Functions in Mathematics f x y z f (x, y, z) Domain Range.
The for loop.
Application development with Java Lecture 6 Rina Zviel-Girshin.
CONTROL STRUCTURE Chapter 3. CONTROL STRUCTURES ONE-WAY SELECTION Syntax: if (expression) statement Expression referred to as decision maker. Statement.
CompSci 100e2.1 1 N-Body Simulation l Applications to astrophysics.  Orbits of solar system bodies.  Stellar dynamics at the galactic center.  Stellar.
REPETITION MTS3033 OBJECT ORIENTED PROGRAMMING 1.
COMP Loop Statements Yi Hong May 21, 2015.
Java Programming: From Problem Analysis to Program Design, 4e Chapter 5 Control Structures II: Repetition.
CSE 501N Fall ’09 07: Iteration 17 September 2009 Nick Leidenfrost.
Java Programming: From Problem Analysis to Program Design, 3e Chapter 5 Control Structures II: Repetition.
1 Flow of Control Chapter 5. 2 Objectives You will be able to: Use the Java "if" statement to control flow of control within your program.  Use the Java.
Copyright © 2014 by John Wiley & Sons. All rights reserved.1 Decisions and Iterations.
Feedback  Lab2, Hw1  Groups  Group Project Requirements.
Introduction to Programming G50PRO University of Nottingham Unit 6 : Control Flow Statements 2 Paul Tennent
Lesson 7 Iteration Structures. Iteration is the third control structure we will explore. Iteration simply means to do something repeatedly. All iteration.
Chapter 5: Control Structures II
Chapter 5: Control Structures II
Chapter 5: Control Structures II
Repetition-Counter control Loop
CiS 260: App Dev I Chapter 4: Control Structures II.
Repetition-Sentinel,Flag Loop/Do_While
Chapter 5: Control Structures II
Repetition Chapter 6 12/06/16 & 12/07/16 1 1
Outline Altering flow of control Boolean expressions
Repetition Control Structure
Data types, assignment statements, and math functions allow you to compute You write a sequence of statements that tell the computer what needs to be done.
Building Java Programs
Building Java Programs
Suggested self-checks:
Repetition Statements
Introduction to Computer Science I.
Chapter 4: Loops and Iteration
Presentation transcript:

1.3 Conditionals and Loops Copyright 2004, FoxTrot by Bill Amend

2 Control Flow Control flow. n Sequence of statements that are actually executed in a program. n Conditionals and loops: enable us to choreograph control flow. statement 2 statement 1 statement 4 statement 3 boolean 2 true false statement 2 boolean 1 statement 3 false statement 1 true straight-line control flow control flow with conditionals and loops

Conditionals

4 If Statement The if statement. A common branching structure. Check boolean condition. If true, execute some statements. If false, execute other statements. if ( boolean expression ) { statement T ; } else { statement F ; } can be any sequence of statements statement T true false boolean expression statement F

5 If Statement The if statement. A common branching structure. Check boolean condition. If true, execute some statements. If false, execute other statements.

6 If Statement Ex. Take different action depending on value of variable. public class Flip { public static void main(String[] args) { if (Math.random() < 0.5) System.out.println("Heads"); elseMath.random() < 0.5) System.out.println("Tails"); }

7 If Statement Examples

8 The While Loop

9 While Loop The while loop. A common repetition structure. n Check a boolean expression. n Execute a sequence of statements. n Repeat. while ( boolean expression ) { statement 1 ; statement 2 ; } statement 1 true false boolean expression statement 2 loop body loop continuation condition

10 While Loops: Powers of Two Ex. Print first n powers of 2. Increment i from 1 to n. Double v each time. int i = 0; int v = 1; while (i <= N) { System.out.println(v); i = i + 1; v = 2 * v; } % java Powers iv true i <= N true true false N = 7

11 Powers of Two public class PowersOfTwo { public static void main(String[] args) { // last power of two to print int N = Integer.parseInt(args[0]); int i = 0; // loop control counter int v = 1; // current power of two while (i <= N) { System.out.println(v); i = i + 1; v = 2 * v; } % java PowersOfTwo % java PowersOfTwo print ith power of two

12 The For Loop

13 For Loops The for loop. Another common repetition structure. n Execute initialization statement. n Check boolean expression. n Execute sequence of statements. n Execute increment statement. n Repeat. for ( init ; boolean expression ; increment ) { statement 1 ; statement 2 ; } statement 1 true false boolean expression statement 2 init increment body loop continuation condition

14 For Loops: Subdivisions of a Ruler Create subdivision of a ruler. Initialize ruler to empty string. For each value i from 1 to N : sandwich two copies of ruler on either side of i. public class Ruler { public static void main(String[] args) { int N = Integer.parseInt(args[0]); String ruler = " "; for (int i = 1; i <= N; i++) { ruler = ruler + i + ruler; } System.out.println(ruler); } 1" 1 " iruler 2" " 3" " "

Observation. Loops can produce a huge amount of output! 15 % java Ruler 1 1 % java Ruler % java Ruler % java Ruler % java Ruler % java Ruler 100 Exception in thread "main" java.lang.OutOfMemoryError For Loops: Subdivisions of a Ruler

16 Loop Examples

17 Nesting

18 Nesting Conditionals and Loops Conditionals enable you to do one of 2 n sequences of operations with n lines. More sophisticated programs. n Nest conditionals within conditionals. n Nest loops within loops. n Nest conditionals within loops within loops. if (a0 > 0) System.out.print(0); if (a1 > 0) System.out.print(1); if (a2 > 0) System.out.print(2); if (a3 > 0) System.out.print(3); if (a4 > 0) System.out.print(4); if (a5 > 0) System.out.print(5); if (a6 > 0) System.out.print(6); if (a7 > 0) System.out.print(7); if (a8 > 0) System.out.print(8); if (a9 > 0) System.out.print(9); Loops enable you to do an operation n times using only 2 lines of code. double sum = 0.0; for (int i = 1; i <= 1024; i++) sum = sum / i; 2 10 = 1024 possible results, depending on input computes 1/1 + 1/ /1024

19 Nested If Statements Ex. Pay a certain tax rate depending on income level. double rate; if (income < 47450) rate = 0.22; else if (income < ) rate = 0.25; else if (income < ) rate = 0.28; else if (income < ) rate = 0.33; else if (income < ) rate = 0.35; graduated income tax calculation ,45022% IncomeRate 47,450 – 114,65025% 114,650 – 174,70028% 174,700 – 311,95033% 311, % 5 mutually exclusive alternatives

20 Nested If Statements is equivalent to: double rate; if (income < 47450) rate = 0.22; else if (income < ) rate = 0.25; else if (income < ) rate = 0.28; else if (income < ) rate = 0.33; else if (income < ) rate = 0.35; ,45022% IncomeRate 47,450 – 114,65025% 114,650 – 174,70028% 174,700 – 311,95033% 311, % double rate; if (income < 47450) rate = 0.22; else { if (income < ) rate = 0.25; else { if (income < ) rate = 0.28; else { if (income < ) rate = 0.33; else rate = 0.35; }

21 Nested If Statements Ex. Pay a certain tax rate depending on income level. double rate = 0.35; if (income < 47450) rate = 0.22; if (income < ) rate = 0.25; if (income < ) rate = 0.28; if (income < ) rate = 0.33; wrong graduated income tax calculation ,45022% IncomeRate 47,450 – 114,65025% 114,650 – 174,70028% 174,700 – 311,95033% 311, %

22 Divisor Pattern (p. 59) Print an NxN table where an asterisk in (i,j) means evenly divides… n Nested loops! > java DivisorPattern 8 * * * * * * * * 1 * * * * * 2 * * * 3 * * * * 4 * * 5 * * * * 6 * * 7 * * * * 8

23 Divisor Pattern (p. 59) Print an NxN table where an asterisk in (i,j) means evenly divides… n Nested loops! public class DivisorPattern { public static void main(String[] args) { int N = Integer.parseInt(args[0]); for (int i = 1; i <= N; i++) { for (int j = 1; j <= N; j++) { if (i % j == 0 || j % i == 0) { System.out.print("* "); } else { System.out.print(" "); } System.out.println(i); } > java DivisorPattern 8 * * * * * * * * 1 * * * * * 2 * * * 3 * * * * 4 * * 5 * * * * 6 * * 7 * * * * 8

24 Debugging Admiral Grace Murray Hopper

25 Debugging a Program Factor. Given an integer N, compute its prime factorization. Application. Break RSA cryptosystem. 3,757,208 = 2 3  7  13 2  /8

Syntax error. Illegal Java program. n Compiler error messages help locate problem. Eventually, a file named Factors.class. 26 Debugging a Program: Syntax Errors public class Factors1 { public static void main(String[] args) { long N = Long.parseLong(args[0]) for (i = 0; i < N; i++) { while (N % i == 0) System.out.print(i + " ") N = N / i } As long as i is a factor, divide it out. Check if i is a factor. Compile-time error

Semantic error. Legal but wrong Java program. Use " System.out.println " method to identify problem. 27 Debugging a Program: Semantic Errors public class Factors2 { public static void main(String[] args) { long N = Long.parseLong(args[0]); for (long i = 2; i < N; i++) { while (N % i == 0) System.out.print(i + " "); N = N / i; } As long as i is a factor, divide it out. Check if i is a factor. no output (17) or infinite loop (49) Run-time error

28 Debugging a Program: Performance Errors Performance error. Correct program but too slow. n Use profiling to discover bottleneck. n Devise better algorithm. public class Factors3 { public static void main(String[] args) { long N = Long.parseLong(args[0]); for (long i = 2; i <= N; i++) { while (N % i == 0) { System.out.print(i + " "); N = N / i; } As long as i is a factor, divide it out. Check if i is a factor. Performance error too slow for large N (999,999,937)

Fact. If N has a factor, it has one less than or equal to its square root. Impact. Many fewer iterations of for loop. 29 public class Factors { public static void main(String[] args) { long N = Long.parseLong(args[0]); for (long i = 2; i*i <= N; i++) { while (N % i == 0) { System.out.print(i + " "); N = N / i; } if (N > 1) System.out.println(N); else System.out.println(); } Debugging a Program: Success Check if i is a factor. Corner case: biggest factor occurs once. As long as i is a factor, divide it out.

30 Debugging a Program: Trace % java Factors /8

31 Q. How large an integer can I factor? % java Factors % java Factors % java Factors Debugging a Program: Analysis † estimated largest factor 3instant digits (i <= N) seconds 977 seconds 1221 hours † instant (i*i <= N) instant 0.16 seconds years † millennia † 2.7 seconds 92 seconds after a few minutes of computing….

32 Programming in Java Programming in Java. [a slightly more realistic view] 1. Create the program. 2. Compile it.. Compiler says: That’s not a legal program. Back to step 1 to fix your errors of syntax. 3. Execute it. Result is bizarrely (or subtly) wrong. Back to step 1 to fix your errors of semantics. 4. Enjoy the satisfaction of a working program!

33 Debugging a Program Debugging. Cyclic process of editing, compiling, and fixing errors. n Always a logical explanation. n What would the machine do? n Explain it to the teddy bear. You will make many mistakes as you write programs. It's normal. As soon as we started programming, we found out to our surprise that it wasn't as easy to get programs right as we had thought. I can remember the exact instant when I realized that a large part of my life from then on was going to be spent in finding mistakes in my own programs. - Maurice Wilkes If I had 8 hours to chop down a tree, I would spend 6 hours sharpening an axe. - Abraham Lincoln

More Examples Fall 2008 Examples – From lab 2: Roll7 – Simulates how likely to roll two dice and get 7 – New example: FlushOdds – Simulates how likely to draw 5 cards of the same suit (a flush in poker) 34

35 A Wonderful Square Root Copyright 2004, Sidney Harris, % java Sqrt

36 While Loops: Square Root Q. How might we implement Math.sqrt() ? A. To compute the square root of c: n Initialize t 0 = c. n Repeat until t i = c / t i, up to desired precision: set t i+1 to be the average of t i and c / t i. – Remember: if t i really equals c / t i then c = t i 2 and t i is √c. computing the square root of 2

37 public class Sqrt { public static void main(String[] args) { double EPS = 1E-15; double c = Double.parseDouble(args[0]); double t = c; while (Math.abs(t - c/t) > t*EPS) { t = (c/t + t) / 2.0; } System.out.println(t); } % java Sqrt error tolerance 15 decimal digits of accuracy in 5 iterations While Loops: Square Root Q. How might we implement Math.sqrt() ? A. To compute the square root of c: n Initialize t 0 = c. n Repeat until t i = c / t i, up to desired precision: set t i+1 to be the average of t i and c / t i.

38 Newton-Raphson Method Square root method explained. n Goal: find root of function f(x). n Start with estimate t 0. n Draw line tangent to curve at x= t i. n Set t i+1 to be x-coordinate where line hits x-axis. n Repeat until desired precision. f(x) = x 2 - c to compute  c

39 Monte Carlo Simulation

40 Gambler's Ruin Gambler's ruin. Gambler starts with $stake and places $1 fair bets until going broke or reaching $goal. n What are the chances of winning? n How many bets will it take? One approach. Monte Carlo simulation. n Flip digital coins and see what happens. n Repeat and compute statistics.

41 public class Gambler { public static void main(String[] args) { int stake = Integer.parseInt(args[0]); int goal = Integer.parseInt(args[1]); int trials = Integer.parseInt(args[2]); int wins = 0; System.out.println(wins + " wins of " + trials); } // repeat experiment N times for (int t = 0; t < trials; ++t) { } // do one gambler's ruin experiment int cash = stake; while (cash > 0 && cash < goal) { } if (cash == goal) wins++; // flip coin and update if (Math.random() < 0.5) ++cash; else --cash; Gambler's Ruin

42 Simulation and Analysis Fact. Probability of winning = stake  goal. Fact. Expected number of bets = stake  desired gain. Ex. 20% chance of turning $500 into $2500, but expect to make one million $1 bets. Remark. Both facts can be proved mathematically; for more complex scenarios, computer simulation is often the best plan of attack. % java Gambler wins of 1000 % java Gambler wins of 1000 % java Gambler wins of 1000 stake goal trials after a few hours of computing….

43 Control Flow Summary Control flow. n Sequence of statements that are actually executed in a program. n Conditionals and loops: enables us to choreograph the control flow. Straight-line programs All statements are executed in the order given. Conditionals Certain statements are executed depending on the values of certain variables. if if-else Loops Certain statements are executed repeatedly until certain conditions are met. while for do-while Control FlowDescriptionExamples