summaryrefslogtreecommitdiff
path: root/Beginning_C_By_Ivon_Horton/chapter14.ipynb
diff options
context:
space:
mode:
Diffstat (limited to 'Beginning_C_By_Ivon_Horton/chapter14.ipynb')
-rw-r--r--Beginning_C_By_Ivon_Horton/chapter14.ipynb342
1 files changed, 342 insertions, 0 deletions
diff --git a/Beginning_C_By_Ivon_Horton/chapter14.ipynb b/Beginning_C_By_Ivon_Horton/chapter14.ipynb
new file mode 100644
index 00000000..42a4f7a7
--- /dev/null
+++ b/Beginning_C_By_Ivon_Horton/chapter14.ipynb
@@ -0,0 +1,342 @@
+{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Chapter 14: Advanced and Specialized Topics"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 14.1, page no. 592"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "\"\"\"\n",
+ "Classifying wide characters\n",
+ "\"\"\"\n",
+ "\n",
+ "import string\n",
+ "import sys\n",
+ "\n",
+ "print \"Enter a character: \",\n",
+ "ch = raw_input()\n",
+ "\n",
+ "if ch.isalnum():\n",
+ " if ch.isdigit():\n",
+ " print \"You entered the digit \", ch\n",
+ " elif ch.islower():\n",
+ " print \"You entered a lower case \", ch.upper()\n",
+ " elif ch.isupper():\n",
+ " print \"You entered a upper case \", ch.lower()\n",
+ " elif ch in string.punctuation:\n",
+ " print \"You entered a punctuation character \", ch\n",
+ " else:\n",
+ " print \"You entered \", ch, \"but I don't know what it is!\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Enter a character: "
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "g\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " You entered a lower case G\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 14.2, page no. 596"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "\"\"\"\n",
+ "Finding occurrences of one wide character string in another\n",
+ "\"\"\"\n",
+ "\n",
+ "print \"Enter a string of less than 100 characters: \",\n",
+ "text = raw_input()\n",
+ "\n",
+ "print \"Enter the string sought: \",\n",
+ "sought = raw_input()\n",
+ "sought = sought.lower()\n",
+ "count = 0\n",
+ "\n",
+ "sought_len = len(sought)\n",
+ "\n",
+ "for i in range(len(text)):\n",
+ " substr = text[i:sought_len+i]\n",
+ " if substr == sought:\n",
+ " count += 1\n",
+ "\n",
+ "print \"First string entered: \", text\n",
+ "print \"Second string entered: \", sought\n",
+ "print \"The second string was found in first %d times\" %count\n",
+ "\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Enter a string of less than 100 characters: "
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Smith, where Jones had had, \"had\", had had \"had had\". Enter the string sought (less than 40 characters): Had\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " Enter the string sought: "
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "had\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " First string entered: Smith, where Jones had had, \"had\", had had \"had had\". Enter the string sought (less than 40 characters): Had\n",
+ "Second string entered: had\n",
+ "The second string was found in first 7 times\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 14.3, page no. 606"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "\"\"\"\n",
+ "Working with complex numbers\n",
+ "\"\"\"\n",
+ "\n",
+ "cx = 1.0 + 3.0j\n",
+ "cy = 1.0 - 4.0j\n",
+ "\n",
+ "sum = cx + cy\n",
+ "diff = cx - cy\n",
+ "product = cx * cy\n",
+ "quotient = cy/cy\n",
+ "conjugate = cx.conjugate()\n",
+ "\n",
+ "print \"Complex numbers are supported\"\n",
+ "print \"Working with complex numbers: \"\n",
+ "print \"Starting values: cx = %.2f%+.2fi cy = %.2f%+.2fi\" %(cx.real, cx.imag, cy.real, cy.imag)\n",
+ "print \"The sum cx + cy = %.2f%+.2fi\" %(sum.real, sum.imag)\n",
+ "print \"The difference cx - cy = %.2f%+.2fi\" %(diff.real, diff.imag)\n",
+ "print \"The product cx * cy = %.2f%+.2fi\" %(product.real, product.imag)\n",
+ "print \"The quotient cx / cy = %.2f%+.2fi\" %(quotient.real, quotient.imag)\n",
+ "print \"The conjugate of cx = %.2f%+.2fi\" %(conjugate.real, conjugate.imag)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Complex numbers are supported\n",
+ "Working with complex numbers: \n",
+ "Starting values: cx = 1.00+3.00i cy = 1.00-4.00i\n",
+ "The sum cx + cy = 2.00-1.00i\n",
+ "The difference cx - cy = 0.00+7.00i\n",
+ "The product cx * cy = 13.00-1.00i\n",
+ "The quotient cx / cy = 1.00-0.00i\n",
+ "The conjugate of cx = 1.00-3.00i\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 14.4, page no. 610"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "\"\"\"\n",
+ "Joining threads\n",
+ "\"\"\"\n",
+ "\n",
+ "from threading import Thread\n",
+ "\n",
+ "def get_data(pdata):\n",
+ " pd = pdata\n",
+ " print \"The get_data thread received: data.a=%d and data.b=%d\" %(pd[0], pd[1])\n",
+ " pd[0] *= 3\n",
+ " print \"The get_data thread makes it: data.a=%d and data.b=%d \" %(pd[0], pd[1])\n",
+ " \n",
+ "def process_data(pdata):\n",
+ " pd = pdata\n",
+ " print \"The process_data thread received: data.a=%d and data.b=%d \"%(pd[0], pd[1])\n",
+ " \n",
+ "mydata = [123, 345]\n",
+ "print \"Before starting the get_data thread: mydata.a=%d and mydata. b=%d\" %(mydata[0], mydata[1])\n",
+ "print \"get_data thread started.\"\n",
+ "t1 = Thread(target=get_data, args=(mydata,))\n",
+ "t1.start()\n",
+ "Thread.join(t1)\n",
+ "print \"process_data thread started.\"\n",
+ "t2 = Thread(target=process_data, args=(mydata,))\n",
+ "t2.start()\n",
+ "Thread.join(t2)\n",
+ "print \"After both threads finish executing: mydata.a=%d and mydata. b=%d\" %(mydata[0], mydata[1])"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Before starting the get_data thread: mydata.a=123 and mydata. b=345\n",
+ "get_data thread started.\n",
+ "The get_data thread received: data.a=123 and data.b=345\n",
+ "The get_data thread makes it: data.a=369 and data.b=345 \n",
+ "process_data thread started.\n",
+ "The process_data thread received: data.a=369 and data.b=345 \n",
+ "After both threads finish executing: mydata.a=369 and mydata. b=345\n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 14.5, page no. 616"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "\"\"\"\n",
+ "Thread operations\n",
+ "\"\"\"\n",
+ "\n",
+ "from threading import Thread\n",
+ "import math\n",
+ "import time\n",
+ "\n",
+ "thread_count = 5\n",
+ "\n",
+ "thread_id = []\n",
+ "task = 0\n",
+ "\n",
+ "def execute_task():\n",
+ " global task\n",
+ " task += 1\n",
+ " print \"Task %d started.\" %task\n",
+ " time.sleep(1)\n",
+ " for i in range(1000000):\n",
+ " x = math.sqrt(3.1415926)\n",
+ " print \"Task %d finished\" %task\n",
+ " \n",
+ "\n",
+ "for i in range(thread_count):\n",
+ " thread_id.append(Thread(target=execute_task))\n",
+ " thread_id[i].start()\n",
+ " \n",
+ "for j in range(thread_count):\n",
+ " Thread.join(thread_id[j])"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Task 1 started.\n",
+ "Task 2 started.\n",
+ "Task 3 started.\n",
+ "Task 4 started.\n",
+ "Task 5 started.\n",
+ "Task 5 finished\n",
+ "Task 5 finished\n",
+ "Task 5 finished\n",
+ "Task 5 finished\n",
+ "Task 5 finished\n"
+ ]
+ }
+ ],
+ "prompt_number": 9
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file