summaryrefslogtreecommitdiff
path: root/The_Spirit_of_C
diff options
context:
space:
mode:
Diffstat (limited to 'The_Spirit_of_C')
-rwxr-xr-xThe_Spirit_of_C/Chapter1.ipynb198
-rwxr-xr-xThe_Spirit_of_C/Chapter10.ipynb1020
-rwxr-xr-xThe_Spirit_of_C/Chapter11.ipynb383
-rwxr-xr-xThe_Spirit_of_C/Chapter12.ipynb455
-rwxr-xr-xThe_Spirit_of_C/Chapter13.ipynb346
-rwxr-xr-xThe_Spirit_of_C/Chapter14.ipynb298
-rwxr-xr-xThe_Spirit_of_C/chapter2.ipynb119
-rwxr-xr-xThe_Spirit_of_C/chapter3.ipynb241
-rwxr-xr-xThe_Spirit_of_C/chapter4.ipynb148
-rwxr-xr-xThe_Spirit_of_C/chapter5.ipynb218
-rwxr-xr-xThe_Spirit_of_C/chapter6.ipynb494
-rwxr-xr-xThe_Spirit_of_C/chapter7.ipynb690
-rwxr-xr-xThe_Spirit_of_C/chapter8.ipynb567
-rwxr-xr-xThe_Spirit_of_C/chapter9.ipynb590
-rwxr-xr-xThe_Spirit_of_C/screenshots/Screenshot_1.pngbin0 -> 414085 bytes
-rwxr-xr-xThe_Spirit_of_C/screenshots/Screenshot_2.pngbin0 -> 319968 bytes
-rwxr-xr-xThe_Spirit_of_C/screenshots/Screenshot_3.pngbin0 -> 211398 bytes
17 files changed, 5767 insertions, 0 deletions
diff --git a/The_Spirit_of_C/Chapter1.ipynb b/The_Spirit_of_C/Chapter1.ipynb
new file mode 100755
index 00000000..80b53e61
--- /dev/null
+++ b/The_Spirit_of_C/Chapter1.ipynb
@@ -0,0 +1,198 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:1c2e6d0b5736bd35dd626e4e22d0dbe67f82011189ddb91d07585ae3f73aa6b8"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 1, Elementary Programming"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 1-1 , Page number: 2"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# An interactive program to calculate the hypotenuse of a right triangle\n",
+ "\n",
+ "import math ## library for using sqrt function\n",
+ "\n",
+ "def square(a):\n",
+ "\t\"\"\"Returns the square of the given number \"\"\"\n",
+ "\treturn a*a\n",
+ "\n",
+ "print \"Enter the lengths of the two legs of a right triangle\"\n",
+ "print \"The program will display the length of the hypotenuse.\"\n",
+ "print \"Enter zero or negative values to end program\"\n",
+ "\n",
+ "# Priming reads follow\n",
+ "print \"First leg (0.0 to quit)? \",\n",
+ "a_leg = 3\n",
+ "print a_leg\n",
+ "print \"Second leg (0.0 to quit)? \",\n",
+ "b_leg = 4\n",
+ "print b_leg\n",
+ "\n",
+ "while a_leg>0.0 and b_leg>0.0:\n",
+ "\tprint \"The legs of the right triangle are %.2f and %.2f,\\n\"%(a_leg,b_leg),\n",
+ "\t# Hypotenuse is square root of a*a + b*b\n",
+ "\thypotenuse = math.sqrt(square(a_leg) + square(b_leg))\n",
+ "\tprint \" so the hypotenuse is %.2f\\n\\n\"%hypotenuse,\n",
+ "\tprint \"First leg (0.0 to quit)? \",\n",
+ "\ta_leg = 0.0\t\t\t# To terminate the loop\n",
+ "\tprint a_leg\n",
+ "\tprint \"Second leg (0.0 to quit)? \",\n",
+ "\tb_leg = 0.0\n",
+ "\tprint b_leg\n",
+ "\n",
+ "print \"Thank you.\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Enter the lengths of the two legs of a right triangle\n",
+ "The program will display the length of the hypotenuse.\n",
+ "Enter zero or negative values to end program\n",
+ "First leg (0.0 to quit)? 3\n",
+ "Second leg (0.0 to quit)? 4\n",
+ "The legs of the right triangle are 3.00 and 4.00,\n",
+ " so the hypotenuse is 5.00\n",
+ "\n",
+ "First leg (0.0 to quit)? 0.0\n",
+ "Second leg (0.0 to quit)? 0.0\n",
+ "Thank you.\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 1-2 , Page number: 3"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "\n",
+ "def main(): \n",
+ "\t\"\"\"simply returns a string\"\"\"\n",
+ "\t# There's no main() function in python.This main() function is no different that any other user-defined functions\n",
+ "\treturn \"Welcome to C programming!\\n\"\n",
+ "\t\n",
+ "print main()"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Welcome to C programming!\n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 1-3 , Page number: 6"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Use of braces \n",
+ "\n",
+ "def main():\n",
+ "\t# in python, proper indentation works as braces\n",
+ "\t# the following lines come under the main() function block due to indentation\n",
+ "\tprint \"Give me land, lots of land\",\n",
+ "\tprint \"And the starry skies above...\\n\",\n",
+ "\n",
+ "main()"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Give me land, lots of land And the starry skies above...\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 1-4 , Page number: 8"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# A short poem\n",
+ "\n",
+ "def main():\n",
+ "\tprint \"Mary had a little lamb,\",\n",
+ "\tprint \"its fleece was white as snow.\\n\",\n",
+ "\tprint \"And everywhere that Mary went,\",\n",
+ "\tprint \"the lamb was sure to go.\\n\"\n",
+ "\n",
+ "main()"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Mary had a little lamb, its fleece was white as snow.\n",
+ "And everywhere that Mary went, the lamb was sure to go.\n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/The_Spirit_of_C/Chapter10.ipynb b/The_Spirit_of_C/Chapter10.ipynb
new file mode 100755
index 00000000..ed7b99e5
--- /dev/null
+++ b/The_Spirit_of_C/Chapter10.ipynb
@@ -0,0 +1,1020 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:970f28e2206ea4472dd82a3808592db202377fcd9a01fc69b666e61a221db5b1"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 10, Arrays"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 10-1, Page Number : 227"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Introduction to arrays\n",
+ "\n",
+ "array = []\t\t# defining array which is rather called list in python\n",
+ "\n",
+ "print \"You are to enter 5 integers.\\n\"\n",
+ "\n",
+ "# Input the 5 integers into array \"array\"\n",
+ "\n",
+ "for i in range(5) : # equivalent to for i in range(0,5,1)\n",
+ "\tprint \"Enter integer #%d: \"%(i+1),\n",
+ "\tval = int(raw_input())\n",
+ "\tarray.insert(i,val)\t\t\t\t# insert function is used to add elements to list : \n",
+ "\t\t\t\t\t\t\t\t\t# insert(i,val) where i is the index and val is the value to be inserted\n",
+ "\n",
+ "print \"\\nThank you.\\n\"\n",
+ "\n",
+ "# Print out the integers stored in array \"array\"\n",
+ "j = 1\t# used as a counter\n",
+ "for i in array:\t\t\t\t# shorthand way of scanning through the list; using \"in\"\n",
+ "\tprint \"Integer #%d = %d.\"%(j,i)\n",
+ "\tj += 1"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "You are to enter 5 integers.\n",
+ "\n",
+ "Enter integer #1:"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "3\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Enter integer #2:"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "12\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Enter integer #3:"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "8\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Enter integer #4:"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "63\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Enter integer #5:"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "0\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " \n",
+ "Thank you.\n",
+ "\n",
+ "Integer #1 = 3.\n",
+ "Integer #2 = 12.\n",
+ "Integer #3 = 8.\n",
+ "Integer #4 = 63.\n",
+ "Integer #5 = 0.\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 10-2, Page Number : 228"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Initializing a global array\n",
+ "\n",
+ "array = [ 4, 6, 5, 7, 2 ]\n",
+ "\n",
+ "def main() :\t\t\t# just a user-defined function ; not equivalent to the built-in main() function in C\n",
+ "\t\"\"\" prints the integers stored in array \"array\" \"\"\"\n",
+ "\tj = 1\t\t# counter \n",
+ "\tfor i in array :\n",
+ "\t\tprint \"Integer #%d = %d.\"%(j,i)\n",
+ "\t\tj += 1\n",
+ "\n",
+ "main()"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Integer #1 = 4.\n",
+ "Integer #2 = 6.\n",
+ "Integer #3 = 5.\n",
+ "Integer #4 = 7.\n",
+ "Integer #5 = 2.\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 10-3, Page Number: 230"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# The number of array elements actually used may vary\n",
+ "\n",
+ "# Read in the size of the array\n",
+ "print \"How many integers will you enter?\",\n",
+ "array_size = 6\n",
+ "print array_size\n",
+ "\n",
+ "# Read in the integers\n",
+ "print \"\\nPlease enter %d integers:\"%array_size\n",
+ "array = [ 12, 3, -5, 21, 0, 899 ]\t# Lists dynamically allocate memory \n",
+ "for i in range(array_size) :\n",
+ "\tprint array[i],\n",
+ "# Print out the integers\n",
+ "\n",
+ "print(\"\\n\")\n",
+ "for i in range(array_size) :\n",
+ "\tprint \"Integer #%d = %d.\"%(i+1,array[i])"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "How many integers will you enter? 6\n",
+ "\n",
+ "Please enter 6 integers:\n",
+ "12 3 -5 21 0 899 \n",
+ "\n",
+ "Integer #1 = 12.\n",
+ "Integer #2 = 3.\n",
+ "Integer #3 = -5.\n",
+ "Integer #4 = 21.\n",
+ "Integer #5 = 0.\n",
+ "Integer #6 = 899.\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 10-4, Page Number: 231"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# The trailer method\n",
+ "\n",
+ "# Macro definition\n",
+ "MAX_ARRAY_SIZE = 20\n",
+ "TRAILER = -9999\n",
+ "\n",
+ "# Read in the integers\n",
+ "\n",
+ "print \"Please enter up to %d integers, using %d as a trailer:\"%(MAX_ARRAY_SIZE,TRAILER)\n",
+ "array = [ 3, 75, -34, 6, -1, 2, 41, 0, 90, -9999]\n",
+ "for array_size in range(MAX_ARRAY_SIZE) :\n",
+ "\tprint array[array_size],\n",
+ "\tif array[array_size] == -9999 :\n",
+ "\t\tbreak\t\n",
+ "\t\n",
+ "# Print out the integers\n",
+ "print \"\\n\\nYou have entered %d integers\"%array_size\n",
+ "for i in range(array_size) :\n",
+ "\tprint \"Integer #%d = %d.\"%(i+1,array[i])"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Please enter up to 20 integers, using -9999 as a trailer:\n",
+ "3 75 -34 6 -1 2 41 0 90 -9999 \n",
+ "\n",
+ "You have entered 9 integers\n",
+ "Integer #1 = 3.\n",
+ "Integer #2 = 75.\n",
+ "Integer #3 = -34.\n",
+ "Integer #4 = 6.\n",
+ "Integer #5 = -1.\n",
+ "Integer #6 = 2.\n",
+ "Integer #7 = 41.\n",
+ "Integer #8 = 0.\n",
+ "Integer #9 = 90.\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 10-5, Page Number: 233"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Caculating the average grade for a class\n",
+ "\n",
+ "# Macro definition\n",
+ "\n",
+ "MAX_GRADES = 20 \t# The class may have up to 20 students\n",
+ "TRAILER = -9999\t\t# -9999 marks the end of the grade list\n",
+ "\n",
+ "# Read in the grades\n",
+ "\n",
+ "print \"Please enter up to %d grades, using %d as a trailer:\"%(MAX_GRADES,TRAILER)\n",
+ "grades = [ 41, 92, 15, 65, 0, 78, 81, 96, -9999 ]\n",
+ "for num_grades in range(MAX_GRADES) :\n",
+ "\tprint grades[num_grades]\n",
+ "\tif grades[num_grades] == -9999 :\n",
+ "\t\tbreak\n",
+ "\n",
+ "print \"\\nYou have entered %d grades.\"%num_grades\n",
+ "\n",
+ "# Find the average\n",
+ "sum = 0.0 \n",
+ "for i in range(num_grades) :\n",
+ "\tsum += grades[i]\n",
+ "\n",
+ "print \"\\nThe average grade is %f.\"%(sum/num_grades)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Please enter up to 20 grades, using -9999 as a trailer:\n",
+ "41\n",
+ "92\n",
+ "15\n",
+ "65\n",
+ "0\n",
+ "78\n",
+ "81\n",
+ "96\n",
+ "-9999\n",
+ "\n",
+ "You have entered 8 grades.\n",
+ "\n",
+ "The average grade is 58.500000.\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 10-6, Page Number: 235"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Determining which grades in a class are above the average\n",
+ "\n",
+ "# Macro definition\n",
+ "\n",
+ "MAX_GRADES = 20 \t# The class may have up to 20 students\n",
+ "TRAILER = -9999\t\t# -9999 marks the end of the grade list\n",
+ "\n",
+ "# Read in the grades\n",
+ "\n",
+ "print \"Please enter up to %d grades, using %d as a trailer:\"%(MAX_GRADES,TRAILER)\n",
+ "grades = [ 41, 92, 15, 65, 0, 78, 81, 96, -9999 ]\n",
+ "for num_grades in range(MAX_GRADES) :\n",
+ "\tprint grades[num_grades]\n",
+ "\tif grades[num_grades] == -9999 :\n",
+ "\t\tbreak\n",
+ "\n",
+ "print \"\\nYou have entered %d grades.\"%num_grades\n",
+ "\n",
+ "# Find the average\n",
+ "sum = 0.0 \n",
+ "for i in range(num_grades) :\n",
+ "\tsum += grades[i]\n",
+ "\n",
+ "avg_grade = sum/num_grades\n",
+ "print \"\\nThe average grade is %f.\"%avg_grade\n",
+ "\n",
+ "# Find who got above average\n",
+ "\n",
+ "print \"\\nThe following grades were above average:\"\n",
+ "for i in range(num_grades) :\n",
+ "\tif grades[i] > avg_grade :\n",
+ "\t\tprint \"%f (student #%d)\"%(grades[i],i+1)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Please enter up to 20 grades, using -9999 as a trailer:\n",
+ "41\n",
+ "92\n",
+ "15\n",
+ "65\n",
+ "0\n",
+ "78\n",
+ "81\n",
+ "96\n",
+ "-9999\n",
+ "\n",
+ "You have entered 8 grades.\n",
+ "\n",
+ "The average grade is 58.500000.\n",
+ "\n",
+ "The following grades were above average:\n",
+ "92.000000 (student #2)\n",
+ "65.000000 (student #4)\n",
+ "78.000000 (student #6)\n",
+ "81.000000 (student #7)\n",
+ "96.000000 (student #8)\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 10-7, Page Number 237"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Reversing an array\n",
+ "\n",
+ "# Macro definition\n",
+ "ARRAY_SIZE = 10 \t# The array has 10 elements \n",
+ "\n",
+ "# Read in the array\n",
+ "\n",
+ "print \"Please enter %d integers:\"%ARRAY_SIZE\n",
+ "array = [ 10, 42, 7, 0, 923, 13, -5, 6, 19, 3]\n",
+ "for i in range(10) :\n",
+ "\tprint array[i],\n",
+ "\n",
+ "# Echo the array\n",
+ "\n",
+ "print \"\\n\\nThe original array was:\"\n",
+ "for i in range(10) :\n",
+ "\tprint array[i],\n",
+ "\n",
+ "# Print the array in reverse\n",
+ "\n",
+ "print \"\\n\\nThe reversed array is:\"\n",
+ "for i in range(ARRAY_SIZE-1,-1,-1) :\n",
+ "\tprint array[i],"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Please enter 10 integers:\n",
+ "10 42 7 0 923 13 -5 6 19 3 \n",
+ "\n",
+ "The original array was:\n",
+ "10 42 7 0 923 13 -5 6 19 3 \n",
+ "\n",
+ "The reversed array is:\n",
+ "3 19 6 -5 13 923 0 7 42 10\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 10-8, Page Number: 240"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import sys\n",
+ "# Reversing a character string\n",
+ "\n",
+ "# Macro definition\n",
+ "MAX_STRING_SIZE = 10\n",
+ "\n",
+ "# Read in the word\n",
+ "\n",
+ "print \"Please enter a word of up to %d letters:\"%MAX_STRING_SIZE\n",
+ "word = \"bingo\"\n",
+ "print word\n",
+ "\n",
+ "# Echo the word \n",
+ "\n",
+ "print \"\\nThe word is %s.\"%word\n",
+ "\n",
+ "# Find thw word length\n",
+ "string_size = 0\n",
+ "for i in word :\t\t\t# To iterate over the entire string\n",
+ "\tstring_size += 1\n",
+ "\n",
+ "# Print the word in reverse\n",
+ "\n",
+ "print \"\\nThe reversed word is \",\n",
+ "for i in range(string_size-1,-1,-1) :\n",
+ "\tsys.stdout.write(\"%c\"%word[i]) # For printing in the same line without implicit whitespaces\n",
+ "\n",
+ "print "
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Please enter a word of up to 10 letters:\n",
+ "bingo\n",
+ "\n",
+ "The word is bingo.\n",
+ "\n",
+ "The reversed word is ognib\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 10-9, Page Number: 242"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Calculating the minimum and maximum grade in a class\n",
+ "\n",
+ "# Macro definition\n",
+ "\n",
+ "MAX_GRADES = 20 \t# The class may have up to 20 students\n",
+ "TRAILER = -9999\t\t# -9999 marks the end of the grade list\n",
+ "\n",
+ "# Read in the grades\n",
+ "\n",
+ "print \"Please enter up to %d grades, using %d as a trailer:\"%(MAX_GRADES,TRAILER)\n",
+ "grades = [ 41, 92, 15, 65, 0, 78, 81, 96, -9999 ]\n",
+ "for num_grades in range(MAX_GRADES) :\n",
+ "\tprint grades[num_grades]\n",
+ "\tif grades[num_grades] == -9999 :\n",
+ "\t\tbreak\n",
+ "\n",
+ "print \"\\nYou have entered %d grades.\"%num_grades\n",
+ "\n",
+ "# Find the minimum grade\n",
+ "\n",
+ "min = grades[0]\n",
+ "for i in range(num_grades) :\n",
+ "\tif grades[i] < min :\n",
+ "\t\tmin = grades[i]\n",
+ "\n",
+ "print \"\\nThe lowest grade is %f\"%min\n",
+ "\n",
+ "# Find the maximum grade\n",
+ "\n",
+ "max = grades[0]\n",
+ "for i in range(num_grades) :\n",
+ "\tif grades[i] > min :\n",
+ "\t\tmax = grades[i]\n",
+ "\n",
+ "print \"\\nThe lowest grade is %f\"%max\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Please enter up to 20 grades, using -9999 as a trailer:\n",
+ "41\n",
+ "92\n",
+ "15\n",
+ "65\n",
+ "0\n",
+ "78\n",
+ "81\n",
+ "96\n",
+ "-9999\n",
+ "\n",
+ "You have entered 8 grades.\n",
+ "\n",
+ "The lowest grade is 0.000000\n",
+ "\n",
+ "The lowest grade is 96.000000\n"
+ ]
+ }
+ ],
+ "prompt_number": 9
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 10-10, Page Number: 243"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Sorting an array\n",
+ "\n",
+ "# Macro definition\n",
+ "MAX_ARRAY_SIZE = 20 \t# The array may have up to 20 elements\n",
+ "\n",
+ "array_size = 10\n",
+ "print \"How many numbers?\",\n",
+ "print array_size\n",
+ "\n",
+ "while array_size < 1 or array_size > MAX_ARRAY_SIZE\t:\n",
+ "\tprint \"How many numbers?\",\n",
+ "\tprint array_size\n",
+ "\n",
+ "# Read in the array\n",
+ "\n",
+ "print \"Please enter the integers:\"\n",
+ "array = [ 10, 42, 7, 0, 923, 13, -5, 6, 19, 3]\n",
+ "for i in range(array_size) :\n",
+ "\tprint array[i],\n",
+ "\n",
+ "# Echo the array\n",
+ "\n",
+ "print \"\\n\\nThe original array is:\"\n",
+ "for i in range(array_size) :\n",
+ "\tprint array[i],\n",
+ "\n",
+ "# Sort the array\n",
+ "\n",
+ "for i in range(array_size-1) :\n",
+ "\tfor j in range(i+1, array_size) :\n",
+ "\t\tif array[i] > array[j] :\n",
+ "\t\t\ttemp = array[i]\n",
+ "\t\t\tarray[i] = array[j]\n",
+ "\t\t\tarray[j] = temp\n",
+ "\n",
+ "# Printing the sorted array\n",
+ "\n",
+ "print \"\\n\\nThe sorted array is\"\n",
+ "for i in range(array_size) :\n",
+ "\tprint array[i],"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "How many numbers? 10\n",
+ "Please enter the integers:\n",
+ "10 42 7 0 923 13 -5 6 19 3 \n",
+ "\n",
+ "The original array is:\n",
+ "10 42 7 0 923 13 -5 6 19 3 \n",
+ "\n",
+ "The sorted array is\n",
+ "-5 0 3 6 7 10 13 19 42 923\n"
+ ]
+ }
+ ],
+ "prompt_number": 10
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 10-11, Page Number: 247"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Finding the median of an array\n",
+ "\n",
+ "# Macro definition\n",
+ "MAX_ARRAY_SIZE = 20 \t# The array may have up to 20 elements\n",
+ "\n",
+ "array_size = 0\n",
+ "array = []\n",
+ "\n",
+ "def get_size()\t:\n",
+ "\t\"\"\" reads the size of the array (until a valid value is entered) \"\"\"\n",
+ "\tglobal array_size\n",
+ "\tarray_size = 10\n",
+ "\tprint \"How many numbers?\",\n",
+ "\tprint array_size\n",
+ "\twhile array_size < 1 or array_size > MAX_ARRAY_SIZE\t:\n",
+ "\t\tprint \"How many numbers?\",\n",
+ "\t\tprint array_size\n",
+ "\n",
+ "\n",
+ "def read_array() :\n",
+ "\t\"\"\" read in the array \"\"\"\n",
+ "\tglobal array\n",
+ "\tprint \"Please enter the integers:\"\n",
+ "\tarray = [ 10, 42, 7, 0, 923, 13, -5, 6, 19, 3 ]\n",
+ "\tfor i in range(array_size) :\n",
+ "\t\tprint array[i],\n",
+ "\n",
+ "def write_array() :\n",
+ "\t\"\"\" write out the array \"\"\"\n",
+ "\tfor i in range(array_size) :\n",
+ "\t\tprint array[i],\n",
+ "\n",
+ "def sort_array() :\n",
+ "\t\"\"\" sort the array \"\"\"\n",
+ "\tglobal array\n",
+ "\tfor i in range(array_size-1) :\n",
+ "\t\tfor j in range(i+1, array_size) :\n",
+ "\t\t\tif array[i] > array[j] :\n",
+ "\t\t\t\ttemp = array[i]\n",
+ "\t\t\t\tarray[i] = array[j]\n",
+ "\t\t\t\tarray[j] = temp\n",
+ "\n",
+ "def even(n) :\n",
+ "\t\"\"\" returns non-zero(true) if n is even else returns zero(false) \"\"\"\n",
+ "\treturn ((n/2)*2 == n)\n",
+ "\n",
+ "get_size()\t\t# Read in the size of the array\n",
+ "\n",
+ "read_array()\t# Read in the array\n",
+ "\n",
+ "print \"\\n\\nThe original array is:\"\n",
+ "write_array()\t# Echo the array\n",
+ "\n",
+ "sort_array()\t# Sort the array\n",
+ "\n",
+ "print \"\\n\\nThe sorted array is:\"\n",
+ "write_array()\t# Print the sorted array\n",
+ "\n",
+ "print \"\\n\\nThe median is:\"\n",
+ "# The equivalent of tertiary conditional operator in python is a if test else b\n",
+ "print \"%.1f\"%( ((array[ array_size / 2 -1] + array[ array_size / 2 ]) / 2.0 ) if even(array_size) else float(array[ array_size / 2 ]) ) "
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "How many numbers? 10\n",
+ "Please enter the integers:\n",
+ "10 42 7 0 923 13 -5 6 19 3 \n",
+ "\n",
+ "The original array is:\n",
+ "10 42 7 0 923 13 -5 6 19 3 \n",
+ "\n",
+ "The sorted array is:\n",
+ "-5 0 3 6 7 10 13 19 42 923 \n",
+ "\n",
+ "The median is:\n",
+ "8.5\n"
+ ]
+ }
+ ],
+ "prompt_number": 11
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 10-12, Page Number: 251"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Tally how many of each number within a range are entered\n",
+ "\n",
+ "# Macro definition\n",
+ "RANGE_LOW = 1\n",
+ "RANGE_HIGH = 10\t\t\t# Tallies numbers between RANGE_LOW and RANGE_HIGH\n",
+ "TRAILER = -1 \t\t\t# TRAILER marks end of data\n",
+ "\n",
+ "inputfeed = [ 3, 5, 1, 10, 8, 5, 10, 6, 2, 11, 4, 9, -2, 3, 2, 9, -1 ]\t\t# additional array for the sake of providing input\n",
+ "\n",
+ "tally = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\t\t# empty array\n",
+ "# Input numbers\n",
+ "print \"Please enter a number between %d and %d (%d to quit): \"%(RANGE_LOW,RANGE_HIGH,TRAILER),\n",
+ "num = inputfeed[0]\n",
+ "print num\n",
+ "\n",
+ "i = 1\n",
+ "while num != TRAILER :\n",
+ "\tif num < RANGE_LOW or num > RANGE_HIGH : \t\t# Out of range\n",
+ "\t\tprint \"%d is not between %d and %d.\"%(num,RANGE_LOW,RANGE_HIGH)\n",
+ "\telse :\n",
+ "\t\ttally[ num - RANGE_LOW] += 1\t\n",
+ "\tprint \"\\nEnter another number: \",\n",
+ "\tnum = inputfeed[i]\n",
+ "\tprint num\n",
+ "\ti += 1 \t\t\t# to iterate over the input array\n",
+ "\n",
+ "# Print totals\n",
+ "\n",
+ "print \"\\n------------\\n\\nYou entered:\"\n",
+ "for i in range(RANGE_HIGH - RANGE_LOW + 1) :\n",
+ "\tprint \"%2d %2d's\"%(tally[i],i + RANGE_LOW)\n",
+ "\n",
+ "print \"\\nThank you.\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Please enter a number between 1 and 10 (-1 to quit): 3\n",
+ "\n",
+ "Enter another number: 5\n",
+ "\n",
+ "Enter another number: 1\n",
+ "\n",
+ "Enter another number: 10\n",
+ "\n",
+ "Enter another number: 8\n",
+ "\n",
+ "Enter another number: 5\n",
+ "\n",
+ "Enter another number: 10\n",
+ "\n",
+ "Enter another number: 6\n",
+ "\n",
+ "Enter another number: 2\n",
+ "\n",
+ "Enter another number: 11\n",
+ "11 is not between 1 and 10.\n",
+ "\n",
+ "Enter another number: 4\n",
+ "\n",
+ "Enter another number: 9\n",
+ "\n",
+ "Enter another number: -2\n",
+ "-2 is not between 1 and 10.\n",
+ "\n",
+ "Enter another number: 3\n",
+ "\n",
+ "Enter another number: 2\n",
+ "\n",
+ "Enter another number: 9\n",
+ "\n",
+ "Enter another number: -1\n",
+ "\n",
+ "------------\n",
+ "\n",
+ "You entered:\n",
+ " 1 1's\n",
+ " 2 2's\n",
+ " 2 3's\n",
+ " 1 4's\n",
+ " 2 5's\n",
+ " 1 6's\n",
+ " 0 7's\n",
+ " 1 8's\n",
+ " 2 9's\n",
+ " 2 10's\n",
+ "\n",
+ "Thank you.\n"
+ ]
+ }
+ ],
+ "prompt_number": 12
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 10-13, Page Number: 255"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Program to report car prices. User enters car make by number and car year. \n",
+ "# Program reports price. All data is fictitious\n",
+ "\n",
+ "# 2-D array (4 X 12 ) of prices : row = make , column = year\n",
+ "price_list = [\t[ 4775, 4980, 5222, 5305, 5483, 5547, 5596, 5713, 5842, 5903, 6043, 6230 ], # Volkswagen\n",
+ "\t\t\t\t[ 4853, 5140, 5413, 5590, 5723, 5848, 5762, 5944, 6104, 6255, 6370, 6526 ],\t# Chevy\n",
+ "\t\t\t\t[ 5627, 5772, 5973, 6210, 6539, 6720, 6792, 6930, 7054, 7202, 7355, 7562 ], # Cadillac\n",
+ "\t\t\t\t[ 1576, 1738, 1970, 2151, 2205, 2280, 2442, 2580, 2814, 1953, 3078, 3201 ],\t# Honda\n",
+ "\t\t\t]\t\n",
+ "\n",
+ "def get_make() : \n",
+ "\t\"\"\" read in and return the number (make) of the desired car \"\"\"\n",
+ "\t\n",
+ "\t# Print the choice numbers and names\n",
+ "\tfor i in range(1,5) :\n",
+ "\t\tprint \"%d=\"%i,\n",
+ "\t\tprint_make(i)\n",
+ "\t\tprint \",\",\n",
+ "\tprint \"0=END\"\n",
+ "\n",
+ "\t# Read in the selection by number\n",
+ "\tprint \" Which car do you want? \",\n",
+ "\tmake = 2\n",
+ "\tprint make\n",
+ "\twhile make < 0 or make > 4 :\n",
+ "\t\tprint \" Which car do you want? \",\n",
+ "\t\tmake = 2\n",
+ "\t\tprint make\n",
+ "\n",
+ "\treturn make\n",
+ "\n",
+ "def get_year() :\t\n",
+ "\t\"\"\" read in and return the year of the desired car \"\"\"\n",
+ "\n",
+ "\tprint \" What year (1975-1986)?\",\n",
+ "\tyear = 1980\n",
+ "\tprint year\n",
+ "\twhile year < 1975 and year > 1986 :\n",
+ "\t\tprint \" What year (1975-1986)?\",\n",
+ "\t\tyear = 1980\n",
+ "\t\tprint year\n",
+ "\n",
+ "\treturn year\n",
+ "\n",
+ "def price (car,yr) :\n",
+ "\t\"\"\" Use \"car\" and \"year\" to generate an index into \"price_list\" and return the corresponding entry \"\"\"\n",
+ "\treturn price_list[ car - 1 ][ yr - 1975]\n",
+ "\n",
+ "def print_make(car) :\n",
+ "\t\"\"\" print the make of \"car\" according to its value \"\"\"\n",
+ "\tif car == 1 : \n",
+ "\t\tprint \"Volkswagen\",\n",
+ "\telif car == 2 :\n",
+ "\t\tprint \"Chevy\",\n",
+ "\telif car == 3 :\n",
+ "\t\tprint \"Cadillac\",\n",
+ "\telse :\n",
+ "\t\tprint \"Honda\",\n",
+ "\n",
+ "make = get_make()\n",
+ "\n",
+ "while make != 0 :\t\t# O indicates end of input\n",
+ "\tyear = get_year()\n",
+ "\tprint \"The price of a %d\"%year,\n",
+ "\tprint_make(make)\n",
+ "\tprint \" is $%d.\\n\"%price(make,year)\n",
+ "\tmake = 0 # To terminate the loop\n",
+ "\n",
+ "print \"\\nThank you for buying all those cars!\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "1= Volkswagen , 2= Chevy , 3= Cadillac , 4= Honda , 0=END\n",
+ " Which car do you want? 2\n",
+ " What year (1975-1986)? 1980\n",
+ "The price of a 1980 Chevy is $5848.\n",
+ "\n",
+ "\n",
+ "Thank you for buying all those cars!\n"
+ ]
+ }
+ ],
+ "prompt_number": 13
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/The_Spirit_of_C/Chapter11.ipynb b/The_Spirit_of_C/Chapter11.ipynb
new file mode 100755
index 00000000..241e1c1e
--- /dev/null
+++ b/The_Spirit_of_C/Chapter11.ipynb
@@ -0,0 +1,383 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:3a9b6dffdf9d20cf5158c028c4012a0a2cf4ee76994f18e9b81499931df7cb5d"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 11, Pointers and Indirection"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 11-1, Page Number : 278"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Introduction to pointers\n",
+ "\n",
+ "# There is no concept of pointers in python\n",
+ "i = 3\n",
+ "\n",
+ "j = id(i)\t# id() returns the address of the variable supplied\n",
+ "j = i \t\t# assign value of i to j such that it seems like j points to i\n",
+ "k = j\n",
+ "j = 4\n",
+ "\n",
+ "print \"i = %d, *j = %d, k = %d\"%(i,j,k)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "i = 3, *j = 4, k = 3\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 11-2, Page Number: 280"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Demonstration of passing by reference for a function to be able to modify its parameters\n",
+ "\n",
+ "def modify(i) :\n",
+ "\ti = 3\n",
+ "\treturn i\n",
+ "\n",
+ "i = 1\n",
+ "print \"i is now equal to %d\"%i\n",
+ "\n",
+ "i = modify(i)\t\t\t\n",
+ "print \"i is now equal to %d\"%i"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "i is now equal to 1\n",
+ "i is now equal to 3\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 11-3, Page Number: 281"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Pointer parameters in action: the swap routine\n",
+ "\n",
+ "def swap(i,j) :\n",
+ "\t\"\"\" exchange i with j and return \"\"\"\n",
+ "\ttemp = i \t\t\t# temp variable can be avoided using i,j = j,i\n",
+ "\ti = j\n",
+ "\tj = temp\n",
+ "\treturn i,j\n",
+ "\n",
+ "i = 1\n",
+ "j = 9\n",
+ "print \"i = %d and j = %d\"%(i,j)\n",
+ "\n",
+ "# Now exchange them\n",
+ "i, j = swap(i,j)\n",
+ "print \"\\nnow i = %d and j = %d\"%(i,j)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "i = 1 and j = 9\n",
+ "\n",
+ "now i = 9 and j = 1\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 11-4, Page Number: 282"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Array names are constant pointers\n",
+ "\n",
+ "an_array = [ 3, 7 ]\n",
+ "\n",
+ "def main() :\n",
+ "\talso = an_array\n",
+ "\talso[0] = 14\n",
+ "\tprint \"an_array = { %d, %d }\"%(an_array[0],an_array[1])\n",
+ "\n",
+ "main()"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "an_array = { 14, 7 }\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 11-5, Page Number: 284"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Sorting an array revisited\n",
+ "# Passing an array as parameter\n",
+ "\n",
+ "# Macro definition\n",
+ "MAX_ARRAY_SIZE = 20\t\t# The array may have up to 20 elements\n",
+ "# Message flags for \"print array\"\n",
+ "ORIGINAL = 0\t# Display original array\n",
+ "SORTED = 1\t\t# Display sorted array\n",
+ "\n",
+ "numbers = [ 10, 42, 7, 0, 923, 12, -5, 6, 19, 3 ]\n",
+ "array_size = 0\n",
+ "\n",
+ "def get_size(size)\t:\n",
+ "\t\"\"\" reads the size of the array (until a valid value is entered) \"\"\"\n",
+ "\tglobal array_size\n",
+ "\tprint \"How many numbers?\",\n",
+ "\tsize = 10\n",
+ "\tprint size\n",
+ "\twhile size < 1 or size > MAX_ARRAY_SIZE\t:\n",
+ "\t\tprint \"How many numbers?\",\n",
+ "\t\tsize = 10\n",
+ "\t\tprint size\n",
+ "\tarray_size = size\n",
+ "\n",
+ "def get_array(array, size) :\n",
+ "\t\"\"\" read in the array called 'array' of size 'size' \"\"\"\n",
+ "\tprint \"Please enter the integers:\"\n",
+ "\tfor i in array :\n",
+ "\t\tprint i,\n",
+ "\tprint\n",
+ "\n",
+ "def print_array(array, size, message) :\n",
+ "\t\"\"\" print out the array on a single line. 'message' is a flag indicating which message to display(ORIGINAL or SORTED) \"\"\"\n",
+ "\tif message == ORIGINAL :\n",
+ "\t\tprint \"\\nThe original array is:\"\n",
+ "\telse :\n",
+ "\t\tprint \"\\nThe sorted array is:\"\n",
+ "\tfor i in array :\n",
+ "\t\tprint i,\n",
+ "\tprint\n",
+ "\n",
+ "def sort_array(array,size) :\n",
+ "\t\"\"\" sort 'array' of size 'size' \"\"\"\n",
+ "\tfor i in range(size - 1) :\n",
+ "\t\tfor j in range(i+1, size) :\n",
+ "\t\t\tif array[i] > array[j] :\n",
+ "\t\t\t\telement_swap(array, i, j)\n",
+ "\n",
+ "def element_swap(array, i, j) :\n",
+ "\t\"\"\" swap elements 'i' and 'j' of 'array' \"\"\"\n",
+ "\tglobal numbers\n",
+ "\tnumbers[i],numbers[j] = numbers[j],numbers[i]\n",
+ "\n",
+ "\n",
+ "get_size(array_size)\t\t\t\t\t\t# Read in the array's size\n",
+ "get_array(numbers, array_size)\t\t\t\t\t# Read in the array 'numbers' of size 'array_size'\n",
+ "print_array(numbers, array_size, ORIGINAL) \t# Echo the array \n",
+ "sort_array(numbers, array_size)\n",
+ "print_array(numbers, array_size, SORTED)\t\t# Print the sorted array"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "How many numbers? 10\n",
+ "Please enter the integers:\n",
+ "10 42 7 0 923 12 -5 6 19 3\n",
+ "\n",
+ "The original array is:\n",
+ "10 42 7 0 923 12 -5 6 19 3\n",
+ "\n",
+ "The sorted array is:\n",
+ "-5 0 3 6 7 10 12 19 42 923\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 11-6, Page Number: 294"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Sorting of array revisited\n",
+ "# Two dimensional char array (array of strings)\n",
+ "\n",
+ "# Macro definition\n",
+ "MAX_ARRAY_SIZE = 20\t\t# The array may have up to 20 elements\n",
+ "MAX_STRING_SIZE = 10 \t# Each string may have up to 10 characters\n",
+ "# Message flags for \"print_array\"\n",
+ "ORIGINAL = 0\n",
+ "SORTED = 1\n",
+ "\n",
+ "words = [ \"cat\", \"pig\", \"dog\", \"earlobe\", \"bingo\", \"elbow\", \"likely\", \"radar\" ]\n",
+ "array_size = 0\n",
+ "\n",
+ "def get_size(size) :\n",
+ "\t\"\"\" Read the size of the array into size (until a value is entered) \"\"\"\n",
+ "\tprint \"How many words? \",\n",
+ "\tsize = 8\n",
+ "\tprint size\n",
+ "\twhile size < 1 or size > MAX_ARRAY_SIZE :\n",
+ "\t\tprint \"How many words? \",\n",
+ "\t\tsize = 8\n",
+ "\t\tprint size\n",
+ "\tglobal array_size\n",
+ "\tarray_size = size\n",
+ "\n",
+ "def get_array(array,size) :\n",
+ "\t\"\"\" Read in the string array called 'array' of size 'size' \"\"\"\n",
+ "\tprint \"Please enter the words:\"\n",
+ "\tfor i in array :\n",
+ "\t\tprint i\n",
+ "\t\n",
+ "def print_array(array,size,message) :\n",
+ "\t\"\"\" Print out string array 'array' of size 'size'. 'message' is a flag indicating which message to display(ORIGINAL or SORTED) \"\"\"\n",
+ "\tif message == ORIGINAL :\n",
+ "\t\tprint \"\\nThe original array is:\"\n",
+ "\telse :\n",
+ "\t\tprint \"\\nThe sorted array is:\"\n",
+ "\tfor i in array :\n",
+ "\t\tprint i\n",
+ "\n",
+ "def sort_array(array,size) :\n",
+ "\t\"\"\" sort string array \"\"\"\n",
+ "\tfor i in range (size-1) :\n",
+ "\t\tfor j in range (i + 1, size) :\n",
+ "\t\t\tif array[i] > array[j] :\n",
+ "\t\t\t\tstring_swap(i,j)\n",
+ "\n",
+ "def string_swap(i, j) :\n",
+ "\t\"\"\" Exchange strings \"\"\"\n",
+ "\tglobal words\n",
+ "\twords[i],words[j] = words[j],words[i]\n",
+ "\n",
+ "get_size(array_size)\t\t# Read in the array size\n",
+ "get_array(words, array_size)\t# Read in the string array \"words\" of size \"array_size\"\n",
+ "print_array(words, array_size, ORIGINAL)\t# Echo the original array\n",
+ "sort_array(words, array_size)\t\n",
+ "print_array(words, array_size, SORTED) # Print the sorted array"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "How many words? 8\n",
+ "Please enter the words:\n",
+ "cat\n",
+ "pig\n",
+ "dog\n",
+ "earlobe\n",
+ "bingo\n",
+ "elbow\n",
+ "likely\n",
+ "radar\n",
+ "\n",
+ "The original array is:\n",
+ "cat\n",
+ "pig\n",
+ "dog\n",
+ "earlobe\n",
+ "bingo\n",
+ "elbow\n",
+ "likely\n",
+ "radar\n",
+ "\n",
+ "The sorted array is:\n",
+ "bingo\n",
+ "cat\n",
+ "dog\n",
+ "earlobe\n",
+ "elbow\n",
+ "likely\n",
+ "pig\n",
+ "radar\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/The_Spirit_of_C/Chapter12.ipynb b/The_Spirit_of_C/Chapter12.ipynb
new file mode 100755
index 00000000..0195ed25
--- /dev/null
+++ b/The_Spirit_of_C/Chapter12.ipynb
@@ -0,0 +1,455 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:bfcc6bf3e86f2ff3b103be284b1b027f6faa9020241e866b9b4398fd89f8923c"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 12, Strings and String Functions"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 12-1, Page Number: 331"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# The control string is just a string\n",
+ "\n",
+ "format = \"%s\"\n",
+ "message = \"hello\"\n",
+ "\n",
+ "print format % message"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "hello\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 12-2, Page Number: 334"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# The control string is just a string - part 2\n",
+ "\n",
+ "format = \"%.15s\"\n",
+ "message = \"hellohellohello\"\n",
+ "\n",
+ "# Read in the number of characters to be displayed from \"message\"\n",
+ "print \"How many characters do you want displayed?\",\n",
+ "size = 5\n",
+ "print size\n",
+ "\n",
+ "# Convert size to 2-digit number in format[2] and format[3]\n",
+ "\n",
+ "format = \"%.\" + str(size / 10) + str(size % 10) + \"s\"\n",
+ "print \"The format is %s\"%format\n",
+ "\n",
+ "# Print the string\n",
+ "print format % message"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "How many characters do you want displayed? 5\n",
+ "The format is %.05s\n",
+ "hello\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 12-3, Page Number 336"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# sprintf function \n",
+ "\n",
+ "# There is no sprintf functionality in python\n",
+ "# However an alternate way to solve the problem is...\n",
+ "\n",
+ "print \"Please enter a number:\",\n",
+ "number = 17\n",
+ "print number\n",
+ "\n",
+ "string = \"The number is %d\"%number\n",
+ "\n",
+ "print \"%s\"%string\n",
+ "\n",
+ "# OR \n",
+ "\n",
+ "print string"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Please enter a number: 17\n",
+ "The number is 17\n",
+ "The number is 17\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 12-4, Page Number 337"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Variable control string using the sprintf function\n",
+ "\n",
+ "message = \"hellohellohello\"\n",
+ "\n",
+ "# Read in the number of characters to be displayed from message \n",
+ "print \"How many characters do you want displayed?\",\n",
+ "size = 7\n",
+ "print size\n",
+ "\n",
+ "# Create format in \"format\" using \"size\"\n",
+ "format = \"%%.%ds\\n\"%size\n",
+ "print \"The format is: %s\"%format\n",
+ "\n",
+ "# Print the string\n",
+ "print format % message"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "How many characters do you want displayed? 7\n",
+ "The format is: %.7s\n",
+ "\n",
+ "hellohe\n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 12-5, Page Number 338"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# A terse string copy function\n",
+ "\n",
+ "def strcpy(copy, original):\n",
+ "\t\"\"\" copies one string into another \"\"\"\n",
+ "\tcopy = original\n",
+ "\treturn copy\n",
+ "\n",
+ "string1 = \"\"\n",
+ "string1 = strcpy(string1, \"This is a message\")\n",
+ "print \"String 1 = %s\"%string1\n",
+ "\n",
+ "string2 = \"\"\n",
+ "string2 = strcpy(string2, string1)\n",
+ "print \"String 2 = %s\"%string2"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "String 1 = This is a message\n",
+ "String 2 = This is a message\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 12-7, Page Number 344"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "string_point = \"hello\"\n",
+ "\n",
+ "string_var1 = string_point\n",
+ "\n",
+ "print \"%s\\n%s\"%(string_point,string_var1)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "hello\n",
+ "hello\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 12-8, Page Number 346"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# strcat function in python\n",
+ "# simple addition of strings results in concatenation in python\n",
+ "\n",
+ "def strcat(string1, string2) :\n",
+ "\t\"\"\" concatenates the string and returns the concatenated string \"\"\"\n",
+ "\tstring2 = string1 + string2\n",
+ "\treturn string2\n",
+ "\n",
+ "string1 = \"hello\"\n",
+ "string2 = strcat(string1,\" there\")\n",
+ "print \"string1 = %s\\nstring2 = %s\"%(string1,string2)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "string1 = hello\n",
+ "string2 = hello there\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 12-9, Page Number 348"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# strcat version 2\n",
+ "\n",
+ "def strcat(string1, string2) :\n",
+ "\tstring1 = string1 + string2\n",
+ "\tstring2 = string1\n",
+ "\treturn string1,string2\n",
+ "\n",
+ "string1 = \"hello\"\n",
+ "string1,string2 = strcat(string1, \" there\")\n",
+ "\n",
+ "print \"string1 = %s\\nstring2 = %s\"%(string1,string2)\n",
+ "\n",
+ "if string1 == string2 :\n",
+ "\tprint \"string2 points to string1\"\n",
+ "else :\n",
+ "\tprint \"string2 does not point to string1\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "string1 = hello there\n",
+ "string2 = hello there\n",
+ "string2 points to string1\n"
+ ]
+ }
+ ],
+ "prompt_number": 9
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 12-10, Page Number 351"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Alphabetizing program using dynamically allocated arrays\n",
+ "\n",
+ "# Macro definition\n",
+ "MAX_ARRAY_SIZE = 20\t\t# The array may have up to 20 elements\n",
+ "MAX_STRING_SIZE = 10 \t# Each string may have up to 10 characters\n",
+ "# Message flags for \"print_array\"\n",
+ "ORIGINAL = 0\n",
+ "SORTED = 1\n",
+ "\n",
+ "words = [ \"cat\", \"pig\", \"dog\", \"earlobe\", \"bingo\", \"elbow\", \"likely\", \"radar\" ]\n",
+ "array_size = 0\n",
+ "\n",
+ "def get_size(size) :\n",
+ "\t\"\"\" Read the size of the array into size (until a value is entered) \"\"\"\n",
+ "\tprint \"How many words? \",\n",
+ "\tsize = 8\n",
+ "\tprint size\n",
+ "\twhile size < 1 or size > MAX_ARRAY_SIZE :\n",
+ "\t\tprint \"How many words? \",\n",
+ "\t\tsize = 8\n",
+ "\t\tprint size\n",
+ "\tglobal array_size\n",
+ "\tarray_size = size\n",
+ "\n",
+ "def get_array(array,size) :\n",
+ "\t\"\"\" Read in the string array called 'array' of size 'size' \"\"\"\n",
+ "\tprint \"Please enter the words:\"\n",
+ "\tfor i in array :\n",
+ "\t\tprint i\n",
+ "\t\n",
+ "def print_array(array,size,message) :\n",
+ "\t\"\"\" Print out string array 'array' of size 'size'. 'message' is a flag indicating which message to display(ORIGINAL or SORTED) \"\"\"\n",
+ "\tprintout = [ \"\\nThe original array is:\", \"\\nThe sorted array is:\", \"\\n\" ]\n",
+ "\t# Print the appropriate message\n",
+ "\tprint \"%s\"%printout[message]\n",
+ "\n",
+ "\tfor i in array :\n",
+ "\t\tprint i\n",
+ "\n",
+ "def pointer_sort(array,size) :\n",
+ "\t\"\"\" sort string array \"\"\"\n",
+ "\tfor i in range (size-1) :\n",
+ "\t\tfor j in range (i + 1, size) :\n",
+ "\t\t\tif array[i] > array[j] :\n",
+ "\t\t\t\tswap(i,j)\n",
+ "\n",
+ "def swap(i, j) :\n",
+ "\t\"\"\" Exchange strings \"\"\"\n",
+ "\tglobal words\n",
+ "\twords[i],words[j] = words[j],words[i]\n",
+ "\n",
+ "get_size(array_size)\t\t# Read in the array size\n",
+ "get_array(words, array_size)\t# Read in the string array \"words\" of size \"array_size\"\n",
+ "print_array(words, array_size, ORIGINAL)\t# Echo the original array\n",
+ "pointer_sort(words, array_size)\t\n",
+ "print_array(words, array_size, SORTED) # Print the sorted array"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "How many words? 8\n",
+ "Please enter the words:\n",
+ "cat\n",
+ "pig\n",
+ "dog\n",
+ "earlobe\n",
+ "bingo\n",
+ "elbow\n",
+ "likely\n",
+ "radar\n",
+ "\n",
+ "The original array is:\n",
+ "cat\n",
+ "pig\n",
+ "dog\n",
+ "earlobe\n",
+ "bingo\n",
+ "elbow\n",
+ "likely\n",
+ "radar\n",
+ "\n",
+ "The sorted array is:\n",
+ "bingo\n",
+ "cat\n",
+ "dog\n",
+ "earlobe\n",
+ "elbow\n",
+ "likely\n",
+ "pig\n",
+ "radar\n"
+ ]
+ }
+ ],
+ "prompt_number": 10
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+}
diff --git a/The_Spirit_of_C/Chapter13.ipynb b/The_Spirit_of_C/Chapter13.ipynb
new file mode 100755
index 00000000..d363dc7a
--- /dev/null
+++ b/The_Spirit_of_C/Chapter13.ipynb
@@ -0,0 +1,346 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:133c881c520fd0cdef07f65db120109cc62a996dd5161cf0f664c2ffcaa3adc4"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 13, Structures"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 13-1, Page Number: 370"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Introduction to structures\n",
+ "\n",
+ "from collections import namedtuple\n",
+ "\n",
+ "#Structure defintion\n",
+ "struct = namedtuple(\"struct\", \"integer real\")\n",
+ "\n",
+ "first_structure = struct( 7, 3.14 )\n",
+ "second_structure = first_structure\n",
+ "\n",
+ "print \"integer = %d, real = %f\"%(second_structure.integer,second_structure.real)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "integer = 7, real = 3.140000\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 13-2, Page Number: 371"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Initializing a structure\n",
+ "\n",
+ "from collections import namedtuple\n",
+ "\n",
+ "#Structure defintion\n",
+ "struct = namedtuple(\"struct\", \"integer real\")\n",
+ "\n",
+ "structure = struct( 7, 3.14 )\n",
+ "\n",
+ "print \"integer = %d, real = %f\"%(structure.integer,structure.real)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "integer = 7, real = 3.140000\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 13-3, Page Number: 372"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# The structure tag\n",
+ "\n",
+ "from collections import namedtuple\n",
+ "\n",
+ "#Structure defintion\n",
+ "struct = namedtuple(\"struct\", \"integer real\")\n",
+ "\n",
+ "first_structure = struct( 7, 3.14 )\n",
+ "second_structure = first_structure\n",
+ "\n",
+ "print \"integer = %d, real = %f\"%(second_structure.integer,second_structure.real)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "integer = 7, real = 3.140000\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 13-4, Page Number: 375"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# An array of structures\n",
+ "\n",
+ "from collections import namedtuple\n",
+ "\n",
+ "#Structure defintion\n",
+ "struct = namedtuple(\"struct\", \"code price\")\n",
+ "\n",
+ "#code = [ \"a\", \"b\", \"c\", \"d\", \"e\" ]\n",
+ "#price = [ 3.29, 2.99, 0.59, 1.59, 2.39 ]\n",
+ "\n",
+ "table = [ struct(\"a\",3.29) , struct(\"b\",2.99), struct(\"c\",0.59), struct(\"d\",1.59), struct(\"e\",2.39) ]\n",
+ "\n",
+ "print \"Enter item code:\",\n",
+ "item_code = \"a\"\n",
+ "print item_code\n",
+ "i = 0\n",
+ "\n",
+ "while item_code != \".\" :\n",
+ "\n",
+ "\t#Search for 'item_code' in 'table'\n",
+ "\tfor i in range(4) :\n",
+ "\t\tif table[i].code == item_code :\n",
+ "\t\t\tbreak\n",
+ "\n",
+ "\tif i < 4:\n",
+ "\t\tprint \"Enter quantity: \",\n",
+ "\t\tquantity = 1\n",
+ "\t\tprint quantity\n",
+ "\t\n",
+ "\t\tprint \"\\nUnit price = %.2f, total price = %.2f.\\n\\n\"%(table[i].price,quantity * table[i].price)\n",
+ "\telse :\n",
+ "\t\tprint \"\\nItem code %c does not exist.\\n\\n\"%item_code\n",
+ "\tprint \"Enter item code:\",\n",
+ "\titem_code = \".\"\n",
+ "\tprint item_code\n",
+ "\n",
+ "\n",
+ "print \"Thank you.\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Enter item code: a\n",
+ "Enter quantity: 1\n",
+ "\n",
+ "Unit price = 3.29, total price = 3.29.\n",
+ "\n",
+ "\n",
+ "Enter item code: .\n",
+ "Thank you.\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 13-5, Page Number: 378"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# A pointer in a structure\n",
+ "\n",
+ "from collections import namedtuple\n",
+ "\n",
+ "#Structure defintion\n",
+ "struct = namedtuple(\"struct\", \"name price\")\n",
+ "\n",
+ "#code = [ \"a\", \"b\", \"c\", \"d\", \"e\" ]\n",
+ "#price = [ 3.29, 2.99, 0.59, 1.59, 2.39 ]\n",
+ "\n",
+ "table = [ struct(\"pickles\",2.29) , struct(\"soda\",0.99), struct(\"yogurt\",0.59), struct(\"bread\",1.09), struct(\"milk\",0.69) ]\n",
+ "\n",
+ "print \"Enter item name:\",\n",
+ "item_name = \"pickles\"\n",
+ "print item_name\n",
+ "i = 0\n",
+ "\n",
+ "while item_name != \".\" :\n",
+ "\n",
+ "\t#Search for 'item_code' in 'table'\n",
+ "\tfor i in range(4) :\n",
+ "\t\tif table[i].name == item_name :\n",
+ "\t\t\tbreak\n",
+ "\n",
+ "\tif i < 4:\n",
+ "\t\tprint \"Enter quantity: \",\n",
+ "\t\tquantity = 1\n",
+ "\t\tprint quantity\n",
+ "\t\n",
+ "\t\tprint \"\\nUnit price = %.2f, total price = %.2f.\\n\\n\"%(table[i].price,quantity * table[i].price)\n",
+ "\telse :\n",
+ "\t\tprint \"\\nItem code %c does not exist.\\n\\n\"%item_name\n",
+ "\tprint \"Enter item code:\",\n",
+ "\titem_name = \".\"\n",
+ "\tprint item_name\n",
+ "\n",
+ "\n",
+ "print \"Thank you.\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Enter item name: pickles\n",
+ "Enter quantity: 1\n",
+ "\n",
+ "Unit price = 2.29, total price = 2.29.\n",
+ "\n",
+ "\n",
+ "Enter item code: .\n",
+ "Thank you.\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 13-6, Page Number: 381"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# An array in a structure\n",
+ "\n",
+ "from collections import namedtuple\n",
+ "\n",
+ "#Structure defintion\n",
+ "struct = namedtuple(\"struct\", \"name price\")\n",
+ "\n",
+ "#code = [ \"a\", \"b\", \"c\", \"d\", \"e\" ]\n",
+ "#price = [ 3.29, 2.99, 0.59, 1.59, 2.39 ]\n",
+ "\n",
+ "table = [ struct(\"pickles\",2.29) , struct(\"soda\",0.99), struct(\"yogurt\",0.59), struct(\"bread\",1.09), struct(\"milk\",0.69) ]\n",
+ "\n",
+ "print \"Enter item name:\",\n",
+ "item_name = \"milk\"\n",
+ "print item_name\n",
+ "i = 0\n",
+ "\n",
+ "while item_name != \".\" :\n",
+ "\n",
+ "\t#Search for 'item_code' in 'table'\n",
+ "\tfor i in range(5) :\n",
+ "\t\tif table[i].name == item_name :\n",
+ "\t\t\tbreak\n",
+ "\n",
+ "\tif i < 5:\n",
+ "\t\tprint \"Enter quantity: \",\n",
+ "\t\tquantity = 5\n",
+ "\t\tprint quantity\n",
+ "\t\n",
+ "\t\tprint \"\\nUnit price = %.2f, total price = %.2f.\\n\\n\"%(table[i].price,quantity * table[i].price)\n",
+ "\telse :\n",
+ "\t\tprint \"\\nItem code %c does not exist.\\n\\n\"%item_name\n",
+ "\tprint \"Enter item code:\",\n",
+ "\titem_name = \".\"\n",
+ "\tprint item_name\n",
+ "\n",
+ "\n",
+ "print \"Thank you.\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Enter item name: milk\n",
+ "Enter quantity: 5\n",
+ "\n",
+ "Unit price = 0.69, total price = 3.45.\n",
+ "\n",
+ "\n",
+ "Enter item code: .\n",
+ "Thank you.\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/The_Spirit_of_C/Chapter14.ipynb b/The_Spirit_of_C/Chapter14.ipynb
new file mode 100755
index 00000000..380e83ef
--- /dev/null
+++ b/The_Spirit_of_C/Chapter14.ipynb
@@ -0,0 +1,298 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:3748f84e3bd0279efe47855bd2c4e23912ef725121f3591980fa33e19d6ccae4"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 14, Input/Output and Files"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 14-5, Page Number: 424"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Files : Opening and Closing\n",
+ "\n",
+ "# Open the file for writing\n",
+ "\n",
+ "file_pointer = open(\"first_file\",\"w\")\n",
+ "\n",
+ "print \"Enter text:\"\n",
+ "\n",
+ "# Get characters and place them in the file\n",
+ "\n",
+ "text = \"BASIC is easy,\\nFORTAN is fun,\\nPascal may be structured,\\nBut C's the one!\"\n",
+ "print text\n",
+ "file_pointer.write(text)\n",
+ "\n",
+ "file_pointer.close()\n",
+ "\n",
+ "file_pointer = open(\"first_file\",\"r\")\n",
+ "\n",
+ "#Display the text from file\n",
+ "\n",
+ "print \"\\nYou entered:\"\n",
+ "print file_pointer.read()\n",
+ "\n",
+ "file_pointer.close()"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Enter text:\n",
+ "BASIC is easy,\n",
+ "FORTAN is fun,\n",
+ "Pascal may be structured,\n",
+ "But C's the one!\n",
+ "\n",
+ "You entered:\n",
+ "BASIC is easy,\n",
+ "FORTAN is fun,\n",
+ "Pascal may be structured,\n",
+ "But C's the one!\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 14-6, Page Number: 426"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Using several files\n",
+ "\n",
+ "# Open the source file for reading\n",
+ "\n",
+ "first_file_pointer = open(\"first_file\",\"r\")\n",
+ "\n",
+ "# Open the destination file for writing\n",
+ "\n",
+ "second_file_pointer = open(\"second_file\",\"w\")\n",
+ "\n",
+ "# Transfer characters from source to destination file\n",
+ "\n",
+ "c = first_file_pointer.read()\n",
+ "second_file_pointer.write(c)\n",
+ "\n",
+ "# Close both files\n",
+ "\n",
+ "first_file_pointer.close()\n",
+ "second_file_pointer.close()\n",
+ "\n",
+ "# Open second file for displaying contentes\n",
+ "\n",
+ "second_file_pointer = open(\"second_file\",\"r\")\n",
+ "print(\"'second_file' contains:\")\n",
+ "print second_file_pointer.read()"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "'second_file' contains:\n",
+ "BASIC is easy,\n",
+ "FORTAN is fun,\n",
+ "Pascal may be structured,\n",
+ "But C's the one!\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 14-7, Page Number : 428"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Append mode\n",
+ "\n",
+ "# Open the first file for writing\n",
+ "\n",
+ "first_file_pointer = open(\"first_file\",\"w\")\n",
+ "\n",
+ "# Open the second file for appending\n",
+ "\n",
+ "second_file_pointer = open(\"second_file\",\"a\")\n",
+ "\n",
+ "# Writing to both files\n",
+ "\n",
+ "first_file_pointer.write(\"\\n--Anonymous\\n\")\n",
+ "second_file_pointer.write(\"\\n--Anonymous\\n\")\n",
+ "\n",
+ "# Close both files\n",
+ "\n",
+ "first_file_pointer.close()\n",
+ "second_file_pointer.close()\n",
+ "\n",
+ "# Display the contents of first file\n",
+ "first_file_pointer = open(\"first_file\",\"r\")\n",
+ "print(\"After write, 'first_file contains:\")\n",
+ "print first_file_pointer.read()\n",
+ "\n",
+ "# Display the contents of second file\n",
+ "second_file_pointer = open(\"second_file\",\"r\")\n",
+ "print(\"After append, 'second_file' contains:\")\n",
+ "print second_file_pointer.read()"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "After write, 'first_file contains:\n",
+ "\n",
+ "--Anonymous\n",
+ "\n",
+ "After append, 'second_file' contains:\n",
+ "BASIC is easy,\n",
+ "FORTAN is fun,\n",
+ "Pascal may be structured,\n",
+ "But C's the one!\n",
+ "--Anonymous\n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 14-8, Page Number: 431"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# The seek function\n",
+ "\n",
+ "# Open file for reading\n",
+ "try :\n",
+ "\tfile_pointer = open(\"second_file\",\"r\")\n",
+ "except :\n",
+ "\tprint \"'second_file' cannot be opened\"\n",
+ "\texit ()\n",
+ "\n",
+ "# Skip the first 6 characters\n",
+ "\n",
+ "file_pointer.seek(6,0)\n",
+ "print file_pointer.read()"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "is easy,\n",
+ "FORTAN is fun,\n",
+ "Pascal may be structured,\n",
+ "But C's the one!\n",
+ "--Anonymous\n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 14-9, Page Number: 433"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# The 'w+' mode and seek to rewind a file\n",
+ "\n",
+ "# Open a file for read/write\n",
+ "file_pointer = open(\"first_file\",\"w+\")\n",
+ "\n",
+ "print \"Enter text:\"\n",
+ "text = \"BASIC is easy,\\nFORTAN is fun,\\nPascal may be structured,\\nBut C's the one!\"\n",
+ "print text\n",
+ "file_pointer.write(text)\n",
+ "\n",
+ "file_pointer.seek(0,0)\n",
+ "\n",
+ "# Display the file\n",
+ "print \"\\nYou entered:\"\n",
+ "print file_pointer.read()"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Enter text:\n",
+ "BASIC is easy,\n",
+ "FORTAN is fun,\n",
+ "Pascal may be structured,\n",
+ "But C's the one!\n",
+ "\n",
+ "You entered:\n",
+ "BASIC is easy,\n",
+ "FORTAN is fun,\n",
+ "Pascal may be structured,\n",
+ "But C's the one!\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/The_Spirit_of_C/chapter2.ipynb b/The_Spirit_of_C/chapter2.ipynb
new file mode 100755
index 00000000..dc84a28d
--- /dev/null
+++ b/The_Spirit_of_C/chapter2.ipynb
@@ -0,0 +1,119 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:7c8e11b3dcc5781949652c0b5c450d78713cb6e6b69326955d0f763c48805147"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 2, An Introduction to Declarations, Assignments and Variables"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 2-1 , Page number: 20"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# An introduction to variable declarations \n",
+ "\n",
+ "number = 7 # no need of declaration of variable. Python is dynamically-typed language\n",
+ "print \"There are %d days in a week.\"%number"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "There are 7 days in a week.\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 2-2 , Page number: 21"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# A simple program with two declarations\n",
+ "\n",
+ "minutes = 60\n",
+ "hours = 24\n",
+ "\n",
+ "print \"There are %d minutes in an hour.\"%minutes\n",
+ "print \"And %d hours in a day.\"%hours"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "There are 60 minutes in an hour.\n",
+ "And 24 hours in a day.\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 2-4 , Page number: 22"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# prints values of two variables\n",
+ "\n",
+ "dozens = 17\n",
+ "units = dozens * 12\n",
+ "\n",
+ "print \"%d units is equivalent to %d dozen.\"%(units,dozens)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "204 units is equivalent to 17 dozen.\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/The_Spirit_of_C/chapter3.ipynb b/The_Spirit_of_C/chapter3.ipynb
new file mode 100755
index 00000000..b498486d
--- /dev/null
+++ b/The_Spirit_of_C/chapter3.ipynb
@@ -0,0 +1,241 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:c466b513c45bfe09da1b0507614f538770318fb66aadf4da4e1995363df32911"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 3 , Integer Arithmetic Expressions"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 3-1 , Page number: 33"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# An introduction to arithmetic \n",
+ "\n",
+ "a = 2\n",
+ "b = 3\n",
+ "c = 4\n",
+ "\n",
+ "answer = a + b\n",
+ "print \"a + b = %d\"%answer\n",
+ "\n",
+ "answer = a - b\n",
+ "print \"a - b = %d\"%answer\n",
+ "\n",
+ "answer = a * b\n",
+ "print \"a * b = %d\"%answer\n",
+ "\n",
+ "answer = a / b\n",
+ "print \"a / b = %d\"%answer\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "a + b = 5\n",
+ "a - b = -1\n",
+ "a * b = 6\n",
+ "a / b = 0\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 3-2 , Page number: 34"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Illustration of mathematical hierarchy\n",
+ "\n",
+ "a = 2\n",
+ "b = 3\n",
+ "c = 4\n",
+ "\n",
+ "answer = a + b * c\n",
+ "\n",
+ "print \"a = %d, b = %d, c= %d\"%(a,b,c)\n",
+ "print \"a + b * c = %d\\n\"%answer"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "a = 2, b = 3, c= 4\n",
+ "a + b * c = 14\n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 3-3 , Page number: 35"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# A more advanced illustration of mathematical hierarchy\n",
+ "\n",
+ "a = 5\n",
+ "b = 10\n",
+ "c = 15\n",
+ "\n",
+ "answer = a + b / c\n",
+ "print \"%d + %d / %d = %d\"%(a,b,c,answer)\n",
+ "\n",
+ "answer = b * c - a\n",
+ "print \"%d * %d - %d = %d\"%(a,b,c,answer)\n",
+ "\n",
+ "answer = a * b / c\n",
+ "print \"%d * %d / %d = %d\"%(a,b,c,answer)\n",
+ "\n",
+ "answer = (a + c) * b / a\n",
+ "print \"(%d + %d) * %d / %d = %d\"%(a,c,b,a,answer)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "5 + 10 / 15 = 5\n",
+ "5 * 10 - 15 = 145\n",
+ "5 * 10 / 15 = 3\n",
+ "(5 + 15) * 10 / 5 = 40\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 3-4 , Page number: 37"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Illustration of modulus operator\n",
+ "\n",
+ "a = 4\n",
+ "b = 8\n",
+ "c = 13\n",
+ "\n",
+ "print \"%d mod %d = %d\"%(b,a,b%a)\n",
+ "print \"%d mod %d = %d\"%(c,a,c%a)\n",
+ "print \"%d mod %d = %d\"%(c,b,c%b)\n",
+ "\n",
+ "print \"The modulus operator is: %\"\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "8 mod 4 = 0\n",
+ "13 mod 4 = 1\n",
+ "13 mod 8 = 5\n",
+ "The modulus operator is: %\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 3-5 , Page number: 38"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Illustration of the unary minus\n",
+ "\n",
+ "a = -4\n",
+ "b = 5\n",
+ "c = -6\n",
+ "\n",
+ "print \"a = %d, b = %d, c = %d\\n\\n\"%(a,b,c)\n",
+ "print \" and now\\n\\n\"\n",
+ "\n",
+ "a = -a\n",
+ "b = -b\n",
+ "c = -c\n",
+ "\n",
+ "print \"a = %d, b = %d, c = %d\\n\\n\"%(a,b,c)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "a = -4, b = 5, c = -6\n",
+ "\n",
+ "\n",
+ " and now\n",
+ "\n",
+ "\n",
+ "a = 4, b = -5, c = 6\n",
+ "\n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/The_Spirit_of_C/chapter4.ipynb b/The_Spirit_of_C/chapter4.ipynb
new file mode 100755
index 00000000..d13f3710
--- /dev/null
+++ b/The_Spirit_of_C/chapter4.ipynb
@@ -0,0 +1,148 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:03f3f522026b7ff6e1acac7746805bcac18faba022541a5d8a73470a897fdf7a"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 4, Some More Data Types"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Prgoram 4-1 , Page number: 47"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# An illustration of the use of floating point numbers\n",
+ "\n",
+ "# There is no loss of precision in python\n",
+ "a = 246.8\n",
+ "b = 135.79\n",
+ "\n",
+ "answer = a + b\n",
+ "print \"%f + %f = %f\"%(a,b,answer)\n",
+ "\n",
+ "answer = a - b\n",
+ "print \"%f - %f = %f\"%(a,b,answer)\n",
+ "\n",
+ "answer = a * b\n",
+ "print \"%f * %f = %f\"%(a,b,answer)\n",
+ "\n",
+ "answer = a / b\n",
+ "print \"%f / %f = %f\"%(a,b,answer)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "246.800000 + 135.790000 = 382.590000\n",
+ "246.800000 - 135.790000 = 111.010000\n",
+ "246.800000 * 135.790000 = 33512.972000\n",
+ "246.800000 / 135.790000 = 1.817512\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 4-2 , Page number: 49"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Illustration of mixed mode expressions\n",
+ "\n",
+ "a = 2\n",
+ "b = 12.34\n",
+ "\n",
+ "result = a * b\n",
+ "print \"%d * %f = %f\"%(a,b,result)\n",
+ "\n",
+ "print \"%f in scientific notation is %e\"%(result,result)\n",
+ "\n",
+ "answer = a * b\n",
+ "print \"%d * %f = %d\"%(a,b,answer)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "2 * 12.340000 = 24.680000\n",
+ "24.680000 in scientific notation is 2.468000e+01\n",
+ "2 * 12.340000 = 24\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 4-3 , Page number: 52"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "\n",
+ "ltr_1 = \"C\"\n",
+ "ltr_2 = \" \"\n",
+ "ltr_3 = \"i\"\n",
+ "ltr_4 = \"s\"\n",
+ "ltr_5 = \"g\"\n",
+ "ltr_6 = \"r\"\n",
+ "ltr_7 = \"e\"\n",
+ "ltr_8 = \"a\"\n",
+ "ltr_9 = \"t\"\n",
+ "ltr_10 = \"!\"\n",
+ "\n",
+ "print \"%c%c%c%c%c%c%c%c%c%c%c\"%(ltr_1,ltr_2,ltr_3,ltr_4,ltr_2,ltr_5,ltr_6,ltr_7,ltr_8,ltr_9,ltr_10)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "C is great!\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/The_Spirit_of_C/chapter5.ipynb b/The_Spirit_of_C/chapter5.ipynb
new file mode 100755
index 00000000..db420a5b
--- /dev/null
+++ b/The_Spirit_of_C/chapter5.ipynb
@@ -0,0 +1,218 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:28fc7922ba91eac91816a02729f8986381706b8cffd1eaa9d68ce0cf435191aa"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 5, Making Decisions in C"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 5-2 , Page number: 65"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Using If command\n",
+ "\n",
+ "print \"Enter a positive integer under 10: \",\n",
+ "n = 7\n",
+ "print n\n",
+ "\n",
+ "if n == 7 :\t\t\t\t\t# In this case it is 7\n",
+ "\tprint \"I knew you'd select 7!\"\n",
+ "print \"Thank you for your cooperation.\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Enter a positive integer under 10: 7\n",
+ "I knew you'd select 7!\n",
+ "Thank you for your cooperation.\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 5-3 , Page number: 67"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Testing for leap years\n",
+ "\n",
+ "print \"Please enter a year:\",\n",
+ "year = 1948\t\t\n",
+ "print year\n",
+ "# If \"year\" is divisble by 4 and not divisible by 100 or divisible by 400, \"year\" is a leap year\n",
+ "\n",
+ "if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0) :\n",
+ "\tprint \"%d is a leap year.\"%year\n",
+ "else :\n",
+ "\tprint \"%d is not a leap year.\"%year"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Please enter a year: 1948\n",
+ "1948 is a leap year.\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 5-4 , Page number: 69"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Illustration of if...else clause\n",
+ "# Program to tell if a number is odd or even\n",
+ "\n",
+ "print \"Please enter an integer:\",\n",
+ "n = 13\n",
+ "print n\n",
+ "\n",
+ "# A number is even if it is divisible by 2\n",
+ "\n",
+ "if n % 2 != 0:\n",
+ "\tprint \"%d is odd\"%n\n",
+ "else:\n",
+ "\tprint \"%d is even\"%n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Please enter an integer: 13\n",
+ "13 is odd\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 5-5 , Page number: 70"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Testing if a number is divisible by 7\n",
+ "\n",
+ "print \"Enter an integer:\",\n",
+ "n = 13\n",
+ "print n\n",
+ "\n",
+ "# A number is even if it is divisible by 2\n",
+ "\n",
+ "if n % 7 == 0:\n",
+ "\tprint \"%d is divisible by 7\"%n\n",
+ "else:\n",
+ "\tprint \"%d is not divisible by 7\"%n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Enter an integer: 13\n",
+ "13 is not divisible by 7\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 5-6 , Page number: 71"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Determining which of 2 numbers is larger\n",
+ "\n",
+ "print \"Enter an integer:\",\n",
+ "a = 4\n",
+ "print a\n",
+ "print \"Enter another integer: \",\n",
+ "b = 7\n",
+ "print b\n",
+ "\n",
+ "if a > b :\n",
+ "\tprint \"%d is greater than %d.\"%(a,b)\n",
+ "else:\n",
+ "\tprint \"%d is smaller than %d.\"%(a,b)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Enter an integer: 4\n",
+ "Enter another integer: 7\n",
+ "4 is smaller than 7.\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/The_Spirit_of_C/chapter6.ipynb b/The_Spirit_of_C/chapter6.ipynb
new file mode 100755
index 00000000..f50ff06b
--- /dev/null
+++ b/The_Spirit_of_C/chapter6.ipynb
@@ -0,0 +1,494 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:c565a0de8f316cbc19d18a7bdba735b6241f6d0c0c10c2d49245aa88403df9e7"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 6, The While and do...While Loops"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 6-1 , Page number: 86"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# A first look at the while loop\n",
+ "\n",
+ "i = 1\n",
+ "\n",
+ "while i < 11:\n",
+ "\tprint \"This is line number %d\"%i\n",
+ "\ti += 1 \t\t\t# Python doesn't support \"++\" or \"--\" shorthand expressions"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "This is line number 1\n",
+ "This is line number 2\n",
+ "This is line number 3\n",
+ "This is line number 4\n",
+ "This is line number 5\n",
+ "This is line number 6\n",
+ "This is line number 7\n",
+ "This is line number 8\n",
+ "This is line number 9\n",
+ "This is line number 10\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 6-2 , Page number: 89"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Countdown to blastoff\n",
+ "\n",
+ "i = 10\n",
+ "\n",
+ "print \"Countdown\"\n",
+ "\n",
+ "while i >= 0 :\n",
+ "\tprint \"%d\"%i\n",
+ "\ti -= 1\n",
+ "\n",
+ "print \"\\n\\nBlastoff!\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Countdown\n",
+ "10\n",
+ "9\n",
+ "8\n",
+ "7\n",
+ "6\n",
+ "5\n",
+ "4\n",
+ "3\n",
+ "2\n",
+ "1\n",
+ "0\n",
+ "\n",
+ "\n",
+ "Blastoff!\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 6-3 , Page number: 90"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Hailstones\n",
+ "\n",
+ "counter = 0;\n",
+ "\n",
+ "print \"Enter a positive integer:\",\n",
+ "n = 51\n",
+ "print n\n",
+ "\n",
+ "nsave = n\n",
+ "\n",
+ "\n",
+ "while n > 1:\n",
+ "\tif n % 2 :\t\t\t# if (n % 2) is non-zero, n is not divisible by 2 and is therefore odd\n",
+ "\t\tn = n * 3 + 1\n",
+ "\telse :\n",
+ "\t\tn /= 2\n",
+ "\tcounter += 1\n",
+ "\tprint \"Step %4d: n = %4d\"%(counter,n)\n",
+ "\n",
+ "print \"\\n\\n%d went to 1 in %d steps.\"%(nsave,counter)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Enter a positive integer: 51\n",
+ "Step 1: n = 154\n",
+ "Step 2: n = 77\n",
+ "Step 3: n = 232\n",
+ "Step 4: n = 116\n",
+ "Step 5: n = 58\n",
+ "Step 6: n = 29\n",
+ "Step 7: n = 88\n",
+ "Step 8: n = 44\n",
+ "Step 9: n = 22\n",
+ "Step 10: n = 11\n",
+ "Step 11: n = 34\n",
+ "Step 12: n = 17\n",
+ "Step 13: n = 52\n",
+ "Step 14: n = 26\n",
+ "Step 15: n = 13\n",
+ "Step 16: n = 40\n",
+ "Step 17: n = 20\n",
+ "Step 18: n = 10\n",
+ "Step 19: n = 5\n",
+ "Step 20: n = 16\n",
+ "Step 21: n = 8\n",
+ "Step 22: n = 4\n",
+ "Step 23: n = 2\n",
+ "Step 24: n = 1\n",
+ "\n",
+ "\n",
+ "51 went to 1 in 24 steps.\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 6-4 , Page number: 92"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Computing the factorial\n",
+ "\n",
+ "print \"Type in a positive integer:\",\n",
+ "n = 6\n",
+ "print n\n",
+ "\n",
+ "nsave = n\n",
+ "factorial = 1\n",
+ "\n",
+ "while n > 1 :\t\n",
+ "\tfactorial *= n\n",
+ "\tn -= 1\n",
+ "\n",
+ "print \"Factorial of %d = %d\"%(nsave,factorial)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Type in a positive integer: 6\n",
+ "Factorial of 6 = 720\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 6-5 , Page number: 93"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Computing the factorial (shorter version)\n",
+ "\n",
+ "print \"Type in a positive integer: \",\n",
+ "n = 6\n",
+ "print n\n",
+ "\n",
+ "nsave = n\n",
+ "factorial = 1\n",
+ "\n",
+ "while n > 1 :\n",
+ "\tfactorial *= n # Since python doesn't support '--' expression, the given program cannot be shortened\n",
+ "\tn -= 1\n",
+ "\n",
+ "print \"Factorial of %d = %d\"%(nsave,factorial)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Type in a positive integer: 6\n",
+ "Factorial of 6 = 720\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 6-6 , Page number: 95"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Illustration of do..while loops\n",
+ "\n",
+ "# This program reads in an integer, adds up the values of each of its individual digits, and prints out the sum.\n",
+ "\n",
+ "sum = 0\n",
+ "\n",
+ "print \"Type in an integer:\",\n",
+ "n = 1776\n",
+ "print n\n",
+ "\n",
+ "# There is no do...while loop in python\n",
+ "# An equivalent while loop can work\n",
+ "\n",
+ "while n > 0 :\n",
+ "\trightmost_digit = n % 10\t# Extract rightmost digit\n",
+ "\tsum += rightmost_digit\n",
+ "\tn /= 10\t\t\t\t\t\t# Move next digit into rightmost position\n",
+ "\n",
+ "print \"The sum of the digits is %d\"%sum\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Type in an integer: 1776\n",
+ "The sum of the digits is 21\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 6-7 , Page number: 97"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "import sys\n",
+ "\n",
+ "# This program reads in an integer and prints it out backwards\n",
+ "\n",
+ "print \"Type in an integer: \",\n",
+ "n = 5746\n",
+ "print n\n",
+ "\n",
+ "print \"%d backwards is \"%n,\n",
+ "\n",
+ "while n > 0 :\n",
+ "\trightmost_digit = n % 10\n",
+ "\tsys.stdout.write(\"%d\"%rightmost_digit) # For printing in the same line without implicit whitespaces\n",
+ "\tn /= 10\n",
+ "print \t\t\t# For the new line\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Type in an integer: 5746\n",
+ "5746 backwards is 6475\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 6-8 , Page number: 99"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# A program to read in numbers and print out their squares\n",
+ "\n",
+ "print \"Enter an integer (negative to quit):\",\n",
+ "n = 5\n",
+ "print n\n",
+ "\n",
+ "while n > 0 :\n",
+ "\tprint \"%d squared is %d\"%(n,n*n)\n",
+ "\tprint \"\\nEnter an integer (negative to quit):\",\n",
+ "\tn = -1\n",
+ "\tprint n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Enter an integer (negative to quit): 5\n",
+ "5 squared is 25\n",
+ "\n",
+ "Enter an integer (negative to quit): -1\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 6-9 , Page number: 100"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# A program to read in radius values and print out the circumference and area\n",
+ "\n",
+ "pi = 3.1416\n",
+ "\n",
+ "print \"Enter radius (negative to quit):\",\n",
+ "radius = 4.5\n",
+ "print radius\n",
+ "\n",
+ "while radius >= 0.0 :\n",
+ "\tprint \"The circumference is %f\"%(2.0 * pi * radius)\n",
+ "\tprint \"The area is %f\"%(pi * radius * radius)\n",
+ "\tprint \"\\nEnter radius (negative to quit):\",\n",
+ "\tradius = -1.0\n",
+ "\tprint radius\n",
+ "\t\n",
+ "\t"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Enter radius (negative to quit): 4.5\n",
+ "The circumference is 28.274400\n",
+ "The area is 63.617400\n",
+ "\n",
+ "Enter radius (negative to quit): -1.0\n"
+ ]
+ }
+ ],
+ "prompt_number": 9
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 6-10 , Page number: 101"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "\n",
+ "# A program to read in length and width and print out the perimeter and area\n",
+ "\n",
+ "print \"Enter length and width\"\n",
+ "print \" (one or both negative to quit):\",\n",
+ "length = 4\n",
+ "width = 5\n",
+ "print length,width\n",
+ "\n",
+ "while length > 0 and width > 0 : \n",
+ "\tprint \"The perimeter is %d\"%(2*(length+width))\n",
+ "\tprint \"The area is %d\"%(length*width)\n",
+ "\tprint \"\\nEnter length and width\"\n",
+ "\tprint \" (one or both negative to quit):\",\n",
+ "\tlength = -1\n",
+ "\twidth = 0\n",
+ "\tprint length,width\t"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Enter length and width\n",
+ " (one or both negative to quit): 4 5\n",
+ "The perimeter is 18\n",
+ "The area is 20\n",
+ "\n",
+ "Enter length and width\n",
+ " (one or both negative to quit): -1 0\n"
+ ]
+ }
+ ],
+ "prompt_number": 10
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/The_Spirit_of_C/chapter7.ipynb b/The_Spirit_of_C/chapter7.ipynb
new file mode 100755
index 00000000..33f7a4f3
--- /dev/null
+++ b/The_Spirit_of_C/chapter7.ipynb
@@ -0,0 +1,690 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:245ea275fa7c7004a79eeeeb6b3fc9780b5a19707d8b95c7a675d2142428b630"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 7, The for loop"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 7-1 , Page number: 119"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# A simple illustration of for loop\n",
+ "\n",
+ "for i in range(1,11,1):\t\t# The loop starts with i=1 and continues until i<11 with its value increasing by 1 each time \n",
+ "\tprint \"This is line number %d\"%i"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "This is line number 1\n",
+ "This is line number 2\n",
+ "This is line number 3\n",
+ "This is line number 4\n",
+ "This is line number 5\n",
+ "This is line number 6\n",
+ "This is line number 7\n",
+ "This is line number 8\n",
+ "This is line number 9\n",
+ "This is line number 10\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 7-2 , Page number: 120"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Another simple illustration of a for loop\n",
+ "\n",
+ "print \"Countdown\"\n",
+ "\n",
+ "for i in range(10,-1,-1):\n",
+ "\tprint i\n",
+ "print \"\\n\\nBlastoff!\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Countdown\n",
+ "10\n",
+ "9\n",
+ "8\n",
+ "7\n",
+ "6\n",
+ "5\n",
+ "4\n",
+ "3\n",
+ "2\n",
+ "1\n",
+ "0\n",
+ "\n",
+ "\n",
+ "Blastoff!\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 7-3 , Page number: 121"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Calculating the squares of integers 1 through 10\n",
+ "\n",
+ "for i in range (1,11,1):\n",
+ "\tprint \"%d squared = %d\"%(i,i*i)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "1 squared = 1\n",
+ "2 squared = 4\n",
+ "3 squared = 9\n",
+ "4 squared = 16\n",
+ "5 squared = 25\n",
+ "6 squared = 36\n",
+ "7 squared = 49\n",
+ "8 squared = 64\n",
+ "9 squared = 81\n",
+ "10 squared = 100\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 7-4 , Page number: 121"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# A better looking program to calculate squares\n",
+ "\n",
+ "print \"Table of Results\\n\"\n",
+ "print \" i i squared\"\n",
+ "print \" - ---------\"\n",
+ "\n",
+ "for i in range(1,11,1):\n",
+ "\tprint \"%4d%13d\"%(i,i*i)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Table of Results\n",
+ "\n",
+ " i i squared\n",
+ " - ---------\n",
+ " 1 1\n",
+ " 2 4\n",
+ " 3 9\n",
+ " 4 16\n",
+ " 5 25\n",
+ " 6 36\n",
+ " 7 49\n",
+ " 8 64\n",
+ " 9 81\n",
+ " 10 100\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 7-5 , Page number: 122"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Finding the sum of integers 1 through 100\n",
+ "\n",
+ "sum = 0\n",
+ "n = 100\n",
+ "\n",
+ "for i in range(1,n+1,1):\t\t# The loop starts with i=1 and continues until i<11 with its value increasing by 1 each time \n",
+ "\tsum += i\t\n",
+ "\n",
+ "print \"The sum of integers from 1 to %d is %d\"%(n,sum)\n",
+ "print \"\\n\\nThis is confirmed by the Gauss Method: %d\"%(n*(n+1)/2)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The sum of integers from 1 to 100 is 5050\n",
+ "\n",
+ "\n",
+ "This is confirmed by the Gauss Method: 5050\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 7-6 , Page number: 124"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Finding the sum of the integers 1 through MAX_VAL\n",
+ "\n",
+ "# There is no #define command for defining constants\n",
+ "# We can use a function that returns the value (although it is not very efficient to do so)\n",
+ "\n",
+ "def MAX_VAL():\n",
+ "\treturn 100\t\t\t# The value of MAX_VAL\n",
+ "\n",
+ "sum = 0\n",
+ "\n",
+ "for i in range (0,MAX_VAL()+1,1):\n",
+ "\tsum += i\n",
+ "\n",
+ "print \"The sum of the integers from 1 to %d is %d\"%(MAX_VAL(),sum)\n",
+ "print \"\\n\\nThis is confirmed by the Gauss Method : %d\"%(MAX_VAL()*(MAX_VAL()+1)/2)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The sum of the integers from 1 to 100 is 5050\n",
+ "\n",
+ "\n",
+ "This is confirmed by the Gauss Method : 5050\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 7-7 , Page number: 125"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Calculating the sum of integers 1 through n\n",
+ "\n",
+ "sum = 0\n",
+ "\n",
+ "print \"Please type in a positive integer:\",\n",
+ "n = 50\n",
+ "print n\n",
+ "\n",
+ "for i in range (1,n+1,1):\n",
+ "\tsum += i\n",
+ "\n",
+ "print \"\\nThe sum of the integers from 1 to %d is: %d\"%(n,sum)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Please type in a positive integer: 50\n",
+ "\n",
+ "The sum of the integers from 1 to 50 is: 1275\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 7-8 , Page number: 125"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Calculating the sum of integers low through high\n",
+ "\n",
+ "sum = 0\n",
+ "\n",
+ "print \"Please type in the low bound:\",\n",
+ "low = 3\n",
+ "print low\n",
+ "print \"Please type in the high bound:\",\n",
+ "high = 9\n",
+ "print high\n",
+ "\n",
+ "for i in range(low,high+1,1):\n",
+ "\tsum += i\n",
+ "\n",
+ "print \"\\nThe sum of integers from %d to %d is: %d\"%(low,high,sum)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Please type in the low bound: 3\n",
+ "Please type in the high bound: 9\n",
+ "\n",
+ "The sum of integers from 3 to 9 is: 42\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 7-9 , Page number: 127"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Calculating the sum of integers low through high with an exchange if necessary\n",
+ "\n",
+ "sum = 0\n",
+ "\n",
+ "print \"Please type in the low bound:\",\n",
+ "low = 30\n",
+ "print low\n",
+ "print \"Please type in the high bound:\",\n",
+ "high = 15\n",
+ "print high\n",
+ "\n",
+ "if high < low :\n",
+ "\tprint \"Oops! Wrong order.\"\n",
+ "\tprint \"Never mind, I'll switch them.\"\n",
+ "\t# Code for swapping using temporary variable\n",
+ "\ttemp = low\n",
+ "\tlow = high\n",
+ "\thigh = temp\n",
+ "\n",
+ "for i in range(low,high+1,1):\n",
+ "\tsum += i\n",
+ "\n",
+ "print \"\\nThe sum of integers from %d to %d is: %d\"%(low,high,sum)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Please type in the low bound: 30\n",
+ "Please type in the high bound: 15\n",
+ "Oops! Wrong order.\n",
+ "Never mind, I'll switch them.\n",
+ "\n",
+ "The sum of integers from 15 to 30 is: 360\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 7-10 ,Page number: 128"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Illustration of a nest of for loops\n",
+ "\n",
+ "n = 5\n",
+ "for i in range(1,7,1):\n",
+ "\tprint \"\\n\\nPlease type in a positive integer: \",\n",
+ "\tprint n\n",
+ "\n",
+ "\tsum = 0\n",
+ "\tfor j in range(1,n+1,1):\n",
+ "\t\tsum += j\n",
+ "\tprint \"\\nThe sum of integers from 1 to %d is %d\"%(n,sum)\n",
+ "\t\n",
+ "\tn += 5\t\t\t# Just to match the exercise's values"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "\n",
+ "Please type in a positive integer: 5\n",
+ "\n",
+ "The sum of integers from 1 to 5 is 15\n",
+ "\n",
+ "\n",
+ "Please type in a positive integer: 10\n",
+ "\n",
+ "The sum of integers from 1 to 10 is 55\n",
+ "\n",
+ "\n",
+ "Please type in a positive integer: 15\n",
+ "\n",
+ "The sum of integers from 1 to 15 is 120\n",
+ "\n",
+ "\n",
+ "Please type in a positive integer: 20\n",
+ "\n",
+ "The sum of integers from 1 to 20 is 210\n",
+ "\n",
+ "\n",
+ "Please type in a positive integer: 25\n",
+ "\n",
+ "The sum of integers from 1 to 25 is 325\n",
+ "\n",
+ "\n",
+ "Please type in a positive integer: 30\n",
+ "\n",
+ "The sum of integers from 1 to 30 is 465\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 7-11 , Page number: 130"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Another illustration of a nest of for loops\n",
+ "\n",
+ "print \"How many values of n do you wish to enter? \",\n",
+ "runs = 3\n",
+ "print runs\n",
+ "print \"\\n\\n\"\n",
+ "\n",
+ "n = 9\n",
+ "\n",
+ "for i in range(1,runs+1,1) :\n",
+ "\tprint \"\\n\\nPLease type in a positive integer: \",\n",
+ "\tprint n\n",
+ "\n",
+ "\tsum = 0\n",
+ "\tfor j in range(1,n+1,1) :\n",
+ "\t\tsum += j\n",
+ "\tprint \"\\nThe sum of the integers from 1 to %d is: %d\"%(n,sum)\n",
+ "\tn *= 3\t\t\t# Just a random increment"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "How many values of n do you wish to enter? 3\n",
+ "\n",
+ "\n",
+ "\n",
+ "\n",
+ "\n",
+ "PLease type in a positive integer: 9\n",
+ "\n",
+ "The sum of the integers from 1 to 9 is: 45\n",
+ "\n",
+ "\n",
+ "PLease type in a positive integer: 27\n",
+ "\n",
+ "The sum of the integers from 1 to 27 is: 378\n",
+ "\n",
+ "\n",
+ "PLease type in a positive integer: 81\n",
+ "\n",
+ "The sum of the integers from 1 to 81 is: 3321\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 7-12 , Page number: 131"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Newton-Rapshon method for calculating square roots\n",
+ "\n",
+ "def EPSILON() :\n",
+ "\t\"\"\" USING AS A CONSTANT \"\"\"\n",
+ "\treturn 0.0001\n",
+ "\n",
+ "print \"What number do you want to kate the square root of?\",\n",
+ "n = 17.0\n",
+ "print n\n",
+ "\n",
+ "while n < 0.0 :\n",
+ "\tprint \"Please enter a non-negative number!\"\n",
+ "\tn = 3 \t\t\t\t\t# Just a random positive number\n",
+ "\n",
+ "# The for loop statement given in the example(from the book) is not possible to code in python\n",
+ "# So, breaking it down to while loop\n",
+ "\n",
+ "guess = n / 2.0\n",
+ "while (guess * guess - n > EPSILON() or guess * guess - n < -EPSILON()) :\n",
+ "\tguess = (guess + n/guess) / 2.0\n",
+ "\t\n",
+ "print \"I calculate the square root of %f to be %.4f\"%(n,guess)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "What number do you want to kate the square root of? 17.0\n",
+ "I calculate the square root of 17.000000 to be 4.1231\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 7-13 , Page number: 133"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# General addition table for a number n\n",
+ "\n",
+ "print \"What number do you want a table for?\",\n",
+ "n = 10\n",
+ "print n\n",
+ "\n",
+ "j = n\n",
+ "for i in range (0,n+1,1) :\n",
+ "\tprint \"%3d + %3d = %3d\"%(i,j,n)\n",
+ "\tj -= 1"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "What number do you want a table for? 10\n",
+ " 0 + 10 = 10\n",
+ " 1 + 9 = 10\n",
+ " 2 + 8 = 10\n",
+ " 3 + 7 = 10\n",
+ " 4 + 6 = 10\n",
+ " 5 + 5 = 10\n",
+ " 6 + 4 = 10\n",
+ " 7 + 3 = 10\n",
+ " 8 + 2 = 10\n",
+ " 9 + 1 = 10\n",
+ " 10 + 0 = 10\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 7-14 , Page number: 135"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Generate addition table for a number n, shorter loop\n",
+ "\n",
+ "print \"What number do you want a table for?\",\n",
+ "n = 10\n",
+ "print n\n",
+ "\n",
+ "# Since the range() function supports at max 3 arguments, no possible shortening is possilbe in python\n",
+ "j = n\n",
+ "for i in range (0,n+1,1):\n",
+ "\tprint \"%3d + %3d = %3d\"%(i,j,n)\n",
+ "\tj -= 1\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "What number do you want a table for? 10\n",
+ " 0 + 10 = 10\n",
+ " 1 + 9 = 10\n",
+ " 2 + 8 = 10\n",
+ " 3 + 7 = 10\n",
+ " 4 + 6 = 10\n",
+ " 5 + 5 = 10\n",
+ " 6 + 4 = 10\n",
+ " 7 + 3 = 10\n",
+ " 8 + 2 = 10\n",
+ " 9 + 1 = 10\n",
+ " 10 + 0 = 10\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/The_Spirit_of_C/chapter8.ipynb b/The_Spirit_of_C/chapter8.ipynb
new file mode 100755
index 00000000..baae6f9a
--- /dev/null
+++ b/The_Spirit_of_C/chapter8.ipynb
@@ -0,0 +1,567 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:db9d52743fdd42516fb59e7618f0fc71d76d4ba3cb21fd098bf4fd004c40683b"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 8, A Detailed Look at the printf and scanf Functions"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 8-1 , Page number: 149"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# A print demo\n",
+ "# The conversion specification for numbers.\n",
+ "\n",
+ "print \"Case 1 :%d:\"%123\n",
+ "\n",
+ "print \"Case 2 :%0d:\"%123\n",
+ "\n",
+ "print \"Case 3 :%2d:\"%123\n",
+ "\n",
+ "print \"Case 4 :%8d:\"%123\n",
+ "\n",
+ "print \"Case 5 :%-8d:\"%123\n",
+ "\n",
+ "print \"Case 6 :%8d:\"%-123\n",
+ "\n",
+ "print \"Case 7 :%f:\"%123.456\n",
+ "\n",
+ "print \"Case 8 :%f:\"%123.4567896\n",
+ "\n",
+ "print \"Case 9 :%e:\"%123.456\n",
+ "\n",
+ "print \"Case 10 :%e:\"%1.23456e2\n",
+ "\n",
+ "print \"Case 11 :%e:\"%123.456e+0\n",
+ "\n",
+ "print \"Case 12 :%f:\"%1.23456E+02\n",
+ "\n",
+ "print \"Case 13 :%4.2f:\"%123.456\n",
+ "\n",
+ "print \"Case 14 :%8.2f:\"%123.456\n",
+ "\n",
+ "print \"Case 15 :%.3e:\"%123.456\n",
+ "\n",
+ "print \"Case 16 :%12.3e:\"%123.456\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Case 1 :123:\n",
+ "Case 2 :123:\n",
+ "Case 3 :123:\n",
+ "Case 4 : 123:\n",
+ "Case 5 :123 :\n",
+ "Case 6 : -123:\n",
+ "Case 7 :123.456000:\n",
+ "Case 8 :123.456790:\n",
+ "Case 9 :1.234560e+02:\n",
+ "Case 10 :1.234560e+02:\n",
+ "Case 11 :1.234560e+02:\n",
+ "Case 12 :123.456000:\n",
+ "Case 13 :123.46:\n",
+ "Case 14 : 123.46:\n",
+ "Case 15 :1.235e+02:\n",
+ "Case 16 : 1.235e+02:\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 8-2 , Page number: 152"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# A print demo:\n",
+ "# Interpretation of values\n",
+ "\n",
+ "# python is dynamically-typed language\n",
+ "# which is why declaration of variables is omitted\n",
+ "n = -123\n",
+ "c = \"V\"\n",
+ "\n",
+ "print \"%d\"%n\n",
+ "print \"%u\"%n\t\t# python correctly interprets the negative(unsigned) integer\n",
+ "\n",
+ "print \"%c\"%c\n",
+ "# print \"%d\"%c \t# python doesn't support implicit type-casting from integer to character or character to integer\n",
+ "print \"%c\"%86"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "-123\n",
+ "-123\n",
+ "V\n",
+ "V\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 8-3 , Page number: 153"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Printing out the ASCII value of a character\n",
+ "\n",
+ "# There is no do..while loop in python\n",
+ "# Hence, we will be using while loop \n",
+ "\n",
+ "\n",
+ "answer = \"y\"\n",
+ "while answer == \"y\" :\n",
+ "\tprint \"Enter a character:\",\n",
+ "\tin_char = \"a\"\n",
+ "\tprint in_char\n",
+ "\n",
+ "\tprint \"The ASCII value of %c is %d\"%(in_char,ord(in_char)) \t# ord() function returns the ascii(int) value of a character\n",
+ "\n",
+ "\tprint \"\\nAnother? (y/n)\",\n",
+ "\tanswer = \"n\"\t\t\t# To terminate the loop\n",
+ "\tprint answer\n",
+ "\n",
+ "\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Enter a character: a\n",
+ "The ASCII value of a is 97\n",
+ "\n",
+ "Another? (y/n) n\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 8-4 , Page number: 154"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Converting a digit to a number by using its ASCII value\n",
+ "\n",
+ "print \"Enter a digit:\",\n",
+ "digit = \"A\"\n",
+ "print digit\n",
+ "\n",
+ "if digit < \"0\" or digit > \"9\" :\n",
+ "\tprint \"That's not a digit\"\n",
+ "else :\n",
+ "\tprint \"The digit you typed is %c\"%digit"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Enter a digit: A\n",
+ "That's not a digit\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 8-5 , Page number: 156"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Converting a letter from lower to upper case or vice-versa\n",
+ "\n",
+ "answer = \"y\"\n",
+ "while answer == \"y\" :\n",
+ "\tprint \"\\n\\n\\nEnter a letter:\",\n",
+ "\tletter = \"A\"\n",
+ "\tprint letter\n",
+ "\n",
+ "\tif letter >= \"A\" and letter < \"Z\" :\t\t# Letter is uppercase\n",
+ "\t\tprint \"Lower case is: %c\"%chr(ord(letter) + (ord(\"a\")-ord(\"A\")))\n",
+ "\telif letter >= \"a\" and letter <= \"z\" :\t# Letter is lowercase\n",
+ "\t\tprint \"Upper case is: %c\"%chr(ord(letter) - (ord(\"a\")-ord(\"A\")))\n",
+ "\telse :\n",
+ "\t\tprint \"That's not a letter\"\n",
+ "\n",
+ "\t# Ask if the user wants to go again\n",
+ "\tprint \"\\nAnother? (y/n)\",\n",
+ "\tanswer = \"n\"\t\t# To terminate the loop\n",
+ "\tprint answer"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "\n",
+ "\n",
+ "Enter a letter: A\n",
+ "Lower case is: a\n",
+ "\n",
+ "Another? (y/n) n\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 8-6 , Page number: 157"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Example of using control characters\n",
+ "\n",
+ "print \"The word apple\\b\\b\\b\\b\\b_____ is underlined.\\n\"\n",
+ "print \"The last word in this sentence is way over\\t\\there.\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "The word apple\b\b\b\b\b_____ is underlined.\n",
+ "\n",
+ "The last word in this sentence is way over\t\there.\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 8-7 , Page number: 158"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# How to print special characters\n",
+ "\n",
+ "print \"This is how to print a double-quote: \\\"\"\n",
+ "print \"This is how to print a backslash: \\\\\"\n",
+ "# this is how to write an apostrophe character\n",
+ "c = '\\''\n",
+ "print \"c now contains: %c\"%c\n",
+ "print \"This is how to print a percent-sign: %\"\t\t# no escape sequence required for % in python"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "This is how to print a double-quote: \"\n",
+ "This is how to print a backslash: \\\n",
+ "c now contains: '\n",
+ "This is how to print a percent-sign: %\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 8-8 , Page number: 160"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Octal and hexadecimal notation\n",
+ "\n",
+ "a = 27\n",
+ "b = 033\n",
+ "c = 0x1b\n",
+ "\n",
+ "print \"a = %d, b = %d, c = %d\"%(a,b,c)\n",
+ "print \"a = %o, b = %o, c = %o\"%(a,b,c)\n",
+ "print \"a = %x, b = %x, c = %x\"%(a,b,c)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "a = 27, b = 27, c = 27\n",
+ "a = 33, b = 33, c = 33\n",
+ "a = 1b, b = 1b, c = 1b\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 8-9 , Page number: 162"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Illustration of some ways to print a string\n",
+ "\n",
+ "print \"This is simply a control string.\"\n",
+ "\n",
+ "print \"%s\"%(\"The control string just tells how to print this.\")\n",
+ "\n",
+ "print \"%s\"%(\"Newline may be put here, instead!.\\n\"),\n",
+ "\n",
+ "print \"%s %s %s %s %s\"%(\"This\",\"is\",\"valid\",\"in\",\"C.\")\n",
+ "\n",
+ "print \"%s %s also %s %s %s\"%(\"This\",\"is\",\"valid\",\"in\",\"C.\")\n",
+ "\n",
+ "print \"%s %s %s %s %s %s %s\"%(\"This\",\"is\",\"valid\",\"in\",\"C\",\"also.\",\"\\n\"),"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "This is simply a control string.\n",
+ "The control string just tells how to print this.\n",
+ "Newline may be put here, instead!.\n",
+ "This is valid in C.\n",
+ "This is also valid in C.\n",
+ "This is valid in C also. \n"
+ ]
+ }
+ ],
+ "prompt_number": 9
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 8-10 , Page number: 163"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# %s conversion specification demonstrated\n",
+ "\n",
+ "print \"Case 1 :%s:\"%(\"A string\")\n",
+ "\n",
+ "print \"Case 2 :%3s:\"%(\"A string\")\n",
+ "\n",
+ "print \"Case 3 :%12s:\"%(\"A string\")\n",
+ "\n",
+ "print \"Case 4 :%-12s:\"%(\"A string\")\n",
+ "\n",
+ "print \"Case 5 :%12.6s:\"%(\"A string\")\n",
+ "\n",
+ "print \"Case 6 :%12.12s:\"%(\"A string\")\n",
+ "\n",
+ "print \"Case 7 :%.6s:\"%(\"A string\")\n",
+ "\n",
+ "print \"Case 8 :%-12.6s:\"%(\"A string\")"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Case 1 :A string:\n",
+ "Case 2 :A string:\n",
+ "Case 3 : A string:\n",
+ "Case 4 :A string :\n",
+ "Case 5 : A stri:\n",
+ "Case 6 : A string:\n",
+ "Case 7 :A stri:\n",
+ "Case 8 :A stri :\n"
+ ]
+ }
+ ],
+ "prompt_number": 10
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 8-11 , Page number: 164 "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Some miscellaneous conversion sppecifications\n",
+ "\n",
+ "a = 123456789L\n",
+ "\n",
+ "print \"%d\"%a\t\t\t# in python both int and long are unified..so %d specifier valid unlike in C\n",
+ "print \"%ld\"%a\n",
+ "print \":%c:\"%(\"V\")\n",
+ "print \":%0c:\"%(\"V\")\n",
+ "print \":%5c:\"%(\"V\")\n",
+ "print \":%-5c:\"%(\"V\")"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "123456789\n",
+ "123456789\n",
+ ":V:\n",
+ ":V:\n",
+ ": V:\n",
+ ":V :\n"
+ ]
+ }
+ ],
+ "prompt_number": 11
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 8-13 , Page number: 171"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Reading decimal,octal and hex numbers\n",
+ "\n",
+ "print \"Enter a number in decimal:\",\n",
+ "a = 27\n",
+ "print a\n",
+ "print \"You entered %d\"%a\n",
+ "\n",
+ "print \"\\nEnter a number in octal:\",\n",
+ "a = 033\t\t\t# O is added in the front to specify octal value\n",
+ "print a\n",
+ "print \"You entered %o, or %d in decimal\"%(a,a)\n",
+ "\n",
+ "print \"\\nEnter a number in hex:\",\n",
+ "a = 0x1B\n",
+ "print a\n",
+ "print \"You entered %x, or %d in decimal\"%(a,a)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Enter a number in decimal: 27\n",
+ "You entered 27\n",
+ "\n",
+ "Enter a number in octal: 27\n",
+ "You entered 33, or 27 in decimal\n",
+ "\n",
+ "Enter a number in hex: 27\n",
+ "You entered 1b, or 27 in decimal\n"
+ ]
+ }
+ ],
+ "prompt_number": 12
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/The_Spirit_of_C/chapter9.ipynb b/The_Spirit_of_C/chapter9.ipynb
new file mode 100755
index 00000000..ae4771e3
--- /dev/null
+++ b/The_Spirit_of_C/chapter9.ipynb
@@ -0,0 +1,590 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:13a3347e13ed5ee09ae2833e49a517873801778756103a4da905a96a5997fa89"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 9, User-Defined Functions"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 9-1 , Page number: 187"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Using a function as an abbreviation\n",
+ "\n",
+ "# In python, the user defined functions have to defined before making a call to them\n",
+ "\n",
+ "def chorus() :\n",
+ "\tprint \"%60s\"%\"With a knick-knack-paddy-whack,\"\n",
+ "\tprint \"%60s\"%\"Give the dog a bone,\"\n",
+ "\tprint \"%60s\\n\"%\"This old man went rolling home.\"\n",
+ "\n",
+ "print \"This old man, he played two,\"\n",
+ "print \"He played knick-knack on my thumb,\"\n",
+ "chorus()\n",
+ "\n",
+ "print \"This old man, he played one,\"\n",
+ "print \"He played knick-knack on my shoe,\"\n",
+ "chorus()\n",
+ "\n",
+ "print \"This old man, he played three,\"\n",
+ "print \"He played knick-knack on my knee,\"\n",
+ "chorus()\n",
+ "\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "This old man, he played two,\n",
+ "He played knick-knack on my thumb,\n",
+ " With a knick-knack-paddy-whack,\n",
+ " Give the dog a bone,\n",
+ " This old man went rolling home.\n",
+ "\n",
+ "This old man, he played one,\n",
+ "He played knick-knack on my shoe,\n",
+ " With a knick-knack-paddy-whack,\n",
+ " Give the dog a bone,\n",
+ " This old man went rolling home.\n",
+ "\n",
+ "This old man, he played three,\n",
+ "He played knick-knack on my knee,\n",
+ " With a knick-knack-paddy-whack,\n",
+ " Give the dog a bone,\n",
+ " This old man went rolling home.\n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 9-2 , Page number: 189"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Demonstration of one use of a function\n",
+ "\n",
+ "def get_an_int() :\n",
+ "\t\"\"\"RETURNS AN INTEGER\"\"\"\t\t# This statement is just a description of the function (specific feature of python)\n",
+ "\treturn 5\n",
+ "\n",
+ "print \"Enter the length of a rectangle:\",\n",
+ "length = get_an_int()\n",
+ "print length\n",
+ "\n",
+ "print \"Enter the width:\",\n",
+ "width = get_an_int()\n",
+ "print width\n",
+ "\n",
+ "print \"\\nThe area is %d\"%(length*width)\n",
+ "\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Enter the length of a rectangle: 5\n",
+ "Enter the width: 5\n",
+ "\n",
+ "The area is 25\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 9-3 , Page number: 191"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# An attempt at communication between functions\n",
+ "\n",
+ "def modify_i() :\n",
+ "\ti = 3\n",
+ "\t\n",
+ "i = 1\n",
+ "print \"i is now equal to %d\"%i\n",
+ "\n",
+ "modify_i()\n",
+ "print \"i is now equal to %d\"%i\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "i is now equal to 1\n",
+ "i is now equal to 1\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 9-4 , Page number: 192"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Demonstration of the use of a global variable\n",
+ "\n",
+ "# Making variable global\n",
+ "\n",
+ "def get_an_int() :\n",
+ "\treturn 5\n",
+ "\n",
+ "def calc_area() :\n",
+ "\tarea = length*width\n",
+ "\n",
+ "globals()\t\t\t# The command simply makes all the variables declared so far as global variables\n",
+ "print \"Enter the length of a rectangle:\",\n",
+ "length = get_an_int()\n",
+ "print length\n",
+ "\n",
+ "print \"Enter the width:\",\n",
+ "width = get_an_int()\n",
+ "print width\n",
+ "\n",
+ "calc_area()\n",
+ "print \"\\nThe area is %d\"%(length*width)\n",
+ "\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Enter the length of a rectangle: 5\n",
+ "Enter the width: 5\n",
+ "\n",
+ "The area is 25\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 9-5 , Page number: 194"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Introduction to parameters\n",
+ "\n",
+ "def print_an_int(i) :\n",
+ "\t\"\"\"The function prints an integer passed as a parameter\"\"\"\n",
+ "\tprint i\n",
+ "\n",
+ "\n",
+ "n = 3\n",
+ "\n",
+ "print \"Passing a constant:\",\n",
+ "print_an_int(5)\n",
+ "\n",
+ "print \"\\n\\nPassing a variable's value:\",\n",
+ "print_an_int(n)\n",
+ "\n",
+ "print \"\\n\\nPassing the value of an expression:\",\n",
+ "print_an_int(n * 4 + 1)\n",
+ "\n",
+ "\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Passing a constant: 5\n",
+ "\n",
+ "\n",
+ "Passing a variable's value: 3\n",
+ "\n",
+ "\n",
+ "Passing the value of an expression: 13\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 9-6 , Page number: 196"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Demonstration of how a procedure cannot modify the contents of a variable passed as a parameter\n",
+ "\n",
+ "def modify(i) :\n",
+ "\ti = 3\n",
+ "\n",
+ "i = 1\n",
+ "\n",
+ "print \"i is now equal to %d\"%i\n",
+ "\n",
+ "modify(i)\n",
+ "\n",
+ "print \"i is now equal to %d\"%i"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "i is now equal to 1\n",
+ "i is now equal to 1\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 9-7 , Page number: 197 "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Hailstones, demonstrating the use of a parameter\n",
+ "\n",
+ "def step(i) :\n",
+ "\t\"\"\"This function returns its parameter i divided by 2 if i is even else it returns i multiplied by 3 and incremented by 1\"\"\"\n",
+ "\tif (i % 2) :\n",
+ "\t\treturn (i * 3 + 1)\n",
+ "\telse : \n",
+ "\t\treturn (i / 2)\n",
+ "\n",
+ "counter = 0\n",
+ "\n",
+ "print \"Enter a positive integer\",\n",
+ "n = 25\n",
+ "print n\n",
+ "\n",
+ "nsave = n\n",
+ "\n",
+ "while n > 1 :\n",
+ "\tn = step(n)\n",
+ "\tcounter += 1\n",
+ "\tprint \"Step %4d: n = %4d\"%(counter,n)\n",
+ "\n",
+ "print \"\\n\\n%d went to 1 in %d steps.\"%(nsave,counter)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Enter a positive integer 25\n",
+ "Step 1: n = 76\n",
+ "Step 2: n = 38\n",
+ "Step 3: n = 19\n",
+ "Step 4: n = 58\n",
+ "Step 5: n = 29\n",
+ "Step 6: n = 88\n",
+ "Step 7: n = 44\n",
+ "Step 8: n = 22\n",
+ "Step 9: n = 11\n",
+ "Step 10: n = 34\n",
+ "Step 11: n = 17\n",
+ "Step 12: n = 52\n",
+ "Step 13: n = 26\n",
+ "Step 14: n = 13\n",
+ "Step 15: n = 40\n",
+ "Step 16: n = 20\n",
+ "Step 17: n = 10\n",
+ "Step 18: n = 5\n",
+ "Step 19: n = 16\n",
+ "Step 20: n = 8\n",
+ "Step 21: n = 4\n",
+ "Step 22: n = 2\n",
+ "Step 23: n = 1\n",
+ "\n",
+ "\n",
+ "25 went to 1 in 23 steps.\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 9-8 , Page number: 200"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Square root program demonstrating a non-integer function and parameter\n",
+ "\n",
+ "def EPSILON() :\n",
+ "\t\"\"\"replacement of #define constant\"\"\"\n",
+ "\treturn 0.0001\n",
+ "\n",
+ "def sqrt(n) :\n",
+ "\t\"\"\"returns the square root of the number supplied as parameter using Newton-Raphson method\"\"\"\n",
+ "\tif n > 0.0 :\n",
+ "\t\t# The for loop statement given in the example(from the book) is not possible to code in python\n",
+ "\t\t# So, breaking it down to while loop\n",
+ "\t\tguess = n / 2.0\n",
+ "\t\twhile (guess * guess - n > EPSILON() or guess * guess - n < -EPSILON()) :\n",
+ "\t\t\tguess = (guess + n/guess) / 2.0\n",
+ "\t\treturn guess\n",
+ "\telse :\n",
+ "\t\treturn (-1.0)\n",
+ "\n",
+ "print \"Enter the number whose square root you want:\",\n",
+ "x = 17.1\n",
+ "print x\n",
+ "\n",
+ "print \"The square root of %f is %f\"%(x,sqrt(x))"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Enter the number whose square root you want: 17.1\n",
+ "The square root of 17.100000 is 4.135215\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 9-9 , Page number: 201"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Testing for leap years using a boolean function\n",
+ "\n",
+ "def is_leap(year) :\n",
+ "\t\"\"\"A function that returns true if the given year is a leap year else returns false\"\"\"\n",
+ "\treturn (year % 4 == 0 and year % 100 != 0 or year % 400 == 0)\n",
+ "\n",
+ "print \"Please enter a year:\",\n",
+ "year = 2000\n",
+ "print year\n",
+ "\n",
+ "if (is_leap(year)) :\n",
+ "\tprint \"%d is a leap year.\"%year\n",
+ "else :\n",
+ "\tprint \"%d is not a leap year.\"%year"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Please enter a year: 2000\n",
+ "2000 is a leap year.\n"
+ ]
+ }
+ ],
+ "prompt_number": 9
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 9-10 , Page number: 203"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Demonstration of the use of multiple parameters\n",
+ "\n",
+ "def get_an_int() :\n",
+ "\t\"\"\"returns a random integer\"\"\"\n",
+ "\treturn 7\n",
+ "\n",
+ "def area(length,width) :\n",
+ "\t\"\"\"returns the area of the rectangle using its parameters length and width\"\"\"\n",
+ "\treturn length * width\n",
+ "\n",
+ "print \"Enter the length of a rectangle:\",\n",
+ "length = get_an_int()\n",
+ "print length\n",
+ "\n",
+ "print \"Enter the width:\",\n",
+ "width = get_an_int()\n",
+ "print width\n",
+ "\n",
+ "print \"\\nThe area is %d.\"%area(length,width)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Enter the length of a rectangle: 7\n",
+ "Enter the width: 7\n",
+ "\n",
+ "The area is 49.\n"
+ ]
+ }
+ ],
+ "prompt_number": 10
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 9-11 , Page number: 204"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "# Illustration of a 2-parameter function: raising a number to a power \n",
+ "\n",
+ "def power(i,x) :\n",
+ "\t\"\"\"returns the values of i to the power of x\"\"\"\n",
+ "\taccum = 1\n",
+ "\tif x < 0 :\n",
+ "\t\treturn 0\n",
+ "\tfor index in range (0,x,1) :\n",
+ "\t\taccum *= i\n",
+ "\treturn accum\n",
+ "\n",
+ "answer = \"y\"\n",
+ "\n",
+ "while answer == \"y\" or answer == \"Y\" :\n",
+ "\tprint \"\\nPlease enter an integer:\",\n",
+ "\tnumber = 4\n",
+ "\tprint number\n",
+ "\n",
+ "\tprint \"Please enter a non-negative integral power\"\n",
+ "\tprint \" to which the first number is to be raised\",\n",
+ "\texponent = 2\n",
+ "\tprint exponent\n",
+ "\n",
+ "\twhile exponent < 0 :\n",
+ "\t\tprint \"***\\7Please make that a non-negative integer\"\n",
+ "\t\texponent = 2 \t\t\t\t# randomly making the exponent non-negative\n",
+ "\n",
+ "\tprint \"%d raised to the power %d is %ld.\"%(number,exponent,power(number,exponent))\n",
+ "\n",
+ "\t# see if the user wants to keep going\n",
+ "\n",
+ "\tprint \"\\nAnother calculation? (y/n)\",\n",
+ "\tanswer = \"n\"\n",
+ "\tprint answer"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "Please enter an integer: 4\n",
+ "Please enter a non-negative integral power\n",
+ " to which the first number is to be raised 2\n",
+ "4 raised to the power 2 is 16.\n",
+ "\n",
+ "Another calculation? (y/n) n\n"
+ ]
+ }
+ ],
+ "prompt_number": 11
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/The_Spirit_of_C/screenshots/Screenshot_1.png b/The_Spirit_of_C/screenshots/Screenshot_1.png
new file mode 100755
index 00000000..dc7d579e
--- /dev/null
+++ b/The_Spirit_of_C/screenshots/Screenshot_1.png
Binary files differ
diff --git a/The_Spirit_of_C/screenshots/Screenshot_2.png b/The_Spirit_of_C/screenshots/Screenshot_2.png
new file mode 100755
index 00000000..6762ca01
--- /dev/null
+++ b/The_Spirit_of_C/screenshots/Screenshot_2.png
Binary files differ
diff --git a/The_Spirit_of_C/screenshots/Screenshot_3.png b/The_Spirit_of_C/screenshots/Screenshot_3.png
new file mode 100755
index 00000000..e55dd42a
--- /dev/null
+++ b/The_Spirit_of_C/screenshots/Screenshot_3.png
Binary files differ