1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
{
"metadata": {
"name": "ch7"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": "Chapter 7 : Pointers: Tic-Tac-Toe 2.0"
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": "example 7.1 page no :225"
},
{
"cell_type": "code",
"collapsed": false,
"input": "'''\nPointing\nDemonstrates using pointers\nNOte : pointer concept is not in python, so output would be differ.\n'''\n\npScore = 0 #declare and initialize a pointer\nscore = 1000 #assign pointer pScore address of variable score\npScore = score; \nprint \"Assigning &score to pScore\\n\";\nprint \"&score is: \" , id(score) # address of score variable\nprint \"pScore is: \" , pScore # address stored in pointer\nprint \"score is: \" , score\nprint \"pScore is: \" , pScore # value pointed to by pointer\nprint \"Adding 500 to score\";\nscore += 500;\nprint \"score is: \" , score \nprint \"*pScore is: \" , pScore \nprint \"Adding 500 to *pScore\\n\";\npScore += 500;\nprint \"score is: \" , score \nprint \"*pScore is: \" , pScore\nprint \"Assigning &newScore to pScore\\n\";\nnewScore = 5000;\npScore = newScore;\nprint \"&newScore is: \" , id(newScore)\nprint \"pScore is: \" , pScore\nprint \"newScore is: \" , newScore\nprint \"*pScore is: \" , pScore\n\nprint \"Assigning &str to pStr\\n\";\nstr = \"score\";\npStr = str; \nprint \"str is: \" , str\nprint \"*pStr is: \" , pStr\nprint \"(*pStr).size() is: \" , len(pStr)\nprint \"pStr->size() is: \" , len(pStr)",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "Assigning &score to pScore\n\n&score is: 24878128\npScore is: 1000\nscore is: 1000\npScore is: 1000\nAdding 500 to score\nscore is: 1500\n*pScore is: 1000\nAdding 500 to *pScore\n\nscore is: 1500\n*pScore is: 1500\nAssigning &newScore to pScore\n\n&newScore is: 24880648\npScore is: 5000\nnewScore is: 5000\n*pScore is: 5000\nAssigning &str to pStr\n\nstr is: score\n*pStr is: score\n(*pStr).size() is: 5\npStr->size() is: 5\n"
}
],
"prompt_number": 1
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": "example 7.2 page no : 235"
},
{
"cell_type": "code",
"collapsed": false,
"input": "'''\n// Swap Pointer\n// Demonstrates passing constant pointers to alter argument variables\n'''\n\ndef badSwap(x,y):\n x,y = y,x\n \ndef goodSwap(x,y):\n x[0],y[0] = y[0],x[0]\n\n\nmyScore = [150]\nyourScore = [1000]\nprint \"Original values\";\nprint \"myScore: \" , myScore[0]\nprint \"yourScore: \" , yourScore[0]\nprint \"Calling badSwap()\";\nbadSwap(myScore[0], yourScore[0]);\nprint \"myScore: \" , myScore[0] \nprint \"yourScore: \" , yourScore[0]\nprint \"Calling goodSwap()\\n\";\ngoodSwap(myScore,yourScore);\nprint \"myScore: \" , myScore[0] \nprint \"yourScore: \" , yourScore[0]",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "Original values\nmyScore: 150\nyourScore: 1000\nCalling badSwap()\nmyScore: 150\nyourScore: 1000\nCalling goodSwap()\n\nmyScore: 1000\nyourScore: 150\n"
}
],
"prompt_number": 2
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": "example : 7.3 page no : 239"
},
{
"cell_type": "code",
"collapsed": false,
"input": "'''\nInventory Pointer\nDemonstrates returning a pointer\n'''\ndef ptrToElement(pVec, i):\n return pVec[i]\n\ninventory = []\ninventory.append(\"sword\");\ninventory.append(\"armor\");\ninventory.append(\"shield\");\n#displays string object that the returned pointer points to\nprint \"Sending the objected pointed to by returned pointer:\";\nprint ptrToElement(inventory, 0)\n# assigns one pointer to another - - inexpensive assignment\nprint \"Assigning the returned pointer to another pointer.\";\npStr = ptrToElement(inventory, 1);\nprint \"Sending the object pointed to by new pointer to cout:\";\nprint pStr \n#copies a string object - - expensive assignment\nprint \"Assigning object pointed by pointer to a string object.\\n\";\ns = (ptrToElement(inventory, 2));\nprint \"Sending the new string object to cout:\";\nprint s \n#altering the string object through a returned pointer\nprint \"Altering an object through a returned pointer.\";\npStr = \"Healing Potion\";\ninventory[1] = pStr\nprint \"Sending the altered object to cout:\\n\";\nprint inventory[1] ",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "Sending the objected pointed to by returned pointer:\nsword\nAssigning the returned pointer to another pointer.\nSending the object pointed to by new pointer to cout:\narmor\nAssigning object pointed by pointer to a string object.\n\nSending the new string object to cout:\nshield\nAltering an object through a returned pointer.\nSending the altered object to cout:\n\nHealing Potion\n"
}
],
"prompt_number": 3
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": "example 7.4 page no : 244"
},
{
"cell_type": "code",
"collapsed": false,
"input": "'''\n//Array Passer\n//Demonstrates relationship between pointers and arrays\n'''\ndef increase(array,NUM_ELEMENTS):\n for i in range(NUM_ELEMENTS):\n array[i] += 500;\n\ndef display( array, NUM_ELEMENTS):\n for i in range(NUM_ELEMENTS):\n print array[i]\n\n\nprint \"Creating an array of high scores.\\n\\n\";\nNUM_SCORES = 3;\nhighScores = [5000, 3500, 2700]\nprint \"Displaying scores using array name as a constant pointer.\";\nprint highScores[0]\nprint highScores[1]\nprint highScores[2]\nprint \"Increasing scores by passing array as a constant pointer.\";\nincrease(highScores, NUM_SCORES)\nprint \"Displaying scores by passing array as a constant pointer to a constant.\";\ndisplay(highScores, NUM_SCORES);",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "Creating an array of high scores.\n\n\nDisplaying scores using array name as a constant pointer.\n5000\n3500\n2700\nIncreasing scores by passing array as a constant pointer.\nDisplaying scores by passing array as a constant pointer to a constant.\n5500\n4000\n3200\n"
}
],
"prompt_number": 4
},
{
"cell_type": "code",
"collapsed": false,
"input": "",
"language": "python",
"metadata": {},
"outputs": []
}
],
"metadata": {}
}
]
}
|