Mercer Chapter 2

advertisement
2-1
Computing Fundamentals with C++
Object-Oriented Programming and Design, 2nd Edition
Rick Mercer
Franklin, Beedle & Associates, 1999
ISBN 1-887902-36-8
Presentation Copyright 1999, Franklin, Beedle & Associates
Students who purchase and instructors who adopt Computing Fundamentals with C++,
Object-Oriented Programming and Design by Rick Mercer are welcome to use this
presentation as long as this copyright notice remains intact.
Chapter 2
Implementation
2-2
 Chapter




Objectives
Understand how to reuse existing code in your
programs with #include
Obtain input data from the user and display
information to the user with cin and cout
Evaluate and create arithmetic expressions 3*x
Understand operations common to many objects
such as int, double, and string:

Construction, Output, Assignment, and Input
– Exercises and Programming Projects to reinforce
implementing simple programs
2.1 The C++ Programming
Language: A Start
2-3
 A C++
program is a sequence of characters
created with a text editor and stored as a file.

this is the source code
 The



file name have specific endings:
UNIX: .cc or .C
DOS or MS-Windows: .cpp
MacOS: .cp or .cpp
2-4
General Forms
 General
forms provide information to create
syntactically correct programs

Anything in yellow boldface must be written
exactly as shown (cout << for example)

Anything in italic represents something that must
be supplied by the user
The italicized portions are defined elsewhere

2-5
General Form: A program
// Comment
#include-directive(s)
using namespace std;
int main()
{
object-initializations
statement(s)
return 0;
}
2-6
Example C++ program
// This C++ program gets a number from the //
user and displays that value squared
#include <iostream> // for cout cin endl
using namespace std;
int main()
{
double x = 0.0;
cout << "Enter a number: ";
cin >> x;
cout << "x squared: " << (x * x) << endl;
}
return 0;
The compiler
2-7
 The




compiler
reads source code in a character by character
fashion
reports errors whenever possible
reports warnings to help avoid errors
conceptually replaces #includes with the source
code of the #included file
#include directives
2-8
 General
form: #include-directive
#include <include-file>
-or-
#include

< > causes a search of the system folder(s)


"include-file"
these files should be found automatically.
The form with " " first searches the working
folder before searching the system folder(s)

the " " indicates an author supplied file name that you
may need in your working folder.
2-9
2.1.1 The smallest pieces of a
C++ Program
 A token
is the smallest recognizable unit in a
programming language
 There are four types of tokens:




special symbols
keywords
identifiers
constants
2-10
 Each
A "tokenized program"
color represents either a different token
symbol
reserved word
identifier
special
constant
comment (gray), or #include directive (cyan)
// Comment: This is a complete C++ program
#include <iostream>
using namespace std;
int main()
{
cout << "Hello World!";
return 0;
}
2.1.2 Special Symbols
2-11
 One
or two character sequences (no spaces)
// <
 Some
>
(
)
{
<<
;
}
!=
special symbols mean different things in
different contexts
2.1.3 Keywords
2-12
 Word
like tokens with a pre-defined meaning
that can't be changed (reserved)
double
 Some
bool
case
char
int
of the keywords in the text :
class
do
else
for
if
long
operator
return
switch
typedef
void
while
2-13
2.1.4 Identifiers
 There
are some standard (must be available
wth the C++ compiler) identifiers:
endl sqrt string width std
 The
programmer can make up new identifiers
(programmer-defined)
test1
x1
 Note: main
aNumber
MAXIMUM
A_1
is a programmer-defined
identifier, cout is a standard identifier
2-14
Active Learning
 Identifiers
have from 1 to 32 characters:
'a'..'z', 'A'..'Z', '0'..'9', '_'


Identifiers should start with a letter: a1 is legal, 1a is
not (can also start with underscore _
C++ is case sensitive. A and a are different.
 Which
a)
b)
c)
d)
of these are valid identifiers?
abc
m/h
main
double
e) ABC
i) a_1
f) 25or6to4
j) student Number
g) 1_time
k) string
h) first name
l) ______
2.1.5 Constants
2-15

floating-point constants
1.234

-12.5
0.0
0.
.0
1e10
string constants
"character between double quotes"

integer constants
-1

0
1
-32768
+32767
character constants (see Chapter 7)
'A'
'b'
'\n'
'1'
0.1e-5
2-16
2.1.6 Comments
 Example
comments
// on one line or
/*
between slash star and star slash
*/



Provide internal documentation
Helps us understand program that we must read-including our own.
Can be used as "pseudocode" within a program
and later changed into C++ or left as is to provide
documentation
2-17
2.2 Common Operations on
Objects
 Common Operations
for many classes of objects
include these four




Declaration
Initialization
Assignment
Input
Output
Construct an object
or optionally initialize its state
Modify the state of an object
Modify the state of an object
Inspect the state of an object
2-18
 Use
2.2.1 Object Constructions
default initial state:
class-name identifier;
double is garbage
-or-
class-name identifier , identifier , … , identifier ;
 Allow client to supply initial state:
class-name identifier = initial-state ;
-or -
class-name identifier ( initial-state ) ;
-or -
class-name identifier = initial-state , identifier ( initial-state )
, … , identifier = initial-state ;
Examples Object
Constructions
2-19
 Construct seven
double
string
double
double


objects
qualityPoints is undefined
credits = 15.5, qualityPoints;
firstName, lastName("Harrison");
x = 0.0, y = 0.0;
z; // garbage state (unknown)
Note: strings have the default value of the null
string "", which has 0 characters.
A double object has no default value--it's
garbage unless an initial value is supplied.
2-20
2.2.2 Output with cout
 Programs
must communicate with users
 This can be done with keyboard input
statements and screen output statements
 A C++ statement is composed of several
components properly grouped together to
perform some operation
 Here is the first statement used to display
constants and object state to the screen:
2-21
 The
The cout statement
general form of a cout statement:
cout << expression-1 << expression-2 << expression-n ;
 Example
cout << "Grade: " << courseGrade << endl;
2-22

When a cout statement is encountered, the
expressions are displayed on the screen in a manner
appropriate to the expression
 New


What happens with cout?
Lines with endl
When encountered in a cout statement, endl generates
a new line on the monitor
To properly use cout and endl, your program must
have this code at the top of the file:
#include <iostream> // for cout and endl
using namespace std;
2-23
Active Learning:
Write the output generated by this program
#include <iostream> // for cout
using namespace std; // so we don’t need std::
int main()
{
double aDouble = 0.0;
cout << "12345678" << endl;
cout << (2.5 * 3) << (2*3) << endl;
cout << aDouble;
return 0;
}
Output?:
2-24
 Certain
2.7.2 Assignment
objects have undefined state
double dunno, do_you;
cout << dunno << endl;
 The
// Output? ______
programmer can set the state of objects with
assignment operations of this form:
object-name = expression ;
 Examples:
dunno = 1.23;
do_you = dunno - 0.23;
2-25
Memory before and after
Object
Name
dunno
do_you
Old
State
?
?
Modified
State
1.23
1.0
 The
expression must be a value that the object can
store (assignment compatible)
dunno = "Ohhh no, you can't do that"; // <-Error
string s;
s = 1.23; // <-Error
Active Learning:
2-26

Write the values for bill and name:
double bill;
string name;
bill
bill
name
name
=
=
=
=
10.00;
bill + (0.06 * bill);
"Bee Bop";
"Hip Hop";
// bill is
___________?
// name is now ________?
2-27
2.2.3 Input with cin
 General
forms :
cin >> object-1 ;
-or-
cin >> object-1 >> object-2 >> object-n ;
 Example: cin >> test1;

When a cin statement is encountered



the program pauses for user input.
the characters typed by the user are processed
the object's state is changed to the value of the input
2-28
Input is separated with blanks,
tabs, and newlines
#include <iostream> // for cout, cin, endl
#include <string>
// for class string
using namespace std;
int main()
{
string name;
cout << "Enter your name: ";
cin >> name;
cout << "Hello " << name;
return 0;
}
Dialogue when the user enters Kim McPhee
McPhee is still waiting to be processed by a non-existent future cin statement
Enter your name:
Hello Kim
Kim McPhee
2-29
2.3 Arithmetic Expressions
 Arithmetic expressions consist of operators
such as + - / * % and operands such as 1.0,
payRate, and hoursWorked
 Example expression used in an assignment:
grossPay = payRate * hoursWorked;
 Another example expression:
(40*payRate) + 1.5*payRate*(hoursWorked-40)
The previous expression has how many
operators ?___ ?
operands ?___ ?
2-30
Arithmetic Expressions
An arithmetic expression can be written in these forms
or
or
or
or
or
or
a numeric object
a numeric constant
expression + expression
expression - expression
expression * expression
expression / expression
( expression )
x
100 or 99.5
1.0 + x
2.5 - x
2*x
x / 2.0
(1 + 2.0)
2-31
Precedence of Arithmetic
Operators
 Expressions with
more than one operator
require some sort of precedence rules:
*
-
/
+
What is
// evaluated left to right order
// evaluated left to right order
2.0 + 4.0 - 6.0 * 8.0 / 6.0
____?
 Use
(parentheses ) for readability or to
intentionally alter an expression:
double C;
double F = 212.0;
C = 5.0 / 9.0 * (F - 32);
// C = _____?
2-32
Active Learning: Write the
complete dialogue with input 2.3
5.0 2.0
#include <iostream> // for cin, cout, and endl
using namespace std;
int main()
{ // Declare Objects
double x, y, z, average;
// Prompt for and get input from the user
cout << "Enter three numbers: ";
cin >> x >> y >> z;
// Process:
average = (x + y + z) / 3.0;
// Output:
cout << "Average: " << average << endl;
return 0;
}
2-33
2.4 const objects
 It
is sometimes convenient to have objects that
cannot have altered state
const class-name identifier = expression ; // use
-orconst class-name identifier ( expression ) ;
this form
Examples:
const double PI = 3.1415926;
const string ERROR_MESSAGE = "Nooooooo";
Errors:
PI = 9.8;
cin >> ERROR_MESSAGE;
2-34
2.5 Another Algorithm Pattern:
Prompt then Input
 The
Input/Process/Output programming
pattern can be used to help design many
programs in the first several chapters
 The Prompt then Input pattern also occurs
frequently


The user is often asked to enter data
The programmer must make sure the user is told
what to enter
2-35
Prompt then Input Pattern
Pa tte rn
Prompt then Input
Pro b le m
O u tlin e
The user must enter something
1) Prompt the user for input
2) Obtain the input
Code
Exa m p le
cout << "Enter your first name: " ;
cin >> firstName ;
2-36
Examples
 Instances
of the Prompt then Input pattern:
cout << "Enter your first name: ";
cin >> firstName;
cout << "Enter accumulated credits: ";
cin >> credits;

Write code that gets the current temperature from the user
? ________ ?
Optional Demo average3.cpp
to see prompt then input used three times
Download