0% found this document useful (0 votes)
6 views

Chapter 6 - Functions

Uploaded by

Foaud Azar
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views

Chapter 6 - Functions

Uploaded by

Foaud Azar
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 55

Chapter 6 Functions

© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.


1
Opening Problem
Find the sum of integers from 1 to 10, from 20 to 37, and
from 35 to 49, respectively.

© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.


2
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
print("Sum from 20 to
37 is", sum)

sum = 0
for i in range(35, 49):
sum += i
© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
3
print("Sum from 35 to
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
print("Sum from 20 to
sum = 0 sum)
37 is",
for i in range(35, 49):
sum += i
print("Sum from 35 to 49 is", sum)
© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
4
Solution
def 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

© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.


5
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
© Copyright 2012 using
by Pearson Education, Inc. Allfunctions
Rights Reserved. (§6.14).
6
Defining Functions
A function is a collection of statements that
are grouped together to perform an operation.
Define a function Invoke a function

function name formal parameters

function z = max(x, y)
def max(num1, num2):
header

if num1 > num2: actual parameters


function result = num1
body (arguments)
else:
result = num2

return result

return value

© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.


7
Function Header
A function contains a header and body. The header begins with
the def keyword, followed by function’s name and parameters,
followed by a colon.
Define a function Invoke a function

function name formal parameters

function z = max(x, y)
def max(num1, num2):
header

if num1 > num2:


function actual parameters
result = num1 (arguments)
body else:
result = num2

return result

return value

© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.


8
Formal Parameters
The variables defined in the function header are known as
formal parameters.

Define a function Invoke a function

function name formal parameters

function z = max(x, y)
def max(num1, num2):
header

if num1 > num2:


function actual parameters
result = num1 (arguments)
body else:
result = num2

return result

return value

© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.


9
Actual Parameters
When a function is invoked, you pass a value to the parameter. This
value is referred to as actual parameter or argument.

Define a function Invoke a function

function name formal parameters

function z = max(x, y)
def max(num1, num2):
header

if num1 > num2:


function actual parameters
result = num1 (arguments)
body else:
result = num2

return result

return value

© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.


10
Return Value
A function may return a value using the return
keyword.

Define a function Invoke a function

function name formal parameters

function z = max(x, y)
def max(num1, num2):
header

if num1 > num2: actual parameters


function result = num1
body (arguments)
else:
result = num2

return result

return value

© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.


11
Calling Functions
Testing the max function
This program demonstrates calling a
function max to return the largest of the int
values

TestMax Run

© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.


12
animation

Calling Functions, cont.


pass int 5
pass int 2

def main(): def max(num1, num2):


i = 5 if num1 > num2:
main() j = 2 result = num1
k = max(i, j) else:
result = num2
print("The maximum between",
i, "and", j, "is", k) return result

© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.


13
animation

Trace Function Invocation


Invoke the main function

pass int 5
pass int 2

def main():
i = 5
main() j = 2
k = max(i, j)

prin

© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.


14
animation

Trace Function Invocation


i is now 5

pass int 5
pass int 2

def main():
i = 5
main() j = 2
k = max(i, j)

prin

© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.


15
animation

Trace Function Invocation


j is now 2

pass int 5
pass int 2

def main():
i = 5
main() j = 2
k = max(i, j)

prin

© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.


16
animation

Trace Function Invocation


invoke max(i, j)
pass int 5
pass int 2

def main():
i = 5
main() j = 2
k = max(i, j)

prin

© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.


17
animation

Trace Function Invocation


invoke max(i, j)
Pass the value of i to num1
pass int 5
Pass the value of j to num2
pass int 2

def main():
i = 5
main() j = 2
k = max(i, j)

prin

© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.


18
animation

Trace Function Invocation


(num1 > num2) is true
since num1 is 5 and num2
pass int 5
is 2
pass int 2

def main():
i = 5
main() j = 2
k = max(i, j)

prin

© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.


19
animation

Trace Function Invocation


result is now 5

pass int 5
pass int 2

def main():
i = 5
main() j = 2
k = max(i, j)

prin

© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.


20
animation

Trace Function Invocation


return result, which is 5

pass int 5
pass int 2

def main():
i = 5
main() j = 2
k = max(i, j)

prin

© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.


21
animation

Trace Function Invocation


return max(i, j) and assign
the return value to k
pass int 5
pass int 2

def main():
i = 5
main() j = 2
k = max(i, j)

prin

© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.


22
animation

Trace Function Invocation


Execute the print
statement
pass int 5
pass int 2

def main():
i = 5
main() j = 2
k = max(i, j)

prin

© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.


23
animation

Trace Function Invocation


Return to the caller

pass int 5
pass int 2

def main():
i = 5
main() j = 2
k = max(i, j)

prin

© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.


24
Call Stacks

stack stack stack

Space required for


Space required for
the max function
the max function
result:
num2: int object num2:
num1: 2
int object num1:
2 Space required for Space required for
Space required for
the main function the main function the main function
j: 2 j: j:
int object int object
i: 5 i: i:
5 5

(a) The main function This is a heap for (b) The max This is a heap for (c) The max function
is invoked. storing objects function is invoked. storing objects is being executed.

© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.


25
Call Stacks

stack stack

int object
Space required for
2
the main function Stack is
k: now empty
j: 2 int object
i: 5 5

(d) The max function is This is a heap for (e) The main
finished and the return storing objects function is finished.
value is sent to k.

© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.


26
Functions With/Without Return Values
This type of function does not return a value. The
function performs some actions.

PrintGradeFunction Run

ReturnGradeFunctio Run
n

© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.


27
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))

© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.


28
Passing Arguments by
defPositions
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 wrong
nPrintln(4, “Computer Science”)
© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
29
Keyword
def Arguments
nPrintln(message,
for i in range(0,
n):
n):
print(message)

What is wrong
nPrintln(4, “Computer Science”)

Is this OK?
nPrintln(n = 4, message = “Computer Science”)

© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.


30
Pass by Value
In 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.

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.

Increment Run
© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
31
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.
GCDFunction TestGCDFunction

Run

PrimeNumberFunction

Run

© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.


32
Problem: Converting Decimals to
Hexadecimals
Write a function that converts a decimal
integer to a hexadecimal.

Decimal2HexConversi Run
Ru
on n

© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.


33
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.
© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
34
Example 1
globalVar = 1
def f1():
localVar = 2
print(globalVar)
print(localVar)
f1()
print(globalVar)
print(localVar) #
Out of scope. This
gives an error
© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
35
Example 2
x = 1
def f1():
x = 2
print(x) # Displays 2
f1()
print(x) # Displays 1

© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.


36
Example 3
x = eval(input("Enter a number:
")) if (x > 0):
y=4
print(y) # This gives an error if y
is not created

© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.


37
Example 4
sum = 0
for i in range(0, 5):
sum += i
print(i)

© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.


38
Example 5
x = 1
def increase():
global x
x = x
+ 1
print(x) # Displays 2
increase()
print(x) # Displays 2

© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.


39
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.

DefaultArgumentDem Run
o

© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.


40
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.

MultipleReturnValueDem
o

Run

© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.


41
Generating Random Characters

RandomCharacter

TestRandomCharact
er

Run

© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.


42
Function
Abstraction
You can think of the function body as a black box
that contains the detailed implementation for the
function.

Optional arguments Optional return


for input value

Function Header
Black Box
Function Body

© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.


43
Benefits of Functions
• Write a function once and reuse it anywhere.
• Information hiding. Hide the implementation
from the user.
• Reduce complexity.

© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.


44
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.

© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.


45
PrintCalender Case Study
Let us use the PrintCalendar example to demonstrate the
stepwise refinement approach.

PrintCalendar Run

© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.


46
Design Diagram
printCalendar
(main)

readInput printMonth

printMonthTitle printMonthBody

getMonthName getStartDay

getTotalNumOfDays

getNumOfDaysInMonth

isLeapYear
© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
47
Design Diagram
printCalendar
(main)

readInput printMonth

printMonthTitle printMonthBody

getMonthName getStartDay

getTotalNumOfDays

getNumOfDaysInMonth

isLeapYear

© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.


48
Design Diagram
printCalendar
(main)

readInput printMonth

printMonthTitle printMonthBody

getMonthName getStartDay

getTotalNumOfDays

getNumOfDaysInMonth

isLeapYear

© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.


49
Design Diagram
printCalendar
(main)

readInput printMonth

printMonthTitle printMonthBody

getMonthName getStartDay

getTotalNumOfDays

getNumOfDaysInMonth

isLeapYear

© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.


50
Design Diagram
printCalendar
(main)

readInput printMonth

printMonthTitle printMonthBody

getMonthName getStartDay

getTotalNumOfDays

getNumOfDaysInMonth

isLeapYear

© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.


51
Design Diagram
printCalendar
(main)

readInput printMonth

printMonthTitle printMonthBody

getMonthName getStartDay

getTotalNumOfDays

getNumOfDaysInMonth

isLeapYear

© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.


52
Implementation: Top-Down
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:

A Skeleton for
printCalendar
© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
53
Implementation: Bottom-Up
Bottom-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.

© Copyright 2012 by Pearson Education, Inc. All Rights Reserved.


54
Turtle:
Developing Reusable Graphics Functions
def drawLine(x1, y1, x2, y2): UsefulTurtleFunctions

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):

UseCustomTurtleFunctio Run
ns © Copyright 2012 by Pearson Education, Inc. All Rights Reserved.
55

You might also like