Programming Tutorial nd using C++ for 2 year computer science students

This tutorial mainly focus on Laboratory assignments Prepared by: Geletaw S. & Ismael K.

Tutorial Objectives By the end of this tutorial SWAT:
 

Prepare qualified projects solve different problems using the program Be ready for future programming language courses, industrial attachment and other projects

Tutorial Contents

 

Basic concept on conditional statement & loops. Array and Pointer. Object oriented concepts such as class and template functions. File handling system such as sequential and Random file accessing. High lights about C++ graphics

Conditional statements 1. if statements 2. if-else statements 3. switch-case statements Loop statements 1. for loop 2. while loop 3. do-while loop Breaking control statements 1. Break statement 2. Continue statement 3. goto statements

Arrays  Processing with array  Function and arrays  Multi dimensional arrays  Character arrays Pointer  Pointer and functions( call by value & reference ,pointer to function & passing a function to another)  Pointer and arrays  Pointer and strings  Array of pointer  Pointer to pointer

Class and Template class  Accessing a member of a class  Pointer and class  Array of class objects Template and Exception Handling  Function templates  Class templates Exception Handling  Try  Catch  throw

File Operations
  

 

Opening and closing of files Stream state member functions Reading & writing a character from a file Structure, class and file operations Array of class object and file operations Random access file processing

Turbo C++ Graphics Libraries

Introduction to graphics using C++

Chapter one
Conditional statements 1. if statements 2. if-else statements 3. switch-case statements Loop statements 1. for loop 2. while loop 3. do-while loop Breaking control statements 1. Break statement 2. Continue statement 3. goto statements

Revision about Variables, statement variables is Register Variables: used when the

reading or accessing repeatedly. Syntax: register char temp; Static Variables : The content of the variables retained through out the program. Syntax: static int x, y; it is the opposite of automatic variable External Variables : variables declared out side the main. Syntax : extern int x, y; Automatic Variable : a variable declared inside a function

If statement
Syntax: For example: If (expression)

A=20; B=40; { If ( A>B) statement 1; { cout<<“Largest Value is”<< A<<e statement 2; }

}

if-else statement
For example // Wrong Syntax Syntax: if ( i>j) If (expression) if ( a>b)

statement else statement

Temp=a; else 1 Temp=b; For example // Right syntax if ( a>b) Temp=a; 2 else Temp=b;

switch

statement

Syntax: For example: switch( input) Switch( exp){ { case 1: case Y: statement y: case cout<<“ the statement is correct\n 1; break; break; case n: case N: case 2: cout<<“ the statement is incorrect statement break; 2; default: cout<<“ the statement is false”<< break; } default:

Syntax: for( initial condition; test condition; increment or decrement) { statement_1; statement_2; } For example: for( int i=0;i<5;i--) { i=i-1; cout<<i<<‘\t’; }

for loop

for loop con’t….
Initial condition may not be required to be declared for some cases. For example : reading a string from a key board or a file. For this case use the following syntax:

for( ; (ch=cin.get()) !=‘\n’)

Program reading a line from the keyboard using for a string //A program that reading loop from keyboard
#include<iostream.h> #include<conio.h> void main() { char ch; cout<<“enter a line\n”; for( ; (ch=cin.get() ) !=‘\n’;) { cout<<“ The character is : “<< endl; cout.put(ch); getche(); } }

for loop con’t….

Some time for loop may be enter as

for( ; ;)

The above loop is valid but it will execute the loop indefinitely b/c there is no condition to be checked to terminate this loop

Syntax : while( condition) { statement_1; statemnet_2; } For example: while( (character = cin.get() )!=EOF) cout.put(character); Output As long as character!=EOF while loop reads a character from the keyboard and displays on the screen

while loop

while loop con’t…
while loop may use more than one test condition using different logical expression as a single statement For example: ch=cin.get (); While(ch!=‘\n’ && ch!=‘\t’) { cout.put(ch); ch=cin.get(); } The above function check a line feed and

Syntax: do { statement 1; statement 2; } while( expression); For example: Sum=0,bit=0; do { Sum= Sum + bit; bit=bit+2; } while( bit<=30); Output is 2,4,6,………….,30

do-while loop

break statement used in case, while loop For example: 1. case condition: statement; break; default: statement; 2. while loop while( i<=0) { cout<<“enter the number\n”; cin>>number; if ( number>0) { cout<<“ Invalid Number\n”; break; } }

break statement

continue statement
Used to repeat the same operations once again even if it checks the error Syntax : continue;

continue statement example while( i<=0)
{ cout<<“enter the number\n”; cin>>number; if ( number>0) { cout<<“ Invalid Number\n”; continue; }

} Output: when ever the number greater than zero encountered the computer display a message “ Invalid Number” as an error and it continues the same loop as long as the given condition satisfied

Used to alter the program execution sequence by transferring the control to other part of the program. For example:

goto statement

int a, b; cout<<“Enter a & b \n”; cin>>a>>b; if (a>b) goto output1; else goto output2; output1: cout<<“Largest is “ <<a<<endl; goto stop; output2: cout<<“largest is “ <<b<<endl; goto stop; stop: }

Arrays Processing with array Function and arrays Multi dimensional arrays Character arrays Pointer Pointer and functions( call by value & reference ,pointer to function & passing a function to another) Pointer and arrays Pointer and strings Array of pointer Pointer to pointer

Processing with array
The array index must be integer data type 10 20 30 40 50 elements A[0] A[1] A[2] A[3] A[4] position For example the following is invalid for( int x=0; x<=10.11;++0.1) A[x]=10; You can define the array size at the beginning also i.e. #define Max_Size 100 for ( int i=0;i<=Max_Size-1; i++) i=i+1;

Function and Array

The entire array can be passed onto a function in c ++ An array name can be used as an argument for the function declaration No subscript or square brackets are required to invoke a function using arrays.

Example of array & #include<iostream.h> function #include<conio.h>
#define max 100 void main() { int sum( int a[ ], int n); // function declaration int a[max]; int sum; sum=sum( a,n);// function calling } int sum( int a[ ], int n); // function declaration { // Local Variable declaration, if any // Body of the function return(value); }

Multi Dimensional Array
For example int x[2][2]={1,2,3,4}; Output x[0][0]=1; x[0][0]=2; x[0][0]=3; x[0][0]=4;

Character Array

The declaration is using alphanumeric character char, static char and so on Like an integer and floating point, the character array can also be initialized. e.g.: char symbol[3]=“com”; Out put: symbol[0]=c,symbol[1]=o;symbol[2]=m e.g. : char name[8]={‘c’ ,’o’ ,’m’ ,’p’ ,’u ’,’t’ ,’e’ ,’r’}

Pointer and Function

Complex function easily represent and accessed through pointer. Two types 1. call by value 2. call by reference

Call by Value

A function with formal argument, control will be transferred from the main to calling function and the value of the actual argument is copied to the function. With in the function, the actual value copied from the calling portion of the program may be altered or changed. When the control is transferred back from the function to the calling portion of the program, the altered value not transferred back.

#include<iostream.h> void main() { void function(int x, int y);// function declaration int x,y,z; x=12,y=50; function(x,y);// call by value z=x+y;// 12+50=62 cout<<“ sum=“<< x+y<<endll; } void function(int a, int b); { int sum; a=a*a;// New value will not be copied to the main b=b*b; cout << “ sum=“<< a + b<<endl; }

Example for call by value

The address of the data item is passed to the function The content of the variables that are altered with in the function block are returned to the calling portion of the program in the altered form itself, as the formal & the actual argument are referencing the same memory location or address called call by reference/by address or By location Any change that is made to the data item will be recognized in both the function & the calling portion of the program. The use of the pointer as a function

Call by reference

For example: // call by reference

#include<iostream.h> #include<conio.h> void main() { int x , y; void interchange( int *x, int *y);// fun declaration x=100,y=200; cout<<“Value before interchange “<<endl; cout<<“ x=“<<x<<“ and y=“<<y<<endl; interchange( &x, &y);// call by reference cout<<“Value after interchange “<<endl; cout<<“ x=“<<x<<“ and y=“<<y<<endl; } void interchange( int *x, int *y)// Value will be swapped { int intermediate; Output intermediate=*x; before exchange x=100, y=200 *x=*y; and after exchange y=200,x=100 *y=intermediate; }

Pointer to function declaration Syntax: return_type(*variables) ( list

of parameters) 2. A program to find the sum three numbers using a pointer to function method. // pointer to functions #include<iostream.h> #include<conio.h> void main() { float average(float,float,float);

float a, b, c, avg; float (*ptrf) (float, float, float); // pointer to function declaration ptrf=&average; cout<<“ Enter the number a, b, c”<<endl; cin>>a>>b>>c; avg=(*ptrf) (a, b, c);// function calling using pointer cout<<“a=“<<a<<“b=“<<b<<“c=“<< c<<endl;

float average (float x, float y, float z) { float temp; temp=(x+y+z)/3.0; return(temp); }

Passing a function to another function Syntax:
return_type function_name (pointer_to_function (other argument)); For example: float sum (float (*) (float, float), float, float);

Pointer and Multi dimensional array
Pointer Initialization example ptr=&value[ 0][ 0][ 1]; For pointer and multi dimensional array see the following example

#include<iostream.h> #include< conio.h> void main() { static int a[2][3]={ {11,12,13}, {14,15,16}}; int *ptr; int i, j, n, m, temp; n=2; m=3; cout<<“content of the array “<<endl; for (i=0; i<=n-1; ++i) { for (j=0; j<m-1;++j) { temp=*(* (a + i) +j); cout<<temp<<‘\t’; Out put } 11, 12,13 cout<<endl; 14,15,16

Pointer and String

String is terminated by a null character or ‘\0’ String constant are written in double quotes. Pointer mainly used for when perform string operations such as string compare, string copy, string concatenate and so on

  

Suppose string1 contain “computer” and string2 contain “ science”. Write the program that: Copy the content of the string1 to string 3 Compare the content of string1 and string2 Concatenate string1 and string 2 Find the length of string1 Search one character from string1

Question about Pointer and String

Copy one sting to another string
 

The command strcpy used to copy one string to another string. Syntax: strcpy( destination, source); that is copy the source to destination.

Find the length of string

 

The command strlen find the length of a string. Syntax: strlen(computer); Out put : length=8

String comparison

The command strcmp used to compare two strings Syntax: strcmp(string1,string2); if the two string are the same it returns zero. strcmpi compare the string with out case sensitivity.

String concatenation

 

The command strcat used to append or concatenate on string to the end of another string. Syntax : strcat( “turbo ”, “c++”); Out put: Turbo c++

Scanning a character from the string

The command strchr used to search or scan a character from the string in forward direction only. Syntax: strchr( string, character); searching or scanning the character from the string.

Upper and Lower case conversion
  

strupr used to change the string into upper case letter Syntax: strupr (string); Strlwr used to change a string to lower case letter. Syntax: strlwr (string);

Pointer to Pointer

The first pointer contain the address of the second pointer, which points to the variable that contain the values desired.
Pointer Variable

Pointer

Pointer

Variable

Syntax:

int **ptr;

Class and Objects
Function oriented programming OOP 2. User defined types----------------Classes 3. Variables ---------------------------- Objects 4. Structure members --------------Instance variables 5. Functions --------------------------Methods 6. Function Call ---------------------Message Passing

Class con’t…

typedef is not required since a class name is a type of name. Keywords private, protected and public which specify the three levels of access protection for hiding data and function members internal to the class.

Private section
1.

2.

3.

A member data can only be accessed by the member function and friends of this class. The member functions and friends of this class can always read and write private data members. Private data member is not accessible to the out of the class.

Protected section

Can only be accessed by the member functions and friends of this class and also these function can be accessed by the member functions and friends derived from this class. It is not accessible out of the class

Public section
Can be accessed by any section out of the class  The public implementation operations are also called as member functions or methods, or interfaces to out of the class.  A class by default all its members private class { int a, b; }

File Handling System

Input/Output with files
 

ofstream: Stream class to write on files ifstream: Stream class to read from files fstream: Stream class to both read and write from/to files.

Basic file operation
// basic file operations #include <iostream.h> #include <fstream.h> int main () { ofstream myfile;// File declaration myfile.open ("example.txt“); // opening file myfile << "Writing this to a file.\n"; myfile.close(); // closing file return 0; }

Opening file

 

In order to open a file with a stream object we use its member function open(): Syntax : open (filename, mode); Filename: is a null-terminated character sequence of type const char * (the same type that string literals have) representing the name of the file to be opened. Mode : is an optional parameter with a combination of the following flags.

ios :: in ios ::out

Open for input operations Open for output operations

ios :: Open in binary mode : Default is binary ios :: app textthe initial position at the end Set mode of the file. If this flag is not set to any value, theoutput position is the initial operations are ios :: All beginning of the file. of the file, trunc performed at the end appending the content to the current content of the file. This flag can only be used in streams open for output-only output If the file opened for operations operations already existed before, its previous content is

ios :: ate

File stream flag con’t...

ios :: nocreate ios :: replace

Open a file if a file does exist Open a file if a file does not exist

File con’t…
All these flags can be combined using the bitwise operator OR (|).  For example, if we want to open the file “example. Bin” in binary mode to add data we could do it by the following call to member function open():  Syntax: ofstream myfile; // declaring a file myfile.open ("example.bin", ios::out | ios::app | ios::binary); // opening a file for input, output and binary mode

Remark:

3. 4. 5.

For ifstream and ofstream classes, ios::in and ios::out are automatically and respectively assumed, even if a mode that does not include them is passed as second argument to the open() member function. Class default Parameter ifstream ---------------------- ios :: in ofstream ---------------------- ios :: out fstream ---------------------- ios :: in |ios ::

File notes

The default value is only applied if the function is called without specifying any value for the mode parameter. If the function is called with any value in that parameter the default mode is overridden, not combined. File streams opened in binary mode perform input and output operations independently of any format considerations. Non-binary files are known as text files, and some translations may occur due to formatting of some special characters

Closing file

The function close( ) is used to close a file which has been opened for a file processing such as read, to write and for both to read and write. The close( ) member function is called automatically by the destructor functions. Syntax: myfile.close();

Checking state flags

In addition to eof(), which checks if the end of file has been reached, other member functions exist to check the state of a stream (all of them return a bool value):

bad()

Returns true if a reading or writing operation fails. For example in the case that we try to write to a file that is not open for writing or if the device where we try to write has no space left. Check whether any invalid file operations has been attempted.

Example: #include<iostream.h> #include<conio.h> void main() { ifstream infile; ifstream.open( “text”); if ( infile.bad() ) { cerr<<“ Open failure “<<endl; exit(1); } }

fail ( )
Returns true in the same cases as bad(), but also in the case that a format error happens, like when an alphabetical character is extracted when we are trying to read an integer number.  To check whether a file has been opened for input or output successfully, or any invalid operations are attempted or there is unrecoverable error.

For example
#include <iostream.h> #include<conio.h> void main() { ifstream infile; infile.open (“text”); while( !infile.fail() ) { cout<<“couldn’t open file”<<endl; continue; } }

eof()
Returns true if a file open for reading has reached the end.  Used to check whether the file reach the end of file or not  For example: main( ) { ifstream infile; infile.open (“text”); while ( !infile.eof () ) { }

}

good()

It is the most generic state flag: it returns false in the same cases in which calling any of the previous functions would return true.

In order to reset the state flags checked by any of these member functions we have just seen we can use the member function clear(), which takes no parameters.

Checking state flags of In addition to eof(), which checks if the end

file has been reached, other member functions exist to check the state of a stream (all of them return a bool value): bad()

Returns true if a reading or writing operation fails. For example in the case that we try to write to a file that is not open for writing or if the device where we try to write has no space left. Returns true in the same cases as bad(), but also in the case that a format error happens, like when an alphabetical character is extracted when we are trying to read an integer number. Returns true if a file open for reading has reached the end. It is the most generic state flag: it returns false in the same cases in which calling any of the previous functions would return true.

fail()

eof()

good()

Master your semester with Scribd & The New York Times

Special offer for students: Only $4.99/month.

Master your semester with Scribd & The New York Times

Cancel anytime.