ME 515 Mechatronics Introduction to C++ Asanga Ratnaweera - - PDF document

me 515 mechatronics
SMART_READER_LITE
LIVE PREVIEW

ME 515 Mechatronics Introduction to C++ Asanga Ratnaweera - - PDF document

ME 515 Mechatronics 11/9/2006 ME 515 Mechatronics Introduction to C++ Asanga Ratnaweera Department of Mechanical Engineering Faculty of Engineering University of Peradeniya Tel: 081239 (3627) Email: asangar@pdn.ac.lk Introduction to C++


slide-1
SLIDE 1

ME 515 Mechatronics 11/9/2006 1

ME 515 Mechatronics

Introduction to C++

Asanga Ratnaweera Department of Mechanical Engineering Faculty of Engineering University of Peradeniya Tel: 081239 (3627) Email: asangar@pdn.ac.lk

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
  • f C
  • Superset of C
  • Can use a C++ compiler to compile C

programs

  • Gradually evolve the C programs to C++
slide-2
SLIDE 2

ME 515 Mechatronics 11/9/2006 2

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 statement

cout << "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 Insertion statement Ends executions

  • f main() which ends

program Comments Function Function named main() indicates start of program Provides simple access

slide-3
SLIDE 3

ME 515 Mechatronics 11/9/2006 3

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 execution int 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

slide-4
SLIDE 4

ME 515 Mechatronics 11/9/2006 4

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

slide-5
SLIDE 5

ME 515 Mechatronics 11/9/2006 5

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 execution int 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

slide-6
SLIDE 6

ME 515 Mechatronics 11/9/2006 6

Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering 11

C++ Data Types

char short int long 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

0 to 1 boolean 1 bit bool 1.2E +/- 4932 (19 digits) none 10 long double 1.7E +/- 308 (15 digits) none 8 double 3.4E +/- 38 (7 digits) none 4 float 0 to 4,294,967,295 unsigned long int 4 unsigned long

  • 2,147,483,648 to

2,147,483,647 signed long integer 4 long 0 to 65,535 unsigned short integer 2 unsigned short

  • 32,768 to 32,767

signed short integer 2 short 0 to 255 unsigned character 1 unsigned char

  • 128 to 127

signed character 1 char system dependent * unsigned integer system dependent unsigned int system dependent * signed integer system dependent int Range of Values Other Name Bytes Type Name

* signed means the number can be positive or negative.

slide-7
SLIDE 7

ME 515 Mechatronics 11/9/2006 7

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 use

int integer1; int integer2; int sum;

  • Can declare several variables of same type in one

declaration

  • Comma-separated list

int 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

slide-8
SLIDE 8

ME 515 Mechatronics 11/9/2006 8

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 }

slide-9
SLIDE 9

ME 515 Mechatronics 11/9/2006 9

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

slide-10
SLIDE 10

ME 515 Mechatronics 11/9/2006 10

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 }

slide-11
SLIDE 11

ME 515 Mechatronics 11/9/2006 11

Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering 21

Equality and Relational Operators

Standard

  • perator 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.)

slide-12
SLIDE 12

ME 515 Mechatronics 11/9/2006 12

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; }

slide-13
SLIDE 13

ME 515 Mechatronics 11/9/2006 13

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

Format do { statement(s) } while ( condition );

true false action(s) condition

slide-14
SLIDE 14

ME 515 Mechatronics 11/9/2006 14

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 total gradeCounter = 1; // initialize loop counter

Ex: Average of 10 input values

slide-15
SLIDE 15

ME 515 Mechatronics 11/9/2006 15

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 total gradeCounter = 0; // initialize loop counter

slide-16
SLIDE 16

ME 515 Mechatronics 11/9/2006 16

Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering 31

// processing phase // get first grade from user cout << "Enter grade, -1 to end: "; // prompt for input cin >> 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

slide-17
SLIDE 17

ME 515 Mechatronics 11/9/2006 17

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 to Print the number of passes Print the number of failures If 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;

slide-18
SLIDE 18

ME 515 Mechatronics 11/9/2006 18

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 as variable 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)

slide-19
SLIDE 19

ME 515 Mechatronics 11/9/2006 19

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--)
slide-20
SLIDE 20

ME 515 Mechatronics 11/9/2006 20

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

slide-21
SLIDE 21

ME 515 Mechatronics 11/9/2006 21

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

slide-22
SLIDE 22

ME 515 Mechatronics 11/9/2006 22

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 ten

No 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 execution int 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

slide-23
SLIDE 23

ME 515 Mechatronics 11/9/2006 23

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

slide-24
SLIDE 24

ME 515 Mechatronics 11/9/2006 24

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: statements break; // necessary to exit switch case value2: case value3: statements break; default: statements break; }

This statement (s) executed if variable is equal to value1 This 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.

slide-25
SLIDE 25

ME 515 Mechatronics 11/9/2006 25

Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering 49

// Program : Program14.cp // please add the required header files // function main begins program execution int 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 entered cout<<"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; }

slide-26
SLIDE 26

ME 515 Mechatronics 11/9/2006 26

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 true

if ( 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; }

slide-27
SLIDE 27

ME 515 Mechatronics 11/9/2006 27

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

slide-28
SLIDE 28

ME 515 Mechatronics 11/9/2006 28

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++) {

  • utput_data[i]= input_data[i]*8/5 ;

// display the output values cout << “The element ”<<i<< “ of the output array \t =”<<

  • utput_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)

slide-29
SLIDE 29

ME 515 Mechatronics 11/9/2006 29

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

  • fstream 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 data.txt file should be in your working directory file should be in your working directory

slide-30
SLIDE 30

ME 515 Mechatronics 11/9/2006 30

Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering 59

In-built Maths Functions

rounds down to a whole number cout<<floor(11.5); (prints 11) double floor(double x); floor(x) rounds up to a whole number cout<<ceil(11.2); (prints 12) double ceil(double x); ceil(x) returns the absolute value of a floating point number double fabs(double x); fabs(x) returns the absolute value of an integer. int abs(int x); abs(x) Purpose Prototype Function

Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering 60

In-built Maths Functions

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. double pow(double x, double y); pow(x,y) calculates the positive square root of x. (x is >=0) double sqrt(double x); sqrt(x) returns floating point remainder of x/y with same sign as x. Y cannot be

  • zero. Because the modulus
  • perator(%) works only with

integers, this function is used to find the remainder of floating point number division. double fmod(double x, double y); fmod(x,y) Purpose Prototype Function

slide-31
SLIDE 31

ME 515 Mechatronics 11/9/2006 31

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 command int 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 integer cout <<"\nPress any key to continue "<<endl; getch(); //programme pauses cout << "\nEnter a floating point number "; cin >> value; abs_value = fabs(value); //absolute value of floating point variable cout <<"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 up cout <<"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 down cout <<"\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 division

getch();

return 0; // indicate that program ended successfully }

slide-32
SLIDE 32

ME 515 Mechatronics 11/9/2006 32

Sem 7 Asanga Ratnaweera, Department of Mechanical Engineering 63

In-built Maths Functions

arc tangent x atan(x) arc sine of x asin(x) arc cosine x acos(x) tangent of x tan(x) sine of x sin(x) cosine of x cos(x) base 10 logarithm log10(x) natural logarithm log(x) exponential function exp(x) hyperbolic tangent of x tanh(x) hyperbolic sine of x sinh(x) hyperbolic cosine of x cosh(x) The 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 }

slide-33
SLIDE 33

ME 515 Mechatronics 11/9/2006 33

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 () command int 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)

slide-34
SLIDE 34

ME 515 Mechatronics 11/9/2006 34

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 () command int 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 }

slide-35
SLIDE 35

ME 515 Mechatronics 11/9/2006 35

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 input count = 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 }

slide-36
SLIDE 36

ME 515 Mechatronics 11/9/2006 36

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