En oikein tajua tuosta DIM-käskystä mitään ja mitä hyötyä siitä muutenkaan on?
Mitä itse muistelisin, niin DIM olisi minulle ainakin äärimmäisen hyödyllinen käsky. Sillä kun jotenkni luodaan sellainen hauska taulukkohomma, josta olisi minulle tuhanteen ohjelmaan erittäin suurta hyötyä :-/
-Grey-
'ESIMERKIKSI
DIM Nimi$ (0 TO 4)
Nimi$(0) = "Pentti"
Nimi$(1) = "Jaakko"
Nimi$(2) = "Mikko"
Nimi$(3) = "Jouni"
Nimi$(4) = "Antti"
FOR TulostaNimet = 0 TO 4
PRINT Nimi$
NEXT TulostaNimet
Niinkun sillä DIM käskyllä kait luodaan niinkun taulukoita niinkuin Grey sanoi. Osaan käyttää sitä, vaikka en niin tarkasti tiedä siitä. :D
Esimerkiksi jos on kymmenen haukea, ja niiden iät pitäisi laittaa muistiin voisi "vanhalla" tavalla tehdä kymmenen muuttujaa:
hauki1 = 3 hauki2 = 2 hauki3 = 4
Jne..
Mutta DIM käskyllä homma hoituu tyylikkäämmin.
Ensin tehdään juuri tuo "taulukko".
DIM hauki(9)
Tuola sulkujen sisällä sen takia yhdeksän kun nollakin lasketaan. :)
Noille hauille voi nyt asettaa haluamansa iän tällä tavoin:
hauki(3) = 2
Noiden sulkujen sisällä on siis numero monennelle hauelle taulukosta kyseinen arvo määrätään.
Tämä taulukko helpottaa suurissa määrin, ja vähäntää koodia. Jos vaikka jokaiselle hauelle pitäisi lisätä ikää yksi vuosi, tulisi vanhalla tavalla kymmenelle yksilölle kymmenen riviä koodia. Eli:
hauki1 = hauki1 + 1 hauki2 = hauki2 + 1 hauki3 = hauki3 + 1
Jne..
Mutta DIMillä homma hoituisi näin (erittäin hyödyllinen jos haukia olisi vaikka 2342):
haukinumero = -1 DO haukinumero = haukinumero + 1 hauki(haukinumero) = hauki(haukinumero) + 1 LOOP UNTIL haukinumero = haukiluku
Eli tuo haukiluku olisi haukien määrä, joka olisi määriteltynä jossain aikaisemmin. Seuraavanlainen tapa on hyödyllinen, itse käytän sitä usein.
haukiluku = 34 DIM hauki(haukiluku)
No, toivottavasti ymmärsit tätä onnetonta selitystä, en jaksa kirjoittaa TYPEstä joka on hyvin läheinen DIMille, ainakin luulen niin. :)
Joku taisi jo ehtiä ennen, kun olin kirjoittamassa tuota. :)
DIM:illä voidaan myös määrittää yksittäisten muuttujien tyyppejä, esim:
DIM nimi AS STRING
DIM ika AS INTEGER
nimi = "Pentti"
ika = "35"
Ja mä tein kerran mun roguelike peliin katan tollei siis tein eka editorin ja siiten piirisin kartan ascii merkeillä ja sitten tallensin tiedostoon ja latasin sen ja pistin tulukkoon.
DIMistä vielä sen verran että tuon DIM hauki(9) voi laittaa myös vaikka DIM hauki(1 TO 10) jos haluaa yhdestä kymmeneen eikä nollaa..
Mut eiks toho oo myös joku OPTION BASE 1 käsky. Siis toho ykkösest alottamiseen vai muistanko väärin.
jarkko muistat väärin :) DIM taulukko(1 to 10) riittää.
Kummatkin tekevät saman asian. OPTION BASE on kyllä semmoinen kummajainen, että itse ainakin käytän sitä vain hupimielessä..
Mikä ihme se option base on?
http://www.cs.ut.ee/~teet11/qbasic/Qmuutujad.htm#OPTION BASE
On kyllä viroksi(???)..
"Used at module level to declare the default lower bound for array subscripts"
Löytyy urlista: http://msdn.microsoft.com/library/default.asp?
Aihe on jo aika vanha, joten et voi enää vastata siihen.