ME 395 Introduction to Mechanical Design

Download Report

Transcript ME 395 Introduction to Mechanical Design

ME 515 Mechatronics
Introduction to C++
Asanga Ratnaweera
Department of Mechanical Engineering
Faculty of Engineering
University of Peradeniya
Tel: 081239 (3627)
Email: [email protected]
Introduction to C++
Programming

Sem 7
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++
Asanga Ratnaweera, Department of
Mechanical Engineering
2
Introduction to C++
Programming

Output in C++





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

Sem 7
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
Can have multiple << or >> operators in a single statement
cout << "Hello " << "there" << endl;
Asanga Ratnaweera, Department of
Mechanical Engineering
3
Basic components of a
simple C++ Program
// Program: Display greetings
Preprocessor
/* Author(s): A.B.C. Dissanayake
directives
Date: 1/24/2001*/
Comments
#include <iostream>
Function
named
main()
indicates
start of
program
Sem 7
using namespace std;
Provides simple access
int main() {
cout << "Hello world!" << endl;
return 0;
}
Ends executions
of main() which ends
program
Insertion
statement
Asanga Ratnaweera, Department of
Mechanical Engineering
Function
4
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
5
Visual C++ Editors


Click new on file menu to create a new file
Select file tab on new dialogue box




Sem 7
Select C++ Source File
Click OK
Write the code
Save with the
extension cpp
Asanga Ratnaweera, Department of
Mechanical Engineering
6
Visual C++ Editors





Sem 7
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
Asanga Ratnaweera, Department of
Mechanical Engineering
7
Introduction to C++
Programming
// Program : Program02.cpp
// Printing a line with multiple statements.
#include <iostream>
#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
8
Escape sequences
Escape
Description
Sequence
\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
9
A Simple Program:
Printing a Line of Text
// Program : Program03.cpp
// Printing multiple lines with a single statement
#include <iostream>
#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
Sem 7
Asanga Ratnaweera, Department of
Mechanical Engineering
10
C++ Data Types
char
short
int
long
Sem 7
Characters
Numbers without fractions
(integers)
float
double
long double
Numbers with fractions
(floating-point numbers)
String
Non-numbers
Asanga Ratnaweera, Department of
Mechanical Engineering
11
Type Name
Bytes
Other Name
Range of Values
int
system
dependent
* signed integer
system dependent
unsigned int
system
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
Sem 7
* signed means the number can be positive or negative.
Asanga Ratnaweera, Department of
Mechanical Engineering
12
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;

Sem 7
Can declare several variables of same type in one
declaration

Comma-separated list
int integer1, integer2, sum;
Asanga Ratnaweera, Department of
Mechanical Engineering
13
C++ Programming

Variables

Sem 7
Variable names (identifier)
 Series of characters (letters, digits,
underscores)
 Cannot begin with a digit
 Case sensitive
 Should not be a keyword
Asanga Ratnaweera, Department of
Mechanical Engineering
14
C++ Programming

Input
 cin - standard input object (connected to
keyboard)
 >> stream extraction operator ("get from")
 cin >> myVariable;

Sem 7
Gets stream from keyboard and puts it
into myVariable
Asanga Ratnaweera, Department of
Mechanical Engineering
15
#include <iostream>
#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
16
#include <iostream>
#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
17
C++ Programming

Arithmetic calculations
 Multiplication *
 Division /

Integer division truncates remainder


Modulus operator %

Modulus operator returns remainder

Sem 7
7/5 evaluates to 1
7%5 evaluates to 2
Asanga Ratnaweera, Department of
Mechanical Engineering
18
#include <iostream>
#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
19
#include <iostream>
#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
20
Equality and Relational
Operators
Standard C++
operator equality
Example Meaning
>
<
>
<
>=
x>y
x<y
x >= y
x is greater than y
x is less than y
x is greater than or equal to y
<=
x <= y
x is less than or equal to y
=
==
!=
x=y
x == y
x != y
x is assigned with y
x is equal to y
x is not equal to y


=
=

Sem 7
Asanga Ratnaweera, Department of
Mechanical Engineering
21
if Selection Structure

Selection structure
 Choose among alternative courses of action
 If the condition is true


If the condition is false


Print statement ignored, program continues
Indenting makes programs easier to read

Sem 7
Print statement executed, program continues to
next statement
C++ ignores whitespace characters (tabs, spaces,
etc.)
Asanga Ratnaweera, Department of
Mechanical Engineering
22
Sem 7
#include <iostream>
#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;
Asanga Ratnaweera, Department of
}
Mechanical Engineering
23
#include <iostream>
#include <cstdio>
using namespace std;
Sem 7
// 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;
}
Asanga Ratnaweera, Department of
Mechanical Engineering
24
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

Sem 7
Example
int product = 2;
while ( product <= 1000 )
product = 2 * product;
Asanga Ratnaweera, Department of
Mechanical Engineering
25
do/while Repetition
Structure

Similar to while structure



Makes loop continuation test at end, not
beginning
Loop body executes at least once
Format
action(s)
do
{
statement(s)
}
while ( condition );
Sem 7
Asanga Ratnaweera, Department of
Mechanical Engineering
true
condition
false
26
// Using the do/while repetition structure.
#include <iostream>
#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
27
Ex: Average of 10 input values
// Program : Program06.cpp
// Class average program with counter-controlled
repetition.
#include <iostream>
#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
Sem 7
Asanga Ratnaweera, Department of
Mechanical Engineering
28
// 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
Sem 7
} // end function main
Asanga Ratnaweera, Department of
Mechanical Engineering
29
// Program : Program07.cpp
// Class average program with sentinel-controlled repetition.
#include <iostream>
#include <cstdio>
#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
Sem 7
Asanga Ratnaweera, Department of
Mechanical Engineering
30
// 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
31
// 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
32
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”

Sem 7
Program next
Asanga Ratnaweera, Department of
Mechanical Engineering
33
// Program : Program08.cpp
// Analysis of examination results.
#include <iostream>
#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
34
// 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
35
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
e
f
g
Sem 7
-=
*=
/=
%=
4
5
3
9
(d
(e
(f
(g
=
=
=
=
d
e
f
g
*
/
%
4)
5)
3)
9)
Asanga Ratnaweera, Department of
Mechanical Engineering
36
Increment and Decrement
Operators

Increment operator (++)


Increment variable by one
c++


Decrement operator (--) similar


Decrement variable by one
c-
Sem 7
Same as c += 1 (C=C+1)
Same as c -= 1 (C=C-1)
Asanga Ratnaweera, Department of
Mechanical Engineering
37
Increment and Decrement
Operators

Pre-increment

Variable changed before used in expression


Post-increment

Incremented changed after expression

Sem 7
Operator before variable (++c or --c)
Operator after variable (c++, c--)
Asanga Ratnaweera, Department of
Mechanical Engineering
38
Increment and Decrement
Operators

If c = 5, then
cout << ++c;

c is changed to 6, then printed out
cout << c++;


Sem 7
Prints out 5 (cout is executed before the
increment.)
c then becomes 6
Asanga Ratnaweera, Department of
Mechanical Engineering
39
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
40
// Program : Program09.cpp
// Preincrementing and postincrementing.
#include <iostream>
#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
41
#include <iostream>
#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
Sem 7
} // end function main
Asanga Ratnaweera, Department of
Mechanical Engineering
42
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;
Where the counter variable is ONLY used within the
for block,
variable
can be declared
for
 the
Prints
integers
fromwithin
one the
to ten
structure. For example, these two statements can be
replaced by:
Sem 7for
( int counter = 1; counter
<=
10; counter++
) of
Asanga
Ratnaweera,
Department
Mechanical Engineering
No
semicolon
after last
statement
43
for Repetition Structure
#include <iostream>
#include <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
Sem 7
Asanga Ratnaweera, Department of
Mechanical Engineering
44
Break Command
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;
Sem}7
Asanga Ratnaweera, Department of
Mechanical Engineering
45
Continue Command
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
}
Sem 7
Asanga Ratnaweera, Department of
Mechanical Engineering
46
switch Multiple-Selection
Structure
case a
true
case a action(s)
break
case b action(s)
break
case z action(s)
break
false
case b
true
false
.
.
.
case z
true
false
default action(s)
Sem 7
Asanga Ratnaweera, Department of
Mechanical Engineering
47
switch Multiple-Selection
Structure

switch


Test variable for multiple values
Series of case labels and optional
Thisdefault
statement (s)case
switch ( variable )
{
case value1:
statements
break;
case value2:
case value3:
statements
break;
executed if variable is
equal to value1
This statement (s)
executed if variable is
// necessary
totoexit
equal
value2switch
or to
value3
default:
statements
break;
Sem 7
}
Asanga Ratnaweera, Department of
Mechanical Engineering
This statement (s)
executed if variable is
NOT equal to any of the
previous case values
above.
48
Sem 7
// 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;
}
Asanga Ratnaweera, Department of
49
Mechanical Engineering
Sem 7
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;
Asanga Ratnaweera, Department of
50
}
Mechanical Engineering
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
51
#include <iostream>
#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();
Sem 7 return 0;
Asanga Ratnaweera, Department of
}
Mechanical Engineering
52
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]
31 0
-9
17
3
-6
44
locations
values

Size of a[7] declare as int a[7] (single dimension)

C++ representation


Multidimensional arrays (ex: two dimensional)

Sem 7
a[7] ={31, 0,-9,17,3,-6,44 };
A[3][5]
Asanga Ratnaweera, Department of
Mechanical Engineering
53
Arrays
#include <iostream>
#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
54
Arrays
#include <iostream>
#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
Semend
7 function main
Asanga Ratnaweera, Department of
} //
Mechanical Engineering
55
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,

Sem 7
#include <fstream> and define our data by
either ifstream(i/p) or ofstream (o/p)
Asanga Ratnaweera, Department of
Mechanical Engineering
56
File handling
#include <iostream>
#include <cstdio>
#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 Asanga
written
to a file data_out.txt at E:/C_data57/
Sem 7
Ratnaweera, Department of
Mechanical Engineering
File handling
#include <iostream>
#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 directory
Sem 7
Asanga Ratnaweera, Department of
Mechanical Engineering
58
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 number
cout<<floor(11.5);
(prints 11)
Sem 7
Asanga Ratnaweera, Department of
Mechanical Engineering
59
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
60
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
61
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
}
Sem 7
Asanga Ratnaweera, Department of
Mechanical Engineering
62
In-built Maths Functions
cos(x)
cosine of x
cosh(x)
hyperbolic cosine of x
sin(x)
sine of x
sinh(x)
hyperbolic sine of x
tan(x)
tangent of x
tanh(x)
hyperbolic tangent of x
acos(x)
arc cosine x
exp(x)
exponential function
asin(x)
arc sine of x
log(x)
natural logarithm
atan(x)
arc tangent x
log10(x)
base 10 logarithm
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
63
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
64
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
65
Hardware addressing
Command : _outp(address, value) or _inp(address,value)
#include <iostream.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>
int main()
{
_outp(0x378,1);
// header file for Sleep () command
// 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
}
Sem 7
Asanga Ratnaweera, Department of
Mechanical Engineering
66
User defined functions

Syntax

type Funtion_name (type variable, type variable, …)
Return data type

Ex:


Sem 7
Data inputs
int my_function(int x, float y )
float my_function(float x, float y )
Asanga Ratnaweera, Department of
Mechanical Engineering
67
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
}
Sem 7
Asanga Ratnaweera, Department of
Mechanical Engineering
68
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
69
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
70
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
71
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
Sem 7
Asanga Ratnaweera, Department of
Mechanical Engineering
72