{
 "metadata": {
  "name": "",
  "signature": "sha256:d3ec56f0fb1e7a95eb53ee17745721c0f8fa66da6256b85d8eb402b33b736e2d"
 },
 "nbformat": 3,
 "nbformat_minor": 0,
 "worksheets": [
  {
   "cells": [
    {
     "cell_type": "heading",
     "level": 1,
     "metadata": {},
     "source": [
      "Hour 20 : Understanding Unions"
     ]
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example 20.1, Page No 335"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "class menu:\n",
      "    def __init__(self,name,price):\n",
      "        self.name = name\n",
      "        self.price = price\n",
      "if __name__ == '__main__':\n",
      "    print \"The content assigned to the union separately:\\n\"\n",
      "    dish = menu(\"Sweet and Sour Chicken\",9.95)\n",
      "    print \"Dish Name: \",dish.name\n",
      "    print \"Dish Price: \",dish.price"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "The content assigned to the union separately:\n",
        "\n",
        "Dish Name:  Sweet and Sour Chicken\n",
        "Dish Price:  9.95\n"
       ]
      }
     ],
     "prompt_number": 2
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example 20.2, Page No 338"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "class employee:\n",
      "    def __init__(self,start_year,dpt_code,id_number):\n",
      "        self.start_year = start_year\n",
      "        self.dpt_code = dpt_code\n",
      "        self.id_number = id_number\n",
      "if __name__ == '__main__':\n",
      "    info = employee(1997,8,1234)\n",
      "    print \"Start Year: \",info.start_year,\"\\n\"\n",
      "    print \"Dpt. Code: \",info.dpt_code,\"\\n\"\n",
      "    print \"ID Number: \",info.id_number,\"\\n\""
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Start Year:  1997 \n",
        "\n",
        "Dpt. Code:  8 \n",
        "\n",
        "ID Number:  1234 \n",
        "\n"
       ]
      }
     ],
     "prompt_number": 4
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example 20.3, page no. 340"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "import sys\n",
      "class u:\n",
      "    def __init__(self,x,y):\n",
      "        self.x = x\n",
      "        self.y = y\n",
      "class s:\n",
      "    def __init__(self,x,y):\n",
      "        self.x = x\n",
      "        self.y = y\n",
      "if __name__ == '__main__':\n",
      "    a_union = u(10,20)\n",
      "    a_struct = s(10,20)\n",
      "    #print \"The size of double: \",sys.getsizeof(double),\"byte\\n\" Double is not in python\n",
      "    print \"The size of int: \",sys.getsizeof(int),\"byte\\n\"\n",
      "    print \"The size of union: \",sys.getsizeof(a_union),\"byte\\n\"\n",
      "    print \"The size of struct: \",sys.getsizeof(a_struct),\"byte\\n\""
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "The size of int:  872 byte\n",
        "\n",
        "The size of union:  72 byte\n",
        "\n",
        "The size of struct:  72 byte\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 2
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example 20.4, Page No 341"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "class u:\n",
      "    ch = [0, 0]\n",
      "    num = 0\n",
      "\n",
      "def UnionInitialize(val):\n",
      "    val.ch[0] = 'H'\n",
      "    val.ch[1] = 'I'\n",
      "    return val.ch\n",
      "if __name__ == '__main__':\n",
      "    val = u()\n",
      "    x = UnionInitialize(val)\n",
      "    print \"The two characters held by the union:\\n\"\n",
      "    print x[0],\"\\n\"\n",
      "    print x[1],\"\\n\""
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "The two characters held by the union:\n",
        "\n",
        "H \n",
        "\n",
        "I \n",
        "\n"
       ]
      }
     ],
     "prompt_number": 11
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example 20.5, Page No 344"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "class survey:\n",
      "    def __init__(self,name,c_d_p,age,hour_per_week):\n",
      "        self.name = name\n",
      "        self.c_d_p = c_d_p\n",
      "        self.age = age\n",
      "        self.hour_per_week = hour_per_week\n",
      "    class provider:\n",
      "        def __init__(self,cable_company,dish_company):\n",
      "            self.cable_company = cable_company\n",
      "            self.dish_company = dish_company\n",
      "def DataEnter(ptr):\n",
      "    is_yes = raw_input(\"Are you using cable at home? (Yes or No): \")\n",
      "    if is_yes == 'Y' or is_yes == 'y':\n",
      "        ptr.provider.cable_company = raw_input(\"Enter the cable company name: \")\n",
      "        ptr.c_d_p = 'c'\n",
      "    else:\n",
      "        is_yes = raw_input(\"Are you using a satellite dish? (Yes or No): \")\n",
      "        if is_yes == 'Y' or is_yes == 'y':\n",
      "            ptr.provider.dish_company = raw_input(\"Enter the satellite dish company name: \")\n",
      "            ptr.c_d_p = 'd'\n",
      "        else:\n",
      "            ptr.c_d_p = 'p'\n",
      "    ptr.name = raw_input(\"Please enter your name: \")\n",
      "    ptr.age = int(raw_input(\"Your age : \"))\n",
      "    ptr.hour_per_week = int(raw_input(\"How many hours you spend on watching TV per week: \"))\n",
      "def DataDisplay(ptr):\n",
      "    print \"\\nHere\u2019s what you\u2019ve entered:\\n\"\n",
      "    print \"Name: \",ptr.name,\"\\n\"\n",
      "    print \"Age: \",ptr.age,\"\\n\"\n",
      "    print \"Hour per week: \",ptr.hour_per_week,\"\\n\"\n",
      "    if ptr.c_d_p == 'c':\n",
      "        print \"Your cable company is: \",ptr.provider.cable_company,\"\\n\"\n",
      "    elif ptr.c_d_p == 'd':\n",
      "        print \"Your satellite dish company is: \",ptr.provider.dish_company,\"\\n\"\n",
      "    else:\n",
      "        print \"You don\u2019t have cable or a satellite dish.\\n\"\n",
      "    print \"\\nThanks and Bye!\\n\"\n",
      "if __name__ == '__main__':\n",
      "    tv = survey(\"\",\"\",\"\",\"\")\n",
      "    DataEnter(tv)\n",
      "    DataDisplay(tv)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Are you using cable at home? (Yes or No): N\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Are you using a satellite dish? (Yes or No): Y\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Enter the satellite dish company name: ABCD Company\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Please enter your name: Tony Zhang\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Your age : 30\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "How many hours you spend on watching TV per week: 8\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " \n",
        "Here\u2019s what you\u2019ve entered:\n",
        "\n",
        "Name:  Tony Zhang \n",
        "\n",
        "Age:  30 \n",
        "\n",
        "Hour per week:  8 \n",
        "\n",
        "Your satellite dish company is:  ABCD Company \n",
        "\n",
        "\n",
        "Thanks and Bye!\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 2
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example 20.6, Page No 348"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "class bit_field:\n",
      "    def __init__(self,cable,dish):\n",
      "        self.cable = cable\n",
      "        self.dish = dish\n",
      "    cable = 1\n",
      "    dish = 1\n",
      "class survey:\n",
      "    def __init__(self,name,age,hour_per_week):\n",
      "        self.name = name\n",
      "        self.age = age\n",
      "        self.hour_per_week = hour_per_week\n",
      "    c_d = bit_field(\"\",\"\")\n",
      "    class provider:\n",
      "        def __init__(self,cable_company,dish_company):\n",
      "            self.cable_company = cable_company\n",
      "            self.dish_company = dish_company\n",
      "def DataEnter(ptr):\n",
      "    is_yes = raw_input(\"Are you using cable at home? (Yes or No): \")\n",
      "    if is_yes == 'Y' or is_yes == 'y':\n",
      "        ptr.provider.cable_company = raw_input(\"Enter the cable company name: \")\n",
      "        ptr.c_d.cable = 1\n",
      "        ptr.c_d.dish = 0\n",
      "    else:\n",
      "        is_yes = raw_input(\"Are you using a satellite dish? (Yes or No): \")\n",
      "        if is_yes == 'Y' or is_yes == 'y':\n",
      "            ptr.provider.dish_company = raw_input(\"Enter the satellite dish company name: \")\n",
      "            ptr.c_d.cable = 0\n",
      "            ptr.c_d.dish = 1\n",
      "        else:\n",
      "            ptr.c_d.cable = 0\n",
      "            ptr.c_d.dish = 0\n",
      "    ptr.name = raw_input(\"Please enter your name: \")\n",
      "    ptr.age = int(raw_input(\"Your age : \"))\n",
      "    ptr.hour_per_week = int(raw_input(\"How many hours you spend on watching TV per week: \"))\n",
      "def DataDisplay(ptr):\n",
      "    print \"\\nHere\u2019s what you\u2019ve entered:\\n\"\n",
      "    print \"Name: \",ptr.name,\"\\n\"\n",
      "    print \"Age: \",ptr.age,\"\\n\"\n",
      "    print \"Hour per week: \",ptr.hour_per_week,\"\\n\"\n",
      "    if ptr.c_d.cable and not ptr.c_d.dish:\n",
      "        print \"Your cable company is: \",ptr.provider.cable_company,\"\\n\"\n",
      "    elif not ptr.c_d.cable and ptr.c_d.dish:\n",
      "        print \"Your satellite dish company is: \",ptr.provider.dish_company,\"\\n\"\n",
      "    else:\n",
      "        print \"You don\u2019t have cable or a satellite dish.\\n\"\n",
      "    print \"\\nThanks and Bye!\\n\"\n",
      "if __name__ == '__main__':\n",
      "    tv = survey(\"\",\"\",\"\")\n",
      "    DataEnter(tv)\n",
      "    DataDisplay(tv)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Are you using cable at home? (Yes or No): N\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Are you using a satellite dish? (Yes or No): Y\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Enter the satellite dish company name: ABCD Company\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Please enter your name: Tony Zhang\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Your age : 30\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "How many hours you spend on watching TV per week: 8\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n",
        "Here\u2019s what you\u2019ve entered:\n",
        "\n",
        "Name:  Tony Zhang \n",
        "\n",
        "Age:  30 \n",
        "\n",
        "Hour per week:  8 \n",
        "\n",
        "Your satellite dish company is:  ABCD Company \n",
        "\n",
        "\n",
        "Thanks and Bye!\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 6
    }
   ],
   "metadata": {}
  }
 ]
}