ME 515 Mechatronics
description
Transcript of ME 515 Mechatronics
ME 515 Mechatronics
Introduction to C++Asanga Ratnaweera
Department of Mechanical EngineeringFaculty of Engineering
University of PeradeniyaTel: 081239 (3627)
Email: [email protected]
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
2
Introduction to C++ Programming
C++ Improves on many of C's features Has object-oriented capabilities
Increases software quality and reusability Developed by Bjarne Stroustrup at Bell Labs in 1980
Called "C with classes" C++ (increment operator) - enhanced version of C
Superset of C Can use a C++ compiler to compile C programs Gradually evolve the C programs to C++
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
3
Introduction to C++ Programming
Output in C++ Included in iostream.h header file cout - standard output stream (connected to screen) << stream insertion operator ("put to") cout << "hi";
Puts "hi" cout, which prints it on the screen End line
endl; Stream manipulator - prints a newline and flushes output
buffer Some systems do not display output until "there is
enough text to be worthwhile" endl forces text to be displayed
Cascading Can have multiple << or >> operators in a single
statementcout << "Hello " << "there" << endl;
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
4
// Program: Display greetings/* Author(s): A.B.C. Dissanayake Date: 1/24/2001*/#include <iostream>
using namespace std;
int main() { cout << "Hello world!" << endl; return 0;}
Basic components of a simple C++ Program
Preprocessor directives
InsertionstatementEnds executions
of main() which ends program
Comments
Function
Function named main()
indicates start of
program
Provides simple access
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
5
Introduction to C++ Programming
// Program : Program01.cpp // First program in C++.#include <iostream.h>// function main begins program executionint main() {
cout << "Welcome to C++!”; return 0; // indicate that program ended successfully } // end function main
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
6
Visual C++ Editors Click new on file menu to create a new file Select file tab on new dialogue box
Select C++ Source File
Click OK Write the code Save with the
extension cpp
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
7
Visual C++ Editors To compile a program
Press Ctrl+F7 To build a program
Press F7 This will straight away
compile and link a program To execute a program
Press Ctrl+F5 This will straight away
compile and link and execute a program
To run a program Press F5
All these commands are available in Build Minibar
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
8
Introduction to C++ Programming
// Program : Program02.cpp // Printing a line with multiple statements.#include#include <iostream> <iostream>#include#include < <cstdio>> using namespace std;// function main begins program execution int main() {
cout << "Welcome "; cout << "to C++!\n“<<endl;
getchar(); // program waits until key board input is given
return 0; // indicate that program ended successfully} // end function main
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
9
Escape sequences Escape
Sequence
Description
\ n Newline. Position the screen cursor to the beginning of the next line.
\ t Horizontal tab. Move the screen cursor to the next tab stop.
\ r Carriage return. Position the screen cursor to the beginning of the current line; do not advance to the next line.
\ a Alert. Sound the system bell.
\ \ Backslash. Used to print a backslash character.
\ " Double quote. Used to print a double quote character.
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
10
A Simple Program:Printing a Line of Text
// Program : Program03.cpp // Printing multiple lines with a single statement#include#include <iostream> <iostream>#include#include < <cstdio>>using namespace std;// function main begins program executionint main() {
cout <<" \t\t Welcome to C++! \n\n“ <<endl; // Tabs and new line
cout <<“ My First Programme \a“ <<endl; // Alert sound
cout <<“ \t\t\t\t\"Bye\“ "<<endl; // double quotation
getchar(); return 0; // indicate that program ended successfully } // end function main
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
11
C++ Data Types
charshortintlong
float double long double
String
Numbers without fractions(integers)
Numbers with fractions(floating-point numbers)
Non-numbers
Characters
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
12
Type Name Bytes Other Name Range of Values
intsystem dependent
* signed integer system dependent
unsigned intsystem dependent
* unsigned integer system dependent
char 1 signed character -128 to 127
unsigned char 1 unsigned character 0 to 255
short 2 signed short integer -32,768 to 32,767
unsigned short 2 unsigned short integer 0 to 65,535
long 4 signed long integer-2,147,483,648 to 2,147,483,647
unsigned long 4 unsigned long int 0 to 4,294,967,295
float 4 none 3.4E +/- 38 (7 digits)
double 8 none 1.7E +/- 308 (15 digits)
long double 10 none 1.2E +/- 4932 (19 digits)
bool 1 bit boolean 0 to 1* signed means the number can be positive or negative.
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
13
C++ Programming Variables
Location in memory where value can be stored Common data types
int - integer numbers char - characters double - floating point numbers
Declare variables with name and data type before useint integer1;
int integer2;
int sum; Can declare several variables of same type in one
declaration Comma-separated listint integer1, integer2, sum;
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
14
C++ Programming Variables
Variable names (identifier) Series of characters (letters, digits,
underscores) Cannot begin with a digit Case sensitive Should not be a keyword
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
15
C++ Programming Input
cin - standard input object (connected to keyboard)
>> stream extraction operator ("get from") cin >> myVariable;
Gets stream from keyboard and puts it into myVariable
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
16
#include#include <iostream> <iostream>#include#include < <cstdio >> using namespace std; // programme to add two user input variables int main() { int integer1; // first number to be input by user int integer2; // second number to be input by user int sum; // variable in which sum will be stored cout << "Enter first integer = "; // prompt cin >> integer1; // read an integer cout << "Enter second integer = "; // prompt cin >> integer2; // read an integer sum = integer1 + integer2; // assign result to sum cout << "Sum is " << sum << endl; // print sum getchar(); return 0; // indicate that program ended successfully }
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
17
#include#include <iostream> <iostream>#include#include < <cstdio>>using namespace std; // programme to add two user input variables int main() { double value1; // first number to be input by user double value2; // second number to be input by user double sum; // variable in which sum will be stored cout << "Enter first integer = "; // prompt cin >> value1; // read an integer cout << "Enter second integer = "; // prompt cin >> value2; // read an integer sum = value1 + value2; // assign result to sum cout << "Sum is " << sum << endl; // print sum getchar(); return 0; // indicate that program ended successfully }
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
18
C++ Programming Arithmetic calculations
Multiplication * Division /
Integer division truncates remainder 7/5 evaluates to 1
Modulus operator % Modulus operator returns remainder
7%5 evaluates to 2
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
19
#include#include <iostream> <iostream>#include#include < <cstdio>> using namespace std;
// programme to add two user input variables int main() { double value1; // first number to be input by user double value2; // second number to be input by user double ratio; // variable in which sum will be stored cout << "Enter first integer = "; // prompt cin >> value1; // read an integer cout << "Enter second integer = "; // prompt cin >> value2; // read an integer ratio = value1/value2; // assign result to sum cout << “The ratio is " << ratio << endl; // print sum getchar(); return 0; // indicate that program ended successfully }
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
20
#include#include <iostream> <iostream>#include#include < <cstdio>> using namespace std; // programme to add two user input variables int main() { int value1; // first number to be input by user int value2; // second number to be input by user int rem; // variable in which sum will be stored cout << "Enter first integer = "; // prompt cin >> value1; // read an integer cout << "Enter second integer = "; // prompt cin >> value2; // read an integer rem = value1%value2; // assign result to sum cout << “The remainder is " << rem << endl; // print sum getchar(); return 0; // indicate that program ended successfully }
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
21
Equality and Relational Operators
Standard operator
C++ equality
Example Meaning
> > x > y x is greater than y < < x < y x is less than y
>= x >= y x is greater than or equal to y
<= x <= y x is less than or equal to y
= = x = y x is assigned with y = == x == y x is equal to y
!= x != y x is not equal to y
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
22
if Selection Structure Selection structure
Choose among alternative courses of action
If the condition is true Print statement executed, program continues to
next statement If the condition is false
Print statement ignored, program continues Indenting makes programs easier to read
C++ ignores whitespace characters (tabs, spaces, etc.)
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
23
#include#include <iostream> <iostream>#include#include < <cstdio>> using namespace std;int main() { int num; // first number to be read from user cout << "Enter an integer variable : “; cin >> num;// num % 2 computes the remainder when num is divided by 2 if ( num % 2 == 0 ) {
cout << num << “ \t is an Even Number" <<endl;
cout << “Enter another number" <<endl; } else {
cout << num << " \t is Odd Number“<< endl; cout << “ Enter another number" <<endl; }getchar(); return 0;}
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
24
#include#include <iostream> <iostream>#include#include < <cstdio>> using namespace std; // simple if statement int main() { int number; cout<<"Enter an integer number" <<endl; cin>> number; if (number == 1) cout<<"You entered 1.“<<endl; else if (number > 1) cout<<"That number is greater than 1.“ <<endl; else if (number < 1) cout<< "That number is less than 1.“ <<endl; else cout<<"That wasn't a number.“ <<endl; getchar()return 0;}
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
25
while Repetition Structure Repetition structure
Action repeated while some condition remains true
while there are more items on my shopping list Purchase next item and cross it off my list while loop repeated until condition becomes
false Example
int product = 2;
while ( product <= 1000 )
product = 2 * product;
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
26
do/while Repetition Structure
Similar to while structure Makes loop continuation test at end, not
beginning Loop body executes at least once
Formatdo
{
statement(s)
}
while ( condition );
true
false
action(s)
condition
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
27
// Using the do/while repetition structure.#include#include <iostream> <iostream>#include#include < <cstdio>> using namespace std; // function main begins program execution int main() { int counter = 1; // initialize counter (essential) do { cout << counter << " "; // display counter counter = counter+1; // incremental counter } while (counter <= 10 ); // end do/while cout <<“End of program”<< endl; getchar(); return 0; // indicate successful termination } // end function main
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
28
// Program : Program06.cpp // Class average program with counter-controlled
repetition.#include#include <iostream> <iostream>
#include#include < <cstdio>>
int main() { int total; // sum of grades input by user int gradeCounter; // number of grade to be entered next int grade; // grade value int average; // average of grades// initialization phase
total = 0; // initialize totalgradeCounter = 1; // initialize loop counter
Ex: Average of 10 input values
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
29
// processing phase while ( gradeCounter <= 10 ) { // loop 10 times cout << "Enter grade: "; // prompt for input cin >> grade; // read grade from user total = total + grade; // add grade to total gradeCounter = gradeCounter + 1; // increment
counter } // termination phase average = total / 10; // integer division // display result cout << "Class average is " << average << endl; getchar(); return 0; // indicate program ended successfully } // end function main
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
30
// Program : Program07.cpp // Class average program with sentinel-controlled
repetition.#include#include <iostream> <iostream>
#include#include < <cstdio>>
#include#include <iomanip> // parameterized stream manipulators
using namespace std;
// function main begins program execution int main() { int total; // sum of grades int gradeCounter; // number of grades entered int grade; // grade value double average; // number with decimal point for average // initialization phase
total = 0; // initialize totalgradeCounter = 0; // initialize loop counter
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
31
// processing phase// get first grade from usercout << "Enter grade, -1 to end: "; // prompt for inputcin >> grade; // read grade from user // loop until sentinel value read from user while ( grade != -1 ) { total = total + grade; // add grade to total gradeCounter = gradeCounter + 1; // increment counter cout << "Enter grade, -1 to end: "; // prompt for input cin >> grade; // read next grade } // end while // termination phase // if user entered at least one grade ... if ( gradeCounter != 0 ) { // calculate average of all grades entered average = static_cast< double >( total ) / gradeCounter;
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
32
// display average with one digits of precision cout << "Class average is " << setprecision( 2 )<< average << endl;
} // end if part of if/else else // if no grades were entered, output appropriate message cout << "No grades were entered" << endl; getchar(); return 0; // indicate program ended successfully } // end function main
Note : 1. static_cast< double > will convert the integer variable to double variable
2. setprecision( n ) set the number of decimal places to n-1, where n is an integer
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
33
Nested Control Structures Refine
Print a summary of the exam results and decide if tuition should be raised
toPrint the number of passesPrint the number of failuresIf more than eight students passed
Print “Raise tuition”
Program next
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
34
// Program : Program08.cpp// Analysis of examination results.#include#include <iostream> <iostream>#include#include < <cstdio>> using namespace std; // function main begins program execution int main() { // initialize variables in declarations int passes = 0; // number of passes int failures = 0; // number of failures int studentCounter = 1; // student counter int result; // one exam result // process 10 students using counter-controlled loop while ( studentCounter <= 10 ) { // prompt user for input and obtain value from user cout << "Enter result (1 = pass, 2 = fail): "; cin >> result;
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
35
// if result 1, increment passes; if/else nested in while if ( result == 1 ) // if/else nested in while passes = passes + 1; else // if result not 1, increment failures failures = failures + 1; // increment studentCounter so loop eventually terminates studentCounter = studentCounter + 1; } // end while // termination phase; display number of passes and failures cout << "Passed " << passes << endl; cout << "Failed " << failures << endl; // if more than eight students passed, print "raise tuition" if ( passes > 8 ) cout << "Raise tuition " << endl; getchar(); return 0; // successful termination } // end function main
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
36
Assignment Operators Assignment expression abbreviations
Addition assignment operator c = c + 3; abbreviated to
c += 3; Statements of the form
variable = variable operator expression;
can be rewritten asvariable operator= expression;
Other assignment operators
d -= 4 (d = d - 4)
e *= 5 (e = e * 5)
f /= 3 (f = f / 3)
g %= 9 (g = g % 9)
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
37
Increment and Decrement Operators
Increment operator (++) Increment variable by one c++
Same as c += 1 (C=C+1)
Decrement operator (--) similar Decrement variable by one c--
Same as c -= 1 (C=C-1)
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
38
Increment and Decrement Operators
Pre-increment Variable changed before used in
expression Operator before variable (++c or --c)
Post-increment Incremented changed after expression
Operator after variable (c++, c--)
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
39
Increment and Decrement Operators
If c = 5, then
cout << ++c; c is changed to 6, then printed out
cout << c++; Prints out 5 (cout is executed before the
increment.) c then becomes 6
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
40
Increment and Decrement Operators
When variable not in expression Pre-incrementing and post-incrementing
have same effect ++c; cout << c;
and c++;
cout << c;
are the same
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
41
// Program : Program09.cpp // Preincrementing and postincrementing.#include#include <iostream> <iostream>#include#include < <cstdio>>using namespace std; // function main begins program execution int main() { int c; // declare variable // demonstrate postincrement c = 5; // assign 5 to c cout <<“C is ”<<c << endl; // print 5 cout <<“C++ is ”<< c++ << endl; // print 5 then post-increment cout <<“New C is”<< c << endl ; // print 6 // demonstrate preincrement c = 5; // assign 5 to c cout <<“C is ”<<c << endl; // print 5 cout <<“++C is ”<< ++c << endl; // pre-increment and print 6 cout <<“New C is”<< c << endl ; // print 6 getchar(); return 0; // indicate successful termination}
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
42
#include#include <iostream> <iostream>#include#include < <cstdio>>using namespace std;// function main begins program execution int main() { int counter = 1; // initialization while ( counter <= 10 ) // repetition condition { cout << counter << endl; // display counter ++counter; // increment } // end while getchar(); return 0; // indicate successful termination } // end function main
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
43
for Repetition Structure General format when using for loops
for ( initialization; LoopContinuationTest; increment )
statement
Example int counter;
for( counter = 1; counter <= 10; counter++ )
cout << counter << endl;
Prints integers from one to tenNo semicolon after last statement
Where the counter variable is ONLY used within the for block, the variable can be declared within the for structure. For example, these two statements can be replaced by:
for ( int counter = 1; counter <= 10; counter++ )
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
44
for Repetition Structure
#include#include <iostream> <iostream>#include#include <cstdlib> <cstdlib>using namespace std;
// function main begins program executionint main(){ // Initialization, repetition condition and incrementing // are all included in the for structure header. for ( int counter = 1; counter <= 10; counter++ ) cout << “counter” << endl; getchar(); return 0; // indicate successful termination} // end function main
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
45
int main() { int x; // x declared here so it can be used after the loop // loop 10 times for ( x = 1; x <= 10; x++ ) { // if x is 5, terminate loop if ( x == 5 ) break; // break loop only if x is 5 cout << x << " "; // display value of x } // end for cout << "\nBroke out of loop when x became " << x << endl;getchar();return 0;}
Break Command
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
46
int main() { // loop 10 times for ( int x = 1; x <= 10; x++ ) { // if x is 5, continue with next iteration of loop if ( x == 5 ) continue; // skip remaining code in loop body cout << x << " "; // display value of x } // end for structure return 0; // indicate successful termination}
Continue Command
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
47
switch Multiple-Selection Structure
true
false
.
.
.
case a case a action(s) break
case b case b action(s) break
false
false
case z case z action(s) break
true
true
default action(s)
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
48
switch Multiple-Selection Structure
switch Test variable for multiple values Series of case labels and optional default case
switch ( variable ) {
case value1: statementsbreak; // necessary to exit switch
case value2: case value3:
statementsbreak;
default: statements
break; }
This statement (s) executed if variable is equal to value1This statement (s) executed if variable is equal to value2 or to value3
This statement (s) executed if variable is NOT equal to any of the previous case values above.
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
49
// Program : Program14.cp // please add the required header files // function main begins program executionint main() { char value; cout << "Enter + for Clockwise motion or - for Anticlockwise motion: "; cin >> value; // read value from use switch ( value) { case '+': // + is entered
cout<<“\n\n\t Forward motion is executed\n\n"<<endl;
break; case '-': // - is entered
cout <<“\n\n\t Backward motion is executed\n\n"<<endl;
break; default: // catch all other characters cout << "Incorrect entry.“ << " Enter a new direction." << endl; break; // optional; will exit switch anyway }getchar();return 0;}
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
50
int main() { int value; cout << "Enter 1 for Clockwise motion or 2 for Anticlockwise motion: "; cin >> value; // read value from use switch ( value) { case 1: { // 1 is entered
cout<<“Forward motion is executed"<<endl;cout<<“The motor is rotating in clockwise
direction"<<endl;}break;
case 2: { // 2is enteredcout<<"Backward motion is executed"<<endl;cout<<“The motor is rotating in anticlockwise
direction"<<endl; }
break; default: // catch all other characters cout << "Incorrect entry.“ << " Enter a new direction." << endl; break; // optional; will exit switch anyway }getchar();return 0;}
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
51
Logical Operators Used as conditions in loops, if
statements && (logical AND)
true if both conditions are trueif ( gender == 1 && age >= 65 ) ++seniorFemales;
|| (logical OR) true if either of condition is true
if ( semesterAverage >= 90 || finalExam >= 90 ) cout << "Student grade is A" << endl;
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
52
#include#include <iostream> <iostream>#include#include < <cstdio>> using namespace std;int main(){ int value1; // variable 1 int value2; // variable 2 cout << "Enter 1 if the signal is high or 0 if low :"; cin >> value1; // read value for input signal cout << "Enter 1 if the signal is high or 0 if low :"; cin >> value2; // read value for input signal if (value1 == 1 && value2 == 1 ) // AND operation
cout <<“\nAND output is high"<<endl;if (value1 == 1 || value2 ==1 ) // OR operation
cout <<“\nOR output is high"<<endl;if (value1 == 0 || value2 ==0 ) // OR operation
cout <<“\nAND output is low"<<endl;if (value1 == 0 && value2 ==0 )
cout <<" \nOR output is low"<<endl;if (value1 > 1 && value2 > 1 )
cout<<“\nWrong Signal"<<endl; getchar(); return 0;}
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
53
Arrays Consecutive memory locations all referring to same
data type with common name
a[0] a[1] a[2] a[3] a[4] a[5] a[6] locations 31 0 -9 17 3 -6 44 values
Size of a[7] declare as int a[7] (single dimension)
C++ representation a[7] ={31, 0,-9,17,3,-6,44 };
Multidimensional arrays (ex: two dimensional) A[3][5]
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
54
Arrays
#include#include <iostream> <iostream>#include#include < <cstdio>> using namespace std;
// function main begins program execution int main() { int input_data[] ={1,2,3,4,5}; // Initialization of an integer array // displaying values cout << “The 1st element of the array \t =”<< input_data[0]<< endl; cout << “The last element of the array\t=”<< input_data[4]<< endl; getchar(); return 0; // indicate successful termination} // end function main
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
55
Arrays#include#include <iostream> <iostream>#include#include < <cstdio>> using namespace std;int main(){ float input_data[] ={1,2,3,4,5}; // Initialization of an integer array float output_data[10]; // Conversion of miles to kilometers // Multiply each element by 8 and divide by 5 for(int i=0; i<=4;i++) { output_data[i]= input_data[i]*8/5 ; // display the output values
cout << “The element ”<<i<< “ of the output array \t =”<< output_data[i]<< endl;} getchar(); return 0; // indicate successful termination} // end function main
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
56
File handling
Keyboard I/P is limited and large files are normally read/written from disk
C++ data files are just streams of bytes For keyboard / screen we have used,
#include <iostream> - (cin & cout) For disc we use,
#include <fstream> and define our data by either ifstream(i/p) or ofstream (o/p)
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
57
File handling#include#include <iostream> <iostream>#include#include < <cstdio>> #include#include <fstream>using namespace std;
int main(){int i;float Data_Array[10]={1,2,3,4,5,6,7,8,9,10};//writing data to a file data_out.txt
ofstream file_out("E:/C_data/data_out.txt", ios::out); for (i=0; i<10; i++)
file_out <<Data_Array[i]<<endl; cout<<"Data writing is completed"<<endl; getchar();return 0;} Note: the data will be written to a file data_out.txt at E:/E:/C_data//
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
58
File handling#include#include <iostream> <iostream>#include#include < <cstdio>> #include <fstream>using namespace std;
int main(){int i;float Data_Array[10];// initialize the array for(i=0; i<10; i++) Data_Array[i]=0;/*Read values from the input file data.txt */ ifstream Data_in(“E:/C_data/data_out.txt", ios::in);
for(i=0; i<10; i++ )Data_in>>Data_Array[i];
for(i=0; i<10; i++ ) cout << Data_Array[i]<<endl; getch();return 0;}
Note: data.txt file should be in your working directorydata.txt file should be in your working directory
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
59
In-built Maths Functions
Function Prototype Purpose
abs(x) int abs(int x); returns the absolute value of an integer.
fabs(x) double fabs(double x);
returns the absolute value of a floating point number
ceil(x) double ceil(double x);
rounds up to a whole number cout<<ceil(11.2); (prints 12)
floor(x) double floor(double x);
rounds down to a whole numbercout<<floor(11.5); (prints 11)
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
60
In-built Maths Functions
Function Prototype Purpose
pow(x,y) double pow(double x, double y);
calculates x to the power of y. If x is negative, y must be an integer. If x is zero, y must be a positive integer.
sqrt(x) double sqrt(double x);
calculates the positive square root of x.(x is >=0)
fmod(x,y) double fmod(double x, double y);
returns floating point remainder of x/y with same sign as x. Y cannot be zero. Because the modulus operator(%) works only with integers, this function is used to find the remainder of floating point number division.
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
61
In-built Maths Functions#include <iostream.h>#include <stdlib.h>#include <conio.h>#include <math.h> // header file for maths commandint main() {
int integer;float value;float abs_value;float round_up;cout << "Enter an integer "; cin >> integer;cout <<"The absolute value \t= "<<abs(integer) <<endl; //absolute
value of integercout <<"\nPress any key to continue "<<endl; getch(); //programme pausescout << "\nEnter a floating point number "; cin >> value;abs_value = fabs(value); //absolute value of floating point variablecout <<"The absolute value \t= "<<abs_value<<endl;
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
62
cout <<"\nPress any key to continue "<<endl;getch();round_up = ceil(abs_value); //rounding upcout <<"Round up value \t= "<<round_up<<endl;cout <<"\nPress any key to continue "<<endl; getch();cout <<"Round down value \t= "<<floor(abs_value) <<endl; //rounding
downcout <<"\nPress any key to continue "<<endl;getch();cout <<round_up<<" to power "<<abs(integer) <<" is
"<<pow(round_up,abs(integer))<<endl; // variable round_up to power absolute value of variable integer
cout <<"\nPress any key to continue "<<endl;getch();cout <<" Square root of 100 is "<<sqrt(100) <<endl; //square root of 100 cout <<"\nPress any key to continue "<<endl;getch();cout <<"The remainder of 4.343/2.342 is "<<fmod(4.343, 2.342)
<<endl;//remainder of the floating point divisiongetch();
return 0; // indicate that program ended successfully }
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
63
In-built Maths Functions
cos(x) cosine of x
sin(x) sine of x
tan(x) tangent of x
acos(x)
arc cosine x
asin(x) arc sine of x
atan(x)
arc tangent x
cosh(x)
hyperbolic cosine of x
sinh(x) hyperbolic sine of x
tanh(x)
hyperbolic tangent of x
exp(x) exponential function
log(x) natural logarithm
log10(x)
base 10 logarithmThe trigonometric functions work with angles in radians rather than degrees.All of the trigonometric functions take double arguments and have double return types.
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
64
Trigonometric functions #include <iostream.h>#include <stdlib.h>#include <conio.h>#include <math.h> // header file for maths command
# define PI 3.14159265358 // definition of a universal constant
int main(){ float angle;
float sine;cout << “ Enter the angle in degrees : "; cin >>angle; sine = sin(angle*PI/180); // converts the degrees to radians and
calculates sine cout << “ \n\n\t Sine "<< angle<< “ is ”<<sine<<endl;
getch(); return 0; // indicate that program ended successfully }
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
65
Time delay #include <iostream.h>#include <stdlib.h>#include <conio.h>#include <windows.h> // header file for Sleep () command
int main() {
int count=1; while ( count <= 10) // loop 10 times
{ cout << "counter value = "<<count<<endl;
count = count + 1; Sleep(10); // Delay time in ms is given inside the bracket
} getch(); return 0; // indicate that program ended successfully }
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
66
Hardware addressing
#include <iostream.h>#include <stdlib.h>#include <conio.h>#include <windows.h> // header file for Sleep ()
commandint main() {
_outp(0x378,1); // writes 1 to address 0x378 (parallel port)sleep(10); // Delay time in ms is given inside the bracket _outp(0x378,0); // writes 0 to address 0x378 (parallel port)
getch(); return 0; // indicate that program ended successfully }
Command : _outp(address, value) or _inp(address,value)
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
67
User defined functions
Syntax type Funtion_name (type variable, type
variable, …)
Ex: int my_function(int x, float y ) float my_function(float x, float y )
Return data type Data inputs
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
68
User defined functions #include <iostream.h>#include <stdlib.h>#include <conio.h>#include <windows.h> // header file for Sleep ()
commandint delayed_counter (int);int main(){
int delay_time;int last;cout<<“Enter the delay time in seconds \t:”;cin>> delay_time;last =delayed_counter (delay_time*1000); // function call cout<<“ Last function value \t:”<<last<<endl;
getchar(); return 0; // indicate that program ended successfully }
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
69
User defined functions
int delayed_counter (int a){int count=1; while ( count <= 10) { // loop 10 times cout << "counter value = "<<count<<endl; //
prompt for inputcount = count + 1; // add grade to total
Sleep(a); // Delay time in ms }return count;}
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
70
User defined functions #include <iostream.h>#include <stdlib.h>#include <conio.h>
float add (float,float);int main(){ float x,y; float addition; cout<<“Enter the first variable \t:”; cin>> x; cout<<“Enter the second variable \t:”; cin>> y; addition=add (x,y); // calling the function cout<<“The addition is \t:”<<addition<<endl; getch(); return 0; // indicate that program ended successfully }
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
71
User defined functions
float add (float a, float b){float sum;sum =a+b;cout<<“the sum is \t =“ <<sum<<endl;return sum; // the function returns the value sum}
Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering
72
Debugging a program
Break points Place the cursor at the line where a break
point is to be place and press F9 Stepping into a function
Press F11 Stepping out of a function
Press Shift+F11 Stepping over
Press F10 Run to the next cursor position
Press Ctrl+F10