|
Post by Marco Kurvers on Jan 23, 2024 20:17:56 GMT
Hier komen leuke voorbeelden voor beginners in Liberty BASIC.
Kopieer de code en voer het uit. Probeer te begrijpen wat er staat.
Veel plezier.
|
|
|
Post by Marco Kurvers on Jan 23, 2024 20:48:51 GMT
Met het commando PRINT kun je op het venster tekst en getallen afdrukken. De tekst en getallen noemen we waarden.
Voorbeeld 1: rekenen door een som op te geven achter PRINT.
PRINT 20 + 20
Voorbeeld 2: tekst afdrukken
PRINT "Dit is een test op het venster."
Voorbeeld 3: tekst en getallen samen afdrukken. Dit kan op verschillende manieren.
PRINT "Het getal is: "; 50 PRINT "Het getal is: ", 50 PRINT "Het getal is: " + STR$(50)
De puntkomma zorgt ervoor dat alles wat erachter staat afgedrukt kan worden. De komma zorgt voor extra kolomruimte achter de tekst. Met gebruik van het plus + symbool moet het getal in de STR$() functie meegegeven worden. Tekst en getallen kunnen niet samen opgeteld worden.
Zie meer hierover in mijn Liberty BASIC boek.
|
|
|
Post by Marco Kurvers on Jan 24, 2024 19:46:11 GMT
Hier een leuk voorbeeldje met keuze maken en de lussen.
Bonusscore bepalen in een FOR lus.
'*** Raad getal voor bonusscore'
'input "Kies getal tussen 1 en 50: "; getal do input "Kies getal tussen 1 en 50: "; getal if getal > 0 and getal <= 50 then 'if getal <= 50 then comp = int(rnd(0) * 49) + 1 'comp = 20 score = 0 for i = 1 to 100 + (getal = comp) score = score + 1 next i print "Score: "; score, "Comp: "; comp 'end if else if getal > 50 then print "Onjuist getal." end if 'loop while getal > 0 loop until getal = 0
|
|
|
Post by Marco Kurvers on Jan 28, 2024 11:22:03 GMT
Een FOR lus is handig om de start en het eind conditioneel te controleren, zoals bovenstaand programma laat zien. Eerder de lus verlaten met een conditie kan op verschillende manieren. De afbeelding hier laat zien wat niet aanbevolen is, maar wel werkt. Denk erom dat ook de ontsnapwaarde geprint wordt. In plaats van de lusteller te wijzigen, kun je ook ontsnappen met een EXIT FOR. for i = 1 to 20 if i > 10 then exit for print i next i
Er zijn meerdere wegen naar Rome, maar als conclusie kunnen we zien dat een WHILE lus het beste is om eruit te gaan. i = 1 while i <= 20 or i <= 10 print i i = i + 1 wend
Natuurlijk ziet dit er raar uit. Twee condities met variabele i. Je kunt ook dit doen: input "Getal voor eruit: "; getal i = 1 while i < getal print i i = i + 1 wend
Wanneer je eruit bent, dan zal variabele i niet gelijk zijn aan getal. Een oplossing is de conditie te wijzigen in kleiner of gelijk aan <=. Alleen natuurlijk als je het wilt.
|
|
|
Post by Marco Kurvers on Jan 28, 2024 11:24:00 GMT
Bij bovenstaande FOR lus om eruit te gaan met een IF statement, liet ik zien dat het getal om mee te ontsnappen ook geprint wordt. Dit kan vermeden worden. Weet je de oplossing?
|
|
|
Post by Marco Kurvers on Feb 21, 2024 21:05:50 GMT
Hier is een voorbeeldprogramma hoe verschillende IF statements werken.
Experimenteer er eens mee. Het is een spel oefening. Kun je het getal van de computer raden?
input a input b input c
r = int(rnd(0) * 10) + 1
print "a = "; a, "b = "; b, "c = "; c print "Computer: "; r
'if a = 2 and b = 1 and c = 3 and r = 8 then a$ = "Hoera, de goede" 'if a = 2 and b = 1 and c = 3 then a$ = "Zonder computer"
if a = 2 and b = 1 and c = 3 then if r = 8 then a$ = "Hoera, de goede" else a$ = "Zonder computer" end if end if
print a$
'if a = 1 and b = 2 and c = 3 then gevonden = 1 'if a = 4 and b = 1 and c = r then gevonden = 1 'if a = 8 and b = 2 and c = 6 then gevonden = 1
if (a = 1 and b = 2 and c = 3) or _ (a = 4 and b = 1 and c = r) or _ (a = 8 and b = 2 and c = 6) then gevonden = 1 else gevonden = 0 end if print "Gevonden: "; gevonden
if a = 5 and b = 10 then print "Ook geraden" end if 'wie het leuk vinden om te weten gevonden = (a = 1 and b = 2 and c = 3) or _ (a = 4 and b = 1 and c = r) or _ (a = 8 and b = 2 and c = 6)
'... overige code
if gevonden then _ print "Gevonden: "; gevonden
|
|
|
Post by Marco Kurvers on Aug 1, 2024 20:34:44 GMT
Hoe kunnen we in Liberty BASIC twee waarden omdraaien? Met programmeren kun je allerlei kanten op. Hieronder is een voorbeeld hoe je het op drie manieren kunt doen.
x = 2 y = 3 print x, y gosub [swap] print "Met de [swap] label: ", x, y call Swap x, y print "Met de Swap subroutine: ", x, y a$ = Swap$(x, y) x = val(word$(a$, 1, ",")) y = val(word$(a$, 2, ",")) print "Met een Swap functie en de Word$() functie: "; x, y end
[swap] c = x x = y y = c return
sub Swap byref x, byref y c = x x = y y = c end sub
function Swap$(x, y) 'c = x 'x = y 'y = c Swap$ = y; ","; x end function
De eerste mogelijkheid kan voor velen begrijpelijk zijn. Een oude manier om met een GOSUB en een RETURN de waarden te swappen. De tweede manier voert een subroutine uit met meegegeven waarden. Het verschil is nu dat de variabelen lokaal zijn en de gewijzigde waarden moeten met een BYREF (bij referentie) weer bij de argumenten komen. De derde manier is een mogelijkheid die voor sommigen een beetje lastig is om te begrijpen. In deze functie hoef je nu niet meer te swappen, vandaar dat het in commentaar staat. Door de gegeven waarden omgewisseld in een string te retourneren en ze met een WORD$() functie uit de string te halen, betekent dit een hele mooie techniek. Een manier die we dankzij de WORD$() functie kunnen toepassen om meer waarden tegelijk te retourneren. Deze WORD$() functie is voor dit soort doeleinden erg handig en bestaat alleen in Liberty BASIC.
Merk op dat er in de functiebody geen STR$() functie wordt gebruikt. Met gebruik van een puntkomma kun je zonder problemen een numerieke variabele samenvoegen aan een string of gewoon toekennen aan een stringvariabele. Houd er rekening mee dat dit niet werkt zonder toevoeging van een string. Bijvoorbeeld, als je zegt Swap$ = y dan krijg je wel een foutmelding.
|
|