510 likes | 571 Vues
Programming in C++. Chapter 3 Arithmetic Expressions, Function Calls, and Output. What is an Expression in C++?. An expression is any valid combination of operators and operands. In C++ each expression has a value. . Operators can be. binary involving 2 operands 2 + 3
E N D
Programming in C++ Chapter 3 Arithmetic Expressions, Function Calls, and Output
What is an Expression in C++? • An expression is any valid combination of operators and operands. • In C++ each expression has a value.
Operators can be binary involving 2 operands 2 + 3 unary involving 1 operand - 3 ternary involving 3 operands later
Some C++ Operators PrecedenceOperator Description Higher ( ) Function call + Positive - Negative * Multiplication / Division % Modulus (remainder) + Addition - Subtraction Lower = Assignment
Precedence • Higher Precedence determines which operator is applied first in an expression having several operators.
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
Evaluate the Expression 7 * 10 - 5 % 3 * 4 + 9 means (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
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
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
8.5 ? A A 9.37 ? B B What value is stored? float A; float B; A = 8.5; B = 9.37; A = B;
What is stored? float SomeFloat; SomeFloat SomeFloat = 12;// causes implicit type conversion ? 12.0 SomeFloat
What is stored? int SomeInt; SomeInt SomeInt = 4.8;// causes implicit type conversion ? 4 SomeInt
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
<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)
Keyboard Screen executing program No I/O is built into C++ • Instead, a library provides input stream and output stream istream ostream
>> is a binary operator >> is called the input or extraction operator >> is left associative EXPRESSION HAS VALUE cin >> Age cin STATEMENT cin >> Age >> Weight ;
<< is a binary operator << is called the output or insertion operator << is left associative EXPRESSION HAS VALUE cout << Age cout STATEMENT cout << “You are “ << Age << “ years old\n” ;
Some Expressions int Age; EXAMPLE VALUE Age = 8 8 - Age - 8 5 + 8 13 5 / 8 0 6.0 / 5.0 1.2 float ( 4 / 8 ) 0.0 float ( 4 ) / 8 0. 5 cout << “How old are you?” cout cin >> Age cin cout << Age cout
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;
Values were rounded to 2 decimal places LoCost 12.34 12.35 HiCost
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.
What is in a block? { 0 or more statements here }
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
Parts of a Function • Every function has 2 parts int main (void) heading { body block return 0; }
type of returned value says no parameters name of function What is in a heading? int main (void)
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.
Where are functions? located in libraries OR written by programmers
HEADER FILE FUNCTION EXAMPLE VALUE OF CALL <stdlib.h> 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 <math.h> log(x) log(2.0) .693147 <iomanip.h> setprecision(n) setprecision(3)
Write C++ Expressions for The square root of b2 - 4ac sqrt ( b * b - 4.0 * a * c ) The square root of the average of MyAge and YourAge sqrt ( (MyAge + YourAge) / 2 )
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.
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.
Output Statements SYNTAX (revised) cout << ExprOrStringOrManipulator << ExprOrStringOrManipulator . . . ;
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
What is exact output? #include <iomanip.h> #include <iostream.h> int main ( void) { float myNumber = 123.4587 ; cout.setf ( ios::fixed , ios::floatfield ) ; // use decimal format cout.setf ( ios::showpoint ) ; // print decimal point cout << “Number is ” << setprecision ( 3 ) << myNumber << endl ; return 0 ; }
OUTPUT Number is 123.459 value is rounded if necessary to be displayed with exactly 3 placesafter the decimal point
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
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
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 ) ; // use decimal format cout.setf ( ios::showpoint ) ; // print decimal point cout << “Numbers are: ” << setprecision ( 4 ) << endl << setw ( 10 ) << myNumber << endl << setw ( 10 ) << yourNumber << endl ; return 0 ; }
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 columnswith 4 placesafter the decimal point
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).
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 ) ;
312.0 4.827 x y More examples float x = 312.0 ; float y = 4.827 ; cout.setf ( ios::fixed , ios::floatfield ) ; cout.setf ( ios::showpoint ) ; OUTPUT cout << setprecision ( 2 ) << setw ( 10 ) << x << endl ’’’’312.00 << setw ( 10 ) << y << endl ; ’’’’’’4.83 cout << setprecision ( 1 ) << setw ( 10 ) << x << endl ’’’’’312.0 << setw ( 10 ) << y << endl ; ’’’’’’’4.8 cout << setprecision ( 5 ) << setw ( 7 ) << x << endl 312.00000 << setw ( 7 ) << y << endl ; 4.82700
Program with several functions main( ) function Square( ) function Cube( ) function
Value-returning functions #include <iostream.h> int Square ( int ) ; // declares these 2 functions int Cube ( int ) ; int main ( void ) { cout << “The square of 27 is “ << Square (27) << endl ; // function call cout << “The cube of 27 is “ << Cube (27) << endl ; // function call return 0 ; }
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 ; }
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 ; }
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 ; }