CIS 3100
Programming with C++
Professor ENNOURE
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
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
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
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
5
Solving Everyday Problems
(continued)
6
Solving Everyday Problems
(continued)
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
8
Creating Computer Solutions to
Problems (continued)
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
10
Analyzing the Problem (continued)
11
IPO Charts
• Use an IPO chart to organize and summarize the
results of a problem analysis
– IPO: Input, Processing, and Output
12
IPO Charts (continued)
An Introduction to Programming with C++, Fifth Edition 13
IPO Charts (continued)
14
Analyzing the Problem (continued)
• First, reduce the amount of information you need to
consider in your analysis:
15
Analyzing the Problem (continued)
• Worse than having too much information is not
having enough information to solve problem:
16
Analyzing the Problem (continued)
• Distinguish between information that is missing and
information that is implied:
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
18
Planning the Algorithm (continued)
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
20
Planning the Algorithm (continued)
21
Planning the Algorithm (continued)
• A problem can have more than one solution:
22
Hints for Writing Algorithms
This problem specification is almost identical to the one shown
earlier in Figure 2-4
23
Hints for Writing Algorithms
(continued)
You may use a portion of a previous solution to solve current problem
24
Desk-Checking the Algorithm
25
Desk-Checking the Algorithm
(continued)
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
27
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
28
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
29