Simple C++ Programs

Download Report

Transcript Simple C++ Programs

Simple C++ Programs
ELEC 206
Computer Applications for
Electrical Engineers
Dr. Ron Hayne
Program Structure
 Object-Based Programming
 Program Structure
 Dev-C++
206_C2
2
Object-Based Programming
 Object-Oriented Programming


Identify the data requirements of the problem
How the data will be used in the program
 Abstract Data Types


Class
Inheritance
206_C2
3
C++ Program
/*-----------------------------------------------*/
/* Program chapter1_1
*/
/*
*/
/* This program computes the distance between
*/
/* two points
*/
#include <iostream>
#include <cmath>
using namespace std;
206_C2
4
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
5
C++ Program
// Print distance
cout << "The distance between the two points is "
<< distance << endl;
// Windows friendly exit
system("PAUSE");
return 0;
}
/*----------------------------------------------*/
206_C2
6
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


Variables


Specific values
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

 Scientific Notation


Precision

Example
 Exponent
25.6 = 2.56 x 101
-0.004 = -4.0 x 10-3

Range
 Exponential Notation


25.6 = 2.56e1
-0.004 = -4.0e-3
206_C2
17
Numeric Data Types
 Integers



short
int
long
 Floating-Point



float
double
long double
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
 Character Constant

Single quotes


'A', 'b', '3'
Can be interpreted as character or integer

'3' != 3
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;
 Expression

Constant, Object, Result of an Operation
double sum(10.5);
int x1(3);
char ch('a');
double sum;
int x1;
char ch;
sum = 10.5;
x1 = 3;
ch = 'a';
206_C2
25
Assignment Operator
 Multiple Assignments
x = y = z = 0;
 Type Conversion






long double
double
float
long integer
integer
short integer
info lost
206_C2
no loss
26
Arithmetic Operators
 Unary Operators


Positive
Negative
Precedence
+
-
2
 Binary Operators





Multiplication
Division
Modulus
Addition
Subtraction
*
/
%
+
206_C2
3
4
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
++
--
++count
count--
 Examples
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;
 Stream Manipulators





#include <iomanip>
setprecision(n), fixed, scientific
setw(n), left, right, setfill(ch)
dec, oct, hex
endl
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;
 Whitespace used as delimiters

blanks, tabs, newlines
 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
 Problem Solving Applied

Wind-Tunnel Data Analysis
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
Velocity  v02  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
ba
f
(
b
)

f
(
a
)

[ f (c)  f (a )]

ca

206_C2
43
Example
 Data Set
 Estimate the temp
at 2.6s
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
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 Coefficient f(b)
New Angle (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

206_C2
Angle Coefficient
(degrees)
of Lift
6
0.479
8
0.654
10
0.792
12
0.924
14
1.035
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
 End of Chapter Summary



C++ Statements
Style Notes
Debugging Notes
206_C2
51