Google Translate

Hungarian English French German Italian Portuguese Russian Spanish

Alapok - Szintaxis 3

Az előzőekben már láthattál értékadó utasításokat. Érdemes először minden változót deklarálni (létrehozni) és a típusát megadni. Kiváltképp igaz ez a globális, olykor konstans változókra. Értékadást az egyenlőség jellel lehet végezni, és az eredmény komplex számítást, függvényeket is tartalmazhat.

A változókon felül van még egy adatokkal foglalkozó utasítás, a DATA-READ-RESTORE szerkezet:

Példa #1
1 textureData:
2 DATA 1, "road.jpg", "Beton út", 1, 1, 128, 128
3 DATA 2, "plain.jpg", "Mező", 2, 2, 64, 64
4  
5 rem -- A most megadott adatsorok később lekérdezhetőek, a legelső sorral kezdve:
6  
7 RESTORE ` -- Az utasítás az első adatsorra helyezi a mutatót
8 READ id, file$, name$, xPos, yPos, xSize, ySize
9  
10 rem -- Vagy, egy ciklussal is verzérelhetnénk, a lekérést:
11  
12 RESTORE
13 for i = 1 to 10
14 READ id, file$, name$, xPos, yPos, xSize, ySize
15 ` -- További parancsok --
16 next i

Ezzel kész is a "beégetett pálya" kód. Pályák, vagy más adatokat szokás velük tárolni, kis projektek esetén.

A FOR-NEXT ciklus közötti kódrész úgy fut le többször, hogy az egyes futtatások során i változó értéke 1 - 10 ig fog növekedni. A ciklus "visszafelé" is képes számolni, pl: for i = 10 to 1 !

Normális esetben a program fentről-lefelé hajtja végre a parancsokat, de az elágazások lehetővé teszik, hogy átugorj egy szakaszt (és utána visszatérj). Az ősrégi megoldás a GOTO, ami címkékhez ugrik:

Példa #2
1 GOTO NeCsinald
2 megisCsinald:
3 PRINT "HELLO"
4 NeCsinald:
5 PRINT "VILÁG!"
6 GOTO megisCsinald

Melynek kimenete: VILÁG!HELLOVILÁG!HELLOVILÁG!... amíg le nem állítod a programot ESC billentyűvel. A programod végtelen ciklusban van. A GOTO régi találmány, és nem illik a DarkBasic-hez. Hanyagold.

A DO-LOOP szerkezet is egy ciklus, addig hajtja végig újra meg újra a sorokat, amíg egy EXIT utasítással ki nem lépsz a ciklusból:

Példa #3
1 DO
2 if mouseclick() = 1 then EXIT ` -- Csak bal egér kattintáskor lép ki
3 LOOP
4 END

A mouseclick() egy függvény. A () miatt hasonlít egy tömbhöz, de nem az. A függvényekről később lesz szó.

Ha gyakran csinálsz egy sor ugyanolyan műveletet, rengeteg sor keletkezik, és nehéz lesz átlátni. Ha a művelet változik, mindenhol át kell írnod... Ezért az alprogramokkal csoportosítsd a kódot, kisebb részekre.

Példa #4
1 GOSUB Lotto
2 END
3  
4 Lotto:
5 PRINT "A hét lottószámai:"
6 PRINT "5, 19, 32, 55, 79"
7 RETURN ` A return után a program végrehajtása a gosub-nál folytatódik.

Egy új parancs megismerésével, a felhasználótól is kérhetsz be adatot. Az INPUT első paramétere egy string ami ki lesz írva (kérdésként) a képernyőre. A második paraméter ben tudod megadni, melyik változóban lesz eltárolva a begépelt érték, ami lehet string, vagy bármelyik más típus.

Példa #5
1 ` -- Hi World 2.0 --
2 ` by: Goobe
3  
4 say$ = "What a lovely day, isn't it ..."
5 print say$
6 print repChar$("-",len(say$)) ` \\ Annyi kötőjelet ír ki új sorba, amennyi a say$ hossza, így elég módosítani a say$-t és mindig alá lesz húzva
7 input "...what's your name anyway? ", yourname$
8 print "Hi then, " + yourname$ + " !"
9  
10 end
11  
12 function repChar$(char$, times) ` \\ A repChar visszatérő értéke a 'char$' megismételve 'times' alkalommal
13 for i = 1 to times
14 repReturn$ = repReturn$ + char$
15 next i
16 endfunction repReturn$

A forrásban van egy függvény. A függvények bemeneti paramétereket kapnak, változókat (tömböt nem). A függvényen belül csak a globális és a paraméterként kapott változókkal lehet számolni. Csak globális változót képes módosítani véglegesen, minden más változó elvész amint végetér a függvény. Visszatérő értékét számításokban lehet használni, vagy mint a fenti példán, ahol nem számot hanem szöveget adott vissza a repChar$(). A $ jel elhagyásával számot adna vissza. A visszatérő érték nevét az endfunction után kell megadni.


Gyakorlás:

Keret 1.1
Írj egy olyan függvényt, aminek egy string paramétere van. Írja ki a kapott szöveget, de 3 sorban, karakterekkel keretezve! Mindig a kapott string hossza alapján "rajzoljon"! Példa:
/-----------\
| Hi World! |
\-----------/

Függvény definíció: keret(felirat$)

Tipp: Használd nyugodtan a fenti példa, repChar$() függvényét a megvalósításhoz!

Keret 1.2
A keret függvény kapjon új paramétereket, amivel befolyásolni lehet a keretet felépítő karaktereket.

Függvény: keret_egyedi("Hello!", "#", "#", "<", ">", "-" , "|"), kimenet:
#--------#
| Hello! |
<-------->

Keret 1.3
Az kirajzolás karaktereit egy tömb tárolja, és csak egy string paraméter adja meg, melyik "stílus" legyen alkalmazva. pl.: keret_stilus("Hello!","banner") . Legyen legalább 3 stílus, a fenti kettő, és találj ki egy harmadikat.

Keret 1.4
Lehessen egy utolsó paraméterrel a behúzás mértékét állítani (bal oldalon " " space-ek). Tehát a végleges függvény:

keret_behuzva(felirat$, stilus$, behuzas)


Átlag 2.1
Készíts egy olyan programot ami bekér osztályzatokat, de többféle tantárgyban. Amikor minden tantárgy összes jegyét megkapta, törölje a képernyőt és készítsen egy "statisztikát" ilyen módon formázva (a ... a többi tantárgy helyét jelzi):

Matek
  10 db jegy
  ----------
  Átlag: 3,1

Magyar
  13 db jegy
  ----------
  Átlag: 4,2

...

Év végi átlagod: 4.0

Átlag 2.2
Írd át az előző verziót, hogy először kérje be a felhasználótól a nevét, a tantárgyak számát, és nevét. A kiértékelésnél el kell döntened, hogy melyik a tantárgy legalacsonyabb és legmagasabb érdemjegye. A végén pedig az átlagon felül, írd ki annak a tantárgynak a nevét, amiben a legjobb átlagot elért a felhasználó. Tehát példa az új kimenetre:

Matek
  10 db jegy, legrosszabb: 3, legjobb: 5
  --------------------------------------
  Átlag: 3,1

Informatika
  14 db jegy, legrosszabb: 4, legjobb: 5
  --------------------------------------
  Átlag: 4,8

...

Év végi átlagod: 4.0
Kedvenc tantárgyad: Informatika


Ha minden feladatot meg tudtál oldani magadtól, akkor érdemes lesz továbbolvasnod a cikksorozatot! Ha valamit nem értesz olvasd el a korábbi cikkeket:

Cikk: Alapok - Szintaxis 1
Cikk: Alapok - Szintaxis 2

Zene

Google keresés

Váltó

Digitális Táregység


Számrendszer

#=

IMDb Keresés

Kód

Karakter

Szín

Szín kódtábla

Webmaster: GoobeMaster
Érvényes XHTML és CSS
Minden jog fenntartva! ® 2010 - 2017
Jogtulajdonos: United Voxels Ltd. (United Kingdom)

Check Google Page Rank

Technikai háttér: