diff options
Diffstat (limited to 'ANSI_C_Programming/chapter15.ipynb')
-rw-r--r-- | ANSI_C_Programming/chapter15.ipynb | 691 |
1 files changed, 691 insertions, 0 deletions
diff --git a/ANSI_C_Programming/chapter15.ipynb b/ANSI_C_Programming/chapter15.ipynb new file mode 100644 index 00000000..9a67d04b --- /dev/null +++ b/ANSI_C_Programming/chapter15.ipynb @@ -0,0 +1,691 @@ +{
+ "metadata": {
+ "name": "chapter15.ipynb"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "CHAPTER 15: MISCELLANEOUS FEATURES"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "EXAMPLE ON PAGE:473-474"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Use of enumerated data type for an employee department\n",
+ "def emp_dept(*sequential, **named): #definition of enumeration\n",
+ " enums = dict(zip(sequential, range(len(sequential))), **named)\n",
+ " return type('Enum', (), enums)\n",
+ "class employee(): #structure\n",
+ " def __init__(self,**kwds):\n",
+ " self.__dict__.update(kwds)\n",
+ "department=emp_dept('assembly','manufacturing','accounts','stores') #defining a variable of type enum emp_dept\n",
+ "e=employee(name=\"Lothar Mattheus\",age=28,bs=5575.50,department=department.manufacturing)\n",
+ "print \"Name=%s\\n\" % (e.name)\n",
+ "print \"Age=%d\\n\" % (e.age)\n",
+ "print \"Basic salary=%f\\n\" % (e.bs)\n",
+ "print \"Dept=%d\\n\" % (e.department)\n",
+ "if e.department==department.accounts:\n",
+ " print \"%s is an accountant\\n\" % (e.name)\n",
+ "else:\n",
+ " print \"%s is not an accountant\\n\" % (e.name)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Name=Lothar Mattheus\n",
+ "\n",
+ "Age=28\n",
+ "\n",
+ "Basic salary=5575.500000\n",
+ "\n",
+ "Dept=1\n",
+ "\n",
+ "Lothar Mattheus is not an accountant\n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "EXAMPLE ON PAGE:475"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Above program using macros\n",
+ "def ASSEMBLY():\n",
+ " return 0\n",
+ "def MANUFACTURING():\n",
+ " return 1\n",
+ "def ACCOUNTS():\n",
+ " return 2\n",
+ "def STORES():\n",
+ " return 3\n",
+ "class employee():\n",
+ " def __init__(self,**kwds):\n",
+ " self.__dict__.update(kwds)\n",
+ "e=employee()\n",
+ "e.name=\"Lothar Mattheus\"\n",
+ "e.age=28\n",
+ "e.bs=5575.50\n",
+ "e.department=MANUFACTURING()\n",
+ "print \"Name=%s\\n\" % (e.name)\n",
+ "print \"Age=%d\\n\" % (e.age)\n",
+ "print \"Basic salary=%f\\n\" % (e.bs)\n",
+ "print \"Dept=%d\\n\" % (e.department)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Name=Lothar Mattheus\n",
+ "\n",
+ "Age=28\n",
+ "\n",
+ "Basic salary=5575.500000\n",
+ "\n",
+ "Dept=1\n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "EXAMPLE ON PAGE:477-478"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#program showing need for typecasting\n",
+ "x=6\n",
+ "y=4\n",
+ "a=x/y #int\n",
+ "print \"Value of a=%f\\n\" % (a)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Value of a=1.000000\n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "EXAMPLE ON PAGE:478"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#program using typecasting to convert an expression into particular data type\n",
+ "x=6\n",
+ "y=4\n",
+ "a=float(x)/y #float\n",
+ "print \"Value of a=%f\\n\" % (a)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Value of a=1.500000\n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "EXAMPLE ON PAGE:478-479"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Another example of typecasting\n",
+ "a=6.35\n",
+ "print \"Value of a on type casting=%d\\n\" % (int(a)) #converts float to int\n",
+ "print \"Value of a=%f\\n\" % (a) "
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Value of a on type casting=6\n",
+ "\n",
+ "Value of a=6.350000\n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "EXAMPLE ON PAGE:480"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#using bit fields for stroring variables\n",
+ "from ctypes import *\n",
+ "def MALE():\n",
+ " return 0\n",
+ "def FEMALE():\n",
+ " return 1\n",
+ "def SINGLE():\n",
+ " return 0\n",
+ "def MARRIED():\n",
+ " return 1\n",
+ "def DIVORCED():\n",
+ " return 2\n",
+ "def WIDOWED():\n",
+ " return 3\n",
+ "class employee(Structure):\n",
+ " _fields_= [(\"gender\",c_short, 1), #1 bit size for storage\n",
+ " (\"mar_stat\", c_short, 2), #2 bit size for storage\n",
+ " (\"hobby\",c_short, 3), #3 bit size for storage\n",
+ " (\"scheme\",c_short, 4)] #4 bit size for storage\n",
+ "e=employee()\n",
+ "e.gender=MALE()\n",
+ "e.mar_status=DIVORCED()\n",
+ "e.hobby=5\n",
+ "e.scheme=9\n",
+ "print \"Gender=%d\\n\" % (e.gender)\n",
+ "print \"Marital status=%d\\n\" % (e.mar_status)\n",
+ "import ctypes\n",
+ "print \"Bytes occupied by e=%d\\n\" % (ctypes.sizeof(e))"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Gender=0\n",
+ "\n",
+ "Marital status=2\n",
+ "\n",
+ "Bytes occupied by e=2\n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "EXAMPLE ON PAGE:481"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#printing address of function\n",
+ "def display():\n",
+ " print \"Long live viruses!!\\n\"\n",
+ "print \"Address of function display is %s\\n\" % (display)\n",
+ "display()"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Address of function display is <function display at 0x02D93DF0>\n",
+ "\n",
+ "Long live viruses!!\n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "EXAMPLE ON PAGE:481-482"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#printing address of function\n",
+ "def display():\n",
+ " print \"\\nLong live viruses!!\"\n",
+ "func_ptr=display\n",
+ "print \"Address of function display is %s\\n\" % (display)\n",
+ "func_ptr()"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Address of function display is <function display at 0x05696730>\n",
+ "\n",
+ "\n",
+ "Long live viruses!!\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "EXAMPLE ON PAGE:483"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#function returning address\n",
+ "def fun():\n",
+ " i=20\n",
+ " return (id(i))\n",
+ "p=fun\n",
+ "p()"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "metadata": {},
+ "output_type": "pyout",
+ "prompt_number": 9,
+ "text": [
+ "20688356"
+ ]
+ }
+ ],
+ "prompt_number": 9
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "EXAMPLE ON PAGE:483-484"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#program to copy one string into another\n",
+ "def copy(t,s):\n",
+ " t=\"\\0\"\n",
+ " for item in s:\n",
+ " t=t+item\n",
+ " return t\n",
+ "source=\"Jaded\"\n",
+ "target=[]\n",
+ "str1=copy(target,source)\n",
+ "print \"%s\\n\" % (str1)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\u0000Jaded\n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 18
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "EXAMPLE ON PAGE:485"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#function with variable number of arguments\n",
+ "def findmax(tot_num,*num): #tuples\n",
+ " max=0\n",
+ " for count in range(0,len(num),1):\n",
+ " if num[count]>max:\n",
+ " max=num[count]\n",
+ " return max\n",
+ "max=findmax(5,23,15,1,92,50)\n",
+ "print \"maximum=%d\\n\" % (max)\n",
+ "max=findmax(3,100,300,29)\n",
+ "print \"maximum=%d\\n\" % (max)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "maximum=92\n",
+ "\n",
+ "maximum=300\n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 19
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "EXAMPLE ON PAGE:486-487"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#function for printing any number of arguments of any type\n",
+ "def display(type,num,*t):\n",
+ " def integer():\n",
+ " for j in range(0,num,1):\n",
+ " print \"%d\" % (t[j])\n",
+ " def char():\n",
+ " for j in range(0,num,1):\n",
+ " print \"%c\" % (t[j])\n",
+ " def floating():\n",
+ " for j in range(0,num,1):\n",
+ " print \"%f\" % (t[j])\n",
+ " def switch(ch):\n",
+ " return {1: integer,\n",
+ " 2: char,\n",
+ " 3: floating,\n",
+ " }[ch]()\n",
+ " switch(type)\n",
+ "display(1,2,5,6)\n",
+ "display(2,4,'A','a','b','c')\n",
+ "display(3,3,2.5,299.3,-1.0)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "5\n",
+ "6\n",
+ "A\n",
+ "a\n",
+ "b\n",
+ "c\n",
+ "2.500000\n",
+ "299.300000\n",
+ "-1.000000\n"
+ ]
+ }
+ ],
+ "prompt_number": 21
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "EXAMPLE ON PAGE:488"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Demo of union at work\n",
+ "from ctypes import *\n",
+ "class a(Union): #definition of union\n",
+ " _fields_= [(\"i\", c_short),\n",
+ " (\"ch\",c_byte*2)]\n",
+ "key=a()\n",
+ "key.i=512\n",
+ "print key.i\n",
+ "print key.ch[0]\n",
+ "print key.ch[1]"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "512\n",
+ "0\n",
+ "2\n"
+ ]
+ }
+ ],
+ "prompt_number": 22
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "EXAMPLE ON PAGE:491"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Program explaining operation of union\n",
+ "from ctypes import *\n",
+ "class a(Union):\n",
+ " _fields_= [(\"i\", c_short),\n",
+ " (\"ch\",c_byte*2)]\n",
+ "key=a()\n",
+ "key.i=512\n",
+ "print key.i\n",
+ "print key.ch[0]\n",
+ "print key.ch[1]\n",
+ "key.ch[0]=50\n",
+ "print key.i\n",
+ "print key.ch[0]\n",
+ "print key.ch[1]"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "512\n",
+ "0\n",
+ "2\n",
+ "562\n",
+ "50\n",
+ "2\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "EXAMPLE ON PAGE:492-493"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#program for union of structures\n",
+ "from ctypes import *\n",
+ "class a(Structure):\n",
+ " _fields_ = [(\"i\", c_short),\n",
+ " (\"c\", c_byte*2)]\n",
+ "\n",
+ "class b(Structure):\n",
+ " _fields_ = [(\"j\", c_short),\n",
+ " (\"d\", c_byte*2)]\n",
+ "\n",
+ "class z(Union):\n",
+ " _fields_ = [(\"key\", a),\n",
+ " (\"data\", b)]\n",
+ "strange = z()\n",
+ "strange.key.i=512\n",
+ "strange.data.d[0]=0\n",
+ "strange.data.d[1]=32\n",
+ "print strange.key.i\n",
+ "print strange.data.j\n",
+ "print strange.key.c[0]\n",
+ "print strange.data.d[0]\n",
+ "print strange.key.c[1]\n",
+ "print strange.data.d[1]"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "512\n",
+ "512\n",
+ "0\n",
+ "0\n",
+ "32\n",
+ "32\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "EXAMPLE ON PAGE:494-495"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "#Utility of Unions\n",
+ "from ctypes import *\n",
+ "class info1(Structure):\n",
+ " _fields_ = [(\"hobby\", c_byte*10),\n",
+ " (\"crcardno\", c_short)]\n",
+ "\n",
+ "class info2(Structure):\n",
+ " _fields_ = [(\"vehno\", c_byte*10),\n",
+ " (\"dist\", c_short)]\n",
+ "\n",
+ "class info(Union):\n",
+ " _fields_ = [(\"a\", info1),\n",
+ " (\"b\", info2)]\n",
+ "class emp(Structure):\n",
+ " _fields_ = [(\"n\", c_byte*20),\n",
+ " (\"grade\", c_byte*4),\n",
+ " (\"age\", c_short),\n",
+ " (\"f\", info)]\n",
+ "e=emp()"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [],
+ "prompt_number": 3
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
\ No newline at end of file |