Sie sind auf Seite 1von 51

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

Das könnte Ihnen auch gefallen