{
 "metadata": {
  "name": "",
  "signature": "sha256:2cf0a369761f6b9850c2adad43b1edd33ca8cbea4df08e2e06de2898a570851d"
 },
 "nbformat": 3,
 "nbformat_minor": 0,
 "worksheets": [
  {
   "cells": [
    {
     "cell_type": "heading",
     "level": 1,
     "metadata": {},
     "source": [
      "CHAPTER 5: FUNCTIONS AND POINTERS"
     ]
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE:144"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "def message():                                          #function definition\n",
      "    print \"Smile,and the world smiles with you...\\n\"\n",
      "message()                                               #function call\n",
      "print \"Cry, and you stop the monotony!\\n\""
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Smile,and the world smiles with you...\n",
        "\n",
        "Cry, and you stop the monotony!\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 1
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE:146"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "def italy():\n",
      "    print \"I am in italy\\n\"\n",
      "def brazil():\n",
      "    print \"I am in brazil\\n\"\n",
      "def argentina():\n",
      "    print \"I am in argentina\\n\"\n",
      "print \"I am in main\\n\"\n",
      "italy();                                                #italy() will be called\n",
      "brazil();                                               #brazil() will be called\n",
      "argentina();                                            #argentina() will be called"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "I am in main\n",
        "\n",
        "I am in italy\n",
        "\n",
        "I am in brazil\n",
        "\n",
        "I am in argentina\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 2
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE:147"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "def italy():\n",
      "    print \"I am in italy\\n\"\n",
      "    brazil();                                                   #it will call brazil()\n",
      "    print \"I am back in italy\\n\"\n",
      "def brazil():\n",
      "    print \"I am in brazil\\n\"\n",
      "    argentina();                                                #it will call argentina()\n",
      "def argentina():\n",
      "    print \"I am in argentina\\n\"\n",
      "print \"I am in main\\n\"\n",
      "italy();                                                        #italy() is called\n",
      "print \"I am finally back in main\\n\""
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "I am in main\n",
        "\n",
        "I am in italy\n",
        "\n",
        "I am in brazil\n",
        "\n",
        "I am in argentina\n",
        "\n",
        "I am back in italy\n",
        "\n",
        "I am finally back in main\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 3
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE:148"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "def message():\n",
      "    print \"Can't imagine life without C\\n\"\n",
      "    main()                                               #it will call back main()\n",
      "def main():\n",
      "    message()\n",
      "main()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE:149"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "def message():\n",
      "    print \"Jewel Thief!!\\n\"\n",
      "message()                                             #1st call\n",
      "message()                                             #2nd call"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Jewel Thief!!\n",
        "\n",
        "Jewel Thief!!\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 4
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE:149"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "def message2():\n",
      "    print \"But the butter was bitter\\n\"\n",
      "def message1():\n",
      "    print \"Mary bought some butter\\n\"\n",
      "message1()\n",
      "message2()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Mary bought some butter\n",
        "\n",
        "But the butter was bitter\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 5
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE:151-152"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "def calsum(x,y,z):                                           #parameterized function\n",
      "    d=x+y+z\n",
      "    return d\n",
      "print \"Enter any three numbers\"\n",
      "a=eval(raw_input())\n",
      "b=eval(raw_input())\n",
      "c=eval(raw_input())\n",
      "sum=calsum(a,b,c)                                            #passing values as arguments\n",
      "print \"Sum=%d\\n\" % (sum)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Enter any three numbers\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "10\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "20\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "30\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Sum=60\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 6
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE:153"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "def fun():\n",
      "    print \"Enter any number\"\n",
      "    n=eval(raw_input())\n",
      "    if (n>=10 and n<=90):\n",
      "        return n\n",
      "    else:\n",
      "        return n+32\n",
      "fun()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Enter any number\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "100\n"
       ]
      },
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 7,
       "text": [
        "132"
       ]
      }
     ],
     "prompt_number": 7
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE:154"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "def fun(b):\n",
      "    b=60\n",
      "    print \"%d\\n\" % (b)                     #prints 60\n",
      "a=30\n",
      "fun(a)                                     #prints 30\n",
      "print \"%d\\n\" % (a)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "60\n",
        "\n",
        "30\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 8
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE:155"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "def display(j):\n",
      "    k=35\n",
      "    print \"%d\\n\" % (j)              #we can't print i directly here because scope of variable is local by default\n",
      "    print \"%d\\n\" % (k)\n",
      "i=20\n",
      "display(i)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "20\n",
        "\n",
        "35\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 9
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE:158-159"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "def square(x):\n",
      "    y=x*x\n",
      "    return y\n",
      "print \"Enter any number\"\n",
      "a=eval(raw_input())\n",
      "b=square(a)\n",
      "print \"Square of %f is %f\\n\" % (a,b)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Enter any number\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "2.5\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Square of 2.500000 is 6.250000\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 10
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE:161"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "i=3\n",
      "print \"Address of i=%u\\n\" % (id(i))                           #id() will return the loaction of a variable\n",
      "print \"Value of i=%d\\n\" % (i)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Address of i=20688560\n",
        "\n",
        "Value of i=3\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 12
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE:161"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "i=3\n",
      "print \"Address of i=%u\\n\" % (id(i))\n",
      "print \"Value of i=%d\\n\" % (i)\n",
      "print \"Value of i=%d\\n\" % (i)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Address of i=20688560\n",
        "\n",
        "Value of i=3\n",
        "\n",
        "Value of i=3\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 13
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE:162"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "i=3\n",
      "j=id(i)\n",
      "print \"Address of i=%u\\n\" % (id(i))                 #print address of i\n",
      "print \"Address of i=%u\\n\" % (j)                     #print address of i\n",
      "print \"Address of j=%u\\n\" % (id(j))                 #print address of j\n",
      "print \"Value of j=%u\\n\" % (j)                       #print value of j\n",
      "print \"Value of i=%d\\n\" % (i)\n",
      "print \"Value of i=%d\\n\" % (i)\n",
      "print \"Value of i=%d\\n\" % (i)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Address of i=20688560\n",
        "\n",
        "Address of i=20688560\n",
        "\n",
        "Address of j=88986780\n",
        "\n",
        "Value of j=20688560\n",
        "\n",
        "Value of i=3\n",
        "\n",
        "Value of i=3\n",
        "\n",
        "Value of i=3\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 14
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE:164"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "i=3\n",
      "j=id(i)\n",
      "k=id(j)\n",
      "print \"Address of i=%u\\n\" % (id(i))                    #print address of i\n",
      "print \"Address of i=%u\\n\" % (j)                        #print address of i\n",
      "print \"Address of i=%u\\n\" % (j)                        #print address of i\n",
      "print \"Address of j=%u\\n\" % (id(j))                    #print address of i\n",
      "print \"Address of j=%u\\n\" % (k)                        #print address of j\n",
      "print \"Address of k=%u\\n\" % (id(k))                    #print address of k\n",
      "print \"Value of j=%u\\n\" % (j)                          #print value of j\n",
      "print \"Value of k=%u\\n\" % (k)                          #print value of k\n",
      "print \"Value of i=%u\\n\" % (i)                          #print value of i\n",
      "print \"Value of i=%u\\n\" % (i)\n",
      "print \"Value of i=%u\\n\" % (i)\n",
      "print \"Value of i=%u\\n\" % (i)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Address of i=20688560\n",
        "\n",
        "Address of i=20688560\n",
        "\n",
        "Address of i=20688560\n",
        "\n",
        "Address of j=88986672\n",
        "\n",
        "Address of j=88986672\n",
        "\n",
        "Address of k=88986708\n",
        "\n",
        "Value of j=20688560\n",
        "\n",
        "Value of k=88986672\n",
        "\n",
        "Value of i=3\n",
        "\n",
        "Value of i=3\n",
        "\n",
        "Value of i=3\n",
        "\n",
        "Value of i=3\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 15
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE:166"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "def swapv(x,y):\n",
      "    x,y=y,x\n",
      "    print \"x=%d y=%d\\n\" % (x,y)\n",
      "a=10\n",
      "b=20\n",
      "swapv(a,b)\n",
      "print \"a=%d b=%d\\n\" % (a,b)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "x=20 y=10\n",
        "\n",
        "a=10 b=20\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 1
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE-167"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "def swapr():\n",
      "    global a,b                                           #global declaration\n",
      "    a,b=b,a\n",
      "a=10\n",
      "b=20\n",
      "swapr()\n",
      "print \"a=%d b=%d\\n\" % (a,b)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "a=20 b=10\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 1
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE:167-168"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "def areaperi(r,a,p):\n",
      "    a=3.14*r*r                                         #formula of area\n",
      "    p=2*3.14*r                                         #formula of perimeter\n",
      "    print \"Area=%f\\n\" % (a)\n",
      "    print \"Perimeter=%f\\n\" % (p)\n",
      "area=0\n",
      "perimeter=0\n",
      "print \"Enter radius of a circle\"\n",
      "radius=eval(raw_input())\n",
      "areaperi(radius,area,perimeter)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Enter radius of a circle\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "5\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Area=78.500000\n",
        "\n",
        "Perimeter=31.400000\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 22
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE:169"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "def factorial(x):\n",
      "    f=1\n",
      "    for i in range(x,1,-1):\n",
      "        f=f*i\n",
      "    return f\n",
      "print \"Enter any number\"\n",
      "a=eval(raw_input())\n",
      "fact=factorial(a)\n",
      "print \"Factorial value=%d\\n\" % (fact)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Enter any number\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "3\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Factorial value=6\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 23
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE:170"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "def rec(x):\n",
      "    if x==1:\n",
      "        return 1\n",
      "    else:\n",
      "        f=x*rec(x-1)                        \n",
      "    return f                                      #will call back the rec() function\n",
      "print \"Enter any number\"\n",
      "a=eval(raw_input())\n",
      "fact=rec(a)\n",
      "print \"Factorial value=%d\\n\" % (fact)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Enter any number\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "5\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Factorial value=120\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 24
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE:173"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "def add(i,j):\n",
      "    sum=i+j\n",
      "    return sum\n",
      "a=5\n",
      "b=2\n",
      "c=add(a,b)                                          #Transfers control to add()\n",
      "print \"sum=%d\\n\" % (c)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "sum=7\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 25
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE:175-176"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "def factorial(num):\n",
      "    f=1\n",
      "    for i in range(1,num+1,1):\n",
      "        f=f*i;\n",
      "    return f\n",
      "f=factorial(5)\n",
      "print \"%d\\n\" % f"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "120\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 3
    }
   ],
   "metadata": {}
  }
 ]
}