04_visual_intro_functions
04_visual_intro_functions
I. Lines between coordinates. II. Moving pen from a start point. Drawing regular shapes
(x2, y2)
Turn angle x
(x3, y3)
(x1, y1) (x1, y1)
def draw_roof():
def draw_rect(): draw_triangle()
______
______ def draw_house():
draw_flat()
draw_roof()
Reusing code in different places
Functions
def draw_triangle():
______
______
def draw_rect():
______
______
def draw_flat():
draw_rect() def draw_house(): def draw_apartment_3(): def draw_apartment_5():
draw_flat() draw_flat() draw_flat()
def draw_roof():
draw_roof() draw_flat() draw_flat()
draw_triangle()
draw_flat() draw_flat()
draw_roof() draw_flat()
draw_flat()
draw_roof()
Assume drawings are from ground to upwards
apartment_3()
vs
…
apartment(2) apartment(5)
apartment_5() apartment(3)
Let’s make it parametric.
Functions Assume that the drawings are from ground to draw_apartment(1)
upwards
def draw_triangle():
______
______
draw_apartment(2)
def draw_rectangle():
______
flat_count ?
______
def draw_flat():
draw_rect()
def draw_apartment(flat_count):
def draw_roof(): draw_apartment(3)
draw_triangle() for i in range(flat_count):
draw_flat()
draw_roof()
draw_castle_2() draw_castle_2()
draw_apartment_3() draw_apartment(3)
move to right move to right
draw_apartment_2() draw_apartment(2)
move to right move to right
draw_house() draw_apartment(1)
move to right move to right
draw_apartment_2() draw_apartment(2)
move to right move to right
draw_apartment_3() vs draw_apartment(3)
draw_apartment_3() draw_apartment()
draw_apartment_2()
draw_house()
Abstraction, Reusability, Modularity
draw_triangle()
or
draw_roof()
draw_rect()
or
draw_flat()
draw_street_view()
draw_house()
draw_apartment(flat_count)
draw_castle() draw_church()
9
We can deal with more complex and higher level structures or
problems