Problem Solving and Algorithm Design - PowerPoint PPT Presentation

1 / 70
About This Presentation
Title:

Problem Solving and Algorithm Design

Description:

The act of finding a solution to a perplexing, distressing, vexing, or ... Create a list that includes each person?? name, telephone number, and e-mail address ... – PowerPoint PPT presentation

Number of Views:123
Avg rating:3.0/5.0
Slides: 71
Provided by: Jon86
Category:

less

Transcript and Presenter's Notes

Title: Problem Solving and Algorithm Design


1
Chapter 6
  • Problem Solving and Algorithm Design

2
Chapter Goals
  • Determine whether a problem is suitable for a
    computer solution
  • Describe the computer problem-solving process and
    relate it to Polyas How to Solve It list
  • Distinguish between following an algorithm and
    developing one
  • Describe the pseudocode constructs used in
    expressing an algorithm
  • Use pseudocode to express an algorithm

3
Chapter Goals
  • Apply top-down design methodology to develop an
    algorithm to solve a problem
  • Define the key terms in object-oriented design
  • Apply object-oriented design methodology to
    develop a collection of interacting objects to
    solve a problem
  • Discuss the following threads as they relate to
    problem solving information hiding, abstraction,
    naming things, and testing

4
Problem Solving
  • Problem solving
  • The act of finding a solution to a perplexing,
    distressing, vexing, or unsettled question
  • How do you define problem solving?

5
Problem Solving
  • How to Solve It A New Aspect of Mathematical
    Method by George Polya
  • "How to solve it list" written within the context
    of mathematical problems
  • But list is quite general

We can use it to solve computer related problems!
6
Problem Solving
  • How do you solve problems?
  • Understand the problem
  • Devise a plan
  • Carry out the plan
  • Look back

7
Strategies
  • Ask questions!
  • What do I know about the problem?
  • What is the information that I have to process in
    order the find the solution?
  • What does the solution look like?
  • What sort of special cases exist?
  • How will I recognize that I have found the
    solution?

8
Strategies
  • Ask questions! Never reinvent the wheel!
  • Similar problems come up again and again in
    different guises
  • A good programmer recognizes a task or subtask
    that has been solved before and plugs in the
    solution
  • Can you think of two similar problems?

9
Strategies
  • Divide and Conquer!
  • Break up a large problem into smaller units and
    solve each smaller problem
  • Applies the concept of abstraction
  • The divide-and-conquer approach can be applied
    over and over again until each subtask is
    manageable

10
Algorithms
  • Algorithm
  • A set of unambiguous instructions for solving a
    problem or subproblem in a finite amount of time
    using a finite amount of data
  • Why must instructions be unambiguous?
  • Why must time and data be finite?

11
Computer Problem-Solving
Analysis and Specification Phase Analyze Specifi
cation Algorithm Development Phase Develop
algorithm Test algorithm Implementation
Phase Code algorithm Test algorithm Maintenance
Phase Use Maintain
Can you name a recurring theme?
12
Phase Interactions
Should we add another arrow? (What happens if
the problem is revised?)
13
Pseudocode
  • Pseudocode
  • A mixture of English and formatting to make the
    steps in an algorithm explicit
  • Algorithm to Convert base-10 number to other bases

While ( the quotient is not zero ) Divide the
decimal number by the new base Make the
remainder the next digit to the left in the
answer Replace the original decimal number with
the quotient
14
Following an Algorithm
Figure 6.4 A recipe for Hollandaise sauce
15
Following an Algorithm
  • Algorithm for preparing a Hollandaise sauce

If concerned about cholesterol Put butter
substitute in a pot Else Put butter in a
pot Turn on burner Put pot on the burner While
(NOT bubbling) Leave pot on the burner Put other
ingredients in the blender Turn on blender While
(more in pot) Pour contents into lender in slow
steam Turn off blender
16
Developing an Algorithm
  • Two methodologies used to develop computer
    solutions to a problem
  • Top-down design focuses on the tasks to be done
  • Object-oriented design focuses on the data
    involved in the solution
  • But first, let's look at a way to express
    algorithms pseudocode

17
Pseudocode
  • Pseudocode
  • A way of expressing algorithms that uses a
    mixture of English phrases and indention to make
    the steps in the solution explicit
  • There are no grammar rules in pseudocode
  • Pseudocode is not case sensitive

18
Following Pseudocode
While ( the quotient is not zero ) Divide the
decimal number by the new base Make the
remainder the next digit to the left in the
answer Replace the original decimal number with
What is 93 in base 8? 93/8 gives 11 remainder
5 11/6 gives 1 remainder 3 1/ 8 gives 0
remainder 1 answer 1 3 5
19
Following Pseudocode
Easier way to organize solution
20
Pseudocode for Complete Computer Solution
  • Write "Enter the new base"
  • Read newBase
  • Write "Enter the number to be converted"
  • Read decimalNumber
  • Set quotient to 1
  • While (quotient is not zero)
  • Set quotient to decimalNumber DIV newBase
  • Set remainder to decimalNumber REM newBase
  • Make the remainder the next digit to the left
    in the answer
  • Set decimalNumber to quotient
  • Write "The answer is "
  • Write answer

21
Pseudocode Functionality
  • Variables
  • Names of places to store values
  • quotient, decimalNumber, newBase
  • Assignment
  • Storing the value of an expression into a
  • variable
  • Set quotient to 64
  • quotient lt-- 64
  • quotient lt-- 6 10 4

22
Pseudocode Functionality
  • Output
  • Printing a value on an output device
  • Write, Print
  • Input
  • Getting values from the outside word and storing
    them into variables
  • Get, Read

23
Pseudocode Functionality
  • Repetition
  • Repeating a series of statements
  • Set count to 1
  • While ( count lt 10)
  • Write "Enter an integer number"
  • Read aNumber
  • Write "You entered " aNumber
  • Set count to count 1

How many values were read?
24
Pseudocode Functionality
  • Selection
  • Making a choice to execute or skip a statement
    (or group of statements)
  • Read number
  • If (number lt 0)
  • Write number " is less than zero."
  • or
  • Write "Enter a positive number."
  • Read number
  • If (number lt 0)
  • Write number " is less than zero."
  • Write "You didn't follow instructions."

25
Pseudocode Functionality
  • Selection
  • Choose to execute one statement (or group of
    statements) or another statement (or group of
    statements)
  • If ( age lt 12 )
  • Write "Pay children's rate"
  • Write "You get a free box of popcorn"
  • else If ( age lt 65 )
  • Write "Pay regular rate"
  • else
  • Write "Pay senior citizens rate"

26
Pseudocode Example
  • Write "How many pairs of values are to be
    entered?"
  • Read numberOfPairs
  • Set numberRead to 0
  • While (numberRead lt numberOfPairs)
  • Write "Enter two values separated by a blank
    press return"
  • Read number1
  • Read number2
  • If (number1 lt number2)
  • Print number1 " " number2
  • Else
  • Print number2 " " number1
  • Increment numberRead

27
Walk Through
  • Data Fill in values during each iteration
  • 3 numberRead number1 number2
  • 55 70
  • 2 1
  • 33 33
  • numberOfPairs

What is the output?
28
Top-Down Design
  • Top-Down Design
  • Problem-solving technique in which the problem is
    divided into subproblems the process is applied
    to each subproblem
  • Modules
  • Self-contained collection of steps, that solve a
    problem or subproblem
  • Abstract Step
  • An algorithmic step containing unspecified
    details
  • Concrete Step
  • An algorithm step in which all details are
    specified

29
Top-Down Design
Figure 6.5 An example of top-down design
  • Process continues for as many levels as it takes
    to make every step concrete
  • Name of (sub)problem at one level becomes a
    module at next lower level

30
A General Example
  • Planning a large party

Figure 6.6 Subdividing the party planning
31
A Computer Example
  • Problem
  • Create a list that includes each persons name,
    telephone number, and e-mail address
  • This list should then be printed in alphabetical
    order
  • The names to be included in the list are on
    scraps of paper and business cards

32
A Computer Example
Main Level 0 Enter names and numbers into
list Put list into alphabetical order Print
list Enter names and numbers into list Level
1 While ( more names) Enter name Enter
telephone number Enter email address Insert
information into list
Which steps are abstract? Which steps are
concrete? What is missing?
33
A Computer Example
Enter names and numbers into list
(revised) Level 1 Set moreNames to true While
(moreNames) Prompt for and enter name Prompt
for and enter telephone number Prompt for and
enter email address Insert information into
list Write "Enter a 1 to continue or a 0 to
stop." Read response If (response 0) Set
moreNames to false
Which steps are concrete? Which steps are
abstract?
34
A Computer Example
Prompt for and enter name Level 2 Write
"Enter last name press return." Read
lastName Write "Enter first name press
return." Read firstName Prompt for and enter
telephone number Level 2 Write "Enter area
code and 7-digit number press return." Read
telephoneNumber Prompt for and enter email
address Level 2 Write "Enter email address
press return." Read emailAddress
35
A Computer Example
Put list into alphabetical order
Concrete or abstract?
Print the list Level 1 Write "The list of
names, telephone numbers, and email addresses
follows" Get first item from the list While
(more items) Write item's firstName " "
lastName Write item's telephoneNumber Write
item's emailAddress Write a blank line Get next
item from the list
36
A Computer Example
Note Insert information is within the loop
37
Testing the Algorithm
  • Important distinction
  • Mathematics
  • We tests the answer
  • Programs
  • We test the process

38
Testing the Algorithm
  • Desk checking
  • Working through a design at a desk with a pencil
    and paper
  • Walk-through
  • Manual simulation of the design by team members,
    taking sample data values and simulating the
    design using the sample data
  • Inspection
  • One person (not the designer) reads the design
    (handed out in advance) line by line while the
    others point out errors

39
Object-Oriented Design
  • Object-oriented Design
  • A problem-solving methodology that produces a
    solution to a problem in terms of self-contained
    entities called objects
  • Object
  • A thing or entity that makes sense within the
    context of the problem
  • For example, a student, a car, time, date

40
Object-Oriented Design
  • World View of OOD
  • Problems are solved by
  • isolating the objects in a problem,
  • determining their properties and actions
    (responsibilities), and
  • letting the objects collaborate to solve a problem

What? Say again!
41
Object-Oriented Design
  • An analogy You and your friend fix dinner
  • Objects you, friend, dinner
  • Class you and friend are people
  • People have name, eye color,
  • People can shop, cook,
  • Instance of a class you and friend are instances
    of class People, you each have your own name and
    eye color, you each can shop and cook
  • You collaborate to fix dinner

42
Object-Oriented Design
  • Class (or object class)
  • A description of a group of similar objects
  • Object (instance of a class)
  • A concrete example of the class
  • Classes contain fields that represent the
  • properties (name, eye color) and
  • behaviors (responsibilities) (shop, cook) of the
    class
  • Method
  • A named algorithm that defines behavior (shop,
    cook)

43
Object-Oriented Design
  • Top-Down Design
  • decomposes problems into tasks
  • Object-Oriented Design
  • decomposes problems into
  • collaborating objects

Yes, but how?
44
Object-Oriented Design
  • Steps
  • isolate the real-world objects in the problem
  • abstract the objects with like properties into
    groups (classes)
  • determine the responsibilities of the group in
    interacting with other groups

45
Object-Oriented Design
  • Think of design as a mapping from real world
    objects to classes of objects

birth date
Date class
marriage date
dog's birth date
Objects Classes of objects
46
Object-Oriented Design
  • Program World simulates these groups

dogBirthdate
class Date
birthdate
marriageDate
Description
Instances
47
Object-Oriented Design
Date's Actions in real world ?
We call an object's interactions with other
objects its responsibilities
Create itself Know the state of its
fields Compare itself to another date Return a
date days hence
48
Object-Oriented Design
  • Responsibilities become methods in the Program
    World

dogBirthdate
class Date getMonth getDay getYear
birthdate
marriageDate
49
Object-Oriented Design Methodology
  • Four stages to the decomposition process
  • Brainstorming to locate possible classes
  • Filtering the classes to find duplicates or
    remove unnecessary ones
  • Scenarios are tried to be sure we understand
    collaborations
  • Responsibility algorithms are designed for all
    actions that classes must exhibit

50
CRC Cards
CRC cards are a notational device to record
information about a class, what is must do and
with whom it must collaborate
51
Brainstorming
  • A group problem-solving technique that involves
    the spontaneous contribution of ideas from all
    members of the group
  • All ideas are potential good ideas
  • Think fast and furiously first, and ponder later
  • A little humor can be a powerful force
  • Brainstorming is designed to produce a list of
    candidate classes

52
Filtering
  • Determine which are the core classes in the
    problem solution
  • There may be two classes in the list that have
    many common attributes and behaviors
  • There may be classes that really dont belong in
    the problem solution

53
Scenarios
  • Assign responsibilities to each class
  • There are two types of responsibilities
  • What a class must know about itself (knowledge
    responsibilities)
  • What a class must be able to do (behavior
    responsibilities)

54
Scenarios
  • Encapsulation
  • The bundling of data and actions in such a way
    that the logical properties of the data and
    actions are separated from the implementation
    details
  • Each class encapsulates its data but shares their
    values through knowledge responsibilities

55
Responsibility Algorithms
  • The algorithms must be written for the
    responsibilities
  • Knowledge responsibilities usually just return
    the contents of one of an objects variables
  • Action responsibilities are a little more
    complicated, often involving calculations

56
Computer Example
  • Lets repeat the problem-solving process for
    creating an address list
  • Brainstorming and filtering
  • Circling the nouns and underlining the verbs is a
    good way to begin

57
Computer Example
  • First pass at a list of classes

list name telephone number email
address list order names list scraps paper cards
Filtered List
list, name, telephone number email address
58
CRC Cards
Can you think of any other useful
responsibilities?
59
CRC Cards
Can you think of any other useful
responsibilities?
60
CRC Cards
How is this class different from Name and Person?
61
Responsibility Algorithms
Person Class Initialize name.initialize() Wri
te "Enter phone number press return." Get
telephone number Write "Enter email address
press return." Get email address Print name.prin
t() Write "Telephone number "
telephoneNumber Write "Email address "
emailAddress
Tells name to initialize itself
Tells name to print itself
62
Responsibility Algorithms
Name Class Initialize "Enter the first name
press return." Read firstName "Enter the last
name press return." Read lastName Print Print
"First name " firstName Print "Last name "
lastName
63
Important Threads
  • Information Hiding
  • The practice of hiding the details of a module
    with the goal of controlling access to it
  • Abstraction
  • A model of a complex system that includes only
    the details essential to the viewer
  • Information Hiding and Abstraction are two sides
    of the same coin

64
Important Threads
  • Data abstraction
  • Separation of the logical view of data from their
    implementation
  • Procedural abstraction
  • Separation of the logical view of actions from
    their implementation
  • Control abstraction
  • Separation of the logical view of a control
    structure from its implementation

65
Important Threads
Abstraction is the most powerful tool people have
for managing complexity!
66
Important Threads
  • Identifiers
  • Names given to data and actions, by which
  • we access the data and
  • Read firstName, Set count to count 1
  • execute the actions
  • name.initialize(), name.print()
  • Giving names to data and actions is a form of
    abstraction

67
Importhat Threads
  • Programming language
  • A set of grammar rules, symbols, and special
    words used to construct a program
  • Program
  • A sequence of instructions written to perform a
    specified task
  • Syntax
  • The formal grammar rules governing the
    construction of valid instructions
  • Semantics
  • The rules that give meaning to the instructions

68
Ethical Issues
  • Licensing Computer Professionals
  • Are computer professionals licensed?
  • What is the ACM and why is it opposed
  • to licensing?
  • What is the IEEE and what is its
  • position on licensing?
  • Should computer professionals be licensed?

69
Who am I?
I am a mathematician. Why is my picture in a book
about computer science?
70
Do you know?
What does TNDM stand for and what is it? How is
a computer data base being used to help
endangered species? What is forensic
computing? What techniques does it use? How is
physical evidence protected?
Write a Comment
User Comments (0)
About PowerShow.com