Chapter 3- C++ at a Glance

Example- counter1.cpp, Page no-77

In [2]:
class Counter:
    __value=int
    def __init__(self, val=None):#constructor
        if(isinstance(val, int)):
            self.__value=val
        else:
            self.__value=0
    def __del__(self):#destructor
        print "object destroyed"
    def GetCounter(self):
        return self.__value
    def up(self):
        self.__value=self.__value+1
counter1=Counter()
counter2=Counter(1)
print "counter1 = ", counter1.GetCounter()
print "counter2 = ", counter2.GetCounter()
counter1.up()
counter2.up()
print "counter1 = ", counter1.GetCounter()
print "counter2 = ", counter2.GetCounter()
object destroyed
object destroyed
counter1 =  0
counter2 =  1
counter1 =  1
counter2 =  2

Example-Stdclass.cpp, Page no-80

In [1]:
def setdata(self, roll_no_in, name_in): #outside declaration of member functions
    self._student__roll_no=roll_no_in
    self._student__name=name_in
def outdata(self):#outside declaration of member functions
    print "Roll no = ", self._student__roll_no
    print "Name = ", self._student__name
class student:
    __roll_no=int
    __name=[None]*20
    setdata=setdata
    outdata=outdata
s1=student()
s2=student()
s1.setdata(1, "Tejaswi")
s2.setdata(10, "Rajkumar")
print "Student details..."
s1.outdata()
s2.outdata()
Student details...
Roll no =  1
Name =  Tejaswi
Roll no =  10
Name =  Rajkumar

Example-Counter2.cpp, Page no-82

In [1]:
class counter:
    __value=int
    def __init__(self, val=0):
        self.__value=val
    def GetCounter(self):
        return self.__value
    def up(self):
        self.__value+=1
class NewCounter(counter): #inheritance
    def __init__(self, val=None) : 
        if(isinstance(val, int)):
            counter.__init__(self, val)
        else:
            counter.__init__(self)
    def down(self):
        self._counter__value=self._counter__value-1
counter1=NewCounter()
counter2=NewCounter(1)
print "counter1 initially =", counter1.GetCounter()
print "counter2 initially =", counter2.GetCounter()
counter1.up()
counter2.up()
print "counter1 on increment =", counter1.GetCounter()
print "counter2 on increment =", counter2.GetCounter()
counter1.down()
counter2.down()
print "counter1 on decrement =", counter1.GetCounter()
print "counter2 on decrement =", counter2.GetCounter()
counter1 initially = 0
counter2 initially = 1
counter1 on increment = 1
counter2 on increment = 2
counter1 on decrement = 0
counter2 on decrement = 1

Example-counter3.cpp, Page no-85

In [1]:
class counter:
    __value=int
    def __init__(self, val=0):
        self.__value=val
    def GetCounter(self):
        return self.__value
    #overloading increment operator
    def __iadd__(self, val):
        self.__value+=val
        return self
    #overloading decrement operator
    def __isub__(self, val):
        self._counter__value-=val
        return self
counter1=counter()
counter2=counter(1)
print "counter1 initially =", counter1.GetCounter()
print "counter2 initially =", counter2.GetCounter()
counter1+=1
counter2+=1
print "counter1 on increment =", counter1.GetCounter()
print "counter2 on increment =", counter2.GetCounter()
counter1-=1
counter2-=1
print "counter1 on decrement =", counter1.GetCounter()
print "counter2 on decrement =", counter2.GetCounter()
counter1 initially = 0
counter2 initially = 1
counter1 on increment = 1
counter2 on increment = 2
counter1 on decrement = 0
counter2 on decrement = 1

Example-counter4.cpp, Page no-88

In [1]:
class counter:
    __value=int
    def __init__(self, val=0):
        self.__value=val
    def GetCounter(self):
        return self.__value
    def __iadd__(self, val):
        self.__value+=val
        return self
    def __isub__(self, val):
        self._counter__value-=val
        return self
    #overloading of + operator
    def __add__(self, counter2):
        temp=counter()
        temp.__value=self.__value+counter2.__value
        return temp
    #No overloading of << and >> operators in python
    def output(self):
        return self.__value
counter1=counter()
counter2=counter(1)
print "counter1 initially =", counter1.GetCounter()
print "counter2 initially =", counter2.GetCounter()
counter1+=1
counter2+=1
print "counter1 on increment =", counter1.GetCounter()
print "counter2 on increment =", counter2.GetCounter()
counter1-=1
counter2-=1
print "counter1 on decrement =", counter1.GetCounter()
print "counter2 on decrement =", counter2.GetCounter()
counter3=counter()
counter3=counter1+counter2
print "counter3 = counter1+counter2 =", counter3.output()
counter1 initially = 0
counter2 initially = 1
counter1 on increment = 1
counter2 on increment = 2
counter1 on decrement = 0
counter2 on decrement = 1
counter3 = counter1+counter2 = 1

Example-virtual.cpp, Page no-91

In [2]:
class Father:
    __f_age=int
    def __init__(self, n):
        self.__f_age=n
    def GetAge(self):
        return self.__f_age
class Son(Father):
    __s_age=int
    def __init__(self, n, m):
        Father.__init__(self, n)
        self.__s_age=m
    def GetAge(self):
        return self.__s_age
basep=[Father]
basep=Father(45)
print "Father's Age:",
print basep.GetAge()
del basep
basep=[Son(45, 20)]
print "Son's Age:",
print basep[0].GetAge()
del basep
Father's Age: 45
Son's Age: 20

Example-vector.cpp, Page no-94

In [1]:
class vector:
    __size=int
    def __init__(self, vector_size):
        self.__size=vector_size
        self.__v=[vector]*self.__size
    def __del__(self):
        del self.__v
    def elem(self, i, x=None):
        if isinstance(x, int) or isinstance(x, float):
            if i>=self.__size:
                print "Error: Out of Range"
                return
            self.__v[i]=x
        else:
            return self.__v[i]
    def show(self):
        for i in range(self.__size):
            print self.elem(i), ",",
int_vect=vector(5)
float_vect=vector(4)
for i in range(5):
    int_vect.elem(i, i+1)
for i in range(4):
    float_vect.elem(i,i+1.5)
print "Integer Vector:",
int_vect.show()
print "\nFloating Vector:",
float_vect.show()
Integer Vector: 1 , 2 , 3 , 4 , 5 , 
Floating Vector: 1.5 , 2.5 , 3.5 , 4.5 ,

Example-number.cpp, Page no-97

In [1]:
class number:
    __num=int
    def read(self):
        self.__num=int(raw_input())
    class DIVIDE():
        pass
    def div(self, num2):
        if num2.__num==0:
            raise self.DIVIDE() #raise exception of type DIVIDE()
        else:
            return self.__num/num2.__num
num1=number()
num2=number()
print "Enter Number 1: ",
num1.read()
print "Enter Number 2: ",
num2.read()
try:
    print "trying division operation...",
    result=num1.div(num2)
    print "succeeded"
except number.DIVIDE: #exception handler of exception type DIVIDE()
    print "failed"
    print "Exception: Divide-By-Zero"
else: #this block is executed only if no exception has been raised
    print "num1/num2 =", result
Enter Number 1: 10
 Enter Number 2: 0
 trying division operation... failed
Exception: Divide-By-Zero

Example-infile.cpp, Page no-101

In [1]:
try:
    infile=open("sample.in", "r") #open file in input mode
    while(1):
        buff=infile.readline() #read a single line from the file
        if buff=='': #to determine end of file
            break
        print buff,
except IOError: #error in opening file
    print "Error: sample.in non-existent"
Rajkumar, C-DAC, India
Bjarne Stroustrup, AT & T, USA
Smrithi, Hyderabad, India
Tejaswi, Hyderabad, India

Example-outfile.cpp, Page no-102

In [1]:
outfile=open("sample.out", "w") #file opened in output mode
if not(outfile):
    print "Error: sample.out unable to open"
else:
    while(1):
        buff=raw_input()
        if buff=="end":
            break
        outfile.write(buff)
    outfile.close()
OOP is good
C++ is OOP
C++ is good
end

Example, Page no-103

In [1]:
count=0
file1=open("FILE1.txt", "r") #file opened in input mode
file2=open("FILE2.txt", "w") #file opened in output mode
while(1):
    ch=file1.read(1)
    if ch=='': #detecting eof
        break
    if count%2==0:
        file2.write(ch)
    count+=1
print "Alternate characters from File1 have been successfully copied into File2"
Alternate characters from File1 have been successfully copied into File2