functions + control flow - stanford university · functions + control flow cs106ap lecture 2....

126
Functions + Control Flow CS106AP Lecture 2

Upload: others

Post on 24-Jun-2020

13 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Functions + Control FlowCS106AP Lecture 2

Page 2: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

RoadmapProgramming Basics

The Console Images

Data structures

MidtermGraphics

Object-Oriented Programming

Everyday Python

Life after CS106AP!

Day 1!

Page 3: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

RoadmapThe Console

Images

Data structures

MidtermGraphics

Object-Oriented Programming

Everyday Python

Life after CS106AP!

Programming Basics

Karel the Robot

Decomposition + Functions

VariablesControl FlowDay 1!

Page 4: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Today’s questions

How do we teach Karel new things?

How do we handle different worlds?

Page 5: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Today’s topics

1. Karel review

2. Karel functions

3. Control flowConditionals (if)Loops (while)

4. What’s next?

Page 6: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Remember Karel?

Page 7: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

This is Karel’s world

walls

beepersstreets(rows)

avenues(columns)

corners(intersections)

Page 8: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

What Karel can do

move()

turn_left()

put_beeper()

pick_beeper()

Page 9: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

What Karel can do

move()

Makes Karel move forward one square in the direction it is facing.

Errors if there is a wall in front of Karel.

begin end

Page 10: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

What Karel can do

turn_left()

Makes Karel turn left.

begin end

Page 11: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

What Karel can do

put_beeper()

Makes Karel place a beeper on the corner where it is currently standing.

You can place multiple beepers on any given corner.begin end

Page 12: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

What Karel can do

pick_beeper()

Makes Karel pick up a beeper from the corner where it is currently standing.

Errors if there are no beepers present on the corner.begin end

Page 13: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Karel demo!

Page 14: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Karel Goes Home

begin end

Page 15: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Karel Goes Home

Page 16: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Karel Goes Home

turn_left()

Page 17: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Karel Goes Home

move()

Page 18: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Karel Goes Home

turn_left()turn_left()turn_left()

turning right

Page 19: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Karel Goes Home

move()

Page 20: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Karel Goes Home

turn_left()turn_left()turn_left()

Page 21: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Karel Goes Home

move()

Page 22: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Karel Goes Home

turn_left()

Page 23: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Karel Goes Home

move()

Page 24: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Karel Goes Home

pick_beeper()

Page 25: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Karel Goes Home (solution)

def main():# Climb wallturn_left()move()turn_left()turn_left()turn_left()move()turn_left()turn_left()turn_left()move()

# Go hometurn_left()move()pick_beeper()

Page 26: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Karel Goes Home (solution)

def main():# Climb wallturn_left()move()turn_left()turn_left()turn_left()move()turn_left()turn_left()turn_left()move()

# Go hometurn_left()move()pick_beeper()

Turning right is tedious!

Page 27: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

How do we teach Karel new commands?

Page 28: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

How do we teach Karel new commands?

Functions!

Page 29: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

functionA smaller part of your program that solves a

specific sub-problem

Definition

Page 30: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Functions

● Smaller parts of your program that solve specific sub-problems○ By decomposing your program into many small

functions, your code becomes easier to read.

Page 31: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Functions

● Smaller parts of your program that solve a specific sub-problems

● A function has two parts:○ The function definition

○ One or more function calls

Page 32: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Functions

● Smaller parts of your program that solve a specific sub-problems

● A function has two parts:○ The function definition

What does the new Karel command do?

○ One or more function calls

Page 33: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Functions

● Smaller parts of your program that solve a specific sub-problems

● A function has two parts:○ The function definition

What does the new Karel command do?

○ One or more function callsWhere you tell Karel to actually do the command

Page 34: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Let’s revisit KarelGoesHome.py[demo]

Page 35: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Turning rightdef turn_right():

“““Makes Karel turn right.”””turn_left()turn_left()turn_left()

Page 36: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Turning rightdef turn_right():

“““Makes Karel turn right.”””turn_left()turn_left()turn_left()

def main():...turn_right()...

Page 37: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Turning rightdef turn_right():

“““Makes Karel turn right.”””turn_left()turn_left()turn_left()

def main():...turn_right()...

Function definitionWhat does the new Karel command do?

Page 38: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Turning rightdef turn_right():

“““Makes Karel turn right.”””turn_left()turn_left()turn_left()

def main():...turn_right()...

Function callWhere you tell Karel to actually do the command

Page 39: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Turning rightdef turn_right():

“““Makes Karel turn right.”””turn_left()turn_left()turn_left()

def main():...turn_right()...

Function callWhere you tell Karel to actually do the command

“Go find the function definition, do the commands inside, and come back when done.”

Page 40: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

General structure of functions[whiteboard]

Page 41: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

The structure of a function

def my_function_name():“““Write a good description for your function here.”””# Put other Karel commands here

...def caller_function():

my_function_name() # Function call

Page 42: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

The structure of a function

def my_function_name():“““Write a good description for your function here.”””# Put other Karel commands here

...def caller_function():

my_function_name() # Function call

function [header] comment

Comment that describes what a function does using

“““...”””

Definition

Page 43: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

The structure of a function

def my_function_name():“““Write a good description for your function here.”””# Put other Karel commands here

...def caller_function():

my_function_name() # Function call

inline commentsComments that describe a specific, complex block of

code using #

Definition

Page 44: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

The structure of a function

def my_function_name():“““Write a good description for your function here.”””# Put other Karel commands here

...def caller_function():

my_function_name() # Function call

Make sure lines inside each function are indented

Page 45: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

The structure of a function

def my_function_name():“““Write a good description for your function here.”””# Put other Karel commands here

...def caller_function():

my_function_name() # Function call

Make sure lines inside each function are indented

indentationEach level of indentation should be four spaces.

Style note

Page 46: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

The structure of a function

def my_function_name():“““Write a good description for your function here.”””# Put other Karel commands here

...def caller_function():

my_function_name() # Function call

function namesSeparate words with underscores and use verbs

Style note

Page 47: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

The structure of a function

def my_function_name():“““Write a good description for your function here.”””# Put other Karel commands here

...def caller_function():

my_function_name() # Function call

Note: The caller function doesn’t have to be main()!

Page 48: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Think/Pair/Share:Write a function turn_around() that makes Karel rotate 180 degrees.

Page 49: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Common issues[demo]

Page 50: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

“Syntax” errors (i.e. typos)

● Forgetting `()` or `:` in the function definition○ Line number shows up in the error!

● Forgetting `()` in the function call○ You get a warning (yellow underlining) instead of an

error here

Page 51: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

“Syntax” errors (i.e. typos)

● Forgetting `()` or `:` in the function definition○ Line number shows up in the error!

● Forgetting `()` in the function call○ You get a warning (yellow underlining) instead of an

error here

These are super common, even for professional programmers!

Page 52: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Common issues

Page 53: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Common issuesbugs

Page 54: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

debuggingThe process of finding and fixing errors

(syntactical or logical) in your code.

Definition

Page 55: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

debuggingThe process of finding and fixing errors

(syntactical or logical) in your code.

Definition

Most of your time will be spent doing this!

Page 56: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

How do we handle different worlds?

Page 57: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

How do we handle different worlds?

Control flow!

Page 58: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

control flow structuresCode features that affect the order, or flow, in which the lines of code in a program happen

Definition

Page 59: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Conditionals(if statements)

Page 60: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

If statements

if ___________:

# Do something

Page 61: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

If statements

if ___________:

# Do something

Condition

Page 62: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

If statements

if ___________:

# Do something

Condition(any boolean expression)

Page 63: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

If statements

if ___________:

# Do something

Condition(any boolean expression)

boolean expressionA code snippet that evaluates to True or False

Definition

Page 64: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

If statements

if ___________:

# Do something

Condition

True False

Page 65: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

If statements

if ___________:

# Do something

Condition

True False

Page 66: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

If statements

if ___________:

# Do something

Condition

True False

Page 67: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

If statements

if ___________:

# Do something

Page 68: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

If statements

if ___________:

# Do something

Page 69: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

If statements

if ___________:

# Do something

Page 70: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

If statements

if the light is red:

Stop

Page 71: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Let’s bring it back to Karel: move_safely()[demo]

Page 72: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

General structure of if statements[whiteboard]

Page 73: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

The structure of an if statement

if boolean expression:

# Do something when condition is True

Page 74: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

The structure of an if statement

if boolean expression:

# Do something when condition is True

Make sure lines inside the if statement are indented!

Page 75: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Boolean expressions in Karel

Page 76: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Karel functions that evaluate to boolean expressions

front_is_clear() Is there no wall in front of Karel?

left_is_clear() Is there no wall to Karel’s left?

right_is_clear() Is there no wall to Karel’s right?

on_beeper() Is there a beeper on the corner where Karel is standing?

facing_north() Is Karel facing north?

facing_south() Is Karel facing south?

facing_east() Is Karel facing east?

facing_west() Is Karel facing west?

Page 77: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Karel functions that evaluate to boolean expressions

● These built-in Karel functions evaluate to:○ True if the answer to the corresponding question is “yes”○ False if the answer to the corresponding question is “no”

● You can find all of these in the Karel Reference Guide on the course website.

Page 78: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Loops(while loops)

Page 79: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Before we had if statements...

if ___________:

# Do something

Page 80: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Before we had if statements...

if ___________:

# Do something

What if we want something to happen multiple times?

Page 81: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

While loops

while ___________:

# Do something

Page 82: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

While loops

while ___________:

# Do something

Condition

Page 83: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

While loops

while ___________:

# Do something

Condition

True False

Page 84: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

While loops

while ___________:

# Do something

Condition

True False

repeat if true

Page 85: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

While loops

while ___________:

# Do something

Condition

True False

Page 86: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

While loops

while ___________:

# Do something

Page 87: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

While loops

while road is clear:

Drive forward

Page 88: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Let’s bring it back to Karel:travel_row()[demo]

Page 89: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

General structure of while loops[whiteboard]

Page 90: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

The structure of a while loop

while boolean expression:

# Do something while condition is True

Page 91: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

The structure of a while loop

while boolean expression:

# Do something while condition is True

Make sure lines inside the if statement are indented!

Page 92: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Let’s bring it back to Karel:travel_row()

Page 93: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Let’s bring it back to Karel:travel_row()

Page 94: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Let’s bring it back to Karel:make_beeper_row()[demo]

Page 95: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

fencepost problem (off-by-one bug)An error in which your code performs a task

one too many or too few times.

Definition

Page 96: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

fencepost problem (off-by-one bug)An error in which your code performs a task

one too many or too few times.

Definition

Why?

Page 97: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Slide courtesy of Chris Piech

Page 98: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

What if some corners already have beepers?

Page 99: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

What is some corners already have beepers?

Page 100: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Your turn to try!make_beeper_row() (V2)(tomorrow)

Page 101: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

What if some corners already have beepers?

● Combine what we know about if and while!

● Potentially useful:○ on_beeper()○ not

Page 102: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

While loop summary(and misconceptions)

Page 103: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

while loop summary

● All lines inside the while loop will run if the condition is true

Page 104: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

while loop summary

● All lines inside the while loop will run if the condition is true

● Lines inside the while loop happen one at a time and in order

Page 105: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

while loop summary

● All lines inside the while loop will run if the condition is true

● Lines inside the while loop happen one at a time and in order

● The condition is checked again only after all of the lines have run

Page 106: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

while loop summary

● All lines inside the while loop will run if the condition is true

● Lines inside the while loop happen one at a time and in order

● The condition is checked again only after all of the lines have run

It’s a very common misconception to expect the while loop to stop in the middle when the condition is no longer true!

Page 107: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

while loop summary

● All lines inside the while loop will run if the condition is true

● Lines inside the while loop happen one at a time and in order

● The condition is checked again only after all of the lines have run

● It is possible for the while loop body to run 0 times!○ Just like with if statements

Page 108: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Today’s topics

1. Karel review

2. Karel functions

3. Control flowConditionals (if)Loops (while)

4. What’s next?

Page 109: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

What’s next?

Page 110: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

RoadmapThe Console

Images

Data structures

MidtermGraphics

Object-Oriented Programming

Everyday Python

Life after CS106AP!

Programming Basics

Karel the Robot

Decomposition + Functions

VariablesControl FlowDay 1!

Page 111: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

RoadmapThe Console

Images

Data structures

MidtermGraphics

Object-Oriented Programming

Everyday Python

Life after CS106AP!

Programming Basics

Karel the Robot

Decomposition + Functions

VariablesControl FlowDay 1!

Page 112: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

RoadmapThe Console

Images

Data structures

MidtermGraphics

Object-Oriented Programming

Everyday Python

Life after CS106AP!

Programming Basics

Karel the Robot

Decomposition + Functions

VariablesControl FlowDay 1!

Page 113: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Tomorrow...

● Focus on writing good functions and good programs

● Practice breaking down complex Karel problems○ Good homework practice○ Bring your laptops!

● More examples of how Karel can represent real-world problems

Page 114: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Extra Slides(will cover tomorrow!)

Page 115: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Your turn to try!make_beeper_row() (V2)

Page 116: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

What if some corners already have beepers?

● Combine what we know about if and while!

● Potentially useful:○ on_beeper()○ not

Page 117: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

What if some corners already have beepers?

● Combine what we know about if and while!

● Potentially useful:○ on_beeper()○ not

Write your code in the MakeBeeperRowKarel.py file in the pycharm_intro folder you downloaded.

Page 118: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Common issuesbugs

Page 119: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Common bugs

● Forgetting not

Page 120: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Common bugs

● Forgetting not

● Forgetting an if statement around the first put_beeper()

Page 121: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Common bugs

● Forgetting not

● Forgetting an if statement around the first put_beeper()

● Forgetting to call your function!

Page 122: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Common bugs

● Forgetting not

● Forgetting an if statement around the first put_beeper()

● Forgetting to call your function!

● Getting stuck in an infinite loop

Page 123: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Common bugs

● Forgetting not

● Forgetting an if statement around the first put_beeper()

● Forgetting to call your function!

● Getting stuck in an infinite loop infinite loopWhen your code gets stuck inside a loop because the condition never

evaluates to false

Definition

Page 124: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

Common bugs

● Forgetting not

● Forgetting an if statement around the first put_beeper()

● Forgetting to call your function!

● Getting stuck in an infinite loop

Page 125: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

While loop summary(and misconceptions)

Page 126: Functions + Control Flow - Stanford University · Functions + Control Flow CS106AP Lecture 2. Roadmap Programming Basics The Console Images Data structures Midterm ... Variables Control

while loop summary

● All lines inside the while loop will run if the condition is true

● Lines inside the while loop happen one at a time and in order

● The condition is checked again only after all of the lines have run

● It is possible for the while loop body to run 0 times!○ Just like with if statements

● Beware of infinite loops!