chapter 6 functions
DESCRIPTION
Chapter 6 Functions. Opening Problem. Find the sum of integers from 1 to 10, from 20 to 37, and from 35 to 49, respectively. Problem. sum = 0 for i in range(1, 10): sum += i print("Sum from 1 to 10 is", sum) sum = 0 for i in range(20, 37): sum += i - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/1.jpg)
1© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
Chapter 6 Functions
![Page 2: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/2.jpg)
2© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
Opening Problem
Find the sum of integers from 1 to 10, from 20 to 37, and from 35 to 49, respectively.
![Page 3: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/3.jpg)
3© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
Problem
sum = 0for i in range(1, 10): sum += iprint("Sum from 1 to 10 is", sum)
sum = 0for i in range(20, 37): sum += iprint("Sum from 20 to 37 is", sum)
sum = 0for i in range(35, 49): sum += iprint("Sum from 35 to 49 is", sum)
![Page 4: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/4.jpg)
4© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
Problem
sum = 0for i in range(1, 10): sum += iprint("Sum from 1 to 10 is", sum)
sum = 0for i in range(20, 37): sum += iprint("Sum from 20 to 37 is", sum)
sum = 0for i in range(35, 49): sum += iprint("Sum from 35 to 49 is", sum)
![Page 5: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/5.jpg)
5© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
Solutiondef sum(i1, i2): result = 0 for i in range(i1, i2): result += i return result
def main(): print("Sum from 1 to 10 is", sum(1, 10)) print("Sum from 20 to 37 is", sum(20, 37)) print("Sum from 35 to 49 is", sum(35, 49))
main() # Call the main function
![Page 6: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/6.jpg)
6© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
Objectives To define functions (§6.2). To invoke value-returning functions (§6.3). To invoke functions that does not return a value (§6.4). To pass arguments by values (§6.5). To pass arguments by values (§6.6). To develop reusable code that is modular, easy to read, easy to
debug, and easy to maintain (§6.7). To create modules for reusing functions (§§6.7-6.8). To determine the scope of variables (§6.9). To define functions with default arguments (§6.10). To return multiple values from a function (§6.11). To apply the concept of function abstraction in software
development (§6.12). To design and implement functions using stepwise refinement
(§6.13). To simplify drawing programs using functions (§6.14).
![Page 7: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/7.jpg)
7© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
Defining Functions
A function is a collection of statements that are grouped together to perform an operation.
def max(num1, num2):
if num1 > num2: result = num1 else: result = num2 return result
function name formal parameters
return value
function body
function header
Define a function Invoke a function
z = max(x, y)
actual parameters (arguments)
![Page 8: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/8.jpg)
8© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
Function HeaderA function contains a header and body. The header begins with the def keyword, followed by function’s name and parameters, followed by a colon.
def max(num1, num2):
if num1 > num2: result = num1 else: result = num2 return result
function name formal parameters
return value
function body
function header
Define a function Invoke a function
z = max(x, y)
actual parameters (arguments)
![Page 9: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/9.jpg)
9© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
Formal Parameters
The variables defined in the function header are known as formal parameters.
def max(num1, num2):
if num1 > num2: result = num1 else: result = num2 return result
function name formal parameters
return value
function body
function header
Define a function Invoke a function
z = max(x, y)
actual parameters (arguments)
![Page 10: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/10.jpg)
10© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
Actual ParametersWhen a function is invoked, you pass a value to the parameter. This value is referred to as actual parameter or argument.
def max(num1, num2):
if num1 > num2: result = num1 else: result = num2 return result
function name formal parameters
return value
function body
function header
Define a function Invoke a function
z = max(x, y)
actual parameters (arguments)
![Page 11: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/11.jpg)
11© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
Return ValueA function may return a value using the return keyword.
def max(num1, num2):
if num1 > num2: result = num1 else: result = num2 return result
function name formal parameters
return value
function body
function header
Define a function Invoke a function
z = max(x, y)
actual parameters (arguments)
![Page 12: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/12.jpg)
12© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
Calling FunctionsTesting the max function
This program demonstrates calling a function max to return the largest of the int values
TestMaxTestMax Run
![Page 13: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/13.jpg)
13© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
Calling Functions, cont.animation
def main(): i = 5 j = 2 k = max(i, j) print("The maximum between", i, "and", j, "is", k)
def max(num1, num2): if num1 > num2: result = num1 else: result = num2 return result
pass int 5
pass int 2
main()
![Page 14: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/14.jpg)
14© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
Trace Function Invocation
animation
def main(): i = 5 j = 2 k = max(i, j) print("The maximum between", i, "and", j, "is", k)
def max(num1, num2): if num1 > num2: result = num1 else: result = num2 return result
pass int 5
pass int 2
main()
Invoke the main function
![Page 15: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/15.jpg)
15© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
Trace Function Invocation
animation
def main(): i = 5 j = 2 k = max(i, j) print("The maximum between", i, "and", j, "is", k)
def max(num1, num2): if num1 > num2: result = num1 else: result = num2 return result
pass int 5
pass int 2
main()
i is now 5
![Page 16: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/16.jpg)
16© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
Trace Function Invocation
animation
def main(): i = 5 j = 2 k = max(i, j) print("The maximum between", i, "and", j, "is", k)
def max(num1, num2): if num1 > num2: result = num1 else: result = num2 return result
pass int 5
pass int 2
main()
j is now 2
![Page 17: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/17.jpg)
17© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
Trace Function Invocation
animation
def main(): i = 5 j = 2 k = max(i, j) print("The maximum between", i, "and", j, "is", k)
def max(num1, num2): if num1 > num2: result = num1 else: result = num2 return result
pass int 5
pass int 2
main()
invoke max(i, j)
![Page 18: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/18.jpg)
18© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
Trace Function Invocation
animation
def main(): i = 5 j = 2 k = max(i, j) print("The maximum between", i, "and", j, "is", k)
def max(num1, num2): if num1 > num2: result = num1 else: result = num2 return result
pass int 5
pass int 2
main()
invoke max(i, j)Pass the value of i to num1Pass the value of j to num2
![Page 19: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/19.jpg)
19© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
Trace Function Invocation
animation
def main(): i = 5 j = 2 k = max(i, j) print("The maximum between", i, "and", j, "is", k)
def max(num1, num2): if num1 > num2: result = num1 else: result = num2 return result
pass int 5
pass int 2
main()
(num1 > num2) is true since num1 is 5 and
num2 is 2
![Page 20: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/20.jpg)
20© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
Trace Function Invocation
animation
def main(): i = 5 j = 2 k = max(i, j) print("The maximum between", i, "and", j, "is", k)
def max(num1, num2): if num1 > num2: result = num1 else: result = num2 return result
pass int 5
pass int 2
main()
result is now 5
![Page 21: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/21.jpg)
21© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
Trace Function Invocation
animation
def main(): i = 5 j = 2 k = max(i, j) print("The maximum between", i, "and", j, "is", k)
def max(num1, num2): if num1 > num2: result = num1 else: result = num2 return result
pass int 5
pass int 2
main()
return result, which is 5
![Page 22: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/22.jpg)
22© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
Trace Function Invocation
animation
def main(): i = 5 j = 2 k = max(i, j) print("The maximum between", i, "and", j, "is", k)
def max(num1, num2): if num1 > num2: result = num1 else: result = num2 return result
pass int 5
pass int 2
main()
return max(i, j) and assign the return value to k
![Page 23: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/23.jpg)
23© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
Trace Function Invocation
animation
def main(): i = 5 j = 2 k = max(i, j) print("The maximum between", i, "and", j, "is", k)
def max(num1, num2): if num1 > num2: result = num1 else: result = num2 return result
pass int 5
pass int 2
main()
Execute the print statement
![Page 24: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/24.jpg)
24© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
Trace Function Invocation
animation
def main(): i = 5 j = 2 k = max(i, j) print("The maximum between", i, "and", j, "is", k)
def max(num1, num2): if num1 > num2: result = num1 else: result = num2 return result
pass int 5
pass int 2
main()
Return to the caller
![Page 25: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/25.jpg)
25© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
Call Stacks
(a) The main function is invoked.
Space required for the main function
j: 2 i: 5
(b) The max function is invoked.
(c) The max function is being executed.
Space required for the main function
j: i:
Space required for the max function
num2: num1:
int object 5
int object 2
This is a heap for storing objects
stack stack
int object 5
int object 2
This is a heap for storing objects
Space required for the main function
j: i:
Space required for the max function
result: num2:
num1:
stack
![Page 26: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/26.jpg)
26© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
Call Stacks
Space required for the main function
k: j: 2
i: 5
(e) The main function is finished.
int object 5
int object 2
This is a heap for storing objects
stack stack
(d) The max function is finished and the return value is sent to k.
Stack is now empty
![Page 27: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/27.jpg)
27© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
Functions With/Without Return Values
This type of function does not return a value. The function performs some actions.
ReturnGradeFunctionReturnGradeFunction Run
PrintGradeFunctionPrintGradeFunction Run
![Page 28: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/28.jpg)
28© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
The None Value
A function that does not return a value is known as a void function in other programming languages such as Python, C++, and C#. In Python, such function returns a special None.
def sum(number1, number2):
total = number1 + number2
print(sum(1, 2))
![Page 29: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/29.jpg)
29© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
Passing Arguments by Positionsdef nPrintln(message, n): for i in range(0, n): print(message)
Suppose you invoke the function using nPrintln(“Welcome to Python”, 5)
What is the output?
Suppose you invoke the function using nPrintln(“Computer Science”, 15)
What is the output?
What is wrongnPrintln(4, “Computer Science”)
![Page 30: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/30.jpg)
30© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
Keyword Argumentsdef nPrintln(message, n): for i in range(0, n): print(message)
What is wrongnPrintln(4, “Computer Science”)
Is this OK?nPrintln(n = 4, message = “Computer Science”)
![Page 31: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/31.jpg)
31© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
Pass by ValueIn Python, all data are objects. A variable for an object is actually a reference to the object. When you invoke a function with a parameter, the reference value of the argument is passed to the parameter. This is referred to as pass-by-value. For simplicity, we say that the value of an argument is passed to a parameter when invoking a function. Precisely, the value is actually a reference value to the object.
IncrementIncrement Run
If the argument is a number or a string, the argument is not affected, regardless of the changes made to the parameter inside the function.
![Page 32: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/32.jpg)
32© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
Modularizing Code
Functions can be used to reduce redundant coding and enable code reuse. Functions can also be used to modularize code and improve the quality of the program.
GCDFunctionGCDFunction
Run
PrimeNumberFunctionPrimeNumberFunction
Run
TestGCDFunctionTestGCDFunction
![Page 33: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/33.jpg)
33© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
Problem: Converting Decimals to Hexadecimals
Write a function that converts a decimal integer to a hexadecimal.
Decimal2HexConversionDecimal2HexConversion RunDecimal2HexConversionDecimal2HexConversion Run
![Page 34: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/34.jpg)
34© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
Scope of Variables
Scope: the part of the program where the variable can be referenced.
A variable created inside a function is referred to as a local variable. Local variables can only be accessed inside a function. The scope of a local variable starts from its creation and continues to the end of the function that contains the variable.
In Python, you can also use global variables. They are created outside all functions and are accessible to all functions in their scope.
![Page 35: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/35.jpg)
35© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
Example 1
globalVar = 1
def f1():
localVar = 2
print(globalVar)
print(localVar)
f1()
print(globalVar)
print(localVar) # Out of scope. This gives an error
![Page 36: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/36.jpg)
36© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
Example 2
x = 1
def f1():
x = 2
print(x) # Displays 2
f1()
print(x) # Displays 1
![Page 37: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/37.jpg)
37© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
Example 3
x = eval(input("Enter a number: "))
if (x > 0):
y = 4
print(y) # This gives an error if y is not created
![Page 38: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/38.jpg)
38© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
Example 4
sum = 0
for i in range(0, 5):
sum += i
print(i)
![Page 39: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/39.jpg)
39© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
Example 5
x = 1
def increase():
global x
x = x + 1
print(x) # Displays 2
increase()
print(x) # Displays 2
![Page 40: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/40.jpg)
40© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
Default Arguments
Python allows you to define functions with default argument values. The default values are passed to the parameters when a function is invoked without the arguments.
DefaultArgumentDemoDefaultArgumentDemo Run
![Page 41: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/41.jpg)
41© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
Returning Multiple Values
Python allows a function to return multiple values. Listing 5.9 defines a function that takes two numbers and returns them in non-descending order.
MultipleReturnValueDemoMultipleReturnValueDemo
Run
![Page 42: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/42.jpg)
42© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
Generating Random Characters
TestRandomCharacterTestRandomCharacter
Run
RandomCharacterRandomCharacter
![Page 43: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/43.jpg)
43© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
Function AbstractionYou can think of the function body as a black box that contains the detailed implementation for the function.
Function Header
Function Body
Black Box
Optional arguments for input
Optional return value
![Page 44: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/44.jpg)
44© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
Benefits of Functions
• Write a function once and reuse it anywhere.
• Information hiding. Hide the implementation from the user.
• Reduce complexity.
![Page 45: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/45.jpg)
45© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
Stepwise Refinement
The concept of function abstraction can be applied to the process of developing programs. When writing a large program, you can use the “divide and conquer” strategy, also known as stepwise refinement, to decompose it into subproblems. The subproblems can be further decomposed into smaller, more manageable problems.
![Page 46: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/46.jpg)
46© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
PrintCalender Case Study Let us use the PrintCalendar example to demonstrate the stepwise refinement approach.
PrintCalendarPrintCalendar Run
![Page 47: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/47.jpg)
47© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
Design Diagram
printCalendar (main)
readInput printMonth
getStartDay
printMonthTitle printMonthBody
getTotalNumOfDays
getNumOfDaysInMonth
getMonthName
isLeapYear
![Page 48: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/48.jpg)
48© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
Design Diagram
printCalendar (main)
readInput printMonth
getStartDay
printMonthTitle printMonthBody
getTotalNumOfDays
getNumOfDaysInMonth
getMonthName
isLeapYear
![Page 49: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/49.jpg)
49© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
Design Diagram
printCalendar (main)
readInput printMonth
getStartDay
printMonthTitle printMonthBody
getTotalNumOfDays
getNumOfDaysInMonth
getMonthName
isLeapYear
![Page 50: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/50.jpg)
50© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
Design Diagram
printCalendar (main)
readInput printMonth
getStartDay
printMonthTitle printMonthBody
getTotalNumOfDays
getNumOfDaysInMonth
getMonthName
isLeapYear
![Page 51: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/51.jpg)
51© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
Design Diagram
printCalendar (main)
readInput printMonth
getStartDay
printMonthTitle printMonthBody
getTotalNumOfDays
getNumOfDaysInMonth
getMonthName
isLeapYear
![Page 52: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/52.jpg)
52© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
Design Diagram
printCalendar (main)
readInput printMonth
getStartDay
printMonthTitle printMonthBody
getTotalNumOfDays
getNumOfDaysInMonth
getMonthName
isLeapYear
![Page 53: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/53.jpg)
53© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
Implementation: Top-Down
A Skeleton for printCalendarA Skeleton for printCalendar
Top-down approach is to implement one function in the structure chart at a time from the top to the bottom. Stubs can be used for the functions waiting to be implemented. A stub is a simple but incomplete version of a function. The use of stubs enables you to test invoking the function from a caller. Implement the main function first and then use a stub for the printMonth function. For example, let printMonth display the year and the month in the stub. Thus, your program may begin like this:
![Page 54: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/54.jpg)
54© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
Implementation: Bottom-UpBottom-up approach is to implement one function in the structure chart at a time from the bottom to the top. For each function implemented, write a test program to test it. Both top-down and bottom-up functions are fine. Both approaches implement the functions incrementally and help to isolate programming errors and makes debugging easy. Sometimes, they can be used together.
![Page 55: Chapter 6 Functions](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813def550346895da7c929/html5/thumbnails/55.jpg)
55© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
Turtle:Developing Reusable Graphics Functions
UseCustomTurtleFunctionsUseCustomTurtleFunctions
def drawLine(x1, y1, x2, y2):
def writeString(s, x, y):
def drawPoint(x, y):
def drawCircle(x = 0, y = 0, radius = 10):
def drawRectangle(x = 0, y = 0, width = 10, height = 10):
UsefulTurtleFunctionsUsefulTurtleFunctions
Run