Chapter 3 Developing a Program AITT 4300 DIGITAL COMPUTER STRUCTURES
PRELUDE TO PROGRAMMING, 6TH EDITION BY ELIZABETH DRAKE
3.1 The Program Development Cycle Problem solving principles ◦ Completely understand the problem
◦Devise a plan to solve it ◦ Carry out the plan ◦ Review the results
Writing a program 1) Analyze the problem 2) Design the program 3) Code the program 4) Test the program
PRELUDE TO PROGRAMMING, 6TH EDITION BY ELIZABETH DRAKE
1. Analyze the problem Identify desired results (output)
Determine input needed to produce those results
Example: Create a program to generate 6 numbers to play the lottery ◦ Is 7, 7, 7, 7, 7, 7 ok? ◦ Is ‐3, 0, 8, 9, 689, 689 ok? ◦ Is 1, 2, 6, 47.98765, 88, 93.45 ok? ◦ These are all 6 numbers but we see we must be more specific ◦ Desired results: 6 different positive integers within the range of 1 to 40
PRELUDE TO PROGRAMMING, 6TH EDITION BY ELIZABETH DRAKE
2. Design the program
Create a detailed description of program ◦ Use charts, models, or ordinary language (pseudocode)
Identify algorithms needed ◦ Algorithm: a step‐by‐step method to solve a problem or complete a task
Algorithms must be: ◦ Well defined ◦ Well ordered ◦ Must produce some result ◦ Must terminate in a finite time
PRELUDE TO PROGRAMMING, 6TH EDITION BY ELIZABETH DRAKE
3. Code the program
Translate charts, models, pseudocode, or ordinary language into program code
Add statements to document what the code does ◦ Internal documenation ◦ External documentation
Each programming language uses its specific syntax
PRELUDE TO PROGRAMMING, 6TH EDITION BY ELIZABETH DRAKE
Syntax
Correct syntax for telling your friend where you put a cheese sandwich is: “I have put it on the table.”
Incorrect use of English syntax to say: “I have it on the table put.”
All the right words are there, but without proper syntax, the sentence is gibberish in English. But translated word for word, the second sentence is correct syntax in German.
PRELUDE TO PROGRAMMING, 6TH EDITION BY ELIZABETH DRAKE
4. Test the program
In analysis phase: continually ask questions ◦ Did I interpret data correctly? ◦ Does program fulfill requirements? ◦ Are my formulas or procedures correct? Etc…
In design phase: use desk‐checking to walk through the program
In coding phase: software will alert you to errors in syntax but not in the logic of the program
Finally, test your program with as many sets of test data as possible ◦ Use good data, bad data, data you know the answers for, etc.
PRELUDE TO PROGRAMMING, 6TH EDITION BY ELIZABETH DRAKE
Additional Steps in the Cycle
o Create an outline of the program so that it is apparent what major tasks and subtasks have to be accomplished and the relationships among these tasks
o Describe in detail how each of these tasks is to be carried out
To put a commercial program (produced by a software publishing company) you may need to: ◦ Create a user’s guide ◦ to help users can understand the intricacies of the program
◦ Create help files ◦ installed with the software for users to get on‐screen help
◦ Train employees to provide telephone or web‐based customer support ◦ Duplicate disks and accompanying materials for distribution ◦ Advertise the program to attract buyers
PRELUDE TO PROGRAMMING, 6TH EDITION BY ELIZABETH DRAKE
Program development is a process
Program development is a cyclical process that often requires returning to earlier steps and, with complex programs, may take many months
The design process may uncover flaws in the analysis
Coding may find problems leading to modifications or additions to the design
Testing inevitably uncovers problems that require returning to previous phases
PRELUDE TO PROGRAMMING, 6TH EDITION BY ELIZABETH DRAKE
PRELUDE TO PROGRAMMING, 6TH EDITION BY ELIZABETH DRAKE
The Sale Price Example A local department store wants to develop a program which, when given an item’s original price and the percentage it is discounted, will compute the sale price, with sales tax.
Output required: name of item, discounted price, amount of sales tax, total price
Variables needed: ItemName, SalePrice, Tax, TotalPrice
Input required: name of item, original price, percent discounted
More variables: OriginalPrice, DiscountRate
Formulas required:
New variable needed: AmountSaved
SalePrice = OriginalPrice – AmountSaved
AmountSaved = OriginalPrice * (DiscountRate/100)
Tax = SalePrice * .065
TotalPrice = SalePrice + Tax
PRELUDE TO PROGRAMMING, 6TH EDITION BY ELIZABETH DRAKE
Design: Input Processing Output Input Perform Calculations (Process) Output
Input variables: Computations: Display:
ItemName AmountSaved = OriginalPrice * DiscountRate/100 TotalPrice
DiscountRate SalePrice = OriginalPrice – AmountSaved ItemName
OriginalPrice Tax = SalePrice * .065 Tax
TotalPrice = SalePrice + Tax SalePrice
3.2 Program Design Modular Programming
To begin designing a program: identify the major tasks the program must accomplish.
Each of these tasks becomes a program module. ◦ if needed, break each of these fundamental “high‐level” tasks into submodules
◦ Some submodules might be divided into submodules of their own ◦ this process can be continued as long as necessary ◦ Identifying the tasks and subtasks is called modular programming
PRELUDE TO PROGRAMMING, 6TH EDITION BY ELIZABETH DRAKE
PRELUDE TO PROGRAMMING, 6TH EDITION BY ELIZABETH DRAKE
Using Modules and Submodules A module performs a single task.
A module is self‐contained and independent of other modules.
A module is relatively short. Ideally, statements should not exceed one page.
Benefits of Modular Programming o program is easier to read
o easier to design, code, and test the program one module at a time
o different program modules can be designed and/or coded by different programmers
o a single module may be used in more than one place in the program
o modules that perform common programming tasks can be used in more than one program
PRELUDE TO PROGRAMMING, 6TH EDITION BY ELIZABETH DRAKE
Pseudocode: uses short, English‐like phrases to describe the outline of a program
Example: pseudocode for the Sale Price Program with modules: Input Data module
Prompt for ItemName, OriginalPrice, DiscountRate Input ItemName, OriginalPrice, DiscountRate