Module 2: Choice and Iteration

Similar documents
Problem Solving through Programming In C Prof. Anupam Basu Department of Computer Science & Engineering Indian Institute of Technology, Kharagpur

Module 1: Types and Expressions

Introduction to Programming in C Department of Computer Science and Engineering. Lecture No. #16 Loops: Matrix Using Nested for Loop

Repetition Structures

Condition-Controlled Loop. Condition-Controlled Loop. If Statement. Various Forms. Conditional-Controlled Loop. Loop Caution.

School of Computer Science CPS109 Course Notes 6 Alexander Ferworn Updated Fall 15. CPS109 Course Notes 6. Alexander Ferworn

Selec%on and Decision Structures in Java: If Statements and Switch Statements CSC 121 Spring 2016 Howard Rosenthal

Conditionals and Loops

Motivating Examples (1.1) Selections. Motivating Examples (1.2) Learning Outcomes. EECS1022: Programming for Mobile Computing Winter 2018

Selec%on and Decision Structures in Java: If Statements and Switch Statements CSC 121 Fall 2016 Howard Rosenthal

Selections. EECS1021: Object Oriented Programming: from Sensors to Actuators Winter 2019 CHEN-WEI WANG

There are algorithms, however, that need to execute statements in some other kind of ordering depending on certain conditions.

Chapter 4 Loops. int x = 0; while ( x <= 3 ) { x++; } System.out.println( x );

CSE 1223: Introduction to Computer Programming in Java Chapter 3 Branching

Building Java Programs

Building Java Programs

In Java, data type boolean is used to represent Boolean data. Each boolean constant or variable can contain one of two values: true or false.

CONDITIONAL EXECUTION

Chapter Goals. Contents LOOPS

Handout 9: Imperative Programs and State

COMP-202 Unit 4: Programming with Iterations

CISC-124. Casting. // this would fail because we can t assign a double value to an int // variable

5. Control Statements

Quiz 1: Functions and Procedures

Assignment 2.4: Loops

STUDENT LESSON A12 Iterations

COMP-202: Foundations of Programming. Lecture 4: Flow Control Loops Sandeep Manjanna, Summer 2015

Loops. CSE 114, Computer Science 1 Stony Brook University

DECISION STRUCTURES: USING IF STATEMENTS IN JAVA

Information Science 1

Computer Programming I - Unit 5 Lecture page 1 of 14

SESSION 3 Programming Languages for Objects

Chapter 3. More Flow of Control. Copyright 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley

AP Programming - Chapter 6 Lecture

REPETITION CONTROL STRUCTURE LOGO

Control Flow. COMS W1007 Introduction to Computer Science. Christopher Conway 3 June 2003

Chapter 4 Loops. Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved.

Introduction. C provides two styles of flow control:

COMP-202 Unit 4: Programming With Iterations. CONTENTS: The while and for statements

Problem Solving through Programming In C Prof. Anupam Basu Department of Computer Science & Engineering Indian Institute of Technology, Kharagpur

More about Loops and Decisions

1.3 Conditionals and Loops. 1.3 Conditionals and Loops. Conditionals and Loops

Chapter 4: Control structures. Repetition

CS/IT 114 Introduction to Java, Part 1 FALL 2016 CLASS 8: SEP. 29TH INSTRUCTOR: JIAYIN WANG

Repe$$on CSC 121 Spring 2017 Howard Rosenthal

Repe$$on CSC 121 Fall 2015 Howard Rosenthal

Lecture 05 I/O statements Printf, Scanf Simple statements, Compound statements

1.3 Conditionals and Loops

Repetition CSC 121 Fall 2014 Howard Rosenthal

Repetition, Looping. While Loop

1.3 Conditionals and Loops

Information Science 1

Chapter 4: Control structures

CS125 : Introduction to Computer Science. Lecture Notes #6 Compound Statements, Scope, and Advanced Conditionals

(Refer Slide Time: 00:26)

CONTENTS: While loops Class (static) variables and constants Top Down Programming For loops Nested Loops

APCS Semester #1 Final Exam Practice Problems

Data 8 Final Review #1

Slide 1 CS 170 Java Programming 1 The Switch Duration: 00:00:46 Advance mode: Auto

Computer Programming. Basic Control Flow - Loops. Adapted from C++ for Everyone and Big C++ by Cay Horstmann, John Wiley & Sons

Repetition, Looping CS101

Chapter 3. More Flow of Control. Copyright 2008 Pearson Addison-Wesley. All rights reserved.

Definite Loops. Computer Science S-111 Harvard University David G. Sullivan, Ph.D. Using a Variable for Counting

Control Structures in Java if-else and switch

In this lab, you will learn more about selection statements. You will get familiar to

COMP-202: Foundations of Programming. Lecture 8: for Loops, Nested Loops and Arrays Jackie Cheung, Winter 2016

STUDENT OUTLINE. Lesson 8: Structured Programming, Control Structures, if-else Statements, Pseudocode

8. Control statements

Q1 Q2 Q3 Q4 Q5 Total 1 * 7 1 * 5 20 * * Final marks Marks First Question

Chapter 4: Conditionals and Recursion

Java Programming: Guided Learning with Early Objects Chapter 5 Control Structures II: Repetition

MITOCW watch?v=0jljzrnhwoi

Flow Control. CSC215 Lecture

Principles of Computer Science I

Review. Primitive Data Types & Variables. String Mathematical operators: + - * / % Comparison: < > <= >= == int, long float, double boolean char

Object-oriented programming. and data-structures CS/ENGRD 2110 SUMMER 2018

Programming Lecture 4

Introduction to Computer Science Unit 2. Notes

Basic computer skills such as using Windows, Internet Explorer, and Microsoft Word. Chapter 1 Introduction to Computers, Programs, and Java

Lecture 3: Recursion; Structural Induction

Example: Monte Carlo Simulation 1

Lesson 20: Every Line is a Graph of a Linear Equation

CS 302: INTRODUCTION TO PROGRAMMING. Lectures 7&8

Full file at

Warmup : Name that tune!

x = 3 * y + 1; // x becomes 3 * y + 1 a = b = 0; // multiple assignment: a and b both get the value 0

Fundamentals. Fundamentals. Fundamentals. We build up instructions from three types of materials

Chapter 5. Repetition. Contents. Introduction. Three Types of Program Control. Two Types of Repetition. Three Syntax Structures for Looping in C++

CS1150 Principles of Computer Science Loops (Part II)

Java Programming: Guided Learning with Early Objects Chapter 5 Control Structures II: Repetition

COMP Introduction to Programming If-Else Statement, Switch Statement and Loops

Programming Lecture 4

Control Structures. Code can be purely arithmetic assignments. At some point we will need some kind of control or decision making process to occur

Eng. Mohammed S. Abdualal

Example. Write a program which sums two random integers and lets the user repeatedly enter a new answer until it is correct.

CSC 1351: Quiz 6: Sort and Search

Text Input and Conditionals

3chapter C ONTROL S TATEMENTS. Objectives

Chapter 4 Loops. Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved.

CS61B Lecture #2. Public Service Announcements:

Transcription:

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

Snappy intro monolog 2

Oyster 0 2.0 Introduction Straight-line code Statements execute in sequence Program performs the same computations every time Not so exciting 3

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 Yes 4

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 Yes 5

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

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

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

Oyster 1 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

2.1 Choice Syntax and Examples Flow chart How do we take the concept of choice and implement it in a programming language? 10

2.1 Choice Syntax and Examples 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 11

2.1 Choice Syntax and Examples 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 12

2.1 Choice Syntax and Examples 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 13

2.1 Choice Syntax and Examples 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 14

2.1 Choice Syntax and Examples Corresponding code Flow chart if (boolean expression) {! statement(s) T! else {! Statement(s) F! 15

2.1 Choice Syntax and Examples Corresponding code Flow chart if (boolean expression) {! statement(s) T! else {! Statement(s) F! Let's look at this in terms of some real examples 16

2.1 Choice Syntax and Examples Example: set the variable max to the value of x or y, depending on which is larger int max; 17

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 int max; 18

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 If it is true, then max is set to the value of x This happens when x is greater than y int max; 19

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 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 int max; 20

Syntax 2.1 Choice Syntax and Examples The code on the left corresponds to the flow diagram shown on the right if (x > y) {! max = x;! else {! max = y;! 21

Evaluation 2.1 Choice Syntax and Examples Suppose we have x==5 and y==7 if (x > y) {! max = x;! else {! max = y;! 22

Evaluation 2.1 Choice Syntax and Examples Suppose we have x==5 and y==7 if (x 5 > y) 7 {! max = x;! else {! max = y;! 23

Evaluation 2.1 Choice Syntax and Examples Suppose we have x==5 and y==7 if (x 5 > y) 7 {! max = x;! else {! max = y;! 24

Evaluation 2.1 Choice Syntax and Examples Suppose we have x==5 and y==7 if (x 5 > y) 7 {! max = x;! else {! max = y;! 25

Evaluation 2.1 Choice Syntax and Examples Suppose we have x==5 and y==7 if (x 5 > y) 7 {! max = x;! else {! max = y;! 26

Evaluation 2.1 Choice Syntax and Examples Suppose we have x==5 and y==7 if (x 5 > y) 7 {! max = x;! else {! max = y;! 7 27

2.1 Choice Syntax and Examples Boolean expression is evaluated If the result is true then statement T executes Otherwise statement F executes Flow chart if (boolean expression) {! statement(s) T! else {! Statement(s) F! 28 End of Oyster

BLT 2 public 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

Question card 2.2 Exercise 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

Video response 2.2 Exercise 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

Oyster 3 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

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 2.3 Composition and Nesting 33

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

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 2.3 Composition and Nesting 35

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

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 ); These statements execute in sequence if x > y 37

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 ); These statements execute in sequence if x > y The braces {.} enclose the statements that execute when the predicate is true 38

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 ); These statements execute in sequence if x <= y Note again that braces serve to group these statements 39

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

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 ); } } Each "else" matches its closest, otherwise unmatched "if" statement 41

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 ); } } Each "else" matches its closest, otherwise unmatched "if" statement 42

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 ); } } Each "else" matches its closest, otherwise unmatched "if" statement 43 End of Oyster

Oyster 4 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

2.4 More examples The else part of an if statement is optional Example if (x < 0) { x = -x; } Suppose x == 5 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

2.4 More examples The else part of an if statement is optional Example if (x 5 < 0) { x = -x; } Suppose x == 5 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

2.4 More examples The else part of an if statement is optional Example if (x 5 < 0) { x = -x; } Suppose x == 5 The predicate is false, so the contents of the if statement are skipped 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

2.4 More examples The else part of an if statement is optional Example if (x 5 < 0) { x = -x; } Suppose x == 5 The program continues at 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

2.4 More examples The else part of an if statement is optional Example if (x 5 < 0) { x = -x; } Suppose x == 5 The predicate is true, so any statements inside the braces are executed 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

2.4 More examples The else part of an if statement is optional Example if (x 5 < 0) { x = -x; } Suppose x == 5 The value of x at is 5 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

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

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

2.4 More examples Let s work through this example: } if ( x > y ) { int t = x; x = y; y = t; t 10 x 10 y 5 The value of x is computed and stored in a new variable named t (show this as columns / values) 53

2.4 More examples Let s work through this example: } if ( x > y ) { int t = x; x = y; y = t; t 10 x 5 y 5 The value of y is computed and stored at x, destroying the value previously availble there 54

2.4 More examples Let s work through this example: if ( x > y ) { int t = x; x = y; y = t; } t 10 x 5 y 10 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

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

BLT 5a public 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

Video Response 2.5a Exercise 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

BLT 5b public 2.5b More if examples Computer plays heads / tails If random value < 0.5 print heads Otherwise print tails 59

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

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

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

Roundtable? 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 End of Roundtable

Oyster 6 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

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 Lather Rinse 65

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 Lather Rinse 66

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, Lather Rinse 67

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! Lather Rinse 68

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 hair dirty? yes Lather Rinse 69

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 hair dirty? yes Lather Rinse no 70

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 hair dirty? yes Lather Rinse no 71

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 hair dirty? yes Lather Rinse no 72

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 hair dirty? yes Lather Rinse no 73

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 hair dirty? yes Lather Rinse no 74

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 hair dirty? yes Lather Rinse no 75

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 hair dirty? yes Lather Rinse no 76

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 hair dirty? yes Lather Rinse no 77

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 hair dirty? yes Lather Rinse no 78

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 hair dirty? yes Lather Rinse no 79

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 hair dirty? yes Lather Rinse no 80

2.6 Iteration Equivalent syntax: while (hair dirty) {! Lather! Rinse! hair dirty? yes Lather no // here, hair is clean! Rinse 81

2.6 Iteration int i = 0;! while (i < 3) {! System.out.println(i);! i = i + 1;! i = 0 i < 3 yes no print i i = i + 1 82

2.6 Iteration int i = 0;! while (i < 3) {! System.out.println(i);! i = i + 1;! i = 0 i < 3 yes no Console output: print i i = i + 1 83

2.6 Iteration int i = 0;! while (i < 3) {! System.out.println(i);! i = i + 1;! i = 0 i < 3 yes no Console output: print i i = i + 1 84

2.6 Iteration int i = 0;! while (i 0 < 3) {! System.out.println(i);! i = i + 1;! i = 0 i < 3 yes no Console output: print i i = i + 1 85

2.6 Iteration int i = 0;! while (i 0 < 3) {! System.out.println(i);! i = i + 1;! i = 0 i < 3 yes no Console output: print i i = i + 1 86

2.6 Iteration int i = 0;! while (i 0 < 3) {! System.out.println(i);! i = i + 1;! 0 i = 0 i < 3 yes no Console output: print i i = i + 1 87

2.6 Iteration int i = 0;! while (i 0 < 3) {! System.out.println(i);! i = i + 1;! 0 i = 0 i < 3 yes no Console output: 0 print i i = i + 1 88

2.6 Iteration int i = 0;! while (i 0 < 3) {! System.out.println(i);! i = i + 1;! 0 0 i = 0 i < 3 yes no Console output: 0 print i i = i + 1 89

2.6 Iteration int i = 0;! while (i 0 < 3) {! System.out.println(i);! i = i + 1;! 1 0 i = 0 i < 3 yes no Console output: 0 print i i = i + 1 90

2.6 Iteration int i = 0;! while (i 0 < 3) {! System.out.println(i);! i = i + 1;! 1 0 i = 0 i < 3 yes no Console output: 0 print i i = i + 1 91

2.6 Iteration int i = 0;! while (i 1 < 3) {! System.out.println(i);! i = i + 1;! i = 0 i < 3 yes no Console output: 0 print i i = i + 1 92

2.6 Iteration int i = 0;! while (i 1 < 3) {! System.out.println(i);! i = i + 1;! i = 0 i < 3 yes no Console output: 0 print i i = i + 1 93

2.6 Iteration int i = 0;! while (i 1 < 3) {! System.out.println(i);! i = i + 1;! 1 i = 0 i < 3 yes no Console output: 0 print i i = i + 1 94

2.6 Iteration int i = 0;! while (i 1 < 3) {! System.out.println(i);! i = i + 1;! 1 i = 0 i < 3 yes no Console output: 0 1 print i i = i + 1 95

2.6 Iteration int i = 0;! while (i 1 < 3) {! System.out.println(i);! i = i + 1;! 1 1 i = 0 i < 3 yes no Console output: 0 1 print i i = i + 1 96

2.6 Iteration int i = 0;! while (i 1 < 3) {! System.out.println(i);! i = i + 1;! 2 1 i = 0 i < 3 yes no Console output: 0 1 print i i = i + 1 97

2.6 Iteration int i = 0;! while (i 1 < 3) {! System.out.println(i);! i = i + 1;! 2 1 i = 0 i < 3 yes no Console output: 0 1 print i i = i + 1 98

2.6 Iteration int i = 0;! while (i 2 < 3) {! System.out.println(i);! i = i + 1;! i = 0 i < 3 yes no Console output: 0 1 print i i = i + 1 99

2.6 Iteration int i = 0;! while (i 2 < 3) {! System.out.println(i);! i = i + 1;! i = 0 i < 3 yes no Console output: 0 1 print i i = i + 1 100

2.6 Iteration int i = 0;! while (i 2 < 3) {! System.out.println(i);! i = i + 1;! 2 i = 0 i < 3 yes no Console output: 0 1 print i i = i + 1 101

2.6 Iteration int i = 0;! while (i 2 < 3) {! System.out.println(i);! i = i + 1;! 2 i = 0 i < 3 yes no Console output: 0 1 2 print i i = i + 1 102

2.6 Iteration int i = 0;! while (i 2 < 3) {! System.out.println(i);! i = i + 1;! 2 2 i = 0 i < 3 yes no Console output: 0 1 2 print i i = i + 1 103

2.6 Iteration int i = 0;! while (i 2 < 3) {! System.out.println(i);! i = i + 1;! 3 2 i = 0 i < 3 yes no Console output: 0 1 2 print i i = i + 1 104

2.6 Iteration int i = 0;! while (i 2 < 3) {! System.out.println(i);! i = i + 1;! 3 2 i = 0 i < 3 yes no Console output: 0 1 2 print i i = i + 1 105

2.6 Iteration int i = 0;! while (i 3 < 3) {! System.out.println(i);! i = i + 1;! i = 0 i < 3 yes no Console output: 0 1 2 print i i = i + 1 106

2.6 Iteration int i = 0;! while (i 3 < 3) {! System.out.println(i);! i = i + 1;! i = 0 i < 3 yes no Console output: 0 1 2 print i i = i + 1 107

int i = 0;! 2.6 Iteration while (i < 3) {! System.out.println(i);! i = i + 1;! // Here, i >= 3! Console output: 0 1 2 i = 0 i < 3 yes print i i = i + 1 no 108

2.6 Iteration while ( p ) {! // Here,!p must be true! The loop's termination condition is always the complement of p, the predicate stated in the parentheses of the while loop 109

2.6 Iteration while ( p ) {! // Here,!p must be true! 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 110

2.6 Iteration int i = 0;! while (i < 3) {! System.out.println(i);! i = i + 1;! Initialization Code before the while loop that establishes values necessary for the computation 111

2.6 Iteration int i = 0;! while (i < 3) {! System.out.println(i);! i = i + 1;! Initialization Code before the while loop that establishes values necessary for the computation Loop predicate Condition under which loop continues 112

2.6 Iteration int i = 0;! while (i < 3) {! System.out.println(i);! i = i + 1;! 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 113

2.6 Iteration int i = 0;! while (i < 3) {! System.out.println(i);! i = i + 1;! Loop body usually contains Some statement that affects the loop's predicate 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 114

2.6 Iteration int i = 0;! while (i < 3) {! System.out.println(i);! i = i + 1;! Loop body usually contains Some statement that affects the loop's predicate 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 115

2.6 Iteration int i = 0;! while (i < 3) {! System.out.println(i);! i = i + 1;! Loop body usually contains Some statement that affects the loop's predicate 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 116

2.6 Iteration int i = 0;! while (i < 3) {! System.out.println(i);! i = i + 1;! Loop body usually contains Some statement that affects the loop's predicate Otherwise the loop would never stop 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

2.6 Iteration int i = 0;! while (i < 3) {! System.out.println(i);! i = i + 1;! Loop termination condition The complement of the loop's predicate Implied, not explicitly stated 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 118

2.6 Iteration int i = 0;! while (i < 3) {! System.out.println(i);! i = i + 1;! // i >= 3! Loop termination condition The complement of the loop's predicate Implied, not explicitly stated 119 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 End of Oyster

BLT 6b public 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 6c public 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 6d public 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

Roundtable 6e 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

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

Oyster 7 2.7 The for loop int i = 0;! while (i < 3) {! System.out.println(i);! i = i + 1;! Loop body usually contains Some statement that affects the loop's predicate Otherwise the loop would never stop Recall 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

2.7 The for loop int i = 0;! while (i < 3) {! System.out.println(i);! i = i + 1;! Loop body usually contains Some statement that affects the loop's predicate Otherwise the loop would never stop Recall 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

2.7 The for loop int i = 0;! while (i < 3) {! System.out.println(i);! i = i + 1;! Loop body usually contains Some statement that affects the loop's predicate Otherwise the loop would never stop Recall 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

2.7 The for loop int i = 0;! while (i < 3) {! System.out.println(i);! i = i + 1;! Loop body usually contains Some statement that affects the loop's predicate Otherwise the loop would never stop Recall 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

int i = 0;! 2.7 The for loop while (i < 3) {! System.out.println(i);! i = i + 1;! 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 Initialization Loop predicate Loop body Some statement that affects the loop's predicate 129

int i = 0;! 2.7 The for loop while (i < 3) {! System.out.println(i);! i = i + 1;! 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 Initialization Loop predicate Loop body Some statement that affects the loop's predicate 130

int i = 0;! 2.7 The for loop while (i < 3) {! System.out.println(i);! i = i + 1;! for (int i=0; ) {! System.out.println(i);! Initialization Loop predicate Loop body Some statement that affects the loop's predicate 131

int i = 0;! 2.7 The for loop while (i < 3) {! System.out.println(i);! i = i + 1;! for (int i=0; i<3; ) System.out.println(i);! Initialization Loop predicate Loop body Some statement that affects the loop's predicate 132

int i = 0;! 2.7 The for loop while (i < 3) {! System.out.println(i);! i = i + 1;! for (int i=0; i<3; i = i+1) System.out.println(i);! Initialization Loop predicate Loop body Some statement that affects the loop's predicate 133 End of Oyster

BLT 8 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

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

Show my solution Video Response Have the students fix up theirs if work is needed 136

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

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

Show my solution Video Response 139

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

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

Video Response My solution 142 End of BLT

Monolog 9 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 End of Monologue