summaryrefslogtreecommitdiff
path: root/Programming_in_C/Chapter_11.ipynb
diff options
context:
space:
mode:
Diffstat (limited to 'Programming_in_C/Chapter_11.ipynb')
-rw-r--r--Programming_in_C/Chapter_11.ipynb842
1 files changed, 842 insertions, 0 deletions
diff --git a/Programming_in_C/Chapter_11.ipynb b/Programming_in_C/Chapter_11.ipynb
new file mode 100644
index 00000000..a010bcdb
--- /dev/null
+++ b/Programming_in_C/Chapter_11.ipynb
@@ -0,0 +1,842 @@
+{
+ "metadata": {
+ "name": "Chapter XI"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 11: Pointers"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 3,
+ "metadata": {},
+ "source": [
+ "Program 11.1, Page number: 237"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#11.1.py\n",
+ "#Illustrating Pointers\n",
+ "\n",
+ "#Main()\n",
+ "def main():\n",
+ "\n",
+ " #Variable Declaration\n",
+ " count=10\n",
+ " \n",
+ " int_ptr=count\n",
+ " x=int_ptr\n",
+ " \n",
+ " #Result\n",
+ " print(\"count={0} , x={1}\".format(count,x))\n",
+ "\n",
+ "#Setting top level conditional script\n",
+ "if __name__=='__main__':\n",
+ " main()"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "count=10 , x=10\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 3,
+ "metadata": {},
+ "source": [
+ "Program 11.2, Page number: 238"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#11.2.py\n",
+ "#More Pointer Basics\n",
+ "\n",
+ "#Main()\n",
+ "def main():\n",
+ "\n",
+ " #Variable Declaration\n",
+ " c='Q'\n",
+ " char_pointer=c\n",
+ " print(\"{0} {1}\".format(c,char_pointer))\n",
+ "\n",
+ " c='/'\n",
+ " char_pointer=c\n",
+ " print(\"{0} {1}\".format(c,char_pointer))\n",
+ "\n",
+ " char_pointer='('\n",
+ " c=char_pointer\n",
+ " print(\"{0} {1}\".format(c,char_pointer))\n",
+ "\n",
+ "\n",
+ "\n",
+ "#Setting top level conditional script\n",
+ "if __name__=='__main__':\n",
+ " main()"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Q Q\n",
+ "/ /\n",
+ "( (\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 3,
+ "metadata": {},
+ "source": [
+ "Program 11.3, Page number: 239"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#11.3\n",
+ "#Using Pointers in Expressions\n",
+ "\n",
+ "#Main()\n",
+ "def main():\n",
+ "\n",
+ " #Variable Declaration\n",
+ " i1=5\n",
+ " p1=i1\n",
+ " i2=p1/2+10\n",
+ " p2=p1\n",
+ "\n",
+ " #Result\n",
+ " print(\"i1 = {0}, i2 = {1}, p1 = {2}, p2 = {3}\\n\".format(i1, i2, p1, p2))\n",
+ "\n",
+ "#Setting top level conditional script\n",
+ "if __name__=='__main__':\n",
+ " main()"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "i1 = 5, i2 = 12, p1 = 5, p2 = 5\n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 3,
+ "metadata": {},
+ "source": [
+ "Program 11.4, Page number: 242"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#11.4.py\n",
+ "#Using Pointers to classes\n",
+ "\n",
+ "#Main()\n",
+ "def main():\n",
+ " class date:\n",
+ " def __init__(self): #Class constructor\n",
+ " self.month=0\n",
+ " self.day=0\n",
+ " self.year=0\n",
+ "\n",
+ " #Creating instances\n",
+ " today=date()\n",
+ " datePtr=today\n",
+ "\n",
+ " datePtr.month=9\n",
+ " datePtr.day=25\n",
+ " datePtr.year=2004\n",
+ "\n",
+ " #Result\n",
+ " print(\"Today's date is {0}/{1}/{2}\".format(datePtr.month, datePtr.day, datePtr.year))\n",
+ "\n",
+ "#Setting top level conditional script\n",
+ "if __name__=='__main__':\n",
+ " main()"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Today's date is 9/25/2004\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 3,
+ "metadata": {},
+ "source": [
+ "Program 11.5, Page number: 243"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#11.5.py\n",
+ "#Using classes Containing pointer variables\n",
+ "\n",
+ "#Main()\n",
+ "def main():\n",
+ " class intPtrs:\n",
+ " def __init__(self): #Class constructor\n",
+ " self.p1=0\n",
+ " self.p2=0\n",
+ "\n",
+ " #Variable Declarations & Instance creation\n",
+ " i1=100\n",
+ " pointers=intPtrs()\n",
+ " pointers.p1=i1\n",
+ " i2=-97\n",
+ " pointers.p2=i2\n",
+ "\n",
+ " #Result\n",
+ " print(\"i1 = {0}, pointers.p1 = {1}\\n\".format(i1, pointers.p1))\n",
+ " print(\"i2 = {0}, pointers.p2 = {1}\\n\".format(i2, pointers.p2))\n",
+ "\n",
+ "\n",
+ "#Setting top level conditional script\n",
+ "if __name__=='__main__':\n",
+ " main()"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "i1 = 100, pointers.p1 = 100\n",
+ "\n",
+ "i2 = -97, pointers.p2 = -97\n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 3,
+ "metadata": {},
+ "source": [
+ "Program 11.6, Page number: 246"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#11.6.py\n",
+ "#Using Linked Lists\n",
+ "\n",
+ "\n",
+ "#Main()\n",
+ "def main():\n",
+ " class entry:\n",
+ " def __init(self): #Class constructor\n",
+ " self.value=0\n",
+ " self.nxt=0\n",
+ "\n",
+ " #Variable declarations & instance creation\n",
+ " n1=entry()\n",
+ " n1.value=100\n",
+ " n2=entry()\n",
+ " n2.value=200\n",
+ " n3=entry()\n",
+ " n3.value=300\n",
+ "\n",
+ " n1.nxt=n2\n",
+ " n2.nxt=n3\n",
+ "\n",
+ " i=n1.nxt.value\n",
+ "\n",
+ " #Result\n",
+ " print(\"{0}\".format(i))\n",
+ " print(\"{0}\".format(n2.nxt.value))\n",
+ "\n",
+ "\n",
+ "\n",
+ "#setting top level conditional script\n",
+ "if __name__=='__main__':\n",
+ " main()"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "200\n",
+ "300\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 3,
+ "metadata": {},
+ "source": [
+ "Program 11.7, Page number: 250"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#11.7.py\n",
+ "#Traversing a linked list\n",
+ "\n",
+ "#Main()\n",
+ "def main():\n",
+ " class entry:\n",
+ " def __init__(self): #Class constructor\n",
+ " self.value=0\n",
+ " self.nxt=0\n",
+ "\n",
+ " #Creating class instances\n",
+ " n1=entry()\n",
+ " n2=entry()\n",
+ " n3=entry()\n",
+ " list_pointer=n1\n",
+ "\n",
+ " #Variable Declaration\n",
+ " n1.value=100\n",
+ " n2.value=200\n",
+ " n3.value=300\n",
+ " n1.nxt=n2\n",
+ " n2.nxt=n3\n",
+ " n3.nxt=0\n",
+ "\n",
+ " while(list_pointer!=0): #Calculation\n",
+ " print(\"{0}\\n\".format(list_pointer.value))\n",
+ " list_pointer = list_pointer.nxt;\n",
+ "\n",
+ "\n",
+ "#Setting top level conditional script\n",
+ "if __name__=='__main__':\n",
+ " main()"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "100\n",
+ "\n",
+ "200\n",
+ "\n",
+ "300\n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 3,
+ "metadata": {},
+ "source": [
+ "Program 11.8, Page number: 254"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#11.8.py\n",
+ "#Using Pointers and Functions\n",
+ "\n",
+ "#Function to change incoming varible\n",
+ "def test(int_pointer):\n",
+ " int_pointer=100\n",
+ " return int_pointer\n",
+ "\n",
+ "#Main()\n",
+ "def main():\n",
+ "\n",
+ " #Variable declaration\n",
+ " i=50\n",
+ " p=i\n",
+ " print(\"Before the call to test i = {0}\".format(p))\n",
+ " \n",
+ " p=test(i) #Function call\n",
+ "\n",
+ " print(\"After the call to test i = {0}\".format(p))\n",
+ "\n",
+ "\n",
+ "#Setting top level conditional script\n",
+ "if __name__=='__main__':\n",
+ " main()"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Before the call to test i = 50\n",
+ "After the call to test i = 100\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 3,
+ "metadata": {},
+ "source": [
+ "Program 11.9, Page number: 255"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#11.9.py\n",
+ "#Using Pointers to Exchange Values\n",
+ "\n",
+ "#Function to exchange & return values\n",
+ "def exchange(pint1,pint2):\n",
+ " temp=pint1\n",
+ " pint1=pint2\n",
+ " pint2=temp\n",
+ " return pint1,pint2\n",
+ "\n",
+ "\n",
+ "#Main()\n",
+ "def main():\n",
+ "\n",
+ " #Variable Declaration\n",
+ " i1=-5\n",
+ " i2=66\n",
+ " p1=i1\n",
+ " p2=i2\n",
+ "\n",
+ " print(\"i1 ={0}, i2 ={1}\\n\".format(i1, i2))\n",
+ " \n",
+ " i1,i2=exchange(p1,p2) #Fucntion call-1\n",
+ "\n",
+ " print(\"i1 ={0}, i2 ={1}\\n\".format(i1, i2))\n",
+ "\n",
+ " i1,i2=exchange(i1,i2) #Fucntion call-2\n",
+ "\n",
+ " print(\"i1 ={0}, i2 ={1}\\n\".format(i1, i2))\n",
+ "\n",
+ "\n",
+ "#Setting top level conditional script\n",
+ "if __name__=='__main__':\n",
+ " main()"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "i1 =-5, i2 =66\n",
+ "\n",
+ "i1 =66, i2 =-5\n",
+ "\n",
+ "i1 =-5, i2 =66\n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 9
+ },
+ {
+ "cell_type": "heading",
+ "level": 3,
+ "metadata": {},
+ "source": [
+ "Program 11.10, Page number: 257"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#11.10.py\n",
+ "#Returning a Pointer from a Function\n",
+ "\n",
+ "#Class Declaration\n",
+ "class entry:\n",
+ " def __init__(self): #Class constructor\n",
+ " self.value=0\n",
+ " selfnxt=0\n",
+ "\n",
+ " def FindEntry(listPtr,match): #Function to traverse list\n",
+ "\n",
+ " #Calculation\n",
+ " while(listPtr!=0):\n",
+ " if(int(listPtr.value)==int(match)):\n",
+ " return listPtr\n",
+ " else:\n",
+ " listPtr=listPtr.nxt\n",
+ "\n",
+ " return 0\n",
+ "\n",
+ "#Main()\n",
+ "def main():\n",
+ "\n",
+ " #Creating instance\n",
+ " n1=entry()\n",
+ " n2=entry()\n",
+ " n3=entry()\n",
+ " listPtr=entry()\n",
+ "\n",
+ " #Variable declaration\n",
+ " n1.value=100\n",
+ " n2.value=200\n",
+ " n3.value=300\n",
+ "\n",
+ " n1.nxt=n2\n",
+ " n2.nxt=n3\n",
+ " n3.nxt=0\n",
+ " listStart=n1\n",
+ " \n",
+ " print(\"Enter value to locate: \")\n",
+ " search=200 #search=raw_input()\n",
+ " listPtr = entry.FindEntry (listStart, search) #Function call\n",
+ "\n",
+ " #Result\n",
+ " if ( listPtr != 0 ):\n",
+ " print(\"Found {0}.\\n\".format(listPtr.value))\n",
+ " else:\n",
+ " print(\"Not found.\\n\")\n",
+ "\n",
+ "\n",
+ "#Setting top level conditional script\n",
+ "if __name__=='__main__':\n",
+ " main()"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Enter value to locate: \n",
+ "Found 200.\n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 10
+ },
+ {
+ "cell_type": "heading",
+ "level": 3,
+ "metadata": {},
+ "source": [
+ "Program 11.11, Page number: 262"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#11.11.py\n",
+ "#Working with Pointers to Arrays/Lists\n",
+ "\n",
+ "#Function to evaluate sum of array elements\n",
+ "def arraySum (array,n):\n",
+ "\n",
+ " #Variable Declaration\n",
+ " sum = 0 \n",
+ " arrayEnd = n\n",
+ " #Calculation\n",
+ " for i in range(0,arrayEnd):\n",
+ " sum += array[i]\n",
+ " return sum\n",
+ "\n",
+ "#Main()\n",
+ "def main():\n",
+ "\n",
+ " #List Declaration\n",
+ " values = [ 3, 7, -9, 3, 6, -1, 7, 9, 1, -5 ]\n",
+ " #Result\n",
+ " print(\"The sum is {0}\\n\".format(arraySum (values, 10)))\n",
+ "\n",
+ "#Setting top level conditional script\n",
+ "if __name__=='__main__':\n",
+ " main()"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The sum is 21\n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 11
+ },
+ {
+ "cell_type": "heading",
+ "level": 3,
+ "metadata": {},
+ "source": [
+ "Program 11.12, Page number: 265"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#11.12.py\n",
+ "#Summing the Elements of an Array--version 2\n",
+ "\n",
+ "#Function to evaluate sum of array elements\n",
+ "def arraySum (array,n):\n",
+ " #Variable Declaration\n",
+ " sum = 0 \n",
+ " #Calculation\n",
+ " for i in array:\n",
+ " sum += i\n",
+ " return sum\n",
+ "\n",
+ "#Main()\n",
+ "def main():\n",
+ "\n",
+ " #List Declaration\n",
+ " values = [ 3, 7, -9, 3, 6, -1, 7, 9, 1, -5 ]\n",
+ " #Result\n",
+ " print(\"The sum is {0}\\n\".format(arraySum(values,10)))\n",
+ "\n",
+ "#Setting top level conditional script\n",
+ "if __name__=='__main__':\n",
+ " main()"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The sum is 21\n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 12
+ },
+ {
+ "cell_type": "heading",
+ "level": 3,
+ "metadata": {},
+ "source": [
+ "Program 11.13, Page number: 266"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#11.13.py\n",
+ "#Version of copyString\n",
+ "\n",
+ "#Function to copy string from source to destinaton\n",
+ "def copyString(to, frm):\n",
+ " global string2\n",
+ " to=frm\n",
+ " string2=to\n",
+ "\n",
+ "#Main()\n",
+ "def main():\n",
+ " \n",
+ " global string2\n",
+ " #String declaration\n",
+ " string1=\"A string to be copied\"\n",
+ " string2=\"\"\n",
+ " copyString(string2,string1) #Functon call\n",
+ "\n",
+ " print(\"{0}\\n\".format(string2))\n",
+ " copyString (string2, \"So is this.\") #Function call\n",
+ " print(\"{0}\\n\".format(string2))\n",
+ "\n",
+ "#Setting top level conditional script\n",
+ "if __name__=='__main__':\n",
+ " main()"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "A string to be copied\n",
+ "\n",
+ "So is this.\n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 13
+ },
+ {
+ "cell_type": "heading",
+ "level": 3,
+ "metadata": {},
+ "source": [
+ "Program 11.14, Page number: 271"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#11.14.py\n",
+ "#Revised version of copyString\n",
+ "\n",
+ "#Function to copy string from source to destinaton\n",
+ "def copyString(to, frm):\n",
+ " global string2\n",
+ " to=frm\n",
+ " string2=to\n",
+ "\n",
+ "#Main()\n",
+ "def main():\n",
+ " \n",
+ " global string2\n",
+ " #String declaration\n",
+ " string1=\"A string to be copied\"\n",
+ " string2=\"\"\n",
+ " copyString(string2,string1) #Functon call\n",
+ "\n",
+ " print(\"{0}\\n\".format(string2))\n",
+ " copyString (string2, \"So is this.\") #Function call\n",
+ " print(\"{0}\\n\".format(string2))\n",
+ "\n",
+ "#Setting top level conditional script\n",
+ "if __name__=='__main__':\n",
+ " main()"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "A string to be copied\n",
+ "\n",
+ "So is this.\n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 14
+ },
+ {
+ "cell_type": "heading",
+ "level": 3,
+ "metadata": {},
+ "source": [
+ "Program 11.15, Page number: 272"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#11.15.PY\n",
+ "#Find the Length of a String\n",
+ "\n",
+ "#Function to return string length\n",
+ "def stringLength(string):\n",
+ " return len(string) #Calculation\n",
+ "\n",
+ "#Main()\n",
+ "def main():\n",
+ " print(\"{0} \".format(stringLength (\"stringLength test\")))\n",
+ " print(\"{0} \".format(stringLength (\"\")))\n",
+ " print(\"{0}\".format(stringLength (\"complete\")))\n",
+ "\n",
+ "#Setting top level conditional script\n",
+ "if __name__=='__main__':\n",
+ " main()"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "17 \n",
+ "0 \n",
+ "8\n"
+ ]
+ }
+ ],
+ "prompt_number": 15
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file