1
Last of the basics
Controlling outputOverflow and underflowStandard function librariesPotential pitfalls of getting information with cinType casting
2
Formatting Output
Escape Sequences \t, \n +othersiomanip.h
setw() setiosflags(…) setprecision()
3
Escape SequencesA simple tablecout << “Name\tTotal\tGrade\n”;cout << “Miyo\t186\t B\n”;cout << “\n Jake\t211\t A\n”;cout << “Syd\t203\t A\n”;
OUTPUTName Total GradeMiyo 186 B
Jake 211 ASyd 203 A_
\n gives a blank line
\n gives a blank line
4
Escape Sequences
\ Changes the meaning of the character that follows it.
\” means take quotes literally
cout << “Al \”Scarface\” Capone”;
displays Al ”Scarface” Capone
5
Escape Sequence Combinationscout << “\n Al\n\”Scarface\”\nCapone”displaysAl“Scarface”Capone
6
Formatting Output
iomanip.h contains the objects which have special effects on the iostream.
*
#include <iostream.h>#include <iomanip.h>
7
setw(n) how many columns for datasetprecision(n) sets number of decimalssetiosflags(ios::fixed) displays 6 digits after the decimal
Formatting Output
iomanip.h contains the objects which havespecial effects on the iostream...
8
Formatting Output
setw(n) how many columns for data(ans = 33, num = 7132)
cout << setw(4) << ans cout << setw(1) << ans << setw(5) << num << setw(3) << num << setw(4) << “Hi”; << setw(3) << “Hi”;
fields expand
337132Hi 337132Hi
9
Formatting Output
setprecision(n) sets number of decimals
x format result314.0 setw(10)
setprecision(2)314.00
point counts
314.0 setw(10)setprecision(5) 314.00000
columns added
314.0 setw(7)setprecision(5) 314.00000
10
Formatting Output example
#include<iostream.h>#include<iomanip.h>
int main() {double v = 0.00123456789;double w = 1.23456789;double x = 12.3456789;double y = 1234.56789;double z = 12345.6789;cout <<v<< “\n”<<w<< “\n”<<x<< “\n”<<y<< “\n”<<z<<”\n\n”;cout << setiosflags(ios::fixed);cout <<v<< “\n”<<w<< “\n”<<x<< “\n”<<y<< “\n”<<z<<”\n\n”;cout << setprecision(2);cout <<v<< “\n”<<w<< “\n”<<x<< “\n”<<y<< “\n”<<z<<”\n\n”;return 0;
}
setiosflags(ios::fixed) displays 6 digits after the decimal
Formatting Output
default
0.00123457 1.2345712.34571234.5712345.7
ios::fixed
0.001235
1.234568
12.345679
1234.567890
12345.678900
+ setprecision(2)
0.00
1.23
12.35
1234.57
12345.68
Formatting Output
For decimal alignment use:For decimal alignment use:
ios::fixed and setprecision( ) sitckysitcky
setw( ) needed each timeneeded each time
cout << setiosflags(ios::fixed) << setprecision(n);cout << setiosflags(ios::fixed) << setprecision(n);
cout << “- -” << setw(n) << var1 << setw(n) << “- -”;cout << “- -” << setw(n) << var1 << setw(n) << “- -”;
cout << “- -\t” << setw(n) << var1 << setw(n) <<var2;cout << “- -\t” << setw(n) << var1 << setw(n) <<var2;
13
Overflow and underflowOverflow means that the result is too large to
be represented in an objects type.
Underflow Result is too small to be represented
by object.
Demonstrate with example Chris using debugger.
14
#include <iostream.h>#include <math.h>int main() {
int x = 1000;cout << x << endl;x = x*x;cout << x << endl;x = x*x;cout << x << endl;x = x*x;cout << x << endl;x = x*x;cout << x << endl;x = x*x;return 0;
}
Example of integer overflow
15
#include <iostream.h>#include <math.h>int main() {
float x = 1.0;cout << x << endl;x = x/1e10;cout << x << endl;x = x/1e10;cout << x << endl;x = x/1e10;cout << x << endl;x = x/1e10;cout << x << endl;x = x/1e10;cout << x << endl;return 0;
}
Example of integer underflow
16
Math Library FunctionsPre-written functions for math'sPortabilityNeeds #include <math.h><Return type> FunctionName(param list)You need to know
What their identifiers (names) are? What is their purpose? Power, sqrt, sin, cos, exp etc Data type of return value and parameters How they blow up?
Use help F1 for usage guide
17
double sqrt(double n)Calculates and returns square root of n. Warning! n must be positive when in doubt
use with fabs(n) -> sqrt(fabs(n)); Can use any number data (will promote) Normal usage :double question = 45.35, double answer; answer = sqrt( question ); :
18
double pow(double n, double b)
Calculates and returns n to the power b. Warning! Can overflow or underflow! Can blow up (if n = 0.0 and b < 0) Can use any number data (will promote) Normal usage:double question = 3.0, double answer; answer = pow(question , 4.0); //raise to power 4:
19
double fabs(double n)Calculates the absolute value of the floating-point argument. Will promote integers Normal usage:double question = -3.0, double answer; answer = fabs(question ); //answer = 3.0:
20
Trigonometric functionsdouble cos(double n), double sin(double n), double tan(double n)
n is in radians360 degrees equals 2 radiansNeed to convert angles90 degrees = /2 radians45 degrees = /4 radiansn degrees = n* /180 radians
21
Inverse Trigonometric functions double acos(double n)double asin(double n)double atan(double n)
n is strictly between –1 and 1 Returns angle in radiansIf you need to convert angles to degrees radians = 180 degrees /2 radians = 90 degreesn radians = n*180/ degrees
22
double log10(double n)double log(double n)double exp(double n)
log10(n) returns the logarithm to base 10 Log10(20) = 1.3013 Pow(10,1.3013) = 20
log(1) = 0; natural logarithm (statistics, radioactive decay population) exp(0) = 1; inverse (ex where e = 2.7182)
23
Math Library Functions
nested functions
sqrt( pow ( fabs (-4), 3) ) =sqrt( pow ( 4.0 , 3) ) =sqrt( 64.0 ) = 8.0
24
Math Function Example
Mathematical notation5.5 e .02(year-1900)
C++ notation5.5 * exp(0.02*(year-1990))
25
Type Coercion
The implicit (automatic) conversion of a value from one data type to another.
someDouble = 42; is stored as 42.0
someInt = 11.9; is stored as 11
*
26
Type CastingAutomatic typecasts mentioned before In arithmetic expressions In passing parameters to library functions
Can be made explicit Stop some of those nagging warning messages To deliberately remove fractional information
Syntax: data_type (expression)
int (5.34 * 1.68)
int (8.9712)This returns a value of 8.
27
Type Casting with assignments
someInt = someDouble - 8.2;
someInt = int(someDouble - 8.2);
These are identical statements.These are identical statements.
28
Pitfalls of getting information into the computer
cin >> my_num;
The keyboard entry is stored into variable called my_num.
29
cin chains
Syntax: cin >> var1 >> var2 >> ...White space or illegible character is used as a terminator. White space can be an newline.Input continues from point of terminationcin >> first >> last >> my_num;
30
cin chain example
int num1, num2, num3;double average;
cout << "Enter three integer numbers: ";cin >> num1 >> num2 >> num3;
average = (num1 + num2 + num3) / 3.0;
cout << "The average is " << average;cout << '\n';
Needed to force floating
Point calculation
31
cin ExampleOutput:
3 5 5The average is 4.33333
OR
Output:
355The average is 4.33333
32
cin Example 2 automatic promotion
double radius, circumference;const double pi = 3.1416;
cout << "Enter the radius of a circle: ";cin >> radius;
circumference = 2 * pi * radius;cout << "The circumference of a circle of radius " << radius << " is " << circumference <<‘\n’;
33
cin promotion
Automatic promotionOutput:
Enter the radius of a circle: 14The circum ... circle of radius 14 is
87.9648
34
cin cautionary example
int num1,double num2 num3;
cout <<"Enter three numbers: ";cin >> num1 >> num2 >> num3;
cout << num1 << ‘\t’<< num2 << ‘\t’ << num3 << endl;
35
cin Example 3
Output:
Enter three numbers :12.8 9.9 8.9
12 0.8 9.9
8.9 is still waiting to be processed!
Do next example Chris
36
#include <iostream.h>
int main() {
int i=1;
int num1;
float num2, num3, num4;
cout << "enter three numbers : ";
cin >> num1 >> num2 >> num3;
cout << num1 << '\t' << num2 << '\t'<< num3 << endl;
cin >> num4;
cout << num4 << endl;
return 0;
}
37
Measures of program quality
Minimum criteria Program should work.
Besides simply working, a program quality can be measured by how whether it is, Clear Robust Efficient Programming in the large Reusable Extensible
38
Clarity
From programmers point of view (good documentation)From a users point of view, program clearly identifies what the inputs are, and what exactly the outputs are.
39
Robustness
Program keeps working even with incorrect data.
40
Efficiency
The program produces its result in a time efficient manner.The program produces its result in a memory efficient manner
41
Programming in the large
Can the program be written using teams of programmers?
42
Extensibility
The program is easy to modify and extend functionality
43
Reusability
It is easy to reuse existing code, both within the current project or for a new project.
44
Procedural vs. OO programming
Procedural programming capable of Clarity Robustness Efficiency Programming in the large
Less well suited for Extensibility Reusability
OO programming designed with Extensibility and Reusability in mind
45
Learning Object Oriented Technologies
Can take many years to learn all.We will be covering first stage on Object oriented programming if we have time.