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
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
|
<!--Dear translator: please NEVER translate the id or anything inside the tags as they are needed in english by the application
Thanks a lot in advance.-->
<chapter id="reference">
<title
>&kturtle;s naslagwerk voor het programmeren met &logo;</title>
<para
>Dit is de referentie voor &kturtle;'s &logo;. In dit hoofdstuk bespreken we in het kort de <link linkend="different-instructions"
>verschillende instructietypen</link
>. Daarna leggen we één voor één de <link linkend="commands"
>commando's</link
> uit. Daarna volgen de <link linkend="containers"
>plaatshouders</link
>, <link linkend="math"
>wiskunde</link
>, <link linkend="questions"
>vragen</link
> en <link linkend="controlling-execution"
>uitvoercontroles</link
>. Tot slot laten we je zien hoe je je eigen commando's kunt maken met het commando <link linkend="learn"
>leer</link
>.</para>
<sect1 id="different-instructions">
<title
>Verschillende instructietypen</title>
<para
>Zoals elke taal heeft Logo verschillende soorten woorden en symbolen. Hier worden de verschillen tussen deze soorten kort uitgelegd.</para>
<sect2 id="command">
<title
>Commando's</title>
<para
>Met behulp van commando's vertel je de schildpad of &kturtle; om iets te doen. Sommige commando's vragen om een invoer, anderen geven een uitvoer. <screen
># vooruit is een commando dat invoer nodig heeft. In ons geval het getal 100:
vooruit 100
</screen>
</para>
<para
>Voor meer informatie over alle commando's die &kturtle; aanbiedt ga je <link linkend="commands"
>hier</link
> naar toe.</para>
</sect2>
<sect2 id="number">
<title
>Getallen</title>
<para
>Je bent vast wel bekend met getallen. De manier waarop getallen worden gebruikt in &kturtle; is niet veel anders dan in een spreektaal, of in wiskunde en rekenen. </para>
<para
>We hebben de zogenaamde natuurlijke getallen: <userinput
>0</userinput
>, <userinput
>1</userinput
>, <userinput
>2</userinput
>, <userinput
>3</userinput
>, <userinput
>4</userinput
>, <userinput
>5</userinput
>, etc. De negatieve getallen: <userinput
>-1</userinput
>, <userinput
>-2</userinput
>, <userinput
>-3</userinput
>, etc. En de getallen met decimalen: <userinput
> 0,1</userinput
>, <userinput
> 3,14</userinput
>, <userinput
> 33,3333</userinput
>, <userinput
> -5,05</userinput
>, <userinput
>-1,0</userinput
>. </para>
<para
>Getallen kunnen worden gebruikt in <link linkend="math"
>wiskundige berekeningen</link
> en in <link linkend="questions"
>vragen</link
>. Ze kunnen ook in <link linkend="containers"
>plaatshouders</link
> worden geplaatst.</para>
<para
>Getallen worden <glossterm
>geaccentueerd</glossterm
> in het blauw in de <link linkend="the-code-editor"
>codebewerker</link
>.</para>
</sect2>
<sect2 id="string">
<title
>Tekenreeksen</title>
<para
>Eerst een voorbeeld:<screen>
schrijf "Hallo, ik ben een tekenreeks."
</screen
> In dit voorbeeld is <userinput
>schrijf</userinput
> een commando en <userinput
>"Hallo, ik ben een tekenreeks"</userinput
> is een tekenreeks. Een tekenreeks is dus een stukje tekst. Een tekenreeks begint en eindigt met het teken <userinput
>"</userinput
>. Dit teken vertelt &kturtle; dat de tekst een tekenreeks is.</para>
<para
>Tekenreeksen kunnen in <link linkend="containers"
>plaatshouders</link
> worden geplaatst. Maar je kunt ze niet gebruiken in <link linkend="math"
>wiskundige berekeningen</link
> en <link linkend="questions"
>vragen</link
> gebruiken.</para>
<para
>Tekenreeksen worden donkerrood <glossterm
>geaccentueerd</glossterm
> in de <link linkend="the-code-editor"
>codebewerker</link
>.</para>
</sect2>
<sect2 id="name">
<title
>Namen</title>
<para
>Je kunt met de programmeertaal &logo; nieuwe dingen maken. Als je een programma schrijft zul je vaak <link linkend="containers"
>plaatshouders</link
> nodig hebben, en in sommige gevallen heb je het commando <link linkend="learn"
>leer</link
> nodig om nieuwe commando's te maken. Als je een <link linkend="containers"
>plaatshouder</link
> of een nieuw commando met behulp van <link linkend="learn"
>leer</link
> maakt, dan moet je een naam opgeven.</para>
<para
>Je kunt een willekeurige naam kiezen, zolang die nog geen betekenis heeft. Bijvoorbeeld, je kunt een plaatshouder niet <link linkend="forward"
>vooruit</link
> noemen, omdat die naam al wordt gebruikt voor een commando, en dus al een betekenis heeft. <screen>
# hier wordt vooruit gebruikt als een plaatshouder, maar die heeft al een betekenis
# dus zal dit een foutmelding geven:
vooruit = 20
# dit werkt wel:
vooruit 20
</screen
> Namen mogen alleen letters, cijfers en onderstreepjes (_) bevatten. Ze moeten altijd met een letter beginnen. </para>
<para
>Lees ook de documentatie over <link linkend="containers"
>plaatshouders</link
> en het commando <link linkend="learn"
>leer</link
> voor een betere uitleg en meer voorbeelden. </para>
</sect2>
<sect2 id="assignment">
<title
>Toewijzingen</title>
<para
>Toewijzingen worden gedaan met het symbool <userinput
>=</userinput
>. In programmeertalen is het beter om een <userinput
>=</userinput
> niet te lezen als 'is', maar als 'wordt'. Het woordje 'is' past beter bij de <userinput
>==</userinput
>, wat een <link linkend="questions"
>vraag</link
> is.</para>
<para
>Toewijzingen worden meestal om twee redenen gebruikt: (1) om inhoud toe te voegen aan <link linkend="containers"
>plaatshouders</link
> en (2) om de inhoud van een plaatshouder te veranderen. Bijvoorbeeld: <screen
>x = 10
# de plaatshouder x bevat nu het getal 10
W = "Mijn leeftijd is: "
# de plaatshouder W bevat nu de tekenreeks "Mijn leeftijd is:"
# dit zet de inhoud van de plaatshouders 'X' en 'x' op het canvas
print W + x
</screen>
</para>
<para
>Meer voorbeelden kun je vinden in het hoofdstuk dat <link linkend="containers"
>plaatshouders</link
> uitlegt.</para>
</sect2>
<sect2 id="math-symbols">
<title
>Wiskundesymbolen</title>
<para
>&kturtle; kent alle basissymbolen uit de wiskunde: optellen (<userinput
>+</userinput
>), aftrekken (<userinput
>-</userinput
>), vermenigvuldigen (<userinput
>*</userinput
>), delen <userinput
>/</userinput
>) en de haakjes <userinput
>(</userinput
> en <userinput
>)</userinput
>.</para>
<para
>Een complete uitleg en meer voorbeelden vind je in het hoofdstuk over <link linkend="math"
>wiskunde</link
>.</para>
</sect2>
<sect2 id="question">
<title
>Vragen</title>
<para
>We kunnen eenvoudige vragen stellen waarbij het antwoord 'waar' of 'onwaar' zal zijn.</para>
<para
>Het gebruik van vragen wordt uitgebreid uitgelegd in het hoofdstuk over <link linkend="questions"
>vragen</link
>.</para>
</sect2>
<sect2 id="questions-glue">
<title
>Lijmwoorden voor vragen</title>
<para
>Vragen kunnen aan elkaar worden gelijmd met zogenaamde 'lijmwoorden'. De lijmwoorden zijn <userinput
>en</userinput
>, <userinput
>of</userinput
> en een speciaal lijmwoord: <userinput
>niet</userinput
>.</para>
<para
>Het gebruiken van lijmwoorden wordt uitgelegd in het hoofdstuk <link linkend="question-glue"
>Vragenlijm</link
>.</para>
</sect2>
<sect2 id="comment">
<title
>Commentaar</title>
<para
>Commentaarregels zijn regels die beginnen met een <userinput
>#</userinput
>. Bijvoorbeeld: <screen>
# dit is commentaar!
schrijf "dit is geen commentaar"
# de vorige regel is geen commentaar, maar de volgende regel wel:
# schrijf "dit is geen commentaar"
</screen
> In commentaarregels kunnen we aantekeningen schrijven die iets vertellen over de code, voor onszelf of voor iemand anders die de code leest. Commentaar wordt gebruikt voor : (1) een kleine beschrijving van het programma toevoegen, (2) uitleggen hoe een stukje code werkt als dit minder duidelijk is, en (3) om regels code die (tijdelijk) niet gebruikt mogen worden te negeren (zie de laatste regel in het voorbeeld).</para>
<para
>Commentaarregels worden <glossterm
>geaccentueerd</glossterm
> met donkergeel in de <link linkend="the-code-editor"
>codebewerker</link
>.</para>
</sect2>
</sect1>
<sect1 id="commands">
<title
>Commando's</title>
<para
>Met behulp van commando's vertel je de schildpad of &kturtle; om iets te doen. Sommige commando's vragen om een invoer, anderen geven een uitvoer. In deze sectie zullen we alle commando's die in &kturtle; kunnen worden gebruikt aan je uitleggen. Onthoud dat alle ingebouwde commando's die we hier bespreken <glossterm
>geaccentueerd</glossterm
> worden met donkergroen in de <link linkend="the-code-editor"
>codebewerker</link
>. Hiermee kun je ze onderscheiden van de rest.</para>
<sect2 id="moving-the-turtle">
<title
>De schildpad voortbewegen</title>
<para
>Er zijn verschillende commando's waarmee je de schildpad over het scherm kunt bewegen.</para>
<sect3 id="forward">
<title
>vooruit (vt)</title>
<variablelist>
<varlistentry
>
<term
>vooruit</term>
<listitem
><para
><screen
>vooruit X</screen>
<userinput
>vooruit</userinput
> verplaatst de schildpad vooruit met het X pixels. Als de pen omlaag staat zal de schildpad een spoor achterlaten. <userinput
>vooruit</userinput
> kun je afkorten als <userinput
>vt</userinput
>.</para
></listitem>
</varlistentry>
</variablelist>
</sect3>
<sect3 id="backward">
<title
>achteruit (at)</title>
<variablelist>
<varlistentry
>
<term
>achteruit</term>
<listitem
><para
><screen
>achteruit X</screen>
<userinput
>achteruit</userinput
> verplaatst de schildpad achteruit met X pixels. Als de pen omlaag staat zal de schildpad een spoor achterlaten. <userinput
>achteruit</userinput
> kun je afkorten als <userinput
>at</userinput
>.</para
></listitem>
</varlistentry>
</variablelist>
</sect3>
<sect3 id="turnleft">
<title
>draailinks (dl)</title>
<variablelist>
<varlistentry
>
<term
>draailinks</term>
<listitem
><para
><screen
>draailinks X</screen>
<userinput
>draailinks</userinput
> laat de schildpad X graden naar links draaien. <userinput
>draailinks</userinput
> kun je afkorten als <userinput
>dl</userinput
>.</para
></listitem>
</varlistentry>
</variablelist>
</sect3>
<sect3 id="turnright">
<title
>draairechts (dr)</title>
<variablelist>
<varlistentry
>
<term
>draairechts</term>
<listitem
><para
><screen
>draairechts X</screen>
<userinput
>draairechts</userinput
> laat de schildpad X graden naar rechts draaien. <userinput
>draairechts</userinput
> kun je afkorten als <userinput
>dr</userinput
>.</para
></listitem>
</varlistentry>
</variablelist>
</sect3>
<sect3 id="direction">
<title
>richting (rt)</title>
<variablelist>
<varlistentry
>
<term
>richting</term>
<listitem
><para
><screen
>richting X</screen>
<userinput
>richting</userinput
> zet de richting van de schildpad op X graden, geteld vanaf 0. Dus niet vanuit de vorige positie van de schildpad. <userinput
>richting</userinput
> kun je afkorten als <userinput
>rt</userinput
>.</para
></listitem>
</varlistentry>
</variablelist>
</sect3>
<sect3 id="center">
<title
>thuis</title>
<variablelist>
<varlistentry
>
<term
>thuis</term>
<listitem
><para
><screen
>thuis</screen>
<userinput
>thuis</userinput
> zet de schildpad in het midden van het canvas.</para
></listitem>
</varlistentry>
</variablelist>
</sect3>
<sect3 id="go">
<title
>ganaar</title>
<variablelist>
<varlistentry
>
<term
>ganaar</term>
<listitem
><para
><screen
>ganaar X,Y</screen>
<userinput
>ganaar</userinput
> laat de schildpad naar een bepaalde plek op het canvas gaan. De plek ligt X <glossterm linkend="pixels"
>pixels</glossterm
> vanaf de linkerkant en Y <glossterm linkend="pixels"
>pixels</glossterm
> vanaf de bovenkant van het canvas. Opmerking: het commando <userinput
>ganaar</userinput
> laat de schildpad geen lijn tekenen.</para
></listitem>
</varlistentry>
</variablelist>
</sect3>
<sect3 id="gox">
<title
>ganaarx</title>
<variablelist>
<varlistentry
>
<term
>ganaarx</term>
<listitem
><para
><screen
>ganaarx X</screen>
<userinput
>ganaarx</userinput
> laat de schildpad naar een positie gaan die X <glossterm linkend="pixels"
>pixels</glossterm
> vanaf de linkerkant van het canvas ligt. De hoogte blijft hetzelfde. <userinput
>ganaarx</userinput
> kun je afkorten als <userinput
>gx</userinput
>.</para
></listitem>
</varlistentry>
</variablelist>
</sect3>
<sect3 id="goy">
<title
>ganaary</title>
<variablelist>
<varlistentry
>
<term
>ganaary</term>
<listitem
><para
><screen
>ganaary Y</screen>
<userinput
>ganaary</userinput
> laat de schildpad naar een positie gaan die Y <glossterm linkend="pixels"
>pixels</glossterm
> vanaf de bovenkant van het canvas ligt. De afstand vanaf de linkerkant van het canvas blijft hetzelfde. <userinput
>ganaary</userinput
> kun je afkorten als <userinput
>gy</userinput
>.</para
></listitem>
</varlistentry>
</variablelist>
</sect3>
</sect2>
<sect2 id="pen">
<title
>De schildpad heeft een pen</title>
<para
>De schildpad heeft een pen die een lijn tekent als de schildpad beweegt. Er zijn een aantal commando's die de pen bedienen. In deze sectie leggen we deze commando's uit.</para>
<sect3 id="penup">
<title
>penop (po)</title>
<variablelist>
<varlistentry
>
<term
>penop</term>
<listitem
><para
><screen
>penop</screen>
<userinput
>penop</userinput
> tilt de pen van het canvas. Als de pen <quote
>omhoog</quote
> is, dan wordt er geen lijn getekend als de schildpad loopt. Kijk ook bij <userinput
>penneer</userinput
>. <userinput
>penop</userinput
> kun je afkorten als <userinput
>po</userinput
>.</para
></listitem>
</varlistentry>
</variablelist>
</sect3>
<sect3 id="pendown">
<title
>penneer (pn)</title>
<variablelist>
<varlistentry
>
<term
>penneer</term>
<listitem
><para
><screen
>penneer</screen>
<userinput
>penneer</userinput
> zet de pen op het canvas. Als de pen op het canvas <quote
>drukt</quote
>, dan wordt er een lijn getekend als de schildpad loopt. Zie ook <userinput
>penop</userinput
>. <userinput
>penneer</userinput
> kun je afkorten als <userinput
>pn</userinput
>.</para
></listitem>
</varlistentry>
</variablelist>
</sect3>
<sect3 id="setpenwidth">
<title
>pendikte (pd)</title>
<variablelist>
<varlistentry
>
<term
>pendikte</term>
<listitem
><para
><screen
>pendikte X</screen>
<userinput
>pendikte</userinput
> zet de dikte van de pen (de breedte van de lijn) op X <glossterm linkend="pixels"
>pixels</glossterm
>. <userinput
>pendikte</userinput
> kun je afkorten als <userinput
>pd</userinput
>.</para
></listitem>
</varlistentry>
</variablelist>
</sect3>
<sect3 id="setfgcolor">
<title
>penkleur (pk)</title>
<variablelist>
<varlistentry
>
<term
>penkleur</term>
<listitem
><para
><screen
>penkleur R,G,B</screen>
<userinput
>penkleur</userinput
> bepaalt de kleur van de pen. <userinput
>penkleur</userinput
> vraagt om een <glossterm linkend="rgb"
>RGB-combinatie</glossterm
> als invoer. <userinput
>penkleur</userinput
> kun je afkorten als <userinput
>pk</userinput
>.</para
></listitem>
</varlistentry>
</variablelist>
</sect3>
</sect2>
<sect2 id="canvas">
<title
>Commando's om het canvas te bedienen</title>
<para
>Er zijn verschillende commando's waarmee je het canvas kunt veranderen.</para>
<sect3 id="resizecanvas">
<title
>canvasmaat (cm)</title>
<variablelist>
<varlistentry>
<term
>canvasmaat</term>
<listitem
><para
><screen
>canvasmaat X,Y</screen>
Met <userinput
>canvasmaat</userinput
> kun je de grootte van het canvas veranderen. Het commando vraagt om X en Y als invoer. X is de nieuwe breedte in <glossterm linkend="pixels"
>pixels</glossterm
> en Y is de nieuwe hoogte van het canvas in <glossterm linkend="pixels"
>pixels</glossterm
>. <userinput
>canvasmaat</userinput
> kun je afkorten als <userinput
>cm</userinput
>.</para
></listitem>
</varlistentry>
</variablelist>
</sect3>
<sect3 id="setbgcolor">
<title
>canvaskleur (ck)</title>
<variablelist>
<varlistentry
>
<term
>canvaskleur</term>
<listitem
><para
><screen
>canvaskleur R,G,B</screen>
Met <userinput
>canvaskleur</userinput
> kun je de kleur van het canvas veranderen. <userinput
>canvaskleur</userinput
> vraagt om een <glossterm linkend="rgb"
>RGB-combinatie</glossterm
> als invoer. <userinput
>canvaskleur</userinput
> kun je afkorten als <userinput
>ck</userinput
>.</para
></listitem>
</varlistentry>
</variablelist>
</sect3>
<sect3 id="wrapon">
<title
>wikkelaan</title>
<variablelist>
<varlistentry
>
<term
>wikkelaan</term>
<listitem
><para
><screen
>wikkelaan</screen>
Met het commando <userinput
>wikkelaan</userinput
> kun je het <glossterm linkend="wrapping"
>wikkelen</glossterm
> van het canvas <quote
>aanzetten</quote
>. Kijk in het woordenboek van dit handboek wat <glossterm linkend="wrapping"
>wikkelen</glossterm
> is.</para
></listitem>
</varlistentry>
</variablelist>
</sect3>
<sect3 id="wrapoff">
<title
>wikkeluit</title>
<variablelist>
<varlistentry
>
<term
>wikkeluit</term>
<listitem
><para
><screen
>wikkeluit</screen>
Met het commando <userinput
>wikkeluit</userinput
> kun je het <glossterm linkend="wrapping"
>wikkelen</glossterm
> van het canvas <quote
>uitzetten</quote
>. Dit betekent dat de schildpad het canvas kan verlaten en kan <quote
>verdwalen</quote
>. Kijk in het woordenboek van dit handboek voor meer informatie over <glossterm linkend="wrapping"
>wikkelen</glossterm
>.</para
></listitem>
</varlistentry>
</variablelist>
</sect3>
</sect2>
<sect2 id="clean">
<title
>Commando's om schoon te maken</title>
<para
>Er zijn twee commando's waarmee je het canvas kunt schoonmaken nadat je er een bende van hebt gemaakt.</para>
<sect3 id="clear">
<title
>schoon (cs)</title>
<variablelist>
<varlistentry
>
<term
>schoon</term>
<listitem
><para
><screen
>schoon</screen>
Met <userinput
>schoon</userinput
> kun je alle tekeningen op het canvas wissen. De rest blijft staan, de positie en hoek van de schildpad, de kleur van het canvas, de zichtbaarheid van de schildpad en de grootte van het canvas blijven zoals ze waren. <userinput
>schoon</userinput
> kun je afkorten als <userinput
>cs</userinput
>.</para
></listitem>
</varlistentry>
</variablelist>
</sect3>
<sect3 id="reset">
<title
>alsnieuw</title>
<variablelist>
<varlistentry
>
<term
>alsnieuw</term>
<listitem
><para
><screen
>alsnieuw</screen>
<userinput
>alsnieuw</userinput
> maakt nog verder schoon dan het commando <userinput
>schoon</userinput
>. Na het commando <userinput
>alsnieuw</userinput
> is alles zoals het was toen je &kturtle; net had opgestart. De schildpad wordt in het midden van het scherm gezet, de canvaskleur is wit en de schildpad tekent een zwarte lijn op het canvas.</para
></listitem>
</varlistentry>
</variablelist>
</sect3>
</sect2>
<sect2 id="sprites">
<title
>De schildpad is een sprite</title>
<para
>Vrijwel niemand weet wat sprites zijn, dus volgt hier een korte uitleg: sprites zijn kleine plaatjes die je kunt rondbewegen op het scherm. Dus de schildpad is een sprite. Voor meer info, kijk in het woordenboek van dit handboek bij <glossterm
>linkend="sprites"
>sprites</glossterm
>. </para>
<para
>Hierna volgt een volledig overzicht van alle commando's die je kunt gebruiken bij sprites.</para>
<para
>(De huidige versie van &kturtle; heeft alleen een schildpad als sprite. Andere sprites kun je dus niet gebruiken. In toekomstige versies van het programma zul je de schildpad kunnen veranderen in je eigen ontwerp.)</para>
<sect3 id="spriteshow">
<title
>toon</title>
<variablelist>
<varlistentry
>
<term
>toon (ts)</term>
<listitem
><para
><screen
>toon</screen>
<userinput
>toon</userinput
> maakt de schilpad weer zichtbaar nadat hij is verborgen. <userinput
>toon</userinput
> kun je afkorten als <userinput
>ts</userinput
>.</para
></listitem>
</varlistentry>
</variablelist>
</sect3>
<sect3 id="spritehide">
<title
>verberg (vs)</title>
<variablelist>
<varlistentry
>
<term
>verberg</term>
<listitem
><para
><screen
>verberg</screen>
<userinput
>verberg</userinput
> verstopt de schildpad. Dit is handig als je de schildpad niet in je tekening wilt zien. <userinput
>verberg</userinput
> kun je afkorten als <userinput
>vs</userinput
>.</para
></listitem>
</varlistentry>
</variablelist>
</sect3>
</sect2>
<sect2 id="writing">
<title
>Kan de schildpad tekst schrijven?</title>
<para
>Het antwoord is: <quote
>ja</quote
>. De schildpad kan schrijven. Hij schrijft zo'n beetje alles waartoe je hem opdraagt.</para>
<sect3 id="print">
<title
>schrijf</title>
<variablelist>
<varlistentry
>
<term
>schrijf</term>
<listitem
><para
><screen
>schrijf X</screen>
Het commando <userinput
>schrijf</userinput
> kun je gebruiken om de schildpad iets op het canvas te laten schrijven. <userinput
>schrijf</userinput
> vraagt om letters en/of cijfers als invoer. Je kunt verschillende getallen en stukken tekst <userinput
>laten schrijven</userinput
> met behulp van het <quote
>+</quote
>-symbool. Hier is een klein voorbeeld: <screen
>jaar = 2003
maker = "Cies"
schrijf maker + " begon het KTurtle-project in " + jaar + " en vindt het nog steeds leuk om er aan te werken!"
</screen>
</para
></listitem>
</varlistentry>
</variablelist>
</sect3>
<sect3 id="fontsize">
<title
>lettermaat</title>
<variablelist>
<varlistentry
>
<term
>lettermaat</term>
<listitem
><para
><screen
>lettermaat X</screen>
<userinput
>lettermaat</userinput
> bepaalt de grootte van de letters die wordt gebruikt door het commando <userinput
>schrijf</userinput
>. <userinput
>lettermaat</userinput
> vraagt om een getal als invoer. De grootte geef je op in <glossterm linkend="pixels"
>pixels</glossterm
>.</para
></listitem>
</varlistentry>
</variablelist>
</sect3>
</sect2>
<sect2 id="random">
<title
>Een commando dat een dobbelsteen voor je gooit</title>
<para
>Er is een commando dat dobbelstenen voor je gooit. Dit commando heet <userinput
>gok</userinput
>, en is erg handig als je wat onverwachte resultaten wilt hebben.</para>
<variablelist>
<varlistentry
>
<term
>gok</term>
<listitem
><para
><screen
>gok X,Y</screen>
<userinput
>gok</userinput
> is een commando dat invoer vraagt en uitvoer geeft. Als invoer vraagt het commando twee cijfers, het eerste cijfer (X) zet de minimum uitvoer, en het tweede (Y) zet de maximum. De uitvoer is een willekeurig gekozen getal dat gelijk is aan of groter dan het minimum en gelijk aan of kleiner dan het maximum. Hier is een klein voorbeeld:<screen>
herhaal 500 [
x = gok 1,20
vooruit x
draailinks 10 - x
]
</screen
> Met het commando <userinput
>gok</userinput
> kun je wat chaos aan je programma toevoegen.</para
></listitem>
</varlistentry>
</variablelist>
</sect2>
<sect2 id="dialogs">
<title
>Invoer en terugkoppeling met behulp van dialogen</title>
<para
>Een dialoog is een klein opduikvenster waarmee enige terugkoppeling wordt verkregen of waarin om enige invoer wordt gevraagd aan de gebruiker. &kturtle; kent twee opdrachten voor een dialoog, namelijk <userinput
>bericht</userinput
> en <userinput
>invoervenster</userinput
></para>
<sect3 id="message">
<title
>bericht</title>
<variablelist>
<varlistentry
>
<term
>bericht</term>
<listitem
><para
><screen
>bericht X</screen>
De opdracht <userinput
>bericht</userinput
> heeft als invoer een <link linkend="string"
>tekenreeks</link
> (string). Er wordt een opduikvenster getoond waarin een dialoog met de tekst van deze <link linkend="string"
>tekenreeks</link
>. <screen
>jaar = 2003
maker = "Cies"
schrijf maker + " begon het KTurtle-project in " + jaar + " en vindt het nog steeds leuk om er aan te werken!"
</screen>
</para
></listitem>
</varlistentry>
</variablelist>
</sect3>
<sect3 id="inputwindow">
<title
>invoervenster</title>
<variablelist>
<varlistentry
>
<term
>invoervenster</term>
<listitem
><para
><screen
>invoervenster X</screen>
Het <userinput
>invoervenster</userinput
> heeft als invoer een <link linkend="string"
>tekenreeks</link
> (string). Er wordt een opduikvenster getoond waarin een dialoog met de tekst van deze <link linkend="string"
>tekenreeks</link
>, net als bij de opdracht <link linkend="message"
>bericht</link
>. Maar in deze dialoog komt ook een invoerveld voor. In dit invoerveld kan een gebruiker een <link linkend="number"
>getal</link
> of een <link linkend="string"
>tekenreeks</link
> invoeren die in een <link linkend="containers"
>variabele</link
> kan worden opgeslagen. Bijvoorbeeld <screen>
in = invoervenster "Hoe oud ben je?"
uit = 2003 - in
print "Ergens in 2003 was je " + uit + " jaar oud."
</screen
>. Als de gebruiker de invoerdialoog annuleert of er niets in invult wordt de <link linkend="containers"
>variabele </link
> leeg gemaakt.</para
></listitem>
</varlistentry>
</variablelist>
</sect3>
</sect2>
</sect1>
<sect1 id="containers">
<title
>Plaatshouders</title>
<para
>Plaatshouders zijn letters of woorden die door de programmeur kunnen worden gebruikt om daarin een getal of tekst in op te slaan. Plaatshouders die een getal bevatten heten <link linkend="variables"
>variabelen</link
>, plaatshouders die tekst bevatten heten <link linkend="strings"
>tekenreeksen</link
>.</para>
<para
>Plaatshouders die niet worden gebruikt zijn leeg. Een voorbeeld: <screen>
schrijf N
</screen>
Dit drukt niets af op het canvas. Als we proberen met lege plaatshouders te <link linkend="math"
>rekenen</link
>, dan krijgen we foutmeldingen. </para>
<sect2 id="variables">
<title
>Variabelen: getalplaatshouders</title>
<para
>Laten we beginnen met een voorbeeld: <screen>
x = 3
schrijf x
</screen
> Op de eerste regel wordt de letter <userinput
>x</userinput
> omgevormd tot een variabele (getalplaatshouder). Zoals je ziet is de waarde van de variabele <userinput
>x</userinput
> op 3 gezet. Op de tweede regel wordt de waarde geschreven.</para>
<para
>Merk op dat als we een <quote
>x</quote
> wouden schrijven, we het volgende hadden getypt: <screen
>schrijf "x"
</screen>
</para>
<para
>Dat was gemakkelijk. Nu een wat moeilijker voorbeeld:<screen>
A = 2004
B = 25
C = A + B
# het volgende commando schrijft "2029"
schrijf C
achteruit 30
# het volgende commando schrijft "2004 plus 25"
schrijf "" + A + " plus " + B
achteruit 30
# het volgende commando schrijft "1979"
schrijf A - B
</screen
> Op de eerste twee regels zijn de variabelen <userinput
>A</userinput
> en <userinput
>B</userinput
> gezet op 2004 en 25. Op de derde regel is de variabele <userinput
>C</userinput
> gezet op <userinput
>A + B</userinput
>, wat 2029 is. De rest van het voorbeeld bestaat uit 3 <userinput
>schrijf</userinput
>-commando's met <userinput
>achteruit 30</userinput
> ertussen. De <userinput
>achteruit </userinput
> staat er om er voor te zorgen dat elke uitvoer op een nieuwe regel staat. In dit voorbeeld zie je dat variabelen kunnen worden gebruikt in <link linkend="math"
>wiskundige berekeningen</link
>.</para>
</sect2>
<sect2 id="strings">
<title
>Plaatshouders die tekst bevatten (tekenreeksen)</title>
<para
>In programmacode begint en eindigt gewone tekst vaak met aanhalingstekens. Zoals we eerder al hebben gezien: <screen>
schrijf "Hallo programmeur!"
</screen
> De gewone tekst staat tussen aanhalingstekens. Dit soort stukjes tekst noemen we <link linkend="strings"
>tekenreeksen</link
>.</para>
<para
>Tekenreeksen kunnen ook worden opgeslagen in <link linkend="containers"
>variabelen</link
>, net zoals <link linkend="number"
>getallen</link
>. Tekenreeksen lijken veel op variabelen. Het grootste verschil met getallen is dat je tekenreeksen niet kunt gebruiken in <link linkend="math"
>wiskundige berekeningen</link
> en <link linkend="questions"
>vragen</link
>. Een voorbeeld van te gebruiken tekenreeksen: <screen>
x = " Hallo "
naam = invoervenster "Voer je naam in..."
schrijf x + naam + ", hoe gaat het met je?"
</screen
> Op de eerste regel wordt <userinput
>x</userinput
> ingesteld op <quote
>Hallo </quote
>. Op de tweede regel wordt de tekenreeks <userinput
>naam</userinput
> ingesteld op de uitvoer van de opdracht <userinput
>invoervenster</userinput
>. Op de derde regel schrijft het programma een samenstelling van drie tekenreeksen op het canvas.</para>
<para
>Dit programma vraagt je om je naam in te voeren. Als je bijvoorbeeld de naam <quote
>Paul</quote
> invoert, dan schrijft het programma <quote
>Hallo Paul, hoe gaat het met je?</quote
>. Houd er rekening mee dat de plus (+) het enige rekenkundige teken is dat je kunt gebruiken met tekenreeksen.</para>
</sect2>
</sect1>
<sect1 id="math">
<title
>Kan de schildpad wiskunde?</title>
<para
>Ja, &kturtle; kan jouw wiskunde voor je doen. Je kunt optellen (+), aftrekken (-), vermenigvuldigen (*) en delen (/). Dit is een voorbeeld die ze allemaal gebruikt: <screen>
a = 20 - 5
b = 15 * 2
c = 30 / 30
d = 1 + 1
schrijf "a: "+a+", b: "+b+", c: "+c+", d: "+d
</screen
> Weet je welke waarde a, b, c, en d hebben? Merk in het voorbeeld het gebruik op van het <link linkend="assignment"
>toewijs</link
>-symbool <screen
>=</screen
>.</para>
<para
>Als je een eenvoudige rekensom wilt uitvoeren, dan kun je zoiets als dit doen: <screen
>schrijf 2004-12
</screen
></para>
<para
>Nu een voorbeeld met haakjes: <screen>
schrijf ( ( 20 - 5 ) ) * 2 / 30 ) + 1
</screen
> De rekensom tussen de haakjes zal als eerste worden uitgerekend. In dit voorbeeld wordt 20 gedeeld door 5, dan wordt de uitkomst vermenigvuldigd met 2, en gedeeld door 30. Tot slot wordt er 1 bij opgeteld (antwoord is 2).</para>
</sect1>
<sect1 id="questions">
<title
>Stel vragen en krijg antwoorden...</title>
<para
><link linkend="if"
><userinput
>als</userinput
></link
> en <link linkend="while"
><userinput
>terwijl</userinput
></link
> zijn <link linkend="controlling-execution"
>uitvoercontroles</link
> die we in de volgende sectie zullen bespreken. In deze sectie gaan we het commando <link linkend="if"
><userinput
>als</userinput
></link
> gebruiken om vragen uit te leggen.</para>
<sect2 id="q">
<title
>Vragen</title>
<para
>Een voorbeeld van een vraag: <screen>
x = 6
als x > 5 [
schrijf "hallo"
]
</screen
> In dit voorbeeld is de vraag het gedeelte <userinput
>x > 5</userinput
>. Als het antwoord op deze vraag 'waar' is, dan wordt de code tussen de blokhaakjes uitgevoerd. Vragen zijn een belangrijk onderdeel van programmeren en vaak gebruikt in combinatie met <link linkend="controlling-execution"
>uitvoercontroles</link
>, zoals <link linkend="if"
><userinput
>als</userinput
></link
>. Alle getallen en <link linkend="variables"
>variabelen</link
> (getalplaatshouders) kunnen met elkaar worden vergeleken met behulp van vragen.</para>
<para
>Hier zijn alle mogelijke vragen: <table>
<title
>Type vragen</title>
<tgroup cols="3">
<tbody>
<row>
<entry
><userinput
>a == b</userinput
></entry>
<entry
>gelijk aan</entry>
<entry
>het antwoord is <quote
>waar</quote
> als <userinput
>a</userinput
> gelijk is aan <userinput
>b</userinput
></entry>
</row>
<row>
<entry
><userinput
>a != b</userinput
></entry>
<entry
>niet gelijk aan</entry>
<entry
>het antwoord is <quote
>waar</quote
> als <userinput
>a</userinput
> niet gelijk is aan <userinput
>b</userinput
></entry>
</row>
<row>
<entry
><userinput
>a > b</userinput
></entry>
<entry
>groter dan</entry>
<entry
>het antwoord is <quote
>waar</quote
> als <userinput
>a</userinput
> groter is dan <userinput
>b</userinput
></entry>
</row>
<row>
<entry
><userinput
>a < b</userinput
></entry>
<entry
>kleiner dan</entry>
<entry
>het antwoord is <quote
>waar</quote
> als <userinput
>a</userinput
> kleiner is dan <userinput
>b</userinput
></entry>
</row>
<row>
<entry
><userinput
>a >= b</userinput
></entry>
<entry
>groter dan of gelijk aan</entry>
<entry
>het antwoord is <quote
>waar</quote
> als <userinput
>a</userinput
> groter is dan <userinput
>b</userinput
></entry>
</row>
<row>
<entry
><userinput
>a <= b</userinput
></entry>
<entry
>kleiner dan of gelijk aan</entry>
<entry
>het antwoord is <quote
>waar</quote
> als <userinput
>a</userinput
> kleiner is dan of gelijk aan <userinput
>b</userinput
></entry>
</row>
</tbody>
</tgroup>
</table>
</para>
<para
>Vragen worden <glossterm
>geaccentueerd</glossterm
> met lichtblauw in de <link linkend="the-code-editor"
>codebewerker</link
>.</para
>
</sect2>
<sect2 id="question-glue">
<title
>Vragenlijm</title>
<para
>Vragen kunnen aan elkaar geplakt worden met <quote
>vragenlijm</quote
>. Zo kun je van een paar kleine vragen een grote vraag maken. <screen>
a = 1
b = 5
als (a < 5) en (b == 5) [
schrijf "hallo"
]
</screen
> In dit voorbeeld is het lijmwoord <userinput
>en</userinput
> gebruikt om twee vragen (<userinput
>a < 5</userinput
>, <userinput
> b == 5</userinput
>) aan elkaar te plakken. Als een zijde van de <userinput
>en</userinput
> <quote
>onwaar</quote
> als antwoord heeft, dan zal de hele vraag <quote
>onwaar</quote
> zijn, omdat het lijmwoord <userinput
>en</userinput
> vereist dat beide zijden <quote
>waar</quote
> moeten zijn om het antwoord <quote
>waar</quote
> te geven. Vergeet niet om de haakjes om de vragen heen te zetten!</para>
<para
>Hier is een schematisch overzicht, een meer gedetailleerde uitleg volgt hieronder: <table>
<title
>Lijmwoorden voor vragen</title>
<tgroup cols="2">
<tbody>
<row>
<entry
><userinput
>en</userinput
></entry>
<entry
>beide zijden moeten 'waar' zijn om het antwoord 'waar' te kunnen geven</entry>
</row>
<row>
<entry
><userinput
>of</userinput
></entry>
<entry
>als een van beide zijden 'waar' is, dan is het antwoord 'waar'</entry>
</row>
<row>
<entry
><userinput
>niet</userinput
></entry>
<entry
>Een speciaal geval: werkt alleen op één vraag! Verandert 'waar' in 'onwaar' en 'onwaar' in 'waar'.</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
<para
>Lijmwoorden worden <glossterm
>geaccentueerd</glossterm
> met paars in de <link linkend="the-code-editor"
>codebewerker</link
>.</para>
<sect3 id="and">
<title
>en</title>
<para
>Als twee vragen aan elkaar zijn gelijmd met <userinput
>en</userinput
>, dan moeten beide kanten van de <userinput
>en</userinput
> 'waar' zijn om 'waar' als resultaat te krijgen. Een voorbeeld: <screen>
a = 1
b = 5
als (( a < 10) en (b == 5)) en (a < b) [
schrijf "hallo"
]
</screen
> In dit voorbeeld zie je een gelijmde vraag vastgelijmd aan een andere vraag.</para>
</sect3>
<sect3 id="or">
<title
>of</title>
<para
>Als één van de vragen die aan elkaar zijn geplakt met <userinput
>of</userinput
> 'waar' is, dan is het resultaat 'waar'. Een voorbeeld: <screen>
a = 1 b = 5
als ((a < 10) of (b == 10)) of (a == 0) [
schrijf "hallo"
]
</screen
> In dit voorbeeld zie je een gelijmde vraag vastgelijmd aan een andere vraag.</para>
</sect3>
<sect3 id="not">
<title
>niet</title>
<para
><userinput
>niet</userinput
> is een speciaal lijmwoord omdat het alleen met één vraag tegelijk werkt. <userinput
>niet</userinput
> verandert 'waar' in 'onwaar' en 'onwaar' in 'waar'. Voorbeeld: <screen>
a = 1
b = 5
als niet ((a < 10) en (b == 5)) [
schrijf "hallo"
]
anders
[
schrijf "niet hallo ;-)"
]
</screen
> In dit voorbeeld is de gelijmde vraag 'waar', maar de <userinput
>niet</userinput
> verandert dit in 'onwaar<userinput
>. Dus uiteindelijk wordt </userinput
>"niet hallo ;-)" afgedrukt op het <link linkend="the-canvas"
>canvas</link
>.</para>
</sect3>
</sect2>
</sect1>
<sect1 id="controlling-execution">
<title
>Uitvoering besturen</title>
<para
>De uitvoercontroles maken het mogelijk, —zoals de naam al zegt— om controle uit te oefenen op de uitvoering van de commando's.</para>
<para
>Uitvoercontroles worden <glossterm
>geaccentueerd</glossterm
> met donkergroen in een vet lettertype. De vierkante haakjes die meestal samen met uitvoercontroles worden gebruikt zijn <glossterm
>geaccentueerd</glossterm
> met lichtgroen.</para>
<sect2 id="wait">
<title
>Laat de schildpad wachten</title>
<para
>Als je wat hebt geprogrammeerd in &kturtle;, dan heb je vast gemerkt dat de schildpad erg snel is bij het tekenen. Dit commando maakt de schildpad een beetje rustiger.</para>
<variablelist>
<varlistentry>
<term
>wacht</term>
<listitem
><para
><screen
>wacht X</screen>
<userinput
>wacht</userinput
> laat de schildpad X seconden wachten. <screen>
herhaal 36[
vooruit 5
draairechts 10
WACHT 0.5
]
</screen
> Deze code tekent een cirkel, maar de schildpad zal na elke stap een halve seconde wachten. Hier door lijkt het net of de schildpad kruipt.</para
></listitem>
</varlistentry>
</variablelist>
</sect2>
<sect2 id="if">
<title
>"als" uitvoeren</title>
<variablelist>
<varlistentry>
<term
>als</term>
<listitem
><para
><screen
>als <link linkend="questions"
>vraag</link
> [ ... ]</screen>
De code die tussen de blokhaakjes staat wordt alleen uitgevoerd wanneer <userinput
>als</userinput
> het antwoord op de <link linkend="questions"
>vraag</link
> <quote
>waar</quote
> is. Lees voor meer informatie over <link linkend="questions"
>vragen</link
> het <link linkend="questions"
>vragengedeelte</link
>. <screen>
x = 6
als x > 5 [
schrijf "x is groter dan vijf!"
]
</screen
> Op de eerste regel is <userinput
>x</userinput
> gezet op 6. Op de tweede regel wordt de <link linkend="questions"
>vraag</link
> <userinput
>x > 5</userinput
> gesteld. Omdat het antwoord op deze vraag <quote
>waar</quote
> is zal de uitvoercontrole <userinput
>als</userinput
> de code tussen de haakjes laten uitvoeren.</para
></listitem>
</varlistentry>
</variablelist>
</sect2>
<sect2 id="while">
<title
>De lus "terwijl"</title>
<variablelist>
<varlistentry>
<term
>terwijl</term>
<listitem
><para
><screen
>terwijl <link linkend="questions"
>vraag</link
> [ ... ]</screen>
De uitvoerbesturing <userinput
>terwijl</userinput
> lijkt veel op <link linkend="if"
>als<userinput
></userinput
></link
>. Het verschil is dat <userinput
>terwijl</userinput
> de code tussen de blokhaakjes blijft herhalen totdat het antwoord op de <link linkend="questions"
>vraag</link
> <quote
>onwaar</quote
> is. <screen>
x = 1
terwijl x < 5 [
vooruit 10
wacht 1
x = x + 1
]
</screen
> Op de eerste regel krijgt <userinput
>x</userinput
> de waarde 1. Op de tweede regel wordt de <link linkend="questions"
>vraag</link
> <userinput
>x < 5</userinput
> gesteld. Omdat het antwoord op deze vraag <quote
>waar</quote
> is start de uitvoerbesturing <userinput
>terwijl</userinput
> het uitvoeren van de code tussen de blokhaakjes totdat het antwoord op de <link linkend="questions"
>vraag</link
> <quote
>onwaar</quote
> is. In dit voorbeeld wordt de code tussen de blokhaakjes 4 keer uitgevoerd, omdat telkens als de vijfde regel wordt uitgevoerd de waarde <userinput
>x</userinput
> met 1 wordt vermeerderd.</para
></listitem>
</varlistentry>
</variablelist>
</sect2>
<sect2 id="else">
<title
>Als niet, of in andere woorden: "anders"</title>
<variablelist>
<varlistentry>
<term
>anders</term>
<listitem
><para
><screen
>als vraag [ ... ] anders [ ... ]</screen>
<userinput
>anders</userinput
> kan worden gebruikt als aanvulling op de uitvoerbesturing <link linkend="if"
><userinput
>als</userinput
></link
>. De code tussen de haakjes na <userinput
>anders</userinput
> wordt alleen uitgevoerd als het antwoord op de gestelde <link linkend="questions"
>vraag</link
> 'onwaar' is. <screen>
x = 4
als x > 5 [
schrijf "x is groter dan vijf!"
]
anders
[
schrijf "x is kleiner dan zes!"
[
</screen
> Met de <link linkend="questions"
>vraag</link
> wordt gevraagd of <userinput
>x</userinput
> groter is dan 5. Omdat <userinput
>x</userinput
> op op de eerste regel de waarde 4 krijgt is het antwoord <quote
>onwaar</quote
>. Dit betekent dat de code tussen de blokhaakjes achter <userinput
>anders</userinput
> zal worden uitgevoerd.</para
></listitem>
</varlistentry>
</variablelist>
</sect2>
<sect2 id="for">
<title
>De lus "voor", een tellende lus</title>
<variablelist>
<varlistentry>
<term
>voor</term>
<listitem
><para
><screen
>voor <userinput
>startpunt</userinput
> tot <userinput
>eindpunt</userinput
> [ ... ]</screen>
De lus <userinput
>voor</userinput
> is een <quote
>tellende lus</quote
>, dus die houdt de telling voor je bij. <screen>
voor x = 1 tot 10 [
schrijf x * 7
vooruit 15
]
</screen
> Telkens als de code tussen de blokhaakjes wordt uitgevoerd wordt de waarde <userinput
>x</userinput
> met 1 vermeerderd, totdat <userinput
>x</userinput
> de waarde 10 heeft bereikt. De code tussen de blokhaakjes schrijft de <userinput
>x</userinput
> vermenigvuldigd met 7. Nadat deze commando's zijn uitgevoerd zie je de tafel van 7 op het canvas staan.</para
></listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>
<sect1 id="learn">
<title
>Maak je eigen commando's met <quote
>leer</quote
></title>
<para
><userinput
>leer</userinput
> is een speciaal commando, omdat die kan worden gebruikt om je eigen commando's te maken. Het commando dat je maakt kan om <glossterm linkend="input-output"
>invoer</glossterm
> vragen en <glossterm linkend="input-output"
>uitvoer</glossterm
> geven. Laten we eens kijken hoe je een nieuw commando kunt maken: <screen>
leer cirkel (x) [
herhaal 36 [
vooruit x
draailinks 10
]
]
</screen
> Het nieuwe commando heet <userinput
>cirkel</userinput
>. <userinput
>cirkel</userinput
> vraagt om een <glossterm linkend="input-output"
>invoer</glossterm
>, een getal, om de grootte van de cirkel te bepalen. <userinput
>cirkel</userinput
> geeft geen <glossterm linkend="input-output"
>uitvoer</glossterm
>. Het commando <userinput
>cirkel</userinput
> kan nu worden gebruikt als een normaal commando in de rest van de programmacode. Hier een voorbeeld: <screen
>leer cirkel (x) [
herhaal 36 [
vooruit x
draailinks 10
]
]
ganaar 30,30
cirkel(20)
ganaar 40,40
cirkel(50)
</screen>
</para>
<para
>In het volgende voorbeeld maken we een commando met een uitvoerwaarde. <screen>
leer vermenigvuldigMetZichzelf n [
r = n * 1
r = n * n
geefdoor r
]
i = invoervenster "Voer een getal in en klik op OK"
schrijf i + " vermenigvuldigd met zichzelf is " + vermenigvuldigMetZichzelf (i)
</screen
> In dit voorbeeld wordt een nieuw commando met de naam <userinput
>vermenigvuldigMetZichzelf</userinput
> gemaakt. De invoer van dit commando wordt vermenigvuldigd met zichzelf en daarna doorgegeven met behulp van het commando <anchor id="return"/><userinput
>geefdoor</userinput
>. Het commando <userinput
>geefdoor</userinput
> is een manier om de waarde van een functie die je hebt gemaakt als resultaat te geven. </para>
</sect1>
</chapter>
|