module 2: choice and iterationcytron/cse131/slides/2.pdf · 2.0 introduction • life presents us...

143
Module 2: Choice and Iteration Copyright Ron K. Cytron 2013 Ron K. Cytron * Prepared for 2u Semester Online Department of Computer Science and Engineering Washington University in Saint Louis Thanks to Alan Waldman for comments that improved these slides *

Upload: others

Post on 26-Sep-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

Module 2: Choice and Iteration

Copyright Ron K. Cytron 2013

Ron K. Cytron *

Prepared for 2u

Semester Online

Department of Computer Science and Engineering Washington University in Saint Louis

Thanks to Alan Waldman for comments that improved these slides

*

Page 2: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

Snappy intro monolog

2

Page 3: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.0 Introduction

•  Straight-line code –  Statements execute in sequence –  Program performs the same computations every time –  Not so exciting

3

Oyster 0

Page 4: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.0 Introduction

•  Life presents us with choices •  Programs should be able to make choices too

–  Execution becomes conditional –  The arrows show the flow of the computation

4

Yes

Page 5: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.0 Introduction

•  Life presents us with choices •  Programs should be able to make choices too

–  Execution becomes conditional –  The arrows show the flow of the computation –  Sometimes our choices involve nested thinking

5

Yes

Page 6: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.0 Introduction

•  Life presents us with choices •  Programs should be able to make choices too

–  Execution becomes conditional –  The arrows show the flow of the computation –  Sometimes our choices involve nested thinking

6

Page 7: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.0 Introduction

•  In life we sometimes repeat our actions –  Lather –  Rinse –  Repeat –  Taken literally, you apparently shampoo forever

•  Better to say –  While my hair is still dirty

•  Lather •  Rinse •  (repeat)

•  Programs should be able to iterate

7

Page 8: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.0 Introduction

•  We study here the syntax and semantics of –  Choice

•  Choosing to do one thing, or nothing at all •  Choosing to do one thing, or some other thing

–  Iteration •  Repeat a computation until a desired result is

achieved – Clean hair

•  Perform a computation for a range of values –  Sum the integers from 1 to 10

•  We see our first example of composing (nesting) program constructs

8 End of Oyster

Page 9: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.1 Choice Syntax and Examples

•  Usage –  Conditionally execute statements –  Check for faults or problems –  Establish dependent computations

•  Syntax –  “if” statement

•  With or without an “else” clause

9

Oyster 1

Page 10: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.1 Choice Syntax and Examples

10

Flow chart

How do we take the concept of choice and implement it in

a programming language?

Page 11: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.1 Choice Syntax and Examples

11

Flow chart

How do we take the concept of choice and implement it in

a programming language?

The boolean data type allows us to go one way or

the other

Page 12: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.1 Choice Syntax and Examples

12

Flow chart

How do we take the concept of choice and implement it in

a programming language?

The boolean data type allows us to go one way or

the other

If the expression's value is true we go left

Page 13: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.1 Choice Syntax and Examples

13

Flow chart

How do we take the concept of choice and implement it in

a programming language?

The boolean data type allows us to go one way or

the other

If the expression's value is true we go left

If the value is false, we go right

Page 14: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.1 Choice Syntax and Examples

14

Flow chart

How do we take the concept of choice and implement it in

a programming language?

The boolean data type allows us to go one way or

the other

If the expression's value is true we go left

If the value is false, we go right

Page 15: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.1 Choice Syntax and Examples

15

if (boolean expression) {!

statement(s) T!

}!

else {!

Statement(s) F!

}!

Flow chart Corresponding code

Page 16: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.1 Choice Syntax and Examples

16

if (boolean expression) {!

statement(s) T!

}!

else {!

Statement(s) F!

}!

Flow chart Corresponding code

Let's look at this in terms of some real examples

Page 17: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.1 Choice Syntax and Examples

•  Example: set the variable “max” to the value of x or y, depending on which is larger

17

int max;

Page 18: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.1 Choice Syntax and Examples

•  Example: set the variable “max” to the value of x or y, depending on which is larger

•  The predicate is evaluated

18

int max;

Page 19: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.1 Choice Syntax and Examples

19

int max;

•  Example: set the variable “max” to the value of x or y, depending on which is larger

•  The predicate is evaluated –  If it is true, then max is

set to the value of x –  This happens when x is

greater than y

Page 20: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.1 Choice Syntax and Examples

20

int max;

•  Example: set the variable “max” to the value of x or y, depending on which is larger

•  The predicate is evaluated –  If it is false, then max is

set to the value of y •  Question: what inequality

exists between x and y in this case? Answer: x <= y

Page 21: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

•  Syntax –  The code on the left corresponds to the flow diagram

shown on the right

2.1 Choice Syntax and Examples

21

if (x > y) {!

max = x;!

}!

else {!

max = y;!

}!

Page 22: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

•  Evaluation –  Suppose we have

•  x==5 and y==7

2.1 Choice Syntax and Examples

22

if (x > y) {!

max = x;!

}!

else {!

max = y;!

}!

Page 23: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

•  Evaluation –  Suppose we have

•  x==5 and y==7

2.1 Choice Syntax and Examples

23

if (x > y) {!

max = x;!

}!

else {!

max = y;!

}!

5 7

Page 24: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

•  Evaluation –  Suppose we have

•  x==5 and y==7

2.1 Choice Syntax and Examples

24

if (x > y) {!

max = x;!

}!

else {!

max = y;!

}!

5 7

Page 25: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

•  Evaluation –  Suppose we have

•  x==5 and y==7

2.1 Choice Syntax and Examples

25

if (x > y) {!

max = x;!

}!

else {!

max = y;!

}!

5 7

Page 26: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

•  Evaluation –  Suppose we have

•  x==5 and y==7

2.1 Choice Syntax and Examples

26

if (x > y) {!

max = x;!

}!

else {!

max = y;!

}!

5 7

Page 27: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

•  Evaluation –  Suppose we have

•  x==5 and y==7

2.1 Choice Syntax and Examples

27

if (x > y) {!

max = x;!

}!

else {!

max = y;!

}!

5 7

7

Page 28: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.1 Choice Syntax and Examples

•  Boolean expression is evaluated

•  If the result is “true” then statement T executes

•  Otherwise statement F executes

28

if (boolean expression) {!

statement(s) T!

}!

else {!

Statement(s) F!

}!

Flow chart

End of Oyster

Page 29: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.2 Exercise

•  Video intro –  Recall how to prompt information from a user –  For example, how to prompt for two integers we shall

call x and y

29

BLT 2 public

Page 30: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.2 Exercise

•  Question card –  Write code that

•  Prompts the user for integer values for x and y •  Computes the max of x and y using the “if” statement

we have just studied •  Prints the max of the two variables to the console

–  Run your program on several different values for x and y •  What would constitute thorough testing of your code?

30

Page 31: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.2 Exercise

•  Video response –  Goes over an incorrect solution to this problem

•  Sets max only one one branch, not the other •  Declares "max" inside the if

–  Shows that some testing may lead us to think that solution is correct

–  Talks about thorough testing •  3 cases: < = >

–  Goes over a correct solution to this problem

31 End of BLT

Page 32: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.3 Composition and Nesting

•  An important concept in computer science is composition –  We can combine simple program components or

statements to make larger ones •  Given the template if (boolean expresson) {! Statement T }!We can expand Statement T to be any sequence

of statements

32

Oyster 3

Page 33: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

•  An important concept in computer science is composition –  We can combine simple program components or

statements to make larger ones •  Given the template if (boolean expresson) {! Statement T1

}!

33

2.3 Composition and Nesting

Page 34: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.3 Composition and Nesting

•  An important concept in computer science is composition –  We can combine simple program components or

statements to make larger ones •  Given the template if (boolean expresson) {! Statement T1

Statement T2 }!

34

Page 35: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

•  An important concept in computer science is composition –  We can combine simple program components or

statements to make larger ones •  Given the template if (boolean expresson) {! Statement T1

Statement T2 ……

}!

35

2.3 Composition and Nesting

Page 36: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.3 Composition and Nesting

Example:

int max;

if ( x > y ) { max = x; System.out.println(“x is bigger”); } else { max = y; System.out.println(“x is not bigger”); }

36

Page 37: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.3 Composition and Nesting

Example:

int max;

if ( x > y ) { max = x; System.out.println(“x is bigger”); } else { max = y; System.out.println(“x is not bigger”); }

37

These statements execute in sequence

if x > y

Page 38: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.3 Composition and Nesting

Example:

int max;

if ( x > y ) { max = x; System.out.println(“x is bigger”); } else { max = y; System.out.println(“x is not bigger”); }

38

These statements execute in sequence

if x > y

The braces {….} enclose the

statements that execute when the predicate is true

Page 39: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.3 Composition and Nesting

Example:

int max;

if ( x > y ) { max = x; System.out.println(“x is bigger”); } else { max = y; System.out.println(“x is not bigger”); }

39

These statements execute in sequence

if x <= y

Note again that braces serve to

group these statements

Page 40: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.3 Composition and Nesting

•  A statement can even take the form of another “if” statement

int max;

if (x > y) { max = x; System.out.println(“x is bigger”); } else { max = y;

if (x == y) { System.out.println(“They are the same value”);

} else { System.out.println(“y is bigger”); } }

40

Page 41: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.3 Composition and Nesting

•  A statement can even take the form of another “if” statement

int max;

if (x > y) { max = x; System.out.println(“x is bigger”); } else { max = y;

if (x == y) { System.out.println(“They are the same value”);

} else { System.out.println(“y is bigger”); } }

41

Each "else" matches its closest,

otherwise unmatched "if" statement

Page 42: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.3 Composition and Nesting

•  A statement can even take the form of another “if” statement

int max;

if (x > y) { max = x; System.out.println(“x is bigger”); } else { max = y;

if (x == y) { System.out.println(“They are the same value”);

} else { System.out.println(“y is bigger”); } }

42

Each "else" matches its closest,

otherwise unmatched "if" statement

Page 43: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.3 Composition and Nesting

•  A statement can even take the form of another “if” statement

int max;

if (x > y) { max = x; System.out.println(“x is bigger”); } else { max = y;

if (x == y) { System.out.println(“They are the same value”);

} else { System.out.println(“y is bigger”); } }

43

Each "else" matches its closest,

otherwise unmatched "if" statement

End of Oyster

Page 44: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.4 More examples

•  The “else” part of an if statement is optional

Example if (x < 0) { x = -x; }

The above code sets x to its absolute value. If x is already positive or 0, no action is necessary. The statement inside the “if” is executed only if x is negative.

44

Oyster 4

Page 45: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.4 More examples

•  The “else” part of an if statement is optional

Example if (x < 0) { x = -x; }

The above code sets x to its absolute value. If x is already positive or 0, no action is necessary. The statement inside the “if” is executed only if x is negative.

45

Suppose x == 5

Page 46: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.4 More examples

•  The “else” part of an if statement is optional

Example if (x < 0) { x = -x; }

The above code sets x to its absolute value. If x is already positive or 0, no action is necessary. The statement inside the “if” is executed only if x is negative.

46

Suppose x == 5 5

Page 47: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.4 More examples

•  The “else” part of an if statement is optional

Example if (x < 0) { x = -x; }

The above code sets x to its absolute value. If x is already positive or 0, no action is necessary. The statement inside the “if” is executed only if x is negative.

47

Suppose x == 5

The predicate is false, so the contents of the

if statement are skipped

5

Page 48: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.4 More examples

•  The “else” part of an if statement is optional

Example if (x < 0) { x = -x; }

The above code sets x to its absolute value. If x is already positive or 0, no action is necessary. The statement inside the “if” is executed only if x is negative.

48

Suppose x == 5

The program continues at

5

Page 49: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.4 More examples

•  The “else” part of an if statement is optional

Example if (x < 0) { x = -x; }

The above code sets x to its absolute value. If x is already positive or 0, no action is necessary. The statement inside the “if” is executed only if x is negative.

49

Suppose x == –5

The predicate is true, so any statements

inside the braces are executed

–5

Page 50: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.4 More examples

•  The “else” part of an if statement is optional

Example if (x < 0) { x = -x; }

The above code sets x to its absolute value. If x is already positive or 0, no action is necessary. The statement inside the “if” is executed only if x is negative.

50

Suppose x == –5

The value of x at is 5

–5

Page 51: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.4 More examples

•  Let’s work through this example:

if ( x > y ) { int t = x; x = y; y = t; } First, if x <= y, the predicate is false, and the

statements inside do not execute. This leaves x and y alone, and they have the same values before and after the if statement

51

Page 52: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.4 More examples

•  Let’s work through this example:

if ( x > y ) { int t = x; x = y; y = t; } However, if x > y, then the code inside the braces

executes. What does that code do? Let’s assume x is 10 and y is 5 before the if statement executes.

52

Page 53: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.4 More examples

•  Let’s work through this example:

if ( x > y ) { int t = x; x = y; y = t; } The value of x is computed and stored in a new

variable named t (show this as columns / values)

53

t 10

x 10

y 5

Page 54: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.4 More examples

•  Let’s work through this example:

if ( x > y ) { int t = x; x = y; y = t; } The value of y is computed and stored at x,

destroying the value previously availble there

54

t 10

x 5

y 5

Page 55: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.4 More examples

•  Let’s work through this example:

if ( x > y ) { int t = x; x = y; y = t; } The value of t is computed and is stored at y.

The result is that the values of x and y have been swapped.

55

t 10

x 5

y 10

Page 56: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.4 More examples

•  Let’s work through this example:

if ( x > y ) { int t = x; x = y; y = t; } This code therefore swaps the values of x and y, if

the value of x was larger then the value of y. The code sorts x and y so that after the if

statement, x’s value is no larger than y’s. 56 End of Oyster

Page 57: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.5a Exercise

Question Card

Why would the following code not have achieved the same result as our previous example?

if (x > y ) { x = y; y = x; }

57

BLT 5a public

Page 58: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.5a Exercise

Video Response The code would have set x to y’s value, then set y

to x’s value, which is now also the value of y. The result is that both x and y have y’s value, and the values did not swap, as they did when we used the temporary.

if (x > y ) { x = y; y = x; }

58 End of BLT

Page 59: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.5b More “if” examples

•  Computer plays heads / tails –  If random value < 0.5 print heads

•  Otherwise print tails

59

BLT 5b public

Page 60: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.5b More “if” examples

•  Computer plays heads / tails –  If random value < 0.5 print heads

•  Otherwise print tails

•  Inches to feet/inches converter –  Reads in inches –  Prints out f feet I inches

60

Page 61: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.5b More “if” examples

•  Computer plays heads / tails –  If random value < 0.5 print heads

•  Otherwise print tails

•  Inches to feet/inches converter –  Reads in inches (say 67) –  Prints out f feet i inches (say 5 feet 7 inches) –  How you handle the special case of 1 foot or 1 inch?

•  Divide two numbers carefully –  Checks whether the divisor is 0

61

Page 62: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.5b More “if” examples

•  Computer plays heads / tails –  If random value < 0.5 print heads

•  Otherwise print tails

•  Inches to feet/inches converter –  Reads in inches (say 67) –  Prints out f feet i inches (say 5 feet 7 inches) –  How you handle the special case of 1 foot or 1 inch?

•  Divide two numbers carefully –  Checks whether the divisor is 0

•  Generate die throw –  print value from 1 to 6 inclusively

62 End of BLT

Page 63: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.5c More “if” examples

•  Original diagrammed problem –  Do I want to do this? –  Is it a good idea? –  Would it make a good story?

•  Use random toss of coin to decide which to do and print the outcome and why it was chosen

•  Run the program a sufficient number of times –  So that you see each possible outcome –  How many outcomes are there?

•  What are the probabilities associated with each outcome?

63

Roundtable?

End of Roundtable

Page 64: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

•  “if” statements allow us to choose to go one way or another

•  Iteration allows us to choose to do something again (and again, and again….)

•  Recall –  Lather, rinse, repeat

64

Oyster 6

Page 65: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

•  “if” statements allow us to choose to go one way or another

•  Iteration allows us to choose to do something again (and again, and again….)

•  Recall –  Lather, rinse

65

Lather

Rinse

Page 66: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

•  “if” statements allow us to choose to go one way or another

•  Iteration allows us to choose to do something again (and again, and again….)

•  Recall –  Lather, rinse, repeat

66

Lather

Rinse

Page 67: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

•  “if” statements allow us to choose to go one way or another

•  Iteration allows us to choose to do something again (and again, and again….)

•  Recall –  Lather, rinse, repeat –  Generates

•  Lather, Rinse, Lather, Rinse, …

67

Lather

Rinse

Page 68: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

•  “if” statements allow us to choose to go one way or another

•  Iteration allows us to choose to do something again (and again, and again….)

•  Recall –  Lather, rinse, repeat –  Generates

•  Lather, Rinse, Lather, Rinse, … –  We need some way to stop!

68

Lather

Rinse

Page 69: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

•  “if” statements allow us to choose to go one way or another

•  Iteration allows us to choose to do something again (and again, and again….)

•  Recall –  We need some way to stop! –  If the hair is dirty

•  keep going

69

hair dirty?

Lather

Rinse

yes

Page 70: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

•  “if” statements allow us to choose to go one way or another

•  Iteration allows us to choose to do something again (and again, and again….)

•  Recall –  We need some way to stop! –  If the hair is dirty

•  keep going –  Otherwise

•  stop

70

hair dirty?

Lather

Rinse

yes no

Page 71: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

•  “if” statements allow us to choose to go one way or another

•  Iteration allows us to choose to do something again (and again, and again….)

•  Recall –  We need some way to stop! –  If the hair is dirty

•  keep going –  Otherwise

•  stop

71

hair dirty?

Lather

Rinse

yes no

Page 72: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

•  “if” statements allow us to choose to go one way or another

•  Iteration allows us to choose to do something again (and again, and again….)

•  Recall –  We need some way to stop! –  If the hair is dirty

•  keep going –  Otherwise

•  stop

72

hair dirty?

Lather

Rinse

yes no

Page 73: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

•  “if” statements allow us to choose to go one way or another

•  Iteration allows us to choose to do something again (and again, and again….)

•  Recall –  We need some way to stop! –  If the hair is dirty

•  keep going –  Otherwise

•  stop

73

hair dirty?

Lather

Rinse

yes no

Page 74: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

•  “if” statements allow us to choose to go one way or another

•  Iteration allows us to choose to do something again (and again, and again….)

•  Recall –  We need some way to stop! –  If the hair is dirty

•  keep going –  Otherwise

•  stop

74

hair dirty?

Lather

Rinse

yes no

Page 75: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

•  “if” statements allow us to choose to go one way or another

•  Iteration allows us to choose to do something again (and again, and again….)

•  Recall –  We need some way to stop! –  If the hair is dirty

•  keep going –  Otherwise

•  stop

75

hair dirty?

Lather

Rinse

yes no

Page 76: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

•  “if” statements allow us to choose to go one way or another

•  Iteration allows us to choose to do something again (and again, and again….)

•  Recall –  We need some way to stop! –  If the hair is dirty

•  keep going –  Otherwise

•  stop

76

hair dirty?

Lather

Rinse

yes no

Page 77: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

•  “if” statements allow us to choose to go one way or another

•  Iteration allows us to choose to do something again (and again, and again….)

•  Recall –  We need some way to stop! –  If the hair is dirty

•  keep going –  Otherwise

•  stop

77

hair dirty?

Lather

Rinse

yes no

Page 78: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

•  “if” statements allow us to choose to go one way or another

•  Iteration allows us to choose to do something again (and again, and again….)

•  Recall –  We need some way to stop! –  If the hair is dirty

•  keep going –  Otherwise

•  stop

78

hair dirty?

Lather

Rinse

yes no

Page 79: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

•  “if” statements allow us to choose to go one way or another

•  Iteration allows us to choose to do something again (and again, and again….)

•  Recall –  We need some way to stop! –  If the hair is dirty

•  keep going –  Otherwise

•  stop

79

hair dirty?

Lather

Rinse

yes no

Page 80: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

•  “if” statements allow us to choose to go one way or another

•  Iteration allows us to choose to do something again (and again, and again….)

•  Recall –  We need some way to stop! –  If the hair is dirty

•  keep going –  Otherwise

•  stop

80

hair dirty?

Lather

Rinse

yes no

Page 81: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

Equivalent syntax:

while (hair dirty) {! Lather! Rinse!}!

// here, hair is clean!

81

hair dirty?

Lather

Rinse

yes no

Page 82: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

int i = 0;!while (i < 3) {! System.out.println(i);! i = i + 1;!}!

82

i < 3

print i

i = i + 1

yes no

i = 0

Page 83: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

int i = 0;!while (i < 3) {! System.out.println(i);! i = i + 1;!}!

83

i < 3

print i

i = i + 1

yes no

i = 0

Console output:

Page 84: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

int i = 0;!while (i < 3) {! System.out.println(i);! i = i + 1;!}!

84

i < 3

print i

i = i + 1

yes no

i = 0

Console output:

Page 85: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

int i = 0;!while (i < 3) {! System.out.println(i);! i = i + 1;!}!

85

i < 3

print i

i = i + 1

yes no

i = 0

Console output:

0

Page 86: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

int i = 0;!while (i < 3) {! System.out.println(i);! i = i + 1;!}!

86

i < 3

print i

i = i + 1

yes no

i = 0

Console output:

0

Page 87: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

int i = 0;!while (i < 3) {! System.out.println(i);! i = i + 1;!}!

87

i < 3

print i

i = i + 1

yes no

i = 0

Console output:

0 0

Page 88: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

int i = 0;!while (i < 3) {! System.out.println(i);! i = i + 1;!}!

88

i < 3

print i

i = i + 1

yes no

i = 0

Console output: 0

0 0

Page 89: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

int i = 0;!while (i < 3) {! System.out.println(i);! i = i + 1;!}!

89

i < 3

print i

i = i + 1

yes no

i = 0

Console output: 0

0 0

0

Page 90: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

int i = 0;!while (i < 3) {! System.out.println(i);! i = i + 1;!}!

90

i < 3

print i

i = i + 1

yes no

i = 0

Console output: 0

0 0

1

Page 91: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

int i = 0;!while (i < 3) {! System.out.println(i);! i = i + 1;!}!

91

i < 3

print i

i = i + 1

yes no

i = 0

Console output: 0

0 0

1

Page 92: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

int i = 0;!while (i < 3) {! System.out.println(i);! i = i + 1;!}!

92

i < 3

print i

i = i + 1

yes no

i = 0

Console output: 0

1

Page 93: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

int i = 0;!while (i < 3) {! System.out.println(i);! i = i + 1;!}!

93

i < 3

print i

i = i + 1

yes no

i = 0

Console output: 0

1

Page 94: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

int i = 0;!while (i < 3) {! System.out.println(i);! i = i + 1;!}!

94

i < 3

print i

i = i + 1

yes no

i = 0 1 1

Console output: 0

Page 95: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

int i = 0;!while (i < 3) {! System.out.println(i);! i = i + 1;!}!

95

i < 3

print i

i = i + 1

yes no

i = 0

Console output: 0 1

1 1

Page 96: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

int i = 0;!while (i < 3) {! System.out.println(i);! i = i + 1;!}!

96

i < 3

print i

i = i + 1

yes no

i = 0

Console output: 0 1

1 1

1

Page 97: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

int i = 0;!while (i < 3) {! System.out.println(i);! i = i + 1;!}!

97

i < 3

print i

i = i + 1

yes no

i = 0

Console output: 0 1

1 1

2

Page 98: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

int i = 0;!while (i < 3) {! System.out.println(i);! i = i + 1;!}!

98

i < 3

print i

i = i + 1

yes no

i = 0

Console output: 0 1

1 1

2

Page 99: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

int i = 0;!while (i < 3) {! System.out.println(i);! i = i + 1;!}!

99

i < 3

print i

i = i + 1

yes no

i = 0

Console output: 0 1

2

Page 100: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

int i = 0;!while (i < 3) {! System.out.println(i);! i = i + 1;!}!

100

i < 3

print i

i = i + 1

yes no

i = 0

Console output: 0 1

2

Page 101: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

int i = 0;!while (i < 3) {! System.out.println(i);! i = i + 1;!}!

101

i < 3

print i

i = i + 1

yes no

i = 0 2 2

Console output: 0 1

Page 102: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

int i = 0;!while (i < 3) {! System.out.println(i);! i = i + 1;!}!

102

i < 3

print i

i = i + 1

yes no

i = 0

Console output: 0 1 2

2 2

Page 103: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

int i = 0;!while (i < 3) {! System.out.println(i);! i = i + 1;!}!

103

i < 3

print i

i = i + 1

yes no

i = 0

Console output: 0 1 2

2 2

2

Page 104: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

int i = 0;!while (i < 3) {! System.out.println(i);! i = i + 1;!}!

104

i < 3

print i

i = i + 1

yes no

i = 0

Console output: 0 1 2

2 2

3

Page 105: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

int i = 0;!while (i < 3) {! System.out.println(i);! i = i + 1;!}!

105

i < 3

print i

i = i + 1

yes no

i = 0

Console output: 0 1 2

2 2

3

Page 106: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

int i = 0;!while (i < 3) {! System.out.println(i);! i = i + 1;!}!

106

i < 3

print i

i = i + 1

yes no

i = 0

Console output: 0 1 2

3

Page 107: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

int i = 0;!while (i < 3) {! System.out.println(i);! i = i + 1;!}!

107

i < 3

print i

i = i + 1

yes no

i = 0

Console output: 0 1 2

3

Page 108: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

int i = 0;!while (i < 3) {! System.out.println(i);! i = i + 1;!}!// Here, i >= 3!

108

i < 3

print i

i = i + 1

yes no

i = 0

Console output: 0 1 2

Page 109: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

while ( p ) {!

}!// Here, !p must be true!

109

The loop's termination condition is always the

complement of p, the predicate stated in the parentheses of

the while loop

Page 110: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

while ( p ) {!

}!// Here, !p must be true!

110

The loop's termination condition is always the

complement of p, the predicate stated in the parentheses of

the while loop

This can be used to prove properties about programs

Page 111: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

int i = 0;!while (i < 3) {! System.out.println(i);! i = i + 1;!}!

111

•  Initialization •  Code before the

while loop that establishes values necessary for the computation

Page 112: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

int i = 0;!while (i < 3) {! System.out.println(i);! i = i + 1;!}!

112

•  Initialization •  Code before the

while loop that establishes values necessary for the computation

•  Loop predicate •  Condition under

which loop continues

Page 113: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

int i = 0;!while (i < 3) {! System.out.println(i);! i = i + 1;!}!

113

•  Initialization •  Code before the

while loop that establishes values necessary for the computation

•  Loop predicate •  Condition under

which loop continues

•  Loop body •  Contents between

the braces

Page 114: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

int i = 0;!while (i < 3) {! System.out.println(i);! i = i + 1;!}!

114

•  Initialization •  Code before the

while loop that establishes values necessary for the computation

•  Loop predicate •  Condition under

which loop continues

•  Loop body •  Contents between

the braces

•  Loop body usually contains •  Some statement

that affects the loop's predicate

Page 115: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

int i = 0;!while (i < 3) {! System.out.println(i);! i = i + 1;!}!

115

•  Initialization •  Code before the

while loop that establishes values necessary for the computation

•  Loop predicate •  Condition under

which loop continues

•  Loop body •  Contents between

the braces

•  Loop body usually contains •  Some statement

that affects the loop's predicate

Page 116: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

int i = 0;!while (i < 3) {! System.out.println(i);! i = i + 1;!}!

116

•  Initialization •  Code before the

while loop that establishes values necessary for the computation

•  Loop predicate •  Condition under

which loop continues

•  Loop body •  Contents between

the braces

•  Loop body usually contains •  Some statement

that affects the loop's predicate

Page 117: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

int i = 0;!while (i < 3) {! System.out.println(i);! i = i + 1;!}!

117

•  Initialization •  Code before the

while loop that establishes values necessary for the computation

•  Loop predicate •  Condition under

which loop continues

•  Loop body •  Contents between

the braces

•  Loop body usually contains •  Some statement

that affects the loop's predicate

•  Otherwise the loop would never stop

Page 118: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

int i = 0;!while (i < 3) {! System.out.println(i);! i = i + 1;!}!

118

•  Initialization •  Code before the

while loop that establishes values necessary for the computation

•  Loop predicate •  Condition under

which loop continues

•  Loop body •  Contents between

the braces

•  Loop termination condition •  The complement of

the loop's predicate •  Implied, not

explicitly stated

Page 119: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6 Iteration

int i = 0;!while (i < 3) {! System.out.println(i);! i = i + 1;!}!

119

// i >= 3!

•  Initialization •  Code before the

while loop that establishes values necessary for the computation

•  Loop predicate •  Condition under

which loop continues

•  Loop body •  Contents between

the braces

•  Loop termination condition •  The complement of

the loop's predicate •  Implied, not

explicitly stated

End of Oyster

Page 120: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6b Practice using while loops

•  Video Introduction –  Randomness –  How do we know our random number generator is

fair? •  Question card: Write a program using the while

loop that computes the average of 100 random numbers, each generated by Math.random()

•  Response, show solution

120 End of BLT

BLT 6b public

Page 121: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6c More practice using while loops

•  Video Introduction –  Let's study the average based on how many random

samples we compute –  We want to run our previous program with the

number of samples used from 1 to 1000, printing out the average each time

–  What do we expect? •  Question card:

–  What do you expect the printed averages to look like?

–  Write the program to test your hypothesis –  What did yousee?

•  Response, show solution 121 End of BLT

BLT 6c public

Page 122: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6d Initial and terminal values

•  Video Introduction –  We must adapt the initialization and predicates to

suit our needs •  Question card:

–  Using only the following in the loop • System.out.println(i) in the loop • i = i + something

–  Print out integers from 0 to 9 inclusively –  From 1 to 10 inclusively –  From 0 to 10, including 0 but excluding 10 –  From 0 to 10, including 0, excluding 10, jumping by 2

each time •  Response, show solution

122 End of BLT

BLT 6d public

Page 123: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6e Roundtable

•  How many times do I have to flip a coin to get 10 heads?

•  Interactive session to develop the program with a student

•  Notes for RKC on next slide

123

Roundtable 6e

Page 124: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.6e Roundtable •  How many times do I have to flip a coin to get 10 heads?

–  Concepts in this code: •  Number of times the coin is flipped - numFlips •  Number of times heads shows up - numHeads

–  Initially •  Both are 0

–  Predicate •  While (numHeads < 10)

–  Body •  Flip a copy vi random number •  If heads, increment numHeads •  Always increment numFlips

•  Now show this as code •  Talk about postcondition: numHeads >= 10, in this case we know it is == 10 •  Print out numHeads •  Run this a few times to show the variability of outcome •  Computer science concept: simulation to compute things

–  There are formulas that could tell us the answer to this question –  But there are problems for which no formulas exist –  So simulation is a very powerful tool to help answer such questions

•  This code is in the students’ repos, and is a starting point for the upcoming material. The students should find their code and run it a few times to get a feeling for how it works. Instructions are given here to show the students how to do that.

124 End of Roundtable

Page 125: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.7 The “for” loop

int i = 0;!while (i < 3) {! System.out.println(i);! i = i + 1;!}!

125

•  Initialization •  Code before the

while loop that establishes values necessary for the computation

•  Loop predicate •  Condition under

which loop continues

•  Loop body •  Contents between

the braces

•  Loop body usually contains •  Some statement

that affects the loop's predicate

•  Otherwise the loop would never stop

Oyster 7

Recall

Page 126: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.7 The “for” loop

int i = 0;!while (i < 3) {! System.out.println(i);! i = i + 1;!}!

126

•  Initialization •  Code before the

while loop that establishes values necessary for the computation

•  Loop predicate •  Condition under

which loop continues

•  Loop body •  Contents between

the braces

•  Loop body usually contains •  Some statement

that affects the loop's predicate

•  Otherwise the loop would never stop

Recall

Page 127: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.7 The “for” loop

int i = 0;!while (i < 3) {! System.out.println(i);! i = i + 1;!}!

127

•  Initialization •  Code before the

while loop that establishes values necessary for the computation

•  Loop predicate •  Condition under

which loop continues

•  Loop body •  Contents between

the braces

•  Loop body usually contains •  Some statement

that affects the loop's predicate

•  Otherwise the loop would never stop

Recall

Page 128: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.7 The “for” loop

int i = 0;!while (i < 3) {! System.out.println(i);! i = i + 1;!}!

128

•  Initialization •  Code before the

while loop that establishes values necessary for the computation

•  Loop predicate •  Condition under

which loop continues

•  Loop body •  Contents between

the braces

•  Loop body usually contains •  Some statement

that affects the loop's predicate

•  Otherwise the loop would never stop

Recall

Page 129: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.7 The “for” loop

int i = 0;!while (i < 3) {! System.out.println(i);! i = i + 1;!}!

129

•  Initialization •  Loop predicate •  Loop body

•  Some statement that affects the loop's predicate •  The while loop that simply counts

has its “business” spread all over the place: –  Initialization –  Termination –  Bump (increment)

•  It would be nice to package that in a single programming gesture

•  The “for” loop does that

Page 130: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.7 The “for” loop

int i = 0;!while (i < 3) {! System.out.println(i);! i = i + 1;!}!

130

•  Initialization •  Loop predicate •  Loop body

•  Some statement that affects the loop's predicate •  The while loop that simply counts

has its “business” spread all over the place: –  Initialization –  Termination –  Bump (increment)

•  It would be nice to package that in a single programming gesture

•  The “for” loop does that

Page 131: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.7 The “for” loop

int i = 0;!while (i < 3) {! System.out.println(i);! i = i + 1;!}!

for (int i=0; ) {! System.out.println(i);!}!

131

•  Initialization •  Loop predicate •  Loop body

•  Some statement that affects the loop's predicate

Page 132: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.7 The “for” loop

int i = 0;!while (i < 3) {! System.out.println(i);! i = i + 1;!}!

for (int i=0; i<3; ) System.out.println(i);!

}!

132

•  Initialization •  Loop predicate •  Loop body

•  Some statement that affects the loop's predicate

Page 133: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.7 The “for” loop

int i = 0;!while (i < 3) {! System.out.println(i);! i = i + 1;!}!

for (int i=0; i<3; i = i+1) System.out.println(i);!

}!

133

•  Initialization •  Loop predicate •  Loop body

•  Some statement that affects the loop's predicate

End of Oyster

Page 134: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.8 Nested Loops

•  Suppose we want to run our previous problem 100 times –  How many times do you flip a coin to get 10 heads?

•  We could do this by hand, but it’s tedious •  We can use nested loops to solve this problem

–  The outer loop counts from 0 to 99 •  Use a for loop for this

–  The inner loop is the code we wrote before

134

BLT 8

Page 135: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

Question Card

•  Take your repo copy of the coin flipping problem

•  Surround the loop there with a for loop that causes the coin flipping problem to execute 100 times.

•  Run and report your results

135

Page 136: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

Video Response

•  Show my solution •  Have the students fix up theirs if work is needed

136

Page 137: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

Video Intro

•  Why run this 100 times? –  To see on average how many flips it takes to get 10

heads •  Let’s have the user provide the number of times

the simulation should run. •  New concepts:

–  Integer N: the number of times to run the simulation

137

Page 138: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

Question Card

•  Modify your code to prompt the user for N, and then run the simulation N times.

138

Page 139: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

Video Response

•  Show my solution

139

Page 140: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

Video Response

•  How many times, on average, do we have to flip a coin to see 10 heads?

•  New concepts: –  Sum of numFlips over all simulations –  Number of simulations (N – so this isn’t really a new

concept, but we need N to compute the average)

140

Page 141: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

Question Card

•  Modify your code to compute –  sumNumFlips: the sum of the number of flips over

all simulations to obtain 10 heads in each simulation •  Print the average: sumNumFlips/N

–  Where does this print statement appear?

141

Page 142: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

Video Response

•  My solution

142 End of BLT

Page 143: Module 2: Choice and Iterationcytron/cse131/slides/2.pdf · 2.0 Introduction • Life presents us with choices • Programs should be able to make choices too – Execution becomes

2.9 Conclusion

•  if statements –  With or without the else clause –  Allow programs to alter path of execution

•  while loops –  Initialize before hitting the while –  As long as the loop predicate remains true

•  execute the code within the loop's body

•  Principle of composition –  Allows nesting of both constructs –  As well as inclusion of declarations and assignment

statements

143

Monolog 9

End of Monologue