The for loop suggested reading: 2.3 - 2.5.

Slides:



Advertisements
Similar presentations
Copyright 2008 by Pearson Education 1 Building Java Programs Chapter 2 Lecture 2-2: The for Loop reading: 2.3 self-check: exercises: 2-14 videos:
Advertisements

CS 106 Introduction to Computer Science I 02 / 12 / 2007 Instructor: Michael Eckmann.
Introduction to Computers and Programming for Loops  2000 Prentice Hall, Inc. All rights reserved. Modified for use with this course. Introduction to.
Copyright 2006 by Pearson Education 1 Building Java Programs Chapter 2: Primitive Data and Definite Loops.
CS305j Introduction to ComputingNested For Loops 1 Topic 6 Nested for Loops "Complexity has and will maintain a strong fascination for many people. It.
1 for Loops Computer Science is a science of abstraction - creating the right model for a problem and devising the appropriate mechanizable techniques.
Copyright 2009 by Pearson Education Building Java Programs Chapter 2 Lecture 2-2: The for Loop reading: 2.3 self-check: exercises: 2-14 videos: Ch.
1 BUILDING JAVA PROGRAMS CHAPTER 2 PRIMITIVE DATA AND DEFINITE LOOPS.
1 The for loop. 2 Repetition with for loops So far, repeating a statement is redundant: System.out.println("Homer says:"); System.out.println("I am so.
ADMIT TICKET WHAT DOES THIS OUTPUT? double y = 2.5; int x = 6 / (int) y; System.out.println(“x = “ + x);
Loops  Did you get the point behind a loop?  Why is there a need for loops? Code JunkiesLoops 1.
Copyright 2010 by Pearson Education 1 Building Java Programs Chapter 2 Lecture 2-2: The for Loop reading: 2.3 self-check: exercises: 2-14 videos:
Copyright 2008 by Pearson Education 1 Building Java Programs Chapter 2 Lecture 2-2: The for Loop reading: 2.3 self-check: exercises: 2-14 videos:
Building Java Programs Chapter 2 Primitive Data and Definite Loops Copyright (c) Pearson All rights reserved.
Nested for loops.
Printing with for Loops To print a character multiple times, use a for loop. for (int j = 1; j
For Loop Tips And Tricks
The for loop.
Copyright 2008 by Pearson Education 1 Nested loops reading: 2.3 self-check: exercises: videos: Ch. 2 #4.
1 BUILDING JAVA PROGRAMS CHAPTER 2 PRIMITIVE DATA AND DEFINITE LOOPS.
1 Building Java Programs Chapter 2: Primitive Data and Definite Loops These lecture notes are copyright (C) Marty Stepp and Stuart Reges, They may.
CS 106 Introduction to Computer Science I 02 / 15 / 2008 Instructor: Michael Eckmann.
Adapted from slides by Marty Stepp and Stuart Reges
REPETITION CONTROL STRUCTURE
Building Java Programs Chapter 2
CSC141 Computer Science I Zhen Jiang Dept. of Computer Science
Topic 5 for Loops -Arthur Schopenhauer
CiS 260: App Dev I Chapter 4: Control Structures II.
CSc 110, Autumn 2017 Lecture 5: The for Loop and user input
Building Java Programs Chapter 2
Loops CS140: Introduction to Computing 1 Savitch Chapter 4 Flow of Control: Loops 9/18/13 9/23/13.
CSC240 Computer Science III
Outline Altering flow of control Boolean expressions
Building Java Programs Chapter 2
Primitive data, expressions, and variables
Building Java Programs
CSc 110, Spring 2017 Lecture 4: Nested Loops and Loop Figures
Control Statements Loops.
CSc 110, Spring 2018 Lecture 5: The for Loop and user input
Building Java Programs
Building Java Programs
Building Java Programs
Building Java Programs
Variables variable: A piece of the computer's memory that is given a name and type, and can store a value. Like preset stations on a car stereo, or cell.
Lecture 5: For Loops Building Java Programs: A Back to Basics Approach
CSc 110, Spring 2018 Lecture 5: Loop Figures and Constants
Building Java Programs
Lecture 8:The For Loop AP Computer Science Principles.
CSC115 Introduction to Computer Programming
Building Java Programs
Building Java Programs
Building Java Programs
CSE 190D, Winter 2013 Building Java Programs Chapter 2
Primitive data, expressions, and variables
Building Java Programs
Building Java Programs
Building Java Programs
Building Java Programs
Building Java Programs
Suggested self-checks:
Control Statements Loops.
Drawing complex figures
Building Java Programs
Building Java Programs
PROGRAM FLOWCHART Iteration Statements.
Building Java Programs
Building Java Programs
Chapter 2 Lecture 2-2: The for Loop reading: 2.3
Looping Structures.
CIS 110: Introduction to Computer Programming
Presentation transcript:

The for loop suggested reading: 2.3 - 2.5

Repetition with for loops So far, when we wanted to perform a task multiple times, we have written redundant code: System.out.println("Building Java Programs"); System.out.println(); // print 5 blank lines System.out.println(); System.out.println("by Stuart Reges and Marty Stepp"); Java has a statement called a for loop statement that instructs the computer to perform a task many times: for (int i = 1; i <= 5; i++) { // print 5 blank lines }

for loop syntax for loop: A block of Java code that executes a group of statements repeatedly until a given test fails. General syntax: for (<initialization> ; <test> ; <update>) { <statement>; ... } The <initialization> often declares a loop counter variable that is used in the test, update, and body of the loop. for (int i = 1; i <= 10; i++) { System.out.println("Shave and a haircut, two bits"); loop header loop body

for loop flow diagram Semantics (behavior) of for loop: Start out by performing the <initialization> once. Repeatedly execute the <statement(s)> as long as the <test> is still a true statement. After each time the <statement(s)> execute, do the <update> .

Example for loop of ints The simplest way to use a for loop is to loop over integers in a given range. for (int <name> = 1; <name> <= <value>; <name>++) Example: for (int i = 1; i <= 6; i++) { System.out.println(i + " squared is " + (i * i)); } Output: 1 squared is 1 2 squared is 4 3 squared is 9 4 squared is 16 5 squared is 25 6 squared is 36 Notice that the loop variable (i) can be used inside the loop body.

Loop walkthrough Let's walk through the following for loop: for (int i = 1; i <= 3; i++) { System.out.println(i + " squared is " + (i * i)); } int i = 1; The initialization occurs. is 1 <= 3? Yes, so execute the body and do the update. System.out.println(1 + " squared is " + (1 * 1)); i++; // i = 2 is 2 <= 3? Yes, so execute the body and do the update. System.out.println(2 + " squared is " + (2 * 2)); i++; // i = 3 is 3 <= 3? Yes, so execute the body and do the update. System.out.println(3 + " squared is " + (3 * 3)); i++; // i = 4 is 4 <= 3? No, so exit the loop.

Another example for loop System.out.println("+----+"); for (int i = 1; i <= 3; i++) { System.out.println("\\ /"); System.out.println("/ \\"); } Output: +----+ \ / / \

Some for loop variations The initial and final values for the loop counter variable can be arbitrary numbers or expressions: Example: for (int i = -3; i <= 2; i++) { System.out.println(i); } Output: -3 -2 -1 1 2 for (int i = 1 + 3 * 4; i <= 5248 % 100; i++) { System.out.println(i + " squared is " + (i * i)); What for loop from i = 1 to i = 6 would print equivalent output to the loop above?

for loop questions Write a loop that produces the following output. On day #1 of Christmas, my true love sent to me On day #2 of Christmas, my true love sent to me On day #3 of Christmas, my true love sent to me On day #4 of Christmas, my true love sent to me On day #5 of Christmas, my true love sent to me ... On day #12 of Christmas, my true love sent to me 2 4 6 8 Who do we appreciate

Mapping loops to numbers Suppose that we have the following loop: for (int count = 1; count <= 5; count++) { ... } What statement could we write in the body of the loop that would make the loop print the following output? 3 6 9 12 15 Answer: for (int count = 1; count <= 10; count++) { System.out.print(3 * count + " ");

Mapping loops to numbers 2 Now consider another loop of the same style: for (int count = 1; count <= 5; count++) { ... } What statement could we write in the body of the loop that would make the loop print the following output? 4 7 10 13 16 Answer: for (int count = 1; count <= 10; count++) { System.out.print(3 * count + 1 + " ");

Loop number tables What statement could we write in the body of the loop that would make the loop print the following output? 2 7 12 17 22 To find the pattern, it can help to make a table of the count and the number to print each time. Each time count goes up by 1, the number should go up by 5. But count * 5 is too great by a margin of 3, so we must subtract 3. count number count * 5 count * 5 - 3 1 2 5 7 10 3 12 15 4 17 20 22 25

Loop table question What statement could we write in the body of the loop that would make the loop print the following output? 17 13 9 5 1 Let's create the loop table together. Each time count goes up 1, the number should ... But multiplying count * this amount is off by a margin of ... count number 1 17 2 13 3 9 4 5

Single-line for loop When a for loop only has one statement in its body, the { } braces may be omitted. for (int i = 1; i <= 6; i++) System.out.println(i + " squared is " + (i * i)); However, this can lead to mistakes where a line appears to be inside a loop, but is not: for (int i = 1; i <= 3; i++) System.out.println("This is printed 3 times"); System.out.println("So is this... or is it?"); Output: This is printed 3 times So is this... or is it?

Downward-counting for loop The update can also be a -- or other operator, to make the loop count down instead of up. This also requires changing the test to say >= instead of <= . System.out.print("T-minus "); for (int i = 5; i >= 1; i--) { System.out.print(i + " "); } System.out.println("Blastoff!"); Output: T-minus 5 4 3 2 1 Blastoff!

Degenerate loops Some loops execute 0 times, because of the nature of their test and update. // a degenerate loop for (int i = 10; i < 5; i++) { System.out.println("How many times do I print?"); } Some loops execute endlessly (or far too many times), because the loop test never fails. These are called infinite loops. // an infinite loop for (int i = 10; i >= 1; i++) { System.out.println("Runaway Java program!!!");

Nested loops nested loop: Loops placed inside one another. The inner loop should have a different name for its loop counter variable so that it will not conflict with the outer loop. for (int i = 1; i <= 3; i++) { System.out.println("i = " + i); for (int j = 1; j <= 2; j++) { System.out.println(" j = " + j); } Output: i = 1 j = 1 j = 2 i = 2 i = 3

More nested loops In this example, all of the statements in the outer loop's body are executed 5 times. The inner loop prints 10 numbers each of those 5 times, for a total of 50 numbers printed. for (int i = 1; i <= 5; i++) { for (int j = 1; j <= 10; j++) { System.out.print((i * j) + " "); } System.out.println(); // to end the line Output: 1 2 3 4 5 6 7 8 9 10 2 4 6 8 10 12 14 16 18 20 3 6 9 12 15 18 21 24 27 30 4 8 12 16 20 24 28 32 36 40 5 10 15 20 25 30 35 40 45 50

Nested for loop exercise What is the output of the following nested for loop? for (int i = 1; i <= 6; i++) { for (int j = 1; j <= 10; j++) { System.out.print("*"); } System.out.println(); Output: **********

Nested for loop exercise What is the output of the following nested for loop? for (int i = 1; i <= 6; i++) { for (int j = 1; j <= i; j++) { System.out.print("*"); } System.out.println(); Output: * ** *** **** ***** ******

Nested for loop exercise What is the output of the following nested for loop? for (int i = 1; i <= 6; i++) { for (int j = 1; j <= i; j++) { System.out.print(i); } System.out.println(); Output: 1 22 333 4444 55555 666666

Nested for loop exercise What nested for loops produce the following output? 1, 1 2, 1 3, 1 1, 2 2, 2 3, 2 Answer: for (int y = 1; y <= 2; y++) { for (int x = 1; x <= 3; x++) { System.out.println(x + ", " + y); }

Nested for loop exercise What nested for loops produce the following output? ....1 ...2 ..3 .4 5 This is an example of a nested loop problem where we build multiple complex lines of output. In such problems, we generally have an outer "vertical" loop to represent that there are many lines, and an inner "horizontal" loop to represent any repeated contents on each line. outer loop (loops 5 times because there are 5 lines) inner loop (repeated characters on each line)

Nested for loop exercise First we write the outer loop, which always goes from 1 to the number of lines desired: for (int line = 1; line <= 5; line++) { ... } Next we examine each line and make a table to represent any necessary patterns on that line: ....1 ...2 ..3 .4 5 Answer: for (int line = 1; line <= 5; line++) { for (int j = 1; j <= (5 - line); j++) { System.out.print(" "); } System.out.println(line); line # of dots value displayed 1 4 2 3 5

Nested for loop exercise A for loop can have more than one loop nested in it. What is the output of the following nested for loops? for (int i = 1; i <= 5; i++) { for (int j = 1; j <= (5 - i); j++) { System.out.print(" "); } for (int k = 1; k <= i; k++) { System.out.print(i); System.out.println(); Answer: 1 22 333 4444 55555

Common nested loop bugs It is a common bug to accidentally type the wrong loop counter variable, which can lead to incorrect behavior. What is the output of the following nested loops? for (int i = 1; i <= 10; i++) { for (int j = 1; i <= 5; j++) { System.out.print(j); } System.out.println(); for (int j = 1; j <= 5; i++) { Both cases produce infinite loops.

How to comment: for loops Place a comment on complex loops explaining what they do from a conceptual standpoint, not the mechanics of the syntax. Bad: // This loop repeats 10 times, with i from 1 to 10. for (int i = 1; i <= 10; i++) { for (int j = 1; j <= 5; j++) { // loop goes 5 times System.out.print(j); // print the j } System.out.println(); Better: // Prints 12345 ten times on ten separate lines. for (int j = 1; j <= 5; j++) { System.out.print(j); System.out.println(); // end the line of output