Fundamentals of Python: First Programs Chapter 6: Design with Functions.

Slides:



Advertisements
Similar presentations
C++ Programming:. Program Design Including
Advertisements

Programming Languages and Paradigms
Recursion. Binary search example postponed to end of lecture.
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Chapter 5 - Functions Outline 5.1Introduction 5.2Program.
Recursion.
Run time vs. Compile time
Chapter 1 Principles of Programming and Software Engineering.
1 Run time vs. Compile time The compiler must generate code to handle issues that arise at run time Representation of various data types Procedure linkage.
Fundamentals of Python: From First Programs Through Data Structures
1. 2 FUNCTION INLINE FUNCTION DIFFERENCE BETWEEN FUNCTION AND INLINE FUNCTION CONCLUSION 3.
Guide To UNIX Using Linux Third Edition
C++ Programming: Program Design Including Data Structures, Fourth Edition Chapter 16: Recursion.
Introduction to Unix (CA263) Introduction to Shell Script Programming By Tariq Ibn Aziz.
Chapter 6: Functions.
Fundamentals of Python: From First Programs Through Data Structures
The University of Texas – Pan American
Fundamentals of Python: First Programs
Chapter TwelveModern Programming Languages1 Memory Locations For Variables.
1 Chapter 9 Scope, Lifetime, and More on Functions.
Operator Precedence First the contents of all parentheses are evaluated beginning with the innermost set of parenthesis. Second all multiplications, divisions,
Chapter 6: Modularity Using Functions. In this chapter, you will learn about: – Function and parameter declarations – Returning a single value – Returning.
C++ for Engineers and Scientists Second Edition Chapter 6 Modularity Using Functions.
© The McGraw-Hill Companies, 2006 Chapter 4 Implementing methods.
Chapter 6 Functions 1. Opening Problem 2 Find the sum of integers from 1 to 10, from 20 to 37, and from 35 to 49, respectively.
More with Methods (parameters, reference vs. value, array processing) Corresponds with Chapters 5 and 6.
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. C How To Program - 4th edition Deitels Class 05 University.
Functions and an Introduction to Recursion.  Recursive function ◦ A function that calls itself, either directly, or indirectly (through another function)
Chapter 12 Recursion, Complexity, and Searching and Sorting
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with Programming Logic & Design First Edition by Tony Gaddis.
Compiler Construction
Chapter 13 Recursion. Learning Objectives Recursive void Functions – Tracing recursive calls – Infinite recursion, overflows Recursive Functions that.
Copyright © 2010 Certification Partners, LLC -- All Rights Reserved Perl Specialist.
An Object-Oriented Approach to Programming Logic and Design Fourth Edition Chapter 6 Using Methods.
Chapter 5: More on the Selection Structure Programming with Microsoft Visual Basic 2005, Third Edition.
An Introduction to Programming with C++ Sixth Edition Chapter 7 The Repetition Structure.
Internet & World Wide Web How to Program, 5/e © by Pearson Education, Inc. All Rights Reserved.
Data Structures R e c u r s i o n. Recursive Thinking Recursion is a problem-solving approach that can be used to generate simple solutions to certain.
Java Programming: Guided Learning with Early Objects Chapter 11 Recursion.
CS221 Algorithm Basics. What is an algorithm? An algorithm is a list of instructions that transform input information into a desired output. Each instruction.
First Steps in Modularization. Simple Program Design, Fourth Edition Chapter 8 2 Objectives In this chapter you will be able to: Introduce modularization.
Liang, Introduction to C++ Programming, (c) 2010 Pearson Education, Inc. All rights reserved Chapter 6 Advanced Function Features.
First Steps in Modularization. Simple Program Design, Fourth Edition Chapter 8 2 Objectives In this chapter you will be able to: Introduce modularization.
Copyright © 2003 ProsoftTraining. All rights reserved. Perl Fundamentals.
Programming Fundamentals. Topics to be covered Today Recursion Inline Functions Scope and Storage Class A simple class Constructor Destructor.
Chapter 15: Recursion. Objectives In this chapter, you will: – Learn about recursive definitions – Explore the base case and the general case of a recursive.
Alice in Action with Java Chapter 4 Flow Control.
Chapter 15: Recursion. Recursive Definitions Recursion: solving a problem by reducing it to smaller versions of itself – Provides a powerful way to solve.
Chapter 15: Recursion. Objectives In this chapter, you will: – Learn about recursive definitions – Explore the base case and the general case of a recursive.
A First Book of ANSI C Fourth Edition
CMSC 104, Section 301, Fall Lecture 18, 11/11/02 Functions, Part 1 of 3 Topics Using Predefined Functions Programmer-Defined Functions Using Input.
1 Chapter 8 Scope, Lifetime, and More on Functions CS185/09 - Introduction to Programming Caldwell College.
Chapter 7 JavaScript: Control Statements, Part 1
Chapter 9: Value-Returning Functions
Principles of Programming and Software Engineering
Fundamentals of Programming I Design with Functions
Chapter 6 Functions.
About the Presentations
Chapter 5 - Functions Outline 5.1 Introduction
CHAPTER FOUR Functions.
Starting Out with Programming Logic & Design
Unit# 9: Computer Program Development
Recursion Chapter 11.
Starting Out with Programming Logic & Design
Object Oriented Programming in java
Lecture 2 מבוא מורחב.
1-6 Midterm Review.
Fundamentals of Python: First Programs Second Edition
Lecture 2 מבוא מורחב.
Presentation transcript:

Fundamentals of Python: First Programs Chapter 6: Design with Functions

Fundamentals of Python: First Programs2 Objectives After completing this chapter, you will be able to: Explain why functions are useful in structuring code in a program Employ top-down design to assign tasks to functions Define a recursive function

Fundamentals of Python: First Programs3 Objectives (continued) Explain the use of the namespace in a program and exploit it effectively Define a function with required and optional parameters Use higher-order functions for mapping, filtering, and reducing

Fundamentals of Python: First Programs4 Functions as Abstraction Mechanisms An abstraction hides detail –Allows a person to view many things as just one thing We use abstractions to refer to the most common tasks in everyday life –For example, the expression “doing my laundry” Effective designers must invent useful abstractions to control complexity

Fundamentals of Python: First Programs5 Functions Eliminate Redundancy Functions serve as abstraction mechanisms by eliminating redundant, or repetitious, code

Fundamentals of Python: First Programs6 Functions Hide Complexity Functions serve as abstraction mechanisms is by hiding complicated details For example, consider the previous sum function –The idea of summing a range of numbers is simple; the code for computing a summation is not A function call expresses the idea of a process to the programmer –Without forcing him/her to wade through the complex code that realizes that idea

Fundamentals of Python: First Programs7 Functions Support General Methods with Systematic Variations An algorithm is a general method for solving a class of problems The individual problems that make up a class of problems are known as problem instances –What are the problem instances of our summation algorithm? Algorithms should be general enough to provide a solution to many problem instances –A function should provide a general method with systematic variations

Fundamentals of Python: First Programs8 Functions Support the Division of Labor In a well-organized system, each part does its own job in collaborating to achieve a common goal In a computer program, functions can enforce a division of labor –Each function should perform a single coherent task Example: Computing a summation Each of the tasks required by a system can be assigned to a function –Including the tasks of managing or coordinating the use of other functions

Fundamentals of Python: First Programs9 Problem Solving with Top-Down Design Top-down design starts with a global view of the entire problem and breaks the problem into smaller, more manageable subproblems –Process known as problem decomposition As each subproblem is isolated, its solution is assigned to a function As functions are developed to solve subproblems, solution to overall problem is gradually filled out –Process is also called stepwise refinement

Fundamentals of Python: First Programs10 The Design of the Text-Analysis Program

Fundamentals of Python: First Programs11 The Design of the Sentence-Generator Program

Fundamentals of Python: First Programs12 The Design of the Doctor Program

Fundamentals of Python: First Programs13 Design with Recursive Functions In top-down design, you decompose a complex problem into a set of simpler problems and solve these with different functions In some cases, you can decompose a complex problem into smaller problems of the same form –Subproblems can be solved using the same function This design strategy is called recursive design Resulting functions are called recursive functions

Fundamentals of Python: First Programs14 Defining a Recursive Function A recursive function is a function that calls itself –To prevent function from repeating itself indefinitely, it must contain at least one selection statement Statement examines base case to determine whether to stop or to continue with another recursive step To convert displayRange to a recursive function: –You can replace loop with a selection statement and assignment statement with a recursive call

Fundamentals of Python: First Programs15 Defining a Recursive Function (continued) Making displayRange recursive (continued): Most recursive functions expect at least one argument Another example: Recursive version of sum

Fundamentals of Python: First Programs16 Tracing a Recursive Function

Fundamentals of Python: First Programs17 Using Recursive Definitions to Construct Recursive Functions Recursive functions are frequently used to design algorithms that have a recursive definition –A recursive definition consists of equations that state what a value is for one or more base cases and one or more recursive cases Example: Fibonacci sequence

Fundamentals of Python: First Programs18 Recursion in Sentence Structure Recursive solutions can often flow from the structure of a problem Example: Structure of sentences in a language –A noun phrase can be modified by a prepositional phrase, which also contains another noun phrase  Indirect recursion

Fundamentals of Python: First Programs19 Infinite Recursion Infinite recursion arises when programmer fails to specify base case or to reduce size of problem in a way that terminates the recursive process –In fact, the Python virtual machine eventually runs out of memory resources to manage the process

Fundamentals of Python: First Programs20 The Costs and Benefits of Recursion PVM reserves an area of memory for the call stack For each call of a function, the PVM must allocate on the call stack a stack frame, which contains: –Values of the arguments –Return address for the particular function call –Space for the function call’s return value When a call returns, return address is used to locate the next instruction, and stack frame is deallocated Amount of memory needed for a loop does not grow with the size of the problem’s data set

Fundamentals of Python: First Programs21 The Costs and Benefits of Recursion (continued)

Fundamentals of Python: First Programs22 Case Study: Gathering Information from a File System Request: Write a program that allows the user to obtain information about the file system Analysis: –File systems are tree-like structures –At the top of the tree is the root directory –Under the root are files and subdirectories –Each directory in the system except the root lies within another directory called its parent –Example of a path (UNIX-based file system): /Users/KenLaptop/Book/Chapter6/Chapter6.doc

Fundamentals of Python: First Programs23 Case Study: Gathering Information from a File System (continued)

Fundamentals of Python: First Programs24 Case Study: Gathering Information from a File System (continued) –When user enters a number, program runs command; then, displays CWD and menu again –An unrecognized command produces an error message

Fundamentals of Python: First Programs25 Case Study: Gathering Information from a File System (continued)

Fundamentals of Python: First Programs26 Case Study: Gathering Information from a File System (continued) Design:

Fundamentals of Python: First Programs27 Case Study: Gathering Information from a File System (continued) …

Fundamentals of Python: First Programs28 Managing a Program’s Namespace A program’s namespace is the set of its variables and their values –You can control it with good design principles

Fundamentals of Python: First Programs29 Module Variables, Parameters, and Temporary Variables Module variables and temporary variables receive their values as soon as they are introduced Parameters behave like a variable and are introduced in a function or method header –Do not receive a value until the function is called doctor.py file (module name is doctor ): A module variableA parameter name A temporary variable A method name

Fundamentals of Python: First Programs30 Scope Scope: Area in which a name refers to a given value –Temporary variables are restricted to the body of the functions in which they are introduced –Parameters are invisible outside function definition –The scope of module variables includes entire module below point where they are introduced A function can reference a module variable, but can’t under normal circumstances assign a new value to it

Fundamentals of Python: First Programs31 Lifetime Variable’s lifetime: Period of time when variable has memory storage associated with it –When a variable comes into existence, storage is allocated for it; when it goes out of existence, storage is reclaimed by the PVM Module variables come into existence when introduced and generally exist for lifetime of program that introduces or imports them Parameters and temporary variables come into existence when bound to values during call, but go out of existence when call terminates

Fundamentals of Python: First Programs32 Default (Keyword) Arguments Arguments provide the function’s caller with the means of transmitting information to the function Programmer can specify optional arguments with default values in any function definition: –Following the required arguments are one or more default or keyword arguments –When function is called with these arguments, default values are overridden by caller’s values

Fundamentals of Python: First Programs33 Default (Keyword) Arguments (continued)

Fundamentals of Python: First Programs34 Default (Keyword) Arguments (continued) The default arguments that follow can be supplied in two ways: –By position –By keyword

Fundamentals of Python: First Programs35 Higher-Order Functions (Advanced Topic) A higher-order function expects a function and a set of data values as arguments –Argument function is applied to each data value and a set of results or a single data value is returned A higher-order function separates task of transforming each data value from logic of accumulating the results

Fundamentals of Python: First Programs36 Functions as First-Class Data Objects Functions can be assigned to variables, passed as arguments, returned as the values of other functions, and stored in data structures

Fundamentals of Python: First Programs37 Functions as First-Class Data Objects (continued) Passing a function as an argument is no different from passing any other datum:

Fundamentals of Python: First Programs38 Mapping Mapping applies a function to each value in a sequence and returns a new sequence of the results

Fundamentals of Python: First Programs39 Mapping (continued)

Fundamentals of Python: First Programs40 Filtering When filtering, a function called a predicate is applied to each value in a list –If predicate returns True, value is added to a new list; otherwise, value is dropped from consideration

Fundamentals of Python: First Programs41 Reducing When reducing, we take a list of values and repeatedly apply a function to accumulate a single data value

Fundamentals of Python: First Programs42 Using lambda to Create Anonymous Functions A lambda is an anonymous function –When the lambda is applied to its arguments, its expression is evaluated and its value is returned

Fundamentals of Python: First Programs43 Creating Jump Tables A jump table is a dictionary of functions keyed by command names

Fundamentals of Python: First Programs44 Summary A function serves as abstraction mechanism and eliminates redundant patterns of code Top-down design is strategy that decomposes complex problem into simpler subproblems and assigns their solutions to functions A structure chart is diagram of relationships among cooperating functions Recursive design is special case of top-down design, in which complex problem is decomposed into smaller problems of the same form

Fundamentals of Python: First Programs45 Summary (continued) A recursive function is a function that calls itself –Parts: Base case and recursive step –Can be computationally expensive Programmers must avoid infinite recursion Program namespace structured in terms of module variables, parameters, and temporary variables Scope can be used to control the visibility of names in a namespace The lifetime of a variable is duration of program execution during which it uses memory storage

Fundamentals of Python: First Programs46 Summary (continued) Functions are first-class data objects Higher-order functions can expect other functions as arguments and/or return functions as values A mapping function expects a function and a list of values as arguments A predicate is a Boolean function A filtering function expects a predicate and a list of values as arguments A reducing function expects a function and a list of values as arguments