510 likes | 773 Views
Simple C++ Programs. ELEC 206 Computer Applications for Electrical Engineers Dr. Ron Hayne. Program Structure. Object-Based Programming Program Structure Dev-C++. Object-Based Programming. Object-Oriented Programming Identify the data requirements of the problem
E N D
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 • Abstract Data Types • Class • Inheritance 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 sides of right triangle side1 = x2 - x1; side2 = y2 - y1; distance = 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
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
Program Structure • Statements // Compute sides of right triangle side1 = x2 - x1; side2 = y2 - y1; distance = sqrt(side1 * side1 + side2 * side2); // Print distance cout << "The distance between the two points is " << distance << endl; • Return return 0; 206_C2
General Program Structure preprocessing directives int main() { declarations; statements; } 206_C2
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
Dev-C++ New Source File Compile Run 206_C2
Windows Friendly Exit // Windows friendly exit system("PAUSE"); return 0; 206_C2
Summary • Object-Based Programming • Program Structure • Dev-C++ 206_C2
Simple C++ • Constants and Variables • C++ Operators • Standard Input and Output 206_C2
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
Floating-Point 2.5, -0.004, 15.0 Scientific Notation 25.6 = 2.56 x 101 -0.004 = -4.0 x 10-3 Exponential Notation 25.6 = 2.56e1 -0.004 = -4.0e-3 Mantissa Precision Example Exponent Range Scientific Notation 206_C2
Numeric Data Types • Integers • short • int • long • Floating-Point • float • double • long double 206_C2
Boolean Data Type • Example bool error(false), status(true); cout << error << endl << status; • Program Output 0 1 206_C2
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
String Data • String Constant • Sequence of characters • Double quotes • "Fred","C17" • String Objects • string class 206_C2
String Class /*-----------------------------------------------*/ /* This program prints a greeting */ /* using the string class. */ #include <iostream> #include <string> // Required for string class using namespace std; 206_C2
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
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
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
info lost no loss Assignment Operator • Multiple Assignments x = y = z = 0; • Type Conversion • long double • double • float • long integer • integer • short integer 206_C2
Precedence 2 3 4 Arithmetic Operators • Unary Operators • Positive + • Negative - • Binary Operators • Multiplication * • Division / • Modulus % • Addition + • Subtraction - 206_C2
Mixed Operations • Operation between values of different types • Value of lower type promoted • Cast Operator • (type) • Examples 206_C2
Expressions • Distance = x0 + v0t + at2 double distance, x0, v0, a, t; distance = x0 + v0*t + a*t*t; • Tension = ? 206_C2
Increment and Decrement • Unary Operators • Increment ++ • Decrement -- • Prefix ++count • Postfix count-- • Examples 206_C2
Abbreviated Assignment • Abbreviated Assignment Operators • x = x + 3; x +=3; • y = y * 2; y *=2; • Lowest Precedence (evaluate last) • a = (b += (c + d)); • a = (b = b + (c + d)); • b = b + (c + d); • a = b; 206_C2
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
Standard Output /*-----------------------------------------------*/ /* Program chapter2_4 */ /* */ /* This program computes area of a circle. */ #include <iostream> #include <iomanip> #include <cmath> using namespace std; 206_C2
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
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
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
Summary • Constants and Variables • C++ Operators • Standard Input and Output 206_C2
Problem Solving • Basic Functions • Numerical Technique • Linear Interpolation • Problem Solving Applied • Wind-Tunnel Data Analysis 206_C2
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
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
Practice velocity = sqrt(pow(v0,2) + 2*a*(x - x0)); 206_C2
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
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 206_C2
Data Set Estimate the tempat 2.6s Example 206_C2
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
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
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
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
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
Problem Solving Applied Testing 206_C2