COMP-202 Unit 4: Programming with Iterations

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

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: Using Expressions and Variables Types Strings Methods

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

Repetition, Looping. While Loop

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

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

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

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 9: Exceptions

Top-Down Program Development

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

COMP-202 Unit 9: Exceptions

Java Coding 3. Over & over again!

Repetition, Looping CS101

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

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

Last Class. While loops Infinite loops Loop counters Iterations

COMP 202 Java in one week

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

Scope of this lecture. Repetition For loops While loops

CS 106 Introduction to Computer Science I

Example: Monte Carlo Simulation 1

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

Repe$$on CSC 121 Fall 2015 Howard Rosenthal

Repe$$on CSC 121 Spring 2017 Howard Rosenthal

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

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

COMP 202. Java in one week

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

Repetition CSC 121 Fall 2014 Howard Rosenthal

Example: Computing prime numbers

Loops. CSE 114, Computer Science 1 Stony Brook University

! 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

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

Repetition with for loops

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

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

Computer Programming I - Unit 5 Lecture page 1 of 14

Building Java Programs Chapter 2

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

Repetition Structures

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

1. An operation in which an overall value is computed incrementally, often using a loop.

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

Building Java Programs Chapter 2

Iteration statements - Loops

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

Chapter 4 Lab. Loops and Files. Objectives. Introduction

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

STUDENT LESSON A12 Iterations

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

St. Edmund Preparatory High School Brooklyn, NY

Post Experiment Interview Questions

Chapter 3. Selections

Mobile Computing Professor Pushpendra Singh Indraprastha Institute of Information Technology Delhi Java Basics Lecture 02

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

AP Programming - Chapter 6 Lecture

Conditionals and Loops

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

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

Lab # 2. For today s lab:

Over and Over Again GEEN163

3 The L oop Control Structure

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

Outline. Parts 1 to 3 introduce and sketch out the ideas of OOP. Part 5 deals with these ideas in closer detail.

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

COMP 202 Java in one week

LOOPS. Repetition using the while statement

Interpreted vs Compiled. Java Compile. Classes, Objects, and Methods. Hello World 10/6/2016. Python Interpreted. Java Compiled

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

Math Modeling in Java: An S-I Compartment Model

Lecture Transcript While and Do While Statements in C++

CS125 : Introduction to Computer Science. Lecture Notes #4 Type Checking, Input/Output, and Programming Style

Topic 6 Nested for Loops

Intro. Speed V Growth

Control Statements: Part 1

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

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

Controls Structure for Repetition

CSC 1051 Data Structures and Algorithms I

CS112 Lecture: Repetition Statements

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

COMP-202: Foundations of Programming. Lecture 2: Variables, and Data Types Sandeep Manjanna, Summer 2015

COMP-202 More Complex OOP

Chapter Goals. Contents LOOPS

3.4. FOR-LOOPS 65. for <v a r i a b l e > in < sequence >:

Garbage Collection (1)

Algorithms and Conditionals

Primitive Data, Variables, and Expressions; Simple Conditional Execution

CS 177 Week 5 Recitation Slides. Loops

1.3 Conditionals and Loops

Conditionals, Loops, and Style

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

Expressions and Data Types CSC 121 Fall 2015 Howard Rosenthal

Chapter Fourteen Bonus Lessons: Algorithms and Efficiency

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

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 COMP-202 - Programm 2

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. COMP-202 - Programm 3

Part 1: While loops

Recall : If statement if (condition) { //some code here... //code here happens regardless COMP-202 - Programm 5

Recall : If statement if (condition) { //some code here... //code here happens regardless An if statement defines a block of code. COMP-202 - Programm 6

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

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. COMP-202 - Programm 8

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. COMP-202 - Programm 9

Doing the same thing many times Sometimes, we will want to execute the same block of code many times. How can we do that? COMP-202 - Programm 10

Copy / Paste The naïve thing to do is copy paste your code. What are some problems with this? COMP-202 - Programm 11

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? COMP-202 - Programm 12

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. COMP-202 - Programm 13

if statement vs while loop if (condition) { //block of code //Go here //no matter what while (condition) { //block of code //repeat condition // check //Go here //only after //condition is false COMP-202 - Programm 14

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 - Programm 15

Doing things multiple times There is no command in Java to perform the same thing many times. However, if we are clever with our variables, we can write code that will execute many times. Remember we will keep on repeating the body of a while loop as long as a condition is true. COMP-202 - Programm 16

Use a variable to count Idea: 1)Create a variable and set it equal to 0. 2)Every time our loop body executes, add one to this variable 3)At any point, the variable's value will be equal to the number of steps we've done so far. We can then check as a condition for the while loop that the number of steps is less than any desired number. COMP-202 - Programm 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 - Programm 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 has executed COMP-202 - Programm 19

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. COMP-202 - Programm 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. COMP-202 - Programm 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. COMP-202 - Programm 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. COMP-202 - Programm 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. COMP-202 - Programm 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. COMP-202 - Programm 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. COMP-202 - Programm 27

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

Important Clarification int x = 0; while (x < 4) { x = x + 10; System.out.println( x is now 10 ); x = x - 10; x++; Although x = 10 at this point, the loop condition is not tested until later, when x=1 again COMP-202 - Programm 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++; COMP-202 - Programm 30

Practice Exercise: Since i % 3 == 0 for any numbers that are multiples of 3, that loop prints all the multiples of 3. An alternate way to do the same thing is to replace i++ with i = i + 3 COMP-202 - Programm 31

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

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 COMP-202 - Programm 33

Tangent: Halting Problem (1) Alan Turing investigated the problem of: Given a computer program in a language like Java, 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 COMP-202 - Programm 34

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 http://en.wikipedia.org/wiki/halting_problem COMP-202 - Programm 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++;

If you add one to the biggest value that can fit into an int, you'll cycle around to the most negative # possible (e.g. negative 2 billion) 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++; It seems infinite. However, be careful to remember that ints have a max value.

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 - Programm 44

Off-By-One Errors Example //this code is supposed to print all positive //values of x up until 5: What is wrong with it? int x = 1; while (x < 5) { System.out.println(x); x++; COMP-202 - Programm 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) COMP-202 - Programm 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 - Programm 47

What will this loop do? int x = 0; while (x < 4) { System.out.println(x); This is an infinite loop that goes on forever! COMP-202 - Programm 48

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++ COMP-202 - Condition 49

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. Is the loop counter also used in the computation? Make sure that your loop starts or initializes with the right result Make sure that your loop terminates with the correct result COMP-202 - Programm 50

Programming Idioms We would like to build up a list of idioms for programming These are programming structures that initially may be complex and require us to figure out what they mean. However once we've seen them before, we'll learn them and not need to look at them very carefully. COMP-202 - Programm 51

Idiom: Repeating the same thing n times int i = 0; while (i < numdesiredexecutiontimes) { action(s) to perform multiple times i++; The idea is that we will see this so many times we don't need to think about if i should start from 0 or 1, should it be < or <=, etc. COMP-202 - Programm 52

Example: Printing Exams int i = 0; while (i < NUMBER_STUDENTS_IN_CLASS) { printpaper(); i++; Here we are doing the same exact thing NUMBER_STUDENTS_IN_CLASS times COMP-202 - Programm 53

Idiom 2: Doing something for every number in a range int i = 1; while (i <= n) { some statements that depend on i i++; This loop would do something for every value of i from 1 until n (inclusive) COMP-202 - Programm 54

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

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 Fahrenheit, and prints the result to the screen. (Answers on next slide: no peaking!) COMP-202 - Programm 56

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; COMP-202 - Programmin 57

Exercises: -Write a method that counts the number of factors of a number n (input) and returns the value. -Write a method that takes the sum of all the factors of a number n (input). COMP-202 - Programm 58

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. COMP-202 - Programm 60

Class Constants (final) Sometimes, 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) {... COMP-202 - Programm 61

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. COMP-202 - Programm 62

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 - Programm 63

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 COMP-202 - Programm 64

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! COMP-202 - Programm 65

Class Variables These sorts of variables (or constants) are known as class variables (or class constants). They are called this because they belong to the entire class as opposed to one method. COMP-202 - Programm 66

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; COMP-202 - Programm 67

Problems with this: Leads to bugs! 1)The variable degrees is used for different purposes (first it is fahrenheit then it is degrees) 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)Because you are doing 2 things with 1 variable, the print statement could be separated from when the value is set. 5)reader can be used by a different method and the main() method wouldn't know. COMP-202 - Programm 68

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; COMP-202 - Programm 69

Static constants Static constants do not normally have this problem since their values don't change. There are still cases where it is better to pass a constant to a method rather than use it. We will see later on that there are indeed times to create static variables, but for starters we should not use static variables and should only use static constants with simple types (i.e. int, double, float, boolean, etc. String is OK too despite the capital S) COMP-202 - Programm 70

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. COMP-202 - Programm 72

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! COMP-202 - Programm 73

Steps to solve this: public static boolean isprime(int n) { COMP-202 - Programm 74

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)? COMP-202 - Programm 75

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 COMP-202 - Programm 76

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. COMP-202 - Programm 77

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 COMP-202 - Programm 78

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. That is, if we see 1 factor, we can conclude it's not prime, but if we see 1 non-factor, we can't conclude it's prime COMP-202 - Programm 79

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. This is idiom #2. 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! COMP-202 - Programm 80

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? COMP-202 - Programm 81

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) COMP-202 - Programm 82

Solution public static boolean isprime(int n) { int x = 2; while (x < n) { if (n % x == 0) { return false; x++; return true; COMP-202 - Programm 83

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; COMP-202 - Programm 84

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++; COMP-202 - Programm 85

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 (2) isn't a factor of n. For example, 9 is not prime, but 9 % 2!= 0*/ x++; COMP-202 - Programm 86

Asymmetry This asymmetry occurs because a number is prime if none of the numbers preceding it are factors. A number is composite (that is, not prime) if any of the numbers preceding it are factors. none is not the opposite of any so we have an asymmetry in the problem. COMP-202 - Programm 87

Idiom number 3 : All/None vs any The following idiom returns true if any numbers between 1 and max satisfy a condition. False otherwise. (Could modify accordingly to make none instead of all or flip true/false) int i = 1; while (i <= max) { if (some condition) { i++; return false; return true; COMP-202 - Programm 88

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) COMP-202 - Programm 89

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. COMP-202 - Programm 90

Exercise Write a method that takes as input a String s and returns a boolean representing whether ALL characters are uppercase or not. Note: whenever you have a String, you can access individual characters by writing the name of the String followed by.charat(count) where count is the numberth letter you want. One thing to keep in mind with count is it starts from 0 and ends at the Strings length 1. String foo = hello ; foo.charat(0) ---> letter h foo.charat(4) --> letter o foo.charat(5) --> run time exception since no such character foo.length() ---> gives 5 (one more than the largest index) Hint : If you are having trouble, use top down programming and split your problem into smaller pieces. Start by assuming you have a method isuppercase(char c) COMP-202 - Programm 91

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. COMP-202 - Programm 93

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

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 COMP-202 - Programm 95

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 COMP-202 - Programm 96

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. COMP-202 - Programm 97

for loop for (initialization; condition; finalization) { //loop body The finalization happens at the very end of every iteration of the loop. COMP-202 - Programm 98

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 COMP-202 - Programm 99

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++; COMP-202 - Programm 100

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. COMP-202 - Programm 101

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) COMP-202 - Programm 102

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. COMP-202 - Programm 103

Benefit of while loop int lastleafcupchampionship = 1967; while (lastleafcupchampionship == 1967) { System.out.println( Wow, even the Rangers are better. ); COMP-202 - Programm 104

Infinite loop? int lastleafcupchampionship = 1967; while (lastleafcupchampionship == 1967) { System.out.println( Wow, even the Rangers are better. ); COMP-202 - Programm 105

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++; COMP-202 - Programm 106

COMP-202 - Programm 107

Exercise: Rewrite the isprime() method that we wrote to use a for loop instead of a while loop. Rewrite the printprimes() method as well. COMP-202 - Programm 108

Part 5: Nested Loops

Nested Loops Sometimes, we will put a loop inside of a loop. When this happens...sometimes our brain is tied in a bit of a knot (buda-dum-dum-chi) COMP-202 - Programm 110

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. COMP-202 - Programm 111

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 ); COMP-202 - Programm 112

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) COMP-202 - Programm 113

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. COMP-202 - Programm 114

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 ); COMP-202 - Programm 115

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 COMP-202 - Programm 116

Using constants final int VERTICAL_SIZE = 10; //could also be class constants? 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 ); COMP-202 - Programm 117

Using Methods to Avoid Nested Loops Many times, we can use a method to hide a nested loop. public static void main(string[] args) { for (int y = 0; y < VERTICAL_SIZE; y++) { printrow(y); public static void printrow(int y) { for (int x = 0; x < HORIZONTAL_SIZE; x++) { System.out.print( ( + y +, + x + ), ); System.out.println( \n ); COMP-202 - Programm 118

Avoiding nested loops There still is a nested loop technically in that you are executing a loop inside of a loop. However, the method allows us to hide this aspect. -We look at the printrow() method and can test to make sure it works. -Less chance to get the variables mixed up somehow. (For example to change x when we want to change y) -Miller's law in play (less to keep track of at a time) COMP-202 - Programm 119

Practice with loops -Write a method that takes as input a positive int n and calculates the sum of 1 + 2 +... + n. (Do this using a loop first and then do this using a formula) -Write a method called power that takes as input 2 positive integers base and power and computes base^power. How could you extend this so that the method worked with negatives as well? -Write a method that prints all the powers of two. Do this first using nested loops and then do it using your method power written above. COMP-202 - Programm 120

Exercise: While loop vs for loop 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 COMP-202 - Programm 121