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++, Sixth Edition
Problem Solving
People solve hundreds of simple problems every
day without thinking about how they do it
Understanding the thought process involved can
help in solving more complex problems
You can also use a similar process to design a
computer solution to a problem (computer
program)
An Introduction to Programming with C++, Sixth Edition
Solving Everyday Problems
First step in solving a problem: analyze it
Example: paying and mailing a bill
Next, you plan, review, implement, and evaluate
the solution
After this, it may be necessary to modify the
solution
An Introduction to Programming with C++, Sixth Edition
Solving Everyday Problems (contd.)
Figure 2-1 Summary of the analysis and planning steps for
the bill paying problem
An Introduction to Programming with C++, Sixth Edition
Solving Everyday Problems (contd.)
Figure 2-2 Modified algorithm for the bill paying problem
An Introduction to Programming with C++, Sixth Edition
Creating Computer Solutions to
Problems
A similar process to everyday problem solving is
used to create computer programs
A computer program is a solution implemented on
a computer
There are six steps to creating a computer solution
to a problem
An Introduction to Programming with C++, Sixth Edition
Creating Computer Solutions to
Problems (contd.)
Figure 2-3 How to create a computer solution to a problem
An Introduction to Programming with C++, Sixth Edition
Step 1Analyzing the Problem
It is essential to understand a problem before
creating a solution to it
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++, Sixth Edition
Step 1Analyzing the Problem
(contd.)
Figure 2-4 Problem specification for Treyson Mobley
An Introduction to Programming with C++, Sixth Edition
Step 1Analyzing the Problem
(contd.)
Some programmers use an IPO chart to organize
and summarize the results of a problem analysis
IPO: Input, processing, and output
Figure 2-5 Partially completed IPO chart showing the input and output items
An Introduction to Programming with C++, Sixth Edition
10
Hints for Analyzing Problems
Several readings of the problem may be necessary
to fully understand the problem
Cross out irrelevant information in the problem
description
Figure 2-6 Problem specification with unimportant information crossed out
An Introduction to Programming with C++, Sixth Edition
11
Hints for Analyzing Problems (contd.)
Some problem specifications contain incomplete
information
Figure 2-7 Problem specification that does not contain enough information
An Introduction to Programming with C++, Sixth Edition
12
Hints for Analyzing Problems (contd.)
Distinguish between information that is missing and
information that is implied
Figure 2-8 Problem specification in which the input is not explicitly stated
An Introduction to Programming with C++, Sixth Edition
13
Step 2Planning the Algorithm
Algorithm: set of instructions that will transform the
problems input into its output
Record in the Processing column of the IPO chart
Can be written as pseudocode or a flowchart
Pseudocode: tool programmers use to help plan
an algorithm
Short English statements
Not standardized
Not understandable by a computer
An Introduction to Programming with C++, Sixth Edition
14
Step 2Planning the Algorithm
(contd.)
Figure 2-9 Problem specification and IPO chart for the Treyson Mobley problem
An Introduction to Programming with C++, Sixth Edition
15
Step 2Planning the Algorithm
(contd.)
Flowcharts are also used to plan an algorithm
Use standardized symbols
Symbols connected with flowlines
Oval: start/stop symbol
Represents beginning and end of algorithm
Rectangle: process symbol
Represents tasks such as calculations
Parallelogram: input/output symbol
Represents I/O tasks
An Introduction to Programming with C++, Sixth Edition
16
Figure 2-10 Figure 2-9s algorithm in flowchart form
An Introduction to Programming with C++, Sixth Edition
17
Step 2Planning the Algorithm
(contd.)
A problem can have more than one solution
Figure 2-11 A different solution to the Treyson Mobley problem (pseudocode)
An Introduction to Programming with C++, Sixth Edition
18
Step 2Planning the Algorithm
(contd.)
Processing item: an
intermediate value (neither
input nor output) the algorithm
uses to transform input into
output
Figure 2-11 A different solution to the Treyson
Mobley problem (flowchart)
An Introduction to Programming with C++, Sixth Edition
19
Step 3Desk-Checking the Algorithm
Desk-checking an algorithm verifies that it is
correct
Refers to checking an algorithm by hand, rather
than with a computer
Also called hand-tracing
Choose sample data and manually compute the
expected output value
Creating a desk-check table can be helpful
An Introduction to Programming with C++, Sixth Edition
20
Step 3Desk-Checking the Algorithm
(contd.)
Figure 2-12 Manual tip calculation for the first desk-check
An Introduction to Programming with C++, Sixth Edition
21
Step 3Desk-Checking the Algorithm
(contd.)
Figure 2-13 Treyson Mobley solution and partially completed
desk-check table
An Introduction to Programming with C++, Sixth Edition
22
Step 3Desk-Checking the Algorithm
(contd.)
Figure 2-14 Input values entered in the desk-check table
Figure 2-15 Processing items value entered in the desk-check table
Figure 2-16 Output value entered in the desk-check table
An Introduction to Programming with C++, Sixth Edition
23
Step 3Desk-Checking the Algorithm
(contd.)
Figure 2-17 Manual tip calculation for the second desk-check
An Introduction to Programming with C++, Sixth Edition
24
Figure 2-18 Second set of input values entered in the desk-check table
Figure 2-19 Value of the second desk-checks processing item
entered in the desk-check table
Figure 2-20 Value of the second desk-checks output item
entered in the desk-check table
An Introduction to Programming with C++, Sixth Edition
25
Step 3Desk-Checking the Algorithm
(contd.)
Valid data: data that the algorithm is expecting the
user to enter
Invalid data: data that the algorithm 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++, Sixth Edition
26
The Gas Mileage Problem
Figure 2-21 Problem specification for the gas mileage problem
An Introduction to Programming with C++, Sixth Edition
27
The Gas Mileage Problem (contd.)
Plan the algorithm with an IPO chart
Figure 2-22 IPO chart for the gas mileage problem
An Introduction to Programming with C++, Sixth Edition
28
The Gas Mileage Problem (contd.)
Then desk-check the algorithm
Figure 2-23 Desk-check table for the gas mileage problem
An Introduction to Programming with C++, Sixth 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
The first step in problem solving is to analyze the
problem
First determine the output and then the input
An Introduction to Programming with C++, Sixth Edition
30
Summary (contd.)
The second step is to plan the algorithm
Write the steps that will transform the input into the
output
Most algorithms begin with entering input data, then
processing the data, then displaying the output
The third step is to desk-check the algorithm
Choose sample data and manually compute the
expected output
Create a desk-check table to fill in values step by
step
An Introduction to Programming with C++, Sixth Edition
31
Lab 2-1: Stop and Analyze
Aiden Nelinski is paid every Friday and will receive
either a 2.0% or 2.5% raise next week
He wants a program that calculates and displays
the amount of his new weekly pay
Figure 2-26 IPO chart for Lab 2-1
An Introduction to Programming with C++, Sixth Edition
32
Lab 2-2: Plan and Create
Create an algorithm for the manager of the
Lakeview Hotel
Figure 2-30 Completed IPO chart for Lab 2-2
An Introduction to Programming with C++, Sixth Edition
33
Lab 2-3: Modify
Each guest of the Lakeview Hotel pays an
entertainment tax, which is a percentage of the
room charge only
Modify the IPO chart in Figure 2-30
Desk-check the algorithm twice using the given
values
An Introduction to Programming with C++, Sixth Edition
34
Lab 2-4: Desk-Check
An algorithm is given to calculate and display an
annual property tax
Desk-check the algorithm three times using the
given values
Figure 2-36 IPO chart for Lab 2-4
An Introduction to Programming with C++, Sixth Edition
35
Lab 2-5: Debug
An algorithm is given to calculate and display the
average of three numbers but is incorrect
Find and correct the errors in the algorithm
Figure 2-37 IPO chart for Lab 2-5
Figure 2-42 Corrected algorithm for Lab 2-5
An Introduction to Programming with C++, Sixth Edition
36