members.home.nlmembers.home.nl/nlajast/school/Basic tutorial.docx  · Web viewIn beide gevallen...

29
maarEen compiler? Wat was dat ook al weer? Een compiler is een speciaal programma dat jouw BASIC code omzet naar een echt programma! Heb je dat nodig? Nee, maar het is natuurlijk wel handig als je even kunt kijken of jouw programma het wel doet en of jij het snapt. En natuurlijk heb je dan een echt programma, dat je overal kan gebruiken! Een compiler of een interpreter? Dan moet je ook nog de (niet al te moeilijke) keuze tussen een compiler en een interpreter maken. Wat is een interpreter dan? Een interpreter is een programma dat jouw code niet direct vertaald, maar die stap voor stap uitvoert. Dit is vooral handig als je net begint met programmeren (dat is waarschijnlijk hier het geval) of als je een fout uit je programma moet halen. Een interpreter maakt alleen geen programma. Ik raad je aan om zowel een compiler als een interpreter de downloaden. Gebruik dan een interpreter om je programma te ontwikkelen, en vervolgens een compiler om er een programma van te maken. Waar vindt je die? Door er een uit het onderstaande lijstje te downloaden. Mocht er een link dood zijn, of er is geen compiler/interpreter meer te vinden, post dat dan op het forum! Compiler FreeBASIC, een compiler die met het FreeBASIC dialect werkt. In de volgende tutorials gaan we deze gebruiken, dus ik raad je deze van harte aan! Deze compiler is voor zowel Linux als Windows. Voor de Mac heb ik nog geen goede gevonden. Interpreter De bekendste interpreter voor Windows is die van Microsoft zelf. Deze is voor DOS gemaakt, maar hij werkt nog steeds op Windows XP (op Vista heb ik het nog niet geprobeerd). Deze kun je nog altijd vinden op de site van Microsoft zelf. Dit bestand moet je downloaden en vervolgens kopiëren naar een lege map. Wees er zeker van dat je dit echt naar een lege map doet,

Transcript of members.home.nlmembers.home.nl/nlajast/school/Basic tutorial.docx  · Web viewIn beide gevallen...

Page 1: members.home.nlmembers.home.nl/nlajast/school/Basic tutorial.docx  · Web viewIn beide gevallen zal op de plek waar test.bas staat, ... Dan pas word het programma wat jegemaakt hebt

maarEen compiler? Wat was dat ook al weer? Een compiler is een speciaal programma dat jouw BASIC code omzet naar een echt programma! Heb je dat nodig? Nee, maar het is natuurlijk wel handig als je even kunt kijken of jouw programma het wel doet en of jij het snapt. En natuurlijk heb je dan een echt programma, dat je overal kan gebruiken!

Een compiler of een interpreter?Dan moet je ook nog de (niet al te moeilijke) keuze tussen een compiler en een interpreter maken. Wat is een interpreter dan? Een interpreter is een programma dat jouw code niet direct vertaald, maar die stap voor stap uitvoert. Dit is vooral handig als je net begint met programmeren (dat is waarschijnlijk hier het geval) of als je een fout uit je programma moet halen. Een interpreter maakt alleen geen programma. Ik raad je aan om zowel een compiler als een interpreter de downloaden. Gebruik dan een interpreter om je programma te ontwikkelen, en vervolgens een compiler om er een programma van te maken.

Waar vindt je die?Door er een uit het onderstaande lijstje te downloaden. Mocht er een link dood zijn, of er is geen compiler/interpreter meer te vinden, post dat dan op het forum!

Compiler

FreeBASIC, een compiler die met het FreeBASIC dialect werkt. In de volgende tutorials gaan we deze gebruiken, dus ik raad je deze van harte aan! Deze compiler is voor zowel Linux als Windows. Voor de Mac heb ik nog geen goede gevonden.

Interpreter

De bekendste interpreter voor Windows is die van Microsoft zelf. Deze is voor DOS gemaakt, maar hij werkt nog steeds op Windows XP (op Vista heb ik het nog niet geprobeerd). Deze kun je nog altijd vinden op de site van Microsoft zelf. Dit bestand moet je downloaden en vervolgens kopiëren naar een lege map. Wees er zeker van dat je dit echt naar een lege map doet, anders ben je alle bestanden in die map kwijt. Vervolgens moet je het bestand uitvoeren en y invoeren. Uiteindelijk komt er in die map dan het bestand qbasic.exe tevoorschijn, en die moet je hebben. Hoe je ermee werkt vertellen we in de volgende tutorial.

Voor de mensen die op Linux of Mac werken heb ik jammer genoeg geen goede interpreter gevonden. Je zult dus alles via de compiler moeten doen. Heb je nog een goede gevonden, mail mij dan even!

Zo, hopelijk heb je er doorheen weten te worstelen. Je kunt nu verder met de eerste BASIC tutorial.

Page 2: members.home.nlmembers.home.nl/nlajast/school/Basic tutorial.docx  · Web viewIn beide gevallen zal op de plek waar test.bas staat, ... Dan pas word het programma wat jegemaakt hebt

Zo nu kunnen we echt beginnen met je eerste programma. Ik ga ervan uit dat je de basis programmeer tutorials al hebt gelezen, en ze ook een beetje snapt. Snap je het niet helemaal, dan is dat geen ramp, we gaan er hier nog uitgebreid op in.

Start de interpreterAllereerst hebben we een programma nodig om onze codes in te kunnen gaan schrijven. Als je QBASIC al gedownload hebt in de vorige tutorial hoef je deze alleen maar op te starten. Vervolgens krijg je een scherm met een welkomstbericht. Druk hier op de Esc op je toetsenbord. In het scherm zie je bovenin een menubalk, daaronder een groot blauw leeg vak, en daaronder een kleiner vakje. In het grote vak moet je straks je programma schrijven.

Wat als je alleen een compiler hebtAls je alleen een compiler hebt is het iets moeilijker. Je moet jouw programma dan in kladblok of een soortgelijk programma maken: Een tekstverwerker dus. Nadat je het programma af hebt sla je het bestand op als een .bas bestand, bijvoorbeeld test.bas. Vervolgens moet je, je compiler opstarten, en het juiste bestand invoeren. Als het goed is komt er dan in dezelfde map, of de map van de compiler een nieuw programma, jouw eerste programma! Hoe dat precies gaat leg ik zo uit.

Aan de slag!Dan is het nu tijd om aan de slag te gaan. In QBASIC (of in je tekstverwerker) begin je met het eerste commando. We beginnen met het scherm leeg te maken, en een regel tekst op het scherm te zetten. Voer het volgende in:

CLSPRINT "Hallo, deze tekst staat op het scherm"END

Nu is je eerste (erg simpele) programmacode klaar. Even een uitleg: CLS is het commando dat ervoor zorgt dat het scherm leeg wordt gemaakt, vervolgens zorgt PRINT "Hallo, deze tekst staat op het scherm" dat er tekst op het scherm komt. Als laatste geeft END aan dat het programma afgelopen is. Nu moeten we het nog uitvoeren. Als je dat in QBASIC doet moet je klikken op het menu Run -> Start.

Als je met een tekstverwerker werkt moet je het bestand eerst opslaan als .bas in een map die makkelijk te typen is, bijvoorbeeld C:\test.bas (of in Linux /home/gebruiker ofzo). Vervolgens start je in Windows het programma door op het icoontje FreeBASIC te drukken, en vervolgens "fbc -lang qb C:\test.bas" in te typen (wel zonder aanhalingstekens!). In Linux voer je in de commando regel "fbc -lang qb /home/gebruiker/test.bas" in (ook zonder aanhalingstekens). In beide gevallen zal op de plek waar test.bas staat, nu ook het programma test.exe zijn gevormd. Voer dit programma uit om het resultaat te zien.

De uitleg hierboven was vrij omslachtig. Daarom leg ik het maar een keer uit. Mocht je het zijn vergeten, kijk dan nog een keer hoe het ook alweer ging.

Page 3: members.home.nlmembers.home.nl/nlajast/school/Basic tutorial.docx  · Web viewIn beide gevallen zal op de plek waar test.bas staat, ... Dan pas word het programma wat jegemaakt hebt

Misschien valt je op dat die aanhalingstekens die je bij de PRINT opdracht typte helemaal niet op het scherm komen. Dat komt omdat die aanhalingstekens eigenlijk een onderdeel van het commando zijn. Met de aanhalingstekens geef je namelijk aan dat het om tekst gaat, en niet om getallen. Vergeet je die aanhalingstekens, dan krijg je geen tekst op het scherm, maar een getal, meestal nul.

De gebruiker iets in laten voeren

Zo, de eerste stap is gezet. Het is alleen niet echt heel leuk om alleen iets op het scherm te zetten. Daarom gaan we nu de gebruiker vragen zijn naam in te typen. Vervolgens zeggen wij dat een hele mooie naam is. Je krijgt dan dit:

CLSINPUT "He daar, voer je naam eens in! ", b$PRINT "Voerde jij "; b$; " in? Wat een mooie naam!"END

Even een uitleg: Met CLS wordt het scherm weer schoongemaakt. Vervolgens zorgt het commando INPUT ervoor dat "He daar, voer je naam eens in! " op het scherm wordt gezet, en dat wat de gebruiker invoert komt in de variabele b$ terecht.

Een variabele? Wat was dat ook alweer? Zoals was uitgelegd in de basistutorials is een variabele een klein stukje geheugen waarin gegevens worden opgeslagen. In dit geval wordt er in de variabele b$ dat wat de gebruiker invoert opgeslagen. De naam b$ heb ik zomaar gekozen, maar je kunt elke naam kiezen, zolang er maar een $ achterstaat. Waarom die $ bespreken we zo. Je zou dus ook in plaats van b$ de variabele naam$ hebben kunnen gebruikt, dat maakt niets uit. Een variabele heeft alleen een naam zodat jij hem in het programma ergens op kan slaan en aan kan roepen.

Dan zie je de functie PRINT, die de tekst "Voerde jij " op het scherm zet, vervolgens de inhoud van de variabele b$ op het scherm zet, en ook nog " in? Wat een mooie naam!" op het scherm zet. Als de gebruiker dus Piet in had gevoerd zou er "Voerde jij Piet in? Wat een mooie naam!" op het scherm komen. Als laatste staat er weer END, die het programma afsluit.

En die puntkomma's dan? Met die puntkomma's geef jij aan de computer door dat hij deze drie stukjes achter elkaar moet zetten. Zet je die er niet tussen, dan geeft hij een foutmelding, want dan weet hij niet wat hij ermee moet doen. Als je met QBASIC werkt zal je het niet merken dat er iets fout is al je de puntkomma's vergeet, hij zet ze er vanzelf tussen. Toch kun je ze maar beter niet vergeten, anders krijg je straks iets anders dan wat je wilde!

We zijn erdoorheen...Deze tutorial is klaar. Hopelijk snap je het een beetje! Mocht je het niet snappen, lees het dan nog een keer door,

Page 4: members.home.nlmembers.home.nl/nlajast/school/Basic tutorial.docx  · Web viewIn beide gevallen zal op de plek waar test.bas staat, ... Dan pas word het programma wat jegemaakt hebt

Variabelen zijn een van de belangrijkste bouwstenen in het programmeren. Je moet immers de data die ingevoerd wordt verwerken, en daarvoor moet je die wel tijdelijk ergens op kunnen slaan, anders kun je er niet mee werken. Daarom gaan we daar nu verder op in.

Een korte herhalingIn de vorige tutorial behandelde we al heel even variabelen. Ik zei daar dat variabelen moeten eindigen op een $-teken. Dat is niet helemaal waar. Er zijn namelijk verschillende soorten variabelen. Als je een variabele hebt met een $-teken erachter betekend dat dat je een variabele hebt waar je tekst in op kunt slaan. Er zijn echter nog meer soorten. Die soorten gaan we nu behandelen.

Soorten variabelenJe hebt al met een soort kennisgemaakt, de variabele waar tekst in kan. In BASIC zijn 5 soorten variabelen. In de tabel hieronder kun je zien welke dat zijn.

Naam Wat past erin? Minimum Maximum Voorbeeld

String Tekst - 32.767 tekens tekst$

Integer Gehele getallen -32.768 32.767 getal%

Lange integer

Gehele getallen -2.147.483.648 2.147.483.647 grootgetal&

Enkele precisie

Getallen met een komma

-3,402823*10^38 3,402823*10^38 precies!

Dubbele precisie

Getallen met een komma

-1,79769313486231*10^308 1,79769313486231*10^308 ergprecies#

Zoals je in de bovenstaande tabel ziet heeft elke soort variabele een eigen minimum en een eigen maximum, en in de laatste kolom kun je zien welk teken daarbij hoort. Wil je dus een variabele met een dubbele precisie en je noemt die variabele mijnsalaris, dan wordt dat mijnsalaris#. Dit lijkt mij vrij duidelijk. Het is nu niet de bedoeling dat je deze tabel uit je hoofd gaat leren, dat is nergens voor nodig. Je kunt hem toch altijd nog even nazoeken, dus leren is nergens voor nodig.

Variabelen declarerenIn het voorbeeld in de vorige tutorial maakte je een variabele zo aan, zonder dat je van te voren hem eerst aanmaakte, ofwel reserveerde. Eigenlijk hoort dat wel. Het reserveren van een variabele is niet veel werk, maar je moet het eigenlijk wel doen. Voor het overzicht is dat beter, en je programma zal er ook een beetje sneller van lopen. Reserveren gaat als volgt:

Page 5: members.home.nlmembers.home.nl/nlajast/school/Basic tutorial.docx  · Web viewIn beide gevallen zal op de plek waar test.bas staat, ... Dan pas word het programma wat jegemaakt hebt

DIM naam$DIM getal&

In het bovenstaande voorbeeld hebben we 2 variabelen gereserveerd, een waar tekst in kan, een string dus, en eentje waar gehele getallen in kunnen, een integer. Of je variabelen reserveert moet je helemaal zelf weten. Het is wel zo dat je het in sommige andere programmeertalen moet doen, en als je het in BASIC dus alvast doet is het later niet zo moeilijk meer aan te leren.

ConstantenOm het nog moeilijker te maken heb je ook nog constanten. Dat zijn een soort variabelen die je maar een keer vast kunt stellen, en die je dus niet kunt veranderen. Je kunt ze alleen inlezen. Waarom zou je zoiets nodig hebben? Soms moet je waardes die je vaak in het programma gebruikt wijzigen. Als je die dan gaat wijzigen moet je de hele code afspeuren naar waar die staan. Als je bovenaan je programma dan een constante met die waarde neerzet, en in je broncode telkens naar die constante verwijst, hoef je dat maar een keer te wijzigen. Bij het gebruik van constanten wordt je broncode ook duidelijker. Ook hier weer moet je zelf bepalen of je dat wilt.

Een constante declareren (aanmaken dus) is best makkelijk. Je zet gewoon het wordt CONST voor de declaratie, en je laat het teken weg. Het wordt dan dit:

CONST pi=2.1415CONST getal=12.345

Zoals je ziet hebben we hier 2 constanten aangemaakt. Deze kun je overal in je code gebruiken. Bijvoorbeeld:

CONST pi=2.1415CLSPRINT "Pi is "; piEND

Stap voor stap: Eerst wordt de constante pi aangemaakt en het scherm wordt leeggemaakt. Vervolgens wordt de tekst "Pi is " en de waarde van de constante pi op het scherm gezet. Als laatste wordt het programma afgesloten.

Page 6: members.home.nlmembers.home.nl/nlajast/school/Basic tutorial.docx  · Web viewIn beide gevallen zal op de plek waar test.bas staat, ... Dan pas word het programma wat jegemaakt hebt

Zo, dan gaan we nu beginnen aan een andere belangrijk ding in het programmeren: Controle van voorwaardes. Hopelijk heb je de basisbeginselen goed doorgenomen, want die moet je nu goed kennen!

BASIC VoorbeeldIn de basis tutorials hebben we het al gehad over die booleaanse wiskunde. Die gaan we hier gebruiken. Een voorbeeld:

CLSDIM invoer%INPUT "Voer een 1 in om verder te gaan, en een 0 om te stoppen", invoer%IF (invoer% = 1) THENHier komt de rest van jouw programma... Dit krijgt de gebruiker alleen te zien als invoer$ gelijk is aan 1END IFEND

Wat is hier nu precies gebeurd?

1. Allereerst wordt met CLS het scherm leeggemaakt. 2. Dan wordt met DIM invoer% een nieuwe variabele met de naam invoer gemaakt. 3. Met INPUT zet je een vraag op het scherm en laat je de gebruiker vervolgens zijn

keuze invoeren. 4. Met IF wordt namelijk gecontroleerd of in de variabele invoer% gelijk is aan 1,

vandaar ook het = teken. 5. Daarachter staat THEN, dat hoort nog bij IF. 6. Daarna komt de rest van jouw programma. 7. Dan staat er END IF, wat betekend dat jouw IF-constructie hier is afgelopen. 8. Als laatste staat er END, wat je programma afsluit.

Hopelijk is het een beetje te snappen. We gaan namelijk vrij snel door de stof heen. Misschien is het nut van zoiets je niet helemaal duidelijk maar dat zal je snel genoeg duidelijk worden!

ControleIn de basisbeginselen bespraken we ook de verschillende soorten van controle. De gebruikte tekens verschillen per programmeertaal. Hier is het lijstje van de tekens bij BASIC:

Controleren of Teken Expressie Klopt als...Is gelijk aan = waardea$ = 27 klopt als waardea hetzelfde is als 27Is kleiner dan < waardea$ < 27 klopt als waardea kleiner is dan 27Is groter dan > waardea$ > 27 klopt als waardea groter is dan 27Is niet gelijk aan <> waardea$ <> 27 klopt als waardea niet gelijk is aan 27Is kleiner dan of gelijk aan <= waardea$ <=;

27klopt als waardea kleiner is dan of gelijk is aan 27

Is groter dan of gelijk >= waardea$ >=; klopt als waardea groter is dan of gelijk is

Page 7: members.home.nlmembers.home.nl/nlajast/school/Basic tutorial.docx  · Web viewIn beide gevallen zal op de plek waar test.bas staat, ... Dan pas word het programma wat jegemaakt hebt

aan 27 aan 27

Even ter verduidelijking: het woord expressie gebruiken we altijd als we hebben over die booleaanse wiskunde.

Complexer controlerenWe gaan weer verder aan de hand van een ander voorbeeld: je hebt een programma dat de gebruiker om zijn salaris vraagt. Aan de hand van het ingevoerde salaris geeft hij een waarde terug.

CLSDIM salaris%INPUT "Wat is je maandsalaris in euro's? ",salaris%IF (salaris% < 5000) THENPRINT "Het wordt tijd dat je om meer gaat vragen!"ELSEPRINT "Zo, lekker salaris heb jij! Dat zou ik ook wel willen!"ENDIFEND

Even een stap-voor-stap uitleg:

1. Met CLS maak je het scherm leeg 2. Met DIM maak je de variabele salaris$ aan, met het type integer, deze kan dus getallen

bevatten. 3. Met INPUT zet je de vraag: Wat is je maandsalaris in euro's? op het scherm, en wacht

je tot de gebruikr iets invoert. 4. Met deze voorwaarde controleer je of de ingevoerde waarde kleiner is dan 5000 5. PRINT zet een regel tekst op het scherm. Deze komt alleen op het scherm als de

ingevoerde waarde kleiner is dan 5000 6. ELSE geeft aan dat de IF hier is afgelopen, en dat alles dat hierna komt alleen wordt

uitgevoerd als de IF van hiervoor niet waar was. 7. PRINT zet een regel tekst op het scherm, maar alleen als het salaris niet lager dan

5000 (dus hoger of gelijk aan 5000) was. 8. ENDIF geeft aan dat de IF-constructie hier eindigd. 9. END geeft het einde van het programma aan.

Zoals je ziet is het gebruik van ELSE in veel gevallen erg handig. Je zult het nog vaak tegenkomen. Er is echter nog een derde "statement" dat op IF lijkt. (een statement is trouwens een speciale programmeerconstructie, zoals IF en ELSE) Dat is ELSEIF. Het is een soort kruising tussen ELSE en IF. Ik ga er niet teveel woorden aan vuil maken, kijk maar goed naar het volgende voorbeeld:

CLSDIM salaris%INPUT "Wat is je maandsalaris in euro's? ",salaris%IF (salaris% < 5000) THENPRINT "Minder dan 5000? Het wordt tijd dat je om meer gaat vragen!"

Page 8: members.home.nlmembers.home.nl/nlajast/school/Basic tutorial.docx  · Web viewIn beide gevallen zal op de plek waar test.bas staat, ... Dan pas word het programma wat jegemaakt hebt

ELSEIF (salaris% < 10000) THENPRINT "Tussen de 5000 en 10000! Goed voor elkaar ;)"ELSEPRINT "Meer dan 10000? Dat zou ik ook wel willen!"ENDIFEND

Weer een stap-voor-stap uitleg:

1. Met CLS maak je het scherm leeg 2. Met DIM maak je de variabele salaris$ aan, met het type integer, deze kan dus getallen

bevatten. 3. Met INPUT zet je de vraag: Wat is je maandsalaris in euro's? op het scherm, en wacht

je tot de gebruikr iets invoert. 4. Met deze voorwaarde controleer je of de ingevoerde waarde kleiner is dan 5000 5. PRINT zet een regel tekst op het scherm. Deze komt alleen op het scherm als de

ingevoerde waarde kleiner is dan 5000 6. ELSEIF zet een voorwaarde klaar die alleen gecontroleerd wordt als de eerste IF niet

waar was. In dit geval wordt de voorwaarde dus alleen gecontroleerd als salaris% groter is dan 5000

7. ELSE geeft aan dat alles dat hierna komt alleen wordt uitgevoerd als de IF van hiervoor niet waar was.

8. PRINT zet een regel tekst op het scherm, maar alleen als het salaris niet lager dan 5000 en niet lager dan 10000 (dus hoger of gelijk aan 10000) was.

9. ENDIF geeft aan dat de IF-constructie hier eindigd. 10. END geeft het einde van het programma aan.

Onthoud dat je IF naar wens kunt aanvullen met ELSEIF en ELSE en dat je ELSEIF zo vaak kunt gebruiken als je wilt. Je kunt bijvoorbeeld IF gebruiken met 6 ELSEIF's of iets dergelijks. Dat doe je op precies dezelfde manier als hierboven. Je krijgt dan zoiets:

Deze code is weggelaten. Hier wordt de variabele getal% aangemaaktIF (getal% < 10) THENPRINT "Dit getal is kleiner dan 10"ELSEIF (getal% < 20) THENPRINT "Dit getal is tussen de 10 en de 20"ELSEIF (getal% < 30) THENPRINT "Dit getal is tussen de 20 en de 30"ELSEIF (getal% < 100) THENPRINT "Dit getal is tussen de 30 en de 100"ENDIF

Hopelijk is dit een beetje duidelijk. Ik hoop dat je je erheen weet te worstelen, want deze les is erg belangrijk. Je hebt in ieder geval de moeite genomen om tot dit stukje te lezen.

Page 9: members.home.nlmembers.home.nl/nlajast/school/Basic tutorial.docx  · Web viewIn beide gevallen zal op de plek waar test.bas staat, ... Dan pas word het programma wat jegemaakt hebt

In de vorige les heb je gezien dat je eenvoudige controles op waardes uit kunt voeren met IF, ELSEIF en ELSE. Het zal echter meer dan eens voor gaan komen dat je meer dan 1 waarde tegelijk wilt controleren. Laten we maar meteen met een goed voorbeeld beginnen: je hebt 2 variabelen, en je wilt een stukje code alleen in werking laten gaan als beide variabelen groter dan 20 zijn. Daarvoor kun je dit gebruiken:

CLSDIM getal%DIM getal2%INPUT "Voer eens een getal in!", getal%INPUT "Voer nog eens een getal in!", getal2%IF (getal%>10) THENIF (getal2%>10) THENEventuele code wordt alleen uitgevoerd als zowel getal% als getal2% groter dan 10 zijn.ENDIFENDIFEND

In dit geval is het niet zo'n probleem, je stopt gewoon 2 IF's in elkaar. Helaas wordt het een stuk moeilijker als er meer dan 2 voorwaardes komen. Gelukkig is daar een oplossing voor. Je kunt in een IF voorwaarde meerdere expressies tegelijk stoppen en die onafhankelijk van elkaar laten controleren. We gaan het bovenstaande voorbeeld nu verbeteren met de constructie AND. Met AND kun je 2 voorwaardes aan elkaar verbinden in een IF.

CLSDIM getal%DIM getal2%INPUT "Voer eens een getal in!", getal%INPUT "Voer nog eens een getal in!", getal2%IF (getal%>10) AND (getal2%>10) THENEventuele code wordt alleen uitgevoerd als zowel getal% als getal2% groter dan 10 zijn.ENDIFEND

OR, NOT en XOR

OR

Er zijn echter nog 3 andere "verbinders": OR, NOT en XOR. NOT werk iets anders dan de andere, maar dat zie je snel genoeg. We beginnen nu met OR. We nemen het vorige voorbeeld er weer bij en veranderen het zodanig dat we OR erin gebruiken.

CLSDIM getal%DIM getal2%INPUT "Voer eens een getal in!", getal%INPUT "Voer nog eens een getal in!", getal2%IF (getal%>10) OR (getal2%>10) THENEventuele code wordt alleen uitgevoerd als getal% of getal2% groter zijn dan 10.

Page 10: members.home.nlmembers.home.nl/nlajast/school/Basic tutorial.docx  · Web viewIn beide gevallen zal op de plek waar test.bas staat, ... Dan pas word het programma wat jegemaakt hebt

ENDIFEND

Ook dit voorbeeld is niet zo moeilijk te begrijpen: er wordt gecontroleerd of getal% groter is dan 10 en of getal2% groter is dan 10. Is een van de 2 (of allebei) groter dan 10, dan gaat de code in werking.

NOT

NOT werkt iets anders dan de andere. NOT gaat namelijk in werking als een bepaalde voorwaarde niet waar is. Een voorbeeld:

CLSDIM getal%INPUT "Voer eens een getal in!", getal%IF NOT(getal%=10) THENEventuele code wordt alleen uitgevoerd als getal% niet gelijk is aan 10.ENDIFEND

Dit ziet er natuurlijk een beetje stom uit, omdat je dit ook kunt bereiken met (getal% <> 10) maar je zult zien dat NOT toch wel erg handig kan zijn.

XOR

De laatste van de 4 is XOR. XOR lijkt heel veel of OR, maar is net iets anders. OR zorgt voor een koppeling waarbij een van de 2, of beide waar moeten zijn. XOR echter, zorgt ervoor dan een van de twee waar moet zijn, maar is niet waar als ze allebei waar zijn. Kort samengevat werkt XOR dus hetzelfde als OR, maar is onwaar als beide waar zijn.

Schematisch overzichtHet bovenstaande is misschien een beetje verwarrend, en daarom verduidelijk ik het even met een aantal schema's.

AND

Voorwaarde 1 Voorwaarde 2 Uitkomstwaar waar waaronwaar waar onwaarwaar onwaar onwaaronwaar onwaar onwaar

OR

Voorwaarde 1 Voorwaarde 2 Uitkomstwaar waar waar

Page 11: members.home.nlmembers.home.nl/nlajast/school/Basic tutorial.docx  · Web viewIn beide gevallen zal op de plek waar test.bas staat, ... Dan pas word het programma wat jegemaakt hebt

onwaar waar waarwaar onwaar waaronwaar onwaar onwaar

XOR

Voorwaarde 1 Voorwaarde 2 Uitkomstwaar waar onwaaronwaar waar waarwaar onwaar waaronwaar onwaar onwaar

NOT

Voorwaarde Uitkomstwaar onwaaronwaar waar

Meer controle: haakjesJe hebt gezien dat je met AND, OR, NOT en XOR geavanceerdere controles uit kunt voeren. Het kan echter nog gecompliceerder door de voorwaardes te "nesten" met haakjes. Stel: je hebt een programma dat mensen helpt bij hun belastingaangifte. Je hebt 2 variabelen: de leeftijd en het inkomen van de persoon die het programma gebruikt. Als hij/zij ouder is dan 12 en meer dan 2000 euro per jaar verdient, ouder is dan 18 of precies 18 is moet er een bepaalde toeslag worden betaald. Je moet dan controleren of deze persoon of "ouder is dan 12 en meer dan 200 euro verdient" of "ouder is dan 18 of precies 18". Dat doe je ongeveer zo:

Deze code is weggelaten. Hier worden de variabelen leeftijd%, verdient% en betalen% aangemaaktIF (leeftijd% > 18) OR ((leeftijd% > 12) AND (verdient% > 2000)) THENPRINT "Toeslag x moet worden betaald"betalen = betalen + 200ENDIF

Dit voorbeeld komt precies overeen met hoe het daarnet is uitgelegd. Allereerst kijkt de computer of de inhoud van de variabele leeftijd groter is dan 18. Zo ja, dan wordt de code meteen uitgevoerd. Zo niet, dan wordt eerst gekeken of de leeftijd groter is dan 12 en of deze persoon meer dan 2000 euro verdient. Zijn beide waar, dan wordt de code ook uitgevoerd.

Je kunt haakjes zo veel als je wilt combineren. Maak daar gebruik van maar maak het niet te bont. Het moet wel begrijpelijk blijven.

Je hebt in de vorige tutorial kennis gemaakt met booleaanse expressies in voorwaardes. Je kunt booleaanse wiskunde echter ook voor een ander handig systeem gebruiken: de lus.

Page 12: members.home.nlmembers.home.nl/nlajast/school/Basic tutorial.docx  · Web viewIn beide gevallen zal op de plek waar test.bas staat, ... Dan pas word het programma wat jegemaakt hebt

Lussen herhalen zichzelf totdat een bepaalde booleaanse expressie onwaar wordt. Je zult snel genoeg merken dat lussen bijna net zo belangrijk zijn als voorwaardes.

Soorten lussenEr zijn in BASIC 5 verschillende soorten lussen. Elk van die lussen kun je op een andere manier gebruiken. We gaan ze hieronder alle 5 bespreken.

De FOR-lus

De FOR-lus is het best te gebruiken als je iets een vast aantal keer wilt herhalen, bijvoorbeeld 20x. Kijk goed naar het onderstaande programma. Dit programma zet 20x Ik zal nooit meer spieken op het scherm.

CLSPRINT "Dit Programma schrijft 20 strafregels"

FOR teller% = 1 TO 20PRINT "Ik zal nooit meer spieken"NEXT

END

1. Als eerste maakt CLS het scherm leeg 2. Daarna zet PRINT een regel op het scherm die uitlegt wat het programma doet 3. Dan begint de lus. Allereerst geeft FOR aan dat het om een FOR-lus gaat. De

variabele teller% is de tel-variabele. In teller% is opgeslagen hoevaak de lus zich al herhaalt heeft. 1 TO 20 geeft aan dat de teller% begint met 1, en daarna doorgaat totdat de teller% 20 is. De lus heeft zich dan 20x herhaalt.

4. Daarna wordt met PRINT een regel op het scherm gezet. Doordat PRINT in een lus staat wordt PRINT 20x uitgevoerd.

5. NEXT geeft het eind van de FOR-lus aan, waarna deze opnieuw kan beginnen of kan stoppen, afhankelijk van hoever hij al is.

6. END beeindigd het programma

Als je dit programma uitvoert krijg je dit op je scherm:

Dit Programma schrijft 20 strafregelsIk zal nooit meer spiekenIk zal nooit meer spiekenIk zal nooit meer spiekenIk zal nooit meer spiekenIk zal nooit meer spiekenIk zal nooit meer spiekenIk zal nooit meer spiekenIk zal nooit meer spiekenIk zal nooit meer spiekenIk zal nooit meer spiekenIk zal nooit meer spieken

Page 13: members.home.nlmembers.home.nl/nlajast/school/Basic tutorial.docx  · Web viewIn beide gevallen zal op de plek waar test.bas staat, ... Dan pas word het programma wat jegemaakt hebt

Ik zal nooit meer spiekenIk zal nooit meer spiekenIk zal nooit meer spiekenIk zal nooit meer spiekenIk zal nooit meer spiekenIk zal nooit meer spiekenIk zal nooit meer spiekenIk zal nooit meer spiekenIk zal nooit meer spieken

De DO-WHILE-LOOP-lus

Deze lus heeft, in tegenstelling tot de FOR-lus, een variabel aantal herhalingen. Het aantal herhalingen hangt af van een variabele. We kunnen het bovenstaande strafregelprogramma heel eenvoudig ombouwen tot een programma waarin de gebruiker op moet geven hoeveel strafregels hij/zij wil. Bekijk het onderstaande voorbeeld:

CLSINPUT "Hoeveel strafregels wil je hebben?", aantal%

teller%=1DO WHILE (teller% <= aantal%)PRINT "Ik zal nooit meer spieken"LOOP

END

1. CLS maakt her scherm leeg 2. teller%=1 maakt de variabele teller% aan en stopt er het getal 1 in 3. DO WHILE start een DO-WHILE-LOOP-lus. De lus wordt alleen uitgevoerd als de

voorwaarde (teller% <= aantal%) waar is. 4. PRINT zet een regel tekst op het scherm 5. LOOP geeft aan dat die het einde van de lus is, en dat die afhankelijk van de

voorwaarde opnieuw wordt uitgevoerd. 6. END beeindigd het programma

Ik hoop dat het duidelijk is waarom lussen zo belangrijk zijn. Behalve strafregels schrijven kun je er namelijk ook een hoop andere interessante dingen mee doen.

De DO-LOOP-WHILE-lus

Hoewel deze lus veel lijkt op de vorige is er een belangrijk verschil. De voorwaarde wordt niet vooraf gecontroleerd, maar pas na het uitvoeren van de lus. Dat zorgt ervoor dat de lus in ieder geval 1x wordt uitgevoerd, in tegenstelling tot de DO-WHILE-LOOP-lus, die minimaal 0x wordt uitgevoerd. Voorbeeld:

CLS

DOPRINT "Ik zal nooit meer spieken"

Page 14: members.home.nlmembers.home.nl/nlajast/school/Basic tutorial.docx  · Web viewIn beide gevallen zal op de plek waar test.bas staat, ... Dan pas word het programma wat jegemaakt hebt

INPUT "Zal ik nog een strafregel laten zien? (J = Ja, N = Nee)", antwoord$LOOP WHILE (antwoord$="J")

END

1. CLS maakt het scherm leeg 2. DO geeft aan dat hier een lus begint 3. PRINT laat een strafregel zien 4. INPUT vraagt of het programma nog een strafregel moet laten zien 5. LOOP WHILE geeft aan dat de lus herhaalt gaat worden, maar alleen als antwoord$

gelijk is aan J 6. END beeindigd het programma

De DO-UNTIL-LOOP-lus en de DO-LOOP-UNTIL-lus

Als volleerd programmeur vind ik deze 2 lussen zeer onhandig en, om eerlijk te zijn, vrij dom. Het verschil tussen de DO-UNTIL-LOOP-lus en zijn DO-WHILE-LOOP-tegenhanger is namelijk dat bij DO-WHILE-LOOP de lus net zolang doorgaat als de voorwaarde waar is, en de DO-UNTIL-LOOP-lus gaat net zolang door als de voorwaarde onwaar is. Voor zover ik weet bestaat er niet zo'n soortegelijke tegenstelling in de grote programmeertalen, deze hanteren allemaal maar 1 "type".

Echter, alles wat je met DO-WHILE-LOOP kunt kun je ook heel eenvoudig met DO-UNTIL-LOOP door eenvoudig weg het teken in de voorwaarde "om te draaien" of gebruik te maken van NOT. Het is echter wel belangrijk te weten dat er een verschil is tussen WHILE en UNTIL, omdat je ze tegen kunt komen in programma's van anderen.

Even voor de duidelijkheid: DO-UNTIL-LOOP is dus de tegenhanger van DO-WHILE-LOOP en DO-LOOP-UNTIL is de tegenhanger van DO-LOOP-WHILE.

Dit was de laatste BASIC beginnerstutorialDit was de 'lussen in BASIC' tutorial. Ik hoop dat je er iets van hebt opgestoken, dit was de laatste BASIC beginnerstutorial. Als je alles hiervoor snapt kun je jezelf eindelijk programmeur noemen: je begrijpt de basisbeginselen van het programmeren en je kunt er in ieder geval in 1 taal een programma mee maken

Qbasic is een programma waar jemee kan programmeren. De taal waar

Page 15: members.home.nlmembers.home.nl/nlajast/school/Basic tutorial.docx  · Web viewIn beide gevallen zal op de plek waar test.bas staat, ... Dan pas word het programma wat jegemaakt hebt

je in gaat programmeren is "BASIC".Het is een makkelijke programmeertaal.maar wel een hele leuke.Het programma is gemaakt door Bill Gatesen Paul Allen in 1978.Maar nu genoeg gepraat over de geschiedenisvan QBasic, laten we beginnen.

Laten we beginnen met echt het simpele werk,om er lekker in te komen.Als je een programma hebt uitgetypt druk dan opde toets F5. Dan pas word het programma wat jegemaakt hebt uitgevoerd.

We beginnen met het commando: PRINTPRINT zorgt ervoor dat iets afgedrukt word ophet scherm. bijvoorbeeld:

PRINT "Hallo iedereen!!"PRINTPRINT "Dit is mijn eerste programma !!!"

dat word dan als volgt op je beeldscherm afgedrukt.

Hallo iedereen!!

Dit is mijn eerste programma !!!

Zo kan je dus heel leuk en simpel text invoeren, en uitvoeren.Maar natuurlijk is dat niet het enige.Doe dit maar eens.

PRINT 15 + 20

dat word dan op je uitvoerscherm: 35Als je er voor wilt zorgen dat alles op hetscherm komt doe je dit.

Page 16: members.home.nlmembers.home.nl/nlajast/school/Basic tutorial.docx  · Web viewIn beide gevallen zal op de plek waar test.bas staat, ... Dan pas word het programma wat jegemaakt hebt

PRINT "15; "+"; 20; "="; 15 + 20

dat word:

15 + 20 = 35

Het eerste gedeelte: "15; "+"; 20; "="; zorgt voorhet uitvoer op het scherm. Het anderedat erachter staat, zorgt ervoor dater een rekensom van word gemaakt.

Alleen nu wil je zelf eigenlijk ook wel wat getallen invoeren.Dat doe je met de commando: INPUTHet is een hele simpele commando.In het volgende voorbeeld kan je zelf getallen invoeren.

INPUT AINPUT BPRINT A; "+"; B; "="; A + B

Nu word er gevraagd naar een waarde voor A en eenwaarde voor B, als je er een getal hebt heengezetworden de twee getallen samen opgeteld en komt er eenantwoord uit.

Bijvoorbeeld: als je als waarde A 10 hebt gedaanen waarde B 15 dan komt er op je beeldscherm het volgende

10 + 15 = 25

Bij qbasic kan je niet zomaar X gebruiken om te vermenigvuldigen, daar heb je * voor nodig.

Page 17: members.home.nlmembers.home.nl/nlajast/school/Basic tutorial.docx  · Web viewIn beide gevallen zal op de plek waar test.bas staat, ... Dan pas word het programma wat jegemaakt hebt

Omdat qbasic toch best wel veel rekenwerk is komenhier een paar tekens met het rekenen.

Machtsverheffing = ^ , 34 word (3x3x3x3)

Vermenigvuldigen = * , niet x Delen = / , niet : Optellen = + Aftrekken = -

_5_ word: 5 / (2 * 4)2x4

5+3 4 + 6 word: ((5 + 3)/ 4 + 6) / 2 ^ 3 =

Als je de wortel uit een getal wil halen, moet je dezeDe SQR commando gebruiken.

SQR(4) Dit trekt de wortel uit het getal 4

Als je wil dat een uitgerekend getal een heel getal wordBebruik je de commando INT

INT(2.5) word 2INT(2.5 + 0.5) word 3, die 0.5 gaat het getal goed afronden.

Iets wat best wel handig is voor sommige programma'sis, het dobbelstenen simulatiedat doe je zo:

RANDOMIZEPRINT INT(6 * RND) + 1PRINT INT(6 * RND) + 1

Page 18: members.home.nlmembers.home.nl/nlajast/school/Basic tutorial.docx  · Web viewIn beide gevallen zal op de plek waar test.bas staat, ... Dan pas word het programma wat jegemaakt hebt

PRINT INT(6 * RND) + 1END

De commando RND zorgt voor een soort RANDOMRandom is dat er een gok blijft welke gekozen word.De computer kiest welke er gekozen word.Doe de volgende oefening maar eens.

RNDRNDRND

Als je op de toets F5 drukt komt dit op het scherm.

.7055475

.533424

.5795186

Verschillende getallen. Random dus.met de commando RANDOMIZE kan de computer zelfuitkiezen welke hij doet. Dit is leuk voor gokspelletjes.

Het volgende commando waar we het over hebben is: REMmaar wel voor eigen handigheid.Nu word er een voorbeeld gegeven hoe je een leuke menu'tjemaakt in QBasic.

REM <<< Een leuke menu >>>CLS 'Dit zorgt ervoor dat scherm schoon wordPRINT "Een leuk Menu'tje" 'hier komt de uitvoerPRINTPRINT "1.) Hallo zeggen"PRINT "2.) Stoppen"INPUT "Keuze"; Keuze 'hier word vraag gesteld

SELECT CASE Keuze

CASE 1PRINT "Hallo, Hallo, Hallo, HalloEND 'hierdoor eindigd het programma

Page 19: members.home.nlmembers.home.nl/nlajast/school/Basic tutorial.docx  · Web viewIn beide gevallen zal op de plek waar test.bas staat, ... Dan pas word het programma wat jegemaakt hebt

CASE 2PRINT "Tot ziens!"END

CASE ELSE 'Dit word uitgevoerd als je andere cijfer typtPRINT "Je hebt het verkeerde nummer"

END SELECT

We hebben nu gewerkt met de CASE Programmering.Het is een heel simpel en effectieve manier vanprogrammeren. Je begint met de commando: SELECT CASE *.*Bij *.* moet staan de variable van de INPUT.Dan kan je pas CASE 1, 2 enz actieveren.Eindig altijd met END SELECT anders werkt het niet.Het is een heel simpel leuk en effectieve manier van programmeren.

We zijn nu eigenlijk al best wel ver heen. En jeweet nu al best wel redelijk wat van QBasic programmerenLaten we nog een leuk programma'tje maken. Dit is eenklein spelletje. Een soort raadspelletje.

PRINT "Het Raadspelletje"PRINT PRINT "Probeer het getal te vinden tussen de 1 en 10"

INPUT "Eerste kans"; nummerIF nummer = 4 THEN GOTO goedPRINT "Jammer, je had het verkeerde nummer!"

INPUT "Tweede kans"; nummerIF nummer = 4 THEN GOTO goedPRINT "Jammer, je had alweer het verkeerde nummer!"

INPUT "Laatste kans"; nummerIF nummer = 4 THEN GOTO goedPRINT "Helaas, het goede getal was 4"ENDgoed: PRINT "Je hebt het goede getal gevonden !!!!"

Iets wat heel er belangrijk is in programmeren,is de LOOP, oftewel de herhalingsstructuur.In haast iedere programma zit wel zoiets.Je hebt verschillende programmerings LOOPS, ikgeef je er een paar voorbeelden van.We beginnen met een hele simpele LOOP.

Page 20: members.home.nlmembers.home.nl/nlajast/school/Basic tutorial.docx  · Web viewIn beide gevallen zal op de plek waar test.bas staat, ... Dan pas word het programma wat jegemaakt hebt

FOR I = 1 TO 10INPUT "Voer een getal in", GetalPRINT Getal, Getal ^ 2, Getal ^ 3NEXT I

Dit is een hele simpele LOOP.Je moet het zelf even uitvoeren in Qbasic,om het resultaat te zien.wat hier gebeurd is als volgt het getal word een keer door 2 gekwadrateerd en door 3.De NEXT I is dat het nog een keer word opgestart.Dit stukje text kan je in heel veel programma'sgebruiken.

Er is nog een hele simpele LOOP.Ik denk dat dit een van de simpelste is.

CLSDOINPUT "Toets getal in ", Getal%WHILE Getal% <> 0PRINT "Getal%, Getal% ^ 2, Getal% ^ 3LOOP UNTIL Getal = 0END

Alles wat tussen de DO...LOOP UNTIL zitword weer herhaald.ALs je het getal 0 invoert stopt hetprogramma. anders gaat hij oneindig door.

CLSFOR I% = 1 TO 5PRINT I%;NEXT I%END

Wat dit programma doet is eigenlijk wel duidelijk. lijkt mij.Iets wat toch eigenlijk ook niet onbelangrijk is,is een bestandje openen. Daar heb je veschillendemanieren voor. Bijvoorbeeld: de commando SHELLdie commando gebruik je zo.

SHELL "C:\WINDOWS\WIN.COM"

Page 21: members.home.nlmembers.home.nl/nlajast/school/Basic tutorial.docx  · Web viewIn beide gevallen zal op de plek waar test.bas staat, ... Dan pas word het programma wat jegemaakt hebt

Als je bijvoorbeeld windows wil opstarten.Dan kan je ook nog andere dingen doen.Bijvoorbeeld als je ze alleen wil lezen.of ze juist wil schrijven.Dan komen we weer in de standaard regels.

OPEN "ORDER" FOR INPUT AS #1OPEN "ARTIKEL" FOR OUTPUT AS #2

De eerste OPEN-opdracht opent buffernummer 1 alseen invoerbuffer voor het bestand met de naam ORDER.We kunnen nu alleen records uit dit bestand inlezen enniet wegschrijven. Het bestand ORDER moet natuurlijk welin het 'actieve' externe geheugen staan, anders krijgen wede foutmelding 'file not found' (bestand niet gevonden)We kunnen geen record laten lezen, die er niet eens is.

De tweede opdracht opent een uitvoerbuffer voor het bestandmet de naam ARTIKEL. We wijzen aan dit bestand de buffer metnummer 2 toe. Naar dit bestand kunnen we alleen records wegschrijven, we kunnen er geen records uit inlezen.Nu komt er een voorbeeld:

REM < OPSLAAN EXAMENRESULTATEN > OPEN "C:\CURSUS\EXAMEN" FOR OUTPUT AS #1INPUT "NUMMER EXAMENKANDIDAAT"; ExNrWHILE ExNr <> 999999!INPUT "Behaalde Cijfer"; CijferPRINT #1; ExNr; CijferPRINTINPUT "NUMMER EXAMENKANDIDAAT"; ExNrWENDPRINT #1,999999!; 0CLOSE #1END

Je kan met Qbasic ook geluid maken, nu is dat niet zomooi geluid, maar het hoort best wel grappig.Je geluid word bespeeld met: ja echt waar een PC-SPEAKERdus dat is niet al te best. Maar toch kan je er wel watmee.Gebruik de commando BEEP maar eens en druk dan op F5,je krijgt een luide piep te horen. ligt eraan hoe jegroot de speakers zijn in je pc. Nu is dit niet het enige

Page 22: members.home.nlmembers.home.nl/nlajast/school/Basic tutorial.docx  · Web viewIn beide gevallen zal op de plek waar test.bas staat, ... Dan pas word het programma wat jegemaakt hebt

wat je ermee kunt. Je kan ook bijvoorbeeld dit doen.

SOUND 100, 10

nu krijg je een geluidje. De 100 staat voor de hoogte vande toon en de 10 is de lengte van het geluidje.Je kan nu al een leuk muziekje maken.

SOUND 100, 10SOUND 200, 15SOUND 300, 20SOUND 400, 25SOUND 1000, 33SOUND 1046, 22SOUND 500, 40

Dan kan je ook nog een ander leuk muziekje maken.Dit zul je vast wel herkennen. Het is van beethoven.

REM Beethoven's Muziek stukM$ = "MBT12OP2P8L8GGGL2E-P24P8L8FFFL2D"PLAY M$END

Het volgende programma berekend voor een in tetoetsen bedrag en rentepercentage de rente- eneindbedragen bij looptijden van 1, 2, 3, 4 en 5 jaar.De resultaten worden naar een printer gestuurd.

REM <<< Berekening eindbedrag bij samengestelde interest >>>INPUT "Wat is het bedrag"; BeginINPUT "Wat is het rente-percentage"; RenteLPRINT "Het aanvangsbedrag is f. "; BeginLPRINT "De rente is per jaar"; Rente; "%"LPRINTLPRINT "Looptijd", "Rentebedrag", "Eindbedrag"LPRINTEind = BeginFOR J = 1 TO 5Eind = Eind + Eind * Rente / 100

Page 23: members.home.nlmembers.home.nl/nlajast/school/Basic tutorial.docx  · Web viewIn beide gevallen zal op de plek waar test.bas staat, ... Dan pas word het programma wat jegemaakt hebt

Eindafg = INT(Eind * 100 + .5) /100LPRINT J, Eindafg - Begin, EindafgNEXT J

De commando LPRINT zorgt ervoor dat het naar de printergestuurd word. Eigenlijk werkt LPRINT hetzelfde als PRINT.alleen komt het nu niet op het scherm maar op je printer.

EINDE!

Dit was dan de TUTORIAL van Qbasic.Ik hoop dat je er wat van geleerd hebt.Ik zou het heel erg leuk vinden als jullieer een mening over willen geven. bijvoorbeeld:of het makkelijk te begrijpen was, en het leukwas. Dat zou ik heel erg leuk vinden.mijn e-mail adres= [email protected]