Programming and Problem Solving — Software Engineering (Read Chap. 2) 1.
-
Upload
john-fields -
Category
Documents
-
view
216 -
download
2
Transcript of Programming and Problem Solving — Software Engineering (Read Chap. 2) 1.
Programming and Programming and Problem Solving — Problem Solving —
Software Engineering Software Engineering(Read Chap. 2)
1
Problem SolvingProblem Solving
A Temperature-conversion problem:
Write a program that, given a temperature in Celsius, displays that temperature in Fahrenheit.
• Implementation (Coding)• Testing, Execution and Debugging• Maintenance
OCD (Object-Centered Design)
2
5 Phases of (Simplified) Software Life Cycle:
• Problem Analysis and Specification• Design
OCD (Object-Centered OCD (Object-Centered Design)Design)
1. Describe the behavior of the program.
2. Identify the problem’s objects and make a table of information about them.
3. Identify the problem’s operations and make a table of information about them.
4. Organize the objects and operations into a sequence of steps, called an algorithm, to solve the problem.
3
BehaviorBehavior
A. Describe the desired behavior of the program:
Our program should display program information to the user and then a prompt for the Celsius temperature on the screen, read thattemperature from the keyboard, compute thecorresponding Fahrenheit temperature, and display the result, along with a descriptive label on the screen.
4
UsingOCD
Problem ObjectsProblem ObjectsB. Identify the nouns in the behavioral description (other
than "non-behavioral" ones like "program" and "user"):
Our program should display program information to the user and then a prompt for the Celsius temperature on the screen, read thattemperature from the keyboard, compute thecorresponding Fahrenheit temperature, and display that temperature, along with a descriptive label on the screen.
These make up the objects in our problem.
5
UsingOCD
cout
cin
Information about ObjectsInformation about ObjectsDetermine a type and a name (if necessary) for each object and whether it is a constant or a variable.
6
Problem Object Type Kind Name
program information text
constant
none
prompt text
constant
none
Celsius temperature real number
variable
celsius
screen output
variable
keyboard input
variable
Fahrenheit temperature
real number
variable
fahrenheit
label text
constant
none
UsingOCD
C++ Type
?
?
double
?
?
double
?
OperationsOperations
These make up the operations in our problem.
C. Identify the verbs in the behavioral description:
Our program should display program information to the user and then a prompt for the Celsius temperature on the screen, read thattemperature from the keyboard, compute thecorresponding Fahrenheit temperature, and display that temperature, along with a descriptive label on the screen.
7
UsingOCD
Information about Information about OperationsOperations
Identify the C++ operator to perform a given operation, if there is one.
To compute the Fahrenheit temperature, we need to
know/find the Celsius to Fahrenheit conversion formula..
8
OperationPre-defined?
C++ Operato
rLibrary
Display yes << iostreamRead yes >> iostreamCompute the Fahrenheit temperature
?? ?? ??
UsingOCD
Celsius-to-FahrenheitCelsius-to-Fahrenheit
Formula for converting Celsius to Fahrenheit:
fahrenheit = 1.8 × celsius + 32
Converting the temperature thus adds new objects and operations to our problem.
9
UsingOCD
Information about Objects Information about Objects (Revised)(Revised)
10
Problem Object Type Kind C++ Type Name
program information text
constant
? none
prompt text
constant
? none
Celsius temperature realnumber
variable
double celsius
screen output
variable
? cout
keyboard input
variable
? cin
Fahrenheit temperature
realnumber
variable
double fahrenheit
label text
constant
? none
conversionfactor 1.8
real number
constant
double none
conversion factor 32
integer constant
int none
UsingOCD
Information about Information about Operations (Revised)Operations (Revised)
11
OperationPre-defined?
C++ Operato
rLibrary
Display yes << iostreamRead yes >> iostreamCompute the Fahrenheit temperature:Multiply two real values (1.8 and celsius)
yes * built-in
Add a real value (the result above) and an integer (32)
yes + built-in
Store a real value (the result above) in a variable
yes = built-in
UsingOCD
AlgorithmAlgorithm
D. Organize the objects and operations into a sequence of steps that solves the problem, called an algorithm.
1. Display via cout information about the program to the user.
2. Display via cout a prompt for the Celsius temperature.
3. Read the temperature from cin.
4. Compute the Fahrenheit temperature from the Celsius temperature.
5. Display via cout the Fahrenheit temperature and an informative label.
12
UsingOCD
CodingCoding
Once we have designed an algorithm, the next step is to translate that algorithm into a high level language like C++.
This involves writing instructions to
— represent the objects, and
— perform the operations
in C++.
13
14
The Code
When learning to program, it is helpful to just start with the algorithm as comments in
main()
/*
John Doe CS 104X Input: Output:-----------------------------------------------*/
#include <iostream> // cin, cout, <<, >>using namespace std;
int main(){}
/* temperature.cpp converts a Celsius temperature to Fahrenheit. John Doe Lab 1 Jan. 5, 2012 CS 104X Input: A Celsius temperature Output: Corresponding Fahrenheit temperature-----------------------------------------------*/
#include <iostream> // cin, cout, <<, >>using namespace std;
int main(){ // 1. Display via cout information about the // program to the user.
// 2. Display via cout a prompt for the Celsius // temperature.
// 3. Read the temperature from cin.
// 4. Compute the Fahrenheit temperature from the // Celsius temperature.
// 5. Display via cout the Fahrenheit temperature // and an informative label. }
cout << "John Doe CS 104X -- Lab 1\n\n"; cout << "** Convert Celsius temps to Fahrenheit **\n";
cout << "Please enter a temperature in Celsius: ";15
/* temperature.cpp converts a Celsius temperature to Fahrenheit. John Doe Lab 1 Jan. 5, 2012 CS 104X Input: A Celsius temperature Output: Corresponding Fahrenheit temperature-----------------------------------------------*/
#include <iostream> // cin, cout, <<, >>using namespace std;
int main(){ // 1. Display via cout information about the // program to the user.
// 2. Display via cout a prompt for the Celsius // temperature.
The Code
double celsius; cin >> celsius;
double fahrenheit = 1.8 * celsius + 32;
cout << celsius << " degrees Celsius is " << fahrenheit << " degrees Fahrenheit.\n";
16
// 3. Read the temperature from cin.
// 4. Compute the Fahrenheit temperature from the // Celsius temperature.
// 5. Display via cout the Fahrenheit temperature // and an informative label.
}
The Code
It’s wise to echo input data to insure computer read what you intended.
17
Comments
/* temperature.cpp converts a Celsius temperature to Fahrenheit. John Doe Lab 1 Jan. 5, 2012 CS 104X Input: A Celsius temperature Output: Corresponding Fahrenheit temperature-----------------------------------------------*/
#include <iostream> // cin, cout, <<, >>using namespace std;
int main(){ // 1. Display via cout information about the // program to the user. cout << "John Doe CS 104X -- Lab 1\n\n"; cout << "** Convert Celsius temps to Fahrenheit **\n";
// 2. Display via cout a prompt for the Celsius // temperature. cout << "Please enter a temperature in Celsius: ";
Always begin a program with
opening documentation enclosed in /* and */.
/* temperature.cpp converts a Celsius temperature to Fahrenheit. John Doe Lab 1 Jan. 5, 2012 CS 104X Input: A Celsius temperature Output: Corresponding Fahrenheit temperature-----------------------------------------------*/
#include <iostream> // cin, cout, <<, >>using namespace std;
int main(){ // 1. Display via cout information about the // program to the user. cout << "John Doe CS 104X -- Lab 1\n\n"; cout << "** Convert Celsius temps to Fahrenheit **\n";
// 2. Display via cout a prompt for the Celsius // temperature. cout << "Please enter a temperature in Celsius: ";
18
LibrariesThis loads the C++ library that we need.
Lab & Proj. 1: #include <cmath>
19
/* temperature.cpp converts a Celsius temperature to Fahrenheit. John Doe Lab 1 Jan. 5, 2012 CS 104X Input: A Celsius temperature Output: Corresponding Fahrenheit temperature-----------------------------------------------*/
#include <iostream> // cin, cout, <<, >>using namespace std;
int main(){ // 1. Display via cout information about the // program to the user. cout << "John Doe CS 104X -- Lab 1\n\n"; cout << "** Convert Celsius temps to Fahrenheit **\n";
// 2. Display via cout a prompt for the Celsius // temperature. cout << "Please enter a temperature in Celsius: ";
Each step of the
algorithm is implemented
by one or more C++
program statementsinside main() function.
Why no \n ?
20
// 3. Read the temperature from cin. double celsius; cin >> celsius;
// 4. Compute the Fahrenheit temperature from the // Celsius temperature. double fahrenheit = 1.8 * celsius + 32;
// 5. Display via cout the Fahrenheit temperature // and an informative label. cout << celsius << " degrees Celsius is " << fahrenheit << " degrees Fahrenheit.\n";}
Each step of the
algorithm is implemented
by one or more C++
program statementsinside main() function.
Note spacing, indentation, & alignment to make program “look nice” and easier to read.
This will be one criterion used in grading.
Always a goodidea to
echoinput data
TestingTestingRun your program using sample data (whose correctness is easy to check):
John Doe CS 104X -- Lab 1
** Convert Celsius temps to Fahrenheit **Please enter the temperature in Celsius: 00 degrees Celsius is 32 degrees Fahrenheit.
21
John Doe CS 104X -- Lab 1
** Convert Celsius temps to Fahrenheit **Please enter the temperature in Celsius: 100100 degrees Celsius is 212 degrees Fahrenheit.
When you are convinced that the program is correct, run it with the required data values.
John Doe CS 104X -- Lab 1
** Convert Celsius temps to Fahrenheit **Please enter the temperature in Celsius: -17.78-17.78 degrees Celsius is -0.004 degrees Fahrenheit.
22
23
For a programming assignment: Lose a few points or may be lucky and the grader doesn’t catch it.
For a real-world problem: Much more may be at stake: money, jobs, and even lives.
Why Testing is Important:
• September,1999: Mars Climate Orbiter
• June, 1996: Ariane 5 rocket
• March,1991: DSC Communications
• February 25, 1991(Gulf War): Patriot missileTesting is never finished; it is only stopped.
Testing can only show the presence of errors, not their absence.
SeeOther Course Information
(CS 104 page):• Importance of
Program Testing — Horror Stories
MaintenanceMaintenance
24
• Large % of computer center budgets
• Large % of programmer's time
• Largest % of software development cost
Why?
Poor structure, poor documentation, poor style
⇒ less likely to catch bugs before release
⇒ fixing of bugs difficult and time-consuming
⇒ impede implementation of enhancements
SeeOther Course Information
(CS 104 page):• Time Spent on
Program Maintenance