diff options
author | Jovina Dsouza | 2014-07-08 17:19:20 +0530 |
---|---|---|
committer | Jovina Dsouza | 2014-07-08 17:19:20 +0530 |
commit | 84eaa5fbfb3090e912ebe12de1906b7c0bdde908 (patch) | |
tree | f98362fb5e4e43848c150834c3937dc4bde1e176 /C++_from_the_Ground | |
parent | 80751050da776de062000a7d2a5b4e045bfbc9f8 (diff) | |
download | Python-Textbook-Companions-84eaa5fbfb3090e912ebe12de1906b7c0bdde908.tar.gz Python-Textbook-Companions-84eaa5fbfb3090e912ebe12de1906b7c0bdde908.tar.bz2 Python-Textbook-Companions-84eaa5fbfb3090e912ebe12de1906b7c0bdde908.zip |
adding book
Diffstat (limited to 'C++_from_the_Ground')
21 files changed, 17538 insertions, 0 deletions
diff --git a/C++_from_the_Ground/Chapter_10.ipynb b/C++_from_the_Ground/Chapter_10.ipynb new file mode 100644 index 00000000..b19c3a4c --- /dev/null +++ b/C++_from_the_Ground/Chapter_10.ipynb @@ -0,0 +1,560 @@ +{ + "metadata": { + "name": "", + "signature": "sha256:73c04e2c14bfab695e4acf07dc7752334b6372d624570a4e051fd91aeeb761f7" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h1>Chapter 10: Structures and Unions<h1>" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 10.1, Page Number: 223<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "class inv_type:\n", + " def __init__(self):\n", + " self.item=None\n", + " self.cost=0\n", + " self.retail=0\n", + " self.on_hand=0\n", + " self.lead_time=0\n", + "\n", + "#Variable declaration\n", + "size=100 \n", + "invtry = []*size\n", + "i=5 #User iput for menu selection\n", + "\n", + "#Initialize the array\n", + "def init_list():\n", + " for t in range(size):\n", + " invtry.append(inv_type())\n", + " \n", + "#get a menu selection\n", + "def menu():\n", + " global i\n", + " print \"(E)nter\"\n", + " print \"(D)isplay\"\n", + " print \"(U)pdate\"\n", + " print \"(Q)uit\"\n", + " print \"choose one: \"\n", + " i-=1\n", + " return i\n", + "\n", + "#enter items into the list\n", + "def enter():\n", + " #find the first free structure\n", + " for i in range(size):\n", + " if not(invtry[i].item==None):\n", + " break\n", + " #i will be size if list is full\n", + " if i==size:\n", + " print \"List full.\"\n", + " return\n", + " input(i)\n", + " \n", + "#Input the information\n", + "def input(i):\n", + " #Enter information; User input\n", + " invtry[i].item=\"Gloves\"\n", + " invtry[i].cost=10\n", + " invtry[i].retail=25\n", + " invtry[i].on_hand=50\n", + " invtry[i].lead_time=10\n", + " \n", + "#Modify an existing item\n", + "def update():\n", + " name=\"Gloves\" #User input\n", + " for i in range(size):\n", + " if not(name==invtry[i].item):\n", + " break\n", + " if i==size:\n", + " print \"Item not found.\"\n", + " return\n", + " print \"Enter new information.\"\n", + " input(i)\n", + " \n", + "#Display the list\n", + "def display():\n", + " for t in range(size):\n", + " if not(invtry[t].item==None):\n", + " print invtry[t].item\n", + " print \"Cost: $\",invtry[t].cost\n", + " print \"Retail: $\",invtry[t].retail\n", + " print \"On hand: \",invtry[t].on_hand\n", + " print \"Resupply time: \",invtry[t].lead_time,\" days\"\n", + " \n", + "\n", + "init_list()\n", + "while True:\n", + " choice=menu()\n", + " if choice==4:\n", + " enter()\n", + " elif choice==3:\n", + " display()\n", + " elif choice==2:\n", + " update()\n", + " elif choice==1:\n", + " break" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(E)nter\n", + "(D)isplay\n", + "(U)pdate\n", + "(Q)uit\n", + "choose one: \n", + "(E)nter\n", + "(D)isplay\n", + "(U)pdate\n", + "(Q)uit\n", + "choose one: \n", + "Gloves\n", + "Cost: $ 10\n", + "Retail: $ 25\n", + "On hand: 50\n", + "Resupply time: 10 days\n", + "(E)nter\n", + "(D)isplay\n", + "(U)pdate\n", + "(Q)uit\n", + "choose one: \n", + "Enter new information.\n", + "(E)nter\n", + "(D)isplay\n", + "(U)pdate\n", + "(Q)uit\n", + "choose one: \n" + ] + } + ], + "prompt_number": 11 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 10.2, Page Number: 226<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "class sample:\n", + " a=None\n", + " ch=None\n", + " \n", + "def f1(parm):\n", + " print parm.a,\" \",parm.ch\n", + "\n", + "#declare arg\n", + "arg=sample() \n", + "\n", + "#initialize arg\n", + "arg.a=1000\n", + "arg.ch='X'\n", + "\n", + "#call function\n", + "f1(arg)\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "1000 X\n" + ] + } + ], + "prompt_number": 12 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 10.3, Page Number: 227<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "class stype:\n", + " a=None\n", + " b=None\n", + "\n", + "#Variable declaration\n", + "svar1=stype()\n", + "svar2=stype()\n", + "\n", + "svar1.a=svar1.b=10\n", + "svar2.a=svar2.b=20\n", + "\n", + "print \"Structures before assignment.\"\n", + "print \"svar1: \",svar1.a,' ',svar1.b\n", + "print \"svar1: \",svar2.a,' ',svar2.b\n", + "\n", + "svar2=svar1 #assign structures\n", + "\n", + "#Result\n", + "print \"\\nStructures before assignment.\"\n", + "print \"svar1: \",svar1.a,' ',svar1.b\n", + "print \"svar1: \",svar2.a,' ',svar2.b" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Structures before assignment.\n", + "svar1: 10 10\n", + "svar1: 20 20\n", + "\n", + "Structures before assignment.\n", + "svar1: 10 10\n", + "svar1: 10 10\n" + ] + } + ], + "prompt_number": 13 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 10.4, Page Number: 230<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "import datetime\n", + "\n", + "date=datetime.datetime.now()\n", + "\n", + "#Result\n", + "print date.time()" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "17:06:28.236000\n" + ] + } + ], + "prompt_number": 14 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 10.5, Page Number: 231<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "import datetime\n", + "\n", + "date=datetime.datetime.now()\n", + "\n", + "#Result\n", + "print date.ctime()" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Sat Sep 14 17:07:14 2013\n" + ] + } + ], + "prompt_number": 15 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 10.6, Page Number: 232<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "class mystruct:\n", + " a=None\n", + " b=None\n", + "\n", + "def f(var):\n", + " var[0].a=var[0].a*var[0].a\n", + " var[0].b=var[0].b/var[0].b\n", + " return var[0]\n", + " \n", + "#Variable declaration\n", + "x=[]\n", + "x.append(mystruct())\n", + "y=mystruct()\n", + "\n", + "#Initializing\n", + "x[0].a=10\n", + "x[0].b=20\n", + "\n", + "print \"Original x.a and x.b: \",x[0].a,' ',x[0].b\n", + "\n", + "y=f(x) #function call\n", + "\n", + "#Result\n", + "print \"Modified x.a and x.b: \",x[0].a,' ',x[0].b\n", + "print \"Modified y.a and y.b: \",y.a,' ',y.b\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Original x.a and x.b: 10 20\n", + "Modified x.a and x.b: 100 1\n", + "Modified y.a and y.b: 100 1\n" + ] + } + ], + "prompt_number": 16 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 10.7, Page Number: 239<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "class swap_bytes:\n", + " ch=[0,0]\n", + "\n", + "#Exchange of bytes\n", + "def disp_binary(u):\n", + " t=128\n", + " while not(t==0):\n", + " if u&t:\n", + " print \"1 \",\n", + " else:\n", + " print \"0 \",\n", + " t=t/2\n", + "\n", + "#Variable declaration\n", + "sb=swap_bytes()\n", + "\n", + "sb.ch[0]=15\n", + "\n", + "print \"Original bytes: \",\n", + "disp_binary(sb.ch[1])\n", + "disp_binary(sb.ch[0])\n", + "\n", + "#Exchange bytes\n", + "temp=sb.ch[0]\n", + "sb.ch[0]=sb.ch[1]\n", + "sb.ch[1]=temp\n", + "\n", + "#Result\n", + "print \"\\nExchanged bytes: \",\n", + "disp_binary(sb.ch[1])\n", + "disp_binary(sb.ch[0])\n", + "\n", + "\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Original bytes: 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 \n", + "Exchanged bytes: 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 \n" + ] + } + ], + "prompt_number": 17 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 10.8, Page Number: 240<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "ch='a'\n", + "\n", + "while True:\n", + " print \"\\n\",ch,\n", + " print bin(ord(ch)) #Display the bit pattern for each character\n", + " ch=chr(ord(ch)+1)\n", + " if ch=='r':\n", + " break" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "\n", + "a 0b1100001\n", + "\n", + "b 0b1100010\n", + "\n", + "c 0b1100011\n", + "\n", + "d 0b1100100\n", + "\n", + "e 0b1100101\n", + "\n", + "f 0b1100110\n", + "\n", + "g 0b1100111\n", + "\n", + "h 0b1101000\n", + "\n", + "i 0b1101001\n", + "\n", + "j 0b1101010\n", + "\n", + "k 0b1101011\n", + "\n", + "l 0b1101100\n", + "\n", + "m 0b1101101\n", + "\n", + "n 0b1101110\n", + "\n", + "o 0b1101111\n", + "\n", + "p 0b1110000\n", + "\n", + "q 0b1110001\n" + ] + } + ], + "prompt_number": 18 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 10.9, Page Number: 242<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "#Variable declaration\n", + "ch=['X','Y']\n", + "c=\"\"\n", + "def disp_bits(u):\n", + " t=128\n", + " global c\n", + " while not(t==0):\n", + " if u&t:\n", + " c=c+\"1\"\n", + " else:\n", + " c=c+\"0\"\n", + " t=t/2 \n", + " return c\n", + "\n", + "#Result\n", + "print \"union as chars: \",ch[0],ch[1]\n", + "print \"union as integer: \",\n", + "c= disp_bits(ord(ch[1]))\n", + "c= disp_bits(ord(ch[0]))\n", + "print int(str(c),2)\n", + "\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "union as chars: X Y\n", + "union as integer: 22872\n" + ] + } + ], + "prompt_number": 19 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [], + "language": "python", + "metadata": {}, + "outputs": [] + } + ], + "metadata": {} + } + ] +}
\ No newline at end of file diff --git a/C++_from_the_Ground/Chapter_11.ipynb b/C++_from_the_Ground/Chapter_11.ipynb new file mode 100644 index 00000000..fdd70bcf --- /dev/null +++ b/C++_from_the_Ground/Chapter_11.ipynb @@ -0,0 +1,877 @@ +{ + "metadata": { + "name": "", + "signature": "sha256:5428ee61d548a6c3eefd868dac96cac83b29f85d9bfd7876e9904bdfe87b0fad" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h1>Chapter 11: Introducing the Class<h1>" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 11.1, Page Number: 249<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "class queue:\n", + " #Initialize the queue \n", + " def __init__(self):\n", + " self.__sloc=0\n", + " self.__rloc=-1\n", + " self.__q=[]\n", + " \n", + " #Put an integer into the queue\n", + " def qput(self,i):\n", + " if self.__sloc==100:\n", + " print \"Queue is full.\"\n", + " return\n", + " self.__sloc+=1\n", + " self.__q.append(i)\n", + " \n", + " #Get an integer from the queue\n", + " def qget(self):\n", + " if self.__rloc==self.__sloc:\n", + " print \"Queue underflow\"\n", + " return\n", + " self.__rloc+=1\n", + " return self.__q[self.__rloc] \n", + " \n", + "\n", + " \n", + "#Create two queue objects\n", + "b=queue()\n", + "a=queue()\n", + "\n", + "a.qput(10)\n", + "b.qput(19)\n", + "\n", + "a.qput(20)\n", + "b.qput(1)\n", + "\n", + "#Result\n", + "print \"Contents of queue a: \",\n", + "print a.qget(),' ',a.qget()\n", + "\n", + "print \"Contents of queue b: \",\n", + "print b.qget(),' ',b.qget()\n", + "\n", + "\n", + " \n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Contents of queue a: 10 20\n", + "Contents of queue b: 19 1\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 11.2, Page Number: 250<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + " \n", + "class myclass:\n", + " def __init__(self):\n", + " self.__a=None #private member\n", + " self.b=None #public member\n", + " #public functions\n", + " def setlab(self,i):\n", + " self.__a=i #refer to a\n", + " self.b=i*i #refer to b\n", + " return\n", + " def geta(self):\n", + " return self.__a #refer to a\n", + " def reset(self):\n", + " #call setlab using self\n", + " self.setlab(0) #the object is already known\n", + " \n", + " \n", + "ob=myclass()\n", + "ob.setlab(5) #set ob.a and ob.b\n", + "print \"ob after setlab(5): \",ob.geta(),' ',\n", + "print ob.b #can access b because it is public\n", + "\n", + "ob.b=20 #can access b because it is public\n", + "print \"ob after ob.b=20: \",\n", + "print ob.geta(),' ',ob.b\n", + "\n", + "ob.reset()\n", + "print \"ob after ob.reset(): \",ob.geta(),' ',ob.b\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "ob after setlab(5): 5 25\n", + "ob after ob.b=20: 5 20\n", + "ob after ob.reset(): 0 0\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 11.3, Page Number: 254<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "class queue:\n", + " \n", + " #Constructor\n", + " def __init__(self): \n", + " self.__q=[]\n", + " self.__rloc=-1\n", + " self.__sloc=0\n", + " print \"Queue initialized\"\n", + " \n", + " #Destructor\n", + " def __del__(self):\n", + " print (\"Queue destroyed\")\n", + " \n", + " #Put an integer into the queue\n", + " def qput(self,i):\n", + " if self.__sloc == 100:\n", + " print \"Queue is full\"\n", + " return \n", + " self.__sloc+=1\n", + " self.__q.append(i)\n", + " \n", + " #Get an integer from the queue\n", + " def qget(self):\n", + " if self.__rloc==self.__sloc:\n", + " print \"Queue underflow\"\n", + " return\n", + " self.__rloc+=1\n", + " return self.__q[self.__rloc]\n", + " \n", + "#Create two queue objects\n", + "a=queue()\n", + "\n", + "\n", + "a.qput(10)\n", + "a.qput(20)\n", + "b=queue()\n", + "b.qput(19)\n", + "\n", + "b.qput(1)\n", + "\n", + "#Result\n", + "print a.qget(),' ',\n", + "print a.qget(),' ',\n", + "print b.qget(),' ',\n", + "print b.qget(),' '\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Queue initialized\n", + "Queue destroyed\n", + "Queue initialized\n", + "Queue destroyed\n", + "10 20 19 1 \n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 11.4, Page Number: 257<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "class queue: \n", + " \n", + " #Constructor\n", + " def __init__(self,i): \n", + " self.__q=[]\n", + " self.__rloc=-1\n", + " self.__sloc=0\n", + " self.__who=i\n", + " print \"Queue \",self.__who,\" initialized.\"\n", + " \n", + " #Destructor\n", + " def __del__():\n", + " print \"Queue \",self.__who,\" destroyed\"\n", + " \n", + " #Put an integer into the queue\n", + " def qput(self,i):\n", + " if self.__sloc == 100:\n", + " print \"Queue is full\"\n", + " return \n", + " self.__sloc+=1\n", + " self.__q.append(i)\n", + " \n", + " #Get an integer from the queue\n", + " def qget(self):\n", + " if self.__rloc==self.__sloc:\n", + " print \"Queue underflow\"\n", + " return\n", + " self.__rloc+=1\n", + " return self.__q[self.__rloc]\n", + " \n", + "a=queue(1)\n", + "b=queue(2)\n", + "\n", + "a.qput(10)\n", + "b.qput(19)\n", + "\n", + "a.qput(20)\n", + "b.qput(1)\n", + "\n", + "#Result\n", + "print a.qget(),' ',\n", + "print a.qget(),' ',\n", + "print b.qget(),' ',\n", + "print b.qget(),' '\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Queue 1 initialized.\n", + "Queue destroyed\n", + "Queue 2 initialized.\n", + "Queue destroyed\n", + "10 20 19 1 \n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 11.5, Page Number: 258<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "class widget:\n", + " \n", + " #Pass two arguments to the constructor\n", + " def __init__(self,a,b):\n", + " self.__i=a\n", + " self.__j=b\n", + " \n", + " def put_widget(self):\n", + " print self.__i,\" \",self.__j\n", + "\n", + "#Initializing\n", + "x=widget(10,20)\n", + "y=widget(0,0)\n", + "\n", + "x.put_widget()\n", + "y.put_widget()\n", + "\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "10 20\n", + "0 0\n" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 11.6, Page Number: 259<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "class myclass:\n", + " \n", + " #Constructor\n", + " def __init__(self,x):\n", + " self.a=x\n", + " #To get the vale of a\n", + " def get_a(self):\n", + " return self.a\n", + "\n", + "#Initializing\n", + "ob=myclass(4)\n", + "\n", + "#Result\n", + "print ob.get_a()" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "4\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 11.7, Page Number: 260<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "from ctypes import *\n", + "\n", + "class c1(Structure):\n", + " _fields_=[(\"__i\", c_int)] #private member\n", + " def get_i(self): #public finctions\n", + " return self.__i\n", + " def put_i(self,j):\n", + " self.__i=j\n", + "\n", + "#Variable declaration\n", + "s=c1()\n", + "\n", + "s.put_i(10)\n", + "\n", + "#Result\n", + "print s.get_i()\n", + " \n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "10\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 11.8, Page Number: 261<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "class c1:\n", + " def __init__(self):\n", + " self.__i=None #private member\n", + " def get_i(self): #public finctions\n", + " return self.__i\n", + " def put_i(self,j):\n", + " self.__i=j\n", + "\n", + "#Variable declaration\n", + "s=c1()\n", + "\n", + "s.put_i(10)\n", + "\n", + "#Result\n", + "print s.get_i()\n", + " \n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "10\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 11.9, Page Number: 263<h3> " + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "from ctypes import *\n", + "\n", + "#Creates a union\n", + "class u_type(Union):\n", + " _fields_ = [(\"i\",c_short),\n", + " (\"ch\", c_char*2)]\n", + " #Constructor\n", + " def __init__(self,a):\n", + " self.i=a\n", + " \n", + " #Show the characters that comprise a short int.\n", + " def showchars(self):\n", + " print self.ch[0]\n", + " print self.ch[1]\n", + " \n", + " \n", + "u=u_type(1000)\n", + "\n", + "#Displays char of 1000\n", + "u.showchars()" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "\ufffd\n", + "\u0003\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 11.10, Page Number: 264<h3> " + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "class c1:\n", + " def __init__(self):\n", + " self.__i=None\n", + " def get_i(self):\n", + " return self.i\n", + " def put_i(self,j):\n", + " self.i=j\n", + "\n", + "#Variable declaration\n", + "s=c1()\n", + "\n", + "s.put_i(10)\n", + "\n", + "#Result\n", + "print s.get_i()" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "10\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 11.11, Page Number: 265<h3> " + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "class c1:\n", + " def __init__(self):\n", + " self.__i=None\n", + " def get_i(self):\n", + " return self.i\n", + " def put_i(self,j):\n", + " self.i=j\n", + "\n", + "#Variable declaration\n", + "s=c1()\n", + "\n", + "s.put_i(10)\n", + "\n", + "#Result\n", + "print s.get_i()" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "10\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 11.12, Page Number: 267<h3> " + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "class display:\n", + " def __init__(self):\n", + " width=None\n", + " height=None\n", + " res=None\n", + " def set_dim(self,w,h):\n", + " self.width=w\n", + " self.height=h\n", + " def get_dim(self):\n", + " return self.width,self.height\n", + " def set_res(self,r):\n", + " self.res=r\n", + " def get_res(self):\n", + " return self.res\n", + " \n", + "#Variable decleration\n", + "names=[\"low\",\"medium\",\"high\"] \n", + "(low,medium,high)=(0,1,2) #For enumeration type\n", + "w=None\n", + "h=None\n", + "display_mode=[]*3\n", + "\n", + "for i in range(3):\n", + " display_mode.append(display())\n", + "\n", + "#Initialize the array of objects using member functions\n", + "display_mode[0].set_res(low)\n", + "display_mode[0].set_dim(640,480)\n", + "\n", + "display_mode[1].set_res(medium)\n", + "display_mode[1].set_dim(800,600)\n", + "\n", + "display_mode[2].set_res(high)\n", + "display_mode[2].set_dim(1600,1200)\n", + "\n", + "#Result\n", + "print \"Available display modes: \"\n", + "for i in range(3):\n", + " print names[display_mode[i].get_res()],\" : \",\n", + " w,h=display_mode[i].get_dim()\n", + " print w,\" by \",h" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Available display modes: \n", + "low : 640 by 480\n", + "medium : 800 by 600\n", + "high : 1600 by 1200\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 11.13, Page Number: 268<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "class samp:\n", + " __a=None\n", + " def __init__(self,n):\n", + " self.__a=n\n", + " def get_a(self):\n", + " return self.__a\n", + "\n", + "#Initializing the list\n", + "sampArray=[samp(-1),samp(-2),samp(-3),samp(-4)]\n", + "\n", + "#Display\n", + "for i in range(4):\n", + " print sampArray[i].get_a(),' '," + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "-1 -2 -3 -4 \n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 11.14, Page Number: 269<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "class samp:\n", + " __a=None\n", + " __b=None\n", + " def __init__(self,n,m):\n", + " self.__a=n\n", + " self.__b=m\n", + " def get_a(self):\n", + " return self.__a\n", + " def get_b(self):\n", + " return self.__b\n", + " \n", + "#Initializing the list\n", + "sampArray=[[samp(1,2),samp(3,4)],\n", + " [samp(5,6),samp(7,8)],\n", + " [samp(9,10),samp(11,12)],\n", + " [samp(13,14),samp(15,16)]]\n", + "\n", + "#Display\n", + "for i in range(4):\n", + " print sampArray[i][0].get_a(),' ',\n", + " print sampArray[i][0].get_b()\n", + " print sampArray[i][1].get_a(),' ',\n", + " print sampArray[i][1].get_b()" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "1 2\n", + "3 4\n", + "5 6\n", + "7 8\n", + "9 10\n", + "11 12\n", + "13 14\n", + "15 16\n" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 11.15, Page Number: 270<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "from ctypes import *\n", + "\n", + "class P_example(Structure):\n", + " __num=None\n", + " def set_num(self,val):\n", + " self.__num=val\n", + " def show_num(self):\n", + " print self.__num\n", + "\n", + "#Variable declaration\n", + "ob=P_example() #Declare an object to the structure\n", + "p=POINTER(P_example) #Declare a pointer to the structure\n", + "\n", + "ob.set_num(1) #access ob directly\n", + "ob.show_num()\n", + "\n", + "p=ob #assign p the address of ob\n", + "p.show_num() #access ob using pointer\n", + " \n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "1\n", + "1\n" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 11.16, Page Number: 271<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "class P_example(Structure):\n", + " __num=None\n", + " def set_num(self,val):\n", + " self.__num=val\n", + " def show_num(self):\n", + " print self.__num\n", + " \n", + "#Variable declaration\n", + "ob=[P_example(),P_example()] #Declare an object to the structure\n", + "p=POINTER(P_example) #Declare a pointer to the structure\n", + "\n", + "ob[0].set_num(10) #access objects directly\n", + "ob[1].set_num(20)\n", + "\n", + "p=ob #obtain pointer to first element\n", + "p[0].show_num() #access ob using pointer\n", + "\n", + "p[1].show_num()\n", + "\n", + "p[0].show_num()\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "10\n", + "20\n", + "10\n" + ] + } + ], + "prompt_number": 7 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [], + "language": "python", + "metadata": {}, + "outputs": [] + } + ], + "metadata": {} + } + ] +}
\ No newline at end of file diff --git a/C++_from_the_Ground/Chapter_12.ipynb b/C++_from_the_Ground/Chapter_12.ipynb new file mode 100644 index 00000000..a29c9b4d --- /dev/null +++ b/C++_from_the_Ground/Chapter_12.ipynb @@ -0,0 +1,904 @@ +{ + "metadata": { + "name": "", + "signature": "sha256:0b4a52abc3f3246965d1e59241352e867e78e448510ae25e91b7d38dc4dcc202" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h1>Chapter 12: A Closer Look at Classes<h1>" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 12.1, Page Number: 274<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "class myclass:\n", + " __a=None\n", + " __b=None\n", + " def __init__(self,i,j):\n", + " self.__a=i\n", + " self.__b=j\n", + " def sum(self,x): #Friend function\n", + " return sum1(x)\n", + " \n", + "def sum1(x): \n", + " return x._myclass__a +x._myclass__b #accessing private members\n", + "\n", + "#Variable declaration\n", + "n=myclass(3,4)\n", + "\n", + "#Result\n", + "print n.sum(n)\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "7\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 12.2, Page Number: 275<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "class c1:\n", + " __status=None\n", + " def set_status(self,state):\n", + " self.__status=state\n", + " \n", + "class c2:\n", + " __status=None\n", + " def set_status(self,state):\n", + " self.status=state\n", + " \n", + "#Friend function \n", + "def idle(a,b):\n", + " if a._c1__status or b._c2__status :\n", + " return 0\n", + " else:\n", + " return 1\n", + " \n", + "#variable declarations\n", + "def IDLE(): #Constants\n", + " return 0\n", + "def INUSE():\n", + " return 1\n", + "x=c1()\n", + "y=c2()\n", + "\n", + "x.set_status(IDLE())\n", + "y.set_status(IDLE())\n", + "\n", + "if idle(x,y):\n", + " print \"Screen Can Be Used.\"\n", + " \n", + "x.set_status(INUSE())\n", + "\n", + "if idle(x,y):\n", + " print \"Screen Can Be Used.\"\n", + "else:\n", + " print \"Pop-up In Use.\"\n", + " \n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Screen Can Be Used.\n", + "Pop-up In Use.\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 12.3, Page Number: 277<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "def IDLE(): \n", + " return 0\n", + "def INUSE():\n", + " return 1\n", + "\n", + "class c1:\n", + " __status=None\n", + " def set_status(self,state):\n", + " self.__status=state\n", + " def idle(self,b): #now a member of c1\n", + " if self.__status or b._c2__status :\n", + " return 0\n", + " else:\n", + " return 1\n", + " \n", + "class c2:\n", + " __status=None #IDLE if off INUSE if on screen\n", + " def set_status(self,state):\n", + " self.status=state\n", + " \n", + "#Variable declarations \n", + "x=c1()\n", + "y=c2()\n", + "\n", + "x.set_status(IDLE())\n", + "y.set_status(IDLE())\n", + "\n", + "if idle(x,y):\n", + " print \"Screen Can Be Used.\"\n", + " \n", + "x.set_status(INUSE())\n", + "\n", + "if idle(x,y):\n", + " print \"Screen Can Be Used.\"\n", + "else:\n", + " print \"Pop-up In Use.\"\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Screen Can Be Used.\n", + "Pop-up In Use.\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 12.4, Page Number: 278<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "import time,string\n", + "\n", + "class timer:\n", + " __seconds=None\n", + " \n", + " def __init__(self,t1,t2=None):\n", + " if t2==None:\n", + " if isinstance(t1,int): #seconds specified as an integer\n", + " self.__seconds=t1\n", + " else: #seconds specified as a string\n", + " self.__seconds=string.atoi(t1)\n", + " else: #time in minutes and seconds\n", + " self.__seconds=t1*60+t2\n", + " \n", + " def run(self):\n", + " t1=time.clock()\n", + " while (time.clock()-t1)<self.__seconds:\n", + " a=10\n", + " print time.clock()-t1\n", + " \n", + " \n", + "a=timer(10)\n", + "b=timer(\"20\")\n", + "c=timer(1,10)\n", + "a.run() #count 10 seconds\n", + "b.run() #count 20 seconds\n", + "c.run() #count 1 minute,10 seconds\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "10.0000009774\n", + "20.0000009774" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "\n", + "70.0000004887" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 12.5, Page Number: 280<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "import time,string\n", + "\n", + "class timer:\n", + " __seconds=None\n", + " \n", + " def __init__(self,t1,t2=None):\n", + " if t2==None:\n", + " if isinstance(t1,int): #seconds specified as an integer\n", + " self.__seconds=t1\n", + " else: #seconds specified as a string\n", + " self.__seconds=string.atoi(t1)\n", + " else: #time in minutes and seconds\n", + " self.__seconds=t1*60+t2\n", + " \n", + " def run(self):\n", + " t1=time.clock()\n", + " while (time.clock()-t1)<self.__seconds:\n", + " a=10\n", + " print time.clock()-t1\n", + " \n", + "a=timer(10)\n", + "a.run()\n", + "\n", + "print \"Enter number of seconds: \"\n", + "str=\"20\"\n", + "b=timer(str) #initialize at the run time\n", + "c.run()\n", + "\n", + "print \"Enter minutes and seconds: \"\n", + "min=1\n", + "sec=10\n", + "c=timer(min,sec) #initialize at the run time\n", + "c.run()\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "10.0000004887\n", + "Enter number of seconds: \n", + "70.0000009774" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "\n", + "Enter minutes and seconds: \n", + "70.0000009774" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 12.6, Page Number: 282<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "class myclass:\n", + " __a=None #private members\n", + " __b=None\n", + " def setab(self,i,j): #publc functons\n", + " self.__a=i\n", + " self.__b=j\n", + " def showab(self):\n", + " print \"a is \",self.__a\n", + " print \"b is \",self.__b\n", + "\n", + "#Variable declaration\n", + "ob1 = myclass()\n", + "ob2 = myclass()\n", + "\n", + "#Intalizing\n", + "ob1.setab(10,20)\n", + "ob2.setab(0,0)\n", + "\n", + "print \"ob1 before assignment: \"\n", + "ob1.showab()\n", + "print \"ob2 before assignment: \"\n", + "ob2.showab()\n", + "\n", + "ob2 = ob1 #assign ob1 to ob2\n", + "\n", + "#Result\n", + "print \"ob1 after assignment: \"\n", + "ob1.showab()\n", + "print \"ob2 after assignment: \"\n", + "ob2.showab()\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "ob1 before assignment: \n", + "a is 10\n", + "b is 20\n", + "ob2 before assignment: \n", + "a is 0\n", + "b is 0\n", + "ob1 after assignment: \n", + "a is 10\n", + "b is 20\n", + "ob2 after assignment: \n", + "a is 10\n", + "b is 20\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 12.7, Page Number: 283<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "from copy import deepcopy\n", + " \n", + "class OBJ:\n", + " def set_i(self,x):\n", + " self.__i=x\n", + " def out_i(self):\n", + " print self.__i,\n", + " \n", + "def f(x):\n", + " x=deepcopy(x)\n", + " x.out_i() #outputs 10\n", + " x.set_i(100) #this affects only local copy\n", + " x.out_i() #outputs 100\n", + " \n", + "#Variable declaration\n", + "o=OBJ()\n", + "o.set_i(10)\n", + "f(o) \n", + "o.out_i() #still outputs 10, value of i unchanged\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "10 100 10\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 12.8, Page Number: 284<h3> " + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "class myclass: \n", + " def __init__(self,i):\n", + " self.__val=i\n", + " print \"Constructing\"\n", + " def __del__(self):\n", + " print \"Destructing\"\n", + " def getval(self):\n", + " return self.__val\n", + " \n", + "def display(ob):\n", + " print ob.getval()\n", + "\n", + "#Varable declaration\n", + "a=myclass(10)\n", + "\n", + "display(a)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Constructing\n", + "Destructing\n", + "10\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 12.9, Page Number: 286<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "from ctypes import *\n", + "\n", + "class myclass:\n", + " def __init__(self,i):\n", + " print \"Allocating p\"\n", + " self.p=pointer(c_int(i))\n", + " def __del__(self):\n", + " print \"Freeing p\"\n", + " def getval(self):\n", + " return self.p[0]\n", + " \n", + "def display(ob):\n", + " print ob.getval()\n", + "\n", + "#Variable declaration\n", + "a=myclass(10)\n", + "\n", + "display(a)\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Allocating p\n", + "10\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 12.10, Page Number: 287<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + " \n", + "from ctypes import *\n", + "class myclass:\n", + " def __init__(self,i):\n", + " print \"Allocating p\"\n", + " self.p=pointer(c_int(i))\n", + " def __del__(self):\n", + " print \"Freeing p\"\n", + " def getval(self):\n", + " return self.p[0]\n", + " \n", + "def display(ob):\n", + " print ob[0].getval()\n", + "\n", + "#Variable declaration\n", + "a=[]\n", + "a.append(myclass(10))\n", + "\n", + "display(a)\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Freeing p\n", + "Allocating p\n", + "10\n" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 12.11, Page Number: 288<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "class sample:\n", + " __s=None\n", + " def show(self):\n", + " print self.__s\n", + " def set(self,str):\n", + " self.__s=str\n", + "\n", + "#Return an object of type sample\n", + "def input():\n", + " str=sample()\n", + " instr = \"Hello\" #User input\n", + " str.set(instr)\n", + " return str\n", + "\n", + "#Variable declaration\n", + "ob=sample()\n", + "\n", + "#assign returned object to ob\n", + "ob=input()\n", + "\n", + "#Result\n", + "ob.show()\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Hello\n" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 12.12, Page Number: 289<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "class sample:\n", + " __s=None\n", + " def __init__(self):\n", + " self.__s=0\n", + " def __del__(self): \n", + " print \"Freeing p\"\n", + " def show(self):\n", + " print self.__s\n", + " def set(self,str):\n", + " self.__s=str\n", + " \n", + "#This function takes one object parameter\n", + "def input():\n", + " str=sample()\n", + " instr=\"Hello\" #User input\n", + " str.set(instr)\n", + " return str\n", + "\n", + "#Variable declaration\n", + "ob=sample()\n", + "\n", + "#assign returned object to ob\n", + "ob=input()\n", + "\n", + "#Result\n", + "ob.show()\n", + "\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Freeing p\n", + "Freeing p\n", + "Hello\n" + ] + } + ], + "prompt_number": 8 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 12.13, Page Number: 292<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "class myclass:\n", + " __p=None\n", + " def __init__(self,i):\n", + " if isinstance(i,int):\n", + " print \"Allocating p\"\n", + " self.__p=i\n", + " else:\n", + " print \"Copy constructor called\"\n", + " self.__p=i.getval()\n", + " def __del__(self): \n", + " print \"Freeing p\"\n", + " def getval(self):\n", + " return self.__p\n", + " \n", + "#This function takes one object parameter\n", + "def display(ob):\n", + " print ob.getval()\n", + "\n", + "#Variable declaration\n", + "ob=myclass(10)\n", + "\n", + "#Result\n", + "display(ob)\n", + "\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Allocating p\n", + "10\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 12.14, Page Number: 294<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "\n", + "class myclass:\n", + " __p=None\n", + " def __init__(self,i):\n", + " if isinstance(i,int):\n", + " print \"Allocating p\"\n", + " self.__p=i\n", + " else:\n", + " print \"Copy constructor called\"\n", + " self.__p=i.getval()\n", + " def __del__(self): \n", + " print \"Freeing p\"\n", + " def getval(self):\n", + " return self.__p\n", + " \n", + "\n", + "#Variable declaration\n", + "a=myclass(10) #calls normal constructor\n", + "b=myclass(a) #calls copy constructor\n", + "\n", + "\n", + "\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Allocating p\n", + "Copy constructor called\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 12.15, Page Number: 295<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "class myclass:\n", + " def __init__(self,i=0):\n", + " if isinstance(i,int):\n", + " print \"Normal constructor\"\n", + " else:\n", + " print \"Copy constructor\"\n", + "\n", + "\n", + "#Variable declaration\n", + "a=myclass() #calls normal constructor\n", + "\n", + "f=myclass()\n", + "a=myclass(f) #Invoke copyconstructor\n", + "\n", + "\n", + "\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Normal constructor\n", + "Normal constructor\n", + "Copy constructor\n" + ] + } + ], + "prompt_number": 8 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 12.16, Page Number: 297<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "class c1:\n", + " def __init__(self):\n", + " self.__i=None\n", + " def load_i(self,val):\n", + " self.__i=val\n", + " def get_i(self):\n", + " return self.__i\n", + " \n", + "#Variable declaration \n", + "o=c1()\n", + "\n", + "o.load_i(100)\n", + "\n", + "#Result\n", + "print o.get_i()\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "100\n" + ] + } + ], + "prompt_number": 13 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [], + "language": "python", + "metadata": {}, + "outputs": [] + } + ], + "metadata": {} + } + ] +}
\ No newline at end of file diff --git a/C++_from_the_Ground/Chapter_13.ipynb b/C++_from_the_Ground/Chapter_13.ipynb new file mode 100644 index 00000000..6d12a5a7 --- /dev/null +++ b/C++_from_the_Ground/Chapter_13.ipynb @@ -0,0 +1,883 @@ +{ + "metadata": { + "name": "", + "signature": "sha256:be0df45a07fa8844875025463a4211b5faab9834d4e1dd155b475b36ae6ea27e" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h1>Chapter 13: Operator Overloading<h1>" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 13.1, Page Number: 300<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "class three_d:\n", + " def __init__(self,i=None,j=None,k=None):\n", + " if i==None:\n", + " self.x=self.y=self.z=0\n", + " else:\n", + " self.x=i\n", + " self.y=j\n", + " self.z=k\n", + " #Overload +\n", + " def __add__(self,op2):\n", + " temp=three_d()\n", + " temp.x=self.x + op2.x #These are integer additions\n", + " temp.y=self.y + op2.y #and the + retains its original\n", + " temp.z=self.z + op2.z #meaning relative to them.\n", + " return temp\n", + " #Overload assignment\n", + " def __assign__(self,op2):\n", + " self.x=op2.x #These are integer assignments\n", + " self.y=op2.y #and the = retains its original \n", + " self.z=op2.z #meaning relative to them\n", + " return self\n", + " #Show x,y,z coordinates\n", + " def show(self):\n", + " print self.x,\",\",self.y,\",\",self.z\n", + " \n", + "#Variable declaration\n", + "a=three_d(1,2,3)\n", + "b=three_d(10,10,10)\n", + "c=three_d()\n", + "\n", + "a.show()\n", + "b.show()\n", + "\n", + "#add a and b together\n", + "c=a+b\n", + "c.show()\n", + "\n", + "#add a,b and c together\n", + "c=a+b+c\n", + "c.show()\n", + "\n", + "#demonstrate multiple assignment\n", + "c=b=a\n", + "c.show()\n", + "b.show()\n", + " \n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "1 , 2 , 3\n", + "10 , 10 , 10\n", + "11 , 12 , 13\n", + "22 , 24 , 26\n", + "1 , 2 , 3\n", + "1 , 2 , 3\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 13.2, Page Number: 303<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "class three_d:\n", + " def __init__(self,i=None,j=None,k=None):\n", + " if i==None:\n", + " self.x=self.y=self.z=0\n", + " else:\n", + " self.x=i\n", + " self.y=j\n", + " self.z=k\n", + " #Overload +\n", + " def __add__(self,op2):\n", + " temp=three_d()\n", + " temp.x=self.x + op2.x #These are integer additions\n", + " temp.y=self.y + op2.y #and the + retains its original\n", + " temp.z=self.z + op2.z #meaning relative to them.\n", + " return temp\n", + " #Overload assignment\n", + " def __assign__(self,op2):\n", + " self.x=op2.x #These are integer assignments\n", + " self.y=op2.y #and the = retains its original \n", + " self.z=op2.z #meaning relative to them\n", + " return self\n", + " #Overload the increment operator\n", + " def __iadd__(self,op2):\n", + " self.x+=op2\n", + " self.y+=op2\n", + " self.z+=op2\n", + " return self\n", + " #Show x,y,z coordinates\n", + " def show(self):\n", + " print self.x,\",\",self.y,\",\",self.z\n", + " \n", + "a=three_d(1,2,3)\n", + "b=three_d(10,10,10)\n", + "c=three_d()\n", + "\n", + "a.show()\n", + "b.show()\n", + "\n", + "#add a and b together\n", + "c=a+b\n", + "c.show()\n", + "\n", + "#add a,b and c together\n", + "c=a+b+c\n", + "c.show()\n", + "\n", + "#demonstrate multiple assignment\n", + "c=b=a\n", + "c.show()\n", + "b.show()\n", + " \n", + "#Increment c\n", + "c+=1\n", + "c.show()\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "1 , 2 , 3\n", + "10 , 10 , 10\n", + "11 , 12 , 13\n", + "22 , 24 , 26\n", + "1 , 2 , 3\n", + "1 , 2 , 3\n", + "2 , 3 , 4\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 13.3, Page Number: 306<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "class three_d:\n", + " def __init__(self,i=None,j=None,k=None):\n", + " if i==None:\n", + " self.x=self.y=self.z=0\n", + " else:\n", + " self.x=i\n", + " self.y=j\n", + " self.z=k\n", + " #Overload +\n", + " def __add__(self,op2):\n", + " temp=three_d()\n", + " temp.x=self.x + op2.x #These are integer additions\n", + " temp.y=self.y + op2.y #and the + retains its original\n", + " temp.z=self.z + op2.z #meaning relative to them.\n", + " return temp\n", + " #Overload assignment\n", + " def __assign__(self,op2):\n", + " self.x=op2.x #These are integer assignments\n", + " self.y=op2.y #and the = retains its original \n", + " self.z=op2.z #meaning relative to them\n", + " return self\n", + " #Overload the increment operator\n", + " def __iadd__(self,op2):\n", + " self.x+=op2\n", + " self.y+=op2\n", + " self.z+=op2\n", + " return self\n", + " #Show x,y,z coordinates\n", + " def show(self):\n", + " print self.x,\",\",self.y,\",\",self.z\n", + " \n", + "a=three_d(1,2,3)\n", + "b=three_d(10,10,10)\n", + "c=three_d()\n", + "\n", + "a.show()\n", + "b.show()\n", + "\n", + "#add a and b together\n", + "c=a+b\n", + "c.show()\n", + "\n", + "#add a,b and c together\n", + "c=a+b+c\n", + "c.show()\n", + "\n", + "#demonstrate multiple assignment\n", + "c=b=a\n", + "c.show()\n", + "b.show()\n", + " \n", + "#Increment c (prefix)\n", + "c+=1\n", + "c.show()\n", + "\n", + "#Increment c (postfix)\n", + "c+=1\n", + "c.show()\n", + "\n", + "#Implementing prefix\n", + "c+=1\n", + "a=c\n", + "a.show()\n", + "c.show()\n", + "\n", + "#Implementing postfix\n", + "a=c\n", + "a.show()\n", + "c+=1\n", + "c.show()" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "1 , 2 , 3\n", + "10 , 10 , 10\n", + "11 , 12 , 13\n", + "22 , 24 , 26\n", + "1 , 2 , 3\n", + "1 , 2 , 3\n", + "2 , 3 , 4\n", + "3 , 4 , 5\n", + "4 , 5 , 6\n", + "4 , 5 , 6\n", + "4 , 5 , 6\n", + "5 , 6 , 7\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 13.4, Page Number: 310<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "class three_d:\n", + " def __init__(self,i=None,j=None,k=None):\n", + " if i==None:\n", + " self.x=self.y=self.z=0\n", + " else:\n", + " self.x=i\n", + " self.y=j\n", + " self.z=k\n", + " #Overload +\n", + " def __add__(self,op2):\n", + " return add(self,op2)\n", + " #Overload assignment\n", + " def __assign__(self,op2):\n", + " self.x=op2.x #These are integer assignments\n", + " self.y=op2.y #and the = retains its original \n", + " self.z=op2.z #meaning relative to them\n", + " return self\n", + " #Show x,y,z coordinates\n", + " def show(self):\n", + " print self.x,\",\",self.y,\",\",self.z\n", + " \n", + "#friending the funcion\n", + "def add(op1,op2):\n", + " temp=three_d()\n", + " temp.x=op1.x + op2.x #These are integer additions\n", + " temp.y=op1.y + op2.y #and the + retains its original\n", + " temp.z=op1.z + op2.z #meaning relative to them.\n", + " return temp\n", + "\n", + "a=three_d(1,2,3)\n", + "b=three_d(10,10,10)\n", + "c=three_d()\n", + "\n", + "a.show()\n", + "b.show()\n", + "\n", + "#add a and b together\n", + "c=a+b\n", + "c.show()\n", + "\n", + "#add a,b and c together\n", + "c=a+b+c\n", + "c.show()\n", + "\n", + "#demonstrate multiple assignment\n", + "c=b=a\n", + "c.show()\n", + "b.show()\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "1 , 2 , 3\n", + "10 , 10 , 10\n", + "11 , 12 , 13\n", + "22 , 24 , 26\n", + "1 , 2 , 3\n", + "1 , 2 , 3\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 13.5, Page Number: 311<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "class CL:\n", + " def __init__(self):\n", + " self.count=0\n", + " def __assign__(self,obj):\n", + " self.count=obj.count\n", + " return self\n", + " def __add__(self,i): \n", + " return add(self,i)\n", + " def __radd__(self,i):\n", + " return radd(self,i)\n", + "\n", + "#This handles ob + int\n", + "def add(ob,i):\n", + " temp=CL()\n", + " temp.count=ob.count+i\n", + " return temp\n", + " \n", + "#This handles int + ob \n", + "def radd(ob,i):\n", + " temp=CL()\n", + " temp.count=i+ob.count\n", + " return temp\n", + "\n", + "#Variable declaration\n", + "o=CL()\n", + "o.count = 10\n", + "\n", + "#Result\n", + "print o.count, #outputs 10\n", + "o=10+o\n", + "print o.count, #outputs 20\n", + "o=o+12\n", + "print o.count #outputs 32\n", + "\n", + "\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "10 20 32\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 13.6, Page Number: 314<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "class three_d:\n", + " def __init__(self,i=None,j=None,k=None):\n", + " if i==None:\n", + " self.x=self.y=self.z=0\n", + " else:\n", + " self.x=i\n", + " self.y=j\n", + " self.z=k\n", + " #Overload +\n", + " def __add__(self,op2):\n", + " return add(self,op2)\n", + " #Overload assignment\n", + " def __assign__(self,op2):\n", + " self.x=op2.x #These are integer assignments\n", + " self.y=op2.y #and the = retains its original \n", + " self.z=op2.z #meaning relative to them\n", + " return self\n", + " #Overload the increment operator\n", + " def __iadd__(self,op2):\n", + " return iadd(self,op2)\n", + " #Show x,y,z coordinates\n", + " def show(self):\n", + " print self.x,\",\",self.y,\",\",self.z\n", + "\n", + "#friending the funcion\n", + "def add(op1,op2):\n", + " temp=three_d()\n", + " temp.x=op1.x + op2.x #These are integer additions\n", + " temp.y=op1.y + op2.y #and the + retains its original\n", + " temp.z=op1.z + op2.z #meaning relative to them.\n", + " return temp\n", + "def iadd(op1,op2):\n", + " op1.x+=op2\n", + " op1.y+=op2\n", + " op1.z+=op2\n", + " return op1\n", + " \n", + "a=three_d(1,2,3)\n", + "b=three_d(10,10,10)\n", + "c=three_d()\n", + "\n", + "a.show()\n", + "b.show()\n", + "\n", + "#add a and b together\n", + "c=a+b\n", + "c.show()\n", + "\n", + "#add a,b and c together\n", + "c=a+b+c\n", + "c.show()\n", + "\n", + "#demonstrate multiple assignment\n", + "c=b=a\n", + "c.show()\n", + "b.show()\n", + " \n", + "#Increment c (prefix)\n", + "c+=1\n", + "c.show()\n", + "\n", + "#Increment c (postfix)\n", + "c+=1\n", + "c.show()\n", + "\n", + "#Implementing prefix\n", + "c+=1\n", + "a=c\n", + "a.show()\n", + "c.show()\n", + "\n", + "#Implementing postfix\n", + "a=c\n", + "a.show()\n", + "c+=1\n", + "c.show()" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "1 , 2 , 3\n", + "10 , 10 , 10\n", + "11 , 12 , 13\n", + "22 , 24 , 26\n", + "1 , 2 , 3\n", + "1 , 2 , 3\n", + "2 , 3 , 4\n", + "3 , 4 , 5\n", + "4 , 5 , 6\n", + "4 , 5 , 6\n", + "4 , 5 , 6\n", + "5 , 6 , 7\n" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 13.7, Page Number: 318<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "class sample:\n", + " def __init__(self,ob=0):\n", + " if isinstance(ob,int):\n", + " #Normal constructor\n", + " self.__s=\"\"\n", + " return\n", + " else:\n", + " #Copy constructor\n", + " self.__s=obj._sample__s\n", + " return\n", + " def __del__(self):\n", + " print \"Freeing s\"\n", + " def show(self):\n", + " print self.__s\n", + " def set(self,str):\n", + " self.__s=str\n", + " def __assign__(self,ob): #Overload assignment\n", + " self.s=ob._sample__s\n", + " return self\n", + " \n", + "def input():\n", + " str=sample()\n", + " instr=\"Hello\" #User input\n", + " str.set(instr)\n", + " return str\n", + "\n", + "ob=sample()\n", + "\n", + "#assign returned object to ob\n", + "ob=input()\n", + "\n", + "#Result\n", + "ob.show()\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Freeing s\n", + "Freeing s\n", + "Hello\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 13.8, Page Number: 321<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "class atype:\n", + " def __init__(self):\n", + " self.__a=[]\n", + " for i in range(SIZE):\n", + " self.__a.append(i)\n", + " def a(self,i):\n", + " return self.__a[i]\n", + " \n", + "#Variable declaration\n", + "SIZE=3\n", + "ob=atype()\n", + "\n", + "#Result\n", + "print ob.a(2),\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "2\n" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 13.9, Page Number: 322<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "class atype:\n", + " def __init__(self):\n", + " self.__a=[]\n", + " for i in range(SIZE):\n", + " self.__a.append(i)\n", + " def a(self,i,j=None):\n", + " if j==None:\n", + " return self.__a[i]\n", + " else:\n", + " self.__a[i]=j\n", + " \n", + "#Variable declaration\n", + "SIZE=3 \n", + "ob=atype()\n", + "\n", + "print ob.a(2), #displays 2\n", + "\n", + "ob.a(2,25)\n", + "\n", + "print ob.a(2) #now displays 25" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "2 25\n" + ] + } + ], + "prompt_number": 7 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 13.10, Page Number: 323<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "class atype:\n", + " def __init__(self):\n", + " self.__a=[]\n", + " for i in range(SIZE):\n", + " self.__a.append(i)\n", + " def a(self,i,j=None):\n", + " if (i<0 or i>SIZE-1):\n", + " print \"Index value of\",\n", + " print i,\"is out of bounds.\"\n", + " return\n", + " if j==None:\n", + " return self.__a[i]\n", + " else:\n", + " self.__a[i]=j\n", + " \n", + "#Variable declaration\n", + "SIZE=3 \n", + "ob=atype()\n", + "\n", + "print ob.a(2), #displays 2\n", + "\n", + "ob.a(2,25)\n", + "\n", + "print ob.a(2) #now displays 25\n", + "\n", + "ob.a(44,3) #generates runtime error, 3 out of bounds" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "2 25\n", + "Index value of 44 is out of bounds.\n" + ] + } + ], + "prompt_number": 9 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 13.11, Page Number: 324<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "class three_d:\n", + " def __init__(self,i=None,j=None,k=None):\n", + " if i==None:\n", + " self.x=self.y=self.z=0 #3-D coordinates\n", + " else:\n", + " self.x=i\n", + " self.y=j\n", + " self.z=k\n", + " #Show X,Y,Z coordinates\n", + " def show(self):\n", + " print self.x,\",\",self.y,\",\",self.z\n", + " #Overload ()\n", + " def a(self,a,b,c):\n", + " temp = three_d()\n", + " temp.x=self.x+a\n", + " temp.y=self.y+b\n", + " temp.z=self.z+c\n", + " return temp\n", + " \n", + "#Variable declaration\n", + "ob1=three_d(1,2,3)\n", + "\n", + "ob2=ob1.a(10,11,12) #invoke operator ()\n", + "\n", + "#Result\n", + "print \"ob1: \",\n", + "ob1.show()\n", + "print \"ob2: \",\n", + "ob2.show()" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "ob1: 1 , 2 , 3\n", + "ob2: 11 , 13 , 15\n" + ] + } + ], + "prompt_number": 10 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 13.12, Page Number: 326<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "class str_type:\n", + " def __init__(self,str=\"\"):\n", + " self.__string=str\n", + " #String concatenation\n", + " def __add__(self,str):\n", + " temp=str_type()\n", + " if isinstance(str,str_type):\n", + " temp.__string=self.__string+str.__string\n", + " else:\n", + " temp.__string=self.__string+str\n", + " return temp\n", + " #String copy\n", + " def __assign__(self,str):\n", + " if isinstance(str,str_type):\n", + " self.__string=str.__string\n", + " else:\n", + " self.__string=str\n", + " return self\n", + " def show_str(self):\n", + " print self.__string\n", + " \n", + "a=str_type(\"Hello \")\n", + "b=str_type(\"There\")\n", + "c=a+b\n", + "c.show_str()\n", + "\n", + "a=str_type(\"to program in because\")\n", + "a.show_str()\n", + "\n", + "b=c=str_type(\"C++ is fun\")\n", + "\n", + "c=c+\" \"+a+\" \"+b\n", + "c.show_str()\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Hello There\n", + "to program in because\n", + "C++ is fun to program in because C++ is fun\n" + ] + } + ], + "prompt_number": 12 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [], + "language": "python", + "metadata": {}, + "outputs": [] + } + ], + "metadata": {} + } + ] +}
\ No newline at end of file diff --git a/C++_from_the_Ground/Chapter_14.ipynb b/C++_from_the_Ground/Chapter_14.ipynb new file mode 100644 index 00000000..2f8447ba --- /dev/null +++ b/C++_from_the_Ground/Chapter_14.ipynb @@ -0,0 +1,924 @@ +{ + "metadata": { + "name": "", + "signature": "sha256:d3cc78f10810f320519cd1c8becefb4790578385b5c2b528dc88273651f18c12" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h1>Chapter 14: Inheritance<h1>" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 14.1, Page Number: 333<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "class road_vehicle:\n", + " def __init__(self):\n", + " self.__wheels=None\n", + " self.__passengers=None\n", + " def set_wheels(self,num):\n", + " self.__wheels=num\n", + " def get_wheels(self):\n", + " return self.__wheels\n", + " def set_pass(self,num):\n", + " self.__passengers=num\n", + " def get_pass(self):\n", + " return self.__passengers\n", + "\n", + "#Define a truck\n", + "class truck(road_vehicle):\n", + " def __init__(self):\n", + " self.__cargo=None\n", + " def set_cargo(self,size):\n", + " self.__cargo=size\n", + " def get_cargo(self):\n", + " return self.__cargo\n", + " def show(self):\n", + " print \"wheels: \",self.get_wheels()\n", + " print \"passengers: \",self.get_pass()\n", + " print \"cargo capacity in cubic feet: \",self.__cargo\n", + " \n", + "#Define an enum type\n", + "(car,van,wagon)=(1,2,3)\n", + "type=[\"car\",\"van\",\"wagon\"]\n", + " \n", + "#Define an automobile\n", + "class automobile(road_vehicle):\n", + " def __init__(self):\n", + " self.car_type=None\n", + " def set_type(self,t):\n", + " self.car_type=t\n", + " def get_type(self):\n", + " return self.car_type\n", + " def show(self):\n", + " print \"wheels: \",self.get_wheels()\n", + " print \"passengers: \",self.get_pass()\n", + " print \"type: \",\n", + " if self.get_type()==1:\n", + " print \"car\"\n", + " elif self.get_type()==2:\n", + " print \"van\"\n", + " elif self.get_type()==3:\n", + " print \"wagon\"\n", + " \n", + "#Variable declaration\n", + "t1=truck()\n", + "t2=truck()\n", + "c=automobile()\n", + "\n", + "t1.set_wheels(18)\n", + "t1.set_pass(2)\n", + "t1.set_cargo(3200)\n", + "\n", + "t2.set_wheels(6)\n", + "t2.set_pass(3)\n", + "t2.set_cargo(1200)\n", + "\n", + "t1.show()\n", + "t2.show()\n", + "\n", + "c.set_wheels(4)\n", + "c.set_pass(6)\n", + "c.set_type(van)\n", + "\n", + "c.show() \n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "wheels: 18\n", + "passengers: 2\n", + "cargo capacity in cubic feet: 3200\n", + "wheels: 6\n", + "passengers: 3\n", + "cargo capacity in cubic feet: 1200\n", + "wheels: 4\n", + "passengers: 6\n", + "type: van\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 14.2, Page Number: 335<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "class base:\n", + " def __init__(self):\n", + " self.__i=self.__j=None\n", + " def set(self,a,b):\n", + " self.__i=a\n", + " self.__j=b\n", + " def show(self):\n", + " print self.__i,self.__j\n", + " \n", + "class derived(base):\n", + " def __init__(self,x):\n", + " self.__k=x\n", + " def showk(self):\n", + " print self.__k\n", + " \n", + "#Variable declaration\n", + "ob = derived(3)\n", + "\n", + "ob.set(1,2) #access member of base\n", + "ob.show() #access member of base\n", + "\n", + "ob.showk() #uses member of derived class\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "1 2\n", + "3\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 14.3, Page Number: 337<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "class base:\n", + " def __init__(self):\n", + " self.__i=self.__j=None #These act as protected members\n", + " def set(self,a,b):\n", + " self.__i=a\n", + " self.__j=b\n", + " def show(self):\n", + " print self.__i,self.__j\n", + " \n", + "class derived(base):\n", + " def __init__(self):\n", + " self.__k=None\n", + " def setk(self):\n", + " self.__k=self._base__i*self._base__j #accessing private variables in derived class\n", + " def showk(self):\n", + " print self.__k\n", + " \n", + "#Variable declaration\n", + "ob = derived()\n", + "\n", + "ob.set(2,3) #OK, known to be derived\n", + "ob.show() #OK, known to be derived\n", + "\n", + "ob.setk()\n", + "ob.showk() #uses member of derived class\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "2 3\n", + "6\n" + ] + } + ], + "prompt_number": 10 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 14.4, Page Number: 338<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "class base:\n", + " def __init__(self):\n", + " self.__i=None\n", + " self.__j=None\n", + " def set(self,a,b):\n", + " self.__i=a\n", + " self.__j=b\n", + " def show(self):\n", + " print self.__i,self.__j\n", + " \n", + "class derived1(base):\n", + " def __init__(self):\n", + " self.__k=None\n", + " def setk(self):\n", + " self.__k=self._base__i*self._base__j\n", + " def showk(self):\n", + " print self.__k\n", + "\n", + "class derived2(derived1):\n", + " def __init__(self):\n", + " self.__m=None\n", + " def setm(self):\n", + " self.__m=self._base__i-self._base__j\n", + " def showm(self):\n", + " print self.__m\n", + " \n", + " \n", + "#Variable declaration\n", + "ob1 = derived1()\n", + "ob2 = derived2()\n", + "\n", + "ob1.set(2,3) #access member of base\n", + "ob1.show() #access member of base\n", + "ob1.setk() #uses member of derived1 class\n", + "ob1.showk() #uses member of derived1 class\n", + "\n", + "ob2.set(3,4) #access member of base\n", + "ob2.show() #access member of base\n", + "ob2.setk() #access member of derived1 class\n", + "ob2.setm() #access member of derived2 class\n", + "ob2.showk() #uses member of derived1 class\n", + "ob2.showm() #uses member of derived1 class\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "2 3\n", + "6\n", + "3 4\n", + "12\n", + "-1\n" + ] + } + ], + "prompt_number": 11 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 14.5, Page Number: 341<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "class base:\n", + " def __init__(self):\n", + " self.__i=None\n", + " self._j=None\n", + " self.k=None\n", + " def seti(self,a):\n", + " self.__i=a\n", + " def geti(self):\n", + " return i\n", + " \n", + "class derived(base):\n", + " def setj(self,a):\n", + " self._j=a\n", + " def setk(self,a):\n", + " self.k=a\n", + " def getj(self):\n", + " return self._j\n", + " def getk(self):\n", + " return self.k\n", + " \n", + "#Variable declaration \n", + "ob=derived()\n", + "\n", + "ob.setk(10)\n", + "print ob.getk(),\n", + "ob.setj(12)\n", + "print ob.getj()" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "10 12\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 14.6, Page Number: 342<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "class base1:\n", + " def __init__(self):\n", + " self.x=None\n", + " def showx(self):\n", + " print self.x\n", + " \n", + "class base2:\n", + " def __init__(self):\n", + " self.y=None\n", + " def showy(self):\n", + " print self.y\n", + " \n", + "class derived(base1,base2):\n", + " def set(self,i,j):\n", + " self.x=i\n", + " self.y=j\n", + " \n", + "#Variable declaration\n", + "ob = derived()\n", + "\n", + "ob.set(10,20) #provided by derived\n", + "ob.showx() #from base1\n", + "ob.showy() #from base2\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "10\n", + "20\n" + ] + } + ], + "prompt_number": 17 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 14.7, Page Number: 343<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "class base:\n", + " def __init__(self):\n", + " print \"Constructing base\"\n", + " def __del__(self):\n", + " print \"Destructing base\"\n", + "\n", + "class derived(base):\n", + " def __init__(self):\n", + " base.__init__(self)\n", + " print \"Constructing derived\"\n", + " def __del__(self):\n", + " print \"Destructing derived\"\n", + " for b in self.__class__.__bases__:\n", + " b.__del__(self)\n", + "\n", + "#Variable declaration\n", + "ob=derived()\n", + "\n", + "#Does nothing but construct and destruct ob" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Constructing base\n", + "Constructing derived\n", + "Destructing derived\n", + "Destructing base\n" + ] + } + ], + "prompt_number": 19 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 14.8, Page Number: 344<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "class base:\n", + " def __init__(self):\n", + " print \"Constructing base\"\n", + " def __del__(self):\n", + " print \"Destructing base\"\n", + "\n", + "class derived1(base):\n", + " def __init__(self):\n", + " base.__init__(self)\n", + " print \"Constructing derived1\"\n", + " def __del__(self):\n", + " print \"Destructing derived1\"\n", + " super(derived1,self).__del__(self)\n", + "\n", + "class derived2(derived1):\n", + " def __init__(self):\n", + " derived1.__init__(self)\n", + " print \"Constructing derived2\"\n", + " def __del__(self):\n", + " print \"Destructing derived2\"\n", + " super(self.__class__,self).__del__(self)\n", + " \n", + "#Variable declaration\n", + "ob=derived2()\n", + "\n", + "#Does nothing but construct and destruct ob" + ], + "language": "python", + "metadata": {}, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 14.9, Page Number: 345<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "class base1:\n", + " def __init__(self):\n", + " print \"Constructing base1\"\n", + " def __del__(self):\n", + " print \"Destructing base1\"\n", + " \n", + "class base2:\n", + " def __init__(self):\n", + " print \"Constructing base2\"\n", + " def __del__(self):\n", + " print \"Destructing base2\"\n", + " \n", + "class derived(base1,base2):\n", + " def __init__(self):\n", + " for b in self.__class__.__bases__:\n", + " b.__init__(self)\n", + " print \"Constructing derived\"\n", + " def __del__(self):\n", + " print \"Destructing derived\"\n", + " for b in self.__class__.__bases__:\n", + " b.__del__(self)\n", + " \n", + "#Variable declaration\n", + "ob = derived()\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Constructing base1\n", + "Constructing base2\n", + "Constructing derived\n", + "Destructing derived\n", + "Destructing base1\n", + "Destructing base2\n" + ] + } + ], + "prompt_number": 21 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 14.10, Page Number: 347<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "class base:\n", + " def __init__(self,x):\n", + " self._i=x\n", + " print \"Constructing base\"\n", + " def __del__(self):\n", + " print \"Destructing base\"\n", + "\n", + "class derived(base):\n", + " def __init__(self,x,y):\n", + " base.__init__(self,y)\n", + " self.__j=x\n", + " print \"Constructing derived\"\n", + " def __del__(self):\n", + " print \"Destructing derived\"\n", + " for b in self.__class__.__bases__:\n", + " b.__del__(self)\n", + " def show(self):\n", + " print self._i,self.__j\n", + "\n", + "#Variable declaration\n", + "ob=derived(3,4)\n", + "\n", + "#Result\n", + "ob.show() #shows 4 3" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Constructing base\n", + "Constructing derived\n", + "Destructing derived\n", + "Destructing base\n", + "4 3\n" + ] + } + ], + "prompt_number": 23 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 14.11, Page Number: 348<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "class base1:\n", + " def __init__(self,x):\n", + " self._i=x\n", + " print \"Constructing base1\"\n", + " def __del__(self):\n", + " print \"Destructing base1\"\n", + " \n", + "class base2:\n", + " def __init__(self,x):\n", + " self._k=x\n", + " print \"Constructing base2\"\n", + " def __del__(self):\n", + " print \"Destructing base2\"\n", + " \n", + "class derived(base1,base2):\n", + " def __init__(self,x,y,z):\n", + " self.__j=x\n", + " i=0\n", + " for b in self.__class__.__bases__:\n", + " if i==0:\n", + " b.__init__(self,y)\n", + " else :\n", + " b.__init__(self,z)\n", + " i+=1\n", + " print \"Constructing derived\"\n", + " def __del__(self):\n", + " print \"Destructing derived\"\n", + " for b in self.__class__.__bases__:\n", + " b.__del__(self)\n", + " def show(self):\n", + " print self._i,self.__j,self._k\n", + " \n", + "#Variable declaration\n", + "ob = derived(3,4,5)\n", + "\n", + "#Result\n", + "ob.show()\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Constructing base1\n", + "Constructing base2\n", + "Constructing derived\n", + "Destructing derived\n", + "Destructing base1\n", + "Destructing base2\n", + "4 3 5\n" + ] + } + ], + "prompt_number": 25 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 14.12, Page Number: 348<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "class base1:\n", + " def __init__(self,x):\n", + " self._i=x\n", + " print \"Constructing base1\"\n", + " def __del__(self):\n", + " print \"Destructing base1\"\n", + " \n", + "class base2:\n", + " def __init__(self,x):\n", + " self._k=x\n", + " print \"Constructing base2\"\n", + " def __del__(self):\n", + " print \"Destructing base2\"\n", + " \n", + "class derived(base1,base2):\n", + " def __init__(self,x,y):\n", + " i=0\n", + " for b in self.__class__.__bases__:\n", + " if i==0:\n", + " b.__init__(self,x)\n", + " else :\n", + " b.__init__(self,y)\n", + " i+=1\n", + " print \"Constructing derived\"\n", + " def __del__(self):\n", + " print \"Destructing derived\"\n", + " for b in self.__class__.__bases__:\n", + " b.__del__(self)\n", + " def show(self):\n", + " print self._i,self._k\n", + " \n", + "#Variable declaration\n", + "ob = derived(3,4)\n", + "\n", + "#Result\n", + "ob.show()\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Constructing base1\n", + "Constructing base2\n", + "Constructing derived\n", + "Destructing derived\n", + "Destructing base1\n", + "Destructing base2\n", + "3 4\n" + ] + } + ], + "prompt_number": 26 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 14.13, Page Number: 351<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "class base:\n", + " def __init__(self):\n", + " self.__i=None\n", + " self.j=self.k=None\n", + " def seti(self,x):\n", + " self.__i=x\n", + " def geti(self):\n", + " return self.__i\n", + "\n", + "class derived(base):\n", + " def __init__(self):\n", + " self.a=None\n", + "\n", + "\n", + "#Variable declaration\n", + "ob=derived()\n", + "\n", + "ob._base__i=10 #Accessing private members of base class\n", + "ob.j=20 #legal because j and k are public variable in base\n", + "ob.k=30\n", + "\n", + "ob.a=40 #legal because a is public in derived class\n", + "ob.seti(10)\n", + "\n", + "#Result\n", + "print ob.geti(),ob.j,ob.a" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "10 20 40\n" + ] + } + ], + "prompt_number": 28 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 14.14, Page Number: 354<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "class base:\n", + " def __init__(self):\n", + " self.i=None\n", + "\n", + "#derived1 inherits base\n", + "class derived1(base):\n", + " def __init__(self):\n", + " self.__j=None\n", + " \n", + "#derived2 inherits base\n", + "class derived2(base):\n", + " def __init__(self):\n", + " self.__k=None\n", + "\n", + "#derived3 inherits from both derived1 and derived2\n", + "class derived3(derived1,derived2):\n", + " def __init__(self):\n", + " self.__sum=None\n", + " \n", + "#Variable declaration\n", + "ob=derived3()\n", + "\n", + "ob.i=10\n", + "ob.j=20\n", + "ob.k=30\n", + "\n", + "ob.sum=ob.i+ob.j+ob.k\n", + "\n", + "#Result\n", + "print ob.i,ob.j,ob.k,ob.sum" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "10 20 30 60\n" + ] + } + ], + "prompt_number": 29 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 14.15, Page Number: 355<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "class base:\n", + " def __init__(self):\n", + " self.i=None\n", + "\n", + "#derived1 inherits base\n", + "class derived1(base):\n", + " def __init__(self):\n", + " self.__j=None\n", + " \n", + "#derived2 inherits base\n", + "class derived2(base):\n", + " def __init__(self):\n", + " self.__k=None\n", + "\n", + "#derived3 inherits from both derived1 and derived2\n", + "class derived3(derived1,derived2):\n", + " def __init__(self):\n", + " self.__sum=None\n", + " \n", + "#Variable declaration\n", + "ob=derived3()\n", + "\n", + "ob.i=10\n", + "ob.j=20\n", + "ob.k=30\n", + "\n", + "ob.sum=ob.i+ob.j+ob.k\n", + "\n", + "#Result\n", + "print ob.i,ob.j,ob.k,ob.sum" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "10 20 30 60\n" + ] + } + ], + "prompt_number": 30 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [], + "language": "python", + "metadata": {}, + "outputs": [] + } + ], + "metadata": {} + } + ] +}
\ No newline at end of file diff --git a/C++_from_the_Ground/Chapter_15.ipynb b/C++_from_the_Ground/Chapter_15.ipynb new file mode 100644 index 00000000..211b1c7d --- /dev/null +++ b/C++_from_the_Ground/Chapter_15.ipynb @@ -0,0 +1,427 @@ +{ + "metadata": { + "name": "", + "signature": "sha256:1198072630a182533bf651767f275df9ee5758e0d781322254bb408a8b4cffaa" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h1>Chapter 15: Virtual Functions and Polymorphism<h1>" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 15.1, Page Number: 358<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "\n", + "class B_class:\n", + " def __init__(self):\n", + " self.author=None\n", + " def put_author(self,s):\n", + " self.author=s\n", + " def show_author(self):\n", + " print self.author\n", + " \n", + "class D_class(B_class):\n", + " def __init__(self):\n", + " self.title=None\n", + " def put_title(self,num):\n", + " self.title=num\n", + " def show_title(self):\n", + " print \"Title:\",self.title\n", + " \n", + "#Variable declaration\n", + "p=[B_class()] #acts as a pointer to B_class type\n", + "B_ob=B_class()\n", + "\n", + "dp=[D_class()] #acts as a pointer to D_class type\n", + "D_ob=D_class()\n", + "\n", + "p[0]=B_ob #assigning p to object of base\n", + "\n", + "\n", + "#Access B_class via pointer\n", + "p[0].put_author(\"Tom Clancy\")\n", + "\n", + "#Access D_class via base pointer\n", + "p[0]=D_ob\n", + "p[0].put_author(\"William Shakespeare\")\n", + "\n", + "#Show that each author went into proper object\n", + "B_ob.show_author()\n", + "D_ob.show_author()\n", + "print \"\\n\"\n", + "\n", + "#Since put_title() and show_title() are not part of the base class, \n", + "#they are not accessible via the base pointer p and must be accessed \n", + "#either directly, or, as shown here, through a pointer to the \n", + "#derived type\n", + "dp[0]=D_ob\n", + "dp[0].put_title(\"The Tempest\")\n", + "p[0].show_author()\n", + "dp[0].show_title()\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Tom Clancy\n", + "William Shakespeare\n", + "\n", + "\n", + "William Shakespeare\n", + "Title: The Tempest\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 15.2, Page Number: 361<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "class base:\n", + " def who(self): #virtual function\n", + " print \"Base\"\n", + "\n", + "class first_d(base):\n", + " def who(self): #redifine who() relative to first_d\n", + " print \"First derivation\"\n", + " \n", + "class second_d(base):\n", + " def who(self): #redifine who() relative to second_d\n", + " print \"Second derivation\"\n", + " \n", + " \n", + "#Variable declaration\n", + "base_obj=base()\n", + "p=[base()]\n", + "first_obj=first_d()\n", + "second_obj=second_d()\n", + "\n", + "p[0]=base_obj\n", + "p[0].who() #access base's who\n", + "\n", + "p[0]=first_obj\n", + "p[0].who() #access first_d's who\n", + "\n", + "p[0]=second_obj\n", + "p[0].who() #access second_d's who\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Base\n", + "First derivation\n", + "Second derivation\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 15.3, Page Number: 363<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "class base:\n", + " def who(self): #virtual function\n", + " print \"Base\"\n", + "\n", + "class first_d(base):\n", + " def who(self): #redifine who() relative to first_d\n", + " print \"First derivation\"\n", + " \n", + "class second_d(base):\n", + " #who not defined\n", + " pass\n", + " \n", + " \n", + "#Variable declaration\n", + "base_obj=base()\n", + "p=[base()]\n", + "first_obj=first_d()\n", + "second_obj=second_d()\n", + "\n", + "p[0]=base_obj\n", + "p[0].who() #access base's who\n", + "\n", + "p[0]=first_obj\n", + "p[0].who() #access first_d's who\n", + "\n", + "p[0]=second_obj\n", + "p[0].who() #access base's who because\n", + " #second_d does not redefine it.\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Base\n", + "First derivation\n", + "Base\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 15.4, Page Number: 364<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "class base:\n", + " def who(self): #virtual function\n", + " print \"Base\"\n", + "\n", + "class first_d(base):\n", + " def who(self): #redifine who() relative to first_d\n", + " print \"First derivation\"\n", + " \n", + "#second_d now inherited first_d -- not base\n", + "class second_d(first_d):\n", + " #who not defined\n", + " pass\n", + " \n", + " \n", + "#Variable declaration\n", + "base_obj=base()\n", + "p=[base()]\n", + "first_obj=first_d()\n", + "second_obj=second_d()\n", + "\n", + "p[0]=base_obj\n", + "p[0].who() #access base's who\n", + "\n", + "p[0]=first_obj\n", + "p[0].who() #access first_d's who\n", + "\n", + "p[0]=second_obj\n", + "p[0].who() #access first_d's who because\n", + " #second_d does not redefine it.\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Base\n", + "First derivation\n", + "First derivation\n" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 15.5, Page Number: 366<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "class figure:\n", + " def __init__(self):\n", + " self._x=None\n", + " self._y=None\n", + " def set_dim(self,i,j):\n", + " self._x=i\n", + " self._y=j\n", + " def show_area(self):\n", + " print \"No area computation defined\",\n", + " print \"for this class.\"\n", + " \n", + "class triangle(figure):\n", + " def show_area(self):\n", + " print \"Triangle with height\",\n", + " print self._x,\"and base\",self._y,\n", + " print \"has an area of\",\n", + " print self._x*0.5*self._y,\".\"\n", + " \n", + "class rectangle(figure):\n", + " def show_area(self):\n", + " print \"Rectangle with dimensions\",\n", + " print self._x,\"x\",self._y,\n", + " print \"has an area of\",\n", + " print self._x*self._y,\".\"\n", + " \n", + "#Variable declaration\n", + "p=[figure()] #pointer to base type\n", + "t=triangle() #objects of derived type\n", + "r=rectangle()\n", + "\n", + "p[0]=t\n", + "p[0].set_dim(10.0,5.0)\n", + "p[0].show_area()\n", + "\n", + "p[0]=r\n", + "p[0].set_dim(10.0,5.0)\n", + "p[0].show_area()\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Triangle with height 10.0 and base 5.0 has an area of 25.0 .\n", + "Rectangle with dimensions 10.0 x 5.0 has an area of 50.0 .\n" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 15.6, Page Number: 368<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "class figure:\n", + " def __init__(self):\n", + " self._x=None\n", + " self._y=None\n", + " def set_dim(self,i,j=0):\n", + " self._x=i\n", + " self._y=j\n", + " def show_area(self):\n", + " print \"No area computation defined\",\n", + " print \"for this class.\"\n", + " \n", + "class triangle(figure):\n", + " def show_area(self):\n", + " print \"Triangle with height\",\n", + " print self._x,\"and base\",self._y,\n", + " print \"has an area of\",\n", + " print self._x*0.5*self._y,\".\"\n", + " \n", + "class rectangle(figure):\n", + " def show_area(self):\n", + " print \"Rectangle with dimensions\",\n", + " print self._x,\"x\",self._y,\n", + " print \"has an area of\",\n", + " print self._x*self._y,\".\"\n", + " \n", + "class circle(figure):\n", + " def show_area(self):\n", + " print \"Circle with radius\",\n", + " print self._x,\n", + " print \"has an area of\",\n", + " print 3.14*self._x*self._x,\".\"\n", + " \n", + " \n", + "#Variable declaration\n", + "p=[figure()] #pointer to base type\n", + "t=triangle() #objects of derived type\n", + "r=rectangle()\n", + "c=circle()\n", + "\n", + "p[0]=t\n", + "p[0].set_dim(10.0,5.0)\n", + "p[0].show_area()\n", + "\n", + "p[0]=r\n", + "p[0].set_dim(10.0,5.0)\n", + "p[0].show_area()\n", + "\n", + "p[0]=c\n", + "p[0].set_dim(9.0)\n", + "p[0].show_area()\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Triangle with height 10.0 and base 5.0 has an area of 25.0 .\n", + "Rectangle with dimensions 10.0 x 5.0 has an area of 50.0 .\n", + "Circle with radius 9.0 has an area of 254.34 .\n" + ] + } + ], + "prompt_number": 7 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [], + "language": "python", + "metadata": {}, + "outputs": [] + } + ], + "metadata": {} + } + ] +}
\ No newline at end of file diff --git a/C++_from_the_Ground/Chapter_16.ipynb b/C++_from_the_Ground/Chapter_16.ipynb new file mode 100644 index 00000000..98e3dc8a --- /dev/null +++ b/C++_from_the_Ground/Chapter_16.ipynb @@ -0,0 +1,674 @@ +{ + "metadata": { + "name": "", + "signature": "sha256:60d976a21b55caeaa47bb2c8586e986eed54234a29f15a816e7270f74ad2660e" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h1>Chapter 16: Templates<h1>" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 16.1, Page Number: 376<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "def swapargs(a,b):\n", + " temp=a[0]\n", + " a[0]=b[0]\n", + " b[0]=temp\n", + "\n", + "#Variable declaration\n", + "i=[10]\n", + "j=[20]\n", + "x=[10.1]\n", + "y=[23.3]\n", + "a=['x']\n", + "b=['z']\n", + "\n", + "print \"Original i, j: \",i[0],j[0]\n", + "print \"Original x,y: \",x[0],y[0]\n", + "print \"Original a,b: \",a[0],b[0]\n", + "\n", + "swapargs(i,j) #swap integers\n", + "swapargs(x,y) #swap floats\n", + "swapargs(a,b) #swap chars\n", + "\n", + "#Result\n", + "print \"Swapped i, j: \",i[0],j[0]\n", + "print \"Swapped x,y: \",x[0],y[0]\n", + "print \"Swapped a,b: \",a[0],b[0]" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Original i, j: 10 20\n", + "Original x,y: 10.1 23.3\n", + "Original a,b: x z\n", + "Swapped i, j: 20 10\n", + "Swapped x,y: 23.3 10.1\n", + "Swapped a,b: z x\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 16.2, Page Number: 378<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "def myfunc(x,y):\n", + " print x,y\n", + " \n", + "myfunc(10,\"hi\")\n", + "myfunc(0.23,10L)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "10 hi\n", + "0.23 10\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 16.3, Page Number: 379<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "def swapargs(a,b):\n", + " if isinstance(a[0],int): #integer version\n", + " temp=a[0]\n", + " a[0]=b[0]\n", + " b[0]=temp\n", + " print \"Inside swapargs int specialization.\"\n", + " else: #generic version\n", + " temp=a[0]\n", + " a[0]=b[0]\n", + " b[0]=temp\n", + " print \"Inside template swapargs.\"\n", + "\n", + "#Variable declaration\n", + "i=[10]\n", + "j=[20]\n", + "x=[10.1]\n", + "y=[23.3]\n", + "a=['x']\n", + "b=['z']\n", + "\n", + "print \"Original i, j: \",i[0],j[0]\n", + "print \"Original x,y: \",x[0],y[0]\n", + "print \"Original a,b: \",a[0],b[0]\n", + "\n", + "swapargs(i,j) #calls explicitly overloaded swapargs()\n", + "swapargs(x,y) #calls generic swapargs()\n", + "swapargs(a,b) #calls generic swapargs()\n", + "\n", + "#Result\n", + "print \"Swapped i, j: \",i[0],j[0]\n", + "print \"Swapped x,y: \",x[0],y[0]\n", + "print \"Swapped a,b: \",a[0],b[0]" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Original i, j: 10 20\n", + "Original x,y: 10.1 23.3\n", + "Original a,b: x z\n", + "Inside swapargs int specialization.\n", + "Inside template swapargs.\n", + "Inside template swapargs.\n", + "Swapped i, j: 20 10\n", + "Swapped x,y: 23.3 10.1\n", + "Swapped a,b: z x\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 16.4, Page Number: 381<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "def f(a,b=None):\n", + " if(b==None): #First version of f()\n", + " print \"Inside f(X a)\"\n", + " else: #Second version of f()\n", + " print \"Inside f(X a, Y b)\"\n", + " \n", + "f(10) #calls f(X)\n", + "f(10,20) #calls f(X,Y)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Inside f(X a)\n", + "Inside f(X a, Y b)\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 16.5, Page Number: 382<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + " \n", + "def repeat(data,times):\n", + " while times:\n", + " print data\n", + " times-=1\n", + " \n", + "repeat(\"This is a test\",3)\n", + "repeat(100,5)\n", + "repeat(99.0/2, 4)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "This is a test\n", + "This is a test\n", + "This is a test\n", + "100\n", + "100\n", + "100\n", + "100\n", + "100\n", + "49.5\n", + "49.5\n", + "49.5\n", + "49.5\n" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 16.6, Page Number: 383<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "def myabs(val):\n", + " if val<0:\n", + " return -val\n", + " else:\n", + " return val\n", + "\n", + "#Result\n", + "print myabs(-10)\n", + "print myabs(-10.0)\n", + "print myabs(-10L)\n", + "print myabs(-10.0)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "10\n", + "10.0\n", + "10\n", + "10.0\n" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 16.7, Page Number: 385<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "def SIZE():\n", + " return 100\n", + "class queue:\n", + " def __init__(self):\n", + " self.q=[]\n", + " self.sloc=self.rloc=0\n", + " #Put an object into the queue\n", + " def qput(self,i):\n", + " if self.sloc==SIZE():\n", + " print \"Queue is full.\"\n", + " return\n", + " self.sloc+=1\n", + " self.q.append(i)\n", + " #Get an object from the queue.\n", + " def qget(self):\n", + " if self.rloc==self.sloc:\n", + " print \"Queue Underflow.\"\n", + " return\n", + " a=self.rloc\n", + " self.rloc+=1\n", + " return self.q[a]\n", + " \n", + "#Create two integer queues\n", + "a=queue()\n", + "b=queue()\n", + "a.qput(10)\n", + "b.qput(19)\n", + "a.qput(20)\n", + "b.qput(1)\n", + "\n", + "print a.qget(),\n", + "print a.qget(),\n", + "print b.qget(),\n", + "print b.qget()\n", + "\n", + "#Create two double queues\n", + "c=queue()\n", + "d=queue()\n", + "c.qput(10.12)\n", + "d.qput(19.99)\n", + "c.qput(-20.0)\n", + "d.qput(0.986)\n", + "\n", + "print c.qget(),\n", + "print c.qget(),\n", + "print d.qget(),\n", + "print d.qget()\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "10 20 19 1\n", + "10.12 -20.0 19.99 0.986\n" + ] + } + ], + "prompt_number": 7 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 16.8, Page Number: 387<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "class myclass:\n", + " def __init__(self,a,b):\n", + " self.__i=a\n", + " self.__j=b\n", + " def show(self):\n", + " print self.__i,self.__j\n", + "\n", + "ob1=myclass(10,0.23)\n", + "ob2=myclass('X',\"This is a test\")\n", + "\n", + "#Result\n", + "ob1.show() #Show int,double\n", + "ob2.show() #Show char.char*\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "10 0.23\n", + "X This is a test\n" + ] + } + ], + "prompt_number": 8 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 16.9, Page Number: 388<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + " \n", + "def SIZE():\n", + " return 10\n", + "\n", + "class atype:\n", + " def __init__(self):\n", + " self.a=[]\n", + " for i in range(SIZE()):\n", + " self.a.append(i)\n", + " #Implementing the [] overloading\n", + " def op1(self,i,j):\n", + " if (i<0 or i>=SIZE()):\n", + " print \"\\nIndex value of \",\n", + " print i,\" is out-of-bounds.\"\n", + " return \n", + " self.a[i]=j\n", + " def op2(self,i):\n", + " if (i<0 or i>SIZE()-1):\n", + " print \"\\nIndex value of \",\n", + " print i,\" is out-of-bounds.\"\n", + " return\n", + " return self.a[i]\n", + " \n", + "#Variable declaration\n", + "intob=atype()\n", + "doubleob=atype()\n", + " \n", + "print \"Integer array: \",\n", + "for i in range(SIZE()):\n", + " intob.op1(i,i)\n", + "for i in range(SIZE()):\n", + " print intob.op2(i),\n", + " \n", + "print \"\"\n", + "\n", + "print \"Double array: \",\n", + "for i in range(SIZE()):\n", + " doubleob.op1(i,float(i)/3)\n", + "for i in range(SIZE()):\n", + " print doubleob.op2(i),\n", + " \n", + "intob.op1(12,100)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Integer array: 0 1 2 3 4 5 6 7 8 9 \n", + "Double array: 0.0 0.333333333333 0.666666666667 1.0 1.33333333333 1.66666666667 2.0 2.33333333333 2.66666666667 3.0 \n", + "Index value of 12 is out-of-bounds.\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 16.10, Page Number: 389<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "class atype:\n", + " def __init__(self,size):\n", + " self.a=[]\n", + " self.size=size\n", + " for i in range(size):\n", + " self.a.append(i)\n", + " #Implementing the [] overloading\n", + " def op1(self,i,j):\n", + " if (i<0 or i>self.size-1):\n", + " print \"\\nIndex value of \",\n", + " print i,\" is out-of-bounds.\"\n", + " return\n", + " self.a[i]=j\n", + " def op2(self,i):\n", + " if (i<0 or i>self.size-1):\n", + " print \"\\nIndex value of \",\n", + " print i,\" is out-of-bounds.\"\n", + " return\n", + " return self.a[i]\n", + " \n", + "#Variable declaration\n", + "intob=atype(10)\n", + "doubleob=atype(15)\n", + " \n", + "print \"Integer array: \",\n", + "for i in range(10):\n", + " intob.op1(i,i)\n", + "for i in range(10):\n", + " print intob.op2(i),\n", + " \n", + "print \"\"\n", + "\n", + "print \"Double array: \",\n", + "for i in range(15):\n", + " doubleob.op1(i,float(i)/3)\n", + "for i in range(15):\n", + " print doubleob.op2(i),\n", + " \n", + "intob.op1(12,100) #generates runtime error\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Integer array: 0 1 2 3 4 5 6 7 8 9 \n", + "Double array: 0.0 0.333333333333 0.666666666667 1.0 1.33333333333 1.66666666667 2.0 2.33333333333 2.66666666667 3.0 3.33333333333 3.66666666667 4.0 4.33333333333 4.66666666667 \n", + "Index value of 12 is out-of-bounds.\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 16.11, Page Number: 391<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "class atype:\n", + " def __init__(self,size=10):\n", + " self.a=[]\n", + " for i in range(size):\n", + " self.a.append(i)\n", + " #Implementing the [] overloading\n", + " def op1(self,i,j):\n", + " if (i<0 and i>SIZE()-1):\n", + " print \"Index value of \"\n", + " print i,\" is out-of-bounds.\"\n", + " exit(1)\n", + " self.a[i]=j\n", + " def op2(self,i):\n", + " if (i<0 and i>SIZE()-1):\n", + " print \"Index value of \"\n", + " print i,\" is out-of-bounds.\"\n", + " exit()\n", + " return self.a[i]\n", + " \n", + "#Variable declaration\n", + "intob=atype(100)\n", + "doubleob=atype()\n", + "defarray=atype()\n", + " \n", + "print \"Integer array: \",\n", + "for i in range(100):\n", + " intob.op1(i,i)\n", + "for i in range(100):\n", + " print intob.op2(i),\n", + " \n", + "print \"\"\n", + "\n", + "print \"Double array: \",\n", + "for i in range(10):\n", + " doubleob.op1(i,float(i)/3)\n", + "for i in range(10):\n", + " print doubleob.op2(i),\n", + " \n", + "print \"\"\n", + "\n", + "print \"Defarray array: \",\n", + "for i in range(10):\n", + " doubleob.op1(i,i)\n", + "for i in range(10):\n", + " print doubleob.op2(i),\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Integer array: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 \n", + "Double array: 0.0 0.333333333333 0.666666666667 1.0 1.33333333333 1.66666666667 2.0 2.33333333333 2.66666666667 3.0 \n", + "Defarray array: 0 1 2 3 4 5 6 7 8 9\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 16.12, Page Number: 393<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "class myclass:\n", + " def __init__(self,a):\n", + " if isinstance(a,int):\n", + " print \"Inside myclass<int>specialization\"\n", + " self.__x=a*a\n", + " else:\n", + " print \"Inside generic myclass\"\n", + " self.__x=a\n", + " def getx(self):\n", + " return self.__x\n", + " \n", + "d=myclass(10.1)\n", + "print \"double: \",d.getx(),\"\\n\"\n", + "\n", + "i=myclass(5)\n", + "print \"int: \",i.getx()\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Inside generic myclass\n", + "double: 10.1 \n", + "\n", + "Inside myclass<int>specialization\n", + "int: 25\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [], + "language": "python", + "metadata": {}, + "outputs": [] + } + ], + "metadata": {} + } + ] +}
\ No newline at end of file diff --git a/C++_from_the_Ground/Chapter_17.ipynb b/C++_from_the_Ground/Chapter_17.ipynb new file mode 100644 index 00000000..c50f48aa --- /dev/null +++ b/C++_from_the_Ground/Chapter_17.ipynb @@ -0,0 +1,730 @@ +{ + "metadata": { + "name": "", + "signature": "sha256:636fe844c88ef46d09064f199c6b3a4c62e262611a41cc6f126f08459b94982e" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h1>Chapter 17: Exception Handling<h1>" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 17.1, Page Number: 397<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "print \"start\"\n", + "\n", + "try: #start a try block\n", + " print \"Inside try block\"\n", + " raise Exception(99) #raise an error\n", + " print \"This will not execute\"\n", + "except Exception,i: #catch an error\n", + " print \"Caught an exception -- value is:\",\n", + " print i\n", + "\n", + "print \"end\"" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "start\n", + "Inside try block\n", + "Caught an exception -- value is: 99\n", + "end\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 17.2, Page Number: 399<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "import sys\n", + "\n", + "\n", + "\n", + "def main():\n", + " print \"start\"\n", + " try: #start a try block\n", + " print \"Inside try block\"\n", + " raise Exception(99) #raise an error\n", + " print \"This will not execute\"\n", + " except Exception,i: #catch an error\n", + " if isinstance(i,float):\n", + " print \"Caught an exception -- value is:\",\n", + " print i\n", + " else:\n", + " print \"Abnormal program termination\"\n", + " return\n", + " print \"end\"\n", + "\n", + " \n", + "main()" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "start\n", + "Inside try block\n", + "Abnormal program termination\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 17.3, Page Number: 400<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "def Xtest(test):\n", + " print \"Inside Xtest, test is: \",test\n", + " if(test):\n", + " raise Exception(test)\n", + " \n", + "print \"start\"\n", + "\n", + "try: #start a try block\n", + " print \"Inside try block\"\n", + " Xtest(0)\n", + " Xtest(1)\n", + " Xtest(2)\n", + "except Exception,i: #catch an error\n", + " print \"Caught an exception -- value is:\",\n", + " print i\n", + "\n", + "print \"end\"" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "start\n", + "Inside try block\n", + "Inside Xtest, test is: 0\n", + "Inside Xtest, test is: 1\n", + "Caught an exception -- value is: 1\n", + "end\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 17.4, Page Number: 401<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "def Xhandler(test):\n", + " try:\n", + " if(test):\n", + " raise Exception(test)\n", + " except Exception,i:\n", + " print \"Caught One! Ex #:\",i\n", + " \n", + "print \"start\"\n", + "\n", + "Xhandler(1)\n", + "Xhandler(2)\n", + "Xhandler(0)\n", + "Xhandler(3)\n", + "\n", + "print \"end\"" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "start\n", + "Caught One! Ex #: 1\n", + "Caught One! Ex #: 2\n", + "Caught One! Ex #: 3\n", + "end\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 17.5, Page Number: 401<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "class MyException:\n", + " def __init__(self,s):\n", + " self.str_what=s\n", + " \n", + "#Variable declaration\n", + "a=None \n", + "b=None\n", + "\n", + "try:\n", + " print \"Enter numerator and denominator:\"\n", + " #User-input\n", + " a=10 \n", + " b=0\n", + " if not(b):\n", + " raise MyException(\"Cannot divide by zero!\")\n", + " else:\n", + " print \"Quotient is\",a/b\n", + "except MyException as e: #catch an error\n", + " print e.str_what\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter numerator and denominator:\n", + "Cannot divide by zero!\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 17.6, Page Number: 403<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "class MyException:\n", + " def __init__(self,s):\n", + " self.x=s\n", + " \n", + "def Xhandler(test):\n", + " try:\n", + " if(test):\n", + " raise MyException(test)\n", + " else:\n", + " raise MyException(\"Value is zero\")\n", + " except MyException as i:\n", + " if isinstance(i.x,int):\n", + " print \"Caught One! Ex #:\",i.x\n", + " else:\n", + " print \"Caught a string:\",\n", + " print i.x\n", + " \n", + "print \"start\"\n", + "\n", + "Xhandler(1)\n", + "Xhandler(2)\n", + "Xhandler(0)\n", + "Xhandler(3)\n", + "\n", + "print \"end\"" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "start\n", + "Caught One! Ex #: 1\n", + "Caught One! Ex #: 2\n", + "Caught a string: Value is zero\n", + "Caught One! Ex #: 3\n", + "end\n" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 17.7, Page Number: 404<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "class B:\n", + " pass\n", + "\n", + "class D(B):\n", + " pass\n", + "\n", + "derived=D()\n", + "\n", + "try:\n", + " raise B()\n", + "except B as b:\n", + " print \"Caught a base class.\"\n", + "except D as d:\n", + " print \"This wont execute.\"\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Caught a base class.\n" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 17.8, Page Number: 405<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "def Xhandler(test):\n", + " try:\n", + " if test==0:\n", + " raise Exception(test) #throw int\n", + " if test==1:\n", + " raise Exception('a') #throw char\n", + " if test==2:\n", + " raise Exception(123.23) #throw double\n", + " except: #Catches all exceptions\n", + " print \"Caught One!\"\n", + "\n", + "print \"start\"\n", + "\n", + "Xhandler(0)\n", + "Xhandler(1)\n", + "Xhandler(2)\n", + "\n", + "print \"end\"" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "start\n", + "Caught One!\n", + "Caught One!\n", + "Caught One!\n", + "end\n" + ] + } + ], + "prompt_number": 7 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 17.9, Page Number: 405<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "class MyException:\n", + " def __init__(self,s):\n", + " self.x=s\n", + " \n", + "def Xhandler(test):\n", + " try:\n", + " if test==0:\n", + " raise MyException(test) #throw int\n", + " if test==1:\n", + " raise MyException('a') #throw char\n", + " if test==2:\n", + " raise MyException(123.23) #throw double\n", + " except MyException as i:\n", + " if isinstance(i.x,int): #catch an int exception\n", + " print \"Caught\",i.x \n", + " else: #catch all other exceptions\n", + " print \"Caught One!\"\n", + " \n", + "\n", + "print \"start\"\n", + "\n", + "Xhandler(0)\n", + "Xhandler(1)\n", + "Xhandler(2)\n", + "\n", + "print \"end\"" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "start\n", + "Caught 0\n", + "Caught One!\n", + "Caught One!\n", + "end\n" + ] + } + ], + "prompt_number": 8 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 17.10, Page Number: 407<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "class MyException:\n", + " def __init__(self,s):\n", + " self.x=s\n", + " \n", + "#This function can only throw ints, chars and doubles\n", + "def Xhandler(test):\n", + " if test==0:\n", + " raise MyException(test) #throw int\n", + " if test==1:\n", + " raise MyException('a') #throw char\n", + " if test==2:\n", + " raise MyException(123.23) #throw double\n", + " \n", + "\n", + "print \"start\"\n", + "try:\n", + " Xhandler(0)\n", + "except MyException as i:\n", + " if isinstance(i.x,int): #catch an int exception\n", + " print \"Caught int\" \n", + " elif isinstance(i.x,str): #catch a char exception\n", + " print \"Caught char\"\n", + " elif isinstance(i.x,float): #catch a float exception\n", + " print \"Caught double\"\n", + "\n", + "print \"end\"" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "start\n", + "Caught int\n", + "end\n" + ] + } + ], + "prompt_number": 9 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 17.11, Page Number: 408<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "def Xhandler():\n", + " try:\n", + " raise Exception(\"hello\") #throw a char *\n", + " except Exception,c: #catch a char *\n", + " print \"Caugh char * inside Xhandler\"\n", + " raise #rethrow char * out of function\n", + " \n", + "print \"start\"\n", + "try:\n", + " Xhandler()\n", + "except Exception,c:\n", + " print \"Caught char * inside main\"\n", + " \n", + "print \"end\"" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "start\n", + "Caugh char * inside Xhandler\n", + "Caught char * inside main\n", + "end\n" + ] + } + ], + "prompt_number": 10 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 17.12, Page Number: 410<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "from ctypes import *\n", + "\n", + "#Variable declaration\n", + "p=[]\n", + "\n", + "try:\n", + " for i in range(32):\n", + " p.append(c_int())\n", + "except MemoryError,m:\n", + " print \"Allocation failure.\"\n", + " \n", + "for i in range(32):\n", + " p[i]=i\n", + " \n", + "for i in range(32):\n", + " print p[i],\n", + " \n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31\n" + ] + } + ], + "prompt_number": 12 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 17.13, Page Number: 410<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "from ctypes import *\n", + "\n", + "#Variable declaration\n", + "p=[]\n", + "\n", + "\n", + "for i in range(32):\n", + " p.append(c_int()) \n", + "if not(p):\n", + " print \"Allocation failure.\"\n", + " \n", + "for i in range(32):\n", + " p[i]=i\n", + " \n", + "for i in range(32):\n", + " print p[i],\n", + " \n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31\n" + ] + } + ], + "prompt_number": 13 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 17.13, Page Number: 412<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "class three_d:\n", + " def __init__(self,i=0,j=0,k=0): #3=D coordinates\n", + " if(i==0 and j==0 and k==0):\n", + " self.x=self.y=self.z=0\n", + " print \"Constructing 0, 0, 0\"\n", + " else:\n", + " self.x=i\n", + " self.y=j\n", + " self.z=k\n", + " print \"Constructing\",i,\",\",j,\",\",k\n", + " def __del__(self):\n", + " print \"Destructing\"\n", + " #new overloaded relative to three_d.\n", + " def __new__(typ, *args, **kwargs):\n", + " obj = object.__new__(typ, *args, **kwargs)\n", + " return obj\n", + " def show(self):\n", + " print self.x,\",\",\n", + " print self.y,\",\",\n", + " print self.z\n", + " \n", + "p1=[]*3\n", + "p2=[]\n", + " \n", + "try:\n", + " print \"Allocating array of three_d objects.\"\n", + " for i in range(3): #allocate array\n", + " p1.append(three_d())\n", + " print \"Allocating three_d object.\"\n", + " p2.append(three_d(5,6,7)) #allocate object\n", + "except MemoryError:\n", + " print \"Allocation error\"\n", + " \n", + "p1[2].show()\n", + "p2[0].show()\n", + "\n", + "\n", + "for i in xrange(2,-1,-1):\n", + " del p1[i] #delete array\n", + "print \"Deleting array of thee_d objects.\"\n", + "\n", + "del p2[0] #delete object\n", + "print \"Deleting three_d object.\"" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Allocating array of three_d objects.\n", + "Constructing 0, 0, 0\n", + "Constructing 0, 0, 0\n", + "Constructing 0, 0, 0\n", + "Allocating three_d object.\n", + "Constructing 5 , 6 , 7\n", + "0 , 0 , 0\n", + "5 , 6 , 7\n", + "Destructing\n", + "Destructing\n", + "Destructing\n", + "Deleting array of thee_d objects.\n", + "Destructing\n", + "Deleting three_d object.\n" + ] + } + ], + "prompt_number": 14 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [], + "language": "python", + "metadata": {}, + "outputs": [] + } + ], + "metadata": {} + } + ] +}
\ No newline at end of file diff --git a/C++_from_the_Ground/Chapter_18.ipynb b/C++_from_the_Ground/Chapter_18.ipynb new file mode 100644 index 00000000..df4cabc2 --- /dev/null +++ b/C++_from_the_Ground/Chapter_18.ipynb @@ -0,0 +1,881 @@ +{ + "metadata": { + "name": "", + "signature": "sha256:85eae8322c208f1f26e859bb0f4dac6f86b35c3ac105ed98ac2d0fbf05287f0e" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h1>Chapter 18: The C++ I/O System<h1>" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 18.1, Page Number: 421<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "class three_d:\n", + " def __init__(self,a,b,c): #3D coordinates\n", + " self.x=a\n", + " self.y=b\n", + " self.z=c\n", + " #Display x,y,z coordinates - three_d inserter.\n", + " def __repr__(self):\n", + " return str(self.x)+\", \"+str(self.y)+\", \"+str(self.z)+\"\\n\"\n", + "\n", + "#Variable declaration\n", + "a=three_d(1,2,3)\n", + "b=three_d(3,4,5)\n", + "c=three_d(5,6,7)\n", + "\n", + "#Result\n", + "print a,b,c" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "1, 2, 3\n", + " 3, 4, 5\n", + " 5, 6, 7\n", + "\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 18.2, Page Number: 423<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "class thrnee_d:\n", + " def __init__(self,a,b,c): #3D coordinates\n", + " self.x=a\n", + " self.y=b\n", + " self.z=c\n", + " #Display x,y,z coordinates - three_d inserter.\n", + " __repr__=repr \n", + " \n", + "#Friend function \n", + "def repr():\n", + " return str(self.x)+\", \"+str(self.y)+\", \"+str(self.z)+\"\\n\"\n", + "\n", + "#Variable declaration\n", + "a=three_d(1,2,3)\n", + "b=three_d(3,4,5)\n", + "c=three_d(5,6,7)\n", + "\n", + "print a,b,c" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "1, 2, 3\n", + " 3, 4, 5\n", + " 5, 6, 7\n", + "\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 18.3, Page Number: 424<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "class three_d:\n", + " def __init__(self,a,b,c): #3D coordinates\n", + " self.x=a\n", + " self.y=b\n", + " self.z=c\n", + " #Display x,y,z coordinates - three_d inserter.\n", + " def __repr__(self):\n", + " return str(self.x)+\", \"+str(self.y)+\", \"+str(self.z)\n", + "\n", + "#Variable declaration\n", + "a=three_d(1,2,3)\n", + "\n", + "print a\n", + "\n", + "#User input\n", + "print \"Enter X,Y,Z values:\"\n", + "a=three_d(4,5,6) \n", + "print a" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "1, 2, 3\n", + "Enter X,Y,Z values:\n", + "4, 5, 6\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 18.4, Page Number: 428<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "print '{0:+d}'.format(123), #for ios::showpos\n", + "if(123.23>0):\n", + " i='{0:e}'.format(123.23) #for ios::scientific \n", + " i='+'+i\n", + " print i\n", + "else :\n", + " print '{0:e}'.format(123.23)\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "+123 +1.232300e+02\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 18.5, Page Number: 430<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "import string\n", + "\n", + "print '{0:+d}'.format(123), #for ios::showpos\n", + "if(123.23>0):\n", + " i='{0:e}'.format(123.23) #for ios::scientific \n", + " i='+'+i\n", + " print i\n", + "else :\n", + " print '{0:e}'.format(123.23)\n", + "\n", + " \n", + "print '{:10.2f}'.format(123.23), #2 digits left of decimal\n", + "if(123.23>0):\n", + " i='{0:.2e}'.format(123.23) #for ios::scientific \n", + " i='+'+i\n", + " print i\n", + "else :\n", + " print '{0:.2e}'.format(123.23)\n", + " \n", + " \n", + "print '{:#>10}'.format(str(123)), #for ios::fill\n", + "if(123.23>0): \n", + " i='{0:.2e}'.format(123.23) #for ios::scientific \n", + " i='+'+i\n", + " print i\n", + "else :\n", + " print '{0:.2e}'.format(123.23)\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "+123 +1.232300e+02\n", + " 123.23 +1.23e+02\n", + "#######123 +1.23e+02\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 18.6, Page Number: 432<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "print '{0:.0e}'.format(1000.243) #for setprecision\n", + "print '{:>20}'.format(\"Hello There\") #to set width and right align\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "1e+03\n", + " Hello There\n" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 18.7, Page Number: 433<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "print '{0:+d}'.format(123), #for ios::showpos\n", + "if(123.23>0):\n", + " i='{0:e}'.format(123.23) #for ios::scientific \n", + " i='+'+i\n", + " print i\n", + "else :\n", + " print '{0:e}'.format(123.23)\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "+123 +1.232300e+02\n" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 18.8, Page Number: 433<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "#User input\n", + "s=\" Hello\"\n", + "\n", + "#Result\n", + "print s.lstrip() #lstrip removes leading spaces" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Hello\n" + ] + } + ], + "prompt_number": 7 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 18.9, Page Number: 434<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "def setup(s):\n", + " return '{:$<10}'.format(str(s))\n", + "\n", + "\n", + "#Result\n", + "print 10,setup(10)\n", + "\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "10 10$$$$$$$$\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 18.10, Page Number: 435<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "def prompt():\n", + " print \"Enter number using hex format:\"\n", + " hex=0x46\n", + " return hex\n", + "\n", + "\n", + "#Result\n", + "i=prompt()\n", + "print i\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 18.11, Page Number: 438<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + " \n", + "out=open(\"test\",'w')\n", + "\n", + "\n", + "if(not(out)):\n", + " print \"Cannot open file.\"\n", + "else:\n", + " #Write to file\n", + " out.write(\"10 123.23\\n\")\n", + " out.write(\"This is a short text file.\")\n", + " #Close the file\n", + " out.close()" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 8 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 18.12, Page Number: 438<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + " \n", + "In=open(\"test\",'r')\n", + " \n", + "if(not(In)):\n", + " print \"Cannot open file.\"\n", + "else:\n", + " #Read file\n", + " i=In.read(2)\n", + " ch=In.read(1)\n", + " f=In.read(6)\n", + " str=In.read()\n", + " print i,f,ch\n", + " print str\n", + " #Close the file\n", + " out.close()" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "10 123.23 \n", + "\n", + "This is a short text file.\n" + ] + } + ], + "prompt_number": 9 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 18.13, Page Number: 439<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "import sys\n", + " \n", + "if not(len(sys.argv)==2):\n", + " print \"Usage: PR <filename>\\n\"\n", + "else:\n", + " #Open a file\n", + " In=open(sys.argv[1],'r')\n", + "\n", + " #In case file cannot open\n", + " if(not(In)):\n", + " print \"Cannot open file.\"\n", + " else:\n", + " #Read file\n", + " ch=In.read()\n", + " print ch\n", + " In.close()\n", + " \n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Usage: PR <filename>\n", + "\n" + ] + } + ], + "prompt_number": 10 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 18.14, Page Number: 440<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "import sys\n", + "\n", + "p=\"hello there\"\n", + "\n", + "out=open(\"test\",'w')\n", + "\n", + "#In case file cannot open\n", + "if(not(out)):\n", + " print \"Cannot open file.\"\n", + "else:\n", + " #Write to file\n", + " for i in range(len(p)):\n", + " out.write(p[i])\n" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 11 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 18.15, Page Number: 441<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "import sys\n", + "\n", + "n=[1,2,3,4,5]\n", + "\n", + "#Open a file 'test'\n", + "out=open(\"test\",'w')\n", + "\n", + "#In case file cannot open\n", + "if(not(out)):\n", + " print \"Cannot open file.\"\n", + "else:\n", + " #Write to file\n", + " for i in range(5):\n", + " out.write(chr(n[i]))\n", + " out.close()\n", + " \n", + "for i in range(5): #clear array\n", + " n[i]=0\n", + " \n", + "#Open the file\n", + "In=open(\"test\",'r')\n", + "\n", + "#In case file cannot open\n", + "if(not(In)):\n", + " print \"Cannot open file.\"\n", + "else:\n", + " #Read file\n", + " for i in range(5):\n", + " n[i]=ord(In.read(1))\n", + "\n", + "#Result, shows value from file\n", + "for i in range(5):\n", + " print n[i],\n", + " \n", + "In.close()" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "1 2 3 4 5\n" + ] + } + ], + "prompt_number": 12 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 18.16, Page Number: 442<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import sys\n", + " \n", + "if not(len(sys.argv)==2):\n", + " print \"Usage: PR <filename>\\n\"\n", + "else:\n", + " #Open a file\n", + " In=open(sys.argv[1],'r')\n", + "\n", + " #In case file cannot open\n", + " if(not(In)):\n", + " print \"Cannot open file.\"\n", + " else:\n", + " #Read file\n", + " while True:\n", + " ch=In.read(1)\n", + " if not ch:\n", + " break\n", + " print ch,\n", + " #Close file\n", + " In.close()\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Usage: PR <filename>\n", + "\n" + ] + } + ], + "prompt_number": 13 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 18.17, Page Number: 443<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + " \n", + "out=open(\"test1\",'w')\n", + "out.write(\"Hello\")\n", + "out.close()\n", + " \n", + "out=open(\"test2\",'w')\n", + "out.write(\"There\")\n", + "out.close()\n", + "\n", + " \n", + "f1=open(\"test1\",'r')\n", + " \n", + "if(not(In)):\n", + " print \"Cannot open file.\"\n", + "\n", + " \n", + "f2=open(\"test2\",'r')\n", + " \n", + "if(not(In)):\n", + " print \"Cannot open file.\"\n", + " \n", + "print \"Comparing files...\"\n", + "\n", + "buf1=f1.read()\n", + "buf2=f2.read()\n", + "print buf1,buf2\n", + "\n", + "if len(buf1)==len(buf2):\n", + " print \"Files are of different sizes.\"\n", + " f1.close()\n", + " f2.close()\n", + "else:\n", + " \n", + " flag=1\n", + " for i in range(len(buf1)):\n", + " if not(buf1[i]==buf2[i]):\n", + " print \"Files differ.\"\n", + " f1.close()\n", + " f2.close()\n", + " flag=0\n", + " break\n", + " if flag==1:\n", + " print \"Files are the same.\"\n", + " \n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Comparing files...\n", + "Hello There\n", + "Files are of different sizes.\n" + ] + } + ], + "prompt_number": 14 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 18.18, Page Number: 445<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "print \"Enter your name:\"\n", + " \n", + "str=\"hello world\"\n", + "\n", + "print str" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter your name:\n", + "hello world\n" + ] + } + ], + "prompt_number": 15 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 18.19, Page Number: 447<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + " out=open(\"test\",'r+b')\n", + "out.write(\"Hello\")\n", + "\n", + " \n", + "if(not(out)):\n", + " print \"Cannot open file.\"\n", + "else:\n", + " out.seek(2,0)\n", + " out.write('X')\n", + " out.close()\n", + " \n" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 2 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 18.20, Page Number: 447<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + " \n", + "out=open(\"test\",'r+b')\n", + "out.write(\"Hello\")\n", + "out.close()\n", + "\n", + "In=open(\"test\",'r')\n", + " \n", + "if(not(In)):\n", + " print \"Cannot open file.\"\n", + "else:\n", + " In.seek(2,0)\n", + " ch=In.read()\n", + " print ch\n", + " \n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "llo\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 18.21, Page Number: 450<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "class three_d:\n", + " def __init__(self,a,b,c):\n", + " self.__x=a\n", + " self.__y=b\n", + " self.__z=c\n", + " def __repr__(self):\n", + " c=(\"%d\"%self.__x)+\", \"+(\"%d\"%self.__y)+\", \"+(\"%d\"%self.__z)+\"\\n\"\n", + " return c \n", + "\n", + " \n", + "a=three_d(1,2,3)\n", + "b=three_d(3,4,5)\n", + "c=three_d(5,6,7)\n", + " \n", + "out=open(\"threed\",'w')\n", + " \n", + "if(not(out)):\n", + " print \"Cannot open file.\"\n", + "else:\n", + " out.write(a.__repr__())\n", + " out.write(b.__repr__())\n", + " out.write(c.__repr__())\n", + "\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 18 + }, + { + "cell_type": "raw", + "metadata": {}, + "source": [] + } + ], + "metadata": {} + } + ] +}
\ No newline at end of file diff --git a/C++_from_the_Ground/Chapter_19.ipynb b/C++_from_the_Ground/Chapter_19.ipynb new file mode 100644 index 00000000..7f04b7ea --- /dev/null +++ b/C++_from_the_Ground/Chapter_19.ipynb @@ -0,0 +1,725 @@ +{ + "metadata": { + "name": "", + "signature": "sha256:20d38d92a3a25bc02f8bf5fb1b35ef1503e1987dff61d43c4881deab4561fe2c" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h1>Chapter 19: Run-Time Type ID and the Casting Operators<h1>" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 19.1, Page Number: 453<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "class myclass:\n", + " pass\n", + "\n", + "#Variable declaration\n", + "i=j=0\n", + "f=0.0\n", + "ob=myclass()\n", + "\n", + "print \"The type of i is:\",type(i).__name__\n", + "print \"The type of f is:\",type(f).__name__\n", + "print \"The type of ob is:\",ob.__class__.__name__\n", + "print \"\\n\"\n", + "\n", + "if type(i)==type(j):\n", + " print \"The types of i and j are the same\"\n", + " \n", + "if not(type(i)==type(f)):\n", + " print \"The types of i and f are not the same\"" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The type of i is: int\n", + "The type of f is: float\n", + "The type of ob is: myclass\n", + "\n", + "\n", + "The types of i and j are the same\n", + "The types of i and f are not the same\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 19.2, Page Number: 454<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "class Base:\n", + " pass\n", + "class Derived1(Base):\n", + " pass\n", + "class Derived2(Base):\n", + " pass\n", + "\n", + "#Variable declaration\n", + "baseob=Base()\n", + "p=[Base()]\n", + "ob1=Derived1()\n", + "ob2=Derived2()\n", + "\n", + "\n", + "p[0]=baseob\n", + "print \"p is pointing to an object of type\",\n", + "print p[0].__class__.__name__\n", + "\n", + "p[0]=ob1\n", + "print \"p is pointing to an object of type\",\n", + "print p[0].__class__.__name__\n", + "\n", + "p[0]=ob2\n", + "print \"p is pointing to an object of type\",\n", + "print p[0].__class__.__name__" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "p is pointing to an object of type Base\n", + "p is pointing to an object of type Derived1\n", + "p is pointing to an object of type Derived2\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 19.3, Page Number: 455<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "class Base:\n", + " pass\n", + "class Derived1(Base):\n", + " pass\n", + "class Derived2(Base):\n", + " pass\n", + "\n", + "def WhatType(ob):\n", + " print \"ob is referencing an object of type\",\n", + " print ob.__class__.__name__\n", + " \n", + " \n", + "#Variable declaration\n", + "baseob=Base()\n", + "p=[Base()]\n", + "ob1=Derived1()\n", + "ob2=Derived2()\n", + "\n", + "WhatType(baseob)\n", + "WhatType(ob1)\n", + "WhatType(ob2)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "ob is referencing an object of type Base\n", + "ob is referencing an object of type Derived1\n", + "ob is referencing an object of type Derived2\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 19.4, Page Number: 456<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "import random\n", + "\n", + "class figure:\n", + " def __init__(self,i,j):\n", + " self._x=i\n", + " self._y=j\n", + " \n", + "class triangle(figure):\n", + " def __init__(self,i,j):\n", + " figure.__init__(self,i,j)\n", + " def area(self):\n", + " return self._x*0.5*self._y\n", + " \n", + "class rectangle(figure):\n", + " def __init__(self,i,j):\n", + " figure.__init__(self,i,j)\n", + " def area(self):\n", + " return self._x*self._y\n", + " \n", + "class circle(figure):\n", + " def __init__(self,i,j=0):\n", + " figure.__init__(self,i,j)\n", + " def area(self):\n", + " return self._x*self._x*3.14\n", + " \n", + "def factory():\n", + " i=random.randint(0,2)\n", + " if i==0:\n", + " return circle(10.0)\n", + " elif i==1:\n", + " return triangle(10.1,5.3)\n", + " elif i==2:\n", + " return rectangle(4.3,5.7)\n", + " \n", + "\n", + "t=c=r=0 \n", + "p=[None]\n", + "\n", + "#generate and count objects\n", + "for i in range(10):\n", + " p[0]=factory() #generate an object\n", + " print \"Object is \",p[0].__class__.__name__,\". \",\n", + " #count it\n", + " if p[0].__class__.__name__==triangle.__name__:\n", + " t+=1\n", + " if p[0].__class__.__name__==rectangle.__name__:\n", + " r+=1\n", + " if p[0].__class__.__name__==circle.__name__:\n", + " c+=1\n", + " #display its area\n", + " print \"Area is\",p[0].area()\n", + "\n", + "print \"Objects generated:\"\n", + "print \"Triangles:\",t\n", + "print \"Rectangles:\",r\n", + "print \"Circles:\",c" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Object is circle . Area is 314.0\n", + "Object is rectangle . Area is 24.51\n", + "Object is rectangle . Area is 24.51\n", + "Object is circle . Area is 314.0\n", + "Object is rectangle . Area is 24.51\n", + "Object is circle . Area is 314.0\n", + "Object is rectangle . Area is 24.51\n", + "Object is triangle . Area is 26.765\n", + "Object is rectangle . Area is 24.51\n", + "Object is circle . Area is 314.0\n", + "Objects generated:\n", + "Triangles: 1\n", + "Rectangles: 5\n", + "Circles: 4\n" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 19.5, Page Number: 456<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + " \n", + "class myclass:\n", + " def __init__(self,i):\n", + " self.__a=i\n", + " \n", + "o1=myclass(10)\n", + "o2=myclass(9)\n", + "o3=myclass(7.2)\n", + "\n", + "print \"Type of o1 is\",o1.__class__.__name__\n", + "\n", + "print \"Type of o2 is\",o2.__class__.__name__\n", + "\n", + "print \"Type of o3 is\",o3.__class__.__name__\n", + "\n", + "print\n", + "\n", + "if o1.__class__.__name__==o2.__class__.__name__:\n", + " print \"o1 and o2 are the same type\"\n", + " \n", + "if o1.__class__.__name__==o3.__class__.__name__:\n", + " print \"Error\"\n", + "else:\n", + " print \"o1 and o3 are different types\"\n", + "\n", + "#This prints error because python doesnt use templates." + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Type of o1 is myclass\n", + "Type of o2 is myclass\n", + "Type of o3 is myclass\n", + "\n", + "o1 and o2 are the same type\n", + "Error\n" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 19.6, Page Number: 460<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "import random\n", + "\n", + "class figure:\n", + " def __init__(self,i,j):\n", + " self._x=i\n", + " self._y=j\n", + " \n", + "class triangle(figure):\n", + " def __init__(self,i,j):\n", + " figure.__init__(self,i,j)\n", + " def area(self):\n", + " return self._x*0.5*self._y\n", + " \n", + "class rectangle(figure):\n", + " def __init__(self,i,j):\n", + " figure.__init__(self,i,j)\n", + " def area(self):\n", + " return self._x*self._y\n", + " \n", + "class circle(figure):\n", + " def __init__(self,i,j=0):\n", + " figure.__init__(self,i,j)\n", + " def area(self):\n", + " return self._x*self._x*3.14\n", + " \n", + "def factory():\n", + " i=random.randint(0,2)\n", + " if i==0:\n", + " return circle(10.0)\n", + " elif i==1:\n", + " return triangle(10.1,5.3)\n", + " elif i==2:\n", + " return rectangle(4.3,5.7)\n", + " \n", + "\n", + "t=c=r=0 \n", + "p=[None]\n", + "\n", + "#generate and count objects\n", + "for i in range(10):\n", + " p[0]=factory() #generate an object\n", + " print \"Object is \",p[0].__class__.__name__,\". \",\n", + " #count it\n", + " if p[0].__class__.__name__==triangle.__name__:\n", + " t+=1\n", + " if p[0].__class__.__name__==rectangle.__name__:\n", + " r+=1\n", + " if p[0].__class__.__name__==circle.__name__:\n", + " c+=1\n", + " #display its area\n", + " print \"Area is\",p[0].area()\n", + "\n", + "print \"Objects generated:\"\n", + "print \"Triangles:\",t\n", + "print \"Rectangles:\",r\n", + "print \"Circles:\",c" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Object is triangle . Area is 26.765\n", + "Object is circle . Area is 314.0\n", + "Object is circle . Area is 314.0\n", + "Object is rectangle . Area is 24.51\n", + "Object is rectangle . Area is 24.51\n", + "Object is rectangle . Area is 24.51\n", + "Object is circle . Area is 314.0\n", + "Object is circle . Area is 314.0\n", + "Object is rectangle . Area is 24.51\n", + "Object is triangle . Area is 26.765\n", + "Objects generated:\n", + "Triangles: 2\n", + "Rectangles: 4\n", + "Circles: 4\n" + ] + } + ], + "prompt_number": 7 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 19.7, Page Number: 463<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "class Base:\n", + " def f(self):\n", + " print \"Inside Base\"\n", + " \n", + "class Derived(Base):\n", + " def f(self):\n", + " print \"Inside Derived\"\n", + " \n", + "bp=[Base()] #pointer to base\n", + "b_ob=Base() \n", + "dp=[Derived()] #pointer to derived\n", + "d_ob=Derived()\n", + "\n", + "dp[0]=d_ob\n", + "if dp[0]:\n", + " print \"Cast from Derived * to Derived * OK.\"\n", + " dp[0].f()\n", + "else:\n", + " print \"Error\"\n", + "print\n", + "\n", + "bp[0]=d_ob\n", + "if bp[0]:\n", + " print \"Cast from Derived * to Base * OK.\"\n", + " bp[0].f()\n", + "else:\n", + " print \"Error\"\n", + "print\n", + "\n", + "bp[0]=b_ob\n", + "if bp[0]:\n", + " print \"Cast from Base * to Base * OK.\"\n", + " bp[0].f()\n", + "else:\n", + " print \"Error\"\n", + "print\n", + "\n", + "dp[0]=b_ob\n", + "if dp[0]:\n", + " print \"Error\"\n", + "else:\n", + " print \"Cast from Base * to Derived * not OK.\"\n", + "print\n", + "\n", + "bp[0]=d_ob #bp points to Derived object\n", + "dp[0]=bp[0]\n", + "if dp[0]:\n", + " print \"Cast bp to a Derived * OK.\"\n", + " print \"because bp is really pointing\\n\",\n", + " print \"to a Derived object.\"\n", + " dp[0].f()\n", + "else:\n", + " print \"Error\"\n", + "print\n", + "\n", + "bp[0]=b_ob #bp points to Base object\n", + "dp[0]=bp[0]\n", + "if dp[0]:\n", + " print \"Error\"\n", + "else:\n", + " print \"Now casting bp to a Derived *\\n\",\n", + " print \"is not OK because bp is really\\n\",\n", + " print \" pointing to a Base object.\"\n", + "print\n", + "\n", + "dp[0]=d_ob #dp points to Derived object\n", + "bp[0]=dp[0]\n", + "if bp[0]:\n", + " print \"Casting dp to a Base * is OK.\"\n", + " bp[0].f()\n", + "else:\n", + " print \"Error\"\n", + "print\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Cast from Derived * to Derived * OK.\n", + "Inside Derived\n", + "\n", + "Cast from Derived * to Base * OK.\n", + "Inside Derived\n", + "\n", + "Cast from Base * to Base * OK.\n", + "Inside Base\n", + "\n", + "Error\n", + "\n", + "Cast bp to a Derived * OK.\n", + "because bp is really pointing\n", + "to a Derived object.\n", + "Inside Derived\n", + "\n", + "Error\n", + "\n", + "Casting dp to a Base * is OK.\n", + "Inside Derived\n", + "\n" + ] + } + ], + "prompt_number": 8 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 19.8, Page Number: 465<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "class Base:\n", + " def f(self):\n", + " pass\n", + " \n", + "class Derived(Base):\n", + " def derivedOnly(self):\n", + " print \"Is a Derived Object\"\n", + " \n", + "bp=[Base()] #pointer to base\n", + "b_ob=Base() \n", + "dp=[Derived()] #pointer to derived\n", + "d_ob=Derived()\n", + "\n", + "#Use typeid\n", + "\n", + "bp[0]=b_ob\n", + "if bp[0].__class__.__name__==Derived.__name__:\n", + " dp[0]=bp[0]\n", + " dp[0].derivedOnly()\n", + "else:\n", + " print \"Cast from Base to Derived failed.\"\n", + " \n", + "bp[0]=d_ob\n", + "if bp[0].__class__.__name__==Derived.__name__:\n", + " dp[0]=bp[0]\n", + " dp[0].derivedOnly()\n", + "else:\n", + " print \"Error, cast should work!\"\n", + " \n", + "#Use dynamic_cast\n", + "\n", + "bp[0]=b_ob\n", + "dp[0]=bp[0]\n", + "if dp[0].__class__.__name__==Derived.__name__:\n", + " dp[0].derivedOnly()\n", + "else:\n", + " print \"Cast from Base to Derived failed.\"\n", + " \n", + "bp[0]=d_ob\n", + "dp[0]=bp[0]\n", + "if dp:\n", + " dp[0].derivedOnly()\n", + "else:\n", + " print \"Error, cast should work!\"\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Cast from Base to Derived failed.\n", + "Is a Derived Object\n", + "Cast from Base to Derived failed.\n", + "Is a Derived Object\n" + ] + } + ], + "prompt_number": 9 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 19.9, Page Number: 467<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "def f(p):\n", + " v=p\n", + " v[0]=100\n", + " \n", + "#Variable declaration\n", + "x=[]\n", + "\n", + "x.append(99)\n", + "print \"x before call:\",x[0]\n", + "f(x)\n", + "print \"x after call:\",x[0]\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "x before call: 99\n", + "x after call: 100\n" + ] + } + ], + "prompt_number": 10 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 19.10, Page Number: 468<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "f=199.22\n", + "\n", + "i=f\n", + "print i\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "199.22\n" + ] + } + ], + "prompt_number": 11 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 19.11, Page Number: 469<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "i=0 #int\n", + "p=\"This is a string\"\n", + "\n", + "i=p #cast pointer to integer \n", + "\n", + "#Result\n", + "print i\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "This is a string\n" + ] + } + ], + "prompt_number": 12 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [], + "language": "python", + "metadata": {}, + "outputs": [] + } + ], + "metadata": {} + } + ] +}
\ No newline at end of file diff --git a/C++_from_the_Ground/Chapter_2.ipynb b/C++_from_the_Ground/Chapter_2.ipynb new file mode 100644 index 00000000..b3976867 --- /dev/null +++ b/C++_from_the_Ground/Chapter_2.ipynb @@ -0,0 +1,416 @@ +{ + "metadata": { + "name": "", + "signature": "sha256:05876b24f412fcea817693bad944dc90f3dae4fb5142aeb7d9c2c98569067083" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h1>Chapter 2: An Overview of C++<h1>" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 2.1, Page Number: 12<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "print \"This is my first C++ program.\"" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "This is my first C++ program.\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 2.2, Page Number: 17<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + " \n", + "x=None \n", + "\n", + "x=1023 #this assigns 1023 to x\n", + "\n", + "#Result\n", + "print \"This program prints the value of x: \",x #prints x,i.e, 1023\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "This program prints the value of x: 1023\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 2.3, Page Number: 18<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "#Variable declaration\n", + "gallons=10 #User input\n", + "liters=None\n", + "\n", + "liters=gallons*4 #convert to liters\n", + "\n", + "#Result\n", + "print \"Liters: \",liters" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Liters: 40\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 2.4, Page Number: 20<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "\n", + "#Variable declaration\n", + "gallons=10.20 #User input\n", + "liters=None\n", + "\n", + "liters=gallons*3.7854 #convert to liters\n", + "\n", + "#Result\n", + "print \"Liters: \",liters" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Liters: 38.61108\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 2.5, Page Number: 21<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + " \n", + "def myfunc():\n", + " print \"Inside myfunc() \"\n", + " \n", + "print \"In main()\"\n", + "myfunc() #call myfunc()\n", + "print \"Back in main()\"" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "In main()\n", + "Inside myfunc() \n", + "Back in main()\n" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 2.6, Page Number: 22<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + " \n", + "print abs(-10)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "10\n" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 2.7, Page Number: 23<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + " \n", + "def mul(x,y):\n", + " print x*y,\n", + "\n", + "#calling mul\n", + "mul(10,20)\n", + "mul(5,6)\n", + "mul(8,9)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "200 30 72\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 2.8, Page Number: 24<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + " \n", + "def mul(x,y):\n", + " return x*y #return product of x and y\n", + "\n", + "#Variable declaration\n", + "answer=mul(10,11) #assign return values\n", + "\n", + "#Result\n", + "print \"The answer is: \",answer\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The answer is: 110\n" + ] + } + ], + "prompt_number": 8 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 2.9, Page Number: 26<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "print \"one\"\n", + "print \"two\" #prints in different line\n", + "print \"three\",\"four\" #prints all in same line" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "one\n", + "two\n", + "three four\n" + ] + } + ], + "prompt_number": 9 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 2.10, Page Number: 27<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + " \n", + "#Variable declaration\n", + "a=10 #user input for two numbers\n", + "b=20\n", + "\n", + "#Result\n", + "if a<b:\n", + " print \"First number is less than second. \"" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "First number is less than second. \n" + ] + } + ], + "prompt_number": 10 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 2.11, Page Number: 28<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "for count in range(1,100+1):\n", + " print count," + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 2.12, Page Number: 30<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + " \n", + "a=10 #User input for two numbers\n", + "b=20\n", + "\n", + "#Result\n", + "if a<b:\n", + " print \"First number is less than second\"\n", + " print \"Their difference is: \",b-a\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "First number is less than second\n", + "Their difference is: 10\n" + ] + } + ], + "prompt_number": 12 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [], + "language": "python", + "metadata": {}, + "outputs": [] + } + ], + "metadata": {} + } + ] +}
\ No newline at end of file diff --git a/C++_from_the_Ground/Chapter_20.ipynb b/C++_from_the_Ground/Chapter_20.ipynb new file mode 100644 index 00000000..8771c6cd --- /dev/null +++ b/C++_from_the_Ground/Chapter_20.ipynb @@ -0,0 +1,937 @@ +{ + "metadata": { + "name": "", + "signature": "sha256:aed4cbb1750b5cf45152f9d0ded2a9f36978f3177285c38b159fb79a8b0d35e4" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h1>Chapter 20: Namespaces and Other Advanced Topics<h1>" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 20.1, Page Number:474<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "\n", + "class CounterNameSpace:\n", + " upperbound=None\n", + " lowerbound=None\n", + " class counter:\n", + " def __init__(self,n):\n", + " if n<=CounterNameSpace.upperbound:\n", + " self.count=n\n", + " else:\n", + " self.count=CounterNameSpace.upperbound\n", + " def reset(self,n):\n", + " if n<=CounterNameSpace.upperbound:\n", + " self.count=n\n", + " def run(self):\n", + " if self.count>CounterNameSpace.lowerbound:\n", + " self.count-=1\n", + " return self.count\n", + " else:\n", + " return CounterNameSpace.lowerbound\n", + " \n", + "CounterNameSpace.upperbound=100\n", + "CounterNameSpace.lowerbound=0\n", + "\n", + "\n", + "ob1=CounterNameSpace.counter(10)\n", + "while True:\n", + " i=ob1.run()\n", + " print i,\n", + " if i<=CounterNameSpace.lowerbound:\n", + " break \n", + "print\n", + "\n", + "\n", + "ob2=CounterNameSpace.counter(20)\n", + "while True:\n", + " i=ob2.run()\n", + " print i,\n", + " if i<=CounterNameSpace.lowerbound:\n", + " break \n", + "print\n", + "\n", + "\n", + "ob2.reset(100)\n", + "CounterNameSpace.lowerbound=90\n", + "while True:\n", + " i=ob2.run()\n", + " print i,\n", + " if i<=CounterNameSpace.lowerbound:\n", + " break " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "9 8 7 6 5 4 3 2 1 0\n", + "19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0\n", + "99 98 97 96 95 94 93 92 91 90\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 20.2, Page Number:476<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + " \n", + "class CounterNameSpace:\n", + " upperbound=None\n", + " lowerbound=None\n", + " class counter:\n", + " def __init__(self,n):\n", + " if n<=c.upperbound:\n", + " self.count=n\n", + " else:\n", + " self.count=c.upperbound\n", + " def reset(self,n):\n", + " if n<=c.upperbound:\n", + " self.count=n\n", + " def run(self):\n", + " if self.count>c.lowerbound:\n", + " self.count-=1\n", + " return self.count\n", + " else:\n", + " return c.lowerbound\n", + "\n", + "#Use only upperbound using c\n", + "c=CounterNameSpace()\n", + "c.upperbound=100\n", + "CounterNameSpace.lowerbound=0\n", + "\n", + "\n", + "ob1=CounterNameSpace.counter(10)\n", + "while True:\n", + " i=ob1.run()\n", + " print i,\n", + " if i<=CounterNameSpace.lowerbound:\n", + " break \n", + "print\n", + "\n", + "#Now use entre CounterName Space using c\n", + "\n", + "ob2=c.counter(20)\n", + "while True:\n", + " i=ob2.run()\n", + " print i,\n", + " if i<=c.lowerbound:\n", + " break \n", + "print\n", + "\n", + "\n", + "ob2.reset(100)\n", + "c.lowerbound=90\n", + "while True:\n", + " i=ob2.run()\n", + " print i,\n", + " if i<=c.lowerbound:\n", + " break " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "9 8 7 6 5 4 3 2 1 0\n", + "19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0\n", + "99 98 97 96 95 94 93 92 91 90\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 20.3, Page Number:479<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "#User-input\n", + "print \"Enter a number:\"\n", + "val= 10.00\n", + "\n", + "#Result\n", + "print \"This is your number:\",val" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter a number:\n", + "This is your number: 10.0\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 20.4, Page Number:479<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "import sys\n", + "\n", + "#User-input\n", + "sys.stdout.write(\"Enter a number:\")\n", + "val= 10.00\n", + "\n", + "#Result\n", + "sys.stdout.write(\"\\nThis is your number: \")\n", + "sys.stdout.write(str(val))" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter a number:\n", + "This is your number: 10.0" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 20.5, Page Number:479<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "from sys import stdout\n", + "\n", + "#User-input\n", + "stdout.write(\"Enter a number:\")\n", + "val= 10.00\n", + "\n", + "#Result\n", + "stdout.write(\"\\nThis is your number: \")\n", + "stdout.write(str(val))" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter a number:\n", + "This is your number: 10.0" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 20.6, Page Number:480<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + " \n", + "def vline(i):\n", + " for j in xrange(i,0,-1):\n", + " print \"|\"\n", + "def hline(i):\n", + " for j in xrange(i,0,-1):\n", + " print \"-\",\n", + " print \n", + "\n", + "p=vline #p points to vline\n", + "p(4) #call vline()\n", + "\n", + "p=hline #p now points to hline\n", + "p(3) #call hline" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "|\n", + "|\n", + "|\n", + "|\n", + "- - -\n" + ] + } + ], + "prompt_number": 7 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 20.7, Page Number:482<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "import string\n", + "\n", + "def qsort(p):\n", + " if p == []: \n", + " return []\n", + " else:\n", + " pivot = p[0]\n", + " lesser = qsort([x for x in p[1:] if x < pivot])\n", + " greater = qsort([x for x in p[1:] if x >= pivot])\n", + " return lesser + [pivot] + greater\n", + " \n", + "#Variable Declaration \n", + "str=\"Function pointers provide flexibility.\" \n", + "\n", + "#sorting the string\n", + "str=qsort(str)\n", + "str=string.join(str)\n", + "\n", + "#Result\n", + "print \"sorted strng: \",str\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "sorted strng: . F b c d e e e f i i i i i i l l n n n o o o p p r r s t t t u v x y\n" + ] + } + ], + "prompt_number": 8 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 20.8, Page Number:482<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "import string\n", + "\n", + "def qsort(p):\n", + " \"\"\"Quicksort using list comprehensions\"\"\"\n", + " if p == []: \n", + " return []\n", + " else:\n", + " pivot = p[0]\n", + " lesser = qsort([x for x in p[1:] if x < pivot])\n", + " greater = qsort([x for x in p[1:] if x >= pivot])\n", + " return lesser + [pivot] + greater\n", + " \n", + "#Variable Declaration \n", + "num=[10,4,3,6,5,7,8]\n", + "\n", + "#sorting the string\n", + "num=qsort(num)\n", + "\n", + "#Result\n", + "for i in range(7):\n", + " print num[i],\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "3 4 5 6 7 8 10\n" + ] + } + ], + "prompt_number": 9 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 20.9, Page Number:484<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "def space(count,ch=None):\n", + " if ch==None:\n", + " for i in xrange(count,0,-1):\n", + " print '',\n", + " else:\n", + " for i in xrange(count,0,-1):\n", + " print ch,\n", + " \n", + "\n", + "fp1=space\n", + "fp2=space\n", + "\n", + "fp1(22) #outputs 20 spaces\n", + "print \"|\\n\" \n", + "\n", + "fp2(30,'x') #output 30 xs \n", + "print \"|\\n\"\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " |\n", + "\n", + "x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x |\n", + "\n" + ] + } + ], + "prompt_number": 10 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 20.10, Page Number:485<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "num=None #static variable\n", + "\n", + "class ShareVar:\n", + " def setnum(i=0):\n", + " global num\n", + " num=i\n", + " def shownum(self):\n", + " global num\n", + " print num\n", + " \n", + "#Variables declaration\n", + "a=ShareVar()\n", + "b=ShareVar()\n", + "\n", + "a.shownum() #prints None\n", + "b.shownum() #prints None\n", + "\n", + "num=10 #set static num to 10\n", + "\n", + "a.shownum() #prints 10\n", + "b.shownum() #prints 10\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "None\n", + "None\n", + "10\n", + "10\n" + ] + } + ], + "prompt_number": 11 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 20.11, Page Number:487<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "class Demo:\n", + " i=None\n", + " j=None\n", + " def geti(self):\n", + " return self.i\n", + " def seti(self,x):\n", + " self.i=x\n", + " \n", + "ob=Demo()\n", + "\n", + "ob.seti(1900)\n", + "print ob.geti()\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "1900\n" + ] + } + ], + "prompt_number": 12 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 20.12, Page Number:488<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "class myclass:\n", + " def __init__(self,x):\n", + " self.__a=x\n", + " def geta(self):\n", + " return self.__a\n", + " \n", + "#Variable declaration\n", + "ob=myclass(4)\n", + "\n", + "#Result\n", + "print ob.geta()" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "4\n" + ] + } + ], + "prompt_number": 15 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 20.13, Page Number:489<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "class myclass:\n", + " def __init__(self,x):\n", + " self.__a=x\n", + " def geta():\n", + " return self.__a\n", + " \n", + "ob = myclass(110)" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 2 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 20.14, Page Number:490<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "class myclass:\n", + " def __init__(self,i):\n", + " self.__num=i\n", + " def getnum(self):\n", + " return self.__num\n", + " \n", + "#Variable declaration\n", + "o=myclass(10)\n", + "\n", + "print o.getnum() #display 10\n", + "\n", + "o=myclass(1000)\n", + "\n", + "print o.getnum() #display 1000" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "10\n", + "1000\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 20.15, Page Number:491<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "class myclass:\n", + " def __init__(self,x,y):\n", + " self.__numA=x\n", + " self.__numB=y\n", + " def getnumA(self):\n", + " return self.__numA\n", + " def getnumB(self):\n", + " return self.__numB\n", + " \n", + "#Variable declaration\n", + "ob1=myclass(7,9)\n", + "ob2=myclass(5,2)\n", + "\n", + "#Result\n", + "print \"Values in ob1 are \",ob1.getnumB(),\"and\",ob1.getnumA()\n", + "print \"Values in ob2 are \",ob2.getnumB(),\"and\",ob2.getnumA()\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Values in ob1 are 9 and 7\n", + "Values in ob2 are 2 and 5\n" + ] + } + ], + "prompt_number": 16 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 20.16, Page Number:492<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "class myclass:\n", + " def __init__(self,x,y):\n", + " self.__numA=x\n", + " self.__numB=y\n", + " def getnumA(self):\n", + " return self.__numA\n", + " def getnumB(self):\n", + " return self.__numB\n", + " \n", + "#Variable declaration\n", + "ob1=myclass(7,9)\n", + "ob2=myclass(5,2)\n", + "\n", + "#Result\n", + "print \"Values in ob1 are \",ob1.getnumB(),\"and\",ob1.getnumA()\n", + "print \"Values in ob2 are \",ob2.getnumB(),\"and\",ob2.getnumA()\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Values in ob1 are 9 and 7\n", + "Values in ob2 are 2 and 5\n" + ] + } + ], + "prompt_number": 17 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 20.17, Page Number:494<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "def myfunc():\n", + " print \"This links as a C function.\"\n", + " \n", + "myfunc()" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "This links as a C function.\n" + ] + } + ], + "prompt_number": 18 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 20.18, Page Number:495<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "from ctypes import *\n", + "\n", + "class myclass: \n", + " sum=c_int(0)\n", + " def sum_it(self,x):\n", + " for i in range(x+1):\n", + " self.sum.value+=i\n", + " fp=sum_it #pointer to function\n", + "\n", + "#Variable declaration\n", + "c=myclass()\n", + "fp=myclass.sum_it #get address of function\n", + "dp=pointer(c.sum) #address of data\n", + "c.fp(7) #compute summation of 7\n", + "\n", + "\n", + "#Result\n", + "print \"summation of 7 is\",dp[0]\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "summation of 7 is 28\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 20.19, Page Number:496<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "from ctypes import *\n", + "\n", + "class myclass:\n", + " sum=c_int(0)\n", + " def sum_it(self,x): \n", + " for i in range(x+1):\n", + " self.sum.value+=i\n", + " fp=sum_it #pointer to function\n", + "\n", + "#Variable declaration\n", + "d=myclass()\n", + "c=[d] #ponter to object\n", + "fp=myclass.sum_it #get address of function\n", + "dp=pointer(c[0].sum) #get address of data\n", + "\n", + "c[0].fp(7) #compute summation of 7\n", + "\n", + "\n", + "#Result\n", + "print \"summation of 7 is\",dp[0]\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " summation of 7 is 28\n" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 20.20, Page Number:497<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "class three_d:\n", + " def __init__(self,a,b,c): #3D coordinates\n", + " self.x=a\n", + " self.y=b\n", + " self.z=c\n", + " #Display x,y,z coordinates - three_d inserter.\n", + " def __repr__(self):\n", + " return str(self.x)+\", \"+str(self.y)+\", \"+str(self.z)+\"\\n\"\n", + " def __add__(self,op2):\n", + " if isinstance(op2,int):\n", + " c=self.x*self.y*self.z+op2\n", + " return c\n", + " temp=three_d(self.x+op2.x,self.y+op2.y,self.z+op2.z)\n", + " return temp\n", + " \n", + "a=three_d(1,2,3)\n", + "b=three_d(2,3,4)\n", + "\n", + "print a,b,\n", + "\n", + "print b+100 #displays 124 because of conversion to int\n", + "\n", + "a=a+b #add two three_d objects - no conversion\n", + "\n", + "print a #displays 3,5,7" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "1, 2, 3\n", + " 2, 3, 4\n", + " 124\n", + "3, 5, 7\n", + "\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [], + "language": "python", + "metadata": {}, + "outputs": [] + } + ], + "metadata": {} + } + ] +}
\ No newline at end of file diff --git a/C++_from_the_Ground/Chapter_21.ipynb b/C++_from_the_Ground/Chapter_21.ipynb new file mode 100644 index 00000000..76345922 --- /dev/null +++ b/C++_from_the_Ground/Chapter_21.ipynb @@ -0,0 +1,1187 @@ +{ + "metadata": { + "name": "", + "signature": "sha256:1f6065242a1ea235eb4712b9ec147fb29625df8861301b52ad6c880a94467811" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h1>Chapter 21: Introducing the Standard Template Library<h1>" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 21.1, Page Number:507<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + " \n", + "v=[] #Create a zero length vector\n", + " \n", + "print \"Size =\",len(v)\n", + " \n", + "\n", + "for i in range(10):\n", + " v.append(i)\n", + " \n", + "#display current size of v\n", + "print \"Current contents: \"\n", + "print \"Size now =\",len(v)\n", + "\n", + "#display contents of vector\n", + "for i in range(len(v)):\n", + " print v[i],\n", + " \n", + "print\n", + " \n", + "#put more values onto end of vector\n", + "#again, vector will grow as needed.\n", + "for i in range(10):\n", + " v.append(i+10)\n", + "#display current size of v\n", + "print \"Size now =\",len(v)\n", + "\n", + "#display contents of vector\n", + "print \"Current contents:\"\n", + "for i in range(len(v)):\n", + " print v[i],\n", + "print\n", + " \n", + "#change contents of vector\n", + "for i in range(len(v)):\n", + " v[i]=v[i]+v[i]\n", + " \n", + "#display contents of vector\n", + "print \"Contents doubled:\"\n", + "for i in range(len(v)):\n", + " print v[i]," + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Size = 0\n", + "Current contents: \n", + "Size now = 10\n", + "0 1 2 3 4 5 6 7 8 9\n", + "Size now = 20\n", + "Current contents:\n", + "0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19\n", + "Contents doubled:\n", + "0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 21.2, Page Number:508<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "#Variable declaration\n", + "v=[] #Create a zero length vector\n", + "\n", + "#put values onto end of vector\n", + "for i in range(10):\n", + " v.append(chr(ord('A')+i))\n", + " \n", + "#can access vector contents using subscripts\n", + "for i in range(len(v)):\n", + " print v[i], \n", + "print\n", + " \n", + "#access via iterator\n", + "for p in v:\n", + " print p,\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "A B C D E F G H I J\n", + "A B C D E F G H I J\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 21.3, Page Number:509<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "#Variable declaration\n", + "v=[] #Create a zero length vector\n", + "\n", + "#put values onto end of vector\n", + "for i in range(10):\n", + " v.append(chr(ord('A')+i))\n", + " \n", + "#Display original contents of vector\n", + "print \"Size =\",len(v)\n", + "print \"Original contents:\"\n", + "for i in range(len(v)):\n", + " print v[i], \n", + "print \"\\n\"\n", + " \n", + "p=2 #point to 3rd element\n", + "for i in range(10):\n", + " v.insert(p+i,'X')\n", + " \n", + "#display contents after insertion\n", + "print \"Size after insert =\",len(v)\n", + "print \"Contents after insert:\"\n", + "for i in range(len(v)):\n", + " print v[i],\n", + "print \"\\n\"\n", + "\n", + "#remove those elements\n", + "p=2 #point to 3rd element\n", + "for i in range(10):\n", + " v.pop(p)\n", + " \n", + "#display contents after insertion\n", + "print \"Size after erase =\",len(v)\n", + "print \"Contents after insert:\"\n", + "for i in range(len(v)):\n", + " print v[i],\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Size = 10\n", + "Original contents:\n", + "A B C D E F G H I J \n", + "\n", + "Size after insert = 20\n", + "Contents after insert:\n", + "A B X X X X X X X X X X C D E F G H I J \n", + "\n", + "Size after erase = 10\n", + "Contents after insert:\n", + "A B C D E F G H I J\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 21.4, Page Number:511<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "class three_d:\n", + " def __init__(self,a,b,c): #3D coordinates\n", + " self.x=a\n", + " self.y=b\n", + " self.z=c\n", + " #Display x,y,z coordinates - three_d inserter.\n", + " def __repr__(self):\n", + " return str(self.x)+\", \"+str(self.y)+\", \"+str(self.z)+\"\\n\"\n", + " def __add__(self,a):\n", + " self.x+=a\n", + " self.y+=a\n", + " self.z+=a\n", + " return self\n", + " def __lt__(self,b):\n", + " return (self.x+self.y+self.z)<(b.x+b.y+b.z)\n", + " def __eq__(self,b):\n", + " return (self.x+self.y+self.z)==(b.x+b.y+b.z) \n", + " \n", + "#Variable declaration\n", + "v=[]\n", + "\n", + "#add objects to the vector\n", + "for i in range(10):\n", + " v.append(three_d(i,i+2,i-3))\n", + " \n", + "#Display contents of vector\n", + "for i in range(len(v)):\n", + " print v[i], \n", + "print\n", + "\n", + "\n", + "#Modify objects in a vector\n", + "for i in range(len(v)):\n", + " v[i]=v[i]+10 \n", + "\n", + "#Display modified vector\n", + "for i in range(len(v)):\n", + " print v[i], \n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "0, 2, -3\n", + " 1, 3, -2\n", + " 2, 4, -1\n", + " 3, 5, 0\n", + " 4, 6, 1\n", + " 5, 7, 2\n", + " 6, 8, 3\n", + " 7, 9, 4\n", + " 8, 10, 5\n", + " 9, 11, 6\n", + "\n", + "10, 12, 7\n", + " 11, 13, 8\n", + " 12, 14, 9\n", + " 13, 15, 10\n", + " 14, 16, 11\n", + " 15, 17, 12\n", + " 16, 18, 13\n", + " 17, 19, 14\n", + " 18, 20, 15\n", + " 19, 21, 16\n", + "\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 21.5, Page Number:513<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + " \n", + "v=[]\n", + "v2=[]\n", + "\n", + "for i in range(10):\n", + " v.append(chr(ord('A')+i))\n", + " \n", + "#Display original contents of vector\n", + "print \"Size =\",len(v)\n", + "print \"Original contents:\"\n", + "for i in range(len(v)):\n", + " print v[i], \n", + "print \"\\n\"\n", + "\n", + "#initialze second vector\n", + "str=\"-STL Power-\"\n", + "for i in range(len(str)):\n", + " v2.append(str[i])\n", + " \n", + "#get iterators to the middle of v and to the start and end of v2.\n", + "p=5\n", + "p2start=0\n", + "p2end=len(v2)-1\n", + "\n", + "#insert v2 into v\n", + "for i in range(p2end):\n", + " v.insert(p+i,v2[p2start+i])\n", + " \n", + "#display result\n", + "print \"Contents of v after inserton:\"\n", + "for i in range(len(v)):\n", + " print v[i],\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Size = 10\n", + "Original contents:\n", + "A B C D E F G H I J \n", + "\n", + "Contents of v after inserton:\n", + "A B C D E - S T L P o w e r F G H I J\n" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 21.6, Page Number:517<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "#Variable declaration\n", + "lst=[] #create an empty list\n", + "\n", + "for i in range(10):\n", + " lst.append(chr(ord('A')+i))\n", + " \n", + "print \"Size =\",len(lst)\n", + "\n", + "print \"Contents:\",\n", + "for p in lst:\n", + " print p, \n", + "print \"\\n\"" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Size = 10\n", + "Contents: A B C D E F G H I J \n", + "\n" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 21.7, Page Number:518<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "#Variable declaration\n", + "lst=[] \n", + "revlst=[]\n", + "\n", + "for i in range(10):\n", + " lst.append(chr(ord('A')+i))\n", + " \n", + "print \"Size of list =\",len(lst)\n", + "\n", + "print \"Original Contents:\",\n", + "#Remove elements from lst and put them into revlst in reverse order.\n", + "for p in lst:\n", + " print p, \n", + " revlst.insert(0,p) \n", + "for i in range(10):\n", + " lst.pop(0)\n", + "print \"\\n\"\n", + "\n", + "print \"Size of revlst =\",len(revlst)\n", + "\n", + "print \"Reversed Contents:\",\n", + "for p in revlst:\n", + " print p," + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Size of list = 10\n", + "Original Contents: A B C D E F G H I J \n", + "\n", + "Size of revlst = 10\n", + "Reversed Contents: J I H G F E D C B A\n" + ] + } + ], + "prompt_number": 8 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 21.8, Page Number:519<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "import random\n", + "\n", + "#Variable declaration\n", + "lst=[] \n", + "\n", + "#create a list of random integers\n", + "for i in range(10):\n", + " lst.append(random.randint(0,100))\n", + "\n", + "print \"Original Contents:\",\n", + "for p in lst:\n", + " print p, \n", + "print \"\\n\"\n", + "\n", + "#sort the list\n", + "lst.sort()\n", + "\n", + "print \"Sorted Contents:\",\n", + "for p in lst:\n", + " print p," + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Original Contents: 75 73 72 4 88 7 85 21 67 42 \n", + "\n", + "Sorted Contents: 4 7 21 42 67 72 73 75 85 88\n" + ] + } + ], + "prompt_number": 9 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 21.9, Page Number:520<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "#Variable declaration\n", + "lst1=[] \n", + "lst2=[]\n", + "\n", + "for i in xrange(0,10,2):\n", + " lst1.append(chr(ord('A')+i))\n", + "for i in xrange(1,11,2):\n", + " lst2.append(chr(ord('A')+i))\n", + "\n", + "print \"Contents of lst1:\",\n", + "for p in lst1:\n", + " print p, \n", + "print \"\\n\"\n", + "\n", + "print \"Contents of lst2:\",\n", + "for p in lst2:\n", + " print p, \n", + "print \"\\n\"\n", + "\n", + "#merge the lists\n", + "lst1=lst1+lst2\n", + "lst1.sort()\n", + "lst2=[]\n", + "\n", + "if lst2==[]:\n", + " print \"lst2 is now empty\"\n", + "\n", + "print \"Contentsof lst1 after merge:\"\n", + "for p in lst1:\n", + " print p," + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Contents of lst1: A C E G I \n", + "\n", + "Contents of lst2: B D F H J \n", + "\n", + "lst2 is now empty\n", + "Contentsof lst1 after merge:\n", + "A B C D E F G H I J\n" + ] + } + ], + "prompt_number": 10 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 21.10, Page Number:521<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "class myclass:\n", + " def __init__(self,i=0,j=0):\n", + " self.__a=i\n", + " self.__b=j\n", + " self.sum=self.__a+self.__b\n", + " def getsum(self):\n", + " return self.sum\n", + " def __lt__(self,o2):\n", + " return self.sum<o2.sum\n", + " def __gt__(self,o2):\n", + " return self.sum>o2.sum\n", + " def __eq__(self,o2):\n", + " return self.sum==o2.sum\n", + " def __ne__(self, other):\n", + " return not self.__eq__(self)\n", + " \n", + "#create first list\n", + "lst1=[]\n", + "for i in range(10):\n", + " lst1.append(myclass(i,i))\n", + " \n", + "print \"First list:\",\n", + "for p in lst1:\n", + " print p.getsum(),\n", + "print\n", + "\n", + "#create second list\n", + "lst2=[]\n", + "for i in range(10):\n", + " lst2.append(myclass(i*2,i*3))\n", + " \n", + "print \"First list:\",\n", + "for p in lst2:\n", + " print p.getsum(),\n", + "print\n", + " \n", + "#Now merge list\n", + "lst1=lst1+lst2\n", + "lst1.sort()\n", + "\n", + "#Display merge list\n", + "print \"Merged list:\",\n", + "for p in lst1:\n", + " print p.getsum(),\n", + "print" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "First list: 0 2 4 6 8 10 12 14 16 18\n", + "First list: 0 5 10 15 20 25 30 35 40 45\n", + "Merged list: 0 0 2 4 5 6 8 10 10 12 14 15 16 18 20 25 30 35 40 45\n" + ] + } + ], + "prompt_number": 12 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 21.11, Page Number:527<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "#Variable declaration\n", + "m=[] \n", + "\n", + "#define the function find\n", + "def find(x,ch):\n", + " for p in x:\n", + " if p[0]==ch:\n", + " return p\n", + " return -1\n", + "\n", + "#put pairs into map\n", + "for i in range(10):\n", + " m.append([chr(ord('A')+i),i])\n", + " \n", + "#User Input\n", + "ch='D'\n", + "\n", + "#find value of the given key\n", + "p=find(m,ch)\n", + "\n", + "if not(p==-1):\n", + " print p[1]\n", + "else:\n", + " print \"Key not in the map\"" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "3\n" + ] + } + ], + "prompt_number": 13 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 21.12, Page Number:528<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + " \n", + "def find(x,ch):\n", + " for p in x:\n", + " if p[0].get()==ch.get():\n", + " return p\n", + " return -1\n", + "\n", + "\n", + "class word:\n", + " def __init__(self,s=\"\"):\n", + " self.str=s\n", + " def get(self):\n", + " return self.str\n", + " #must define less than relative to word objects\n", + " def __lt__(self,b):\n", + " return self.str<b.str\n", + "\n", + "class meaning:\n", + " def __init__(self,s=\"\"):\n", + " self.str=s\n", + " def get(self):\n", + " return self.str\n", + "\n", + "dictionary=[]\n", + "\n", + "dictionary.append([word(\"house\"),meaning(\"A place of dwelling\")])\n", + "dictionary.append([word(\"keyboard\"),meaning(\"An input device\")])\n", + "dictionary.append([word(\"programming\"),meaning(\"The act of writing a program\")])\n", + "dictionary.append([word(\"STL\"),meaning(\"Standard Template Library\")])\n", + "\n", + "#given a word, find meaning\n", + "print \"Enter word:\"\n", + "str=\"house\" #User input\n", + "\n", + "p=find(dictionary,word(str))\n", + "\n", + "if not(p==-1):\n", + " print \"Definition:\",p[1].get()\n", + "else:\n", + " print \"Word not in the dictionary.\"" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter word:\n", + "Definition: A place of dwelling\n" + ] + } + ], + "prompt_number": 14 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 21.13, Page Number:532<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "def isvowel(ch):\n", + " ch=ch.lower()\n", + " if (ch=='a' or ch=='e'or ch=='i' or ch=='o' or ch=='u'):\n", + " return 1\n", + " else:\n", + " return 0\n", + "\n", + "str=\"STL programming is powerful.\"\n", + "v=[]\n", + "\n", + "for i in range(len(str)):\n", + " v.append(str[i])\n", + " \n", + "print \"Sequence:\",\n", + "for i in range(len(v)):\n", + " print v[i],\n", + "print\n", + "\n", + "n=str.count('p')\n", + "print n,\"characters are p\"\n", + "\n", + "#count if vowel\n", + "n=0\n", + "for i in v:\n", + " if isvowel(i):\n", + " n+=1\n", + " \n", + "print n,\"characters are vowels.\"" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Sequence: S T L p r o g r a m m i n g i s p o w e r f u l .\n", + "2 characters are p\n", + "7 characters are vowels.\n" + ] + } + ], + "prompt_number": 15 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 21.14, Page Number:534<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "str=\"This is a test\"\n", + "v=[]\n", + "v2=[]\n", + "\n", + "for i in range(len(str)):\n", + " v.append(str[i])\n", + " \n", + "# ***implement remove_copy***\n", + "print \"Input sequence:\",\n", + "for i in range(len(v)):\n", + " print v[i],\n", + "print \n", + "\n", + "#Remove all i's\n", + "v2 = str.replace(\"i\", \"\")\n", + "\n", + "print \"Result after removing i's: \",\n", + "print v2,\"\\n\"\n", + "\n", + "\n", + "# ***implement replace_copy***\n", + "print \"Input sequence:\",\n", + "for i in range(len(v)):\n", + " print v[i],\n", + "print \n", + "\n", + "#Replace s's with X's\n", + "v2 = str.replace(\"s\", \"X\")\n", + "\n", + "print \"Result after replacning s's with X's: \",\n", + "print v2" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Input sequence: T h i s i s a t e s t\n", + "Result after removing i's: Ths s a test \n", + "\n", + "Input sequence: T h i s i s a t e s t\n", + "Result after replacning s's with X's: ThiX iX a teXt\n" + ] + } + ], + "prompt_number": 16 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 21.15, Page Number:535<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + " \n", + "v=[]\n", + "\n", + "for i in range(10):\n", + " v.append(i)\n", + " \n", + "print \"Initial:\",\n", + "for i in range(len(v)):\n", + " print v[i],\n", + "print\n", + "\n", + "#Reversing the list\n", + "v.reverse()\n", + "\n", + "print \"Reversed:\",\n", + "for i in range(len(v)):\n", + " print v[i],\n", + "print \n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Initial: 0 1 2 3 4 5 6 7 8 9\n", + "Reversed: 9 8 7 6 5 4 3 2 1 0\n" + ] + } + ], + "prompt_number": 17 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 21.16, Page Number:536<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + " \n", + "def xform(i):\n", + " return i*i #square original value\n", + "\n", + "#the transorm function\n", + "def transform(x,f):\n", + " for i in range(len(x)):\n", + " x[i]= f(x[i])\n", + " \n", + "#Variable declaration\n", + "x1=[]\n", + "\n", + "#put values into list\n", + "for i in range(10):\n", + " x1.append(i)\n", + "\n", + "print \"Original contents of x1: \",\n", + "for p in x1:\n", + " print p,\n", + "print \n", + "\n", + "#transform x1\n", + "p=transform(x1,xform)\n", + "\n", + "print \"Transformed contents of x1:\",\n", + "for p in x1:\n", + " print p," + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Original contents of x1: 0 1 2 3 4 5 6 7 8 9\n", + "Transformed contents of x1: 0 1 4 9 16 25 36 49 64 81\n" + ] + } + ], + "prompt_number": 18 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 21.17, Page Number:540<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "str1=\"The string class gives \"\n", + "str2=\"C++ high strng handlng.\"\n", + "\n", + "#assign a string\n", + "str3=str1\n", + "print str1,\"\\n\",str3\n", + "\n", + "#Concatenate two strings\n", + "str3=str1+str2\n", + "print str3\n", + "\n", + "#Compare strings\n", + "if str3>str1:\n", + " print \"str3 > str1\"\n", + "if str3==str1+str2:\n", + " print \"str3 == str1+str2\"\n", + " \n", + "str1=\"This is a null-terminated string.\"\n", + "print str1\n", + "\n", + "#create a string object using another string object\n", + "str4=str1\n", + "print str4\n", + "\n", + "#nput a string\n", + "print \"Enter a string:\"\n", + "str4=\"Hello\"\n", + "print str4" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The string class gives \n", + "The string class gives \n", + "The string class gives C++ high strng handlng.\n", + "str3 > str1\n", + "str3 == str1+str2\n", + "This is a null-terminated string.\n", + "This is a null-terminated string.\n", + "Enter a string:\n", + "Hello\n" + ] + } + ], + "prompt_number": 19 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 21.18, Page Number:542<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "str1=\"This is a test\"\n", + "str2=\"ABCDEFG\"\n", + "\n", + "print \"Initial strings:\"\n", + "print \"str1:\",str1\n", + "print \"str2:\",str2\n", + "print\n", + "\n", + "#demonstrate insert\n", + "print \"Insert str2 into str1:\"\n", + "str1=str1[:5]+str2+str1[5:]\n", + "print str1,\"\\n\"\n", + "\n", + "#demonstrate erase\n", + "print \"Remove 7 charecters from str1:\"\n", + "str1=str[:5]+str[5:]\n", + "print str1,\"\\n\"\n", + "\n", + "#demonstrate replace\n", + "print \"Replace 2 characters in str1 with str2:\"\n", + "str1=str1[:5]+str2+str1[7:]\n", + "print str1\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Initial strings:\n", + "str1: This is a test\n", + "str2: ABCDEFG\n", + "\n", + "Insert str2 into str1:\n", + "This ABCDEFGis a test \n", + "\n", + "Remove 7 charecters from str1:\n", + "This is a test \n", + "\n", + "Replace 2 characters in str1 with str2:\n", + "This ABCDEFG a test\n" + ] + } + ], + "prompt_number": 21 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 21.19, Page Number:543<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "import string\n", + "\n", + "#Variable declaration \n", + "s1=\"The string class makes string handling easy.\"\n", + "\n", + "i=string.find(s1,\"class\")\n", + "if not(i==-1):\n", + " print \"Match found at\",i\n", + " print \"Remaining string is:\",\n", + " s2=s1[i:]\n", + " print s2" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Match found at 11\n", + "Remaining string is: class makes string handling easy.\n" + ] + } + ], + "prompt_number": 22 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 21.20, Page Number:545<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + " \n", + "def find(x,ch):\n", + " for p in x:\n", + " if p[0]==ch:\n", + " return p\n", + " return -1\n", + "\n", + "\n", + "dictionary=[]\n", + "\n", + "dictionary.append([\"house\",\"A place of dwelling\"])\n", + "dictionary.append([\"keyboard\",\"An input device\"])\n", + "dictionary.append([\"programming\",\"The act of writing a program\"])\n", + "dictionary.append([\"STL\",\"Standard Template Library\"])\n", + "\n", + "#given a word, find meaning\n", + "print \"Enter word:\"\n", + "str=\"house\" #User input\n", + "\n", + "p=find(dictionary,str)\n", + "\n", + "if not(p==-1):\n", + " print \"Definition:\",p[1]\n", + "else:\n", + " print \"Word not in the dictionary.\"" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter word:\n", + "Definition: A place of dwelling\n" + ] + } + ], + "prompt_number": 23 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [], + "language": "python", + "metadata": {}, + "outputs": [] + } + ], + "metadata": {} + } + ] +}
\ No newline at end of file diff --git a/C++_from_the_Ground/Chapter_22.ipynb b/C++_from_the_Ground/Chapter_22.ipynb new file mode 100644 index 00000000..39b8cb88 --- /dev/null +++ b/C++_from_the_Ground/Chapter_22.ipynb @@ -0,0 +1,347 @@ +{ + "metadata": { + "name": "", + "signature": "sha256:2d1838d005f866ea4e20c93ff6de54ebfd0d0c26c2e3055fc05467a06502c1dc" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h1>Chapter 22: The C++ Preprocessor<h1>" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 22.1, Page Number: 550<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "def MIN(a,b):\n", + " if a<b:\n", + " return a\n", + " else:\n", + " return b\n", + "\n", + "#Variable declaration\n", + "x=10\n", + "y=20\n", + "\n", + "#Result\n", + "print \"The minimum is\",MIN(x,y)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The minimum is 10\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 22.2, Page Number: 551<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "def EVEN(a):\n", + " if a%2==0:\n", + " return 1\n", + " else:\n", + " return 0\n", + "\n", + "if EVEN(9+1):\n", + " print \"is even\"\n", + "else:\n", + " print \"is odd\"" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "is even\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 22.3, Page Number: 551<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "def EVEN(a):\n", + " if a%2==0:\n", + " return 1\n", + " else:\n", + " return 0\n", + "\n", + "if EVEN(9+1):\n", + " print \"is even\"\n", + "else:\n", + " print \"is odd\"" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "is even\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 22.4, Page Number: 553<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "def MAX():\n", + " return 100\n", + "\n", + "if MAX()>10:\n", + " print \"Extra memory required.\"\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Extra memory required.\n" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 22.5, Page Number: 554<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "def MAX():\n", + " return 6\n", + "\n", + "if MAX()>10:\n", + " print \"Extra memory required.\"\n", + "else:\n", + " print \"Current memory OK.\"\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Current memory OK.\n" + ] + } + ], + "prompt_number": 7 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 22.6, Page Number: 556<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "def TOM():\n", + " pass\n", + "\n", + "\n", + "try:\n", + " TOM()\n", + "except NameError:\n", + " print \"Programmer is unknown.\"\n", + "else:\n", + " print \"Programmer is Tom.\"\n", + " \n", + "try:\n", + " RALPH()\n", + "except NameError:\n", + " print \"RALPH not defined.\"\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Programmer is Tom.\n", + "RALPH not defined.\n" + ] + } + ], + "prompt_number": 8 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 22.7, Page Number: 558<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "import inspect\n", + " \n", + "def lineno():\n", + " return inspect.currentframe().f_back.f_lineno\n", + " \n", + "print lineno()+200\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "209\n" + ] + } + ], + "prompt_number": 9 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 22.8, Page Number: 559<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "def mkstr(s):\n", + " return str(s)\n", + "\n", + "#Result\n", + "print mkstr('I like C++')\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "I like C++\n" + ] + } + ], + "prompt_number": 10 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 22.9, Page Number: 560<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "def concat(a,b):\n", + " return a+b\n", + "#Variable declaration\n", + "xy=10\n", + "\n", + "#Result\n", + "exec(\"print %s\")%concat('x','y')" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "10\n" + ] + } + ], + "prompt_number": 11 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [], + "language": "python", + "metadata": {}, + "outputs": [] + } + ], + "metadata": {} + } + ] +}
\ No newline at end of file diff --git a/C++_from_the_Ground/Chapter_3.ipynb b/C++_from_the_Ground/Chapter_3.ipynb new file mode 100644 index 00000000..9d0cf326 --- /dev/null +++ b/C++_from_the_Ground/Chapter_3.ipynb @@ -0,0 +1,473 @@ +{ + "metadata": { + "name": "", + "signature": "sha256:13095677f4efa0909d9aeb25aa7b8b57bea864fd1d9a0a797f9e06000e52dc18" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h1>Chapter 3: The Basic Data Types<h1>" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 3.1, Page Number: 35<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "def func():\n", + " x=-199 #local to func\n", + " print x #displays -199 \n", + " \n", + "x=10 #local to main\n", + "\n", + "func()\n", + "print x #displays 10\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "-199\n", + "10\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 3.2, Page Number: 37<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "def func1():\n", + " global count\n", + " print \"count: \",count #access global count\n", + " func2()\n", + "\n", + "def func2():\n", + " for count in range(3): #this is local variable\n", + " print '.',\n", + "\n", + " \n", + "count=None #global variables\n", + "\n", + "for i in range(10):\n", + " count=i*2\n", + " func1()\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "count: 0\n", + ". . . count: 2\n", + ". . . count: 4\n", + ". . . count: 6\n", + ". . . count: 8\n", + ". . . count: 10\n", + ". . . count: 12\n", + ". . . count: 14\n", + ". . . count: 16\n", + ". . . count: 18\n", + ". . .\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 3.3, Page Number: 40<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "from ctypes import *\n", + "\n", + "#Variable declaration\n", + "j=c_uint(60000)\n", + "i=c_int(60000)\n", + "\n", + "#Result\n", + "print i.value,j.value" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "60000 60000\n" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 3.4, Page Number: 41<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "for letter in xrange(ord('Z'),ord('A')-1,-1):\n", + " print chr(letter),\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Z Y X W V U T S R Q P O N M L K J I H G F E D C B A\n" + ] + } + ], + "prompt_number": 8 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 3.5, Page Number: 44<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + " \n", + "print \"\\n\\\\\\b\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "\n", + "\\\b\n" + ] + } + ], + "prompt_number": 9 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 3.6, Page Number: 45<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "def total(x):\n", + " sum=0\n", + " for i in xrange(1,x+1):\n", + " sum=sum+i\n", + " for count in range(10):\n", + " print '-',\n", + " print \"The current sum is\",sum\n", + " \n", + "print \"Computing summation of 5.\"\n", + "total(5)\n", + "\n", + "print \"Computing summation of 6.\"\n", + "total(6)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Computing summation of 5.\n", + "- - - - - - - - - - The current sum is 1\n", + "- - - - - - - - - - The current sum is 3\n", + "- - - - - - - - - - The current sum is 6\n", + "- - - - - - - - - - The current sum is 10\n", + "- - - - - - - - - - The current sum is 15\n", + "Computing summation of 6.\n", + "- - - - - - - - - - The current sum is 1\n", + "- - - - - - - - - - The current sum is 3\n", + "- - - - - - - - - - The current sum is 6\n", + "- - - - - - - - - - The current sum is 10\n", + "- - - - - - - - - - The current sum is 15\n", + "- - - - - - - - - - The current sum is 21\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 3.7, Page Number: 47<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "#Variable declaration\n", + "x=10\n", + "y=3\n", + "\n", + "print x/y #will display 3\n", + "print x%y #will display1, the remainder\n", + "\n", + "x=1\n", + "y=2\n", + "\n", + "#Result\n", + "print x/y,x%y #will display 0 1" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "3\n", + "1\n", + "0 1\n" + ] + } + ], + "prompt_number": 11 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 3.8, Page Number: 51<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + " \n", + "def xor(a,b):\n", + " return (a or b)and(not(a and b))\n", + "\n", + "#User-input\n", + "print \"Enter P(0 or 1):\"\n", + "p=1 \n", + "print \"Enter Q(0 or 1):\"\n", + "q=0\n", + "\n", + "#Result\n", + "print \"P AND Q:\",(p and q)\n", + "print \"P OR Q:\",(p or q)\n", + "print \"P XOR Q:\",xor(p,q)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter P(0 or 1):\n", + "Enter Q(0 or 1):\n", + "P AND Q: 0\n", + "P OR Q: 1\n", + "P XOR Q: True\n" + ] + } + ], + "prompt_number": 12 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 3.9, Page Number: 54<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "for i in xrange(1,100+1):\n", + " print i,\"/ 2 is:\",float(i)/2\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "1 / 2 is: 0.5\n", + "2 / 2 is: 1.0\n", + "3 / 2 is: 1.5\n", + "4 / 2 is: 2.0\n", + "5 / 2 is: 2.5\n", + "6 / 2 is: 3.0\n", + "7 / 2 is: 3.5\n", + "8 / 2 is: 4.0\n", + "9 / 2 is: 4.5\n", + "10 / 2 is: 5.0\n", + "11 / 2 is: 5.5\n", + "12 / 2 is: 6.0\n", + "13 / 2 is: 6.5\n", + "14 / 2 is: 7.0\n", + "15 / 2 is: 7.5\n", + "16 / 2 is: 8.0\n", + "17 / 2 is: 8.5\n", + "18 / 2 is: 9.0\n", + "19 / 2 is: 9.5\n", + "20 / 2 is: 10.0\n", + "21 / 2 is: 10.5\n", + "22 / 2 is: 11.0\n", + "23 / 2 is: 11.5\n", + "24 / 2 is: 12.0\n", + "25 / 2 is: 12.5\n", + "26 / 2 is: 13.0\n", + "27 / 2 is: 13.5\n", + "28 / 2 is: 14.0\n", + "29 / 2 is: 14.5\n", + "30 / 2 is: 15.0\n", + "31 / 2 is: 15.5\n", + "32 / 2 is: 16.0\n", + "33 / 2 is: 16.5\n", + "34 / 2 is: 17.0\n", + "35 / 2 is: 17.5\n", + "36 / 2 is: 18.0\n", + "37 / 2 is: 18.5\n", + "38 / 2 is: 19.0\n", + "39 / 2 is: 19.5\n", + "40 / 2 is: 20.0\n", + "41 / 2 is: 20.5\n", + "42 / 2 is: 21.0\n", + "43 / 2 is: 21.5\n", + "44 / 2 is: 22.0\n", + "45 / 2 is: 22.5\n", + "46 / 2 is: 23.0\n", + "47 / 2 is: 23.5\n", + "48 / 2 is: 24.0\n", + "49 / 2 is: 24.5\n", + "50 / 2 is: 25.0\n", + "51 / 2 is: 25.5\n", + "52 / 2 is: 26.0\n", + "53 / 2 is: 26.5\n", + "54 / 2 is: 27.0\n", + "55 / 2 is: 27.5\n", + "56 / 2 is: 28.0\n", + "57 / 2 is: 28.5\n", + "58 / 2 is: 29.0\n", + "59 / 2 is: 29.5\n", + "60 / 2 is: 30.0\n", + "61 / 2 is: 30.5\n", + "62 / 2 is: 31.0\n", + "63 / 2 is: 31.5\n", + "64 / 2 is: 32.0\n", + "65 / 2 is: 32.5\n", + "66 / 2 is: 33.0\n", + "67 / 2 is: 33.5\n", + "68 / 2 is: 34.0\n", + "69 / 2 is: 34.5\n", + "70 / 2 is: 35.0\n", + "71 / 2 is: 35.5\n", + "72 / 2 is: 36.0\n", + "73 / 2 is: 36.5\n", + "74 / 2 is: 37.0\n", + "75 / 2 is: 37.5\n", + "76 / 2 is: 38.0\n", + "77 / 2 is: 38.5\n", + "78 / 2 is: 39.0\n", + "79 / 2 is: 39.5\n", + "80 / 2 is: 40.0\n", + "81 / 2 is: 40.5\n", + "82 / 2 is: 41.0\n", + "83 / 2 is: 41.5\n", + "84 / 2 is: 42.0\n", + "85 / 2 is: 42.5\n", + "86 / 2 is: 43.0\n", + "87 / 2 is: 43.5\n", + "88 / 2 is: 44.0\n", + "89 / 2 is: 44.5\n", + "90 / 2 is: 45.0\n", + "91 / 2 is: 45.5\n", + "92 / 2 is: 46.0\n", + "93 / 2 is: 46.5\n", + "94 / 2 is: 47.0\n", + "95 / 2 is: 47.5\n", + "96 / 2 is: 48.0\n", + "97 / 2 is: 48.5\n", + "98 / 2 is: 49.0\n", + "99 / 2 is: 49.5\n", + "100 / 2 is: 50.0\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [], + "language": "python", + "metadata": {}, + "outputs": [] + } + ], + "metadata": {} + } + ] +}
\ No newline at end of file diff --git a/C++_from_the_Ground/Chapter_4.ipynb b/C++_from_the_Ground/Chapter_4.ipynb new file mode 100644 index 00000000..ca8e76db --- /dev/null +++ b/C++_from_the_Ground/Chapter_4.ipynb @@ -0,0 +1,1340 @@ +{ + "metadata": { + "name": "", + "signature": "sha256:f944500666c92742656b5a25638e93a82042acafb19b205aac684e2d9ac2df51" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h1>Chapter 4: Program Control Statements<h1>" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 4.1, Page Number: 58<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "import random\n", + "\n", + "#Variable declaration and initialization\n", + "magic = random.randint(0,100) #Number which the user has to guess\n", + "guess = 10 #Number which the user guesses\n", + "\n", + "if guess == magic:\n", + " print \"***Right***\" #Result\n", + "\n", + "\n", + " \n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 10 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 4.2, Page Number: 59<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "\n", + "import random\n", + "\n", + "#Variable decleration and initialization\n", + "magic=random.randint(0,100) #Number to be guessed\n", + "guess = 10 #Number the user guesses\n", + "\n", + "#Result\n", + "if guess == magic:\n", + " print \"***Right***\"\n", + "else:\n", + " print \"... Sorry, you're wrong.\"\n", + "\n", + "\n", + "\n", + " \n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "... Sorry, you're wrong.\n" + ] + } + ], + "prompt_number": 8 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 4.3, Page Number: 60<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "#Variable decleration and initialization\n", + "a = 30 #User input for the two nos.\n", + "b = 10\n", + "\n", + "#Calculation and Result\n", + "if b:\n", + " print a/b\n", + "else:\n", + " print \"Cannot divide by zero.\"\n", + "\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "3\n" + ] + } + ], + "prompt_number": 11 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 4.4, Page Number: 61<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "\n", + "import random\n", + "\n", + "#Variable decleration \n", + "magic = random.randint(0,100) #Numbr to be guessed\n", + "guess = 10 #Number the user guesses\n", + "\n", + "#Result\n", + "if guess == magic:\n", + " print \"***Right***\"\n", + " print magic,\" is the magic number.\"\n", + "else:\n", + " print \"... Sorry, you're wrong\" \n", + " if(guess>magic): #use a nested if statement\n", + " print \"Your guess is too high\"\n", + " else:\n", + " print \"Your guess is too low\"\n", + "\n", + " \n", + " \n", + "\n", + " \n", + " \n" + ], + "language": "python", + "metadata": {}, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 4.5, Page Number: 62<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "\n", + "for x in range(6):\n", + " if x==1: #using if-else ladder in a for loop\n", + " print \"x is one\"\n", + " elif x==2:\n", + " print \"x is two\"\n", + " elif x==3:\n", + " print \"x is three\"\n", + " elif x==4:\n", + " print \"x is four\"\n", + " else:\n", + " print \"x is not between 1 nd 4\"\n", + " \n", + " \n", + " \n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "x is not between 1 nd 4\n", + "x is one\n", + "x is two\n", + "x is three\n", + "x is four\n", + "x is not between 1 nd 4\n" + ] + } + ], + "prompt_number": 13 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 4.6, Page Number: 63<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "import math\n", + "\n", + "for num in range(100):\n", + " sq_root = math.sqrt(float(num)) #Calculation\n", + " print num,\" \",sq_root #Result\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "0 0.0\n", + "1 1.0\n", + "2 1.41421356237\n", + "3 1.73205080757\n", + "4 2.0\n", + "5 2.2360679775\n", + "6 2.44948974278\n", + "7 2.64575131106\n", + "8 2.82842712475\n", + "9 3.0\n", + "10 3.16227766017\n", + "11 3.31662479036\n", + "12 3.46410161514\n", + "13 3.60555127546\n", + "14 3.74165738677\n", + "15 3.87298334621\n", + "16 4.0\n", + "17 4.12310562562\n", + "18 4.24264068712\n", + "19 4.35889894354\n", + "20 4.472135955\n", + "21 4.58257569496\n", + "22 4.69041575982\n", + "23 4.79583152331\n", + "24 4.89897948557\n", + "25 5.0\n", + "26 5.09901951359\n", + "27 5.19615242271\n", + "28 5.29150262213\n", + "29 5.38516480713\n", + "30 5.47722557505\n", + "31 5.56776436283\n", + "32 5.65685424949\n", + "33 5.74456264654\n", + "34 5.83095189485\n", + "35 5.9160797831\n", + "36 6.0\n", + "37 6.0827625303\n", + "38 6.16441400297\n", + "39 6.2449979984\n", + "40 6.32455532034\n", + "41 6.40312423743\n", + "42 6.48074069841\n", + "43 6.5574385243\n", + "44 6.63324958071\n", + "45 6.7082039325\n", + "46 6.78232998313\n", + "47 6.8556546004\n", + "48 6.92820323028\n", + "49 7.0\n", + "50 7.07106781187\n", + "51 7.14142842854\n", + "52 7.21110255093\n", + "53 7.28010988928\n", + "54 7.34846922835\n", + "55 7.4161984871\n", + "56 7.48331477355\n", + "57 7.54983443527\n", + "58 7.61577310586\n", + "59 7.68114574787\n", + "60 7.74596669241\n", + "61 7.81024967591\n", + "62 7.87400787401\n", + "63 7.93725393319\n", + "64 8.0\n", + "65 8.0622577483\n", + "66 8.12403840464\n", + "67 8.18535277187\n", + "68 8.24621125124\n", + "69 8.30662386292\n", + "70 8.36660026534\n", + "71 8.42614977318\n", + "72 8.48528137424\n", + "73 8.54400374532\n", + "74 8.60232526704\n", + "75 8.66025403784\n", + "76 8.71779788708\n", + "77 8.77496438739\n", + "78 8.83176086633\n", + "79 8.88819441732\n", + "80 8.94427191\n", + "81 9.0\n", + "82 9.05538513814\n", + "83 9.11043357914\n", + "84 9.16515138991\n", + "85 9.21954445729\n", + "86 9.2736184955\n", + "87 9.32737905309\n", + "88 9.38083151965\n", + "89 9.43398113206\n", + "90 9.48683298051\n", + "91 9.53939201417\n", + "92 9.59166304663\n", + "93 9.64365076099\n", + "94 9.69535971483\n", + "95 9.74679434481\n", + "96 9.79795897113\n", + "97 9.8488578018\n", + "98 9.89949493661\n", + "99 9.94987437107\n" + ] + } + ], + "prompt_number": 14 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 4.7, Page Number: 64<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "for i in xrange(100,-100,-5): \n", + " print i,\n", + " \n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "100 95 90 85 80 75 70 65 60 55 50 45 40 35 30 25 20 15 10 5 0 -5 -10 -15 -20 -25 -30 -35 -40 -45 -50 -55 -60 -65 -70 -75 -80 -85 -90 -95\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 4.8, Page Number: 66<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "\n", + "#Variable decleration\n", + "x=0\n", + "\n", + "#Loop till 123 is entered\n", + "while x!=123:\n", + " print \"Enter a number: \"\n", + " x = 123\n", + " \n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter a number: \n" + ] + } + ], + "prompt_number": 11 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 4.9, Page Number: 68<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + " \n", + "print \"Help on:\"\n", + "print \"1. for\"\n", + "print \"2. if\"\n", + "print \"3. while\"\n", + "\n", + "\n", + "choice = 2 #Choice of user\n", + "\n", + "if choice==1: #Executing users choice with if-else\n", + " print \"for is c++'s most versatile loop.\"\n", + "elif choice==2:\n", + " print \"if is c++'s conditional branch statement.\"\n", + "elif choice==3:\n", + " print \"switch is C++'s multiway branch statement. \"\n", + "else:\n", + " print \"You must enter a number between 1 and 3.\"\n", + " \n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Help on:\n", + "1. for\n", + "2. if\n", + "3. while\n", + "if is c++'s conditional branch statement.\n" + ] + } + ], + "prompt_number": 19 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 4.10, Page Number: 69<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "for i in range(5):\n", + " if i==0:\n", + " print \"less than 1\"\n", + " elif i==1:\n", + " print \"less than 2\"\n", + " elif i==2:\n", + " print \"less than 3\"\n", + " elif i==3:\n", + " print \"less than 4\"\n", + " elif i==4:\n", + " print \"less than 5\"\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "less than 1\n", + "less than 2\n", + "less than 3\n", + "less than 4\n", + "less than 5\n" + ] + } + ], + "prompt_number": 20 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 4.11, Page Number: 71<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + " \n", + "#Variable decleration\n", + "ch = 32\n", + "\n", + "#Loop to print the characters\n", + "for ch in range(128):\n", + " print chr(ch)\n", + " \n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "\u0000\n", + "\u0001\n", + "\u0002\n", + "\u0003\n", + "\u0004\n", + "\u0005\n", + "\u0006\n", + "\u0007\n", + "\b\n", + "\t\n", + "\n", + "\n", + "\u000b", + "\n", + "\f", + "\n", + "\r\n", + "\u000e\n", + "\u000f\n", + "\u0010\n", + "\u0011\n", + "\u0012\n", + "\u0013\n", + "\u0014\n", + "\u0015\n", + "\u0016\n", + "\u0017\n", + "\u0018\n", + "\u0019\n", + "\u001a\n", + "\u001b\n", + "\u001c", + "\n", + "\u001d", + "\n", + "\u001e", + "\n", + "\u001f\n", + " \n", + "!\n", + "\"\n", + "#\n", + "$\n", + "%\n", + "&\n", + "'\n", + "(\n", + ")\n", + "*\n", + "+\n", + ",\n", + "-\n", + ".\n", + "/\n", + "0\n", + "1\n", + "2\n", + "3\n", + "4\n", + "5\n", + "6\n", + "7\n", + "8\n", + "9\n", + ":\n", + ";\n", + "<\n", + "=\n", + ">\n", + "?\n", + "@\n", + "A\n", + "B\n", + "C\n", + "D\n", + "E\n", + "F\n", + "G\n", + "H\n", + "I\n", + "J\n", + "K\n", + "L\n", + "M\n", + "N\n", + "O\n", + "P\n", + "Q\n", + "R\n", + "S\n", + "T\n", + "U\n", + "V\n", + "W\n", + "X\n", + "Y\n", + "Z\n", + "[\n", + "\\\n", + "]\n", + "^\n", + "_\n", + "`\n", + "a\n", + "b\n", + "c\n", + "d\n", + "e\n", + "f\n", + "g\n", + "h\n", + "i\n", + "j\n", + "k\n", + "l\n", + "m\n", + "n\n", + "o\n", + "p\n", + "q\n", + "r\n", + "s\n", + "t\n", + "u\n", + "v\n", + "w\n", + "x\n", + "y\n", + "z\n", + "{\n", + "|\n", + "}\n", + "~\n", + "\u007f\n" + ] + } + ], + "prompt_number": 21 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 4.12, Page Number: 72<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "#Variable decleration\n", + "len = 5\n", + "\n", + "while (len>0 & len<80):\n", + " print \".\"\n", + " len-=1\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + ".\n", + ".\n", + ".\n", + ".\n", + ".\n" + ] + } + ], + "prompt_number": 22 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 4.13, Page Number: 73<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "#Variable Declaration\n", + "num=95\n", + "\n", + "while True:\n", + " print \"Enter a number(100 to stop): \"\n", + " num+=1 #User input, incrementing num till it reaches 100\n", + " if(num==100): #Condition check to stop loop\n", + " break\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter a number(100 to stop): \n", + "Enter a number(100 to stop): \n", + "Enter a number(100 to stop): \n", + "Enter a number(100 to stop): \n", + "Enter a number(100 to stop): \n" + ] + } + ], + "prompt_number": 9 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 4.14, Page Number: 73<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "import random\n", + "\n", + "#Variable decleration\n", + "magic = random.randint(0,100) #Number which the user has to guess\n", + "low=0\n", + "high=100\n", + "\n", + "#Play thr magic number game\n", + "while True:\n", + " guess = random.randint(low,high) #Number which the user guesses\n", + " if guess==magic: \n", + " print \"**Right**\"\n", + " print magic,\" is the magic number.\"\n", + " break\n", + " else:\n", + " print \"...Sorry, you're wrong.\"\n", + " if(guess>magic):\n", + " print \"Your guess is too high.\"\n", + " high=guess\n", + " else:\n", + " print \"Your guess is too low.\"\n", + " low=guess\n", + " \n", + " \n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "...Sorry, you're wrong.\n", + "Your guess is too low.\n", + "...Sorry, you're wrong.\n", + "Your guess is too high.\n", + "...Sorry, you're wrong.\n", + "Your guess is too low.\n", + "...Sorry, you're wrong.\n", + "Your guess is too high.\n", + "...Sorry, you're wrong.\n", + "Your guess is too low.\n", + "...Sorry, you're wrong.\n", + "Your guess is too high.\n", + "...Sorry, you're wrong.\n", + "Your guess is too low.\n", + "...Sorry, you're wrong.\n", + "Your guess is too high.\n", + "...Sorry, you're wrong.\n", + "Your guess is too low.\n", + "...Sorry, you're wrong.\n", + "Your guess is too low.\n", + "...Sorry, you're wrong.\n", + "Your guess is too high.\n", + "...Sorry, you're wrong.\n", + "Your guess is too high.\n", + "...Sorry, you're wrong.\n", + "Your guess is too high.\n", + "...Sorry, you're wrong.\n", + "Your guess is too low.\n", + "**Right**\n", + "72 is the magic number.\n" + ] + } + ], + "prompt_number": 26 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 4.15, Page Number: 74<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "for x in range(100+1):\n", + " if x%2: #Condition check to continue the loop\n", + " continue\n", + " print x,\n", + " \n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 98 100\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 4.16, Page Number: 75<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "for t in range(100):\n", + " if t==10: #Condition check to break out of the loop\n", + " break\n", + " print t,\n", + " \n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "0 1 2 3 4 5 6 7 8 9\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 4.17, Page Number: 75<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "for t in range(100):\n", + " count = 1 \n", + " while True:\n", + " print count,\n", + " count+=1\n", + " if count==10: \n", + " break #Breaks from the inner loop\n", + " print\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n", + "1 2 3 4 5 6 7 8 9\n" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 4.18, Page Number: 76<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "for i in range(2,1000):\n", + " j=2\n", + " for j in range(2,i/j): #Nested for loop\n", + " if i%j == False: #Check for prime no.\n", + " break\n", + " if j>(i/j):\n", + " print i,\" is prime.\" #Result\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "2 is prime.\n", + "3 is prime.\n", + "11 is prime.\n", + "13 is prime.\n", + "17 is prime.\n", + "19 is prime.\n", + "23 is prime.\n", + "29 is prime.\n", + "31 is prime.\n", + "37 is prime.\n", + "41 is prime.\n", + "43 is prime.\n", + "47 is prime.\n", + "53 is prime.\n", + "59 is prime.\n", + "61 is prime.\n", + "67 is prime.\n", + "71 is prime.\n", + "73 is prime.\n", + "79 is prime.\n", + "83 is prime.\n", + "89 is prime.\n", + "97 is prime.\n", + "101 is prime.\n", + "103 is prime.\n", + "107 is prime.\n", + "109 is prime.\n", + "113 is prime.\n", + "127 is prime.\n", + "131 is prime.\n", + "137 is prime.\n", + "139 is prime.\n", + "149 is prime.\n", + "151 is prime.\n", + "157 is prime.\n", + "163 is prime.\n", + "167 is prime.\n", + "173 is prime.\n", + "179 is prime.\n", + "181 is prime.\n", + "191 is prime.\n", + "193 is prime.\n", + "197 is prime.\n", + "199 is prime.\n", + "211 is prime.\n", + "223 is prime.\n", + "227 is prime.\n", + "229 is prime.\n", + "233 is prime.\n", + "239 is prime.\n", + "241 is prime.\n", + "251 is prime.\n", + "257 is prime.\n", + "263 is prime.\n", + "269 is prime.\n", + "271 is prime.\n", + "277 is prime.\n", + "281 is prime.\n", + "283 is prime.\n", + "293 is prime.\n", + "307 is prime.\n", + "311 is prime.\n", + "313 is prime.\n", + "317 is prime.\n", + "331 is prime.\n", + "337 is prime.\n", + "347 is prime.\n", + "349 is prime.\n", + "353 is prime.\n", + "359 is prime.\n", + "367 is prime.\n", + "373 is prime.\n", + "379 is prime.\n", + "383 is prime.\n", + "389 is prime.\n", + "397 is prime.\n", + "401 is prime.\n", + "409 is prime.\n", + "419 is prime.\n", + "421 is prime.\n", + "431 is prime.\n", + "433 is prime.\n", + "439 is prime.\n", + "443 is prime.\n", + "449 is prime.\n", + "457 is prime.\n", + "461 is prime.\n", + "463 is prime.\n", + "467 is prime.\n", + "479 is prime.\n", + "487 is prime.\n", + "491 is prime.\n", + "499 is prime.\n", + "503 is prime.\n", + "509 is prime.\n", + "521 is prime.\n", + "523 is prime.\n", + "541 is prime.\n", + "547 is prime.\n", + "557 is prime.\n", + "563 is prime.\n", + "569 is prime.\n", + "571 is prime.\n", + "577 is prime.\n", + "587 is prime.\n", + "593 is prime.\n", + "599 is prime.\n", + "601 is prime.\n", + "607 is prime.\n", + "613 is prime.\n", + "617 is prime.\n", + "619 is prime.\n", + "631 is prime.\n", + "641 is prime.\n", + "643 is prime.\n", + "647 is prime.\n", + "653 is prime.\n", + "659 is prime.\n", + "661 is prime.\n", + "673 is prime.\n", + "677 is prime.\n", + "683 is prime.\n", + "691 is prime.\n", + "701 is prime.\n", + "709 is prime.\n", + "719 is prime.\n", + "727 is prime.\n", + "733 is prime.\n", + "739 is prime.\n", + "743 is prime.\n", + "751 is prime.\n", + "757 is prime.\n", + "761 is prime.\n", + "769 is prime.\n", + "773 is prime.\n", + "787 is prime.\n", + "797 is prime.\n", + "809 is prime.\n", + "811 is prime.\n", + "821 is prime.\n", + "823 is prime.\n", + "827 is prime.\n", + "829 is prime.\n", + "839 is prime.\n", + "853 is prime.\n", + "857 is prime.\n", + "859 is prime.\n", + "863 is prime.\n", + "877" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " is prime.\n", + "881 is prime.\n", + "883 is prime.\n", + "887 is prime.\n", + "907 is prime.\n", + "911 is prime.\n", + "919 is prime.\n", + "929 is prime.\n", + "937 is prime.\n", + "941 is prime.\n", + "947 is prime.\n", + "953 is prime.\n", + "967 is prime.\n", + "971 is prime.\n", + "977 is prime.\n", + "983 is prime.\n", + "991 is prime.\n", + "997 is prime.\n" + ] + } + ], + "prompt_number": 30 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 4.19, Page Number: 78<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "import random\n", + "\n", + "#Variable declaration\n", + "magic = random.randint(0,100) #Number to be guessed\n", + "i=1\n", + "high=100\n", + "low=0\n", + "\n", + "#Function to play the magic number game\n", + "def play(m):\n", + " low=0\n", + " high=100\n", + " for t in range(100):\n", + " x = random.randint(low,high) #Number guessed by the user\n", + " if x==m:\n", + " print \"***Right***\"\n", + " return\n", + " else:\n", + " if(x<m):\n", + " print \"Too low.\"\n", + " low=x\n", + " else:\n", + " print \"Too high.\"\n", + " high=x\n", + " print \"You've used up all your guesses\" \n", + "\n", + "#Menu\n", + "while True:\n", + " print \"1.Get a new magic number.\" \n", + " print \"2.Play\"\n", + " print \"3.Quit\"\n", + " while True:\n", + " option = i \n", + " if option>=1 and option<=3:\n", + " break\n", + " if option==1:\n", + " magic=random.randint(0,100) #Number to be guessed\n", + " elif option==2:\n", + " play(magic) #Calls the function play\n", + " elif option==3:\n", + " print \"Goodbye\" \n", + " break\n", + " i+=1 #increments i such that the 3 options get selected sequentially\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "1.Get a new magic number.\n", + "2.Play\n", + "3.Quit\n", + "1.Get a new magic number.\n", + "2.Play\n", + "3.Quit\n", + "Too low.\n", + "Too low.\n", + "Too low.\n", + "Too low.\n", + "Too high.\n", + "Too low.\n", + "Too high.\n", + "Too low.\n", + "Too high.\n", + "Too high.\n", + "Too high.\n", + "Too high.\n", + "Too low.\n", + "***Right***\n", + "1.Get a new magic number.\n", + "2.Play\n", + "3.Quit\n", + "Goodbye\n" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [], + "language": "python", + "metadata": {}, + "outputs": [] + } + ], + "metadata": {} + } + ] +}
\ No newline at end of file diff --git a/C++_from_the_Ground/Chapter_5.ipynb b/C++_from_the_Ground/Chapter_5.ipynb new file mode 100644 index 00000000..13085f5e --- /dev/null +++ b/C++_from_the_Ground/Chapter_5.ipynb @@ -0,0 +1,1191 @@ +{ + "metadata": { + "name": "", + "signature": "sha256:f41d93d043c68dcb6af847a40af38d47fc3a3d45c60675afb574707e38d804d9" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h1>Chapter 5: Arrays ans Strings<h1>" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 5.1, Page Number: 82<h3>\n", + " " + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "#Variable declaration\n", + "sample = range(10) #Declares an array [0,1,2,3,4,5,6,7,8,9]\n", + "\n", + "#Displays the array\n", + "for t in range(10):\n", + " print sample[t],\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "0 1 2 3 4 5 6 7 8 9\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 5.2, Page Number: 83<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "import random\n", + "\n", + "#Variable declaration\n", + "list = [] #List of integers\n", + "\n", + "for i in range(10):\n", + " list.append(random.randint(0,1000)) #randomely assigning integers\n", + " \n", + "#Finding the minimum value\n", + "min_value = list[0]\n", + "\n", + "for i in range(10):\n", + " if min_value>list[i]:\n", + " min_value=list[i]\n", + "print \"minimum value: \",min_value #Result:Minimum value\n", + "\n", + "#Finding maximum value\n", + "max_value = list[0]\n", + "\n", + "for i in range(10):\n", + " if max_value<list[i]:\n", + " max_value=list[i]\n", + "print \"maximum value: \",max_value #Result:Maximum value\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "minimum value: 192\n", + "maximum value: 684\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 5.3, Page Number: 85<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "\n", + "import random\n", + "\n", + "#Variable declaration\n", + "nums = []\n", + "size = 10\n", + "\n", + "#Initializing list with random numbers\n", + "for t in range(size):\n", + " nums.append(random.randint(0,1000))\n", + "\n", + "#Displays original array\n", + "print \"Original array is: \"\n", + "print nums\n", + "\n", + "#Bubble Sort\n", + "for a in range(size):\n", + " for b in xrange(size-1,a,-1):\n", + " if nums[b-1]>nums[b]:\n", + " t=nums[b-1]\n", + " nums[b-1]=nums[b]\n", + " nums[b] = t\n", + "\n", + "#Display sorted array\n", + "print \"Sorted array is: \"\n", + "print nums\n", + "\n", + " \n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Original array is: \n", + "[388, 661, 218, 595, 167, 46, 704, 140, 559, 428]\n", + "Sorted array is: \n", + "[46, 140, 167, 218, 388, 428, 559, 595, 661, 704]\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 5.4, Page Number: 87<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "#Variable decleration\n", + "str = \"Hello\"\n", + "\n", + "#Result\n", + "print \"Here is your string:\",\n", + "print str\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Here is your string: Hello\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 5.5, Page Number: 88<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "\n", + "print \"Enter a string: \"\n", + "\n", + " \n", + "str = \"Hello\"\n", + "\n", + "#Result\n", + "print \"Here is your string:\",\n", + "print str\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter a string: \n", + "Here is your string: Hello\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 5.6, Page Number: 89<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "#Variable decleration\n", + "s=str\n", + "str = s #copying s into str\n", + "\n", + "#Result\n", + "print str\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Hello\n" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 5.7, Page Number: 89<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "#Variable decleration\n", + "s1 = \"Hello\"\n", + "s2 = \" There\"\n", + "\n", + "#Concatenation\n", + "s1+=s2\n", + "\n", + "#Result\n", + "print s1\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Hello There\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 5.8, Page Number: 90<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "def password():\n", + " print \"Enter password: \" #User input for password\n", + " s= \"pass\"\n", + " if s==\"password\":\n", + " return True\n", + " else:\n", + " print \"Invalid password.\"\n", + " return False\n", + "\n", + "#Result\n", + "if password() :\n", + " print \"Logged On.\"\n", + "else:\n", + " print \"Access denied\"\n", + " \n", + " \n", + " \n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter password: \n", + "Invalid password.\n", + "Access denied\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 5.9, Page Number: 91<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import string\n", + "\n", + " s=raw_input(\"Enter a string: \") #User input of string;\n", + " if s==\"quit\": #Sting comparison\n", + " break\n", + " \n", + " \n", + "\n", + " \n", + " \n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter a string: ddc\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter a string: hello\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter a string: quit\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 5.10, Page Number: 91<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "#Variable declaration\n", + "str = \"Hello\"\n", + "\n", + "#Result\n", + "print \"Length is: \",len(str)\n", + " \n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Length is: 5\n" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 5.11, Page Number: 92<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "str = \"Hello World\"\n", + "\n", + "#Reversing a String\n", + "rev = str[::-1]\n", + "\n", + "#Result\n", + "print rev\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "dlroW olleH\n" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 5.12, Page Number: 92<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "s1 = \"Hello\"\n", + "s2 = \"there\"\n", + "\n", + "#Printing lengths\n", + "print \"lengths: \",len(s1),' ',len(s2)\n", + "\n", + "#Comparing\n", + "if(s1==s2):\n", + " print \"The strings are equal\"\n", + "else:\n", + " print \"not equal\"\n", + "\n", + "#Concatenation\n", + "s1+=s2\n", + "print s1\n", + "\n", + "\n", + "#Copying\n", + "s1=s2\n", + "\n", + "#Result\n", + "print s1,\"and\",s2,\" are now the same\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "lengths: 5 5\n", + "not equal\n", + "Hellothere\n", + "there and there are now the same\n" + ] + } + ], + "prompt_number": 9 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 5.13, Page Number: 93<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "import string\n", + "\n", + "#Variable Initialization\n", + "str= \"this is a test\"\n", + "\n", + "str=string.upper(str)\n", + "\n", + "#Result\n", + "print str\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "THIS IS A TEST\n" + ] + } + ], + "prompt_number": 12 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 5.14, Page Number: 94<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "arr=[] #The 2-D list\n", + "new=[] #The nested list\n", + "\n", + "#Initializing the 2-D array\n", + "for i in range(3):\n", + " new=[]\n", + " for j in range(4):\n", + " new.append(i*4+j+1)\n", + " arr.append(new)\n", + "\n", + "#Result\n", + "for i in range(3):\n", + " for j in range(4):\n", + " print arr[i][j],\n", + " print" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "1 2 3 4\n", + "5 6 7 8\n", + "9 10 11 12\n" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 5.15, Page Number: 98<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "#Variabe Initialzation\n", + "sqrs= [[1,1],[2,4],[3,9],[4,16],[5,25],\n", + " [6,36],[7,49],[8,64],[9,81],[10,100]] #Array storing the squares\n", + "i=6 #User input of number whose square is to be looked up\n", + "\n", + "#Search for the number\n", + "for j in range(10):\n", + " if sqrs[j][0]==i:\n", + " break\n", + " \n", + "#Result\n", + "print \"The square of \",i,\" is \", sqrs[j][1]" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The square of 6 is 36\n" + ] + } + ], + "prompt_number": 15 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 5.16, Page Number: 99<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "def f1():\n", + " s=\"this is a test\" #initial s\n", + " print s\n", + " s=\"CHANGED\" #s is now changed \n", + " print s\n", + "\n", + "#Calling the function twice\n", + "f1()\n", + "f1()" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "this is a test\n", + "CHANGED\n", + "this is a test\n", + "CHANGED\n" + ] + } + ], + "prompt_number": 17 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 5.17, Page Number: 101<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "#Variable decleration\n", + "text=[]\n", + "str=['eat','play','work'] #user input of strings\n", + "p=len(str)\n", + "\n", + "for t in range(p):\n", + " print t,\":\"\n", + " text.append(str[t]) #Here, user input taken from the list\n", + " \n", + "#Result; redisplay the strings\n", + "for i in range(p):\n", + " print text[i]\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "0 :\n", + "1 :\n", + "2 :\n", + "eat\n", + "play\n", + "work\n" + ] + } + ], + "prompt_number": 18 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 5.18, Page Number: 103<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "import random \n", + "\n", + "#Variable decleration\n", + "name=[] #this list holds employee names\n", + "wage=[] #their phone numbers\n", + "phone=[] #hours worked per week\n", + "hours=[] #wage\n", + "num=0 #User choice\n", + "\n", + "#Menu \n", + "def menu():\n", + " global num #All options are chosen one by one\n", + " print \"0.Quit.\"\n", + " print \"1.Enter information\"\n", + " print \"2.Report information\"\n", + " print \"Choose one: \"\n", + " num=int(input())\n", + " return num #Return users selction\n", + "\n", + "#Enter information\n", + "def enter():\n", + " for i in range(10):\n", + " n=raw_input(\"Enter your name: \")\n", + " name.append(n)\n", + " phone.append(int(input(\"Enter your phone number\")))\n", + " hours.append(int(input(\"Enter number of hours worked: \")))\n", + " wage.append(int(input(\"Enter wage: \")))\n", + "\n", + "#Display report\n", + "def report():\n", + " p=len(name)\n", + " for i in range(p):\n", + " print name[i],' ',phone[i]\n", + " print \"Pay for the week: \",wage[i]*hours[i]\n", + "\n", + "\n", + "while True:\n", + " ch=menu() #get selection\n", + " if ch==0:\n", + " break\n", + " elif ch==1:\n", + " enter()\n", + " elif ch==2:\n", + " report()\n", + " else:\n", + " print \"Try again.\"\n", + " if ch==0:\n", + " break\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "0.Quit.\n", + "1.Enter information\n", + "2.Report information\n", + "Choose one: \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "1\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter your name: Anny\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter your phone number987654321\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter number of hours worked: 10\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter wage: 50\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter your name: Billy\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter your phone number9456783652\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter number of hours worked: 10\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter wage: 50\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter your name: Catherene\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter your phone number9476836578\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter number of hours worked: 10\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter wage: 50\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter your name: Dolly\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter your phone number9831356748\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter number of hours worked: 15\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter wage: 50\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter your name: Emily\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter your phone number9576843721\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter number of hours worked: 15\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter wage: 40\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter your name: Jack\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter your phone number9485738567\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter number of hours worked: 10\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter wage: 45\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter your name: Kevin\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter your phone number9345678923\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter number of hours worked: 10\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter wage: 45\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter your name: Lily\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter your phone number9345672831\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter number of hours worked: 10\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter wage: 45\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter your name: Monica\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter your phone number9475867483\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter number of hours worked: 10\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter wage: 50\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter your name: Irene\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter your phone number5674356776\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter number of hours worked: 10\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter wage: 20\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "0.Quit.\n", + "1.Enter information\n", + "2.Report information\n", + "Choose one: \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "2\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Anny 987654321\n", + "Pay for the week: 500\n", + "Billy 9456783652\n", + "Pay for the week: 500\n", + "Catherene 9476836578\n", + "Pay for the week: 500\n", + "Dolly 9831356748\n", + "Pay for the week: 750\n", + "Emily 9576843721\n", + "Pay for the week: 600\n", + "Jack 9485738567\n", + "Pay for the week: 450\n", + "Kevin 9345678923\n", + "Pay for the week: 450\n", + "Lily 9345672831\n", + "Pay for the week: 450\n", + "Monica 9475867483\n", + "Pay for the week: 500\n", + "Irene 5674356776\n", + "Pay for the week: 200\n", + "0.Quit.\n", + "1.Enter information\n", + "2.Report information\n", + "Choose one: \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "0\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [], + "language": "python", + "metadata": {}, + "outputs": [] + } + ], + "metadata": {} + } + ] +}
\ No newline at end of file diff --git a/C++_from_the_Ground/Chapter_6.ipynb b/C++_from_the_Ground/Chapter_6.ipynb new file mode 100644 index 00000000..5010922a --- /dev/null +++ b/C++_from_the_Ground/Chapter_6.ipynb @@ -0,0 +1,558 @@ +{ + "metadata": { + "name": "", + "signature": "sha256:b382733cd221154cfe7c9ffe63477448084168d501d248c2b1d0c253ed011821" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h1>Chapter 6: Pointers<h1>" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 6.1, Page Number: 107<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "from ctypes import *\n", + "\n", + "balance =c_int(3200) #int variable\n", + "balptr=pointer(balance) #pointer to int\n", + "value=balptr[0] #accessing the value using the pointer\n", + "\n", + "#Result\n", + "print \"balance: \",value \n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "balance: 3200\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 6.2, Page Number: 109<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "#Variable declaration\n", + "x=123.23\n", + "y=c_double()\n", + "p=POINTER(c_int)\n", + "\n", + "p=pointer(c_int(int(x))) #type case double to int\n", + "y=p[0]\n", + "\n", + "#Result\n", + "print y" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "123\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 6.3, Page Number: 110<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "from ctypes import *\n", + "\n", + "#Variable declaration\n", + "num=c_int() #declaring int\n", + "p=pointer(num) #pointer to int\n", + "\n", + "p[0]=100\n", + "print num.value,\n", + "p[0]+=1\n", + "print num.value,\n", + "p[0]-=1\n", + "print num.value" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "100 101 100\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 6.4, Page Number: 111<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "from ctypes import *\n", + "\n", + "#Variable declaration\n", + "j=c_int()\n", + "g=c_double()\n", + "i=pointer(j)\n", + "f=pointer(g)\n", + "\n", + "\n", + "for x in range(10):\n", + " print addressof(i.contents)+x,addressof(f.contents)+x\n", + " \n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "84638480 84639248\n", + "84638481 84639249\n", + "84638482 84639250\n", + "84638483 84639251\n", + "84638484 84639252\n", + "84638485 84639253\n", + "84638486 84639254\n", + "84638487 84639255\n", + "84638488 84639256\n", + "84638489 84639257\n" + ] + } + ], + "prompt_number": 10 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 6.5, Page Number: 114<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "from ctypes import *\n", + "\n", + "#Variable declaration\n", + "str=\"This is a test\"\n", + "token =\"\"\n", + "i=0\n", + "\n", + "#Read a token at a time from the string\n", + "while i<len(str):\n", + " token=c_char_p(\"\") #set token to null string\n", + " q=pointer(token) \n", + " #Read characters until either a space or the null terminator is encountered'''\n", + " while i<len(str) and not(str[i]==\" \"):\n", + " q[0]+=str[i]\n", + " i+=1\n", + " i+=1 #advance past the space\n", + " print q[0]" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "This\n", + "is\n", + "a\n", + "test\n" + ] + } + ], + "prompt_number": 12 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 6.6, Page Number: 115<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "#Variable declaration\n", + "str=\"This is a test\"\n", + "i=0\n", + "\n", + "#Read a token at a time from the string\n", + "while i<len(str):\n", + " token=\"\" #set q to null string\n", + " #Read characters until either a space or the null terminator is encountered'''\n", + " while i<len(str) and not(str[i]==\" \"):\n", + " token+=str[i]\n", + " i+=1\n", + " i+=1 #advance past the space\n", + " print token" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "This\n", + "is\n", + "a\n", + "test\n" + ] + } + ], + "prompt_number": 14 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 6.7, Page Number: 115<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "import string\n", + "\n", + "str=c_char_p(\"hello tom\")\n", + "q=\"\"\n", + "p=pointer(str) #put address of str into p\n", + " \n", + "p[0]=string.upper(p[0])\n", + "\n", + "#Result\n", + "print p[0]" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "HELLO TOM\n" + ] + } + ], + "prompt_number": 15 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 6.8, Page Number: 117<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "#Varible declaration\n", + "s=\"Pointers are fun to use\"\n", + "\n", + "#Result\n", + "print s\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Pointers are fun to use\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 6.9, Page Number: 118<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "from ctypes import *\n", + "\n", + "#Variable declaration\n", + "num=[]\n", + "\n", + "#User input\n", + "for i in range(10):\n", + " num.append(i)\n", + " \n", + "start=num #set start to the starting pointer \n", + "for i in range(10):\n", + " print start[i],\n", + " \n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "0 1 2 3 4 5 6 7 8 9\n" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 6.10, Page Number: 119<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "import random\n", + "\n", + "fortunes=[\"Soon, you will come into some money.\",\n", + " \"A new love will enter your lifr. \",\n", + " \"You will live long and prosper.\",\n", + " \"Now is a good time to invest for the future.\",\n", + " \"A close friend will ask for a favour.\"]\n", + "\n", + "print \"To see your fortune, press a key: \"\n", + "\n", + "#Randomize the random number generator\n", + "chance=random.randint(0,100)\n", + "chance=chance%5\n", + "\n", + "#Result\n", + "print fortunes[chance]" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "To see your fortune, press a key: \n", + "A close friend will ask for a favour.\n" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 6.11, Page Number: 120<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "keyword=[[\"for\",\"for(initialization; condition; increment\"],\n", + " [\"if\",\"if(condition) ... else ...\"],\n", + " [\"switch\",\"switch(value) { case-list }\"],\n", + " [\"while\",\"while(condition) ...\"],\n", + " [\"\",\"\"]] #Terminates the list with nulls\n", + " \n", + "#User input \n", + "print \"Enter keyword: \"\n", + "str=\"for\" \n", + "\n", + "for i in range(4):\n", + " if str==keyword[i][0]:\n", + " print keyword[i][1]\n", + " \n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter keyword: \n", + "for(initialization; condition; increment\n" + ] + } + ], + "prompt_number": 7 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 6.12, Page Number: 123<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "from ctypes import *\n", + "\n", + "#Variable declaration\n", + "x=c_int(10) #int variable\n", + "p=pointer(x) #pointer to int\n", + "q=pointer(p) #pointer to a pointer\n", + "\n", + "#Result\n", + "print q[0][0] #accessing the value using a pointer to a pointer\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "10\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 6.13, Page Number: 126<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "from ctypes import *\n", + "\n", + "#Variable declaration\n", + "s=c_char_p()\n", + "p1=pointer(s)\n", + "x=0\n", + "\n", + "while True:\n", + " print \"\\nEnter a string: \",\n", + " if x==2:\n", + " p1[0]=c_char_p(\"done\")\n", + " else:\n", + " p1[0]=c_char_p(\"Hello\")\n", + " #print the ASCII values of each characcter\n", + " for i in range(0,len(p1[0])):\n", + " print ord(p1[0][i]),\n", + " x+=1\n", + " if p1[0]==\"done\":\n", + " break\n", + " \n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "\n", + "Enter a string: 72 101 108 108 111 \n", + "Enter a string: 72 101 108 108 111 \n", + "Enter a string: 100 111 110 101\n" + ] + } + ], + "prompt_number": 9 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [], + "language": "python", + "metadata": {}, + "outputs": [] + } + ], + "metadata": {} + } + ] +}
\ No newline at end of file diff --git a/C++_from_the_Ground/Chapter_7.ipynb b/C++_from_the_Ground/Chapter_7.ipynb new file mode 100644 index 00000000..027b30f5 --- /dev/null +++ b/C++_from_the_Ground/Chapter_7.ipynb @@ -0,0 +1,908 @@ +{ + "metadata": { + "name": "", + "signature": "sha256:ab47bb393809bc88589e7e92320813b90077813594dc417229af49780e24b53b" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h1>Chapter 7: Functions,Part One: The Fundamentals<h1>" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 7.1, Page Number: 129<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "def f1():\n", + " print \"Enter something: \"\n", + " str= \"Hello\" #User-input\n", + " print str\n", + " \n", + "#Variable decleration\n", + "str=\"This is str in main\"\n", + "\n", + "print str\n", + "f1() #function call\n", + "print str" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "This is str in main\n", + "Enter something: \n", + "Hello\n", + "This is str in main\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 7.2, Page Number: 130<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "#Variable decleration\n", + "choice=0\n", + "\n", + "print \"(1) add numbers or (2) concatenate strings?: \"\n", + "choice=2 #User Input taken as 2\n", + "\n", + "if choice==1:\n", + " print \"Enter two numbers: \"\n", + " a=5 #Variable decleration; User Input\n", + " b=7\n", + " print a+b #Result\n", + "else :\n", + " print \"Enter two strings: \"\n", + " s1=\"Hello\" #Variable decleration; User Input\n", + " s2=\"World\"\n", + " s1+=s2 #Concatenation\n", + " print s1 #Result" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "(1) add numbers or (2) concatenate strings?: \n", + "Enter two strings: \n", + "HelloWorld\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 7.3, Page Number: 131<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "#Variable decleration\n", + "i=10\n", + "j=100\n", + "\n", + "if j>0:\n", + " i=None \n", + " i= j/2\n", + " print \"inner i: \",i #Result\n", + "\n", + "print \"outer i: \",i #Result" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "inner i: 50\n", + "outer i: 50\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 7.4, Page Number: 132<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "a=5 #Variable decleration; user input\n", + "\n", + "b=10 #declaration of another variable; user input\n", + "\n", + "#Result\n", + "print \"Product: \",a*b" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Product: 50\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 7.5, Page Number: 134<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "import random\n", + "\n", + "#Variable decleration\n", + "count=None\n", + "num_right=0\n", + "\n", + "#Function for the drill\n", + "def drill():\n", + " #Generate two numbers between 0 and 99.\n", + " a=random.randint(0,99)\n", + " b=random.randint(0,99)\n", + " #The user gets three tries to get it right.\n", + " for count in range(3):\n", + " print \"What is \",a,\" + \",b,\"? \"\n", + " ans = random.randint(0,200) #user input\n", + " if ans==a+b:\n", + " print \"Right\"\n", + " num_right+=1\n", + " print \"You've used up all your tries.\"\n", + " print \"The answer is \",a+b\n", + " \n", + "#Main function \n", + "print \"How many practice problems: \"\n", + "count=2 #User input taken as 2\n", + "num_right=0\n", + "while True:\n", + " drill()\n", + " count-=1\n", + " if(count==0):\n", + " break\n", + " \n", + "#Result\n", + "print \"You got \",num_right,\" right. \" \n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "How many practice problems: \n", + "What is 9 + 89 ? \n", + "What is 9 + 89 ? \n", + "What is 9 + 89 ? \n", + "You've used up all your tries.\n", + "The answer is 98\n", + "What is 85 + 98 ? \n", + "What is 85 + 98 ? \n", + "What is 85 + 98 ? \n", + "You've used up all your tries.\n", + "The answer is 183\n", + "You got 0 right. \n" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 7.6, Page Number: 136<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "from ctypes import *\n", + " \n", + "def f(j):\n", + " j[0]=100 #j is assigned 100\n", + "\n", + "#Variable decleration\n", + "i=c_int(1)\n", + "p=pointer(i)\n", + "\n", + "#Calling the function\n", + "f(p) \n", + "\n", + "print i" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "c_long(100)\n" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 7.7, Page Number: 137<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "from ctypes import *\n", + "\n", + " \n", + "def f(j):\n", + " j[0]=100 #j is assigned 100\n", + "\n", + "#Variable decleration\n", + "i=c_int(1)\n", + "p=pointer(i)\n", + "\n", + "#Calling the function\n", + "f(p) \n", + "\n", + "print i" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "c_long(100)\n" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 7.8, Page Number: 137<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + " \n", + "def display(num):\n", + " for i in range(10):\n", + " print num[i],\n", + " \n", + "#Variable declaration\n", + "t=[]\n", + "\n", + "for i in range(10):\n", + " t.append(i)\n", + "#Pass list to a function\n", + "display(t)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "0 1 2 3 4 5 6 7 8 9\n" + ] + } + ], + "prompt_number": 7 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 7.9, Page Number: 138<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + " \n", + "def display(num):\n", + " print num,\n", + "\n", + "#Variable declaration\n", + "t=[]\n", + "\n", + "for i in range(10):\n", + " t.append(i)\n", + " \n", + "#Printing without passing entire list\n", + "for i in range(10):\n", + " display(t[i])" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "0 1 2 3 4 5 6 7 8 9\n" + ] + } + ], + "prompt_number": 8 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 7.10, Page Number: 139<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + " \n", + "def cube(n,num):\n", + " num-=1\n", + " while num:\n", + " n[num]=n[num]*n[num]*n[num]\n", + " num-=1\n", + "\n", + "#Variable declaration\n", + "nums=[]\n", + "\n", + "for i in range(10):\n", + " nums.append(i+1)\n", + " \n", + "print \"Original contents: \",\n", + "for i in range(10):\n", + " print nums[i],\n", + "print\n", + "\n", + "cube(nums,10) #Compute cubes\n", + "\n", + "#Result\n", + "print \"Altered contents: \",\n", + "for i in range(10):\n", + " print nums[i]," + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Original contents: 1 2 3 4 5 6 7 8 9 10\n", + "Altered contents: 1 8 27 64 125 216 343 512 729 1000\n" + ] + } + ], + "prompt_number": 10 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 7.11, Page Number: 140<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "import string\n", + "\n", + "def stringupper(str):\n", + " str=string.upper(str) #convert to uppercase\n", + " return str\n", + "\n", + "#Variable declaration \n", + "str=\"this is a test\"\n", + "\n", + "#Calling the function\n", + "str=stringupper(str)\n", + "\n", + "#Result\n", + "print str" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "THIS IS A TEST\n" + ] + } + ], + "prompt_number": 7 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 7.12, Page Number: 141<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + " \n", + "def mystrlen(str):\n", + " l=len(str)\n", + " return l\n", + "\n", + "#Result\n", + "print \"Length of Hello There is: \",\n", + "print mystrlen(\"Hello There\")" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Length of Hello There is: 11\n" + ] + } + ], + "prompt_number": 11 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 7.13, Page Number: 142<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "import sys\n", + "\n", + "def main():\n", + " if len(sys.argv)!=2:\n", + " print \"You forgot to type your name.\" #CHECK!!!!\n", + " return\n", + " #Result\n", + " print \"Hello \",sys.argv[1]\n", + "\n", + "main()" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "You forgot to type your name.\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 7.14, Page Number: 143<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import sys\n", + "\n", + "#Result\n", + "for t in range(len(sys.argv)):\n", + " i=0\n", + " print sys.argv[t] " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "-c\n", + "-f\n", + "C:\\Users\\Anandi\\.ipython\\profile_default\\security\\kernel-6e851974-75ff-4911-bdf9-e089a03e5741.json\n", + "--KernelApp.parent_appname='ipython-notebook'\n", + "--interrupt=904\n", + "--parent=876\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 7.15, Page Number: 144<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "import sys\n", + "\n", + "if len(sys.argv)!=3:\n", + " print \"usage: add num num\" \n", + "else :\n", + " #Variable Decleration\n", + " a=sys.argv[1]\n", + " b=sys.argv[2]\n", + " #Result\n", + " print a+b\n", + " \n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "usage: add num num\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 7.16, Page Number: 145<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "import string\n", + "\n", + "#Variable Decleration\n", + "i=string.atoi(\"100\")\n", + "j=string.atoi(\"100000\")\n", + "k=string.atof(\"-0.123\")\n", + "\n", + "#Result\n", + "print i,\" \",j,\" \",k" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "100 100000 -0.123\n" + ] + } + ], + "prompt_number": 13 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 7.17, Page Number: 147<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "#Variable Decleration\n", + "i=abs(-10)\n", + "\n", + "#Result\n", + "print abs(-23)\n", + "abs(100)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "23\n" + ] + }, + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 5, + "text": [ + "100" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 7.18, Page Number: 148<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + " \n", + "def find_substr(sub,str):\n", + " l=str.find(sub)\n", + " return l\n", + "\n", + "#Variable decleration;Calling the function\n", + "index=find_substr(\"three\",\"one two three four\")\n", + "\n", + "#Result\n", + "print \"Index of three is \",index" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Index of three is 8\n" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 7.19, Page Number: 149<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "import sys\n", + "\n", + "def print_vertical(str):\n", + " l=len(str)\n", + " for i in range(l):\n", + " print str[i],\n", + " \n", + "print_vertical(sys.argv[1])\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "- f\n" + ] + } + ], + "prompt_number": 14 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 7.20, Page Number: 150<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + " \n", + "def find_substr(sub,str):\n", + " return str.find(sub)\n", + "\n", + "#Variable declaration\n", + "s=\"one two three four\"\n", + "\n", + "substr = find_substr(\"three\",s)\n", + "\n", + "#Result\n", + "print \"substring found:\",s[substr:]\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "substring found: three four\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 7.21, Page Number: 154<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + " \n", + "def factr(n):\n", + " if n==1:\n", + " return 1\n", + " answer=factr(n-1)*n\n", + " return answer\n", + "\n", + "#Iterative version\n", + "def fact(n):\n", + " answer=1\n", + " for t in range(n):\n", + " answer=answer*(t+1)\n", + " return answer\n", + "\n", + "#Using recursion version\n", + "print \"4 factorial is \",factr(4)\n", + "\n", + "#Using iterative version\n", + "print \"4 factorial is \",fact(4)\n", + "\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "4 factorial is 24\n", + "4 factorial is 24\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 7.22, Page Number: 155<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + " \n", + "def reverse(s):\n", + " r = \"\"\n", + " for c in s:\n", + " r=c+r\n", + " print r\n", + " \n", + "#VariabDecleration \n", + "str=\"this is a test\"\n", + "\n", + "#Calling function\n", + "reverse(str)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "tset a si siht\n" + ] + } + ], + "prompt_number": 9 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [], + "language": "python", + "metadata": {}, + "outputs": [] + } + ], + "metadata": {} + } + ] +}
\ No newline at end of file diff --git a/C++_from_the_Ground/Chapter_8.ipynb b/C++_from_the_Ground/Chapter_8.ipynb new file mode 100644 index 00000000..4684861e --- /dev/null +++ b/C++_from_the_Ground/Chapter_8.ipynb @@ -0,0 +1,1783 @@ +{ + "metadata": { + "name": "", + "signature": "sha256:cb32b4e80623f372b375323b458cf1a594dc5626da9cbe9346e1ec33417221d4" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h1>Chapter 8: Functions,Part Two: References, Overloading, and Default Arguments<h1>" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 8.1, Page Number: 158<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "def sqr_it(x):\n", + " x=x*x\n", + " return x\n", + "\n", + "#Variable decleration\n", + "t=10\n", + "\n", + "#Result; function calling\n", + "print sqr_it(t),' ',t\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "100 10\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 8.2, Page Number: 159<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "def swap(x,y):\n", + " temp=x\n", + " x=y\n", + " y=temp\n", + " return x, y\n", + "\n", + "#Variable decleration\n", + "i=10\n", + "j=20 \n", + "\n", + "#Initial values\n", + "print \"Initial values of i and j: \",\n", + "print i,' ',j\n", + "\n", + "#Calling function to swap\n", + "i, j=swap(i,j)\n", + "\n", + "#Result\n", + "print \"Swapped values of i and j: \",\n", + "print i,' ',j" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Initial values of i and j: 10 20\n", + "Swapped values of i and j: 20 10\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 8.3, Page Number: 161<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "def f(i):\n", + " i=10\n", + " return i #Returning the value since the function cannot access the variables in the calling scope.\n", + "\n", + "#Variable Decleration\n", + "val=1\n", + "\n", + "print \"Old value for val: \",val\n", + "val=f(val) #Function call\n", + "\n", + "#Result\n", + "print \"New value for val: \",val\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Old value for val: 1\n", + "New value for val: 10\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 8.4, Page Number: 162<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "def swap(i,j):\n", + " temp=i[0]\n", + " i[0]=j[0]\n", + " j[0]=temp\n", + " return i, j\n", + "\n", + "#Variable decleration\n", + "i=[]\n", + "j=[]\n", + "i.append(10)\n", + "j.append(20)\n", + "\n", + "#Initial values\n", + "print \"Initial values of i and j: \",\n", + "print i[0],' ',j[0]\n", + "\n", + "#Calling function to swap\n", + "i, j=swap(i,j)\n", + "\n", + "#Result\n", + "print \"Swapped values of i and j: \",\n", + "print i[0],' ',j[0]" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Initial values of i and j: 10 20\n", + "Swapped values of i and j: 20 10\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 8.5, Page Number: 164<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "#Variable Decleration\n", + "val = 100.0\n", + "\n", + "def f():\n", + " global val\n", + " return val\n", + "\n", + "#Result\n", + "print val\n", + "\n", + "newval=f() #function call\n", + "print newval\n", + "\n", + "val=99.1 #change val's value\n", + "print f() #print val's new value\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "100.0\n", + "100.0\n", + "99.1\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 8.6, Page Number: 166<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "#Function definition\n", + "def change_it(i,n):\n", + " global vals\n", + " vals[i]=n\n", + "\n", + "#Variable Decleration\n", + "vals=[1.1,2.2,3.3,4.4,5.5]\n", + "\n", + "print \"Here are the original values: \",\n", + "for i in range(5):\n", + " print vals[i],\n", + "print\n", + " \n", + "#Function call\n", + "change_it(1,5298.23)\n", + "change_it(3,-98.8)\n", + "\n", + "#Result\n", + "print \"Here are the changed values: \",\n", + "for i in range(5):\n", + " print vals[i]," + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Here are the original values: 1.1 2.2 3.3 4.4 5.5\n", + "Here are the changed values: 1.1 5298.23 3.3 -98.8 5.5\n" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 8.7, Page Number: 167<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "#Variable Decleration\n", + "vals=[None]*10\n", + "error=-1\n", + "\n", + "#put values into the array\n", + "def put(i,n):\n", + " global vals\n", + " if i>=0 and i<10:\n", + " vals[i]=n\n", + " else:\n", + " print \"Bounds Error!\"\n", + " error=n\n", + "\n", + "#obtain a value from the array\n", + "def get(i):\n", + " if i>=0 and i<10:\n", + " return vals[i]\n", + " else:\n", + " print \"Bounds error!\"\n", + " return -1\n", + " \n", + "#put values into the array\n", + "put(0,10)\n", + "put(1,20)\n", + "put(9,30)\n", + "\n", + "#Result\n", + "print get(0),' ',get(1),' ',get(9),\n", + "\n", + "#now, intentionally generate an errer\n", + "put(12,1)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "10 20 30 Bounds Error!\n" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 8.8, Page Number: 169<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "#Variable Decleration\n", + "i=[]\n", + "j=i #independent reference\n", + "\n", + "j.append(10) #Here i and j are just references to [10]\n", + "\n", + "print j[0],\" \",i[0] \n", + "\n", + "k=121\n", + "i[0]=k #copies k's value into j[0] \n", + "\n", + "#Result\n", + "print j[0]" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "10 10\n", + "121\n" + ] + } + ], + "prompt_number": 7 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 8.9, Page Number: 170<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "def f(i,j=None):\n", + " if j==None: \n", + " if isinstance(i,int): #for 1st function\n", + " print \"In f(int), i is \",i \n", + " else: #for 3rd function\n", + " print \"In f(double), k is \",i\n", + " else: #for 2nd arguments\n", + " print \"In f(int,int), i is \",i,\", j is \",j\n", + " \n", + "#calling function\n", + "f(10)\n", + "f(10,20)\n", + "f(12.23)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "In f(int), i is 10\n", + "In f(int,int), i is 10 , j is 20\n", + "In f(double), k is 12.23\n" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 8.10, Page Number: 171<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + " \n", + "def myabs(i):\n", + " if isinstance(i,int): #first instance\n", + " print \"Using integer myabs(): \",\n", + " if i<0:\n", + " return -i\n", + " else:\n", + " return i\n", + " elif isinstance(i,float): #second instance\n", + " print \"Using double myabs(): \",\n", + " if(i<0.0):\n", + " return -i\n", + " else:\n", + " return i\n", + " elif isinstance(i,long): #third instance\n", + " print \"Using long myabs(): \",\n", + " if i<0:\n", + " return -i\n", + " else:\n", + " return i\n", + "\n", + "#Result; calling the function \n", + "print myabs(-10)\n", + "print myabs(-11.0)\n", + "print myabs(-9L)\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Using integer myabs(): 10\n", + "Using double myabs(): 11.0\n", + "Using long myabs(): 9\n" + ] + } + ], + "prompt_number": 8 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 8.11, Page Number: 174<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "import os\n", + "\n", + "def clrscr(size=25):\n", + " while(size):\n", + " print \"\"\n", + " size-=1\n", + " \n", + "for i in range(30):\n", + " print i\n", + " clrscr() #clears 25 lines\n", + "\n", + "for i in range(30):\n", + " print i\n", + " clrscr(10) #clears 10 lines\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "0\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "1\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "2\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "3\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "4\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "5\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "6\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "7\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "8\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "9\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "10\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "11\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "12\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "13\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "14\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "15\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "16\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "17\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "18\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "19\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "20\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "21\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "22\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "23\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "24\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "25\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "26\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "27\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "28\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "29\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "0\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "1\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "2\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "3\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "4\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "5\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "6\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "7\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "8\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "9\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "10\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "11\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "12\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "13\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "14\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "15\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "16\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "17\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "18\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "19\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "20\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "21\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "22\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "23\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "24\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "25\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "26\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "27\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "28\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "29\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n" + ] + } + ], + "prompt_number": 8 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 8.12, Page Number: 176<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "#Variable Decleration\n", + "str1 = \"This is a test\"\n", + "str2 = \"0123456789\"\n", + "\n", + "#function for concatenation\n", + "def mystrcat(s1,s2,l=-1):\n", + " if l==-1:\n", + " l=len(str2)\n", + " s2=s2[:l] #truncates s2\n", + " s1=s1+s2 #concatenates the 2 strings\n", + " return s1\n", + "\n", + "str1=mystrcat(str1,str2,5) #concatenate 5 chars\n", + "print str1\n", + "\n", + "str1 = \"this is a test\" #reset str1\n", + "\n", + "str1=mystrcat(str1, str2) #concatenate entire string\n", + "print str1" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "This is a test01234\n", + "this is a test0123456789\n" + ] + } + ], + "prompt_number": 9 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 8.13, Page Number: 177<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "def myfunc(i):\n", + " return i\n", + " \n", + "print myfunc(10.1),\n", + "print myfunc(10)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "10.1 10\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 8.14, Page Number: 178<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "from ctypes import *\n", + "\n", + "def myfunc(ch):\n", + " if isinstance(ch,c_int):\n", + " return chr(ch.value+1)\n", + " elif isinstance(ch,c_uint):\n", + " return chr(ch.value-1)\n", + " \n", + " \n", + "print myfunc(c_int(ord('c'))),\n", + "print myfunc(c_uint(88))" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " d W\n" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 8.15, Page Number: 179<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "def myfunc(i,j=1):\n", + " if j==1:\n", + " return i*j\n", + " else:\n", + " return i\n", + " \n", + " \n", + "print myfunc(4,5),\n", + "print myfunc(10)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "4 10\n" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [], + "language": "python", + "metadata": {}, + "outputs": [] + } + ], + "metadata": {} + } + ] +}
\ No newline at end of file diff --git a/C++_from_the_Ground/Chapter_9.ipynb b/C++_from_the_Ground/Chapter_9.ipynb new file mode 100644 index 00000000..0f30e9a8 --- /dev/null +++ b/C++_from_the_Ground/Chapter_9.ipynb @@ -0,0 +1,813 @@ +{ + "metadata": { + "name": "", + "signature": "sha256:441f69a4dc3d0bee097a6151c42e10920892966ba4b3b82086ec3feb521e7da7" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h1>Chapter 9: More Data Types and Operations<h1>" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 9.1, Page Number: 182<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "def code(str):\n", + " print str\n", + "\n", + "#Calling function\n", + "code(\"this is a test\")" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "this is a test\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 9.2, Page Number: 183<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "def f(i):\n", + " i=100\n", + " print i\n", + " \n", + "#Variable declaration\n", + "k=10\n", + "\n", + "#function call\n", + "f(k)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "100\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 9.3, Page Number: 187<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "#Variable Declaration\n", + "first=10 #global definition of first and last\n", + "last=20\n", + "\n", + "#Result\n", + "print first,last\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "10 20\n" + ] + } + ], + "prompt_number": 7 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 9.4, Page Number: 188<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "#Variable declaration\n", + "sum=0 \n", + "count=0\n", + "num=5 #Loop for user entries\n", + "\n", + "#compute a running average\n", + "def r_avg(i):\n", + " global sum,count\n", + " sum=sum+i\n", + " count+=1\n", + " return sum/count\n", + "\n", + "\n", + "while True:\n", + " print \"Enter numbers(-1 to quit): \"\n", + " num-=1 #User input\n", + " if not(num==-1):\n", + " print \"Running average is: \",r_avg(num) #Result\n", + " if num<0:\n", + " break" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter numbers(-1 to quit): \n", + "Running average is: 4\n", + "Enter numbers(-1 to quit): \n", + "Running average is: 3\n", + "Enter numbers(-1 to quit): \n", + "Running average is: 3\n", + "Enter numbers(-1 to quit): \n", + "Running average is: 2\n", + "Enter numbers(-1 to quit): \n", + "Running average is: 2\n", + "Enter numbers(-1 to quit): \n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 9.5, Page Number: 189<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "#Variable declaration\n", + "sum=0 \n", + "count=0\n", + "num=10 #Loop for user entries\n", + "\n", + "#user input given: 9,8,7,6,-2,4,3,2,1,-1\n", + "\n", + "#compute a running average\n", + "def r_avg(i):\n", + " global sum,count\n", + " sum=sum+i\n", + " count+=1\n", + " return sum/count\n", + "\n", + "def reset():\n", + " global sum,count\n", + " sum=0\n", + " count=0\n", + " \n", + "while True:\n", + " print \"Enter numbers(-1 to quit, -2 to reset): \"\n", + " num-=1 #User input\n", + " if num==5:\n", + " num=-2\n", + " if num==-2: #for reset\n", + " num=4\n", + " reset()\n", + " continue\n", + " if not(num==-1):\n", + " print \"Running average is: \",r_avg(num) #Result\n", + " else:\n", + " break" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter numbers(-1 to quit, -2 to reset): \n", + "Running average is: 9\n", + "Enter numbers(-1 to quit, -2 to reset): \n", + "Running average is: 8\n", + "Enter numbers(-1 to quit, -2 to reset): \n", + "Running average is: 8\n", + "Enter numbers(-1 to quit, -2 to reset): \n", + "Running average is: 7\n", + "Enter numbers(-1 to quit, -2 to reset): \n", + "Enter numbers(-1 to quit, -2 to reset): \n", + "Running average is: 3\n", + "Enter numbers(-1 to quit, -2 to reset): \n", + "Running average is: 2\n", + "Enter numbers(-1 to quit, -2 to reset): \n", + "Running average is: 2\n", + "Enter numbers(-1 to quit, -2 to reset): \n", + "Running average is: 1\n", + "Enter numbers(-1 to quit, -2 to reset): \n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 9.6, Page Number: 196<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + " \n", + "name=[\"Jonathan\",\"Golden Delicious\",\"Red Delicious\",\"Winesap\",\n", + " \"Cortland\",\"McIntosh\"]\n", + "\n", + "#enumeration type\n", + "(Jonathan,Golden_Delicious,Red_Delicious,Winesap,Cortland,McIntosh) = (0,1,2,3,4,5)\n", + "\n", + "fruit=Jonathan\n", + "print name[fruit]\n", + "\n", + "fruit = Winesap\n", + "print name[fruit]\n", + "\n", + "fruit = McIntosh\n", + "print name[fruit]" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Jonathan\n", + "Winesap\n", + "McIntosh\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 9.7, Page Number: 198<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + " \n", + "ch='j' #User input\n", + "while True:\n", + " #This statement turns off the 6th but.\n", + " c=chr(ord(ch)&223) #ch is now uppercase\n", + " print c\n", + " if c=='Q':\n", + " break \n", + " else:\n", + " ch = chr(ord(ch)+1) #incrementing for different user inputs\n", + " \n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "J\n", + "K\n", + "L\n", + "M\n", + "N\n", + "O\n", + "P\n", + "Q\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 9.8, Page Number: 200<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "#Variable declaration\n", + "ch='J' #User input\n", + "while True:\n", + " #This statement turns off the 6th but.\n", + " c=chr(ord(ch)|32) #ch is now uppercase\n", + " print c\n", + " if c=='q':\n", + " break \n", + " else:\n", + " ch = chr(ord(ch)+1) #incrementing for different user inputs\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "j\n", + "k\n", + "l\n", + "m\n", + "n\n", + "o\n", + "p\n", + "q\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 9.9, Page Number: 201<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + " \n", + "def disp_binary(u):\n", + " t=128\n", + " while t:\n", + " if u&t:\n", + " print 1,\n", + " else:\n", + " print 0,\n", + " t=t/2\n", + " print \"\"\n", + " \n", + "#Variable declaration\n", + "u=99 #User Input\n", + "\n", + "print \"Here's the number in binary: \",\n", + "disp_binary(u)\n", + "\n", + "print \"Here's the complement of th number: \",\n", + "disp_binary(~u)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Here's the number in binary: 0 1 1 0 0 0 1 1 \n", + "Here's the complement of th number: 1 0 0 1 1 1 0 0 \n" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 9.10, Page Number: 202<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + " \n", + "def disp_binary(u):\n", + " t=128\n", + " while t:\n", + " if u&t:\n", + " print 1,\n", + " else:\n", + " print 0,\n", + " t=t/2\n", + " print \"\"\n", + " \n", + "#Variable dclaration\n", + "i=1\n", + "\n", + "#Result\n", + "for t in range(8):\n", + " disp_binary(i)\n", + " i=i<<1\n", + "\n", + "print\"\\n\"\n", + "\n", + "for t in range(8):\n", + " i=i>>1\n", + " disp_binary(i)\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "0 0 0 0 0 0 0 1 \n", + "0 0 0 0 0 0 1 0 \n", + "0 0 0 0 0 1 0 0 \n", + "0 0 0 0 1 0 0 0 \n", + "0 0 0 1 0 0 0 0 \n", + "0 0 1 0 0 0 0 0 \n", + "0 1 0 0 0 0 0 0 \n", + "1 0 0 0 0 0 0 0 \n", + "\n", + "\n", + "1 0 0 0 0 0 0 0 \n", + "0 1 0 0 0 0 0 0 \n", + "0 0 1 0 0 0 0 0 \n", + "0 0 0 1 0 0 0 0 \n", + "0 0 0 0 1 0 0 0 \n", + "0 0 0 0 0 1 0 0 \n", + "0 0 0 0 0 0 1 0 \n", + "0 0 0 0 0 0 0 1 \n" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 9.11, Page Number: 204<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "def div_zero():\n", + " print \"Cannot divide by zero.\"\n", + " return 0\n", + " \n", + "#Variable declaration\n", + "i=10 #User Input\n", + "j=0\n", + "\n", + "#This statement prevents a divide by zero\n", + "if j:\n", + " result=i/j\n", + "else:\n", + " result=div_zero()\n", + "\n", + "#Result\n", + "print \"Result: \",result" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Cannot divide by zero.\n", + "Result: 0\n" + ] + } + ], + "prompt_number": 7 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 9.12, Page Number: 206<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "#Variable declaration\n", + "j=10\n", + "i=None\n", + "\n", + "j+=1\n", + "j+100\n", + "i=999+j\n", + "\n", + "#Result\n", + "print i" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "1010\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 9.13, Page Number: 207<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "\n", + "from ctypes import *\n", + "\n", + "#Variable declaration\n", + "ch=c_char\n", + "i=c_int\n", + "\n", + "print sizeof(ch), #size of char\n", + "print sizeof(i), #size of int\n", + "print sizeof(c_float), #size of float\n", + "print sizeof(c_double) #size of double\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "1 4 4 8\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 9.14, Page Number: 209<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "from ctypes import *\n", + "\n", + "#Variabke declaration \n", + "i=c_int(20) #allocate memory for int\n", + "p=pointer(i) #assign a pointer to the memory\n", + "\n", + "#Result\n", + "print p[0] #proove that it works by displaying value\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "20\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 9.15, Page Number: 210<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "from ctypes import *\n", + "\n", + "#Variable declaration \n", + "i=c_int(99) #initialize with 99\n", + "p=pointer(i) #assign a pointer to the value\n", + "\n", + "#Result\n", + "print p[0] #displays 99\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "99\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 9.16, Page Number: 211<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "from ctypes import *\n", + "\n", + "#Variable declaration \n", + "i=c_double(10) \n", + "p=pointer(i)\n", + "\n", + "#assign the values 100 to 109\n", + "for i in range(10):\n", + " p[i]=100.00+i\n", + "\n", + "#display the contents of the array\n", + "for i in range(10):\n", + " print p[i],\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "100.0 101.0 102.0 103.0 104.0 105.0 106.0 107.0 108.0 109.0\n" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 9.17, Page Number: 211<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "#Variable declaration\n", + "i=c_int() \n", + "j=c_double()\n", + "pi=pointer(i) #pointer to int\n", + "pj=pointer(j) #pointer to double\n", + "\n", + "#Assign values using pointers\n", + "pi[0]=10\n", + "pj[0]=100.123\n", + "\n", + "#Result\n", + "print pi[0],pj[0]\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "10 100.123\n" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<h3>Example 9.18, Page Number: 212<h3>" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "\n", + "from ctypes import *\n", + "\n", + "#Variable declaration\n", + "i=pointer(c_int())\n", + "j=pointer(c_double())\n", + "\n", + "#Checking if i and j have been allocated memory addresses\n", + "if not(id(i)):\n", + " print \"Allocation Failure.\"\n", + " \n", + "if not(id(j)):\n", + " print \"Allocation Failure.\" \n", + "\n", + "i[0]=10\n", + "j[0]=100.123\n", + "\n", + "\n", + "#Result\n", + "print i[0],j[0]\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "10 100.123\n" + ] + } + ], + "prompt_number": 11 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [], + "language": "python", + "metadata": {}, + "outputs": [] + } + ], + "metadata": {} + } + ] +}
\ No newline at end of file |