Kirjoittaja: thefox
Opetettavat käskyt: PRINT, CLS, INPUT
Tämä (tällä hetkellä) pieni opas on kirjoitettu avustukseksi aloitteleville ja ehkä hieman kokeeneemmillekin QBasic/ QuickBasic ohjelmoijille. QBasic:hän on Microsoftin varsinkin aloittelijoiden suosima, yllätys yllätys, ilmainen BASIC-tulkki. BASIC tulee sanoista Beginners' All Purpose Symbolic Instruction Code, joka kuvaakin kieltä ihmeen hyvin. Englannin sana 'basic' tarkoittaa muuten yksinkertaista.
Moni luulee, ettei BASIC:illä (alan tästä lähtien puhumaan QBasicistä) voi saada aikaan tehokasta koodia. Tämä on yleinen harhaluulo, ja olenpa melko usein huomannut, että aloittelevat QBasic-koodarit selittelevät huonoja pelejä/ohjelmiaan sillä, että QBasic on niin tehoton. Sanon nyt vain, että oikein käytettynä QBasic:illäkin voi saada aikaan todella hienoja sovelluksia, pelejä lähinnä. Hyötyohjelmapuolihan näinä päivinä painottuu vahvasti Windows-puolelle.
QBasic:in huonohko puoli on, että sillä ei voi tehdä levitykseen kelpaavia EXE-tiedostoja, vaan siihen tarvitaan kaupallinen Quick Basic (joka ei jostain syystä vieläkään ole ilmaislevityksessä... terveisiä Microsoftille!) No, Googlehan on keksitty ja sieltä Quick Basic:kin pitäisi löytyä suht. koht. vaivattomasti. Muistathan toki että et saa käyttää imuroimaasi Quick Basic:iä ellet omista aitoa ja alkuperäistä QB:tä ;-)
Uuteen (tai ensimmäiseen) kieleen tutustuttaessa ensimmäinen ohjelma on yleensä todella yksinkertainen. Jo klassikoksi muodostunut "Hello world!" saa kelvata meillekin. Tähän tarvitaan ainoastaan yksi koodirivi, joka sisältää yhden käskyn.
PRINT "Hello world!"
Ja siinä on kaikki mitä tarvitsemme! Kun olet kirjoittanut (tai kopioinut) yllä olevan koodin pätkän QB:hen, paina F5 testataksesi miltä juuri kirjoitettu ohjelma näyttää. Ja eikös totta, sehän tulostaa "Hello world!".
Ko. koodirivissä ei paljon analysoimista ole, tekstin tulostamiseen käytetään QB:n sisäänrakennettua funktiota, PRINT. PRINT ottaa parametrikseen tekstin, jonka ohjelmoija haluaa ruudulle tulostaa, tässä tapauksessa "Hello world!". Huomaa, että kaikki merkkijonot QB:ssä suljetaan kahden lainausmerkin sisään. Annetaan nyt vielä se PRINTin syntaksi:
PRINT [expressionlist][{,|;}]
Kuten näkyy, yksikään PRINT:in parametreista ei ole pakollinen (hakasulkeissa olevat ovat vapaaehtoisia). Kirjoittamalla pelkkä "PRINT", tulostaa ohjelma tyhjän rivin, eli vaihtaa riviä. Omassa ohjelmassamme "Hello world!" oli [expressionlist], ja jätimme viimeisen parametrin kirjoittamatta. Viimeinen parametri voi olla joko pilkku (",") tai puolipiste (";"). Puolipisteen tapauksessa rivinvaihto jätetään pois, ja jos laitat pilkun, pistää ohjelma rivinvaihdon sijasta tabulaattorin. Pilkku on todella hyödyllinen mm. tiedon taulukoimisessa sarakkeisiin, mutta siitä lisää myöhemmin.
No mitäs sitten? Tässä ensimmäisessä osassa en vielä kovin suuremmin syvenny itse kielen rakenteeseen, joten otetaanpa toinen QB:n peruskäsky, CLS.
CLS tulee sanoista Clear Screen, 'tyhjennä ruutu'. Sitä saa mitä tilaa, CLS todellakin tyhjentää ruudun ja siirtää tekstiosoittimen ruudun vasempaan yläkulmaan. Tässä laajenettu "Hello world"-esimerkki:
CLS PRINT "Hello world!"
Ensimmäinen rivi tyhjentää ruudun, toinen tulostaa tekstin. Kätevää, eikö? Mutta eikö olisi mukava että ohjelma voisi olla edes pienenpienessä vuorovaikutuksessa itse käyttäjän kanssa? No totta kai se olisi mukavaa, mistä pääsemmekin seuraavaan peruskäskyyn, eli INPUT:iin. CLS:n syntaksia en tässä ala käymään läpi (ottaa yhden parametrin).
INPUT-käsky odottaa käyttäjältä syötettä näppäimistön kautta. Syötteellä voi olla monta tyyppiä: kokonaisluku, merkkijono, liukuluku jne. Tässä tapauksessa käytämme merkkijonoa. Esimerkkiä pukkaa taasen:
CLS INPUT "Kirjoita nimesi: ", A$ PRINT "Hello " + A$ + "!"
Ensimmäinen rivi on jo tuttua huttua, mutta toinen rivi onkin jo noin pyöreästi sanottuna kymmenen pilkku neljäsataakolmekymmentäviisi kertaa mielenkiintoisempi ;-) INPUT käskyn syntaksi on seuraava:
INPUT[;]["promptstring"{;|,}]variablelist
Aloitetaan alusta, eli parametrista [;]. Kuten näet, parametri ei ole pakollinen (INPUT ottaa yhden pakollisen parametrin, variablelist). Jos pistät puolipisteen heti alkuun, ei ohjelma tulosta tyhjää riviä INPUT-käskyn jälkeen. Pieni esimerkki lienee olisi asiaa.
INPUT ; "Kirjoita nimesi: ", A$ PRINT "Terve!"
Tuloste:
Kirjoita nimesi: fawkzTerve!
Kuten huomaat, puolipiste esti INPUT:ia vaihtamasta riviä, ja niin "Terve!" viesti tuli samalle riville INPUT:in kanssa. Itse en puolipistettä ole INPUT:in alussa käyttänyt juuri koskaan. Tietyissä tapauksissa se voi tosin olla hyödyksi.
Mutta sitten eteenpäin, eli seuraavaan parametriin, joka on ["promptstring"{;|,}]. "promptstring" voi olla mikä tahansa merkkijono, meidän esimerkissämme se on "Kirjoita nimesi: ". Tämän parametriin jälkeen voi laittaa (ei ole pakko) puolipisteen tai pilkun, taas kerran. Tällä kertaa niillä on eri tarkoitus kuin PRINT-käskyssä. Puolipisteen ollessa INPUT tulostaa "promptstring":in perään kysymysmerkin, pilkun ollessa se ei tulosta mitään. Oletusarvo on puolipisteen kanssa, eli ilman pilkkua ohjelma tulostaa kysymyksesi perään typerän näköisen kysymysmerkin. Tästä johtuen "Hello world"-esimerkissämme käytämme pilkkua.
Vielä on yksi parametri jäljellä, nimittäin variablelist. Tämä määrittelee, minne käyttäjän antama syöte tallennetaan. variablelist:issä voi olla useita muuttujia (A$ on muuttuja) peräkkäin. Vaikkapa seuraavanlainen INPUT käsky on täysin mahdollinen:
INPUT "Kirjoita nimesi ja ikäsi: ", Nimi$, Ika
Nimi tallennetaan 'Nimi$'-muttujaan, ja ikä 'Ika'-muuttujaan. Arvot pitää antaa INPUT:ille pilkulla erotettuna, esim. "fawkz,16". Jos arvoilla on väärä tyyppi (yrität kirjoittaa iäksesi merkkijonoa), tai arvoja on väärä määrä, tulostaa QB viestin "Redo from start", eli "Aloita alusta".
Lopullinen "Hello world" -esimerkkimme voisi näyttää vaikka tältä:
CLS PRINT "Käytä pilkkua nimien eroittamiseen!" INPUT "Kirjoita etu- ja sukunimesi: ", Etunimi$, Sukunimi$ PRINT "Terve " + Etunimi$ + "! (Sukua " + Sukunimi$ + ")"
Hei! Ei kai tämä nyt vielä voi loppua? Kyllä vain, mutta muistutan että tämä oli vasta ensimmäinen osa. Myönnän, ja pahoittelen, etten vielä tässä ensimmäisessä (koht. lyhyeksi jääneessä) osassa selostanut QB-ohjelmien rakennetta lähes yhtään, mutta lupaan parantaa tapani seuraavaan osaan mennessä, jossa aiheinamme ovat ainakin (suluissa muutama opetettava käsky):
Nähdään seuraavassa osassa, joka ilmestyy kun sen jaksan kirjoittaa. Laiskuudestani johtuen se voi tosin viedä jopa viikkoja... Jos haluat seuraavan osan kirjoittamiseen vauhtia, niin tipauta sähköpostia osoitteeseen _____@luukku.com.
oli vähä vaikeeta tajuta :P
Opas kirjoitti:
Muistathan toki että et saa käyttää imuroimaasi Quick Basic:iä ellet omista aitoa ja alkuperäistä QB:tä ;-)
Mutta eikö sinunkin Windows 98:n CD-ROM-levylläsi ole QBasic 1.1-kääntäjää? Omallani ainakin oli... Ja ei kai se voi olla kuin se aito, oikea, ostettu QBasic? (Emmekös me kaikki käytäkin aitoa Windowsia?)
Eikö sitten netistä saa ilman QBasic kääntäjää? Voi p*****e!!!
Metabolix: puhuinkin Quick Basicistä, en QBasicistä. QBasic on pelkkä tulkki.
lainaus:
BASIC tulee sanoista Beginners' All Purpose Symbolic Instruction Code
Itseasisassa Basic ei tule mistään. Kielen alkuperäinen nimi oli alunperin suunniteltu olevan Basic, eli yksinkertainen. Joku vain myöhemmin keksi, että sen täytyy olla lyhenne jostain suuremmasta.
Mitä nyt sitten haluaa uskoa, http://en.wikipedia.org/wiki/
Mikä on uusin versio tosta Q Basicista`?
Mikä on sen kaupallisen basicin versio millä saa niitä exe.
tiedostoja?
Miksi muuten se ei halua kirjoittaa siihen QBasic:iin esim.$ tommoista merkkiä?
Pitääkö olla erilliset näppäin komennot vai?
CLS
COLOR 12
PRINT
PRINT "Moi!"
Tolla COLOR käskyllä on kätevä muuttaa tekstin väriä.
Värivalikoima tosin on kovin rajoittunut.
Oikein hyvä! :)
Ihan OK. Pääsin ainakin alkuun.
Voisko tohon toisen osan kirjottamiseen panna vähän vauhtia???????????????????????????????????????????
MITEN SAAN " MERKIT SIIHEN PRKL!!!!!
MITEN SAAN " MERKIT SIIHEN PRKL!!!!!
painat sift ja 2 "
tuo "COLOR" neuvo oli hyvä.
jee. Tässä vaiheessa voin tehdä pelin jonka tehtävänä on kirjoittaa oma etu- ja sukunimi + ikä. Kyllä kaverit hämmästyy. :-)
kun yritän kirjottaa tonne $, se ei kirjota sitä.
mitä avuksi? aloitin QBasic ohjelmoinnin 40sek sitten.
http://www.qbcafe.net/qbc/german/download/
tuolta saa quickbasic kääntäjän
Clacier kirjoitti:
kun yritän kirjottaa tonne $, se ei kirjota sitä.
mitä avuksi?
Ööh...
Paina Alt Gr + 4 niin pitäis tulla $.
(nimetön) kirjoitti:
oli vähä vaikeeta tajuta :P
Miten se voi olla niin vaikeaa? Tämä opas on todella helppo.
Huomio! Kommentoi tässä ainoastaan tämän oppaan hyviä ja huonoja puolia. Älä kirjoita muita kysymyksiä tähän. Jos koodisi ei toimi tai tarvitset muuten vain apua ohjelmoinnissa, lähetä viesti keskusteluun.