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

  1. |)            Turbo cursus IV¢            ===============¢¢¢¢In deze aflevering van de turbo-cursus gaan we proberen om communicatie met de computer mogelijk te maken. Het is eigenlijk vrij eenvoudig om de computer met de buitenwereld te laten communiceren. Twee manieren gaan we behandelen. De eerste is via de joystick poort en de tweede manier is via het toetsenbord.¢¢De volgende instrukties lopen we langs:¢¢¢1>> STICK¢2>> STRIG¢3>> PADDLE¢4>> PTRIG¢5>> INPUT¢¢Tevens gaan we ons bezig houden met string bewerkingen. Hiervoor gebruiken we de volgende instrukties:¢¢1>> LEN(.$)¢2>> VAL(.$)¢3>> INSTR(.$,.$)¢4>> UINSTR(.$,.$)¢5>> STR$(.)¢¢¢Nadat je dit deel van de cursus onder de knie hebt, kun je echt gaan programmeren. Niet een game of iets dergelijks, maar je kunt de computer actie laten ondernemen als er van buitenaf iets met de computer wordt gedaan.¢¢¢STICK.¢------¢¢Op onze computers kunnen we twee joy-sticks aansluiten. De eerste noemen we STICK(0) en de tweede noemen we STICK(1). Variabelen hebben we al behandeld, dus daar ga ik verder niet op in. Zijn er onduidelijkheden, kijk dan de voorgaande afleveringen eens na.¢Stel, we willen weten welke richting een joystick wordt geduwt.¢¢Het volgende programma laat zien hoe we dat kunnen doen:¢¢10 A=STICK(0)¢20 ?A¢30 GOTO 10¢¢Dit programma laat een constante scroll van getallen zien. Run dit programma eens en stop een joystick in de voorste poort. Speel een beetje met je Joystick en je zal zien dat de waarde veranderen.¢¢Welke waarde hoort bij welke richting?¢¢                  14¢               10     6¢¢              11  15   7¢¢                9     5¢                  13¢¢We kunnen dit illustreren met het volgende programma:¢¢10 A=STICK(0)¢20 POSITION 5,12:REM WORDT LATER BESPROKEN¢30 IF A=14 THEN ?"NOORD     "¢40 IF A=6 THEN ?"NOORD/OOST"¢50 IF A=7 THEN ?"OOST      "¢60 IF A=5 THEN ?"ZUID/OOST "¢70 IF A=13 THEN ?"ZUID      "¢80 IF A=9 THEN ?"ZUID/WEST "¢90 IF A=11 THEN ?"WEST      "¢100 IF A=10 THEN ?"NOORD/WEST"¢110 IF A=15 THEN ?"NIETS!!!!!"¢120 GOTO 10¢¢(Voor cursisten van Code Runner: zet deze waarden eens om in binaire getallen en er zal veel duidelijk worden. Elke richting zijn eigen bitje. Een combinatie van bits is dus schuin).¢¢Zoals je ziet laten we de computer reageren op een handeling van buiten af. In de voorgaande voorbeelden kun je STICK(0) vervangen voor STICK(1). Je moet dan wel je joystick in de achterste poort doen. Je snapt dat je de computer elke willekeurige handeling kunt laten verrichten.¢¢¢STRIG(0)¢--------¢¢STRIG is een afleiding van Stick TRIGger. Een trigger is je vuurknop van de joystick. Net als STICK(0) kan STRIG(0) ook een waarde bevatten. Deze is altijd 1 of 0. Als de trigger wordt ingedrukt is STICK(0) 0 en als hij losgelaten wordt bevat STICK(0) de waarde 1.¢¢In een programma kun je bv. een wachtroutine met een vuurknop maken.¢¢10 hier staat ¢20 een programmadeel¢30 maar nu komt er een wachtlus.¢40 IF STRIG(0)=1 THEN GOTO 40¢50 vervolg programma¢¢Het programma blijft op regel 40 'hangen' zolang de vuurknop NIET is ingedrukt.¢¢Ook tekenen wordt nu mogelijk. We gaan het kleinste tekenprogramma maken dat er is. Er staan een aantal instruktie'S in die later behandeldt worden. Het is slechts een voorbeeld moet je maar denken.¢¢10 GR.31:COLOR 1¢20 TRAP 20¢30 X=80:Y=90¢40 S=STICK(0):T=STRIG(0)¢50 X=X+(S=7)-(S=11)¢60 Y=Y+(S=13)-(S=14)¢70 IF T=0 THEN PLOT X,Y¢80 GOTO 40¢¢¢Er zijn ook nog een andere 'soort' joysticks. We noemen ze Paddles. Een paddle is een doosje met een draai-knop er op. We kunnen paddles uitlezen met de opdracht:¢¢A=PADDLE(0)¢¢De 0 mag ook een 1,2 of 3 zijn. De waarde van de paddle loopt van 0 to 220. Helemaal naar links is 0 en helemaal naar rechts is 220. Bedenk zelf eens een toepassing voor het gebruik van paddles.¢¢Op een Paddle zit ook weer een vuurknop. Deze kunnen we uitlezen met PTRIG(0) (Paddle TRIGger). Zie verder STRIG(0).¢¢¢INPUT.¢------¢¢De tweede manier om de computer met de buitenwereld te laten communiceren is via het toetsenbord. Stel dat we informatie van de gebruiker willen hebben? We vragen deze dan gewoon en bewaren de informatie dan in nummerieke of string variabelen. De instruktie hiervoor is:¢¢¢     INPUT¢     -----¢¢10 INPUT A¢20 ?"Je typte getal ";A¢¢Indien je dit programma runt verschijnt er een vraagteken. Typ nu een getal in en druk op return. Zie, de computer heeft het gezien en laat het nog eens op het scherm zien.¢¢10 DIM A$(20)¢20 ?"Wat is uw naam???"¢30 INPUT A$¢40 ?:?"U heet dus ";A$¢¢Je ziet dat in voorbeeld 1 een nummerieke variabele wordt gevraagd en in voorbeeld 2 een string. Als je een string invoert als de computer een getal verwacht, geeft hij een ERROR. Dit wil zeggen dat er iets gebeurt dat de computer niet begrijpt.¢¢10 DIM A$(20)¢30 INPUT"WAT IS UW NAAM ";A$¢40 INPUT"WAT IS UW NAAM ",A$¢50 INPUT A$¢¢Drie manieren om een string te vragen. In regel 10 en 20 zet de computer eerst text op het beeldscherm en daarachter!! vraagt hij om een invoer. Omdat in regel 40 een comma wordt gebruikt, laat de computer het vraagteken weg.¢¢We gaan met iemand communiceren. We vragen aan iemand hoeveel geld hij op de bank heeft. En dan willen we nog weten hoelang dat blijft staan en dan nog even de rente weten. De computer kan je dan razend snel zeggen hoeveel geld er na verloop van tijd op de bank staat.¢¢10 DIM A$(20)¢20 INPUT"WAT IS UW NAAM ",A$¢30 INPUT"HOEVEEL GELD HEEFT U OP DE BANK ",GELD¢40 INPUT"HOELANG LAAT U HET STAAN ",JAREN¢50 INPUT"WAT IS DE RENTE ",RENTE¢60 REM¢70 FOR TEL=1 TO JAREN¢80 GELD=GELD+(GELD/100)*RENTE¢90 NEXT TEL¢100 ?:?:?¢110 ?"BESTE ";A$¢120 ?"NA ";JAREN;" SPAREN HEEFT U"¢130 ?GELD;" GULDEN OP DE BANK"¢140 ?:?:?¢150 RUN¢¢¢¢¢Het bewerken van string-variabelen.¢-----------------------------------¢¢¢In de laatste aflevering hebben we gezien dat we de computer perfect namen ed. kunnen laten onthouden. We gaan nu kijken of we nog meer kunnen doen met 'strings'.¢¢¢We gaan eerst eens kijken of de computer kan zien hoelang een string is. Dit doen we met LEN(.$).¢¢10 DIM A$¢20 INPUT"HOE HEET JE ",A$¢30 ?:?¢40 LENGTE=LEN(A$):REM !!!!!¢50 ?A$;" SCHRIJF JE MET ";LENGTE;" LETTERS."¢¢LEN(A$) zet in de nummerieke variabele de lengte van de string. Andere toepassingen zien we straks.¢¢Zoals ik de vorige keer vertelde kan een string geen waarde bevatten. Het is wel mogelijk om een string om te zetten naar een nummerieke variabele. Dit doen we met VAL(.$).¢¢10 DIM A$(10)¢20 INPUT"UW LEEFTIJD IS ",A$¢30 in a$ is nu een waarde,¢40 maar a$ kan er niets mee!!¢50 we gaan er een nummerieke¢60 variabele van maken.¢70 Z=VAL(A$)¢80 in variabele Z zit nu¢90 de waarde¢100 ?"OVER 5 JAAR BENT U ";Z+5¢¢Als we van een string (mits het een getal is!!!) een nummerieke variabele kunnen maken, kan het misschien ook anders om....¢¢10 DIM A$(5)¢20 INPUT"UW LEEFTIJD IS ",X¢30 A$=STR$(X):REM !!!!!!!¢40 ?A$¢¢Dat kan dus ook. We gebruiken daarvoor de instruktie STR$(variabele).¢¢Je ziet dat er aardig wat gedaan kan worden met strings. We zijn er nog lang niet. We gaan even verder met een stukje theorie over strings.¢¢Een string kan maximaal ongeveer 32000 tekens bevatten. Dit lijkt mij ruim voldoende. Wat nu te doen als we niet de hele string willen laten zien, maar een deel??¢We vertellen de compter gewoon welk deel en hij laat het zien.¢¢10 DIM A$(10)¢20 A$="HALLO"¢30 ?A$(1)¢¢De computer print nu HALLO¢¢Door 1 getal tussen haakjes te zetten achter de string variabele werkt de computer vanaf het getal.¢¢Maak van regel 30 ?A$(2)¢¢De computer zegt nu ALLO¢¢Grappig he? Van af het getal tot aan het einde laat de computer de string zien. We gaan nog een stap verder. Stel dat we vanaf de 2e tot de 4e letter willen laten zien? We zetten dan gewoon 2 getallen tussen de haakjes.¢¢30 ?A$(2,4)¢¢ALL is het resultaat.¢¢De getallen tussen haakjes mogen natuurlijk ook nummerieke variabelen zijn.¢10 DIM A$(5)¢20 A$="HALLO"¢30 FOR P=1 TO 5¢40 ?A$(P,P)¢50 NEXT P¢¢RESULTAAT:¢¢H¢A¢L¢L¢O¢¢Op deze manier kunnen we ook delen van een string veranderen. Stel in een string staat HALLO en we willen daar HABBO van maken.¢¢A$(3,4)="BB"¢¢Ik hoop dat dit alles een beetje te begrijpen is. Ik zal een voorbeeld programma laten zien, dat kijkt of een woord achterstevorem gelezen het zelfde is. Bv. negen, pop of raar¢Eerst moet het woord ingetoetst worden. Dan gaat de computer de lengte bepalen en via een FOR NEXT loop zet hij de string achterstevoren in een andere string. Dan hoeft de computer alleen nog maar de twee strings te vergelijken. Als ze het zelfde zijn kan het woord achterstevoren gelezen worden. Het programma ziet er zo uit:¢¢10 DIM A$(10),B$(10)¢20 INPUT"WOORD (MAX 10 TEKENS) ",A$¢30 REM bepaal lengte¢40 L=LEN(A$)¢50 REM zet van achter naar voren in B$¢60 FOR P=1 TO L¢70  B$(L-P+1,L-P+1)=A$(P,P)¢80 NEXT P¢90 REM geef resultaat weer¢100 IF A$=B$¢110  ?A$;"=";B$¢120 ELSE¢130  ?A$;"<>";B$¢140 ENDIF¢150 GOTO 20¢¢Cursisten die dit programma begrijpen zijn al aardig op weg om de geheimen van het programmeren te ontfutselen aan de computer. We gaan nog weer een stapje verder.¢¢We kunnen natuurlijk proberen om strings aan elkaar te plakken. In A$ zetten we HALLO en in B$ zetten we POKEY.¢Daarna plakken we ze aan elkaar¢¢10 DIM A$(100),B$(100)¢20 A$="HALLO "¢30 B$="POKEY "¢40 REM we plakken achter A$ B$ vast¢50 REM eerst kijken hoelang A$ is¢60 L=LEN(A$)¢70 REM L is de laatse letter daar¢80 REM moet B$ achter!¢90 L=L+1¢100 A$(L)=B$¢120 ?A$¢¢¢We zijn aangekomen bij de laatste instruktie's die we deze maand behandelen. We gaan zoeken binnen een string naar iets.¢¢Dit doen we met INSTR().¢¢In A$ staat 'pokey is te gek'¢¢Nu gaan we kijken op welke positie 'gek' staat binnen A$. We zetten het woord 'gek' in B$. En geven dan de opdracht¢¢         ?INSTR(A$,B$).¢¢Zoek B$ binnen A$ en zeg op welke plaats dat dan staat. Indien het resultaat 0 is staat B$ niet binnen A$.¢¢We gaan nog een stapje verder. Zoek vanaf de 5e letter van A$ naar het woord 'gek'. ¢¢?INSTR(A$,B$,5)¢¢De 5 mag ook weer een variabele zijn. Ook B$ mag vervangen worden door het woord wat we zoeken.¢¢?INSTR(A$,"gek",5)¢¢¢Omdat de computer GEK als iets anders ziet dan gek, (grote en kleine letters) heeft de maker van Turbo-Basic en wel heel prettige instruktie bedacht.¢¢UINSTR()¢¢Deze instruktie werkt het zelfde als INSTR(), maar kijkt nu niet of letters groot, klein of zelfs inverse video is¢¢¢¢Probeer zelf zoveel mogelijk uit. Kijk goed naar de voorbeelden in deze cursus.¢¢Een laatste tip. Deze tekst is gewoon in een text verwerker te laden, en dan uit te printen.¢¢¢¢Tot de volgende Turbo-cursus waarin we ons met grafische dingetjes zoals tekenen gaan bezig houden.¢¢John Maris.¢¢¢¢¢¢