Transcript cout

Programming in C++
Chapter 3
Arithmetic Expressions, Function Calls,
and Output
1
What is an Expression in C++?

An expression is any valid combination
of operators and operands.

In C++ each expression has a value.
2
Operators can be
binary
involving 2 operands
2+3
unary
involving 1 operand
-3
ternary
involving 3 operands
later
3
Some C++ Operators
Precedence
Higher
Lower
Operator
( )
+
*
/
%
+
=
Description
Function call
Positive
Negative
Multiplication
Division
Modulus (remainder)
Addition
Subtraction
Assignment
4
Precedence

Higher Precedence determines which
operator is applied first in an
expression having several operators.
5
Associativity

Left to right Associativity means that in an
expression having 2 operators with the same
priority, the left operator is applied first.

In C++ the binary operators
* , / , % , + , - are all left associative.

Expression 9 - 5 - 1 means ( 9 - 5 ) - 1
4-1
3
6
Evaluate the Expression
means
7 * 10 - 5 % 3 * 4 + 9
(7 * 10) - 5 % 3 * 4 + 9
70 - 5 % 3 * 4 + 9
70 - (5 % 3) * 4 + 9
70 - 2 * 4 + 9
70 - ( 2 * 4 ) + 9
70 - 8 + 9
( 70 - 8 ) + 9
62 + 9
71
7
Parentheses
Parentheses can be used to change the
usual order
 Parts in ( ) are evaluated first
 Evaluate (7 * (10 - 5) % 3) * 4 + 9

(7 * 5 % 3 ) * 4 + 9
( 35 % 3 ) * 4 + 9
2 * 4 + 9
8
+ 9
17
8
Assignment Operator Syntax
VariableName = Expression
First, Expression on right is evaluated.
Then the resulting value is stored in the
memory location of VariableName on left.
NOTE: An automatic type coercion occurs after
evaluation but before the value is stored if the
types differ for Expression and VariableName
9
What value is stored?
float A;
float B;
A = 8.5;
B = 9.37;
A = B;
A
8.5
A
?
B
9.37
B
?
10
What is stored?
float SomeFloat;
?
SomeFloat
SomeFloat = 12;
// causes implicit type conversion
12.0
SomeFloat
11
What is stored?
int SomeInt;
?
SomeInt
SomeInt = 4.8;
// causes implicit type conversion
4
SomeInt
12
Type Casting is Explicit
Conversion of Type
int(4.8)
has value
4
float(5)
has value
5.0
float(7/4)
has value
1.0
float(7) / float(4)
has value
1.75
13
<iostream.h> is header file

for a library that defines 3 objects

an istream object named cin (keyboard)

an ostream object named cout (screen)

an ostream object named cerr (screen)
14
No I/O is built into C++

Instead, a library provides input stream and
output stream
Keyboard
Screen
executing
program
istream
ostream
15
>> is a binary operator
>> is called the input or extraction operator
>> is left associative
EXPRESSION
HAS VALUE
cin >> Age
cin
STATEMENT
cin >> Age >> Weight ;
16
<< is a binary operator
<< is called the output or insertion operator
<< is left associative
EXPRESSION
cout << Age
HAS VALUE
cout
STATEMENT
cout << “You are “ << Age << “ years old\n” ;
17
Some Expressions
int Age;
EXAMPLE
Age = 8
- Age
5+8
5/8
6.0 / 5.0
float ( 4 / 8 )
float ( 4 ) / 8
cout << “How old are you?”
cin >> Age
cout << Age
VALUE
8
-8
13
0
1.2
0.0
0. 5
cout
cin
cout
18
What values are stored?
float LoCost;
float HiCost;
LoCost = 12.342;
HiCost = 12.348;
LoCost = float (int (LoCost * 100.0 + 0.5) ) / 100.0;
HiCost = float (int (HiCost * 100.0 + 0.5) ) / 100.0;
19
Values were rounded to 2
decimal places
12.34
LoCost
12.35
HiCost
20
Functions

Every C program must have a function
called main ( )

Program execution always begins with
function main ( )

Any other functions are subprograms
and must be called.
21
What is in a block?
{
0 or more statements here
}
22
Function Calls

One function calls another by using the
name of the called function together with
( ) containing a parameter list

A function call temporarily transfers
control from the calling function to the
called function
23
Parts of a Function

Every function has 2 parts
int main (void)
{
heading
body block
return 0;
}
24
What is in a heading?
type of returned value
name of function
says no parameters
int main (void)
25
More about functions

It is not considered good practice for the body
block of main ( ) to be long.

Function calls are used to do tasks

Every C++ function has a return type

If the return type is not void, the function returns a
value to the calling block.
26
Where are functions?
located in libraries
OR
written by programmers
27
HEADER FILE
<stdlib.h>
FUNCTION
EXAMPLE
OF CALL
VALUE
abs(i)
abs(-6)
6
fabs(x)
fabs(-6.4)
6.4
<math.h>
pow(x,y)
pow(2.0,3.0)
8.0
<math.h>
sqrt(x)
sqrt(100.0)
10.0
sqrt(x)
sqrt(2.0)
1.41421
log(x)
log(2.0)
.693147
<math.h>
<iomanip.h> setprecision(n) setprecision(3)
28
Write C++ Expressions for
2
The square root of b - 4ac
sqrt ( b * b - 4.0 * a * c )
The square root of the average of MyAge
and YourAge
sqrt ( (MyAge + YourAge) / 2 )
29
Manipulators

Manipulators are used only in input and
output statements.

endl, setw, and setprecision are
manipulators that can be used to control
output format.

endl is use to terminate the current output
line, and create blank lines in output.
30
Insertion Operator ( << )

The insertion operator << takes 2
operands.

The left operand is a stream expression,
such as cout.

The right operand is an expression of
simple type, or a string, or a manipulator.
31
Output Statements
SYNTAX (revised)
cout << ExprOrStringOrManipulator
<< ExprOrStringOrManipulator . . . ;
32
setprecision(n)

requires #include <iomanip.h> and appears in
an expression using insertion operator (<<)

specifies n as the number of places displayed
after the decimal point for floating point values

remains in effect until explicitly changed by
another call to setprecision
33
What is exact output?
#include <iomanip.h>
#include <iostream.h>
int main ( void)
{
float myNumber = 123.4587 ;
cout.setf ( ios::fixed , ios::floatfield ) ;
cout.setf ( ios::showpoint ) ;
// use decimal format
// print decimal point
cout << “Number is ” << setprecision ( 3 )
<< myNumber << endl ;
return 0 ;
}
34
OUTPUT
Number is 123.459
value is rounded if necessary to be displayed
with exactly 3 places after the decimal point
35
To Remember

To cause your program to output
numbers that have a decimal point to a
certain number of decimal places
» cout.setf(ios::fixed);
» cout.setf(ios::showpoint);
» cout.precision(2);

Any output after these statements will
have the precision as indicated
36
setw(n)

requires #include <iomanip.h> and appears in
an expression using insertion operator (<<)

affects only the very next item displayed

“set width” specifies n as the number of total
columns in which to display a number or string
(not char data). Parameter n is called the
fieldwidth specification. The number of
columns used is expanded if n is too narrow.

is useful to align columns of output
37
What is exact output?
#include <iomanip.h>
#include <iostream.h>
int main ( void)
{
float myNumber = 123.4 ;
float yourNumber = 3.14159 ;
cout.setf ( ios::fixed , ios::floatfield ) ;
cout.setf ( ios::showpoint ) ;
// use decimal format
// print decimal point
cout << “Numbers are: ” << setprecision ( 4 ) << endl
<< setw ( 10 )
<< myNumber << endl
<< setw ( 10 )
<< yourNumber << endl ;
return 0 ;
}
38
OUTPUT
Numbers are:
123.4000
3.1416
each is displayed right-justified and
rounded if necessary and each is
located in a total of 10 columns with
4 places after the decimal point
39
Using setf( )

setf( ) is a function associated with output
streams. To call this function use this syntax
DesiredOutputStream.setf( ParameterList ) ;

setf( ) can be used to print the decimal point
(even if there are trailing zeros) for floating
values that are output, and to specify that the
value be printed with a fixed position decimal
point (rather than in scientific notation).
40
cout.setf( ) statements

Use the following statements to specify that
(for output sent to the cout stream) decimal
format (not scientific notation) be used, and
that a decimal point be included (even for
floating values with 0 as fractional part).
cout.setf( ios :: fixed, ios :: floatfield ) ;
cout.setf( ios :: showpoint ) ;
41
312.0
More examples
4.827
x
float x = 312.0 ;
float y = 4.827 ;
cout.setf ( ios::fixed , ios::floatfield ) ;
cout.setf ( ios::showpoint ) ;
y
OUTPUT
cout << setprecision ( 2 )
<< setw ( 10 )
<< x << endl
<< setw ( 10 )
<< y << endl ;
 3 1 2.00
 4.83
cout << setprecision ( 1 )
<< setw ( 10 )
<< x << endl
<< setw ( 10 )
<< y << endl ;
 3 1 2.0
 4.8
cout << setprecision ( 5 )
<< setw ( 7 )
<< x << endl
<< setw ( 7 )
<< y << endl ;
3 1 2.00000
4.82700
42
Program with several functions
main( ) function
Square( ) function
Cube( ) function
43
Value-returning functions
#include <iostream.h>
int Square ( int ) ;
int Cube ( int ) ;
// declares these 2 functions
int main ( void )
{
cout << “The square of 27 is “
<< Square (27) << endl ;
cout << “The cube of 27 is “
<< Cube (27)
<< endl ;
// function call
// function call
return 0 ;
}
44
Rest of Program
int Square ( int n )
// header and body here
{
return n * n ;
}
int Cube ( int n )
// header and body here
{
return n * n * n ;
}
45
A void function call stands alone
#include <iostream.h>
void DisplayMessage ( int n ) ;
// declares function
int main(void)
{
DisplayMessage( 15 ) ;
//function call
cout << “Good Bye“ << endl ;
return 0 ;
}
46
A void function does NOT
return a value
void DisplayMessage ( int n )
// header and body here
{
cout << “I have liked math for “
<< n << “ years” << endl ;
}
47