An Introduction to Programming with C++ Fifth Edition Chapter 2 Beginning the Problem-Solving Process Objectives • Explain the problem-solving process used to create a computer program • Analyze a problem • Complete an IPO chart • Plan an algorithm using pseudocode and flowcharts • Desk-check an algorithm An Introduction to Programming with C++, Fifth Edition 2 Concept Lesson • • • • • • • • Problem Solving Solving Everyday Problems Creating Computer Solutions to Problems Analyzing the Problem Planning the Algorithm Desk-Checking the Algorithm The Gas Mileage Problem Summary An Introduction to Programming with C++, Fifth Edition 3 Problem Solving • In this lesson, you will: – Explore the thought process followed when solving problems – Learn how to use a similar process to create a computer solution to a problem • Called a computer program An Introduction to Programming with C++, Fifth Edition 4 Solving Everyday Problems • First step in solving a problem: analyze it – E.g., problem of being hungry • Next, you plan, review, implement, evaluate, and modify (if necessary) the solution – E.g., if you are still hungry An Introduction to Programming with C++, Fifth Edition 5 Solving Everyday Problems (continued) An Introduction to Programming with C++, Fifth Edition 6 Solving Everyday Problems (continued) An Introduction to Programming with C++, Fifth Edition 7 Creating Computer Solutions to Problems • Analysis tools: IPO charts, pseudocode, flowcharts • To desk-check or hand-trace, use pencil, paper, and sample data to walk through algorithm • A coded algorithm is called a program An Introduction to Programming with C++, Fifth Edition 8 Creating Computer Solutions to Problems (continued) An Introduction to Programming with C++, Fifth Edition 9 Analyzing the Problem • Analyze a problem to: – Determine the goal of solving it • Output – Determine the items needed to achieve that goal • Input • Always search first for the output An Introduction to Programming with C++, Fifth Edition 10 Analyzing the Problem (continued) An Introduction to Programming with C++, Fifth Edition 11 IPO Charts • Use an IPO chart to organize and summarize the results of a problem analysis – IPO: Input, Processing, and Output An Introduction to Programming with C++, Fifth Edition 12 IPO Charts (continued) An Introduction to Programming with C++, Fifth Edition 13 IPO Charts (continued) An Introduction to Programming with C++, Fifth Edition 14 Analyzing the Problem (continued) • First, reduce the amount of information you need to consider in your analysis: An Introduction to Programming with C++, Fifth Edition 15 Analyzing the Problem (continued) • Worse than having too much information is not having enough information to solve problem: An Introduction to Programming with C++, Fifth Edition 16 Analyzing the Problem (continued) • Distinguish between information that is missing and information that is implied: An Introduction to Programming with C++, Fifth Edition 17 Planning the Algorithm • Algorithm: set of instructions that will transform the problem’s input into its output – Record it in the Processing column of the IPO chart • Processing item: intermediate value used by algorithm when processing input into output • Pseudocode is a tool programmers use to help them plan an algorithm – Short English statements An Introduction to Programming with C++, Fifth Edition 18 Planning the Algorithm (continued) An Introduction to Programming with C++, Fifth Edition 19 Planning the Algorithm (continued) • Flowcharts are also used to plan an algorithm – – – – Use standardized symbols Symbols connected with flowlines Oval: start/stop symbol Rectangle: process symbol • Represents tasks such as calculations – Parallelogram: input/output symbol • Represents I/O tasks An Introduction to Programming with C++, Fifth Edition 20 Planning the Algorithm (continued) An Introduction to Programming with C++, Fifth Edition 21 Planning the Algorithm (continued) • A problem can have more than one solution: An Introduction to Programming with C++, Fifth Edition 22 Hints for Writing Algorithms This problem specification is almost identical to the one shown earlier in Figure 2-4 An Introduction to Programming with C++, Fifth Edition 23 Hints for Writing Algorithms (continued) You may use a portion of a previous solution to solve current problem An Introduction to Programming with C++, Fifth Edition 24 Desk-Checking the Algorithm An Introduction to Programming with C++, Fifth Edition 25 Desk-Checking the Algorithm (continued) An Introduction to Programming with C++, Fifth Edition 26 Desk-Checking the Algorithm (continued) • Valid data is data that the programmer is expecting the user to enter • Invalid data is data that he or she is not expecting the user to enter • You should test an algorithm with invalid data – Users may make mistakes when entering data An Introduction to Programming with C++, Fifth Edition 27 The Gas Mileage Problem An Introduction to Programming with C++, Fifth Edition 28 The Gas Mileage Problem (continued) • After planning the algorithm, you desk-check it: An Introduction to Programming with C++, Fifth Edition 29 Summary • Problem-solving typically involves analyzing the problem, and then planning, reviewing, implementing, evaluating, and modifying (if necessary) the solution • Programmers use tools (IPO charts, pseudocode, flowcharts) to help them analyze problems and develop algorithms – During analysis, you determine the output and input – During planning, you write the steps that will transform the input into the output An Introduction to Programming with C++, Fifth Edition 30 Summary (continued) • After the analysis and planning, you desk-check the algorithm – Follow each of the steps in algorithm by hand • Coding refers to translating the algorithm into a language that the computer can understand • Before writing an algorithm, consider whether you have already solved a similar problem An Introduction to Programming with C++, Fifth Edition 31 Application Lesson: Using the First Steps in the Problem-Solving Process • Lab 2.1: Stop and Analyze • Lab 2.2: – Create a program that the salesclerks can use to calculate and display the required number of rolls • Lab 2.3: – The program must now display the number of single and double rolls of wallpaper • Lab 2.4: Desk-Check Lab • Lab 2.5: Debugging Lab An Introduction to Programming with C++, Fifth Edition 32