HP 40gs HP 39gs_40gs_Mastering The Graphing Calculator_English_E_F2224-90010.p - Page 277

very important technique., A copy of

Page 277 highlights

The second and third lines insert a function into F1(X). This can only be done, of course, if the parent aplet is Function. If you do this when the parent is another aplet then the code will still execute but the function will be inserted into the real Function aplet! The reason for inserting this particular function is that we need a function when the axes are plotted or the normal error message will be displayed (see above right). This is undesirable because it will confuse the user. On the other hand we need blank axes for later use in exploring, so we use a trick - we set the function being inserted to be 'Ymax+1'. This is a constant linear function, a horizontal line, which is guaranteed to be off-screen for the entire domain no matter what axes are used vertically. Clever, eh? The next program code we will look at belongs to the 1st option on the VIEWS menu of 'Plot axes'. A message is first given to the user of how to proceed if they want to use different axes. The flag value of G is then set to 1 so that the next program can tell that the axes are ready to use. The function is also re-entered in case the user has changed the SYMB view. Users have an annoying habit of changing things so try to allow for this in your programs by making them fool-proof. The next program below runs when the user chooses the second menu option of "Explore", and illustrates a very important technique. A copy of the PLOT view is stored in the aplet's sketch view and then retrieved and modified using the various graphics commands. The program is broken into parts for discussion purposes. The reason for the "IF G==0 THEN" is to check that the blank axes have been plotted and are available for use. If not then the user receives a message to tell them what to do and the remainder of the program is bypassed using the IF...THEN...ELSE statement. Trying to capture a PLOT view that doesn't exist is a major error and will result in the program crashing abruptly. It is possible to allow for errors like this using the IFERR statement but in a teaching example like this it makes the code more difficult to follow. 277

  • 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
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • 223
  • 224
  • 225
  • 226
  • 227
  • 228
  • 229
  • 230
  • 231
  • 232
  • 233
  • 234
  • 235
  • 236
  • 237
  • 238
  • 239
  • 240
  • 241
  • 242
  • 243
  • 244
  • 245
  • 246
  • 247
  • 248
  • 249
  • 250
  • 251
  • 252
  • 253
  • 254
  • 255
  • 256
  • 257
  • 258
  • 259
  • 260
  • 261
  • 262
  • 263
  • 264
  • 265
  • 266
  • 267
  • 268
  • 269
  • 270
  • 271
  • 272
  • 273
  • 274
  • 275
  • 276
  • 277
  • 278
  • 279
  • 280
  • 281
  • 282
  • 283
  • 284
  • 285
  • 286
  • 287
  • 288
  • 289
  • 290
  • 291
  • 292
  • 293
  • 294
  • 295
  • 296
  • 297
  • 298
  • 299
  • 300
  • 301
  • 302
  • 303
  • 304
  • 305
  • 306
  • 307
  • 308
  • 309
  • 310
  • 311
  • 312
  • 313
  • 314
  • 315
  • 316
  • 317
  • 318
  • 319
  • 320
  • 321
  • 322
  • 323
  • 324
  • 325
  • 326
  • 327
  • 328
  • 329
  • 330
  • 331
  • 332
  • 333
  • 334
  • 335
  • 336
  • 337
  • 338
  • 339
  • 340
  • 341
  • 342
  • 343
  • 344
  • 345
  • 346
  • 347
  • 348
  • 349
  • 350
  • 351
  • 352
  • 353
  • 354
  • 355
  • 356
  • 357
  • 358
  • 359
  • 360
  • 361
  • 362
  • 363
  • 364
  • 365
  • 366

The second and third lines insert a function into
F1(X)
. This can only be
done, of course, if the parent aplet is
Function
. If you do this when the
parent is another aplet then the code will still execute but the function
will be inserted into the real
Function
aplet!
The reason for inserting this particular function is that we need a function when the axes are plotted or the
normal error message will be displayed (see above right).
This is undesirable because it will confuse the user.
On the other hand we need
blank
axes for later use in exploring, so we use a trick – we set the function being
inserted to be ‘Ymax+1’. This is a constant linear function, a horizontal line, which is guaranteed to be
off-screen for the entire domain no matter what axes are used vertically. Clever, eh?
The next program code we will look at belongs to the 1
st
option on the
VIEWS
menu of ‘Plot axes’.
A message is first given to the user of how to proceed if they want to use different axes.
The flag value of
G
is
then set to 1 so that the next program can tell that the axes are ready to use. The function is also re-entered in
case the user has changed the
SYMB
view. Users have an annoying habit of changing things so try to allow
for this in your programs by making them fool-proof.
The next program below runs when the user chooses the second menu option of “Explore”, and illustrates a
very important technique.
A copy of the
PLOT
view is stored in the aplet’s sketch view and then retrieved
and modified using the various graphics commands. The program is broken into parts for discussion purposes.
The reason for the “
IF G==0 THEN
” is to check that the blank axes have been plotted and are available for
use. If not then the user receives a message to tell them what to do and the remainder of the program is
bypassed using the
IF…THEN…ELSE
statement. Trying to capture a
PLOT
view that doesn’t exist is a major
error and will result in the program crashing abruptly.
It is possible to allow for errors like this using the
IFERR
statement but in a teaching example like this it makes the code more difficult to follow.
277