Werken met Amos 24 """""""""""""""""" Rekenkundige operaties """""""""""""""""""""" De volgende rekenkundige operatie kan in een getalsmatige uitdrukking gebruikt worden. ^ = Macht (een macht is bijvoorbeeld 3 tot de derde dus 3x3x3) / en * = Delen en vermenigvuldigen MOD = (gemene deler) + en - = Plus en min And = Logische AND OR = Logische OR XOR = Logische XOR We hebben deze lijst gemaakt in volgorde van belangrijkheid. Deze belangrijk heid verwijst naar de volgorde die verschillende delen van een rekenkundige vraagstelling worden berekend. In berekeningen worden altijd eerst de belangrijkste bewerkingen uitgevoerd. Hier volgt een volgorde vanuit de praktijk: Print 10+2*5-8/4+5^2 Hier komt de uitkomende volgorde: 5^2 (of 5x5) =25 2x5 =10 8/4 =2 10+10 =20 20-2 =18 18+25 =43 Wil je het op een andere manier laten berekenen, dan moet je gewoon die gedeeltes van de formule met kromme haakjes omsluiten: Print (10)*(5-8/4+5)^2 Dit geeft het resultaat 12*(8^2) of 12*64 of 768. Zoals je ziet is door het toevoegen van de haakjes de uitkomst geheel veranderd. Omdat we nou toch met rekenen bezig zijn is het goed te weten dat er drie instrukties zijn die je programma aanzienlijk kunnen versnellen. INC (Voegt een 1 toe aan een integere variabele) INC var INC voegt een waarde van 1 toe aan een variabele met gebruikmaking van een enkele 68000 instruktie. De logische gelijkwaardigheid van de uitdrukking is var=var+1, maar wel veel sneller. Voorbeeld: A=10:Inc A:Print A 11 DEC (Trekt een 1 af van een variabele) DEC var Deze instruktie haalt een 1 af van de variabele var. Voorbeeld: A=2 Dec A Print A 1 ADD (Snelle toevoeging aan en integer) ADD v,exp[,base TO TOP] De standaard vorm van deze instruktie voegt het resultaat toe van de uitdrukking exp aan en integer variabele. Het is hetzelfde als de regel: V=V+ESXP Het enige noemenswaardige verschil tussen deze twee bestaande vormen is dat ADD ongeveer 40% sneller werkt. Merk wel op dat de variabele v een heel getal (integer) moet zijn. Voorbeeld: Timer=0 For X=1 To 1000 Add T,X Next X Print T,Timer 500500 7 De tweede versie van ADD is wat ingewikkelder. Het effekt is hetzelfde als de volgende code: V=V+A If VTop Then V=BASE Net als de eerste versie van ADD is dit kommando sneller dan de enkelvoudige konstrukties. Hier is een voorbeeld: DimA(10) For X=0 To 10:A(X)=X:Next X V=0 Repeat Add V1,1 To 10 Print A(V) Until V=100:rem dit is een oneindige loop om dat V altijd kleiner is dan 10! Zoals je ziet, is ADD ideaal om loops te herhalen of cirkelsystemen te gebruiken in je spellen.