41
Loops CS105 | Loops 1 Loop Statements: while & for loop Textbook Readings: Chapter 4, Examples 4-5, 4-6, 4-7, 4-8, 4-9, 4-10, 4-11, 4-12, 4-13 Chapter 5, Examples 5-22, 5-23 Coding Train Videos: 4.1: while and for Loops https://youtu.be/cnRD9o6odjk 4.2: Nested Loops https://youtu.be/1c1_TMdf8b8

Loop Statements: while & for loop Loops · Four Loop Questions CS105 | Loops 15 1. What do I want to repeat? -a rect 2. What do I want to change each time? -the y position of the

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Loop Statements: while & for loop Loops · Four Loop Questions CS105 | Loops 15 1. What do I want to repeat? -a rect 2. What do I want to change each time? -the y position of the

Loops

CS105 | Loops 1

Loop Statements: while & for loop

Textbook Readings:Chapter 4, Examples 4-5, 4-6, 4-7, 4-8, 4-9, 4-10, 4-11, 4-12, 4-13 Chapter 5, Examples 5-22, 5-23

Coding Train Videos:4.1: while and for Loops https://youtu.be/cnRD9o6odjk 4.2: Nested Loops https://youtu.be/1c1_TMdf8b8

Page 2: Loop Statements: while & for loop Loops · Four Loop Questions CS105 | Loops 15 1. What do I want to repeat? -a rect 2. What do I want to change each time? -the y position of the

Which of the instruction sets is needed to create this?

CS105 | Conditionals 2

(a) if (mouseY > 50 && mouseX > 50) { fill("#0000FF"); // blue }(b) if (mouseX > 50 && mouseY > 50) { fill("#FF0000"); // red }(c) if (mouseY > 50 && mouseX > 50) { noFill(); } (d) if (mouseX > 50 && mouseY < 50) { fill("#FF0000"); // red }(e) if (mouseY < 50 && mouseX > 50) { fill("#0000FF"); // blue }(f) if (mouseX < 50 && mouseY > 50) { noFill(); }

The canvas size is 100 x 100.

A (a) (b) (c) B (d) (e) (f) C (a) (d) (f) D (b) (e) (f)

NOTE: Find the best answer.

Page 3: Loop Statements: while & for loop Loops · Four Loop Questions CS105 | Loops 15 1. What do I want to repeat? -a rect 2. What do I want to change each time? -the y position of the

What is loop?

3Credit: https://www.youtube.com/watch?v=tZyUxqBvMBE (0:38 - 4:03)

Page 4: Loop Statements: while & for loop Loops · Four Loop Questions CS105 | Loops 15 1. What do I want to repeat? -a rect 2. What do I want to change each time? -the y position of the

What is loop?

4Credit: https://joyvernon.com/, http://www.quickmeme.com/meme/3578ze

▪ Loop refers to a process that repeats

Page 5: Loop Statements: while & for loop Loops · Four Loop Questions CS105 | Loops 15 1. What do I want to repeat? -a rect 2. What do I want to change each time? -the y position of the

Thus draw() is also a loop

CS105 | Interaction 5

runs once

runs continuously

Page 6: Loop Statements: while & for loop Loops · Four Loop Questions CS105 | Loops 15 1. What do I want to repeat? -a rect 2. What do I want to change each time? -the y position of the

When does loop stop?

6Credit: Dr. Strange

1: Dormammu, I have come to bargain!

2: Dormammu, I have come to bargain!

3: Dormammu, I have come to bargain!

While Dormammu refuses,

Dr. Strange says,

“I have come to

bargain!”

Dr. Strange dies.

Page 7: Loop Statements: while & for loop Loops · Four Loop Questions CS105 | Loops 15 1. What do I want to repeat? -a rect 2. What do I want to change each time? -the y position of the

Loop repeats while condition is true

7

While Dormammu refuses ,

Dr. Strange says, “I have come to bargain!”

Dr. Strange dies.

Page 8: Loop Statements: while & for loop Loops · Four Loop Questions CS105 | Loops 15 1. What do I want to repeat? -a rect 2. What do I want to change each time? -the y position of the

Loop stops when condition becomes false

8

While Dormammu refuses ,

Dr. Strange says, “I have come to bargain!”

Dr. Strange dies.

Page 9: Loop Statements: while & for loop Loops · Four Loop Questions CS105 | Loops 15 1. What do I want to repeat? -a rect 2. What do I want to change each time? -the y position of the

So two things to remember

9

▪ Loop…

- repeats while condition is true

- stops when condition becomes false

Page 10: Loop Statements: while & for loop Loops · Four Loop Questions CS105 | Loops 15 1. What do I want to repeat? -a rect 2. What do I want to change each time? -the y position of the

Thus a while loop statement is expressed as follows

10

testexpression

code block

}

repeat

condition

{

Page 11: Loop Statements: while & for loop Loops · Four Loop Questions CS105 | Loops 15 1. What do I want to repeat? -a rect 2. What do I want to change each time? -the y position of the

For example, we can express “endless looped time” as

11

code block

}

repeat

condition testexpression

print(“I have come to bargain!”);

dies();

dormammu_refuses {

Page 12: Loop Statements: while & for loop Loops · Four Loop Questions CS105 | Loops 15 1. What do I want to repeat? -a rect 2. What do I want to change each time? -the y position of the

Why use loop?

12

▪ It does repetitive tasks for us

Page 13: Loop Statements: while & for loop Loops · Four Loop Questions CS105 | Loops 15 1. What do I want to repeat? -a rect 2. What do I want to change each time? -the y position of the

Untitled (1969),Donald Judd

CS105 | Loops 13

Page 14: Loop Statements: while & for loop Loops · Four Loop Questions CS105 | Loops 15 1. What do I want to repeat? -a rect 2. What do I want to change each time? -the y position of the

judd

CS105 | Loops 14

while (expression) { statements}

https://editor.p5js.org/sanghosuh/sketches/2GkYW5J7

Starter: https://editor.p5js.org/sanghosuh/sketches/NG7KcM0a

Page 15: Loop Statements: while & for loop Loops · Four Loop Questions CS105 | Loops 15 1. What do I want to repeat? -a rect 2. What do I want to change each time? -the y position of the

Four Loop Questions

CS105 | Loops 15

1. What do I want to repeat? - a rect

2. What do I want to change each time? - the y position of the rect

3. Where does it start, how does it change?- start at y = 10, draw a rect every 20 pixels

4. How long should it repeat?- until it reaches the bottom of the canvas

while ( ) {

}

Page 16: Loop Statements: while & for loop Loops · Four Loop Questions CS105 | Loops 15 1. What do I want to repeat? -a rect 2. What do I want to change each time? -the y position of the

Four Loop Questions

CS105 | Loops 16

1. What do I want to repeat? - a rect

2. What do I want to change each time? - the y position of the rect

3. Where does it start, how does it change?- start at y = 10, draw a rect every 20 pixels

4. How long should it repeat?- until it reaches the bottom of the canvas

while ( ) {

}

Page 17: Loop Statements: while & for loop Loops · Four Loop Questions CS105 | Loops 15 1. What do I want to repeat? -a rect 2. What do I want to change each time? -the y position of the

code block

update

testexpression

initialisation

Which we express as follows

CS105 | Loops 17

Page 18: Loop Statements: while & for loop Loops · Four Loop Questions CS105 | Loops 15 1. What do I want to repeat? -a rect 2. What do I want to change each time? -the y position of the

See “10 Loops (trace)”

CS105 | Loops 18

Page 19: Loop Statements: while & for loop Loops · Four Loop Questions CS105 | Loops 15 1. What do I want to repeat? -a rect 2. What do I want to change each time? -the y position of the

Chrome Debugger Demo

CS105 | Loops 19

▪ Watch the loop execute using an “interactive debugger”

Guide to using Chrome Debuggerhttps://javascript.info/debugging-chrome

Code to debug (but run this code from Processing IDE):https://editor.p5js.org/cs105/sketches/VAeK60UBn

Page 20: Loop Statements: while & for loop Loops · Four Loop Questions CS105 | Loops 15 1. What do I want to repeat? -a rect 2. What do I want to change each time? -the y position of the

spaced-lines

CS105 | Loops 20

draw lines all the way across canvas with equal spacing (20) using:

• line position variable

Variations:

• margin

• right to left

• calculate spacing based on width to draw exact number of lines.

https://editor.p5js.org/cs105/sketches/OmmqVprVz

Page 21: Loop Statements: while & for loop Loops · Four Loop Questions CS105 | Loops 15 1. What do I want to repeat? -a rect 2. What do I want to change each time? -the y position of the

number-of-lines

CS105 | Loops 21

draws an exact number of lines (7) with fixed spacing (20) using:

• counter variable(= “integer variable used to keep track of number of times piece of code is executed”)

• line position variable

https://editor.p5js.org/cs105/sketches/ZyPAKsioE

Page 22: Loop Statements: while & for loop Loops · Four Loop Questions CS105 | Loops 15 1. What do I want to repeat? -a rect 2. What do I want to change each time? -the y position of the

draw() frames vs. while loop iterations

CS105 | Loops 22

▪ the code block in draw is repeated every frame

▪ the code block in while is repeated every loop iteration

function draw() {

while (x < width) {

}

}

loo

p it

erat

ion

s

fram

es

Page 23: Loop Statements: while & for loop Loops · Four Loop Questions CS105 | Loops 15 1. What do I want to repeat? -a rect 2. What do I want to change each time? -the y position of the

What do you see after 5 frames?

CS105 | Loops 23

let x = 0;

function draw() { background(200); x = 20; while (x < width) { ellipse(x, 50, 20, 20); x = x + 20; }}

A B

C D

Page 24: Loop Statements: while & for loop Loops · Four Loop Questions CS105 | Loops 15 1. What do I want to repeat? -a rect 2. What do I want to change each time? -the y position of the

What do you see after 5 frames?

CS105 | Loops 24

let x = 20;

function draw() { background(200); while (x < width) { ellipse(x, 50, 20, 20); x = x + 20; }}

A B

C D

Page 25: Loop Statements: while & for loop Loops · Four Loop Questions CS105 | Loops 15 1. What do I want to repeat? -a rect 2. What do I want to change each time? -the y position of the

What do you see after 5 frames?

CS105 | Loops 25

let x = 0;

function draw() { background(200); x = 20; while (x < width) { ellipse(x, 50, 20, 20); } x = x + 20;}

A B

C D

This is an infinite loop.EThe answer is E, but why? 🡪

Page 26: Loop Statements: while & for loop Loops · Four Loop Questions CS105 | Loops 15 1. What do I want to repeat? -a rect 2. What do I want to change each time? -the y position of the

Common Logic Errors Leading to Infinite Loops

CS105 | Loops 26

x = 0;while (x < width); { line(x, 10, x, height - 10); x = x + 10;}

Adding a semicolon after the boolean expression means no code block.

Without a code block, the loop variable won't update.

The while statement will never end, and the program will freeze (infinite loop).

Fix this by removing the semicolon after the boolean expression.

x = 0;while (x < width) { line(x, 10, x, height - 10); x = x - 10;}

The loop variable is updated such that the loop condition will always be true.

The while statement will never end, and the program will freeze (infinite loop).

Fix this by ensuring that your code eventually makes the loop repetition expression false.

Code: https://editor.p5js.org/sanghosuh/sketches/fBeFS3zw(Be careful! Running this program will result in your browser crashing)

Page 27: Loop Statements: while & for loop Loops · Four Loop Questions CS105 | Loops 15 1. What do I want to repeat? -a rect 2. What do I want to change each time? -the y position of the

Save your work because infinite loop can delete it

CS105 | Loops 27

▪ Online editor or Processing IDE can crash if your program has infinite loop

▪ You will accidentally write infinite loops

- Make sure to save your work frequently

Page 28: Loop Statements: while & for loop Loops · Four Loop Questions CS105 | Loops 15 1. What do I want to repeat? -a rect 2. What do I want to change each time? -the y position of the

Debugging Loops

CS105 | Loops 28

▪ Test a single loop operation first (without a loop)

▪ Simplify the loop operation

▪ Slow down draw frames with frameRate(1)

▪ Use print()

x = 0;print("start loop"); // debugwhile (x < width) { print("loop", x); // debug line(x, 10, x, height - 10); x = x + 10;}print("done loop"); // debug

Page 29: Loop Statements: while & for loop Loops · Four Loop Questions CS105 | Loops 15 1. What do I want to repeat? -a rect 2. What do I want to change each time? -the y position of the

gradient

CS105 | Loops 29

create a vertical grayscale gradient

example of varying more than one variable

https://editor.p5js.org/cs105/sketches/U_fvzbRqx

Page 30: Loop Statements: while & for loop Loops · Four Loop Questions CS105 | Loops 15 1. What do I want to repeat? -a rect 2. What do I want to change each time? -the y position of the

(demos) convert while loop to for loop

CS105 | Loops 30

let i = 0;function setup() { while (i < 10) { print("while loop ", i); i = i + 1; }}

function setup() {

for (let i = 0; i < 10; i++) {

print("for loop ", i);

}

}

Page 31: Loop Statements: while & for loop Loops · Four Loop Questions CS105 | Loops 15 1. What do I want to repeat? -a rect 2. What do I want to change each time? -the y position of the

Assignment Operator “Short Forms”

CS105 | Loops 31

These all add 1 to x (they are all equivalent):x = x + 1;

x += 1;

x++;

These both add 5 to x (they are both equivalent):x = x + 5;

x += 5;

Other examples// same as x = x + 10 * y;

x += 10 * y;

// same as x = x + random(-2, 2);

x += random(-2, 2);

increment operator

Page 32: Loop Statements: while & for loop Loops · Four Loop Questions CS105 | Loops 15 1. What do I want to repeat? -a rect 2. What do I want to change each time? -the y position of the

More Assignment Operator “Short Forms”

CS105 | Loops 32

x--;

x -= 10; // subtract 10 from x

x *= 10; // multiply x by 10

x /= 10; // divide x by 10

decrement operator

coding

Page 33: Loop Statements: while & for loop Loops · Four Loop Questions CS105 | Loops 15 1. What do I want to repeat? -a rect 2. What do I want to change each time? -the y position of the

updatetest

expression

code block

initialization

for (let y = 10; y < height; y += 20) { rect(50, y, 50, 10);}

Anatomy of a For Loop

CS105 | Loops 33

Page 34: Loop Statements: while & for loop Loops · Four Loop Questions CS105 | Loops 15 1. What do I want to repeat? -a rect 2. What do I want to change each time? -the y position of the

When to use for or while loop?

CS105 | Loops 34

for is a short form for while, and they’re interchangeable.

(You can always use while if you want)

update

testexpression

initialization

updateinitializationtest expression

Page 35: Loop Statements: while & for loop Loops · Four Loop Questions CS105 | Loops 15 1. What do I want to repeat? -a rect 2. What do I want to change each time? -the y position of the

When to use for or while loop?

CS105 | Loops 35

Both are functionally equivalent, but sometimes one is easier to use in certain cases:

▪ Use for to loop an exact number of repetitions:- I want 10 pacmen- I want 3 lines

▪ Use for to update by same amount:- I want to count by 10 from 0 to 100- I want lines spaced 10 pixels apart the width of the canvas

▪ Use while to update by different amounts and you don’t need a predetermined number of repetitions:- I want lines spaced randomly 2 to 10 pixels apart over the whole

width of the canvas

Page 36: Loop Statements: while & for loop Loops · Four Loop Questions CS105 | Loops 15 1. What do I want to repeat? -a rect 2. What do I want to change each time? -the y position of the

When to use for or while loop?

36Credit: codigoespagueti

I went forward in time, I saw 14,000,605 possible outcomes.

▪ Do you know how many times the loop should repeat?

- if no, then while loop

- if yes, then for loop

Page 37: Loop Statements: while & for loop Loops · Four Loop Questions CS105 | Loops 15 1. What do I want to repeat? -a rect 2. What do I want to change each time? -the y position of the

number-of-lines-for

CS105 | Loops 37

Use for to loop an exact number of times(a for loop version of number-of-lines)

“what do I want to change?” -> counter variable

// position variable x = 0;

for (let i = 0; i < num; i++) { line(x, 10, x, height - 10); x += spacing; }

https://editor.p5js.org/cs105/sketches/WWV7CJ-MI

Starter: https://editor.p5js.org/cs105/sketches/ZyPAKsioE

Page 38: Loop Statements: while & for loop Loops · Four Loop Questions CS105 | Loops 15 1. What do I want to repeat? -a rect 2. What do I want to change each time? -the y position of the

spaced-lines-for

CS105 | Loops 38

Use for to update by same amount(a for loop version of spaced-lines)

“what do I want to change?” -> x position of lines

for (let x = 0; x < width; x += spacing) { line(x, 10, x, height - 10);}

https://editor.p5js.org/cs105/sketches/MtjMGylBD

Starter: https://editor.p5js.org/cs105/sketches/OmmqVprVz

Page 39: Loop Statements: while & for loop Loops · Four Loop Questions CS105 | Loops 15 1. What do I want to repeat? -a rect 2. What do I want to change each time? -the y position of the

Summary

39

▪ Two types of loops

- while loop

- for loop

▪ Debugging loops

▪ Demos on how to use while and for loop

▪ When to use for or while loop

- they are interchangeable

Page 40: Loop Statements: while & for loop Loops · Four Loop Questions CS105 | Loops 15 1. What do I want to repeat? -a rect 2. What do I want to change each time? -the y position of the

Survey

40

▪ “Is there something we can do to help?”

▪ Bonus 1% for completing the survey by this Friday 11:59 pm:

https://forms.gle/re3dcZmuhqqtYTg17

▪ It should take approximately 5 min. to complete

Page 41: Loop Statements: while & for loop Loops · Four Loop Questions CS105 | Loops 15 1. What do I want to repeat? -a rect 2. What do I want to change each time? -the y position of the

What do you see after 5 frames?

CS105 | Loops 41

let i;let x;

function draw() { background(200); i = 0; x = 20; while (i < 4) { ellipse(x, 50, 20, 20); i = i + 1; x = x + 20; }}

A B

C D

This is an infinite loop.E