~~ODT~~
BASIC staat voor Beginner's All-purpose Symbolic Instruction Code. Dit is een programmeertaal die speciaal werd ontwikkeld om mensen die geen informatica gestudeerd hebben, in te leiden in het programmeren. Wil je meer weten over Basic zelf, neem dan een kijkje hier BASIC
Elke taal, ook een gesproken taal, bvb. Nederlands, Frans of Engels, heeft een manier om de woorden en de zinnen op te maken. Dit is zo ook in de wereld van de computers. Om met eigen woorden te zeggen, is de syntax van een taal het geheel van regels die je moet volgen om die taal te kunnen praten.
Een computerprogramma kan je vergelijken met een tekst die uitsluitend uit opdrachten bestaat. De opdrachten zijn dan in de programmeertaal geschreven. Een reeks opdrachten die samen één geheel vormen noem je een procedure of een functie.
Opdrachten of statements kunnen de volgende elementen bevatten: sleutelwoorden, variabelen, constanten, operatoren, functies.
Wil je iets meer weten over 'syntax'. Kijk hier dan maar eens: Syntax
BASIC-256 programma's bestaan uit een reeks van opdrachten die van elkaar gescheiden worden door een nieuwe lijn. De manier waarop een lijn wordt opgeschreven moet voldoen aan een paar regels. De opdrachten worden na elkaar uitgevoerd.
Bvb. als je dit als opdrachten meegeeft:
print "Dit is de eerste lijn" print "En dit is de tweede."
dan toont de computer het volgende:
Dit is de eerste lijn En dit is de tweede.
Je hebt ook de mogelijkheid om de uitvoering van het programma te beïnvloeden, aan te sturen, door een aantal speciale operatoren:
Een goed programmeur neemt ook de tijd om zijn programma te voorzien met de nodige commentaar. Hierdoor wordt het mogelijk om een programma met anderen te delen. Neem dus de goede gewoonte aan om je programma's te voorzien van zinnige commentaar. Zelfs als je de enige bent die je programma's gaat bewerken. zal jij nog weten wat je 2 jaar geleden hebt geprogrammeerd en waarom?
Dit doe je door # toe te voegen.
# Dit programma zal 2 lijnen printen print "1st line" print "2nd Line"
Een programma is een lijst van opdrachten die we aan de computer meegeven en die hij moet uitvoeren. Af en toe geven we dingen mee waarmee de computer iets moet doen. Een van de dingen die we hem kunnen meegeven zijn cijfers. We kunnen bvb een programma maken om de computer een som te laten uitvoeren. Dan moet de computer ook wel minstens 2 cijfers van ons meekrijgen.
Een numerieke constante is voor de BASIC256 wat wij als cijfer beschouwen. Dit cijfer blijft altijd dezelfde constante waarde hebben. Het kan niet veranderen. 5 blijft 5.
Een numerieke constante is :
zo schrijf je een numerieke constante in BASIC256 ( 'print' is de opdracht naar de computer' )
print 3 + 56 print 2.12+5 print 0b001 print 0o177 print 0xff print 0o177 -45
Dit is het resultaat :
PS. Wist je niet cijfers ook met een - konden beginnen of dat er een komma kunnen bevatten? Niet erg. Dit leer je later wel met rekenen of wiskunde. Vandaag heb je het nog niet nodig in het aanleren van BASIC.
PS. Vind je binaire, octaire of hexadecimale cijfers ook maar niks? Niet erg, dat leer je later ook wel.
String is een Engels woord en betekent “een reeks karakters”. Een karakter is zoveel als een letter, een getal, een leesteken.
Een string constante blijft ook zijn waarde behouden. Het verandert niet. “Hello World” blijft “Hello world”.
Als je een string gebruikt in BASIC256 moet je beginnen met het dubbel aanhalingsteken “ en ook eindigen met hetzelfde teken. Doe je dat niet, … dan geeft de computer een foutmelding of erger nog, dan doet de computer iets wat niet voorzien had.
Zoals je kan zien, wordt een string constante op een andere manier getoond in BASIC356( andere kleur).
Dit zijn correcte String Constanten
"" ( een lege string) " " ( een string die een spatie bevat) "3 + 56" (neen, dit is geen som, dit is een string) "Hello World!" (zeer beroemde string voor iemand die leert programmeren" "Ik ben 9 jaar" "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque vitae feugiat dolor"
Numerieke en String constanten kunnen niet veranderen. Ze hebben de waarde die we ze meegeven. Maar soms moet de computer iets onthouden om later terug te nemen. En computer onthoudt gegevens in het geheugen in benoemde lokaties.
Is de inhoud van zo'n lokatie veranderbaar dan heb je een variabele.
Een variable krijgt een naam. Die naam beslis je zelf. Daarna zeg je aan de computer wat er in de variabele zit. Dat kan zowel een numerieke waarde zijn als een string.
De naam van een variabele:
Dit zijn geldige variabelen
Naam$ Naam123$ naam$ n12er
Dit zijn slechte variabelen
Naam ( indien je de bedoeling hebt om er een naam in te zetten) 123Naam$ if$ (dit is een sleutelwoord) if ( dit is een sleutelwoord)
Na de naam van de variabele zet je het gelijkteken =
Daarna geef je de waarde mee die je aan je variabele wil geven.
Je kan natuurlijk de waarde van de variabele verschillende keren weergeven. Dan neemt de computer wel de laatste waarde die je aan de variabele hebt meegegeven.
meegeven van een waarde aan een variabele
Naam$="Jip en Janneke"
In dit voorbeeldje gebruiken we 4 variabelen en geven we hen elk een waarde. Een variabele kan ook samengesteld worden door andere variabelen. Zoals je ziet is een variabele hoefdlettergevoelig. naam$ en Naam$ zijn niet dezelfde.
Naam$ = "Jan Peeters" naam$ = "Jip en Janneke" n12SEZsd$= 23 n12SEZsd$= 100 alle_namen$=Naam$ + " " + naam$ Print Naam$ Print Print alle_namen$ Print Print n12SEZsd$
Een array is een Engels woord dat rij of reeks betekent. Bij het programmeren van computers betekent het een lijst van elementen waarvan ieder element in die array een unieke index waarmee heeft dat dat element aangeduid.
Je kan bvb een array hebben van je boeken. Die array bevat de titels van je boeken. Om een array uit te drukken gebruiken we meestal [] Stel dus dat je een lijst van boeken hebt :
Je kan dan verwijzen naar je tweede boek als Boek[2] en krijgt dan van de computer “Reis rond de wereld in 80 dagen” als antwoord.
Arrays kunnen dus ook in 2 dimensies bestaan. Dan kna je naar een element verwijzen door de 2 indexen mee te geven
Array wordt op de volgende manier gedefinieerd.
Arrays zijn toegewezen volgens de DIM commando of met behulp van ReDim commando. Zij kunnen numerieke of string informatie bevatten.
Toegang tot specifieke elementen in een array wordt bereikt door vierkante haken te gebruiken samen met de gehele offset van het element, te beginnen vanaf nul.
Arrays kunnen ook worden gedimensioneerd en geopend met behulp van twee dimensies.
Array grootte kunnen ook worden verkregen met behulp van [?] [?] En [,?] Op het einde van de array variabele.
dim z(5) z = {1, 2, 3, 4, 5} print z[0] + " " + z[4]
en geeft dan
1 5
Voor een volledige syntax, ga naar Dim
Een anonieme array is een reeks van numerieke waarden of een set van tekst-waarden, gescheiden door komma's, en tussen accolades {}.
Een anonieme array kan worden gebruikt in plaats van een array variabele, of het kan worden gebruikt om toe te wijzen aan een array variabele.
De operatoren +, -, *, / en ^ worden gebruikt voor het optellen, aftrekken, vermenigvuldigen, delen, machtsverheffen van floating point-en integer getallen. Geldige operanden zijn numerieke constanten en / of numerieke variabelen.
De operatoren %, \, &, |, en ~ worden gebruikt voor modulo, integer delingen, bitwise en bitwise of en bitsgewijze negatie (niet) van integer uitdrukkingen te berekenen. Floating point getallen worden omgezet naar een integer waarde voor de berekening.
Logische operatoren zijn gebaseerd op de Booleaanse algebra. Het resultaat van een booleaanse bewerking heeft slechts twee mogelijke resultaten: waar of onwaar.
In verschillende talen die in de wiskunde en informatica worden gebruikt, bestaan er verschillende aanduidingen (tekens) voor de booleaanse operatoren.
resultaat = 'NOT
' A
Het resultaat is tegenovergesteld. “NOT A” is onwaar als “A” waar is en als “A” onwaar is, is “NOT A” waar. Dit is een unaire (unary) operator, dat wil zeggen, met slechts een parameter. Alle anderen in deze lijst zijn binaire (binary) operatoren.
A | R |
---|---|
0 | 1 |
1 | 0 |
resultaat = A 'AND
' B
Het resultaat is waar als zowel “A” als “B” waar zijn, in alle andere gevallen is het resultaat onwaar.
A | B | R |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
resultaat = A 'OR
' B
Het resultaat is waar als “A” waar is of als “B” waar is of als beide waar zijn. Het resultaat is onwaar als zowel “A” als “B” onwaar zijn.
A | B | R |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
resultaat = A 'XOR
' B
Het resultaat is waar als “A” waar is en “B” onwaar, of als “A” onwaar is en “B” waar. Als “A” en “B” beide waar zijn of beide onwaar zijn is het resultaat onwaar. Deze functie is equivalent aan (A AND NOT B) OR (B AND NOT A)
A | B | R |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
Volgorde van Operatoren | ||
---|---|---|
Volgorde | Operator | Kategorie/Beschrijving |
1 | ( ) | Groupering |
2 | ^ | Exponent |
3 | - ~ | Unary Minus en Bitwise Negatie (NOT) |
4 | * / \ | Vermenigvuldiging and Deling |
5 | % | Modulo |
6 | + - | Som, Samentrekking, and Verschil |
7 | & | | Bitwise EN of Bitwise OF |
8 | < ⇐ > >= = <> | Vergelijkingen |
9 | NOT | Unary Not |
10 | AND | Logische EN |
11 | OR | Logische OF |
12 | XOR | Logische Exclusive OF |
abs ( uitdrukking )
Dit is een wiskundige functie.
Geeft de absolute waarde (wat is dat nu weer) terug van een numerieke uitdrukking.
Hier kan je een beetje oefenen… absolute waarde
acos ( uitdrukking )
Dit is een wiskundige formule, meer bepaald uit de Goniometrie
De functie berekent de arccosinus van uitdrukking. De hoek moet in radianen worden meegegeven (0 tot 2pi).
de functie wordt ook af en toe als cos-1 genoteerd.
Meer informatie over deze functie vind je op de wiki : acos
print acos(.1215)
asc ( uitdrukking )
Verandert het eerste karakter van een string van uitdrukking naar een getal die de ASCII waarde weergeeft.
Asc | Chr | Asc | Chr | Asc | Chr | Asc | Chr | Asc | Chr | Asc | Chr |
---|---|---|---|---|---|---|---|---|---|---|---|
32 | SPATIEBALK | 48 | 0 | 64 | @ | 80 | P | 96 | ` | 112 | p |
33 | ! | 49 | 1 | 65 | A | 81 | Q | 97 | a | 113 | q |
34 | “ | 50 | 2 | 66 | B | 82 | R | 98 | b | 114 | r |
35 | # | 51 | 3 | 67 | C | 83 | S | 99 | c | 115 | s |
36 | $ | 52 | 4 | 68 | D | 84 | T | 100 | d | 116 | t |
37 | % | 53 | 5 | 69 | E | 85 | U | 101 | e | 117 | u |
38 | & | 54 | 6 | 70 | F | 86 | V | 102 | f | 118 | v |
39 | ' | 55 | 7 | 71 | G | 87 | W | 103 | g | 119 | w |
40 | ( | 56 | 8 | 72 | H | 88 | X | 104 | h | 120 | x |
41 | ) | 57 | 9 | 73 | I | 89 | Y | 105 | i | 121 | y |
42 | * | 58 | : | 74 | J | 90 | Z | 106 | j | 122 | z |
43 | + | 59 | ; | 75 | K | 91 | [ | 107 | k | 123 | { |
44 | , | 60 | < | 76 | L | 92 | \ | 108 | l | 124 | | |
45 | - | 61 | = | 77 | M | 93 | ] | 109 | m | 125 | } |
46 | . | 62 | > | 78 | N | 94 | ^ | 110 | n | 126 | ~ |
47 | / | 63 | ? | 79 | O | 95 | _ | 111 | o | 127 |
print asc("A") print asc("blauw")
toont dan
65 98
asin ( uitdrukking )
Berekent de arcsinus (boogsinus) van uitdrukking. De hoek moet in radianen worden meegegeven (0 tot 2pi).
de functie wordt ook af en toe als sin-1 genoteerd. Meer informatie over deze functie vind je op de wiki : asin
print asin(.1215)
atan ( uitdrukking )
Dit is een wiskundige formule, meer bepaald uit de Goniometrie
De functie berekent de arctangens of boogtangens van uitdrukking. De hoek moet in radianen worden meegegeven (0 tot 2pi).
de functie wordt ook af en toe als tan-1 genoteerd.
Meer informatie over deze functie vind je op de wiki : atan
print atan(.1215)
ceil ( uitdrukking )
Afronden naar boven (ceil is het Engelse woord voor Plafond).
Het getal van de uitdrukking wordt daarbij afgerond naar het laagste gehele getal dat groter is dan of gelijk is aan het oorspronkelijke getal.
changedir uitdrukking
changedir ( uitdrukking )
Met deze functie verandert de huidige 'werk' directory naar het pad zoals opgegeven in de uitdrukking.
Voor alle systemen (Windows,Linux) geldt dat een forward slash (/) de verschillende folders van elkaar scheidt.
changedir komt van het Engelse “Change Directory” (verander van folder).
print currentdir ( ) //om huidige actieve directory te zien changedir "./basic" print currentdir ( ) // om de nieuwe actieve directory te zien
wordt dan
/home/guest /home/guest/basic
chr ( uitdrukking )
Verandert een geheel getal van uitdrukking naar een enkel karakter string uitdrukking op basis van de ASCII waarde van het getal. Zie ook asc Voor de complete ASCII conversietabel.
print chr(66)+chr(111)+chr(111)+chr(33)
toont dan
Boo!
circle x,y,r
Hiermee ga je dus een cirkel tekenen die het middelpunt heeft op de x,y coördinaat in het grafisch venster, met een straal van r
color yellow rect 0,0,300,300 color red circle 120,120,80
clickb
clickb ( )
De functie laat weten welke knop de gebruiker het laatst aangeklikt heeft in het 'grafische venster'. En alleen daar dus!
Er wordt 0 teruggegeven als er niet werd geklikt. Indien verschillende knoppen samen werden ingedrukt,dan wordt de som van die knoppen gegeven.
Resultaten | |
---|---|
Waarde | Welke muisknop |
0 | Gen enkele |
1 | Links |
2 | Rechts |
4 | Midden |
# wis de vorige muiskliks weg clickclear # wacht tot de gebruiker de muis aanklikt print "Klik de muis in het grafisch venster" while clickb = 0 pause .01 endwhile # Toon waar de gebruiker heeft geklikt print "U klikte op de volgende plaats in het grafisch venster (" + clickx + "," + clicky + ")" # Toon welke knop de gebruiker heeft geklikt if clickb=0 then knop$="geen" if clickb=1 then knop$="linkse" if clickb=2 then knop$="rechtste" if clickb=4 then knop$="middenste" print "U klikte op de " + knop$ + " knop."
Het lukt maar niet om iets 2 knoppen tegelijk aan te klikken. Lukt het u?
clickclear
clickclear ( )
De functie zet de waarden van ClickB, Clickx, en Clicky op nul om zo de volgende klik correct te kennen.
zie voorbeeld bij clickb
clickx
clickx ( )
De functie geeft de x-coördinaat terug van de plaats waar u het laatst in het grafisch venster hebt geklikt. De x-coördinaat is de horizontale as van links naar rechts.
Zie voorbeeld bij Clickb.
clicky
clicky ( )
De functie geeft de y-coördinaat terug van de plaats waar u het laatst in het grafisch venster hebt geklikt. De y-coördinaat is de vertikale as van beneden naar boven.
Zie voorbeeld bij Clickb.
clg
Wist het grafisch venster. Je gebruikt dit meestal als je een programma begint, als je iets nieuws wil tonen.
rem er worden nu een paar vierhoeken getekend. color yellow rect 10,10,50,50 color blue rect 50,50,30,80 color red rect 100,100,10,50 pause 5 # die krijg je 5 seconden te zien clg print "grafisch venster is leeggemaakt !"
close
close ( )
close Bestandnr
close ( Bestandnr )
Deze functie sluit een bestand dat open is. Indien dat bestand niet open was, dan gebeurt er niets. Indien het Bestandnr niet wordt weergegeven, wordt 0 genomen .
Als je verwijst naar een bestandsnummer dat niet bestaat, krijg je wel een foutmelding.
close betekent (sluiten) in het Engels.
print currentdir ( ) open(1, "bestand.txt") close 1
geeft geen feedback.
print currentdir ( ) open(1, "bestand.txt") close
Geeft foutbericht. De close functie probeert bestandnummer 0 te sluiten, maar die bestaat niet, en je krijgt de fout: FOUT op lijn 4: File not open.
cls
Deze opdracht wist de informatie die in het teskstvenster staat.
print " dit is een printopdracht met een grote tekst die over verschillende lijnen getoond wordt. Binnen enkele ogenblikken zal deze tekst gewist worden." pause 7 cls
color kleurnaam
color ( kleurnaam )
color rood, blauw, groen
color ( rood, blauw, groen )
color rgb_waarde
color ( rgb_waarde )
Zet de waarde van het potlood
Er bestaat ook een kleurnaam CLEAR, met een waarde -1. Dit komt overeen met de gom. De tekening of de pixel wordt dan doorzichtig. Dit laatste is vooral nuttig als je met sprites werkt via de Spriteslice opdracht.
Kleurnamen en RGB waarden | ||
---|---|---|
Kleurnaam1) | RGB Waarde | |
black | 0, 0, 0 | <hi #000000>~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~</hi> |
white | 255, 255, 255 | <hi #FFFFFF>~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~</hi> |
red | 255, 0, 0 | <hi #FF0000>~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~</hi> |
darkred | 128, 0, 0 | <hi #800000>~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~</hi> |
green | 0, 255, 0 | <hi #00FF00>~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~</hi> |
darkgreen | 0, 128, 0 | <hi #008000>~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~</hi> |
blue | 0, 0, 255 | <hi #0000FF>~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~</hi> |
darkblue | 0, 0, 128 | <hi #000080>~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~</hi> |
cyan | 0, 255, 255 | <hi #00FFFF>~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~</hi> |
darkcyan | 0, 128, 128 | <hi #008080>~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~</hi> |
purple | 255, 0, 255 | <hi #FF00FF>~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~</hi> |
darkpurple | 128, 0, 128 | <hi #800080>~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~</hi> |
yellow | 255, 255, 0 | <hi #FFFF00>~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~</hi> |
darkyellow | 128, 128 ,0 | <hi #808000>~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~</hi> |
orange | 255, 102, 0 | <hi #FF6600>~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~</hi> |
darkorange | 176, 61 ,0 | <hi #B03D00>~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~</hi> |
grey | 164, 164 ,164 | <hi #A4A4A4>~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~</hi> |
darkgrey | 128, 128 ,128 | <hi #808080>~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~~~SP~~</hi> |
clear | -1 | ~~SP~~ |
clg color rgb(128,128,128) rect 0,0,graphwidth, graphheight color red circle 100,100,50 color 255,160,160 circle 100,100,25
tekent een grijs vierkant met een rode stip ( cirkel) met een roze middelpunt.
cos ( uitdrukking )
Dit is een wiskundige formule, meer bepaald uit de Goniometrie
De functie berekent de cosinus van uitdrukking. De hoek moet in radianen worden meegegeven (0 tot 2pi).
Meer informatie over deze functie vind je op de wiki : cos
clg color black # tekent de assen line 0,150,300,150 line 150,0,150,300 # we starten hier color blue lastx = 0 lasty = cos(0) * 50 + 150 # now step across the line and draw for x = 0 to 300 step 5 angle = x / 300 * 2 * pi y = cos(angle) * 50 + 150 line lastx, lasty,x, y lastx = x lasty = y next x
currentdir
currentdir ( )
Geeft het volledig gekwalificeerd pad naar de werking directory van BASIC-256
Om de folders van elkaar te scheiden worden altijd Forward Slashes (/) gebruikt.
print currentdir ( )
geeft dan
/home/guest
day
day ( )
Geeft de dag terug op basis van de datum van de computer (1-31).
print "Het is vandaag "; print day + "/" + (month + 1) + "/" + year
geeft volgend resultaat|
Het is vandaag 29/01/2012
dbclose
dbclose ( )
De functie sluit de SQLite database.
Zie het voorbeeld bij DBOpen .
Meer informatie over databases in het algemetn en SQLite in het bijzonder vind je op SQLite Home Page en SQL at Wikipedia.
dbcloseset
dbcloseset ( )
De functie sluit de recordset die via DBOpenSet geopend werd.
zie voorbeeld bij DBOpen.
dbexecute SqlOpdracht
dbexecute ( SqlOpdracht )
De functie voert de SqlOpdracht uit op de open SQLite database. Deze opdracht opent geen recordset !
De SQLOdracht dit hiermee meestal wordt uitgevoerd is een insert of update opdracht, of ook wel een DDL opdracht.
Als je een Sql opdracht wil uitvoeren om informatie uit te lezen, wordt DBOpenSet gebruikt.
Voorbeeld is uitegewerkt op de DBOpen page.
dbfloat ( Kolomnummer )
De functie geeft een de waarde van kolomnummer van de open recordset terug als decimale waarde.
UItgewerkt voorbeeld vind je op de DBOpen pagina.
dbint ( Kolomnummer )
De functie geeft een de waarde van kolomnummer van de open recordset terug als geheel getal.
Uitgewerkt voorbeeld vind je op de DBOpen pagina.
dbopen SQLiteFile
dbopen ( SQLiteFile )
De functie opent een SQLite database bestand. Als het bestand niet bestaat, dan wordt het aangemaakt.
#database foo - maak de database aan, zet dat in de database - open dan een recordset en lees de data uit de tabel. # maak een nieuw bestand aan en open het dbopen "dbtest.sqlite3" # wis de oude tabel, vang de fout op indien de tabel niet bestaat. onerror errortrap dbexecute "drop table foo;" offerror # create and populate dbexecute "create table foo (id integer, words text, value decimal);" dbexecute "insert into foo values (1,'een',3.14);" dbexecute "insert into foo values (2,'twee',6.28);" dbexecute "insert into foo values (3,'drie',9.43);" # open een recordset en ga door alle rijen dbopenset "select * from foo order by words;" while dbrow() print dbint(0) + dbstring(1) + dbfloat(2) end while dbcloseset # Sluit de boel maar dbclose end errortrap: # 't is goed, ga gewoon verder return
toont dan
1een3.14 3drie9.43 2twee6.28
Meer informatie over database en SQLLite vind je op SQLite Home Page en SQL at Wikipedia.
dbopenset SqlOpdracht
dbopenset ( SqlOpdracht )
De functie voert een SQLOpdracht uit op de open database en maakt een recordset aan zodat het programma door het resultaat kan.
Uitgewerkt voorbeeld terug te vinden op DBOpen.
dbrow
dbrow ( )
De functie wordt gebruikt om naar het volgend record in de open recordset te gaan.
De functie geef true weer als er een nieuwe rij werd gelezen, of geeft een false als er geen nieuwe rij werd uitgelezen en je op het einde van de recordset staat.
Het uitgewerkt voorbeeld vind je bij DBOpen.
dbstring ( Kolomnummer )
De functie geeft een de waarde van kolomnummer van de open recordset terug als string.
Uitgewerkt voorbeeld vind je op de DBOpen pagina.
degrees ( expression )
print 2*pi print degrees(2*pi)
geeft dan
6.283185 360
dim numeriekevariable ( getal )
dim stringvariable$ ( getal )
dim numeriekevariable ( rijen , kolommen )
dim stringvariable$ ( rijen , kolommen )
met deze functie wordt een één-dimensionele tabel van getal lang aangemaakt of een twee-dimensionele tabel die je via (rij,kolom) kan bereiken.
Afhankelijk van de definitie wordt een numerieke of string tabel aangemaakt.
Het eerste element van de tabel heeft altijd een index = 0 . Het laatste element getal-1 of rij-1,kolom-1
end
Dez opdracht stop de uitvoering van het programma
print "Ik heb gedaan." end print "Of niet soms?"
zal het volgende tonen
Ik heb gedaan.
Zoals je ziet, wordt de volgende opdracht niet meer uitgevoerd.
eof
eof()
eof(Bestandnr)
Met deze functie kan je weten of we het laatste stukje van een bestand hebben bereikt of niet ( true/false)2). Als je het Bestandnr niet meegeeft, dan wordt bestandnummer 0 verondersteld.
Je krijgt een foutmelding als je EOF probeert te doen op een bestandnummer dat geen open bestand bevat.
Je gebruikt deze functie om te weten of je alles al hebt gelezen bvb. Probeer je dan nog eens te lezen (na de EOF) dan krijg je een foutmelding.
print currentdir ( ) open(1, "bestand.txt") print eof(1) close 1
geeft
1 #omdat bestand.txt niets bevat
exists ( uitdrukking )
Deze functie geeft een (true/false)3) terug om aan te tonen of het bestandspad naar het bestand zoals in uitdrukking bestaat of niet.
Hou ermee rekening dat dze functie enkel weergeeft of het bestand dat je opgeeft bestaat in het opgegeven pad….
print currentdir ( ) # om te zien waar je bent print exists ("success.wav") # dit is een bestand dat inderdaad in de opgegeven currentdir aanwezig is print exists ("failed.wav") # dit is een bestand dat niet bestaat
geeft dan
/home/guest/basic 1 0
fastgraphics
Met deze functie activeer je de fastgraphics mode tot je Basic-256 verlaat. Met de fastgrpahics mode gaat Basic-256 de grafische output of het grafisch venster, enkel aanpassen wanneer het [refresh]] commando wordt meegegeven. Dit zorgt ervoor dat bij moeilijke en zware animaties het scherm niet begint te flikkeren.
Indien je met iets maakt met animatie, is het beter dat je de tekenopdreachten in een subroutine plaatst en een refrech uitvoert nadat al het tekenwerk is gebeurd voor dat frame.
nog uit te werken
float ( expression )
De functie converteert expression naar een decimaal getal.
Float converteert zowel een integer getal als een string naar een decimaal getal.
Indien de conversie niet lukt, wordt nul weergegeven !
floor ( uitdrukking )
Afronden naar beneden (floor is het Engelse woord voor vloer).
Het getal van de uitdrukking wordt daarbij afgerond naar het laagste gehele getal dat kleiner is dan of gelijk is aan het oorspronkelijke getal.
font lettertype, grootte, gewicht
De functie definieert het lettertype dat in het grafisch venster zal worden gebruikt.
De groote wordt in points uitgedrukt. (1/72“).
Het gewicht is een nummer van 1 tot 100 en geeft aan hoe dik de leeters worden Licht=25, Normaal=50, and Vet=75.
clg color grey rect 0,0,graphwidth,graphheight color red font "Times New Roman",18,50 text 10,100,"Fraaie tekst" color darkgreen font "Tahoma",14,75 text 10,200,"En dit is de vette tekst!"
In Linux zijn de lettertypes die gedifinieerd staan aleemaal beschikbaar. Let wel dat je de hele correcte schrijfwijze van een lettertype gebruikt.
getcolor
getcolor()
De functie geeft de huidige RGB waarde terug van de kleur van het potlood. RGB wordt berekend door (((rood*256)+groen*256)+blauw). De waarden van rood, groen en blauw moeten tussen 0 en 255 liggen.
Indien het potlood een transparante kleur heeft via de CLEAR kleur, wordt -1 teruggegeven.
color red print getcolor
geeft dan
16711680
getslice(x, y, breedte, hoogte)
de functie geeft een string terug die de hexadecimale representatie is van een vierhoek, op basis van de parameters die opgegeven zijn.
De string bestaat uit verschillende onderdelen:
print getslice(0,5,10,5)
geeft dan
000a0005f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8
goto etiket
etiket
Gaat naar het etiket Een etiket wordt ook vaak label genoemd in het engels en bij het programmeren.
Zoals je weet worden de opdrachten in een BASIC256 programma mooi na elkaar uitgevoerd. Met deze opdracht kan je daarvan afwijken en kan je het progamma heel wat verder of zelfs helemaal terug laten beginnen.
Met dat laatste mooet je wel opletten. Het is inderdaad mogelijk dat je daardoor in een lus terechtkomt dat nooit eindigt !!!! Dan blijft je programma voor altijd doorlopen, tenzij je het hardhandig stopt, maar dit is niet zo mooi.
print "Ik wil"; goto gaverder print " geen"; gaverder: # print " koekjes."
zal het volgende tonen
Ik wil koekjes.
print “ geen” wordt dus niet uitgevoerd.
graphheight
graphheight()
Geeft de hoogte terug (y dimensie) van het huidig grafisch venster.
Met volgend voorbeeld kleur ik het hele grafisch venster groen.
Je kan ook de grootte van de vierkant met getallen invullen, maar dan wordt geen rekening gehouden met het grafisch venster. Als je dan een groter of kleiner venster maakt, klopt je tekening niet meer.
clg graphsize 100,100 color green rect 0,0,50,graphheight
graphsize breedte, hoogte
Verandert de grootte van het grafische venster en past dan ook de Basic-256 venster aan.
breedte en grootte worden in pixels uitgedrukt en zijn tussen 0 en … de grootte van je scherm.
Dit zijn sommige standaard formaten :
Met volgend voorbeeld kleur ik het hele grafisch venster groen.
Dit alles was nodig om de grootte van het grafisch venster te tonen. Probeer gerust andere groottes.
clg graphsize 800,600 color blue rect 0,0,graphwidth,graphheight
graphwidth
graphwidth()
Geeft de breedte terug (x dimensie) van het huidig grafisch venster.
Met volgend voorbeeld kleur ik het hele grafisch venster groen.
Je kan ook de grootte van de vierkant met getallen invullen, maar dan wordt geen rekening gehouden met het grafisch venster. Als je dan een groter of kleiner venster maakt, klopt je tekening niet meer.
clg graphsize 100,100 color green rect 0,0,graphwidth,20
hour
hour()
Geeft het uur terug op basis van de tijd van de computer (0-23).
# Toon een leesbare datum dim months$(12) months$ = {"Januari", "Februari", "Maart", "April", "Mei", "Juni", "Juli", "Augustus", "September", "October", "November", "December"} print right("0" + day, 2) + "-" months$[month] + "-" + year # Toon een leesbare datum h = hour if h > 12 then h = h - 12 ampm$ = "PM" else ampm$ = "AM" end if if h = 0 then h = 12 print right("0" + h, 2) + "-" + right("0" + minute, 2) + "-" + right("0" + second, 2) + " " + ampm$
Toont ongeveer zo iets.
29-januari-2012 10-00-02 PM
instr ( hooiberg , naald )
instr ( hooiberg , naald , start )
instr ( hooiberg , naald , start , hoofdletterongevoelig)
Met deze functie ga je naar of je de string naald in de -grotere- string hooiberg kan vinden.
* als dit zo is, dan geeft de functie de plaats van de naald in de hooiberg terug, wat we ook de index noemen.
* wordt niets gevonden, dan geeft de functie 0 terug.
Je kan ook opgeven dat er in de hooiberg pas vanaf positie start mag gezocht worden.
Je kan bovendien meegeven of bij het zoeken ook gelt moet worden op het feit dat de zoektocht ook hoofdlettergevoelig is. Is dit niet zo, dan worden grote en kleine letters gelijkgesteld.
De index begint op 1.
print instr("Hello", "lo") print instr("101,222,333",",",5)
geeft dan
4 8
int ( expression )
De functie converteer de expression naar een geheel getal. Zowel een string als een decimaal getal worden dan geconverteerd.Lukt de conversie niet, dan wordt 0 teruggestuurd.
Deze functie is vooral nuttig samen met de rand functie.
a= 4.53 print a print int(a)
geeft dan
4.53 4
imgload x, y, bestandsnaam
imgload x, y, schaal, bestandsnaam
imgload x, y, schaal, rotatie, bestandsnaam
Met deze functie wordt een beeld opgeladen van een bestand en wordt het weergegeven in het grafisch venster.
Met de paramaters x en y geeft je aan waar het CENTRUM van het beeld moet staan. Hiermee wijkt deze functie af van alle andere grafische functies.
Als er wordt geroteerd, is dat op basis van het centrale punt, kloksgewijs, en hoek wordt in radianen opgegeven.
Je kan het beeld ook aanpassen in de schaal , met andere woorden, je kna het verkleinen of vergroten.
De functie werkt voor de meeste bestanden:
nog uit te werken
input uitdrukking, stringvariable
input uitdrukking, numericvariable
input stringvariable
input numericvarvariable
De input opdracht wacht tot de gebruiker iets intijpt op het klavier en op 'return' of 'enter' klikt. Op dat moment wordt hetgene ingetijpt is opgeslagen in de stringvariabele of de numvericvariable afhankelijk van hoe het in het programma is aangegeven.
Indien de input ook een uitdrukking heeft, dan wordt deze op het scherm getoond. Dit is niet verplicht, maar helpt wel om aan de gebruiker mee te geven wat hij moet doen.
Indien de gebruiker een string intijpt terwijl het programma een getal verwacht, dan wordt de numericvariabele gelijk aan 0.
Er kunnen ook referenties naar array elementen worden gemaakt.
input "Hoe heet je ?", naam$ input "Hoe oud ben je?", leeftijd$ print "Hello " + naam$ + ". Ik denk dat je " + leeftijd$ + " jaar oud bent. Klopt nietwaar?"
key
key()
Geeft onmiddellijk de gehele waarde terug die overeenkomt met de toets die op het toestenbord werd ingedrukt. Als geen enkele toets werd ingedrukt sinds de laatste keer de opdracht werd opgeroepen, dan wordt 0 teruggestuurd.
if key = 47 then print key
zal niet het verwachte resultaat geven, omdat het twee keer na elkdaar de opdracht uitvoert, en telkens een verschillend resultaat teruggeeft.
Dit geeft echter het resultaat dat je verwacht:
a = key if a = 47 then print a
lasterror
lasterror ( )
Geeft het laatste foutnummer terug dat werd tegengekomen bij het uitvoeren van het programma.
Voorbeeld is terug te vinden op de foutboodschappenpagina
lasterrorextra
lasterrorextra ( )
Geeft “extra” informatie over de fout.
Volg het voorbeeld van de foutboodschappen lijst
lasterrorline
lasterrorline ( )
Geeft het lijnnummer weer van de lijn in het programma waar de fout zich voordeed.
Volg het voorbeeld van de foutboodschappen lijst
left( string, lengte)
De functie geeft lengte karakters van string terug, te beginnen van links.
print left("Hello allemaal, blij dat jullie er zijn", 4)
tootn dan
Hello
length( string )
Deze functie geeft het aantal karakters van de string string
a$= "Hoe lang is dit zinnetje nu?" print a$ print "de string a is " + length(a$) + " karakters lang."
geeft dan
Hoe lang is dit zinnetje nu? de string a is 28 karakters lang.
line x0, y0, x1, y1
line(x0, y0, x1, y1)
Met deze functie teken je een … lijn
De lijn gaat van (x0,y0) naar (x1,y1)
color white rect 0,0,300,300 color black line 50,50,200,200 line 100,200,200,200 line 100,200,50,50
maakt volgende tekening
log ( expression )
Geeft het natuurlijk logaritme van expression terug.
a= 10 print a print log(a)
geeft dan
10 2.302585
lower( string)
Deze functie verandert alle hoodletters in de string naar kleine letters.
mid( string, start karakter, aantal)
Hiermee krijg je een deel van je string terug , te beginnen van karakter en dat voor zoveel aantal karakters.
minute
minute()
Geeft de minuten terug op basis van de tijd van de computer (0-59).
# Toon een leesbare datum dim months$(12) months$ = {"Januari", "Februari", "Maart", "April", "Mei", "Juni", "Juli", "Augustus", "September", "October", "November", "December"} print right("0" + day, 2) + "-" months$[month] + "-" + year # Toon een leesbare datum h = hour if h > 12 then h = h - 12 ampm$ = "PM" else ampm$ = "AM" end if if h = 0 then h = 12 print right("0" + h, 2) + "-" + right("0" + minute, 2) + "-" + right("0" + second, 2) + " " + ampm$
Toont ongeveer zo iets.
29-januari-2012 10-00-02 PM
month
month()
Geeft de maand terug op basis van de tijd van de computer.
cls dim n$(12) n$ = {"Jan", "Feb", "Mar", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"} print day + "-" + n$[month] + "-" + year
Op nieuwjaar 2013 wordt dan volgende getoond
1-Jan-2013
mouseb
mouseb()
De functie geeft de huidige knop weer die ingedrukt wordt, naar analogie van clickb, alleen gaat het hier over de knop die op het moment zelf wordt ingedukt.
Resultaten | |
---|---|
Waarde | Muisknop die wordt ingedrukt |
0 | Geen |
1 | Links |
2 | Rechts |
4 | Midden |
mousex
mousex ( )
De functie geeft de x-coördinaat terug van de plaats waar u nu met de muis staat of waar u het laatst in het grafisch venster hebt geklikt. De x-coördinaat is de horizontale as van links naar rechts.
mousey
mousey ( )
De functie geeft de y-coördinaat terug van de plaats waar u nu met de muis staat of waar u het laatst in het grafisch venster hebt geklikt. De y-coördinaat is de vertikale as van beneden naar boven.
netclose
netclose ( )
netclose socket_number
netclose ( socket_number )
De functie sluit de opgegeven netwerk connectie (socket_nummer). Als het socket_number niet opgegeven is, wordt de 0 gebruikt.
Voorbeeld is uitgewerkt op NetConnect.
netconnect server_naam, poort_nummer
netconnect ( server_naam, poort_nummer )
netconnect socket_number, server_naam, poort_nummer
netconnect ( socket_number, server_naam, poort_nummer )
De functie opent een netwerk connectie (client) naar een server. Het IP address of de server naam worden opgegeven in server_naam, en de netwerk poort in poort_nummer. Aks er geen socket_number is meegegeven, wordt 0 gebruikt.
Open 2 instanties van BASIC-256 op eenzelfde comuter. Plak de “Server” code in de ene en de “client” code in de andere. Start de Server instantie eerst op en dan pas de client.
Je zal nu zien hoe de 2 instanties berichten met elkaar uitwisselen.
# Haal een bericht op een stuur een 'success' terug print "wachtend op een connectie op " + netaddress() netlisten 9997 print "connectie opgesteld" do while not netdata pause .1 print "."; end while n$ = netread print n$ netwrite "I heb '" + n$ + "' ontvangen." until n$ = "end" netclose
Dit zal het volgende tonen (waar xxx.xxx.xxx.xxx het IPv4 adres van je computer is)
wachtend op een connectie op xxx.xxx.xxx.xxx connectie opgesteld .........1 hallo .......2 hallo ....3 hallo .........4 hallo ..5 hallo .....6 hallo ........7 hallo .........8 hallo ..........9 hallo ........10 hallo end
# Geef een bericht in di naar de server verstuurd zal worden input "Geef een bericht in?", m$ netconnect "127.0.0.1", 9997 for t = 1 to 10 pause rand netwrite t + " " + m$ print netread next t netwrite "end" print netread netclose
toont dan
enter message? Hallo Ik heb '1 Hallo' ontvangen. Ik heb '2 Hallo' ontvangen. Ik heb '3 Hallo' ontvangen. Ik heb '4 Hallo' ontvangen. Ik heb '5 Hallo' ontvangen. Ik heb '6 Hallo' ontvangen. Ik heb '7 Hallo' ontvangen. Ik heb '8 Hallo' ontvangen. Ik heb '9 Hallo' ontvangen. Ik heb '10 Hallo' ontvangen. Ik heb 'end' ontvangen.
netdata
netdata ( )
netdata socket_number
netdata ( socket_number )
De functie geeft true terug als er data moet worden gelezen met de NetRead functie, andere geeft de functie false terug.
Als het socket_number niet werd meegegeven, wordt 0 gebruikt.
Uitgewerkt voorbeeld op NetConnect.
netlisten port_number
netlisten ( port_number)
netlisten socket_number, port_number
netlisten ( socket_number, port_number)
De functie opent een netwerk connectie (server) op een specifieke poort en wacht dat een andere programma zich connecteert. Als de socket_number niet gespecifieerd is,wordt 0 gebruikt.
Voorbeeld uitgewerkt op NetConnect.
netread
netread ( )
netread ( socket_number )
De functie leest de data van de open netwerk connectie op socket_number en geeft die terug als string.
De functie wacht tot er data is ontvangen.
Indien er geen socket_number werd meegegeven, wordt 0 gebruikt.
Voorbeeld uitgewerkt op NetConnect .
netwrite string
netwrite ( string )
netwrite socket_number, string
netwrite ( socket_number, string )
De functie stuurt de string naar het opgegeven socket_number ( open netwerk connectie). Als dit nummer niet is opgegeven, wordt 0 gebruikt.
Uitgewerkt voorbeeld op NetConnect.
open bestand
open(bestand)
open bestandsnr, bestand
open(bestandsnr, bestand)
Deze functie opent een bestand om erin te schrijven of te lezen.
in bestand geef je de bestandsnaam op met een absoluut of relatief pad 4). Als je geen bestandsnr meegeeft, dan wordt het bestandsnr = 0. Open je dan een nieuw bestand, zonder evenwel het bestandsnr mee te geven, zorgt ervoor dat je eerder geopend bestand gesloten wordt.
Probeer dus altijd een bestandsnr mee te geven !
Indien het opgegeven bestand niet bestaat, krijg je geen foutmelding, maar wordt het bestand gewoon aangemaakt. Als je dus een bestaand bestand wil openen, wees dan zeker dat je het op de goede plaats zoekt ! Dit kan je doen met de Exists functie.
Met BASIC256 mag je tot 8 bestanden tegelijk openen. Bestandnummers zijn dan 0 tot 7
print currentdir ( ) open(1,"bestand.txt")
geen feedback… als het bestand bestaat wordt het geopend, anders wordt dat bestand aangemaakt.
offerror
Zet de foutafhandeling af. Hierdoor stopt het programma als er zich een fout voordoet.
Volg het voorbeeld van de foutboodschappen lijst
onerror label
Activeert de foutafhandeling. De subroutine bij etiket label wordt bij een fout in het programma uitgevoerd.
Met een Return opdracht in de fout subroutine kan het programma daarna worden verdergezet.
Volg het voorbeeld van de foutboodschappen lijst
pause seconden
pause (seconden)
Laat de computer seconden wachten vooraleer hij de volgende opdracht uitvoert.
De seconden waarden mag een decimale waarde zijn, dus je kan tot op de 100e seconde werken.
Print "Ik begin nu" pause 20 Print "en heb nu na 20 seconden gedaan"
( pas op, het voorbeeld duurt lang)
pixel (x, y )
De functie geeft de RGB waarde terug van de pixel die zich op (x,y) bevindt.
Als de pixel sinds de laatster [clg] opdracht niet werd overschreven, of indien het werd overschreven met de clear kleur, dan wordt -1 teruggegeven.
<code basic4gl> uit te werken c/code>
plot x, y
plot ( x, y )
Met deze functie verander je éé pixel op plaats (x,y) in het grafisch venster in de kleur van het potlood.
Opgelet één pixel is klein
Omdat één pixel zeer klein is, laat ik dus 100 pixels naast elkaar van kleur veranderen
clg color red for x=1 to 100 plot 100+x,100 next x
zie je het resultaat ?
poly numerieke array variabele
poly {x1, y1, x2, y2, x3, y3 …}
De functie tekent een veelhoek ( polygoon).
De hoeken van de veelhoek worden vastgelegd dankzij de (x,y) coördinaten die in de numerieke array variabele worden meegegeven. De array moet dus telkens een even aantal getallen bevatten !!!!
Je kan de coördinaten ook onmiddellijk meegeven met de poly functie door de haakjes { }.
Het aantal punten werd als parameter van het poly statement weggenomen sinds de versie 0.9.4
print uitdrukking [ ; ]
Deze opdracht schrijft de uitdrukking naar het tekstvenster. Indien de puntkomma wordt meegegeven, komt er geen nieuwe lijn op het einde.
Dit is waarschijnlijk ook de eerste opdracht die je geleerd zal hebben. Logisch, want dat is de manier waarop de computer met je communiceert!
print "Hello World!" print "Dit wordt op de nieuwe regel geprint."; print " Maar dit niet. Dit komt op de tweede regel."
putslice x, y, slice$
putslice x, y, slice$, doorichtige kleur
Met deze functie toon je de tekening die je in een vorge stap in een slice string hebt gezet. Als je transparent meegeeft als kleur, dan worden die punten met die kleur ook niet getoond.
clg a$= getslice(0,5,10,5) print a$ putslice(10,10,a$)
radians ( expression )
hoek = 360 print "Hoek in graden: " + hoek print "Hoek in radialen: " + radians(hoek)
geeft dan
hoek = 360 Hoek in graden: 360 Hoek in radialen: 6.283185
6.28 = 2*pi
rand
rand()
De functie geeft een willekeurig getal tussen 0 en 1. Er is een uniforme verdeling van de waarden.
Om een willekeurig getal tussen 0 en 10 te krijgen, volstaat volgende combinatie: int(rand * 10).
for teller= 1 to 10 eengetal = int(rand*100) print eengetal next teller
geeft bij deze test
77 32 19 75 88 41 43 23 98 71
maar dit zou bij jou andere getallen moeten leveren.
read
read()
read(bestandsnr)
Deze functie leest het bestand en geeft een token terug. Een token is een string van karakters die opgeslplitst zijn door een spatie, tab of nieuwe lijn opdracht, je krijgt dus alles in stukjes binnen. Telkens je dus een spatie,tab of nieuwe lijn tegenkomt.
Specifieer je geen bestandnummer dan gebruikt de functie bestandnr 0.
((prorgamma gevonden in /home/.../basic/Examples/testing)) # testlineio.kbs - test readline, writeline, and eof # 2008-08-29 jmr open "foo.txt" reset for l = 1 to 8 writeline "Data file line " + l + "." next l l = 0 donext: if eof then goto done l = l + 1 a$ = read print "line " + l + "=" + a$ goto donext done: print "total of " + l + " lines." close end
Dir programma opent eerst Foo.txt, maakt het leeg en schrijft er dan 8 regels in. VErvolgens wordt elke lijn uitgelezen als token in variable a$ en uitgeschreven op het scherm. Dit ziet er dan zo uit: ++++Resultaat|
line 1=Data line 2=file line 3=line line 4=1. line 5=Data line 6=file line 7=line line 8=2. line 9=Data line 10=file line 11=line line 12=3. line 13=Data line 14=file line 15=line line 16=4. line 17=Data line 18=file line 19=line line 20=5. line 21=Data line 22=file line 23=line line 24=6. line 25=Data line 26=file line 27=line line 28=7. line 29=Data line 30=file line 31=line line 32=8. total of 32 lines.
++++
readline
readline()
readline(bestandsnr)
Deze functie leest het bestand lijn per lijn uit.
Specifieer je geen bestandnummer dan gebruikt de functie bestandnr 0
((prorgamma gevonden in /home/.../basic/Examples/testing)) # testlineio.kbs - test readline, writeline, and eof # 2008-08-29 jmr open "foo.txt" reset for l = 1 to 8 writeline "Data file line " + l + "." next l l = 0 donext: if eof then goto done l = l + 1 a$ = read print "line " + l + "=" + a$ goto donext done: print "total of " + l + " lines." close end
Dir programma opent eerst Foo.txt, maakt het leeg en schrijft er dan 8 regels in. VErvolgens wordt elke lijn uitgelezen als token in variable a$ en uitgeschreven op het scherm. Dit ziet er dan zo uit: ++++Resultaat|
line 1=Data file line 1. line 2=Data file line 2. line 3=Data file line 3. line 4=Data file line 4. line 5=Data file line 5. line 6=Data file line 6. line 7=Data file line 7. line 8=Data file line 8. total of 8 lines.
++++
rect x,y,breedte,hoogte
rect ( x, y, breedte,hoogte )
De functie tekent een vierhoek van breedte x hoogte pixels met in kleur van het potlood. De Linkerhoek van de vieruhoek bevindt zich op x,y.
color white rect 0,0,300,300 color red rect 50,50,150,150 color blue rect 100,100,150,150 color green rect 10,140,280,20
redim numeriekevariable( getal )
redim stringvariable$( getal )
redim numeriekevariable( rijen , kolommen )
redim stringvariable$( rijen , kolommen )
De functie past de dimensie aan van een eerder aangemaakte tabel, mét behoud van gegevens.
Indien de array groter wordt, dan worden de nieuwe elementen in de tabel met 0 of met '' ( lege string) geïnitialiseerd. Wordt de tabel kleiner, dan verwijnen de elementen op het einde.
uit te werken
refresh
Deze functie ververst het grafisch venster om alles te tonen wat sinds het laatste refresh commando werd getekend. Deze functie wordt gebruikt samen met de Fastgraphics mode.
nog uti te werken
reset
reset()
reset(filenumber)
Wist een open bestand. Alle informatie in het bestand is dan verloren !!
Wees dus voorzichtig als je dit gebruikt. Als je geen bestandsnummer ingeeft, dan neemt de functie bestandsnummer 0.
print currentdir open (1,"Foo.txt") reset 1 write (1,"Hello") write (1," Dit komt op dezelfde lijn na Hello") close 1
Telkens als je dit programma uitvoert, dan open je Foo.txt, maak je het leeg en zet je er telkens dezelfde inhoud in.
Dit is de inhoud van Foo.txt
Hello Dit komt op dezelfde lijn na Hello
Probeer nu eens de code verschillende keer na elkaar uit te voeren, maar neem de 'Reset 1' opdracht weg. Wat zie je?5)
rgb(rood, groen, blauw )
De functie geeft de rgb waarde weer van de combinatie van roog, groen en blauwe componentwaarden.
De waarden van de 3 componenten moeten tussen 0 en 255 liggen.
print rgb(0,100,255)
geeft dan
-16751361 # dit is de kleurcode van lichtblauw....
right( string, aantal)
Met deze funcite ga je het rechter gedeelte van string selecteren en dat zoveel aantal karakters van rechts beginnend.
print right("Hello iedereen", 3)
geeft
een
say uitdrukking
say ( uitdrukking )
deze functie maakt gebruik van de Text-to-Speech (TTS) om de uitdrukking uit te spreken. De meeste operating systemen ( ubuntu, windows) hebben de TTS om teksten en informatie op het scherm om te zetten naar woorden
Windows SAPI zal de stem gebruiken die je in je controlepaneel hebt gedefinieerd. Om de standaard in Linux/Mac te veranderen op basis van de ESpeak library moet je de gewenste stembestanden naar default kopiëren.
# Opdrachten uit te voeren om 'nl' op Ubuntu 10.10 te activeren # kan afwijken van je eigen systeem... cd /usr/share/espeak-data/voices sudo cp nl default
say "Dit wordt een heel lange tekst om op te zeggen. Ik zal maar stoppen. 4 3 2 1 STOP." Say " 1100234 euro" say 100/10
Heb je gemerkt dat de comuter de leestekens en getallen goed uitspreekt? En dat je hem zelf het antwoord van een berekening kan laten zeggen?
second
second()
Geeft het aantal seconden terug op basis van de tijd van de computer (0-59).
# Toon een leesbare datum dim months$(12) months$ = {"Januari", "Februari", "Maart", "April", "Mei", "Juni", "Juli", "Augustus", "September", "October", "November", "December"} print right("0" + day, 2) + "-" months$[month] + "-" + year # Toon een leesbare datum h = hour if h > 12 then h = h - 12 ampm$ = "PM" else ampm$ = "AM" end if if h = 0 then h = 12 print right("0" + h, 2) + "-" + right("0" + minute, 2) + "-" + right("0" + second, 2) + " " + ampm$
Toont ongeveer zo iets.
29-januari-2012 10-00-02 PM
seek plaats
seek ( plaats )
seek filenumber, plaats
seek ( filenumber, plaats )
Deze funcite verplaatst de 'lezen/schrijven' plaats zoals opgegeven met plaats (aantal bytes vanaf het begin van het bestand) Als je geen bestandnummer opgeeft, wordt de functie uitgevoerd op bestandnummer 0, voor zover die er is.
sin ( uitdrukking )
Dit is een wiskundige formule, meer bepaald uit de Goniometrie
De functie berekent de sinus van uitdrukking. De hoek moet in radianen worden meegegeven (0 tot 2pi).
Meer informatie over deze functie vind je op de wiki : sin
clg color black # tekent de horizontale as line 0,150,300,150 line 150,0,150,300 # we starten hier color blue lastx = 0 lasty = sin(0) * 50 + 150 # teken nu de sinusoïdale for x = 0 to 300 step 5 angle = x / 300 * 2 * pi y = sin(angle) * 50 + 150 line lastx, lasty,x, y lastx = x lasty = y next x
size
size()
size(filenumber)
Deze functie geeft weer hoe groot het bestand is in bytes6). Geef je geen bestandnummer in, dan wordt de functie uitgevoerd op bestandnummer 0, als ze bestaat natuurlijk.
print currentdir open (1,"Foo.txt") print size(1) close 1
geeft dan
/home/guest # werkdirectory :-) 40 # dit bestand is dus 40 bytes lang
Geef je geen bestandnummer in, dan probeert het programma 0. Maar aangezien er geen bestand geopend is voor 0, krijg je FOUT op lijn 3: File not open.
sound frequentie, duur
sound ( frequentie, duur )
sound ( deuntje )
sound deuntje
sound {frequentie1, duur1, frequentie2, duur2, …}
Dankzij sound kan je een geluid om de luidsprekers van de computer laten horen.
De frequentie wordt in Hz. uitgedrukt en de duur in milliseconden (1000 in een seconde).
Je kan ook een deuntje opstellen in een array, waardoor je het vervelende klikgeluid tussen elke toon voorkomt.
Ondersteuning voor geluid werd in LINUX systemen vanaf versie 0.9.5g. toegeovoegd.
In versie 0.9.5h werd voor Windows gebruikt gemaakt van de standaard geluidsettings.
# Muziekstuk van J.S.Bach - XVIII Fuge in G moll. tempo = 100 # noten per minuut milimin = 1000 * 60 # miliseconds in een minuut q = milimin / tempo # kwartnoot is een maat h = q * 2 # halve note (2 quarters) e = q / 2 # 1/8 note (1/2 quarter) s = q / 4 # 1/16 note (1/4 quarter) de = e + s # dotted eight - eight + 16th dq = q + e # doted quarter - quarter + eight sound{392, q, 587, q, 466, dq, 440, e, 392, e,466, e, 440, e, 392, e, 370, e, 440, e, 294, q,392, e, 294, e, 440, e, 294, e, 466, e, 440, s,392, s, 440, e, 294, e, 392, e, 294, s, 392, s,440, e, 294, s, 440, s, 466, e, 440, s, 392, s,440, s, 294, s}
Dit voorbeeld komt uit het boek “So You Want to Learn to Program”? van (James M. Reneau, M.S)
spritecollide ( sprite1, sprite2)
MEt deze functie kan je weten of 2 sprites tegen elkaar botsen of niet. De spritecollide functie veronderstelt dat de 2 sprites met een rechthoek verbonden zijn ter grootte van het opgeladen beeld. De botsin wordt berekend door deze rechthoeken te gebruiken. Voor ronde of rare gevormde slides kan het dus zijn dat deze functie onterechte botsingen detecteerd.
uit te werken
Spritedim, Spriteh, Spritehide, Spriteload, Spritemove, Spriteplace, Spriteshow, Spriteslice, Spritev, Spritew, Spritex, Spritey
spritedim n
spritedim ( n )
Deze functie maakt n sprite plaatshouders in het geheugen. Sprites worden in het programma aangeroepen door een nummer van 0 to n-1.
uit te werken
Spritecollide, Spriteh, Spritehide, Spriteload, Spritemove, Spriteplace, Spriteshow, Spriteslice, Spritev, Spritew, Spritex, Spritey
spriteh ( spritenummer )
De functie geeft de hoogte in pixels van een geladen sprite.
uit te werken
Spritecollide, Spritedim, Spritehide, Spriteload, Spritemove, Spriteplace, Spriteshow, Spriteslice, Spritev, Spritew, Spritex, Spritey
spritehide spritenummer spritehide ( spritenummer )
De functie verbergt een sprite, de informatie erover blijft wel behouden.
uit te werken
Spritecollide, Spritedim, Spriteh, Spriteload, Spritemove, Spriteplace, Spriteshow, Spriteslice, Spritev, Spritew, Spritex, Spritey
spriteload spritenumber, filename
spriteload ( spritenumber, filename )
De functie laadt een beeld uit een bestand op en bewaart het als sprit. De sprite is dan actief en beweegbaar, maar zal niet op het scherm te zien zijn tot de spriteshow opdracht werd gegeven.
Spriteload leest de meest gangbare formaten :
uit te werken
Spritecollide, Spritedim, Spriteh, Spritehide, Spritemove, Spriteplace, Spriteshow, Spriteslice, Spritev, Spritew, Spritex, Spritey
spritemove spritenummer, dx, dy
spritemove ( spritenummer, dx, dy )
De functie verschuift een sprite van zijn huidige positie met het opgegeven aantal pixels.
De verschuiving blijft berpekt tot het huidie scherm.
uit te werken.
Spritecollide, Spritedim, Spriteh, Spritehide, Spriteload, Spriteplace, Spriteshow, Spriteslice, Spritev, Spritew, Spritex, Spritey
spriteplace spritenummer, x, y
spriteplace ( spritenummer, x, y )
De functie zet het midden van een sprite op een specifiek plaats op het scherm.
Naar analogie van de imgload functie, gebrukt deze functie het midden van de sprite en niet de linkerbovenhoek zoals de meeste grafische functies.
uit te werken
Spritecollide, Spritedim, Spriteh, Spritehide, Spriteload, Spritemove, Spriteshow, Spriteslice, Spritev, Spritew, Spritex, Spritey
spriteshow spritenummer
spriteshow ( spritenummer )
De functie verbergt de sprite met referentie spritenummer
uit te werken.
Spritecollide, Spritedim, Spriteh, Spritehide, Spriteload, Spritemove, Spriteplace, Spriteslice, Spritev, Spritew, Spritex, Spritey
spriteslice spritenummer, x, y, breedte, hoogte
spriteslice ( spritenummer, x, y, breedte, hoogte )
De functie kopiëert een rechthoekig oppervlakte van het scherm van de linkerbovenhoek zoals opgegeven met de coördinaten x en y en dit voor een de opgegeven hoogte en breedte in een nieuw sprite met spritenummer.
De sprite is acitef en kan worden verschoven, maar is niet zichtbaar tot de spriteshow opdracht werd gegeven.
Het is aangewezen om eerst een [clg] commando uit te voeren vooraleer de sprite getekend en gesliced wordt.
Ongeverfde pixels worden transparant wanneer de sprite getoond wordt op het scherm. Doorzichtige pixels kunnen ook gemaakt worden door met de kleur clear te werken.
uit te werken
Spritecollide, Spritedim, Spriteh, Spritehide, Spritemove, Spriteplace, Spriteshow, Spritev, Spritew, Spritex, Spritey
spritev ( spritenummer )
De functie geeft aan of de sprite getoond wordt of niet.
uit te werken
Spritecollide, Spritedim, Spritehide, Spriteload, Spritemove, Spriteplace, Spriteshow, Spriteslice, Spriteh, Spritew, Spritex, Spritey
spritew ( spritenummer )
De functie geeft de breedte in pixels van een geladen sprite.
uit te werken
Spritecollide, Spritedim, Spritehide, Spriteload, Spritemove, Spriteplace, Spriteshow, Spriteslice, Spriteh, Spritew, Spritex, Spritey
spritex ( spritenummer )
De functie geeft de x coördinaat van de het midden van een geladen sprite terug.
uit te werken
Spritecollide, Spritedim, Spritehide, Spriteload, Spritemove, Spriteplace, Spriteshow, Spriteslice, Spriteh, Spritew, Spritex, Spritey
spritey ( spritenummer )
De functie geeft de y coördinaat van een geladen sprite terug.
uit te werken
Spritecollide, Spritedim, Spritehide, Spriteload, Spritemove, Spriteplace, Spriteshow, Spriteslice, Spriteh, Spritew, Spritex, Spritey
stamp x, y, array
stamp x, y, {x1, y1, x2, y2, x3, y3 …}
stamp x, y, schaal, array
stamp x, y, schaal, {x1, y1, x2, y2, x3, y3 …}
stamp x, y, schaal, rotatie, array
stamp x, y, schaal, rotatie, {x1, y1, x2, y2, x3, y3 …}
Met deze functie teken je een veelhoek (ploygoon) met de linkerbovenhoek in (x,y), in de opgegeven schaalgrootte schaal en draait dit in de opgegeven rotatie (kloksgewijs). Zowel schaal als rotatie zijn optioneel.
De hoeken van de veelhoek worden zoals bij de poly functie gedefinieerd door het aantal (x,y) coördinaten in de array.
Je kan de veelhoek ook definiëren met { } in plaats van de array.
Beide programma's zullen 2 driehoeken tekenen, waarvan de 2 kleiner is.
clg color blue rect 0,0,300,300 color green dim driehoek(6) tri = {0, 0, 100, 100, 0, 100} # Teken de driehoek op 0,0 (volledige grootte) stamp 100, 100, driehoek # Teken de driehoek op 200,100 (halve grootte) stamp 200, 100, .5, driehoek
clg color blue rect 0,0,300,300 color green # Teken de driehoek op 0,0 (volledige grootte) stamp 100, 100, {0, 0, 100, 100, 0, 100} # Teken de driehoek op 200,100 (halve grootte) stamp 200, 100, .5, {0, 0, 100, 100, 0, 100}
string ( uitdrukking )
Je ziet hiermee niet veel gebeuren. Alleen zeg je daarmee aan een computer dat hij een getal uit uitdrukking als een string moet beschouwen. Dan kan hij daarmee niet meer rekenen ….
system uitdrukking
system ( uitdrukking )
Voert een system commando uit in het terminal venster.
OPGELET: Dit kan een zeer gevaarlijke opdracht zijn. Gebruik dit enkel als je weet wat je doet.
tan ( uitdrukking )
Dit is een wiskundige formule, meer bepaald uit de Goniometrie
De functie berekent de tangens van uitdrukking. De hoek moet in radianen worden meegegeven (0 tot 2pi).
Meer informatie over deze functie vind je op de wiki : tan
++++Hierna de code|
clg color black #tekent een horizontale as line 0,150,300,150 # waar beginnen we color blue lastx = 0 lasty = tan(0) * 50 + 150 # go over de lijn en teken de grafiek for x = 0 to 300 step 5 angle = x / 300 * 2 * pi y = tan(angle) * 50 + 150 line lastx, lasty, x, y lastx = x lasty = y next x
text x, y, string
text ( x, y, string )
De functie schrijft de string in het grafisch venster met het lettertype en kleur die op dat moment zijn gedefinieerd. Er wordt gebonnen op x, y .
clg color grey rect 0,0,graphwidth,graphheight color darkblue font "Penguin Attack",18,50 text 10,100,"Fraaie tekst" color darkgreen font "Swift",14,75 text 10,200,"En dit is de vette tekst!"
upper ( string )
Geeft de string terug waarin alle kleine letters door grote letters werden vervangen.
Wist je trouwens, dat je MEESTAL GEEN ZIN MAAKT MET ALLEMAAL HOOFDLETTERS als je met de computer schrijft?
Dan denken de meeste mensen dat je tegen hen schreeuwt …. opletten dus.
print upper("blAuw!")
wordt
BLAUW!
volume niveau
volume ( niveau )
Pas het volume aan met het Sound commando. Volume niveau is een cijfer tussen 0 en 10. Het staat normaal op 5.
for vol = 1 to 9 volume(vol) sound(100,100) next vol
maakt eenzelfde geluid geduren 1/10 seconde en telkens luider.
wavplay bestandsnaam
wavplay ( bestandsnaam )
Deze functie speelt het WAV audio bestand asynchroon uit(bestand wordt in de achtergrond gespeeld).
wavplay("muziek.wav")
correcte gegevens om wav bestand af te spelen in linux
wavstop bestandsnaam
Deze functie stopt het spelen van het WAV audio bestand .
wavstop
write string
write ( string )
write filenumber, string
write ( filenumber, string )
Schrijft string aan het einde van een open bestand toe. Als je het bestandsnummer (filenumber) niet meegeeft, dan wordt 0 genomen.
print currentdir open (1,"Foo.txt") write (1,"Hello") write (1," Dit komt op dezelfde lijn na Hello") close 1
Print currentdir gebruik ik om te weten waar ik een bestand open. Dit is de plaats waar Foo.txt zal worden geopend ( of weggeschreven) Verder zijn er 2 write opdrachten. In het Foo.txt bestand zie je echter alles mooi op een lijn. Ik voer een close uit om het bestand mooi te sluiten. De informatie wordt wel onmiddellijk in het bestand gezet, maar je bent nooit zeker he.
writeline string
writeline ( string )
writeline filenumber, string
writeline ( filenumber, string )
De functie schrijft string aan het einde van een open bestand toe samen met een nieuwe lijn. Als je dan nog eens wegshrijft, is dat op de nieuwe lijn!
Als je het bestandsnummer (filenumber) niet meegeeft, dan wordt 0 genomen.
print currentdir open (1,"Foo.txt") writeline (1,"Hello") writeline (1,"Dit komt op de volgende lijn na Hello") close 1
Print currentdir gebruik ik om te weten waar ik een bestand open. Dit is de plaats waar Foo.txt zal worden geopend ( of weggeschreven) Verder zijn er 2 write opdrachten. In het Foo.txt bestand zie je echter alles mooi op een lijn. Ik voer een close uit om het bestand mooi te sluiten. De informatie wordt wel onmiddellijk in het bestand gezet, maar je bent nooit zeker he.
dit geeft dan het bestand
Hello Dit komt op de volgende lijn na Hello
Close, Eof, Open, Read, Readline, Reset, Writeline, Exists, Seek, Size
Close, Eof, Open, Read, Readline, Reset, Write, Exists, Seek, Size
year
year ( )
Geeft het jaartal terug van de huidige systeemdatum.
print "Het is vandaag "; print day + "/" +(month + 1) + "/" + year
toont dan
Het is vandaag 29/1/2012
# ( Commentaar)
Formaat
rem vrij commentaar
# vrij commentaar
Beschrijving
Een lijn die met rem of # begint wordt door BASIC256 overgeslagen.
Een goed programmeur neemt ook de tijd om zijn programma te voorzien met de nodige commentaar. Hierdoor wordt het mogelijk om een programma met anderen te delen. Neem dus de goede gewoonte aan om je programma's te voorzien van zinnige commentaar. Zelfs als je de enige bent die je programma's gaat bewerken. zal jij nog weten wat je 2 jaar geleden hebt geprogrammeerd en waarom?
Voorbeeld
vorige | Programma Controle | volgende