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

Similar documents
COMP-202 Unit 4: Programming with Iterations

Warm-Up: COMP Programming with Iterations 1

Warmup : Name that tune!

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

COMP-202 Unit 2: Java Basics. CONTENTS: Printing to the Screen Getting input from the user Types of variables Using Expressions and Variables

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

JAVA PROGRAMMING LAB. ABSTRACT In this Lab you will learn to define and invoke void and return java methods

Repetition, Looping. While Loop

COMP-202 Unit 2: Java Basics. CONTENTS: Printing to the Screen Getting input from the user Types of variables Using Expressions and Variables

COMP-202 Unit 2: Java Basics. CONTENTS: Printing to the Screen Getting input from the user Types of variables Using Expressions and Variables

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

COMP-202 Unit 2: Java Basics. CONTENTS: Printing to the Screen Getting input from the user Types of variables Using Expressions and Variables

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

COMP-202 Unit 2: Java Basics. CONTENTS: Using Expressions and Variables Types Strings Methods

Repe$$on CSC 121 Fall 2015 Howard Rosenthal

Top-Down Program Development

Repe$$on CSC 121 Spring 2017 Howard Rosenthal

Repetition CSC 121 Fall 2014 Howard Rosenthal

Repetition, Looping CS101

COMP-202 Unit 9: Exceptions

Last Class. While loops Infinite loops Loop counters Iterations

COMP-202 Unit 9: Exceptions

Java Coding 3. Over & over again!

Warm up Exercise. What are the types and values of the following expressions: * (3 + 1) 3 / / 2.0 (int)1.0 / 2

CONTENTS: Arrays Strings. COMP-202 Unit 5: Loops in Practice

Wentworth Institute of Technology. Engineering & Technology WIT COMP1000. Java Basics

CS 106 Introduction to Computer Science I

COMP 202 Java in one week

Loops. CSE 114, Computer Science 1 Stony Brook University

Repetition with for loops

Iteration statements - Loops

Scope of this lecture. Repetition For loops While loops

Nested Loops ***** ***** ***** ***** ***** We know we can print out one line of this square as follows: System.out.

! definite loop: A loop that executes a known number of times. " The for loops we have seen so far are definite loops. ! We often use language like

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

CSC 1051 Data Structures and Algorithms I

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

Repetition Structures

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

Please answer the following questions. Do not re-code the enclosed codes if you have already completed them.

COMP-202: Foundations of Programming. Lecture 3: Boolean, Mathematical Expressions, and Flow Control Sandeep Manjanna, Summer 2015

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

Example: Monte Carlo Simulation 1

Computer Programming I - Unit 5 Lecture page 1 of 14

Sequence structure. The computer executes java statements one after the other in the order in which they are written. Total = total +grade;

Programming Constructs Overview. Method Call System.out.print( hello ); Method Parameters

STUDENT LESSON A12 Iterations

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

COMP 202. Java in one week

Building Java Programs Chapter 2

Over and Over Again GEEN163

Building Java Programs Chapter 2. bug. Primitive Data and Definite Loops. Copyright (c) Pearson All rights reserved. Software Flaw.

Building Java Programs Chapter 2

Chapter 5 Methods. public class FirstMethod { public static void main(string[] args) { double x= -2.0, y; for (int i = 1; i <= 5; i++ ) { y = f( x );

A PROGRAM IS A SEQUENCE of instructions that a computer can execute to

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

Chapter 3. Selections

Topic 6 Nested for Loops

CONTENTS: Compilation Data and Expressions COMP 202. More on Chapter 2

CONTENTS: What Is Programming? How a Computer Works Programming Languages Java Basics. COMP-202 Unit 1: Introduction

Chapter 4 Lab. Loops and Files. Objectives. Introduction

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

Bjarne Stroustrup. creator of C++

CMSC 150 INTRODUCTION TO COMPUTING LAB WEEK 3 STANDARD IO FORMATTING OUTPUT SCANNER REDIRECTING

CSC 1051 Algorithms and Data Structures I. Midterm Examination February 24, Name: KEY 1

Example: Computing prime numbers

COMP 202. Programming With Iterations. CONTENT: The WHILE, DO and FOR Statements. COMP Loops 1

Introduction to the Java Basics: Control Flow Statements

CSC 1051 Villanova University. CSC 1051 Data Structures and Algorithms I. Course website:

Chapter Goals. Contents LOOPS

Building Java Programs

COMP 202 Java in one week

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

CSC 1051 Data Structures and Algorithms I

Loops! Step- by- step. An Example while Loop. Flow of Control: Loops (Savitch, Chapter 4)

CS112 Lecture: Repetition Statements

SESSION 3 Programming Languages for Objects

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

CS 177 Week 5 Recitation Slides. Loops

Algorithms and Conditionals

Math Modeling in Java: An S-I Compartment Model

Conditionals, Loops, and Style

Controls Structure for Repetition

CSC 1051 Data Structures and Algorithms I

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

First Java Program - Output to the Screen

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

COMP-202 More Complex OOP

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

CS 106 Introduction to Computer Science I

COMP 110 Project 1 Programming Project Warm-Up Exercise

Garbage Collection (1)

An exception is simply an error. Instead of saying an error occurred, we say that an.

Tutorial 3: Conditionals and Iteration COMP 202: Intro to Computing 1

2.8. Decision Making: Equality and Relational Operators

CS112 Lecture: Loops

AP Computer Science Unit 1. Programs

Chapter 17. Iteration The while Statement

COMP-202 Unit 8: Recursion. CONTENTS: Recursion in Java More complex examples

Java I/O and Control Structures

Transcription:

COMP-202 Unit 4: Programming with Iterations Doing the same thing again and again and again and again and again and again and again and again and again... CONTENTS: While loops Class (static) variables and constants Top Down Programming For loops Nested Loops

Warm-Up: Suppose I have a method with header: public static boolean foo(boolean a,int b) { if (a) return true; return b > 0; Which of the following are valid ways to call the method and what is the result? int x = foo(true, 3 + 4); System.out.println(foo(!true, -10)); System.out.println(foo(true && false, 1.0 / 2)); System.out.println(foo(foo(false,0), (int)1.0 / 2)); boolean a = foo(foo(false true, 3), -10); 2

Repetition Statements Repetition statements allow us to execute a block of code or (set of) statement(s) multiple times; -These statements are normally called loops 4

Repetition Statements in Java -Java has two main kinds of repetition statements: the while loop and the for loop - While and for loops are equivalent However, in certain circumstances, choosing one of these statements over the other results in a program that is easier to understand. 5

Part 1: While loops

Recall : If statement if (condition) { //some code here... //code here happens regardless 7

Recall : If statement if (condition) { //some code here... //code here happens regardless An if statement defines a block of code. 8

Recall : If statement if (condition) { //some code here... //code here happens regardless We test a condition which can be any boolean expression. 9

Recall : If statement if (condition) { //some code here... //code here happens regardless If the condition evaluates to true then we execute the block of code once. Otherwise we do not. 10

Benefits of If Statements We can perform actions or commands some of the time but not all. Forces us to organize things : Certain events will only happen in one case. This creates a clear division. 11

Doing the same thing many times Sometimes, we will want to execute the same block of code many times. How can we do that? 12

Copy / Paste The naïve thing to do is copy paste your code. What are some problems with this? 13

Copy / Paste 1)Annoying : Who wants to copy / paste that much 2)Error prone : Easy to make a mistake 3)Difficult to maintain : Hard to edit or fix mistakes (you have to edit the same code many times which can lead to more errors) 4)What if you don't know ahead of time how many steps you need? 14

while loops In Java, we can create a while loop. A while loop is a statement that defines a block of code that continues to execute until a condition is false. 15

if statement vs while loop if (condition) { //block of code //Go here //no matter what while (condition) { //block of code //Go here //only after //condition is false COMP-202 - Programming with Iterations 16

Syntax difference Syntactically, the only difference between a while loop and an if statement is the word while instead of if. The effect of this change is that the block of code continues to be repeated as long as condition is evaluated to be true. COMP-202 - Programming with Iterations 17

Example of a while loop int x = 0; while (x < 4) { System.out.println( I have to write + this over and over. ); x++; COMP-202 - Programming with Iterations 18

Example of a while loop int x = 0; while (x < 4) { System.out.println( I have to write + this over and over. ); x++; The purpose of the variable x here is to act as a loop counter. It keeps track of how many times the loop 19 has executed

Example of a while loop int x = 0; while (x < 4) { System.out.println( I have to write + this over and over. ); x++; Initially, we set the variable x equal to 0. This means the first time we check the condition x < 4, the condition is true, so we execute the loop body. 20

Example of a while loop int x = 0; while (x < 4) { System.out.println( I have to write + this over and over. ); x++; Next, we execute the loop body, which first involves printing to the screen. 21

Example of a while loop int x = 0; while (x < 4) { System.out.println( I have to write + this over and over. ); x++; The next command of the loop body is increment x. This gives x the value of 1. 22

Example of a while loop int x = 0; while (x < 4) { System.out.println( I have to write + this over and over. ); x++; Once the loop body finishes at the, the condition is then rechecked. Since x = 1 and 1 < 4, the block of code happens again. 23

Example of a while loop int x = 0; while (x < 4) { System.out.println( I have to write + this over and over. ); x++; This procedure happens 2 more times. On the 4 th step, we test the condition and x = 3. Then after printing and adding 1 to x, x is now 4. 24

Example of a while loop int x = 0; while (x < 4) { System.out.println( I have to write + this over and over. ); x++; If x == 4, then the condition is false, so we exit the loop and resume the code after the loop block has finished. 25

Definition: iteration An iteration is a single execution of the instructions in the loop body. The previous loop had 4 iterations. One each for x=0, x=1, x=2, x=3

Important Clarification The condition of the while loop is only evaluated 1 time per step or iteration of the loop right before the block of code executes. The significance of this is if the condition changes inside the loop, the loop will keep going. 27

Important Clarification int x = 0; while (x < 4) { x = x + 10; System.out.println( x is now +x); x = x - 10; x++; 28

Important Clarification int x = 0; while (x < 4) { x = x + 10; Although x = 10 at this point, the loop condition is not tested until later, when x=1 again System.out.println( x is now +x); x = x - 10; x++; 29

Practice Exercise: Figure out what the following loop does. int i = 0; while (i < 100) { if ( i % 3 == 0) { System.out.println(i); i++; 30

What will this loop do? int x = 0; while (x < 4) { System.out.println(x); COMP-202 - Programming with Iterations 31

It goes on forever! The above is what is known as an infinite loop It will go on forever because we never change the value of x, which will always be less than 4 We will keep printing 0 to the screen. This is known as an infinite loop 32

Tangent: Halting Problem (1) Alan Turing investigated the problem of: Given a computer program, can you detect if there is an infinite loop in it. He proved that you can not write a computer program to test definitively whether any computer program has an infinite loop. You'll know if the program ends, but not if it has an infinite loop 33

Tangent: Halting Problem (2) This seems like a useless thing to prove, but it has consequences: 1)Philosophically, computers can't solve everything 2)Sometimes, we can take a more useful problem and prove that we can't solve it either, because if we could, then we'd be able to solve the Halting Problem 34

One command while loops Like if statements, if you put a command following the while loop without a {, it will only include 1 line in your loop. -A very bad thing to do: int x = 0; while (x < 4); { // this is an infinite loop now! x++ 35

How many iterations does the following loop consist of? int x = 4; while (x > 4) { System.out.println( I have to write + this over and over. ); x++;

How many iterations does the following loop consist of? int x = 4; while (x > 4) { System.out.println( I have to write + this over and over. ); x++; 0 iterations because x is not > 4 at the beginning

How many iterations does the following loop consist of? int x = 6; while (x > 4) { System.out.println( I have to write + this over and over. ); x--;

How many iterations does the following loop consist of? int x = 6; while (x > 4) { System.out.println( I have to write + this over and over. ); x--; 2 iterations : 1 for x = 6, 1 for x = 5

How many iterations does the following loop consist of? int x = 6; while (x > 4) { System.out.println( I have to write + this over and over. ); x++;

How many iterations does the following loop consist of? int x = 6; while (x > 4) { System.out.println( I have to write + this over and over. ); x++; Infinite! x starts out equal to 6, we check if it is less than 4 (it is), then we add to x

How many iterations does the following loop consist of? int x = 3; while (x < 11) { System.out.println( I have to write + this over and over. ); x += 2;

How many iterations does the following loop consist of? int x = 3; while (x < 11) { System.out.println( I have to write + this over and over. ); x += 2; 4 iterations: x=3, x=5, x=7, x=9

Off-By-One Errors It is a common logical error or bug to write loop conditions that result in the loop body being executed one time too few, or one time too many You should always test your code to check that your loops conditions do not cause such errors. COMP-202 - Programming with Iterations 44

Off-By-One Errors Example //this code is supposed to print all positive //values of x up until 5: int x = 1; while (x < 5) { System.out.println(x); x++; 45

Off-By-One Errors Example The problem is the last iteration is x = 4. We should change the condition to: (x <= 5) OR (x < 6) 46

Off-By-One Errors Tips To avoid off by one errors, you should always manually confirm the first step of a loop as well as the last step of a loop. Make sure the numbers are what you are expecting. COMP-202 - Programming with Iterations 47

General loop tips Try to think of exactly what it is that you want to do over and over again Figure out the range of values you want to try again and again. Make sure that your loop starts or initializes with the right result Make sure that your loop terminates with the correct result 48

Example: Print every integer from 1 to n int i = 1; while (i <= n) { System.out.println(i); i++; COMP-202 - Programming with Iterations 49

Example: Performing the same code n times If you have code that you want to perform a fixed number of times, one way to do that is with a while loop and a counter: int counter = 0; while (counter < n) { //whatever you want done counter++; 50

Exercise: While loop In unit 3, we looked at an example where we wanted to read 10 numbers and convert all of them from Fahrenheit to Celcius. Write a program using a while loop that reads 10 numbers from the keyboard, converts them one at a time to Celcius, and prints the result to the screen. (Answers on next slide: no peeking!) 51

import java.util.scanner; public class FahrenheitConverter { public static final double NUM_CONVERSIONS = 10; public static void main(string[] args) { int i = 0; Scanner reader = new Scanner(System.in); while (i < NUM_CONVERSIONS) { System.out.println(convertToCelcius(reader.nextInt())); i++; public static double converttocelcius(double fahrenheit){ return (fahrenheit 32.0) * 5.0 / 9.0; 52

Part 2: Class Variables and Constants

Class Constants (final) Very often, you will have a constant that you want to use throughout your entire class in many different methods. -Improves readability -Avoid errors -Easier to maintain Remember that we can declare a constant the same way as a variable, except we add the word final before the type. 54

Class Constants (final) You ll declare a constant inside a method as normal, but you can also declare a final static constant outside of any method, but inside of a class: public class ConstantExample { public static final int NUM_STATES = 50; public static final int NUM_PROVINCES = 10; public static void main(string[] args) {... 55

Class Constants (final) Now, throughout you code you won't have mysterious magic numbers like 50 and 10 throughout your code. It's easier to say for sure which 50's refer to the number of states and which 50's refer to something entirely different. Also will be much easier if the constant changes over time for whatever reason. 56

Scope of variables and constants Remember, that any time you create a variable or constant, it's scope is only within the block of code it was declared in. This means that anywhere inside that block of code, the variable or constant is available and outside the block it is not. COMP-202 - Programming with Iterations 57

Scope of variables and constants public class CustomerService { public static final String COMPANY_NAME = Videotron ; public static void answercall() { System.out.println( Your call is very important to us. +Please stay on the line and a + COMPANY_NAME + representative will be with your shortly public static void humanpicksup() { System.out.println( You owe + COMPANY_NAME + money for random + surcharges. We hope you'll continue to enjoy our service. ) waitforswearing(); //The identifier COMPANY_NAME is now available throughout your entire class // CustomerService 58

Scope of class variables public class Scope { public static String companyname = Videotron ;... Variables work the same way. This means that one thing you can do to share a variable between methods is create a variable outside of any method. In this case, you'll still want to write static. This is not generally good practice unless you know what you are doing! 59

Class Variables These sorts of variables are known as class variables. They are called this because they belong to the entire class as opposed to one method. 60

Example of bad use of class variables import java.util.scanner; public class BadFahrenheitConversion { public static double degrees = 0.0; public static Scanner reader = new Scanner(System.in); public static void main(string[] args) { degrees = reader.nextdouble(); converttocelcius(); System.out.println(degrees); public static void converttocelcius() { degrees = (degrees 32.0) * 5.0 / 9.0; 61

Problems with this: Leads to bugs! 1)The variable degrees is used for different purposes (first it is fahrenheit then it is Celcius) Confusing! 2)The method converttocelcius() has a side effect which is unexpected. 3)The code is not reusable. What if you copied this into a different program that already had a variable degrees defined? 4)reader can be used by a different method and the main() method wouldn't know. 62

Better (no class variables) import java.util.scanner; public class BadFahrenheitConversion { public static void main(string[] args) { Scanner reader = new Scanner(System.in); double fahrenheitdegrees = reader.nextdouble(); double celciusdegrees = converttocelcius(fahrenheitdegrees); System.out.println(celciusDegrees); public static double converttocelcius(double degrees) { return (degrees 32.0) * 5.0 / 9.0; 63

Class constants Class constants do not normally have this problem since their values don't change. public static final String COMPANY_NAME = Videotron ; 64

Part 3: Top Down Programming

Example A prime number is a positive integer >= 2 whose only divisors are 1 and itself. Write a method that calculates whether a number is prime or not using a while loop. The method should take as input an int and return a boolean value of true if the number is prime and false otherwise. 66

Steps to solve this: First, you should figure out the input and the output of the method. This is normally given in this course, sometimes in words, sometimes in Java terminology With this knowledge, you can write the method header. If this step is not easy, then you need to think about the problem more to understand what it is you are trying to solve! 67

Steps to solve this: public static boolean isprime(int n) { 68

Steps to solve this: The next thing to figure out is an algorithm to solve the problem. This is not always easy. In the case of prime numbers, how can we figure out if a number n is prime (if we were doing it by hand)? 69

Steps to solve this: 1)Check every number from 2 up until n 1. 2)If any of these numbers evenly divide n (i.e. are factors of n), then n is not prime 3)If none of them divide n, then n is prime 70

Steps to solve this: 1)Check every number from 2 up until n 1. 2)If any of these numbers evenly divide n (i.e. are factors), then n is not prime 3)If none of them divide n, then n is prime The word every strongly implies you'll need some sort of loop. 71

Steps to solve this: 1)Check every number from 2 up until n 1. 2)If any of these numbers evenly divide n (i.e. are factors), then n is not prime 3)If none of them divide n, then n is prime The if means we'll need some sort of if statement. n not equals prime is our conclusion and in Java will translate to a return statement with the value false 72

Steps to solve this: 1)Check every number from 2 up until n 1. 2)If any of these numbers evenly divide n (i.e. are factors), then n is not prime 3)If none of them divide n, then n is prime One thing to be very careful of is that none means we have to check ALL of the numbers to make the conclusion. 73

Now lets analyze each step in detail 1)Check every number from 2 up until n 1. 2)If any of these numbers evenly divide n (i.e. are factors), then n is not prime 3)If none of them divide n, then n is prime We know how to do something for every number. We know the code for printing every number from 1 to n. We just have to modify it to go from 2 until n-1 and to do other stuff instead of print! 74

Steps to solve this: 1)Check every number from 2 up until n 1. 2)If any of these numbers evenly divide n (i.e. are factors), then n is not prime 3)If none of them divide n, then n is prime How can we check if a number x evenly divides n? 75

Steps to solve this: How can we check if a number x evenly divides n? 1)Use int division. If x / n * n is equal to x, then x must be a multiple of n. Otherwise, we'd have lost information on the division. ex: 6 / 3 * 3 = 6 (6 is a multiple of 3) 5 / 3 * 3 = 3 (since 5 / 3 = 1 in integer division) 2)Use modulo % operator. x % n == 0 if x is a multiple of n. (ex: 48 hours after midnight is 0:00, since 48 is a multiple of 24) 76

Solution public static boolean isprime(int n) { int x = 2; while (x < n) { if (n % x == 0) { return false; x++; return true; 77

Even better solution public static boolean isprime(int n) { if (n < 2) { return false; int x = 2; while (x < n) { if (n % x == 0) { return false; x++; return true; 78

Careful not to make this mistake! public static boolean isprime(int n) { if (n < 2) { return false; int x = 2; while (x < n) { if (n % x == 0) { return false; else { return true; x++; 79

Careful not to make this mistake! public static boolean isprime(int n) { if (n < 2) { return false; int x = 2; while (x < n) { if (n % x == 0) { return false; else { return true; /* This code returns true if the first number for x isn't a factor of n*/ x++; 80

Top Down Programming The way we solved this problem is using a technique called topdown programming. We started out with a big goal (determine if a number is prime) Then we looked at the various steps we needed to solve that. (loop through all numbers, check conditions, return statement) We then examined how to solve those various steps (counter + while loop, % operator) 81

Exercise Now that you have a method isprime, write another method printprimes. Your method should take as input an int n and return void. Your method should then print the first n prime numbers. When you write this method, for practice with taking an exam, try to write it on a piece of paper (or without seeing what the computer does). When you do this, call the method isprime(). But try not to think about how the method isprime() works. Focus only on what it does. 82

Part 4: The for Statement

Common loop theme Very often in loops, one will do 3 things: 1)Perform some initialization before the loop starts. 2)Check a condition before an iteration of the loop starts. 3)Perform some finalization at the end of each iteration. 84

Example loop int x = 0; //initialization while (x < 4) //condition { System.out.println(x); x++; //finalization at the end of each step 85

for loop As this theme was so commonly used, Java added a for loop. A for loop is mostly the same as a while loop, but it adds as part of the for loop syntax an initialization and finalization step. for (initialization; condition; finalization) { //loop body 86

for loop for (initialization; condition; finalization) { //loop body The initialization step happens once per loop. It happens right before the first step of the for loop 87

for loop for (initialization; condition; finalization) { //loop body The condition is checked before each iteration of the loop. This is the same as in a while loop. 88

for loop for (initialization; condition; finalization) { //loop body The finalization happens at the very end of every iteration of the loop. 89

for loop for (int i = 0; i < 4; i++) { System.out.println(i); This does the same as the while loop prior. It prints the numbers 0,1,2,3 90

for loop vs while loop for (int i = 0; i < 4; i++) { System.out.println(i); int i = 0; while (i < 4) { System.out.println(i); i++; 91

Benefit of for loop for loops are more readable than while loops in some cases. For example, in the previous case, it is obvious when looking at the statement int i = 0; that the statement is part of the loop. In the case of the while loop it isn't as obvious. 92

Accidental error in while loop int x = 0; while (x < 4) { System.out.println(x); x++; Here it is not quite as obvious that int x = 0; is related to the loop. This means you or someone else could carelessly separate the 2 parts and cause a mistake (for example while copying and pasting) 93

Benefit of while loop Typically, one chooses a while loop over a for loop if there is an indefinite number of iterations one wants to execute. For example, if you wanted to continue to do something until a certain event occurs. This translates better with a while loop because you don't have a loop counter anyway. 94

Benefit of while loop import java.util.*; public class ExampleWhile{ public static void main (String[] args) { Scanner keyboardreader = new Scanner (System.in); int x = keyboardreader.nextint(); while (x>0) { x= keyboardreader.nextint(); System.out.println("Exit now"); 95

Infinite loop? int lastleafcupchampionship = 1967; while (lastleafcupchampionship == 1967) { System.out.println( Wow, even the Rangers are better. ); 96

Treating a for loop like a while loop The statements in a for loop header can be anything including the empty statement: int x = 0; for (; x < 4; ) { System.out.println(x); x++; 97

98

Exercise: Rewrite the isprime() method that we wrote to use a for loop instead of a while loop. Rewrite the printprimes() method as well. 99

Part 5: Nested Loops

Nested Loops Sometimes, we will put a loop inside of a loop. 101

Example : Print coordinate table Suppose we want to print all non-negative combinations of x and y in a grid. We can use 1 for loop inside another to do this. 102

Example : Print coordinate table First, think about y being fixed. For any given y, if I want to print a range of x's, I can do this using a for loop. int y = 1; for (int x = 0; x < 10; x++) { System.out.print( ( + y +, + x + ), ); System.out.print( \n ); 103

Example : Print coordinate table int y = 1; for (int x = 0; x < 10; x++) { System.out.print( ( + y +, + x + ), ); System.out.print( \n ); We know that this code will loop over x from 0 up until and including 9, and print: (1,0), (1,1), (1,2), (1,3), (1,4), (1,5), (1,6), (1,7), (1,8), (1,9) 104

Example : Print coordinate table Now, I want to do this for every y from 0 to 10 as well. So we need to replace the y = 1 part with a loop that changes the value of y. 105

Example : Print coordinate table for (int y = 0; y < 10; y++) { for (int x = 0; x < 10; x++) { System.out.print( ( + y +, + x + ), ); System.out.print( \n ); 106

Using constants for (int y = 0; y < 10; y++) { for (int x = 0; x < 10; x++) { System.out.print( ( + y +, + x + ), ); System.out.print( \n ); It's better to replace the number 10 with a constant describing why we are using the number 10. It may be as simple as NUM_Y_COORDS, but it should be something 107

Using constants final int VERTICAL_SIZE = 10; final int HORIZONTAL_SIZE = 10; for (int y = 0; y < VERTICAL_SIZE; y++) { for (int x = 0; x < HORIZONTAL_SIZE; x++) { System.out.print( ( + y +, + x + ), ); System.out.print( \n ); 108

Exercise: Rewrite the above code using: 1)a while loop on the outside and a for loop on the inside 2)a for loop on the outside and a while loop on the inside 3)2 while loops 109