Documents
Resources
Learning Center
Upload
Plans & pricing Sign in
Sign Out

Problem Solving and Algorithm Design - PowerPoint

VIEWS: 119 PAGES: 67

									     Chapter 6
  Problem Solving
and Algorithm Design
                 Chapter Goals

• Determine whether a problem is suitable for a
  computer solution
• Describe the computer problem-solving process
  and relate it to Polya’s 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
 2
                  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

 3
               Problem Solving

Problem solving
The act of finding a solution to a perplexing,
distressing, vexing, or unsettled question


     How do you define problem solving?



 4
               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!

 5
             Problem Solving

How do you solve problems?


Understand the problem
     Devise a plan
         Carry out the plan
              Look back
 6
                       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?
 7
                  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?
 8
                       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

 9
                    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?

 10
      Computer Problem-Solving

Analysis and Specification Phase   Can you
      Analyze                      name
      Specification                a recurring
Algorithm Development Phase        theme?
      Develop algorithm
      Test algorithm
Implementation Phase
      Code algorithm
      Test algorithm
Maintenance Phase
      Use
      Maintain


11
     Phase Interactions


                    Should we
                    add another
                    arrow?

                    (What happens
                    if the problem
                    is revised?)




12
                            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




13
                       Following an Algorithm




Figure 6.4 A recipe for Hollandaise sauce
      14
                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

 15
         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

 16
                 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


 17
              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     135

18
        Following Pseudocode




     Easier way to organize solution

19
                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

   20
           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 <-- 64
      quotient <-- 6 * 10 + 4
 21
           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


 22
           Pseudocode Functionality

Repetition
Repeating a series of statements
      Set count to 1
      While ( count < 10)
                Write "Enter an integer number"
                Read aNumber
                Write "You entered " + aNumber
                Set count to count + 1



      How many values were read?

 23
               Pseudocode Functionality

Selection
Making a choice to execute or skip a statement (or
group of statements)
          Read number
          If (number < 0)
                   Write number + " is less than zero."
or
          Write "Enter a positive number."
          Read number
          If (number < 0)
                   Write number + " is less than zero."
                   Write "You didn't follow instructions."
     24
             Pseudocode Functionality

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


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

   26
                       Walk Through

Data            Fill in values during each iteration
3                     numberRead   number1   number2
55 70
21
33 33
numberOfPairs




      What is the output?
     27
                   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
  28
                     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
  29
                         A General Example

Planning a large party




      Figure 6.6 Subdividing the party planning

 30
            A Computer Example

Problem
Create a list that includes each person’s
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
 31
                    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?
 32
                  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?

 33
                 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


34
                      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


35
               A Computer Example




     Note: Insert information is within the loop
36
           Testing the Algorithm

Important distinction

      Mathematics
          We tests the answer
      Programs
          We test the process

 37
               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

  38
            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
 39
           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!

 40
           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
  41
             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)
  42
          Object-Oriented Design

Top-Down Design
      decomposes problems into tasks
Object-Oriented Design
      decomposes problems into
      collaborating objects
            Yes, but how?

 43
         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




44
                   Object-Oriented Design

Think of design as a mapping from real
world objects to classes of objects
         birth
         date

                   marriage    Date class
                    date


        dog's
      birth date



 Objects                      Classes of objects
 45
                    Object-Oriented Design


Program World simulates these groups

                                dogBirthdate



        class Date                birthdate




                                 marriageDate


      Description               Instances
 46
             Object-Oriented Design


       Date's                 We call an object's interactions
     Actions in                   with other objects its
     real world                      responsibilities
          ?




                          Create itself
                   Know the state of its fields
                  Compare itself to another date
                   Return a date #days hence

47
               Object-Oriented Design


Responsibilities become methods in the
Program World
                           dogBirthdate

      class Date
      getMonth
        getDay               birthdate
       getYear


                            marriageDate




 48
          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
 49
                      CRC Cards
CRC cards are a notational device to record information
about a class, what is must do and with whom it must
collaborate




50
                  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
 51
                    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 don’t
belong in the problem solution

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




 53
                   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
 54
        Responsibility Algorithms

The algorithms must be written for the
responsibilities
  – Knowledge responsibilities usually just return
    the contents of one of an object’s variables
  – Action responsibilities are a little more
    complicated, often involving calculations




 55
             Computer Example

Let’s 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




 56
                    Computer Example

First pass at a list of               list
                                      name
classes                               telephone number
                                      email address
                                      list
                                      order
                                      names
                                      list
                                      scraps
                                      paper
                                      cards

  Filtered List

  list, name, telephone number email address
                       CRC Cards




     Can you think of any other useful responsibilities?

58
                       CRC Cards




     Can you think of any other useful responsibilities?

59
                       CRC Cards




     How is this class different from Name and Person?


60
             Responsibility Algorithms

Person Class
Initialize                                     Tells name to initialize itself

name.initialize()
Write "Enter phone number; press return."
Get telephone number
Write "Enter email address; press return."
Get email address
                                                 Tells name to print itself
Print

name.print()
Write "Telephone number: " + telephoneNumber
Write "Email address: " + emailAddress


61
             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




62
               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
 63
                 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

 64
                Important Threads




     Abstraction is the most powerful tool people have for
                     managing complexity!
65
                 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
 66
                 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
  67

								
To top