problem solving and software engineering chapter 1

37
Problem Solving and Software Engineering Chapter 1

Post on 21-Dec-2015

217 views

Category:

Documents


0 download

TRANSCRIPT

Problem Solving and Software Engineering

Chapter 1

C++, An Introduction to Computing, 3rd Ed.

2

Objectives

Indicate uses of computers

First look at a C++ program

Basic phases of software life cycle• Object-centered design

Issues, ethical principles

First look: classes and object-oriented design

C++, An Introduction to Computing, 3rd Ed.

3

Uses of Computers

Industry• Robots, CAD, project management and control

Government• Defense, space, compile data, weather

Medicine• Medical records, life support systems, CAT scan, MR

scanEntertainment• Animation, colorization, special effects

Science• Simulations, molecule analysis, food quality testing

Information Technology• Digital libraries, online art

C++, An Introduction to Computing, 3rd Ed.

4

What is Programming?

Computer Program• A sequence of statements that instruct a

computer in how to solve a problem.

Programming• The act of designing, writing and maintaining

a program

Programmers • People who write programs

C++, An Introduction to Computing, 3rd Ed.

5

The World of C++

Sample program/* greeting.cpp greets its user.** Input: The name of the user* Output: A personalized greeting*********************************************************/#include <iostream> // cin, cout, <<, >>#include <string> // stringusing namespace std;int main(){cout << "Please enter your first name: ";string firstName;cin >> firstName;cout << "\nWelcome to the world of C++, " << firstName << "!\n";}

Comment

Compilerdirectives

Specifies standard related names

Main portion of program.Contains C++ statements.

C++, An Introduction to Computing, 3rd Ed.

6

The World of C++

C++ statements

int main(){cout << "Please enter your first name: ";string firstName;cin >> firstName;cout << "\nWelcome to the world of C++, " << firstName << "!\n";}

Output statement to prompt user

Variable declaration

Input from keyboard stored in variableOutput character string

and value stored in variable

C++, An Introduction to Computing, 3rd Ed.

7

Problem Solving through Software Engineering Phases

Design• Analysis, specify algorithms to solve problem

Coding• Write solution in syntax of language

Testing, Execution, Debugging• Get rid of “bugs”

Maintenance• Update, modify to meet changing needs

C++, An Introduction to Computing, 3rd Ed.

8

Problem

World’s largest ball of twine found in Cawker City, Ks.• How much does the ball weigh?• How many miles

would the twinereach ifunrolled?

C++, An Introduction to Computing, 3rd Ed.

9

Object-Centered Design Steps

State how you want the program to behave

Identify real-world objects, categorize

Identify operations needed to solve the problem

Develop algorithm – arrange objects, operations in an order which solve the problem

C++, An Introduction to Computing, 3rd Ed.

10

Behavior

To find the weight of a ball of string:Enter radius of sphere : 9

Now computing . . .

Weight of ball of string = 999.99

C++, An Introduction to Computing, 3rd Ed.

11

Objects

DescriptionSoftware Objects

Type Kind Nameprompt for radius of sphere

string constant none

screen ostream variable cout

radius of sphere double variable radius

keyboard istream variable cin

weight of ball double variable weight

C++, An Introduction to Computing, 3rd Ed.

12

Operations

Output prompt for radius of sphere to cout

Input real value from cin

Store it in radius

Compute weight

Output weight to cout

C++, An Introduction to Computing, 3rd Ed.

13

More Objects

Computation of weight requires additional objects

DescriptionSoftware Objects

Type Kind Namedensity of sphere

double variable density

4.0 double constant

π double constant PI

3 integer constant

3.0 double constant

C++, An Introduction to Computing, 3rd Ed.

14

Algorithm

1. Initialize constant PI2. Output prompt for radius to cout3. Input real value from cin, store in

radius4. Output prompt for density to cout5. Input real value from cin, store in

density6. Compute

7. Output weight to cout

34.0

3.0

density radiusweight

C++, An Introduction to Computing, 3rd Ed.

15

Coding

First, create a program stub that contains opening documentation• Compiler directives that add items in libraries

needed for some of the• Objects and operations• An empty main function

Convert each step of the algorithm into code. • If it uses a software object that hasn’t already

been declared, add a declaration statement that specifies the object’s type and name.

C++, An Introduction to Computing, 3rd Ed.

16

Coding

/* sphereWeight.cpp computes the weight of a sphere.** Input: The radius (feet) and* the density (pounds/cubic foot) of a sphere* Output: The weight of the sphere (pounds)************************************************/#include <iostream> // cin, cout, <<, >>#include <cmath> // pow()using namespace std;int main(){}

C++, An Introduction to Computing, 3rd Ed.

17

Coding

int main(){const double PI = 3.14159; double radius; // double radius,double density; // density,double weight; // weight;// INPUT DATAcout << "Enter the sphere's radius (feet): ";cin >> radius;cout << "Enter its density (pounds/cubic feet): ";cin >> density;// CALCULATE WEIGHTweight = density * 4.0 * PI * pow(radius, 3) / 3.0;// OUPUT WEIGHTcout << "\nThe weight of the sphere is approximately "<< weight << " pounds.\n";}

C++, An Introduction to Computing, 3rd Ed.

18

Testing

Enter radius of sphere (feet) : 6.5

Enter its density (pounds/cubic feet) : 14.6

The weight of the sphere is approximately 16795 pounds

C++, An Introduction to Computing, 3rd Ed.

19

Testing, Execution, Debugging

Common error sources

Violations of grammar rules of the high level language

Errors that occur during execution

Errors in the design of the algorithm

C++, An Introduction to Computing, 3rd Ed.

20

Syntax Errors

Example:double radius

• Missing semi-colon

Compiler finds most of these kinds of errors

Different compilers give varying degrees of helpful diagnostics

C++, An Introduction to Computing, 3rd Ed.

21

Run Time Errors

Not detected until program runs

Examples• Division by zero causes program to crash• Taking square root of negative causes

program crash

Program must be modified to keep such events from happening

C++, An Introduction to Computing, 3rd Ed.

22

Logic Errors

Program compiles, runs without crashing, but gives incorrect results

These are hardest errors to find

Find by using sample data and hand calculating the correct results, comparing

Note: Testing grows increasingly more difficult with larger programs• Some will run for years without logic error

appearing

C++, An Introduction to Computing, 3rd Ed.

23

Maintenance

Student programs run only a few times

Real-world programs used for many years• Due to significant investment of resources

New features may be required during life of program usage

Upgrading called “maintenance”

Problem Session

Working in groups of two,Solve the following problem...

C++, An Introduction to Computing, 3rd Ed.

25

Problem

Sam Splicer installs coax cable for Metro Cable Co.

Basic service charge $25.00

Additional $2.00 for each foot of cable

Company Pres. wants to compute revenue generated by Sam for given month

Example:263 yards of cable at 27 locations generates $2253.00 in revenue

C++, An Introduction to Computing, 3rd Ed.

26

Describe Behavior of Program

Program should display prompt for number of installations performed and total number of yards of cable installed

User enters values from keyboard

Program computes, displays on screen total amount of revenue resulting from these installations

C++, An Introduction to Computing, 3rd Ed.

27

Behavior Envisioned

To determine revenue generated,

Enter number of installations : 27

Enter number of yards of cable installed : 263

Total revenue generated is $2253.00

C++, An Introduction to Computing, 3rd Ed.

28

Objects

Use description to fill in chart for objects.

DescriptionSoftware Objects

Type Kind Name

C++, An Introduction to Computing, 3rd Ed.

29

Operations

Description Name

Predefined? Library Operator

Use description to fill in chart for operations.

C++, An Introduction to Computing, 3rd Ed.

30

Algorithm and Coding

Work together to determine the steps necessary to have the objects manipulated by the operations

Write the source code• Compile and Link• Test the program

C++, An Introduction to Computing, 3rd Ed.

31

OBJECTive ThinkingSpheres as Objects

Recall behavioral description concerning the sphere of string:

Then note the list of objects:• No mention made of sphere objects• Only used sphere attributes• We ignored the central noun … sphere

Display prompt for radius. User enters value. Program computes weight, displays it

on screen

Display prompt for radius. User enters value. Program computes weight, displays it

on screen

C++, An Introduction to Computing, 3rd Ed.

32

Creating a New Type : Sphere

When no type for an object exists, we create a type• Called a class

A class provides• Space for storing the attributes of an object• Operations for manipulation of the object

C++, An Introduction to Computing, 3rd Ed.

33

Operations for Sphere Class

Initialize attributes to default values

Read in various values for attributes

Print various attributes

Retrieve various attribute values for use by other routines

C++, An Introduction to Computing, 3rd Ed.

34

Code Example Using Sphere Object

#include <iostream> // cin, cout, <<, >>#include "Sphere.h" // Sphere classusing namespace std;int main(){cout << "Enter the radius (feet) "<< " and density (lbs/sq-ft) of the sphere: ";Sphere aSphere;aSphere.readRadiusAndDensity(cin);cout << "\nThe sphere weighs "<< aSphere.getWeight() << " pounds.\n";}

Declaration of Sphere object

Sphere object sends message

to operation

File with Sphere

declaration

C++, An Introduction to Computing, 3rd Ed.

35

Calculating Sphere Density using Sphere Class

#include <iostream> // cin, cout, <<, >>#include "Sphere.h" // Sphere classusing namespace std;int main(){cout << "Enter the radius (feet) "<< " and weight (lbs) of the sphere: ";Sphere aSphere;aSphere.readRadiusAndWeight(cin);cout << "\nThe sphere's density is "<< aSphere.getDensity() << " lbs/sq-ft\n";}

C++, An Introduction to Computing, 3rd Ed.

36

Ethics and Issues

“To be good is noble, but to show others how to be good is nobler, and no trouble.”Mark Twain

Ethics are becoming more of an issue in the area of computers.• Professional organizations are adopting,

instituting codes of ethics• Colleges and universities have policies

governing responsible uses of computers

C++, An Introduction to Computing, 3rd Ed.

37

Ethics and Issues

Consider the essay by Professor Anne Marchant (see web site of text)• Ethics and Society• Computer Crime and Security• Health Concerns and the Environment• Information Ownership• “Netiquette” and Hoaxes• Internet Content and Free Speech• Privacy• Quality Control and Risk Reduction• The Future