introduction to functional decomposition
DESCRIPTION
Introduction to Functional Decomposition. Intro to Computer Science CS 1510 Dr. Sarah Diesburg. Programs are getting larger…. Our programs are starting to get large enough that we can’t hold all the details of the implementation in our heads - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Introduction to Functional Decomposition](https://reader036.vdocuments.site/reader036/viewer/2022062322/568149c0550346895db6f641/html5/thumbnails/1.jpg)
Introduction to Functional Decomposition
Intro to Computer Science
CS 1510
Dr. Sarah Diesburg
![Page 2: Introduction to Functional Decomposition](https://reader036.vdocuments.site/reader036/viewer/2022062322/568149c0550346895db6f641/html5/thumbnails/2.jpg)
Programs are getting larger… Our programs are starting to get large
enough that we can’t hold all the details of the implementation in our heads
We need a toolset to help us break down large programming problems into smaller, more manageable sub-problems
2
![Page 3: Introduction to Functional Decomposition](https://reader036.vdocuments.site/reader036/viewer/2022062322/568149c0550346895db6f641/html5/thumbnails/3.jpg)
Breaking up our programs
When should break up our programs into small problems? …before we try to write them!
Why? We can create re-usable, debuggable pieces
that save us time This means that we should integrate this
notion into our early design process
3
![Page 4: Introduction to Functional Decomposition](https://reader036.vdocuments.site/reader036/viewer/2022062322/568149c0550346895db6f641/html5/thumbnails/4.jpg)
Functional Decompostion
Functional decomposition* works to break up a large programming assignment into smaller sub-problems Working from the abstract to the concrete
This is also known as top-down design
4
* Special thanks to Dr. McCormick for the use of his materials from the book: Dale, Weems, and McCormick. Programming and
Problem Solving with ADA 95.
![Page 5: Introduction to Functional Decomposition](https://reader036.vdocuments.site/reader036/viewer/2022062322/568149c0550346895db6f641/html5/thumbnails/5.jpg)
Design
Abstract step – a list of major steps in our solution
Concrete step – algorithmic steps that can be translated directly into Python code …or, the code of any programming language!
5
![Page 6: Introduction to Functional Decomposition](https://reader036.vdocuments.site/reader036/viewer/2022062322/568149c0550346895db6f641/html5/thumbnails/6.jpg)
Design
What is the easiest way to solve a problem?
6
![Page 7: Introduction to Functional Decomposition](https://reader036.vdocuments.site/reader036/viewer/2022062322/568149c0550346895db6f641/html5/thumbnails/7.jpg)
Design
What is the easiest way to solve a problem? Give the problem to someone else and say “Solve
it!”
Since we need to solve our own problems, let’s see if we can break this down further…
7
![Page 8: Introduction to Functional Decomposition](https://reader036.vdocuments.site/reader036/viewer/2022062322/568149c0550346895db6f641/html5/thumbnails/8.jpg)
Design
We need to break down a solution from a series of very high-level abstract steps into concrete algorithmic steps that can be implemented in code
Each of the major steps becomes an independent sub-problem that we can work on independently
8
![Page 9: Introduction to Functional Decomposition](https://reader036.vdocuments.site/reader036/viewer/2022062322/568149c0550346895db6f641/html5/thumbnails/9.jpg)
Design
Why would we want to do this? It’s much easier to focus on one problem at a
time. Can get lost in large specifications without a plan
9
![Page 10: Introduction to Functional Decomposition](https://reader036.vdocuments.site/reader036/viewer/2022062322/568149c0550346895db6f641/html5/thumbnails/10.jpg)
Design
We can create a hierarchical solution tree that goes from the most abstract steps to the concrete steps
Each level of the tree is a complete solution to the problem that is less abstract than the level above it This is known as functional equivalence
10
![Page 11: Introduction to Functional Decomposition](https://reader036.vdocuments.site/reader036/viewer/2022062322/568149c0550346895db6f641/html5/thumbnails/11.jpg)
Hierarchical Solution Tree Concrete steps are shaded
11
![Page 12: Introduction to Functional Decomposition](https://reader036.vdocuments.site/reader036/viewer/2022062322/568149c0550346895db6f641/html5/thumbnails/12.jpg)
Modules
Each box represents a module Modules are a self-contained collection of
steps that solves a problem or subproblem They can contain both concrete and abstract
steps Concrete steps are often written in pseudocode
12
![Page 13: Introduction to Functional Decomposition](https://reader036.vdocuments.site/reader036/viewer/2022062322/568149c0550346895db6f641/html5/thumbnails/13.jpg)
Design Warm Up – mileage.py Dr. Mobile asks you to write a program that
asks for the starting and ending mileage as well as the total gasoline consumed.
It then calculates the MPG and prints a nice message regarding the MPG of the car. Recall, mpg = (ending mileage – start mileage) /
gas consumed It must also print out if the car can be legally
driven as-is in California by 2016 (>= 35 MPG)
13
![Page 14: Introduction to Functional Decomposition](https://reader036.vdocuments.site/reader036/viewer/2022062322/568149c0550346895db6f641/html5/thumbnails/14.jpg)
Mileage Solution Tree
Level 0 Solve the Problem
No steps are shaded, so these are all abstract steps (must be broken down more to solve in code
14
1. Get Data2. Calculate MPG3. Print Data
![Page 15: Introduction to Functional Decomposition](https://reader036.vdocuments.site/reader036/viewer/2022062322/568149c0550346895db6f641/html5/thumbnails/15.jpg)
Mileage Solution Tree
Level 1 Get Data
All steps are shaded, so these are all concrete steps that we can translate directly into Python code
15
1. Ask for starting mileage2. Ask for ending mileage3. Ask for gas consumed
![Page 16: Introduction to Functional Decomposition](https://reader036.vdocuments.site/reader036/viewer/2022062322/568149c0550346895db6f641/html5/thumbnails/16.jpg)
Get Data
startMileage = int(input(“Please enter the starting mileage: “))
endMileage = int(input(“Please enter the ending mileage: “))
gasConsumed = int(input(“Please enter the gas consumed: “))
16
![Page 17: Introduction to Functional Decomposition](https://reader036.vdocuments.site/reader036/viewer/2022062322/568149c0550346895db6f641/html5/thumbnails/17.jpg)
Mileage Solution Tree
Level 1 Calculate MPG
This is a concrete step that we can translate directly into Python code
17
1. Mpg = (end-start)/gas consumed
![Page 18: Introduction to Functional Decomposition](https://reader036.vdocuments.site/reader036/viewer/2022062322/568149c0550346895db6f641/html5/thumbnails/18.jpg)
Calculate MPG
mpg = (endMileage – startMileage) / gasConsumed
18
![Page 19: Introduction to Functional Decomposition](https://reader036.vdocuments.site/reader036/viewer/2022062322/568149c0550346895db6f641/html5/thumbnails/19.jpg)
Mileage Solution Tree
Level 1 Print Data
We still need to break down step 2 into something more concrete
19
1. Print mpg2. Print if car can be driven in
California
![Page 20: Introduction to Functional Decomposition](https://reader036.vdocuments.site/reader036/viewer/2022062322/568149c0550346895db6f641/html5/thumbnails/20.jpg)
Mileage Solution Tree
Level 2 Drive in California
These are concrete
20
1. if mpg < 35:print cannot drive
elseprint can drive
![Page 21: Introduction to Functional Decomposition](https://reader036.vdocuments.site/reader036/viewer/2022062322/568149c0550346895db6f641/html5/thumbnails/21.jpg)
Print Data
# Print mpg
print(“The total mpg is: “, mpg)
#Drive in California
If mpg < 35:
print(“Cannot drive in California.”)
else
print(“Can drive in California!”)
21
![Page 22: Introduction to Functional Decomposition](https://reader036.vdocuments.site/reader036/viewer/2022062322/568149c0550346895db6f641/html5/thumbnails/22.jpg)
Total Table
22
1. Get Data2. Calculate MPG3. Print Data
1. Mpg = (end-start)/gas consumed
1. Print mpg2. Print if car can be
driven in California
1. Ask for starting mileage2. Ask for ending mileage3. Ask for gas consumed
1. if mpg < 35:print cannot drive
elseprint can drive
Level 0
Level 1
Level 2
Solve the Problem
Get Data Calculate MPG Print Data
Drive in California
![Page 23: Introduction to Functional Decomposition](https://reader036.vdocuments.site/reader036/viewer/2022062322/568149c0550346895db6f641/html5/thumbnails/23.jpg)
Something cool
Each module in our solution tree could be broken into a function
How do we decide? For now, let’s not divide up the input and print
portions into their own functions Relatively easy to leave them as they are
That leaves the calculation and California portions…
23