SlideShare a Scribd company logo
Object – Oriented Programming
Week 3 – While and for loop
Ferdin Joe John Joseph, PhD
Faculty of Information Technology
Thai-Nichi Institute of Technology
2
Loops – While, Do, For
• Repetition Statements
– While
– Do
– For
Faculty of Information Technology,
Thai-Nichi Institute of Technology
3
Repetition Statements
• Repetition statements allow us to execute a statement
or a block of statements multiple times
• Often they are referred to as loops
• Like conditional statements, they are controlled by
boolean expressions
• Java has three kinds of repetition statements:
while
do
for
• The programmer should choose the right kind of
loop statement for the situation
Faculty of Information Technology,
Thai-Nichi Institute of Technology
4
The while Statement
• A while statement has the following syntax:
• If the condition is true, the statement is executed
• Then the condition is evaluated again, and if it is
still true, the statement is executed again
• The statement is executed repeatedly until the
condition becomes false
while ( condition )
statement;
Faculty of Information Technology,
Thai-Nichi Institute of Technology
Logic of a while Loop
statement
true false
condition
evaluated
5Faculty of Information Technology,
Thai-Nichi Institute of Technology
6
The while Statement
• An example of a while statement:
• If the condition of a while loop is false
initially, the statement is never executed
• Therefore, the body of a while loop will
execute zero or more times
int count = 0;
while (count < 2)
{
System.out.println("Welcome to Java!");
count++;
}
Faculty of Information Technology, Thai-Nichi Institute of Technology
Trace while Loop
int count = 0;
while (count < 2)
{
System.out.println("Welcome to Java!");
count++;
}
Initialize count
animation
7Faculty of Information Technology,
Thai-Nichi Institute of Technology
Trace while Loop, cont.
int count = 0;
while (count < 2)
{
System.out.println("Welcome to Java!");
count++;
}
(count < 2) is true
animation
8Faculty of Information Technology,
Thai-Nichi Institute of Technology
Trace while Loop, cont.
int count = 0;
while (count < 2)
{
System.out.println("Welcome to Java!");
count++;
}
Print Welcome to Java
animation
9Faculty of Information Technology,
Thai-Nichi Institute of Technology
Trace while Loop, cont.
int count = 0;
while (count < 2)
{
System.out.println("Welcome to Java!");
count++;
}
Increase count by 1
count is 1 now
animation
10Faculty of Information Technology,
Thai-Nichi Institute of Technology
Trace while Loop, cont.
int count = 0;
while (count < 2)
{
System.out.println("Welcome to Java!");
count++;
}
(count < 2) is still true since count
is 1
animation
11Faculty of Information Technology,
Thai-Nichi Institute of Technology
Trace while Loop, cont.
int count = 0;
while (count < 2)
{
System.out.println("Welcome to Java!");
count++;
}
Print Welcome to Java
animation
12Faculty of Information Technology,
Thai-Nichi Institute of Technology
Trace while Loop, cont.
int count = 0;
while (count < 2)
{
System.out.println("Welcome to Java!");
count++;
}
Increase count by 1
count is 2 now
animation
13Faculty of Information Technology,
Thai-Nichi Institute of Technology
Trace while Loop, cont.
int count = 0;
while (count < 2)
{
System.out.println("Welcome to Java!");
count++;
}
(count < 2) is false since count is 2
now
animation
14Faculty of Information Technology,
Thai-Nichi Institute of Technology
Trace while Loop
int count = 0;
while (count < 2)
{
System.out.println("Welcome to Java!");
count++;
}
The loop exits. Execute the next
statement after the loop.
animation
15Faculty of Information Technology,
Thai-Nichi Institute of Technology
16
Example (Average.java)
Faculty of Information Technology,
Thai-Nichi Institute of Technology
17
Infinite Loops
• Executing the statements in the body of a while
loop must eventually make the condition false
• If not, it is called an infinite loop, which will
execute until the user interrupts the program
• This is a common logical error
• You should always double check the logic of a
program to ensure that your loops will terminate
Faculty of Information Technology,
Thai-Nichi Institute of Technology
18
Infinite Loops
• An example of an infinite loop:
• This loop will continue executing until the
user externally interrupts the program.
int count = 1;
while (count <= 25)
{
System.out.println(count);
count = count - 1;
}
Faculty of Information Technology,
Thai-Nichi Institute of Technology
19
Nested Loops
• Similar to nested if statements, loops can
be nested as well
• That is, the body of a loop can contain
another loop
• For each iteration of the outer loop, the
inner loop iterates completely
Faculty of Information Technology,
Thai-Nichi Institute of Technology
20
Nested Loops
• How many times will the string "Here" be printed?
count1 = 1;
while (count1 <= 10)
{
count2 = 1;
while (count2 <= 20)
{
System.out.println ("Here");
count2++;
}
count1++;
}
10 * 20 = 200
Faculty of Information Technology,
Thai-Nichi Institute of Technology
For Loop
Repetition with for loops
• So far, repeating a statement is redundant:
System.out.println("Homer says:");
System.out.println("I am so smart");
System.out.println("I am so smart");
System.out.println("I am so smart");
System.out.println("I am so smart");
System.out.println("S-M-R-T... I mean S-M-A-R-T");
• Java's for loop statement performs a
task many times.
System.out.println("Homer says:");
for (int i = 1; i <= 4; i++) { // repeat 4 times
System.out.println("I am so smart");
}
System.out.println("S-M-R-T... I mean S-M-A-R-T");
for loop syntax
for (initialization; test; update) {
statement;
statement;
...
statement;
}
– Perform initialization once.
– Repeat the following:
• Check if the test is true. If not, stop.
• Execute the statements.
• Perform the update.
body
header
Initialization
for (int i = 1; i <= 6; i++) {
System.out.println("I am so
smart");
}
• Tells Java what variable to use in the loop
– Performed once as the loop begins
– The variable is called a loop counter
• can use any name, not just i
• can start at any value, not just 1
Test
for (int i = 1; i <= 6; i++) {
System.out.println("I am so
smart");
}
• Tests the loop counter variable against a limit
– Uses comparison operators:
< less than
<= less than or equal to
> greater than
>= greater than or equal to
Increment and decrement
shortcuts to increase or decrease a
variable's value by 1
Shorthand Equivalent longer
version
variable++; variable = variable+1;
variable--; variable = variable - 1;
int x = 2;
x++; // x = x + 1;
// x now stores 3
double gpa = 2.5;
gpa--; // gpa = gpa - 1;
// gpa now stores 1.5
Modify-and-assign operators
shortcuts to modify a variable's value
Shorthand Equivalent longer version
variable += value; variable = variable + value;
variable -= value; variable = variable - value;
variable *= value; variable = variable * value;
variable /= value; variable = variable / value;
variable %= value; variable = variable % value;
x += 3; // x = x + 3;
gpa -= 0.5; // gpa = gpa - 0.5;
number *= 2; // number = number * 2;
Repetition over a range
System.out.println("1 squared = " + 1 * 1);
System.out.println("2 squared = " + 2 * 2);
System.out.println("3 squared = " + 3 * 3);
System.out.println("4 squared = " + 4 * 4);
System.out.println("5 squared = " + 5 * 5);
System.out.println("6 squared = " + 6 * 6);
– Intuition: "I want to print a line for each number from 1 to 6"
• The for loop does exactly that!
for (int i = 1; i <= 6; i++) {
System.out.println(i + " squared = " + (i * i));
}
– "For each integer i from 1 through 6, print ..."
Loop walkthrough
for (int i = 1; i <= 4; i++) {
System.out.println(i + " squared = " + (i * i));
}
System.out.println("Whoo!");
Output:
1 squared = 1
2 squared = 4
3 squared = 9
4 squared = 16
Whoo!
1
1
2
2
3
3
4
4
5
5
Multi-line loop body
System.out.println("+----+");
for (int i = 1; i <= 3; i++) {
System.out.println(" /");
System.out.println("/ ");
}
System.out.println("+----+");
– Output:
+----+
 /
/ 
 /
/ 
 /
/ 
+----+
Expressions for counter
int highTemp = 5;
for (int i = -3; i <= highTemp / 2; i++) {
System.out.println(i * 1.8 + 32);
}
– Output:
26.6
28.4
30.2
32.0
33.8
35.6
System.out.print
• Prints without moving to a new line
– allows you to print partial messages on the same line
int highestTemp = 5;
for (int i = -3; i <= highestTemp / 2; i++) {
System.out.print((i * 1.8 + 32) + " ");
}
• Output:
26.6 28.4 30.2 32.0 33.8 35.6
• Concatenate " " to separate the numbers
Counting down
• The update can use -- to make the loop count down.
– The test must say > instead of <
System.out.print("T-minus ");
for (int i = 10; i >= 1; i--) {
System.out.print(i + ", ");
}
System.out.println("blastoff!");
System.out.println("The end.");
– Output:
T-minus 10, 9, 8, 7, 6, 5, 4, 3, 2, 1,
blastoff!
The end.
Nested loops
Nested loops
• nested loop: A loop placed inside another loop.
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= 10; j++) {
System.out.print("*");
}
System.out.println(); // to end the line
}
• Output:
**********
**********
**********
**********
**********
• The outer loop repeats 5 times; the inner one 10 times.
– "sets and reps" exercise analogy
Nested for loop exercise
• What is the output of the following nested
for loops?
for (int i = 1; i <= 5; 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 loops?
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(i);
}
System.out.println();
}
• Output:
1
22
333
4444
55555
Common errors
• Both of the following sets of code produce
infinite loops:
for (int i = 1; i <= 5; i++) {
for (int j = 1; i <= 10; j++) {
System.out.print("*");
}
System.out.println();
}
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= 10; i++) {
System.out.print("*");
}
System.out.println();
}
Complex lines
• What nested for loops produce the
following output?
....1
...2
..3
.4
5
• We must build multiple complex lines of output using:
– an outer "vertical" loop for each of the lines
– inner "horizontal" loop(s) for the patterns within each line
outer loop (loops 5 times because there are 5 lines)
inner loop (repeated characters on each line)
Outer and inner loop
• First write the outer loop, from 1 to the number of lines.
for (int line = 1; line <= 5; line++) {
...
}
• Now look at the line contents. Each line has a pattern:
– some dots (0 dots on the last line), then a number
....1
...2
..3
.4
5
– Observation: the number of dots is related to the line number.
Mapping loops to numbers
for (int count = 1; count <= 5; count++)
{
System.out.print( ... );
}
– What statement in the body would cause the loop to
print:
4 7 10 13 16
for (int count = 1; count <= 5; count++)
{
System.out.print(3 * count + 1 + "
");
}
Loop tables
• What statement in the body would cause the loop to print:
2 7 12 17 22
• To see patterns, make a table of count and the numbers.
– Each time count goes up by 1, the number should go up by 5.
– But count * 5 is too great by 3, so we subtract 3.
count number to print 5 * count
1 2 5
2 7 10
3 12 15
4 17 20
5 22 25
5 * count - 3
2
7
12
17
22
Loop tables question
• What statement in the body would cause the loop to print:
17 13 9 5 1
• Let's create the loop table together.
– Each time count goes up 1, the number printed should ...
– But this multiple is off by a margin of ...
count number to print
1 17
2 13
3 9
4 5
5 1
-4 * count -4 * count + 21
-4 17
-8 13
-12 9
-16 5
-20 1
-4 * count
-4
-8
-12
-16
-20
Nested for loop exercise
• Make a table to represent any patterns on each line.
....1
...2
..3
.4
5
• To print a character multiple times, use a for loop.
for (int j = 1; j <= 4; j++) {
System.out.print("."); // 4 dots
}
line # of dots
1 4
2 3
3 2
4 1
5 0
-1 * line
-1
-2
-3
-4
-5
-1 * line + 5
4
3
2
1
0
Nested for loop solution
• Answer:
for (int line = 1; line <= 5; line++) {
for (int j = 1; j <= (-1 * line + 5); j++) {
System.out.print(".");
}
System.out.println(line);
}
• Output:
....1
...2
..3
.4
5
Nested for loop exercise
• What is the output of the following nested for loops?
for (int line = 1; line <= 5; line++) {
for (int j = 1; j <= (-1 * line + 5); j++) {
System.out.print(".");
}
for (int k = 1; k <= line; k++) {
System.out.print(line);
}
System.out.println();
}
• Answer:
....1
...22
..333
.4444
55555
Nested for loop exercise
• Modify the previous code to produce this output:
....1
...2.
..3..
.4...
5....
• Answer:
for (int line = 1; line <= 5; line++) {
for (int j = 1; j <= (-1 * line + 5); j++) {
System.out.print(".");
}
System.out.print(line);
for (int j = 1; j <= (line - 1); j++) {
System.out.print(".");
}
System.out.println();
}

More Related Content

PPTX
Exception Handling
PDF
Constructors and Method Overloading
PDF
DSA 103 Object Oriented Programming :: Week 1
PPTX
Inheritance in Java
PPTX
PDF
2019 DSA 105 Introduction to Data Science Week 1
PDF
Javafx tutorial
PPTX
Java class,object,method introduction
Exception Handling
Constructors and Method Overloading
DSA 103 Object Oriented Programming :: Week 1
Inheritance in Java
2019 DSA 105 Introduction to Data Science Week 1
Javafx tutorial
Java class,object,method introduction

What's hot (20)

PPTX
Initiation à Bootstrap
PDF
Chapitre 6 traitement des exceptions
PDF
Cours java avance débutant facile l'essentiel swing ,events
PPTX
Packages,static,this keyword in java
PPTX
동기화 시대를 뛰어넘는 비동기 프로그래밍
PPT
oop Lecture 10
PDF
Advanced Python Testing Techniques (Pycon KR 2019) [Korean Ver.]
PDF
Sw occlusion culling
PDF
IE-008 Ie的機會與挑戰 以Ic晶圓製造業為例
PPTX
Debugging Effectively
PPTX
Packages in java
PDF
Nouveautés Java 9-10-11
PPTX
Java Decision Control
PPTX
Friend Function
PDF
POO Java Chapitre 1 Classe & Objet
PDF
docker.pdf
PPTX
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
PPTX
PATTERNS02 - Creational Design Patterns
PPSX
OOP with Java - Part 3
PPTX
Polymorphisme
Initiation à Bootstrap
Chapitre 6 traitement des exceptions
Cours java avance débutant facile l'essentiel swing ,events
Packages,static,this keyword in java
동기화 시대를 뛰어넘는 비동기 프로그래밍
oop Lecture 10
Advanced Python Testing Techniques (Pycon KR 2019) [Korean Ver.]
Sw occlusion culling
IE-008 Ie的機會與挑戰 以Ic晶圓製造業為例
Debugging Effectively
Packages in java
Nouveautés Java 9-10-11
Java Decision Control
Friend Function
POO Java Chapitre 1 Classe & Objet
docker.pdf
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
PATTERNS02 - Creational Design Patterns
OOP with Java - Part 3
Polymorphisme
Ad

Similar to DSA 103 Object Oriented Programming :: Week 3 (20)

PPT
Ch02 primitive-data-definite-loops
PPT
Week2 ch4 part1edited 2020
PPT
Week2 ch4 part1edited 2020
PPT
Java Programming: Loops
PPT
ch02-primitive-data-definite-loops.ppt
PPT
ch02-primitive-data-definite-loops.ppt
PPT
Ch5(loops)
DOCX
9 11 25 14 44 6 41 15 57 9 39 16 41 2 58 8 43 12 4.docx
PPTX
Begin with c++ Fekra Course #1
PDF
Programming Fundamentals presentation slide
PPTX
DSA 103 Object Oriented Programming :: Week 4
PPTX
Chapter 5 Loops by z al saeddddddddddddddddddddddddddddddddddd
PPTX
Cs1123 6 loops
PPT
Java căn bản - Chapter6
PPTX
JPC#8 Introduction to Java Programming
PPT
Chapter 5 Looping
PPTX
Introduction to Java Programming - Lecture 11.pptx
PPTX
16. Java stacks and queues
Ch02 primitive-data-definite-loops
Week2 ch4 part1edited 2020
Week2 ch4 part1edited 2020
Java Programming: Loops
ch02-primitive-data-definite-loops.ppt
ch02-primitive-data-definite-loops.ppt
Ch5(loops)
9 11 25 14 44 6 41 15 57 9 39 16 41 2 58 8 43 12 4.docx
Begin with c++ Fekra Course #1
Programming Fundamentals presentation slide
DSA 103 Object Oriented Programming :: Week 4
Chapter 5 Loops by z al saeddddddddddddddddddddddddddddddddddd
Cs1123 6 loops
Java căn bản - Chapter6
JPC#8 Introduction to Java Programming
Chapter 5 Looping
Introduction to Java Programming - Lecture 11.pptx
16. Java stacks and queues
Ad

More from Ferdin Joe John Joseph PhD (20)

PDF
Invited Talk DGTiCon 2022
PDF
Week 12: Cloud AI- DSA 441 Cloud Computing
PDF
Week 11: Cloud Native- DSA 441 Cloud Computing
PDF
Week 10: Cloud Security- DSA 441 Cloud Computing
PDF
Week 9: Relational Database Service Alibaba Cloud- DSA 441 Cloud Computing
PDF
Week 7: Object Storage Service Alibaba Cloud- DSA 441 Cloud Computing
PDF
Week 6: Server Load Balancer and Auto Scaling Alibaba Cloud- DSA 441 Cloud Co...
PDF
Week 5: Elastic Compute Service (ECS) with Alibaba Cloud- DSA 441 Cloud Compu...
PDF
Week 4: Big Data and Hadoop in Alibaba Cloud - DSA 441 Cloud Computing
PDF
Week 3: Virtual Private Cloud, On Premise, IaaS, PaaS, SaaS - DSA 441 Cloud C...
PDF
Week 2: Virtualization and VM Ware - DSA 441 Cloud Computing
PDF
Week 1: Introduction to Cloud Computing - DSA 441 Cloud Computing
PDF
Sept 6 2021 BTech Artificial Intelligence and Data Science curriculum
PDF
Hadoop in Alibaba Cloud
PDF
Cloud Computing Essentials in Alibaba Cloud
PDF
Transforming deep into transformers – a computer vision approach
PDF
Week 11: Programming for Data Analysis
PDF
Week 10: Programming for Data Analysis
PDF
Week 9: Programming for Data Analysis
PDF
Week 8: Programming for Data Analysis
Invited Talk DGTiCon 2022
Week 12: Cloud AI- DSA 441 Cloud Computing
Week 11: Cloud Native- DSA 441 Cloud Computing
Week 10: Cloud Security- DSA 441 Cloud Computing
Week 9: Relational Database Service Alibaba Cloud- DSA 441 Cloud Computing
Week 7: Object Storage Service Alibaba Cloud- DSA 441 Cloud Computing
Week 6: Server Load Balancer and Auto Scaling Alibaba Cloud- DSA 441 Cloud Co...
Week 5: Elastic Compute Service (ECS) with Alibaba Cloud- DSA 441 Cloud Compu...
Week 4: Big Data and Hadoop in Alibaba Cloud - DSA 441 Cloud Computing
Week 3: Virtual Private Cloud, On Premise, IaaS, PaaS, SaaS - DSA 441 Cloud C...
Week 2: Virtualization and VM Ware - DSA 441 Cloud Computing
Week 1: Introduction to Cloud Computing - DSA 441 Cloud Computing
Sept 6 2021 BTech Artificial Intelligence and Data Science curriculum
Hadoop in Alibaba Cloud
Cloud Computing Essentials in Alibaba Cloud
Transforming deep into transformers – a computer vision approach
Week 11: Programming for Data Analysis
Week 10: Programming for Data Analysis
Week 9: Programming for Data Analysis
Week 8: Programming for Data Analysis

Recently uploaded (20)

PPTX
Azure Data management Engineer project.pptx
PDF
Foundation of Data Science unit number two notes
PPTX
LESSON-1-NATURE-OF-MATHEMATICS.pptx patterns
PDF
“Getting Started with Data Analytics Using R – Concepts, Tools & Case Studies”
PPTX
Presentation1.pptxvhhh. H ycycyyccycycvvv
PPTX
1intro to AI.pptx AI components & composition
PPTX
Logistic Regression ml machine learning.pptx
PPTX
PPT_Dream_45_NEET_Organic_Chemistry_Pankaj_Sijariya_Sir_Sanjeet.pptx
PPTX
Purple and Violet Modern Marketing Presentation (1).pptx
PDF
A Systems Thinking Approach to Algorithmic Fairness.pdf
PDF
Mastering Query Optimization Techniques for Modern Data Engineers
PPTX
Challenges and opportunities in feeding a growing population
PPTX
Major-Components-ofNKJNNKNKNKNKronment.pptx
PDF
Chad Readey - An Independent Thinker
PPTX
Extract Transformation Load (3) (1).pptx
PPTX
Understanding Prototyping in Design and Development
PPT
Chapter 3 METAL JOINING.pptnnnnnnnnnnnnn
PPTX
Economic Sector Performance Recovery.pptx
PDF
Digital Infrastructure – Powering the Connected Age
PPTX
Data-Driven-Credit-Card-Launch-A-Wells-Fargo-Case-Study.pptx
Azure Data management Engineer project.pptx
Foundation of Data Science unit number two notes
LESSON-1-NATURE-OF-MATHEMATICS.pptx patterns
“Getting Started with Data Analytics Using R – Concepts, Tools & Case Studies”
Presentation1.pptxvhhh. H ycycyyccycycvvv
1intro to AI.pptx AI components & composition
Logistic Regression ml machine learning.pptx
PPT_Dream_45_NEET_Organic_Chemistry_Pankaj_Sijariya_Sir_Sanjeet.pptx
Purple and Violet Modern Marketing Presentation (1).pptx
A Systems Thinking Approach to Algorithmic Fairness.pdf
Mastering Query Optimization Techniques for Modern Data Engineers
Challenges and opportunities in feeding a growing population
Major-Components-ofNKJNNKNKNKNKronment.pptx
Chad Readey - An Independent Thinker
Extract Transformation Load (3) (1).pptx
Understanding Prototyping in Design and Development
Chapter 3 METAL JOINING.pptnnnnnnnnnnnnn
Economic Sector Performance Recovery.pptx
Digital Infrastructure – Powering the Connected Age
Data-Driven-Credit-Card-Launch-A-Wells-Fargo-Case-Study.pptx

DSA 103 Object Oriented Programming :: Week 3

  • 1. Object – Oriented Programming Week 3 – While and for loop Ferdin Joe John Joseph, PhD Faculty of Information Technology Thai-Nichi Institute of Technology
  • 2. 2 Loops – While, Do, For • Repetition Statements – While – Do – For Faculty of Information Technology, Thai-Nichi Institute of Technology
  • 3. 3 Repetition Statements • Repetition statements allow us to execute a statement or a block of statements multiple times • Often they are referred to as loops • Like conditional statements, they are controlled by boolean expressions • Java has three kinds of repetition statements: while do for • The programmer should choose the right kind of loop statement for the situation Faculty of Information Technology, Thai-Nichi Institute of Technology
  • 4. 4 The while Statement • A while statement has the following syntax: • If the condition is true, the statement is executed • Then the condition is evaluated again, and if it is still true, the statement is executed again • The statement is executed repeatedly until the condition becomes false while ( condition ) statement; Faculty of Information Technology, Thai-Nichi Institute of Technology
  • 5. Logic of a while Loop statement true false condition evaluated 5Faculty of Information Technology, Thai-Nichi Institute of Technology
  • 6. 6 The while Statement • An example of a while statement: • If the condition of a while loop is false initially, the statement is never executed • Therefore, the body of a while loop will execute zero or more times int count = 0; while (count < 2) { System.out.println("Welcome to Java!"); count++; } Faculty of Information Technology, Thai-Nichi Institute of Technology
  • 7. Trace while Loop int count = 0; while (count < 2) { System.out.println("Welcome to Java!"); count++; } Initialize count animation 7Faculty of Information Technology, Thai-Nichi Institute of Technology
  • 8. Trace while Loop, cont. int count = 0; while (count < 2) { System.out.println("Welcome to Java!"); count++; } (count < 2) is true animation 8Faculty of Information Technology, Thai-Nichi Institute of Technology
  • 9. Trace while Loop, cont. int count = 0; while (count < 2) { System.out.println("Welcome to Java!"); count++; } Print Welcome to Java animation 9Faculty of Information Technology, Thai-Nichi Institute of Technology
  • 10. Trace while Loop, cont. int count = 0; while (count < 2) { System.out.println("Welcome to Java!"); count++; } Increase count by 1 count is 1 now animation 10Faculty of Information Technology, Thai-Nichi Institute of Technology
  • 11. Trace while Loop, cont. int count = 0; while (count < 2) { System.out.println("Welcome to Java!"); count++; } (count < 2) is still true since count is 1 animation 11Faculty of Information Technology, Thai-Nichi Institute of Technology
  • 12. Trace while Loop, cont. int count = 0; while (count < 2) { System.out.println("Welcome to Java!"); count++; } Print Welcome to Java animation 12Faculty of Information Technology, Thai-Nichi Institute of Technology
  • 13. Trace while Loop, cont. int count = 0; while (count < 2) { System.out.println("Welcome to Java!"); count++; } Increase count by 1 count is 2 now animation 13Faculty of Information Technology, Thai-Nichi Institute of Technology
  • 14. Trace while Loop, cont. int count = 0; while (count < 2) { System.out.println("Welcome to Java!"); count++; } (count < 2) is false since count is 2 now animation 14Faculty of Information Technology, Thai-Nichi Institute of Technology
  • 15. Trace while Loop int count = 0; while (count < 2) { System.out.println("Welcome to Java!"); count++; } The loop exits. Execute the next statement after the loop. animation 15Faculty of Information Technology, Thai-Nichi Institute of Technology
  • 16. 16 Example (Average.java) Faculty of Information Technology, Thai-Nichi Institute of Technology
  • 17. 17 Infinite Loops • Executing the statements in the body of a while loop must eventually make the condition false • If not, it is called an infinite loop, which will execute until the user interrupts the program • This is a common logical error • You should always double check the logic of a program to ensure that your loops will terminate Faculty of Information Technology, Thai-Nichi Institute of Technology
  • 18. 18 Infinite Loops • An example of an infinite loop: • This loop will continue executing until the user externally interrupts the program. int count = 1; while (count <= 25) { System.out.println(count); count = count - 1; } Faculty of Information Technology, Thai-Nichi Institute of Technology
  • 19. 19 Nested Loops • Similar to nested if statements, loops can be nested as well • That is, the body of a loop can contain another loop • For each iteration of the outer loop, the inner loop iterates completely Faculty of Information Technology, Thai-Nichi Institute of Technology
  • 20. 20 Nested Loops • How many times will the string "Here" be printed? count1 = 1; while (count1 <= 10) { count2 = 1; while (count2 <= 20) { System.out.println ("Here"); count2++; } count1++; } 10 * 20 = 200 Faculty of Information Technology, Thai-Nichi Institute of Technology
  • 22. Repetition with for loops • So far, repeating a statement is redundant: System.out.println("Homer says:"); System.out.println("I am so smart"); System.out.println("I am so smart"); System.out.println("I am so smart"); System.out.println("I am so smart"); System.out.println("S-M-R-T... I mean S-M-A-R-T"); • Java's for loop statement performs a task many times. System.out.println("Homer says:"); for (int i = 1; i <= 4; i++) { // repeat 4 times System.out.println("I am so smart"); } System.out.println("S-M-R-T... I mean S-M-A-R-T");
  • 23. for loop syntax for (initialization; test; update) { statement; statement; ... statement; } – Perform initialization once. – Repeat the following: • Check if the test is true. If not, stop. • Execute the statements. • Perform the update. body header
  • 24. Initialization for (int i = 1; i <= 6; i++) { System.out.println("I am so smart"); } • Tells Java what variable to use in the loop – Performed once as the loop begins – The variable is called a loop counter • can use any name, not just i • can start at any value, not just 1
  • 25. Test for (int i = 1; i <= 6; i++) { System.out.println("I am so smart"); } • Tests the loop counter variable against a limit – Uses comparison operators: < less than <= less than or equal to > greater than >= greater than or equal to
  • 26. Increment and decrement shortcuts to increase or decrease a variable's value by 1 Shorthand Equivalent longer version variable++; variable = variable+1; variable--; variable = variable - 1; int x = 2; x++; // x = x + 1; // x now stores 3 double gpa = 2.5; gpa--; // gpa = gpa - 1; // gpa now stores 1.5
  • 27. Modify-and-assign operators shortcuts to modify a variable's value Shorthand Equivalent longer version variable += value; variable = variable + value; variable -= value; variable = variable - value; variable *= value; variable = variable * value; variable /= value; variable = variable / value; variable %= value; variable = variable % value; x += 3; // x = x + 3; gpa -= 0.5; // gpa = gpa - 0.5; number *= 2; // number = number * 2;
  • 28. Repetition over a range System.out.println("1 squared = " + 1 * 1); System.out.println("2 squared = " + 2 * 2); System.out.println("3 squared = " + 3 * 3); System.out.println("4 squared = " + 4 * 4); System.out.println("5 squared = " + 5 * 5); System.out.println("6 squared = " + 6 * 6); – Intuition: "I want to print a line for each number from 1 to 6" • The for loop does exactly that! for (int i = 1; i <= 6; i++) { System.out.println(i + " squared = " + (i * i)); } – "For each integer i from 1 through 6, print ..."
  • 29. Loop walkthrough for (int i = 1; i <= 4; i++) { System.out.println(i + " squared = " + (i * i)); } System.out.println("Whoo!"); Output: 1 squared = 1 2 squared = 4 3 squared = 9 4 squared = 16 Whoo! 1 1 2 2 3 3 4 4 5 5
  • 30. Multi-line loop body System.out.println("+----+"); for (int i = 1; i <= 3; i++) { System.out.println(" /"); System.out.println("/ "); } System.out.println("+----+"); – Output: +----+ / / / / / / +----+
  • 31. Expressions for counter int highTemp = 5; for (int i = -3; i <= highTemp / 2; i++) { System.out.println(i * 1.8 + 32); } – Output: 26.6 28.4 30.2 32.0 33.8 35.6
  • 32. System.out.print • Prints without moving to a new line – allows you to print partial messages on the same line int highestTemp = 5; for (int i = -3; i <= highestTemp / 2; i++) { System.out.print((i * 1.8 + 32) + " "); } • Output: 26.6 28.4 30.2 32.0 33.8 35.6 • Concatenate " " to separate the numbers
  • 33. Counting down • The update can use -- to make the loop count down. – The test must say > instead of < System.out.print("T-minus "); for (int i = 10; i >= 1; i--) { System.out.print(i + ", "); } System.out.println("blastoff!"); System.out.println("The end."); – Output: T-minus 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, blastoff! The end.
  • 35. Nested loops • nested loop: A loop placed inside another loop. for (int i = 1; i <= 5; i++) { for (int j = 1; j <= 10; j++) { System.out.print("*"); } System.out.println(); // to end the line } • Output: ********** ********** ********** ********** ********** • The outer loop repeats 5 times; the inner one 10 times. – "sets and reps" exercise analogy
  • 36. Nested for loop exercise • What is the output of the following nested for loops? for (int i = 1; i <= 5; i++) { for (int j = 1; j <= i; j++) { System.out.print("*"); } System.out.println(); } • Output: * ** *** **** *****
  • 37. Nested for loop exercise • What is the output of the following nested for loops? for (int i = 1; i <= 5; i++) { for (int j = 1; j <= i; j++) { System.out.print(i); } System.out.println(); } • Output: 1 22 333 4444 55555
  • 38. Common errors • Both of the following sets of code produce infinite loops: for (int i = 1; i <= 5; i++) { for (int j = 1; i <= 10; j++) { System.out.print("*"); } System.out.println(); } for (int i = 1; i <= 5; i++) { for (int j = 1; j <= 10; i++) { System.out.print("*"); } System.out.println(); }
  • 39. Complex lines • What nested for loops produce the following output? ....1 ...2 ..3 .4 5 • We must build multiple complex lines of output using: – an outer "vertical" loop for each of the lines – inner "horizontal" loop(s) for the patterns within each line outer loop (loops 5 times because there are 5 lines) inner loop (repeated characters on each line)
  • 40. Outer and inner loop • First write the outer loop, from 1 to the number of lines. for (int line = 1; line <= 5; line++) { ... } • Now look at the line contents. Each line has a pattern: – some dots (0 dots on the last line), then a number ....1 ...2 ..3 .4 5 – Observation: the number of dots is related to the line number.
  • 41. Mapping loops to numbers for (int count = 1; count <= 5; count++) { System.out.print( ... ); } – What statement in the body would cause the loop to print: 4 7 10 13 16 for (int count = 1; count <= 5; count++) { System.out.print(3 * count + 1 + " "); }
  • 42. Loop tables • What statement in the body would cause the loop to print: 2 7 12 17 22 • To see patterns, make a table of count and the numbers. – Each time count goes up by 1, the number should go up by 5. – But count * 5 is too great by 3, so we subtract 3. count number to print 5 * count 1 2 5 2 7 10 3 12 15 4 17 20 5 22 25 5 * count - 3 2 7 12 17 22
  • 43. Loop tables question • What statement in the body would cause the loop to print: 17 13 9 5 1 • Let's create the loop table together. – Each time count goes up 1, the number printed should ... – But this multiple is off by a margin of ... count number to print 1 17 2 13 3 9 4 5 5 1 -4 * count -4 * count + 21 -4 17 -8 13 -12 9 -16 5 -20 1 -4 * count -4 -8 -12 -16 -20
  • 44. Nested for loop exercise • Make a table to represent any patterns on each line. ....1 ...2 ..3 .4 5 • To print a character multiple times, use a for loop. for (int j = 1; j <= 4; j++) { System.out.print("."); // 4 dots } line # of dots 1 4 2 3 3 2 4 1 5 0 -1 * line -1 -2 -3 -4 -5 -1 * line + 5 4 3 2 1 0
  • 45. Nested for loop solution • Answer: for (int line = 1; line <= 5; line++) { for (int j = 1; j <= (-1 * line + 5); j++) { System.out.print("."); } System.out.println(line); } • Output: ....1 ...2 ..3 .4 5
  • 46. Nested for loop exercise • What is the output of the following nested for loops? for (int line = 1; line <= 5; line++) { for (int j = 1; j <= (-1 * line + 5); j++) { System.out.print("."); } for (int k = 1; k <= line; k++) { System.out.print(line); } System.out.println(); } • Answer: ....1 ...22 ..333 .4444 55555
  • 47. Nested for loop exercise • Modify the previous code to produce this output: ....1 ...2. ..3.. .4... 5.... • Answer: for (int line = 1; line <= 5; line++) { for (int j = 1; j <= (-1 * line + 5); j++) { System.out.print("."); } System.out.print(line); for (int j = 1; j <= (line - 1); j++) { System.out.print("."); } System.out.println(); }