Simple C++ Programs
ELEC 206 Computer Applications for Electrical Engineers Dr. Ron Hayne
Program Structure
Object-Based Programming Program Structure Dev-C++
206_C2
Object-Based Programming
Object-Oriented Programming
Identify the data requirements of the problem How the data will be used in the program
Class Inheritance
Abstract Data Types
206_C2
C++ Program
/*-----------------------------------------------*/ /* Program chapter1_1 */ /* */ /* This program computes the distance between */ /* two points */ #include <iostream> #include <cmath> using namespace std;
206_C2
C++ Program
int main() { // Declare and initialize objects double x1(1), y1(3), x2(4), y2(7), side1, side2, distance; // Compute side1 = x2 side2 = y2 distance = sides of right triangle - x1; - y1; sqrt(side1 * side1 + side2 * side2);
206_C2
C++ Program
// Print distance cout << "The distance between the two points is " << distance << endl; // Windows friendly exit system("PAUSE"); return 0; } /*----------------------------------------------*/
206_C2
Program Structure
Comments
/*-----------------------------------------------*/ /* Program chapter1_1 */
// Declare and initialize objects
Preprocessor Directives
#include <iostream> #include <cmath>
Using Directive
using namespace std;
206_C2 7
Program Structure
Main Function
int main() {
}
Declarations
object types initial values
// Declare and initialize objects double x1(1), y1(3), x2(4), y2(7), side1, side2, distance;
206_C2 8
Program Structure
Statements
// Compute side1 = x2 side2 = y2 distance = sides of right triangle - x1; - y1; sqrt(side1 * side1 + side2 * side2);
// Print distance cout << "The distance between the two points is " << distance << endl;
Return
return 0;
206_C2 9
General Program Structure
preprocessing directives int main() { declarations; statements; }
206_C2
10
Dev-C++
Bloodshed Software
http://www.bloodshed.net/dev/devcpp.html Dev-C++ 5.0 beta 9.2 (4.9.9.2) (9.0 MB) with Mingw/GCC 3.4.2 Download from:
SourceForge
206_C2
11
Dev-C++
New Source File
Compile
Run
206_C2
12
Windows Friendly Exit
// Windows friendly exit system("PAUSE"); return 0;
206_C2
13
Summary
Object-Based Programming Program Structure Dev-C++
206_C2
14
Simple C++
Constants and Variables C++ Operators Standard Input and Output
206_C2
15
Constants and Variables
Objects
Constants
Specific values
Variables
Memory locations
Identifiers
Begin with alphabetic character Lowercase or uppercase letters (case sensitive) Can contain digits (not first character) Cannot be a keyword
206_C2 16
Scientific Notation
Floating-Point
Mantissa
2.5, -0.004, 15.0
25.6 = 2.56 x 101 -0.004 = -4.0 x 10-3 25.6 = 2.56e1 -0.004 = -4.0e-3
Precision
Scientific Notation
Example
Exponent
Range
Exponential Notation
206_C2
17
Numeric Data Types
Integers
short int long
float double long double
Floating-Point
206_C2
18
Boolean Data Type
Example
bool error(false), status(true); cout << error << endl << status;
Program Output
0 1
206_C2
19
Character Data Type
ASCII
Appendix B 7-bit binary
Single quotes
Character Constant
'A', 'b', '3' '3' != 3
Can be interpreted as character or integer
206_C2
20
String Data
String Constant
Sequence of characters Double quotes
"Fred", "C17"
String Objects
string class
206_C2
21
String Class
/*-----------------------------------------------*/ /* This program prints a greeting */ /* using the string class. */ #include <iostream> #include <string> // Required for string class using namespace std;
206_C2
22
String Class
int main() { // Declare and initialize two string objects. string salutation("Hello"), name("Jane Doe"); // Output greeting. cout << salutation << ' ' << name << '!' << endl; // Exit program. return 0;
Hello Jane Doe!
206_C2
23
Symbolic Constants
Const
Declared and initialized Cannot be changed within the program
const double PI = acos(-1.0); const double LightSpeed = 2.99792e08;
206_C2
24
C++ Opeartors
Assignment Operator
identifier = expression;
Constant, Object, Result of an Operation
double sum; int x1; char ch; sum = 10.5; x1 = 3; ch = 'a';
206_C2 25
Expression
double sum(10.5); int x1(3); char ch('a');
Assignment Operator
Multiple Assignments
x = y = z = 0;
Type Conversion
long double double float long integer integer short integer
info lost
no loss
206_C2
26
Arithmetic Operators
Unary Operators
Precedence
Positive Negative Multiplication Division Modulus Addition Subtraction
+ * / % + 206_C2
Binary Operators
27
Mixed Operations
Operation between values of different types
Value of lower type promoted Cast Operator
(type)
Examples
206_C2
28
Expressions
Distance = x0 + v0t + at2
double distance, x0, v0, a, t; distance = x0 + v0*t + a*t*t;
Tension = ?
206_C2
29
Increment and Decrement
Unary Operators
Increment Decrement
++ --
Prefix Postfix Examples
++count count--
206_C2
30
Abbreviated Assignment
Abbreviated Assignment Operators
x = x + 3; y = y * 2;
x +=3; y *=2;
Lowest Precedence (evaluate last)
a = (b += (c + d)); a = (b = b + (c + d)); b = b + (c + d); a = b;
206_C2 31
Standard Output
Standard Output
#include <iostream> cout << "Hello " << name; #include <iomanip> setprecision(n), fixed, scientific setw(n), left, right, setfill(ch) dec, oct, hex endl
Stream Manipulators
206_C2
32
Standard Output
/*-----------------------------------------------*/ /* Program chapter2_4 */ /* */ /* This program computes area of a circle. */ #include <iostream> #include <iomanip> #include <cmath> using namespace std;
206_C2
33
Standard Output
const double PI=acos(-1.0); int main() { // Declare and initialize objects. double radius(4.6777), area; // Compute area area = PI*radius*radius;
206_C2
34
Standard Output
// Output results cout << setprecision(4) << "The radius of the circle is: " << setw(10) << radius << " centimeters" << endl; cout << scientific << "The area of the circle is: " << setw(12) << area << " square centimeters" << endl;
206_C2
35
Standard Input
Standard Input
#include <iostream> cin >> var1 >> var2 >> var3; blanks, tabs, newlines
Whitespace used as delimiters
Values must be compatible with data type of objects Stream Manipulators
#include <iomanip> skipws, noskipws
206_C2
36
Summary
Constants and Variables C++ Operators Standard Input and Output
206_C2
37
Problem Solving
Basic Functions Numerical Technique
Linear Interpolation Wind-Tunnel Data Analysis
Problem Solving Applied
206_C2
38
Basic Functions
Basic Math Functions
#include <cmath>
Arguments are type double
Elementary Math Functions
fabs(x), abs(n) sqrt(x), pow(x,y) ceil(x), floor(x) exp(x), log(x), log10(x)
206_C2
39
Basic Functions
Trigonometric Functions
Angles in radians (180 degrees = radians) sin(x), cos(x), tan(x) asin(x), acos(x), atan(x), atan2(y,x)
const double PI = acos(-1.0); double angle_deg, angle_rad; angle_deg = angle_rad*(180/PI); angle_rad = angle_deg*(PI/180);
206_C2 40
Practice
2 Velocity v0 2a( x x0 )
velocity = sqrt(pow(v0,2) + 2*a*(x - x0));
206_C2
41
Other Functions
Hyperbolic Functions
sinh(x), cosh(x), tanh(x)
Character Functions
#include <cctype> toupper(ch), tolower(ch) isdigit(ch), isupper(ch), islower(ch) isspace(ch), ispunct(ch)
206_C2
42
Interpolation
Use data points to determine estimates of a function f(x) for values of x that were not part of the original set of data
Cubic-spline Interpolation
Third-degree polynomial
Linear Interpolation
Straight line a<b<c ba [ f (c) f (a)] f (b) f (a ) ca
206_C2 43
Example
Data Set
Time, s Temp, deg F 0.0 0.0 1.0 20.0 2.0 3.0 4.0 5.0 60.0 68.0 77.0 110.0
Estimate the temp at 2.6s
206_C2
44
Problem Solving Applied
Wind-Tunnel Data Analysis
Problem Statement
Use linear interpolation to compute a new coefficient of lift for a specified flight-path angle
Input/Output Description
Data Point (a, f(a)) Data Point (c, f(c)) New Angle (b) New Coefficient f(b)
206_C2
45
Problem Solving Applied
Hand Example
Estimate coefficient of lift at 8.7 degrees
Algorithm Development
Read coordinates of adjacent points Read new angle Compute new coefficient Print new coefficient
Angle Coefficient (degrees) of Lift 6 0.479
8 10 12 14 0.654 0.792 0.924 1.035
206_C2
46
Problem Solving Applied
/*-----------------------------------------------*/ /* Program chapter2_5 */ /* */ /* This program uses linear interpolation to */ /* compute the coefficient of lift for an angle.*/ #include <iostream> #include <iomanip> #include <cmath> using namespace std; int main() {
206_C2 47
Problem Solving Applied
// Declare objects double a, f_a, b, f_b, c, f_c; // Get user input from the keyboard. cout << "Use degrees for all angle measurements. \n"; cout << "Enter first angle and lift coefficient: \n"; cin >> a >> f_a; cout << "Enter second angle and lift coefficient: \n"; cin >> c >> f_c; cout << "Enter new angle: \n"; cin >> b;
206_C2
48
Problem Solving Applied
// Use linear interpolation to compute new lift. f_b = f_a + (b-a)/(c-a)*(f_c - f_a); // Print new lift value. cout << fixed << setprecision(3); cout << "New lift coefficient: " << f_b << endl; // Windows friendly exit system("PAUSE"); return 0; }
206_C2
49
Problem Solving Applied
Testing
206_C2
50
Summary
Basic Functions Numerical Technique
Linear Interpolation
Problem Solving Applied
Wind-Tunnel Data Analysis
C++ Statements Style Notes Debugging Notes
End of Chapter Summary
206_C2
51