70
Chapter 6 Problem Solving and Algorithm Design

Chapter 6 Problem Solving and Algorithm Design. 2 Chapter Goals Determine whether a problem is suitable for a computer solution Describe the computer

Embed Size (px)

Citation preview

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

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 computerrelated 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 PhaseAnalyzeSpecification

Algorithm Development PhaseDevelop algorithmTest algorithm

Implementation PhaseCode algorithmTest algorithm

Maintenance PhaseUseMaintain

Can you namea recurringtheme?

12

Phase Interactions

Should weadd anotherarrow?

(What happensif the problemis revised?)

13

Pseudocode

Pseudocode

A mixture of English and formatting to make the steps in an algorithm explicitAlgorithm to Convert base-10 number to other bases

While ( the quotient is not zero )Divide the decimal number by the new baseMake the remainder the next digit to the left in the answerReplace 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 sauceIf concerned about cholesterol

Put butter substitute in a potElse

Put butter in a potTurn on burnerPut pot on the burnerWhile (NOT bubbling)

Leave pot on the burnerPut other ingredients in the blenderTurn on blenderWhile (more in pot)

Pour contents into lender in slow steamTurn 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

What is 93 in base 8?93/8 gives 11 remainder 511/6 gives 1 remainder 31/ 8 gives 0 remainder 1

answer 1 3 5

While ( the quotient is not zero )Divide the decimal number by the new baseMake the remainder the next digit to the left in the answerReplace the original decimal number with

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 <-- 64

quotient <-- 6 * 10 + 4

22

Pseudocode Functionality

Output

Printing a value on an output deviceWrite, 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 < 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 < 0)

Write number + " is less than zero."

orWrite "Enter a positive number."Read number

If (number < 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 < 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"

26

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

27

Walk Through

Data Fill in values during each iteration3 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

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

Figure 6.5 An example of top-down design

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

32

A Computer Example

Main Level 0

Enter names and numbers into listPut list into alphabetical orderPrint list

Enter names and numbers into list Level 1

While ( more names)Enter nameEnter telephone numberEnter email addressInsert 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 trueWhile (moreNames)

Prompt for and enter namePrompt for and enter telephone numberPrompt for and enter email addressInsert information into listWrite "Enter a 1 to continue or a 0 to stop."Read responseIf (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 lastNameWrite "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 emailaddresses follows:"

Get first item from the listWhile (more items)

Write item's firstName + " " + lastNameWrite item's telephoneNumberWrite item's emailAddressWrite a blank lineGet 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

marriagedate

dog's birth date

Date class

Objects Classes of objects

46

Object-Oriented Design

Program World simulates these groups

class Date

dogBirthdate

birthdate

marriageDate

Description Instances

47

Object-Oriented Design

Date'sActions inreal world

?

We call an object's interactions with other objects its

responsibilities

Create itselfKnow the state of its fields

Compare itself to another dateReturn a date #days hence

48

Object-Oriented Design

Responsibilities become methods in the Program World

class DategetMonthgetDaygetYear

dogBirthdate

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 informationabout a class, what is must do and with whom it mustcollaborate

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 don’t 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 object’s variables

– Action responsibilities are a little more complicated, often involving calculations

56

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

Computer Example

First pass at a list of classes listnametelephone numberemail addresslistorder nameslistscrapspapercards

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()Write "Enter phone number; press return."Get telephone numberWrite "Enter email address; press return."Get email address

Print

name.print() Write "Telephone number: " + telephoneNumberWrite "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: " + firstNamePrint "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

AbstractionA 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 formanaging 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 actionsname.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 amathematician.Why is mypicture in abook aboutcomputerscience?

70

Do you know?

What does TNDM stand for and what is it?

How is a computer data base being usedto help endangered species?

What is forensic computing?What techniques does it use?How is physical evidence protected?