home *** CD-ROM | disk | FTP | other *** search
/ Pokey's Magazine 7 / Pokeys_Magazine_07_1991_04___nl_Side_B.atr / les.txt < prev    next >
Text File  |  2023-02-26  |  6KB  |  1 lines

  1. Hallo beste cursisten,¢¢¢In de laatste aflevering hebben we gekeken hoe we onze computer laten tekenen. Ik heb inderdaad tekenprogramma's van jullie ontvangen. Het programma dat ik het beste vond, is deze maand geplaatst. Eerlijkheidshalve moet ik er wel bij vermelden, dat ik de maker tijdens een helplijn-vraag een    stukje op weg heb geholpen met een instruktie die nog niet aan de orde geweest is. Ik vind vooral het keuze menu en het kleuren menu zeer creatief. Kijk in de listing van het programma en kijk wat je kunt verbeteren. Zeker na deze les kan het programma waarschijnlijk 40% korter gemaakt worden. We gaan in deze cursus namelijk structuur brengen in ons programma. Ook logica gaan we bestuderen. Er komt dus wel een stukje rekenen kijken bij deze les.¢¢We gaan de volgende instruktie's behandelen:¢¢1>>  DO        LOOP¢2>>  REPEAT    UNTIL¢3>>  EXEC <LABEL>¢4>>  PROC <LABEL>¢5>>  ENDPROC¢6>>  EXIT¢7>>  GO #<LABEL>¢8>>  ON <...> EXEC <LABEL>¢9>>  Logica¢¢¢Het lijken erg veel instruktie's en dat zijn het ook. Toch ga ik proberen uit te leggen in een les wat je met deze instructie's kunt doen.¢¢DO - LOOP¢---------¢¢Een zgn. eeuwige lus. Als het programma LOOP tegenkomt, springt hij weer naar DO.¢¢10 DO¢20  A=A+1¢30  PRINT A¢40 LOOP¢50 PRINT "HIER KOM IK NOOIT!!"¢¢Het programma zal NOOIT op regel 50 komen want regel 10 tot 40 is een DO-LOOP lus. Er is slechts een manier om uit de lus te komen. Deze komt later aan de orde.¢¢¢REPEAT - UNTIL¢--------------¢¢REPEAT - UNTIL is een voorwaardelijke lus. Het is dus mogelijk om een voorwaarde te stellen.¢¢10 A=0¢20 REPEAT¢30  A=A+1¢40 UNTIL A=30¢¢Dit programma blijft van UNTIL naar REPEAT springen tot de stelling achter UNTIL waar is. Je kunt bijv. in een menu wachten tot de vuurknop is ingedrukt:¢¢10 REPEAT:UNTIL STRIG(0)=0¢20 REST VAN HET PROGRAMMA¢¢¢GO #LABEL¢---------¢¢In een van de eerste lessen leerden we de instruktie GOTO. Nu ga ik je vertellen om deze instruktie weer te vergeten. GOTO maakt een listing onoverzichtelijk. Het is tenslotte de bedoeling om uiteindelijk structuur in ons programma te krijgen.¢¢10 GOTO 1845¢¢Is veel onduidelijker dan¢¢10 GO #JOYSTICK¢¢Met GO #<label> kunnen we dwars door ons programma springen. Bij het gebruik van de juiste labels zorgt deze instruktie voor een overzichtelijke listing. Waar springt het programma naar toe als het deze instruktie tegenkomt?¢¢10 GO #JOYSTICK¢20 ONZIN¢30 REST VAN PROGRAMMA¢40 ....¢100 ...¢1000 #JOYSTICK¢1010 hier komt de joystick routine¢¢In regel 10 zien we duidelijk dat het programma springt naar een routine die iets met een joystick te maken heeft.¢GO #<LABEL> is een zeer goede vervanger van GOTO.¢¢¢EXEC<LABEL>, PROC<LABEL> EN ENDPROC¢-----------------------------------¢¢Met de instruktie EXEC kunnen we naar een routine springen en later weer terug komen. We spreken van een 'sub'-routine.¢¢¢5 DO¢10  EXEC JOYSTICK¢20  EXEC PRINT¢30 LOOP¢40 ONZIN¢50 PROC JOYSTICK¢60  S=STICK(0)¢70 ENDPROC¢80 ONZIN¢90 PROC PRINT¢100  PRINT S¢110 ENDPROC¢¢Regel 5 t/m 30 is een loop. Vanaf regel 10 wordt even gesprongen naar de routine 'joystick'. Als het programma ENDPROC tegenkomt, springt het weer terug naar regel 20. Vanuit regel 30 wordt gesprongen naar de routine 'print'. Daarna LOOP naar 10.¢Tussen PROC en ENDPROC mag een hele serie instruktie's staan. Een routine die dus vaker in het programma wordt gebruikt, is op deze wijze zeer eenvoudig aan te roepen.¢Een subroutine, of procedure, moet altijd beginnen met PROC <LABEL> en eindigen met ENDPROC. Ook hier zien we weer de handige inspringing in de listing.¢¢¢¢Exit¢----¢¢Met EXIT kunnen we diverse lussen en loops verlaten. Als je bv. uit een FOR-NEXT lus wilt springen gebruik dan EXIT. De computer vergeet dan de hele lus. Indien je EXIT niet zou gebruiken, zou de computer de lus niet vergeten, en op die manier langzaam maar zeker vol lopen door de variabelen, die hij moet onthouden. Ook de DO : LOOP lus is op deze wijze te onderbreken.¢¢¢Logica in onze listing¢----------------------¢¢Het komt voor dat de computer aan de hand van een waarde 'iets' moet uitvoeren.¢¢10 IF A=1 THEN GOTO 1000¢20 IF A=2 THEN GOTO 2000¢30 IF A=3 THEN GOTO 3000¢¢We zouden van deze drie regels het volgende kunnen maken:¢¢10 GOTO A*1000¢¢Dit is echter niet de juiste wijze. Indien we een routine verplaatsen door onze listing te hernummeren, raakt de computer in bovenstaand voorbeeld flink in de war. Nee, we doen het anders:¢¢10 ON A GOTO 1000,2000,3000¢¢Nog netter is het om met labels te werken:¢¢10 ON A GO# JOYSTICK,SCORE,SOUND¢¢Hier is het overduidelijk wat de machine zal doen. Als a>3 of a<1 dan zal de computer regel 10 negeren en met de volgende regel verdergaan.¢¢¢Andere toepassingen van logica:¢¢Stel, we lezen de joystick uit en willen hiermee zowel de x-as als de y-as uitlezen. Het kan op de volgende manier:¢¢10 S=STICK(0)¢20 IF S=13 THEN Y=Y+1¢30 IF S=14 THEN Y=Y-1¢40 IF S=7 THEN X=X+1¢50 IF S=11 THEN X=X-1¢¢EEN VEEL SNELLERE METHODE IS:¢¢10 S=STICK(0)¢20 X=X+(S=7)-(S=11)¢30 Y=Y+(S=13)-(S=14)¢¢Hoe werkt dit? Wat hierboven tussen haakjes staat, ziet de computer als een bewering. Indien de bewering waar is,  krijg je de waarde 1. Indien de bewering onwaar is, krijg je de waarde 0. Probeer in basic maar eens het volgende:¢¢A=1¢¢?(A=1)¢¢Er zal een 1 geprint worden, omdat A inderdaad de waarde 1 heeft. Dit soort funktie's moeten we uitbuiten zoals in de bovenstaande joystick-routine.¢Tussen de haakjes mogen meerdere beweringen staan. ¢¢bv.¢¢X=X+(Y=1 OR Y=2 OR Y=3)-(Y=4 OR Y=5)¢¢Indien y 1, 2 of 3 is, zal er 1 bij X worden opgeteld. Als y 4 of 5 is wordt er 1 van x afgetrokken. Is y geen van bovenstaande waarden, zal de waarde van x niet veranderen.¢¢Zo, dat was een klein stukje logica. De volgende keer gaan we hier verder op in. Zie voor een uitgebreid voorbeeld programma de file "VOORBLD.TUR".¢Hier komen diverse behandelde onderwerpen aan bod.¢¢¢¢Tot de volgende keer maar weer,¢¢¢John Maris.¢¢¢¢