Chapter 6 Problem Solving and Algorithm Design Chapter
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 Analyze Specification Algorithm Development Phase Develop algorithm Test algorithm Implementation Phase Code algorithm Test algorithm Maintenance Phase Use Maintain 11 Can you name a recurring theme?
Phase Interactions Should we add another arrow? (What happens if the problem is revised? ) 12
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 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 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 new. Base Write "Enter the number to be converted" Read decimal. Number Set quotient to 1 While (quotient is not zero) Set quotient to decimal. Number DIV new. Base Set remainder to decimal. Number REM new. Base Make the remainder the next digit to the left in the answer Set decimal. Number to quotient Write "The answer is " Write answer 20
Pseudocode Functionality Variables Names of places to store values quotient, decimal. Number, new. Base Assignment Storing the value of an expression into a variable Set quotient to 64 quotient <-- 64 21 quotient <-- 6 * 10 + 4
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 a. Number Write "You entered " + a. Number 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. " 24 Write "You didn't follow instructions. "
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 number. Of. Pairs Set number. Read to 0 While (number. Read < number. Of. Pairs) Write "Enter two values separated by a blank; press return" Read number 1 Read number 2 If (number 1 < number 2) Print number 1 + " " + number 2 Else Print number 2 + " " number 1 Increment number. Read 26
Walk Through Data 3 Fill in values during each iteration number. Read 55 70 21 33 33 number. Of. Pairs What is the output? 27 number 1 number 2
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 more. Names to true While (more. Names) 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 more. Names 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 last. Name Write "Enter first name; press return. " Read first. Name Prompt for and enter telephone number Level 2 Write "Enter area code and 7 -digit number; press return. " Read telephone. Number Prompt for and enter email address Write "Enter email address; press return. " Read email. Address 34 Level 2
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 first. Name + " " + last. Name Write item's telephone. Number Write item's email. Address 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 Date class dog's birth date Objects 45 Classes of objects
Object-Oriented Design Program World simulates these groups dog. Birthdate class Date birthdate marriage. Date Description 46 Instances
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 47
Object-Oriented Design Responsibilities become methods in the Program World dog. Birthdate class Date get. Month get. Day get. Year birthdate marriage. Date 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 classes list name 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: " + telephone. Number Write "Email address: " + email. Address 61
Responsibility Algorithms Name Class Initialize "Enter the first name; press return. " Read first. Name "Enter the last name; press return. " Read last. Name Print "First name: " + first. Name Print "Last name: " + last. Name 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 first. Name, 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
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? 68
Who am I? I am a mathematician. Why is my picture in a book about computer science? 69
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? 70
- Slides: 70