Johdantoa ohjelmointiin

Koko: px
Aloita esitys sivulta:

Download "Johdantoa ohjelmointiin"

Transkriptio

1 Johdantoa ohjelmointiin Mikä ensimmäiseksi ohjelmointikieleksi? Ensimmäisestä ohjelmointikielestä on riittänyt juttua Internetin keskusteluryhmissä ja - palstoilla. Kaikenlaisia kannanottoja asiasta on ollutkin, mutta välillä tuntuu siltä, että parhaita aloitusohjelmointikieliä on yhtä monta kuin ehdottajiakin. Monesti jostain kumman syystä se oma lempiohjelmointikieli tuppaa olemaan suosituslistan kärjessä. Mutta vaikeahan eri vaihtoehtoja on punnitakin, kun ohjelmoinnin voi aloittaa vain kerran elämässä. Seuraavat asiat voisi ottaa huomioon ohjelmointikielen valinnassa: Ohjelmointiympäristön asentaminen on helppoa tai mukana on kunnolliset asennusohjeet. Kieli on yksinkertainen mutta opettaa kuitenkin ohjelmoinnin perusasioita. Kielellä saa heti jotain kiinnostavaa aikaan. Motivaatio nopeuttaa oppimista huomattavasti. Kieleen on helposti saatavilla suomenkielistä oppimateriaalia (esim. Internetistä tai kirjastosta). Kieltä osaavaa väkeä löytyy ystäväpiiristä tai Internetin ohjelmointiaiheisilta keskustelualueilta. Edellisin perustein seuraavat ohjelmointikielet ovat sopivia aloittelijalle: Perinteinen ohjelmoinnin aloituskieli on Basic. Tällä hetkellä suosituimmat Basickielet ovat Microsoftin valmistamia: DOSille QBasic ja Windowsille Visual Basic. Ensimmäiset Basicit olivat melko alkeellisia ja ohjelmista tuli helposti sekavia, minkä vuoksi kielellä on edelleen huono maine monien ohjelmoijien keskuudessa. Basic on kuitenkin kehittynyt huimasti vuosien saatossa, ja esimerkiksi Visual Basic riittää paljon pidemmälle kuin alkeisiin. C on yksi suosituimmista ohjelmointikielistä, jolla on tehty kokonaisia käyttöjärjestelmiä. Kieli ei itsessään sisällä mitään järjestelmäriippuvaisia toimintoja; jopa tekstin kirjoittaminen näytölle täytyy toteuttaa erillisen kirjaston avulla. Tämän menettelyn etuna on se, että standardinmukainen C-koodi toimii ilman muutoksia järjestelmällä kuin järjestelmällä. C-kieli saattaa alkuun vaikuttaa hankalalta, mutta hyvästä ohjelmointioppaasta on apua tähän vaivaan. Basicin ja C:n välimaastossa oleva Pascal on myöskin hyvä valinta ensimmäiseksi kieleksi. Ehkä tunnetuin Pascal-kielien valmistaja on Borland, jonka Turbo Pascal (DOS) ja Delphi (Windows) ovat hyväksi havaittuja ohjelmointivälineitä. Delphi ja Visual Basic ovat suurin piirtein samanveroisia, vain niiden käyttämä kieli on eri. Jos Internet-ohjelmointi kiinnostaa vähänkin, kannattaa hetimmiten tutustua PHP:hen, joka on ilmainen, helppo ja tehokas palvelinpohjainen ohjelmointikieli.

2 PHP:n käyttömahdollisuudet ovat lähes rajattomat: kielellä voi luoda niin yksinkertaisen kävijälaskurin omalle kotisivulle kuin kokonaisen tietokantoja hyödyntävän verkkopalvelun. Jos joku ehdottaa kieltä X ensimmäiseksi ohjelmointikieleksi, koska "siitä on hyötyä myöhemmin", kannattaa sellaisen puheen antaa mennä toisesta korvasta sisään ja toisesta ulos. Ensinnäkään kukaan ei voi tietää, millä kielellä tulevaisuudessa ohjelmoidaan. Lisäksi uusien ohjelmointikielien oppiminen on helppoa, kun yksi kieli on suurinpiirtein hallussa. Kaikissa yleisimmissä ohjelmointikielissä toistuvat nimittäin samat perusasiat. Ja sellaista kieltä ei ole olemassakaan, joka soveltuisi kaikkiin ohjelmointitehtäviin. Ohjelmoija ei ole sidottu yhteen kieleen. Sanastoa Ohjelma täytyy muuntaa mahdollisimman yksinkertaiselle tasolle, konekielelle, jotta tietokone pystyy sen suorittamaan. Kääntäjä (compiler) muuttaa koko ohjelman yhdellä kertaa konekieliseksi, jonka jälkeen alkuperäistä koodia ei enää tarvita ohjelman suorittamiseen. Käytännössä aina lopullinen ohjelma on käännetty, esimerkiksi Windowsin EXE-tiedostot. Tulkki (interpreter) taas muuttaa ohjelmakoodin rivejä konekieliseksi sitä mukaa, kun ohjelman suoritus edistyy. Vakio (constant) on koko ohjelman suorituksen ajan samana pysyvä tieto, jolle on annettu tekstitunnus. Esimerkiksi vakion PII arvo voisi olla 3, Muuttuja (variable) on ohjelman aikana mahdollisesti vaihtuva tieto, esimerkiksi Kajaanin lämpötila. Taulukko (array) sisältää yhdessä paketissa monta muuttujaa, esimerkiksi kaikkien Suomen kaupunkien lämpötilat. Useimmissa ohjelmointikielissä muuttujalla on tyyppi. Merkkijono (string) on tekstiä sisältävä muuttuja, kokonaisluku (integer) lienee ennestään tuttu ja liukuluku (floatingpoint number) vastaa desimaalilukua. Boolean-arvo (Boolean value) on joko tosi tai epätosi. Muuttujan viemä tila muistissa vaikuttaa siihen, kuinka paljon muuttujaan mahtuu tietoa: mikä on merkkijonon maksimipituus tai miten monta numeroa luvussa saa olla. Esimerkiksi kahden tavun kokoisen kokonaislukumuuttujan rajat voivat olla Aliohjelmia (subprogram) ja funktioita (function) käytetään silloin, kun ohjelmassa toistuu useaan otteeseen samantapainen koodinpätkä. Esimerkiksi TallennaTiedotniminen aliohjelma voisi tallentaa kaikki ohjelman muuttujat tiedostoon. Parametri (parameter) on aliohjelmalle tai funktiolle pääohjelmasta välitettävä tieto. Funktiolla on usein myös palautusarvo (return value). Esimerkiksi MuutaMarkatEuroiksi-funktio voisi parametrin 100 saatuaan palauttaa arvon 16,82. Proseduuri (procedure) on yleisnimitys aliohjelmille ja funktioille. Kirjasto (library) on kokoelma tiettyyn aiheeseen liittyviä aliohjelmia ja funktioita. Esimerkiksi DirectX ja OpenGL ovat grafiikkakirjastoja: niiden ansiosta ohjelmoijalla on käytössään valmiit työkalut grafiikan piirtämiseksi näytölle.

3 Visual Basic -opas Osa 1 - Johdanto Mikä on Visual Basic? Kun Microsoft julkaisi vuonna 1991 Visual Basicin ensimmäisen version, se oli merkittävä helpotus vaikeana pidettyyn Windows-ohjelmointiin: aloittelijakin pystyi sen avulla luomaan toimivia ja tyylikkäitä ohjelmia. Uusien versioiden mukana Visual Basiciin on tullut monia parannuksia, ja se soveltuu laajojenkin ohjelmien tekemiseen. Enää Basic ei ole pelkästään aloittelijoille tarkoitettu harjoitteluohjelmointikieli, josta täytyy siirtyä pois taitojen kehittyessä. Tässä opassarjassa käytetään Visual Basicin versiota 6.0. Melkein kaikki esimerkit toimivat kuitenkin suoraan tai pienin muutoksin vanhemmilla versioilla. Sen sijaan VB.NETin opetteluun opassarja ei sovellu, koska kieli poikkeaa monilta osin Visual Basicin aiemmista versioista. Mielestäni VB.NETiin siirtymiseen ei ainakaan toistaiseksi ole syytä, vaan tavallinen Visual Basic riittää melkein kaikkiin tarkoituksiin paremmin kuin hyvin. Etuna VB.NETiin verrattuna on ohjelmien toimiminen vanhoissa käyttöjärjestelmissä. Ohjelmointiympäristö Seuraavassa kuvassa on Visual Basicin ohjelmointiympäristö perustilassa: Jokainen ohjelma on erillinen projekti, johon voi liittyä useita tiedostoja. Projektiin kuuluvat tiedostot näkyvät oikeassa yläkulmassa olevassa listassa. Tavallisin projektin osana oleva tiedosto on lomake (form), joka vastaa yhtä ohjelmaan kuuluvaa ikkunaa. Se

4 sisältää ikkunassa näkyvät painonapit, tekstikentät, vierityspalkit ja muut ohjaimet (controls). Tämän lisäksi lomakkeeseen kuuluu melkein aina ikkunaan liittyvää ohjelmakoodia. Kuvassa keskellä on muokkaustilassa oleva lomake sekä sen alapuolella koodi-ikkuna. Vasemman reunan työkalupalkissa on lomakkeelle lisättävät ohjaimet. Ohjain yksinkertaisesti piirretään lomakkeelle, minkä jälkeen sen sijaintia, kokoa ja ominaisuuksia (properties) pystyy muuttamaan. Ominaisuuksien muuttaminen tapahtuu ikkunan oikeassa laidassa olevan ominaisuuslistan avulla. Esimerkiksi komentopainikkeen ominaisuus Caption määrittää painikkeessa näkyvän tekstin. Myös lomakkeella on ominaisuuksia, joiden muuttaminen tapahtuu samalla tavalla. Ominaisuuksien lisäksi ohjaimiin ja lomakkeeseen liittyy tapahtumia (events) ja toimintoja (methods). Esimerkkinä komentopainikkeessa Click-tapahtumassa oleva koodi suoritetaan silloin, kun käyttäjä painaa nappulasta. Yksi painonappiin liittyvistä toiminnoista taas on SetFocus, joka aiheuttaa nappulan aktivoitumisen. Silloin muun muassa käyttäjän näppäinpainallukset ohjautuvat siihen. Ohjainten tapahtumat ohjaavat koko ohjelman suoritusta; näistä asioista tuleekin lisää tietoa oppassarjan seuraavassa osassa. Tavallinen ohjelma Nyt teemme pari yksinkertaista ohjelmaa. Lisää lomakkeelle ohjeteksti (Label), tekstikenttä (TextBox) ja painonappi (CommandButton). Ohjainten oletusnimet ovat Label1, Text1 ja Command1 ne saavat nyt kelvata. Kirjoita ohjetekstin Captionominaisuudeksi "Kirjoita nimesi:", tyhjennä tekstikentän Text-ominaisuus ja muuta vielä painonapin Caption-arvoksi "Paina!". Lopputuloksen pitäisi olla suurinpiirtein seuraavan kuvan kaltainen: Klikkaa sitten kahdesti lomakkeella olevaa nappia, jolloin koodi-ikkuna tulee esiin. Ikkunassa näkyy valmiiksi kirjoitettu koodi, joka on Command1-ohjaimen Clicktapahtuman pohja. Tämä koodi suoritetaan aina silloin, kun käyttäjä painaa nappia. Muuta koodia seuraavasti: ' tähän tullaan silloin, kun käyttäjä painaa Command1-nappia Private Sub Command1_Click() MsgBox "Terve, " & Text1.Text

5 Heittomerkillä alkavat rivit ovat ohjelmoijan omia kommentteja, jotka eivät vaikuta ohjelman suoritukseen. Nyt on ohjelman koeajon aika. Paina F5-näppäintä (tai nappularivistä oikealle osoittava nuolta tai Run-valikosta Start-kohtaa), jolloin ohjelma käynnistyy ja äsken tekemäsi ikkuna tulee näytölle. Kirjoita nimesi tekstikenttään ja paina nappia. Silloin näkyviin tulee pieni viesti-ikkuna, jossa on tervehdys ja kirjoittamasi nimi. Kun suljet ohjelman, palataan jälleen ohjelmointitilaan. Näkymätön ohjelma Seuraava ohjelma on hieman toisenlainen, sillä siinä ei ole lainkaan lomaketta eikä siis ikkunaa. Klikkaa lomakkeen nimestä projektilistalla, ja valitse sitten Project-valikosta Remove Form1. Nyt projektissa ei ole yhtään tiedostoa, mikä ei kuitenkaan käy päinsä. Lisää sen vuoksi moduuli (module) saman valikon kohdasta Add Module. Moduulissa voi olla ohjelman yhteisiä osia, joiden käyttäminen on mahdollista kaikista lomakkeista. Lisäksi on mahdollista tehdä näkymätön ohjelma, joka on kokonaan moduulissa. Näin me teemme nyt. Kirjoita moduuliin seuraava koodi: ' tähän tullaan heti ohjelman käynnistyessä Sub Main() MsgBox "Tässä ohjelmassa ei ole lainkaan ikkunaa!" Paina sitten F5, jolloin näkyviin tulee viesti-ikkuna. Heti sen jälkeen ohjelma sulkeutuu. Ohjelman suoritus alkaa automaattisesti moduulissa olevasta Main-osasta, koska projektissa ei ole mitään muita tiedostoja. Jos kuitenkin projektissa on muita tiedostoja, moduulialoitus täytyy erikseen valita Project-valikon alimmasta Properties-kohdasta. Ohjelman aloittava lomake tai moduuli valitaan Startup Object -listasta. Ohjelman kääntäminen Ohjelman kääntäminen tarkoittaa, että siitä tehdään itsenäinen, ajettava exe-tiedosto, jota voi käyttää toisella koneella ilman Visual Basicia. Ohjelma käännetään valitsemalla Filevalikosta kohta Make [nimi].exe. Ennen kääntämistä pääsee vielä vaikuttamaan ohjelman tietoihin ja käännökseen liittyviin asetuksiin painamalla tallennusikkunassa Optionsnappia. Jokainen Visual Basicilla tehty ohjelma vaatii toimiakseen koneelle asennetun ajonaikaisen kirjaston. Tiedoston nimi riippuu Visual Basicin versiosta, esimerkiksi kuutosversiolla tehty ohjelma ei toimi ilman MSVBVM60.DLL-tiedostoa. Ajonaikaisen kirjaston koko on sen verran suuri, ettei sitä yleensä kannata laittaa Internetistä ladattavan ohjelman mukaan. Sen sijaan kannattaa ilmoittaa osoite, josta kirjaston voi kopioida, jos käyttäjällä ei ole sitä valmiiksi koneellaan.

6 Tiedostojen päätteitä Seuraavassa taulukossa on tavallisia Visual Basicin tiedostopäätteitä: pääte selitys vbp projektitiedosto, joka sisältää kaikkien muiden projektiin kuuluvien tiedostojen nimet frm ikkunaa vastaava lomake, jossa on ohjaimet ja niihin liittyvät ominaisuudet sekä koodi frx sisältää lomakkeeseen liitetyn grafiikan (tästä ei tarvitse huolehtia itse) bas moduuli, jossa on yleisiä ohjelman osia; voi myös olla itsenäinen ohjelma cls luokka, joka vastaa pääosin moduulia, mutta on olio-ohjelmointia Tiedostot tallennetaan tavallisessa tekstimuodossa, minkä ansiosta niitä pystyy muokkaamaan millä tahansa tekstieditorilla. Osa 2 - Käyttöliittymä Melkein jokaiseen Windows-ohjelmaan kuuluu käyttöliittymä: käyttäjälle näkyvät ikkunat ja niiden sisällä olevat ohjaimet ja valikot. Visual Basicissa käyttöliittymän suunnittelu on helppoa, koska se tapahtuu suurimmaksi osaksi piirtämällä ja ikkuna on koko ajan näkyvillä lopullisessa muodossaan. Useimmat eri ohjainten ominaisuuksista ja tapahtumista ovat yhteisiä, ja niiden tarkoitusta ei ole vaikea päätellä. Tässä oppaassa käydään läpi tärkeimmät ohjaimet ja niiden yleisimmät käyttötarkoitukset. Lopuksi tulee vielä neuvoja käyttöliittymän suunnitteluun. Ominaisuudet, tapahtumat ja toiminnot Visual Basicin ohjaimiin liittyy monia ominaisuuksia, tapahtumia ja toimintoja. Eräät niistä ovat samoja melkein joka ohjaimessa, toiset taas erityisesti tiettyyn ohjaimeen kuuluvia. Jokaisella ohjaimella esimerkiksi on Name-ominaisuus, joka ilmoittaa ohjaimen nimen. Suurimman sallitun pituuden määräävä MaxLength sitä vastoin on pelkästään tekstikentän ominaisuus. Ominaisuuksia ovat muiden muassa ohjaimen nimi, sijainti ja koko, siinä näkyvä teksti tai kuva, väri ja fontti. Joitain ominaisuuksia voi muuttaa vain suunnittelutilassa ominaisuuslistan avulla, ja ohjelman suorituksen aikana niitä pystyy pelkästään lukemaan. Toiset ominaisuudet ovat käytössä vain ohjelman ollessa käynnissä, ja niitä ei ole edes näkyvissä ominaisuuslistassa. Seuraavassa on koodinpätkä, joka ensin muuttaa painonapin otsikon (Captionominaisuus) ja sitten näyttää sen viesti-ikkunassa.

7 Command1.Caption = "testi" MsgBox Command1.Caption Tapahtumia ovat esimerkiksi hiiren napsauttaminen ohjaimen yläpuolella tai näppäimen painaminen silloin, kun ohjain on aktiivinen. Tapahtuman yhteyteen voi kirjoittaa koodinpätkän, joka suoritetaan aina silloin, kun käyttäjä tai käyttöjärjestelmä aiheuttaa kyseisen tapahtuman. Koodi-ikkunassa valitaan yläreunan vasemmasta listasta ohjain ja oikeasta listasta sen tapahtuma. Visual Basic muodostaa automaattisesti tapahtuman pohjan. Seuraavan koodin avulla tulee näkyviin viesti-ikkuna, kun käyttäjä painaa nappia. Tapahtuma on silloin Click. Private Sub Command1_Click() MsgBox "Nyt painettiin nappia!" Toiminnot ovat koodista lähtöisin olevia viestejä ohjaimelle. Ohjaimen tiettyä toimintoa kutsutaan koodissa, jolloin ohjain itse pitää huolen lopusta. Toimintoja ei ole yhtä paljon kuin ominaisuuksia ja tapahtumia, ja ne saattavat esimerkiksi muuttaa ohjaimen paikkaa ja kokoa, asettaa ohjaimen aktiiviseksi tai lisätä vaikkapa listaohjaimeen uuden rivin. Seuraava koodi asettaa Command1-ohjaimen aktiiviseksi (painetut näppäimet ohjautuvat ensin siihen), kun käyttäjä napsauttaa lomaketta. Private Sub Form_Click() Command1.SetFocus Vaikka edellä puhuttiin vain ohjaimista, myös lomakkeella siis on ominaisuuksia, tapahtumia ja toimintoja. Sijainti ja koko Kun ohjain on piirretty lomakkeelle, sen sijaintia ja kokoa pystyy muuttamaan hiirellä. Useampia ohjaimia voi valita ympäröimällä ne hiiren avulla tai napsauttamalla jokaista Control-näppäin pohjassa. Ohjaimia voi myös kopioida näppäinyhdistelmillä Control + C ja Control + V (tai Shift + Insert). Jos ohjaimen piirtää kuvakehyksen tai kehyksen sisään, se liikkuu aina pääohjaimen mukana. Ohjaimen sijainnin ilmoittavat ominaisuudet ovat Left ja Top, etäisyys vasemmasta reunasta ja etäisyys yläreunasta. Koon ilmoittavat ominaisuudet ovat Width ja Height, leveys ja korkeus. Seuraavassa kuvassa on esitelty näitä ominaisuuksia:

8 Ohjaimen sijaintia ja kokoa voi muuttaa suoraan näiden ominaisuuksien kautta: Command1.Left = 300 Command1.Top = 300 Toinen tapa on käyttää Move-toimintoa: Command1.Move 300, 300 Visual Basicin oletusmittayksikkö on twip, jonka pituus on 1 / 567 senttimetriä. Myöhemmin tutustutaan muihin mittayksiköihin. Yhteisiä asioita Seuraavat ominaisuudet on lähes joka ohjaimella: Jokaisella ohjaimella on nimen ilmoittava Name-ominaisuus. Ohjaimeen viitataan aina nimen avulla, ja sitä ei pysty muuttamaan ohjelman ajon aikana. Jos ohjaimen Visible-ominaisuus on False, se ei näy lomakkeella. Jos taas Enabled-ominaisuus on False, ohjain näkyy harmaana ja sitä ei pysty valitsemaan. Ohjaimen taustaväri valitaan BackColor-ominaisuudella ja piirtoväri ForeColorominaisuudella. Fonttiin vaikuttaa Font-ominaisuus. MousePointer-ominaisuus määrittää hiiren kohdistimen kuvan ohjaimen yläpuolella. Esimerkiksi 0 on oletuskohdistin ja 11 on tiimalasi. Jos ominaisuuden arvo on 99, kuvan saa valita itse MouseIcon-ominaisuuden avulla. ToolTipText-ominaisuus määrittää tekstin, joka tulee näkyviin ohjaimen yläpuolelle vihjelaatikkoon, kun hiiri pysähtyy hetkeksi sen kohdalle. Tavallisia tapahtumia ovat Click ja DblClick, joihin tullaan silloin, kun käyttäjä klikkaa ohjainta kerran tai kahdesti. Myös Enterin tai välilyönnin painaminen ohjaimen ollessa valittuna tulkitaan klikkaukseksi.

9 Seuraavaksi käydään läpi kaikki tavalliset ohjaimet ja niiden erityispiirteet. Lomake ja MDI-lomake Lomake (Form) on tavallinen ikkuna, MDI-lomake (MDI form) taas on koko ohjelman pääikkuna, jonka sisällä voi olla useampia ali-ikkunoita. Esimerkiksi monissa tekstinkäsittelyohjelmissa auki olevat tekstit ovat tällaisia ali-ikkunoita. Jos lomakkeen MDIChild-ominaisuus on True, se kuuluu MDI-lomakkeeseen. Seuraavassa on lomakkeeseen liittyviä ominaisuuksia: BorderStyle vaikuttaa ikkunan reunukseen ja esimerkiksi siihen, pystyykö ikkunan kokoa muuttamaan. Caption on ikkunan otsikkorivillä näkyvä teksti. Jos ControlBox on False, otsikkorivillä ei ole ohjelman kuvaketta eikä painikkeita. Jos MaxButton tai MinButton on False, suurennus- tai pienennyspainike ei ole käytössä. Icon määrittää ohjelman kuvakkeen, joka näkyy ikkunan vasemmassa ylänurkassa. WindowState ilmoittaa, onko ikkuna tavallinen, pienennetty vai suurennettu. Jos viitataan sen lomakkeen ominaisuuteen tai toimintoon, johon koodi on kirjoitettu, voidaan lomakkeen nimi korvata sanalla Me tai jättää kokonaan pois. Siksi Form1.Caption, Me.Caption ja Caption tarkoittavat kaikki samaa, jos koodi on kirjoitettu Form1:seen. Uusi ikkuna avataan näytölle komennolla OmaFormi.Show ja ikkuna suljetaan komennolla Unload OmaFormi. Komento End sulkee kaikki ikkunat ja poistuu ohjelmasta. Toisen lomakkeen ohjaimiin pääsee käsiksi kirjoittamalla alkuun lomakkeen nimen, esimerkiksi Form2.Command1.Caption. Ennen kuin lomake tulee näkyviin näytölle, siirrytään Load-tapahtumaan, johon kannattaa kirjoittaa kaikki alkutoimenpiteet. Vastaavasti Unload-tapahtuma suoritetaan aina viimeisenä. Activate-tapahtuma on silloin, kun lomake on jo näkyvillä, mutta se muuttuu aktiiviseksi. Kun lomakkeen koko muuttuu, siirrytään Resize-tapahtumaan. Seuraava koodi siirtää ikkunan näytön keskelle heti aluksi. Paikka lasketaan näytön leveyden ja lomakkeen leveyden perusteella. Private Sub Form_Load() Me.Left = Screen.Width / 2 - Me.Width / 2 Me.Top = Screen.Height / 2 - Me.Height / 2 Tämä koodi estää ohjelman lopettamisen Unload-tapahtumassa asettamalla Cancelarvoksi True. Jumittuneen ohjelman sammuttaminen on kuitenkin Visual Basicissa aina mahdollista painamalla Control + Break, ja käännettyyn ohjelmaan tehoaa vanha kunnon Control + Alt + Delete.

10 Private Sub Form_Unload(Cancel As Integer) MsgBox "Eipäs lopukaan!" Cancel = True Ohjeteksti Ohjeteksti (LabelBox) näyttää tavallista tekstiä lomakkeella. Teksti valitaan Captionominaisuudella. Jos AutoSize on True, ohjaimen koko muuttuu tekstin pituuden mukaan. Jos samaan aikaan WordWrap on True, tekstin leveys pysyy vakiona, mutta rivejä tulee tarvittaessa lisää. Tekstikenttä Tekstikenttä (TextBox) on tekstin kirjoittamiseen tarkoitettu alue, jossa toimivat tavalliset muotoilukomennot. Kirjoitettu teksti on Text-ominaisuudessa. Tekstin maksimipituuden voi määrittää MaxLength-ominaisuudella, ja jos tämä arvo on 0, teksti voi olla kuinka pitkä tahansa. Tekstikenttä voi olla joko yksirivinen tai monirivinen. Jos rivejä tarvitaan enemmän, MultiLine-ominaisuuden arvoksi laitetaan True. Vierityspalkit valitaan silloin ScrollBars-ominaisuuden avulla. Tekstikenttää voi käyttää myös salasanan kysymiseen, jolloin PasswordChar on kirjoitetut merkit korvaava peitemerkki, tavallisesti tähti. Tekstikenttään kirjoittamisen voi lisäksi estää laittamalla Locked-ominaisuuden arvoksi True. Aina, kun tekstikentän teksti muuttuu, tulee Change-tapahtuma. Seuraavassa esimerkissä tekstikenttään kirjoitettu teksti kopioituu välittömästi ikkunan otsikkoriville. Private Sub Text1_Change() Me.Caption = Text1.Text Painonappi Painonapissa (CommandButton) on tavallisesti tekstiä, joka valitaan Captionominaisuuden avulla. Jos kuitenkin Style on 1, siihen voi myös valita kuvan Pictureominaisuuteen. Jos Default-ominaisuus on True, painonappi on tummennettuna ja jatkuvasti aktiivisena. Kun käyttäjä klikkaa nappia, tulee Click-tapahtuma. Kehys Kehykseen (Frame) voi järjestellä toisiinsa liittyviä ohjaimia, ja kun ohjaimet piirtää kehyksen sisään, ne myös liikkuvat sen mukana. Caption-ominaisuus määrää kehyksen vasemmassa yläreunassa olevan otsikon, jota välttämättä ei tarvitse laittaa. Kuvakehys ja kuva

11 Kuvakehys (PictureBox) on monipuolinen ohjain, joka vastaa monilta osin lomaketta. Kuvakehykseen piirretyt ohjaimet liikkuvat sen mukana. Kuvan voi valita Pictureominaisuudella, ja tuettuja kuvamuotoja ovat muiden muassa bmp, ico, gif, jpg ja wmf. Jos pelkkä kuvan näyttäminen riittää, kannattaa kuitenkin valita kuva-ohjain (Image), joka kuluttaa vähemmän muistia. Silloin myös kuvan läpinäkyvä tausta näkyy oikein, ja jos Stretch-ominaisuus on True, kuvaa pystyy venyttämään ja kutistamaan. Valintalistat Valintalistoja on kahdenlaisia: tavallinen lista (ListBox) ja yhteen riviin mahtuva alasvetolista (ComboBox). Molempiin lisätään rivejä AddItem-toiminnolla ja poistetaan rivejä RemoveItem-toiminnolla, Clear-toiminto tyhjentää listan. Valittu rivi selviää ListIndex-ominaisuudesta, rivin sisältö Text- tai List-ominaisuudesta ja rivien määrä ListCount-ominaisuudesta. Jos Sorted-ominaisuuden arvo on True, lista järjestellään automaattisesti. Tavallisen listan voi toteuttaa niin, että samalla kertaa pystyy valitsemaan useamman rivin. Tämä on mahdollista kahdella tavalla: MultiSelect- tai Style-ominaisuuden avulla. Ensimmäisessä tapauksessa lista näyttää tavalliselta, mutta useamman rivin valitseminen on mahdollista Control-näppäimen avulla. Toisessa tapauksessa jokaisen rivin alussa on valintaruutu. Toteutustavasta riippumatta SelCount-ominaisuus kertoo valittujen rivien määrän ja Selected-ominaisuus ilmoittaa yksittäisen rivin tilan. Alasvetolista tuntee myös Style-ominaisuuden, mutta käyttötapa on eri. Jos Style on 0, alasvetolista toimii tavallisesti. Jos Style on 1, lista ei ole näkyvissä, vaan vaihtoehtoja voi kelata nuolinäppäimillä. Ja jos Style on 2, alasvetolistaan ei voi kirjoittaa itse, vaan valinta on tehtävä valmiista vaihtoehdoista. Toinen tapa estää kirjoittaminen on käyttää Locked-ominaisuutta. Seuraavassa esimerkissä lomakkeella on lista List1 ja painonapit Command1 ja Command2. Aluksi listaan lisätään kolme riviä. Kun käyttäjä painaa ensimmäisestä napista, valittu kohta poistetaan listalta. Kun käyttäjä painaa toisesta napista, kaikki listan rivit näytetään vuorotellen viesti-ikkunassa. Private Sub Form_Load() List1.AddItem "Eka rivi" List1.AddItem "Toka rivi" List1.AddItem "Kolmas rivi" Private Sub Command1_Click() If List1.ListIndex <> -1 Then List1.RemoveItem List1.ListIndex End If Private Sub Command2_Click() Dim i As Integer For i = 0 To List1.ListCount - 1 MsgBox List1.List(i) Next

12 Jos ListIndex on -1, mitään riviä ei ole valittu. Siksi listalta poistetaan rivi vain, jos ListIndex on joku muu kuin -1. Koska listan rivien numerointi alkaa nollasta, rivien määrä on yhtä suurempi kuin viimeisen rivin tunnus. Tämän takia rivejä näytettäessä käydään läpi rivit nollasta yhtä pienempään kuin ListCount. Valintaruutu ja -nappi Valintaruutuja (CheckBox) voi olla valittuna samaan aikaan useampia; valintanappeja (OptionButton) vain yksi. Jos valintaruudun Value on 1, se on valittu. Saman lomakkeen, kehyksen tai kuvakehyksen sisällä olevat valintanapit kuuluvat samaan sarjaan, jolloin niistä vain yksi voi olla valittuna. Jos valintanapin Value on True, se on valittu. Vierityspalkit Vierityspalkkeja on kahdenlaisia: vaakasuuntaisia (VScrollBar) ja pystysuuntaisia (HScrollBar). Molemmat toimivat samalla tavalla. Min on pienin arvo, Max suurin arvo ja Value senhetkinen arvo. Lisäksi SmallChange on muutoksen suuruus silloin, kun painetaan vierityspalkin päissä olevaa nuolta ja LargeChange on muutoksen suuruus silloin, kun painetaan vierityspalkin taustaa. Change-tapahtuma suoritetaan aina arvon muuttuessa ja Scroll-tapahtuma silloin, kun käyttäjä muuttaa arvoa hiirellä vetämällä. Seuraavassa esimerkissä on pystysuora vierityspalkki VScroll1, jonka Min-ominaisuus on 0 ja Max-ominaisuus on 255. Valittu arvo tulee näkyviin ikkunan otsikkoriville, ja taustaväri myös muuttuu sen mukaan. Kun väri valitaan RGB-muodossa, jokainen värisävy (punainen, vihreä ja sininen) ilmoitetaan väliltä Private Sub VScroll1_Change() Me.Caption = VScroll1.Value Me.BackColor = RGB(0, 0, VScroll1.Value) Tiedostolistat Asemalistan (DriveListBox), hakemistolistan (DirListBox) ja tiedostolistan (FileListBox) avulla pystyy toteuttamaan tiedoston valinnan. Asemalistan asema on ominaisuudessa Drive, hakemistolistan ja tiedostolistan hakemisto on ominaisuudessa Path ja valitun tiedoston nimi on ominaisuudessa FileName. Näytettäviä tiedostoja voi rajoittaa Pattern-ominaisuuden avulla: esimerkiksi "*.txt" näyttää tiedostolistassa vain tekstitiedostot. Seuraava esimerkki kytkee asema-, hakemisto- ja tiedostolistan yhteen. Private Sub Drive1_Change() Dir1.Path = Drive1.Drive Private Sub Dir1_Change() File1.Path = Dir1.Path

13 Seuraava koodi näyttää tiedoston nimen hakemistopolun kanssa, kun käyttäjä napsauttaa tiedostoa listalla. Tässä pitää ottaa huomioon, että jos valittu hakemisto on juurihakemisto, kenoviiva on valmiiksi mukana hakemiston nimessä, mutta muuten se täytyy erikseen lisätä. Private Sub File1_Click() If Right(Dir1.Path, 1) = "\" Then MsgBox Dir1.Path & File1.FileName Else MsgBox Dir1.Path & "\" & File1.FileName End If Ajastin Ajastin (Timer) ei ole näkyvä ohjain. Sen tehtävänä on suorittaa Timer-tapahtumaan kirjoitettu koodi Interval-arvon määrittämin väliajoin. Interval-arvo ilmoitetaan millisekunteina, ja suurin mahdollinen arvo on millisekuntia eli 65,5 sekuntia. Pienin arvo riippuu käyttöjärjestelmästä: Windows 95, 98 ja ME suorittavat tapahtuman korkeintaan 18 kertaa sekunnissa, jolloin pienin todellinen arvo on noin 55 millisekuntia. Windows NT:llä, 2000:lla ja XP:llä pienin arvo on 10 ja 20 millisekunnin välillä. Seuraavassa esimerkissä lomakkeella on Timer1-ajastin, jonka Interval on Tuloksena on joka sekunti päivittyvä kello ikkunan otsikkopalkissa. Private Sub Timer1_Timer() Me.Caption = Time Lisää ohjaimista Grafiikan piirtoon tarkoitetut ohjaimet kuvio (Shape) ja viiva (Line) käsitellään opassarjan viidennessä osassa samoin kuin muiden ohjainten grafiikkaan liittyvät ominaisuudet, tapahtumat ja toiminnot. Kahdeksannessa osassa perehdytään tarkasti näppäimistön ja hiiren käsittelyyn. Oletusominaisuudet Kullakin ohjaimella on oletusominaisuus, johon viitataan silloin, kun kirjoitetaan pelkästään ohjaimen nimi. Tekstikentän oletusominaisuus esimerkiksi on Text, jolloin Text1.Text ja Text1 tarkoittavat samaa asiaa. Oletusominaisuuksien käyttö hieman lyhentää koodia, mutta samalla vaikeuttaa sen lukua. Tekstikentän lisäksi Label1.Caption korvataan toisinaan Label1 ja Picture1.Picture korvataan Picture1. Muita oletusominaisuuksia käytetään ani harvoin. Valikot Valikot luodaan erillisellä editorilla, joka käynnistyy valitsemalla Tools-valikosta Menu Editor tai klikkaamalla vastaavaa kuvaketta työkalurivillä. Jokaisella valikkokohdalla on

14 otsikko ja nimi, ja ne näkyvät peräkkäin listalla. Ensimmäisen tason valikkokohdat näkyvät ikkunan yläreunassa, ja niistä avautuvat alemmat valikkotasot. Valikkokohdalla on Click-tapahtuma. Mahdollinen pikanäppäin valitaan Shortcut-listasta. Jos valikkokohdan Checkedominaisuus on True, tekstin vieressä näkyy valintamerkki. Jos WindowList-ominaisuus on True, valikon lopussa näkyy automaattisesti MDI-ikkunan sisällä olevat ali-ikkunat. Yksinkertainen valikko näyttää seuraavalta valikkoeditorissa: Testi Eka Toka AliEka AliToka Kolmas Ja ohjelmassa se näyttää tältä: Jos valikkokohdan nimenä on pelkkä "-", valikkoon tulee näkyviin erotusviiva. Jos valikossa on valittavia kohtia, niiden Checked-ominaisuuden muuttumisesta täytyy huolehtia itse. Seuraavassa esimerkissä on kolme valikkokohtaa, mhelppo, mtavallinen ja mvaikea, joiden otsikot ovat vastaavasti "Helppo", "Tavallinen" ja "Vaikea". Vain yksi kohta voi kerrallaan olla valittuna. Tämä voisi olla osa pelin asetusvalikkoa. Private Sub Form_Load() mtavallinen.checked = True Private Sub mhelppo_click() mhelppo.checked = True mtavallinen.checked = False mvaikea.checked = False Private Sub mtavallinen_click() mhelppo.checked = False mtavallinen.checked = True mvaikea.checked = False Private Sub mvaikea_click() mhelppo.checked = False mtavallinen.checked = False mvaikea.checked = True

15 Käyttöliittymän suunnittelu Käyttöliittymän suunnittelussa kannattaa kokeilla erilaisia vaihtoehtoja ja ottaa mallia valmiista ohjelmista. Hyvää ohjelmaa voi myös helposti käyttää näppäimistöllä. Tässä on muutamia vinkkejä suunnitteluun. Vierekkäin olevat ohjaimet kannattaa sijoittaa samalle linjalle, missä auttaa lomakkeella näkyvä piirtokehikko. Lisäksi esimerkiksi vierekkäiset painonapit näyttävät yleensä parhailta samankokoisia. Samaan asiaan liittyvät ohjaimet on hyvä ryhmitellä kehyksiin. Ohjainten väliin kannattaa myös jättää reilusti tyhjää tilaa, jotta ikkuna ei näytä ahtaalta. Kun käyttäjä painaa Tab-näppäintä, ohjaimet aktivoituvat vuorotellen tietyssä järjestyksessä. Oletuksena järjestys on sama kuin ohjainten piirtojärjestys, mutta TabIndex-ominaisuuden avulla sitä voi muuttaa. Ohjainten TabIndexominaisuudet valitaan järjestyksessä nollasta alkaen. Jos TabStop-ominaisuuden arvo on False, ohjainta ei voi lainkaan aktivoida tällä tavalla. Pikanäppäin valitaan kirjoittamalla Caption-tekstiin halutun kirjaimen eteen &- merkki. Tämän seurauksena seuraava kirjain muuttuu alleviivatuksi, ja ohjaimen pystyy aktivoimaan Alt + kirjain näppäinyhdistelmällä. Jos pikanäppäin osoittaa ohjetekstiin tai kehykseen, aktivoituva ohjain on Tab-järjestyksessä seuraava. Jos tekstiin haluaakin todella kirjoittaa &-merkin, niitä täytyy kirjoittaa kaksi. Valikkokohtien pikanäppäimet kannattaa valita samoiksi kuin muissa ohjelmissa, esimerkiksi F1 näyttää ohjeen ja F2 aloittaa uuden pelin. Jos valikkokohdasta aukeaa uusi ikkuna, otsikon perään on tapana kirjoittaa kolme pistettä, esimerkiksi "Asetukset...". Osa 3 - Muuttujat ja taulukot Muuttuja on tietokoneen muistissa oleva varattu paikka, johon voi tallentaa erilaista tietoa. Muuttujalla on tyyppi, joka ilmaisee siihen tallennettavan tiedon laadun: käyttäjän nimi esimerkiksi tallennetaan merkkijonomuuttujaan ja laskutoimituksen tulos lukumuuttujaan. Jos ohjelmassa on paljon samankaltaisia muuttujia, niistä kannattaa yleensä tehdä taulukko. Yhdessä taulukossa voisi vaikkapa olla kaikkien Euroopan maiden nimet ja pääkaupungit. Tässä oppaassa käsitellään muuttujia, taulukoita ja omia muuttujatyyppejä. Muuttujatyypit Visual Basicin tavalliset muuttujatyypit ovat String (merkkijono), Byte, Integer ja Long (kokonaisluku), Single ja Double (liukuluku), Currency (desimaaliluku), Boolean (totuusarvo), Date (päivämäärä) ja Object (objekti). Lisäksi on olemassa muuttujatyyppi

16 Variant, joka voi edustaa mitä tahansa muuttujatyyppiä. Muuttujan tyyppi muuttuu silloin tilanteen mukaan. Merkkijono eli String ($) on joko muuttuvan tai määrätyn pituinen. Jos pituus määrätään, se kirjoitetaan muuttujatyypin perään tähtimerkin kanssa. Esimerkiksi String * 10 tarkoittaa kymmenen merkin pituista muuttujaa. Merkkijonot kirjoitetaan lainausmerkkien sisään, ja niiden yhdistäminen tapahtuu &-merkin avulla. Jos merkkijonon osana on lainausmerkit, ne täytyy kirjoittaa kahteen kertaan. Esimerkkejä: "esimerkki" "yhdistetty " & "merkkijono" "kokeilu ""lainausmerkkien"" käytöstä" Kokonaislukuja ovat Byte, Integer (%) ja Long (&). Byte-muuttuja on yhden tavun kokoinen, ja siihen voi sijoittaa luvun väliltä Integer-muuttuja on kahden tavun kokoinen, ja siihen mahtuu luku väliltä Long-muuttujan koko taas on neljä tavua, ja arvoalue on välillä Lukujen yhteydessä voi käyttää merkintöjä +, -, *, /, \ (kokonaislukujakolasku), Mod (jakojäännös) ja ^ (potenssi) sekä sulkeita. Lukuja voi myös yhdistää merkkijonoon &- merkin avulla. Esimerkkejä: * (7 + 2) 50 & "-vuotias" Liukulukuja ovat Single (!) ja Double (#), ja niiden koot ovat vastaavasti neljä ja kahdeksan tavua. Single-muuttujan pienin arvo on -3,4 * ja suurin arvo on 3,4 * Double-muuttujan pienin arvo taas on -1,8 * ja suurin arvo 1,8 * Liukuluku voi sisältää kokonaisosan lisäksi desimaaleja, mutta pyöristysvirheiden vuoksi tuloksen viimeisiin desimaaleihin ei ole luottamista. Desimaalipilkun merkkinä on piste, ja liukulukuja voi yhdistellä samalla tavalla kuin kokonaislukujakin. Esimerkkejä: Desimaaliluvun tallennusmuoto on Currency (@), jonka koko on kahdeksan tavua. Currency-muuttuja voi sisältää luvun, jonka kokonaisosan pituus on 15 merkkiä ja desimaaliosan pituus neljä merkkiä. Liukuluvuista poiketen desimaalilukujen kanssa ei tapahdu pyöristysvirheitä, koska ne on todellisuudessa tallennettu kokonaislukuina. Yhdistelykeinot ovat jälleen samat edellisten lukumuuttujatyyppien kanssa. Totuusarvo eli Boolean on joko True (tosi) tai False (epätosi). Boolean-tyyppisellä muuttujalla on siis vain kaksi tilaa. Lukumuuttujien lopputunnuksia (%, &,!, tarvitaan silloin, kun muuttujan tyyppi

17 täytyy tuoda esille laskutoimituksen keskellä. Esimerkiksi lasku 300 * 300 aiheuttaa virheen, koska tulos ei mahdu oletuksena olevaan Integer-tyyppiin. Siksi pitää kirjoittaa 300& * 300&, jolloin virhettä ei tule. Muuttujan määrittely Ennen kuin muuttujaa voi käyttää ohjelmassa, se täytyy määritellä esimerkiksi Dimlauseella. Muuttujan nimessä voi olla kirjaimia ja numeroita, mutta sen kuitenkin täytyy alkaa kirjaimella. Isoilla ja pienillä kirjaimilla ei ole merkitystä muuttujan nimessä. Tässä on muutamia muuttujamäärittelyitä: Dim nimi As String Dim vuosi As Integer Dim korkeus As Single ' merkkijonomuuttuja ' kokonaislukumuuttuja ' liukulukumuuttuja Kaikki määrittelyt voisi myös yhtä hyvin kirjoittaa samalle riville: Dim nimi As String, vuosi As Integer, korkeus As Single Muuttujan arvo määrittelyn jälkeen on tyhjä tai nolla. Arvon muuttaminen käy näin: nimi = "Antti" vuosi = 2004 pituus = 5 * 3.2 pituus = pituus +.5 ' muuttujan arvoksi tulee merkkijono ' muuttujan arvoksi tulee luku ' muuttujan arvoksi tulee laskun tulos ' muuttujan arvo lasketaan muuttujan perusteella Muuttujan arvon voi sitten näyttää vaikka viesti-ikkunassa: MsgBox "Nyt on vuosi " & vuosi Määrittelypakko Seuraava rivi kannattaa kirjoittaa jokaisen kooditiedoston alkuun: Option Explicit Tämä tarkoittaa sitä, että muuttujat täytyy aina määritellä ennen niiden käyttöä. Tavallisesti nimittäin muuttujia pystyy käyttämään ilman määrittelyä, ja ne ovat automaattisesti Variant- eli muuttuvan tyyppisiä. Näin ei kuitenkaan vaivattomuudesta huolimatta kannata tehdä. Silloin kääntäjältä jäävät näet huomaamatta muuttujien nimien kirjoitusvirheet, jotka saattavat aiheuttaa hankalasti löydettäviä virheitä. Varianttyyppinen muuttuja myös vie enemmän tilaa muistissa kuin yksikään toinen muuttuja. Muuttujan näkyvyysalue Muuttujan näkyvyysalue tarkoittaa sitä ohjelman osaa, jossa muuttujan arvo on näkyvissä ja käytettävissä. Lomakkeella ja moduulissa olevassa koodissa on kaksi osaa: alussa olevat määrittelyt ja proseduurien sisällä oleva koodi. Proseduuri on yleisnimitys tapahtumille, aliohjelmille ja funktioille (kahdesta viimeisestä lisää opassarjan

18 kuudennessa osassa). Seuraava koodi-ikkunasta otettu kuva selventää asiaa: Proseduurin sisällä muuttuja määritellään komennolla Dim, ja muuttujan arvo ei ole näkyvissä proseduurin ulkopuolella. Muuttujan voi myös määritellä komennolla Static, jolloin sen arvo säilyy muuttumattomana, vaikka proseduurista välillä poistuttaisiinkin. Seuraavassa esimerkissä lomakkeella on Command1-nappi, jonka Click-tapahtumassa on sisäinen laskuri. Napista painettaessa laskurin arvo kasvaa yhdellä ja tulos näkyy viesti-ikkunassa. Private Sub Command1_Click() Static laskuri As Integer laskuri = laskuri + 1 MsgBox laskuri Koodin alussa määrittely Private tai Dim tarkoittaa, että muuttujan arvo on näkyvissä vain kyseisen lomakkeen tai moduulin proseduureissa. Jos taas määrittely on Public tai Global, muuttujan arvo näkyy kaikissa ohjelmaan kuuluvissa lomakkeissa ja moduuleissa. Tällaisia muuttujia kutsutaan yleisiksi muuttujiksi. Moduulissa määriteltyyn yleiseen muuttujaan voi viitata kaikista ohjelman osista suoraan muuttujan nimellä, mutta lomakkeessa määritellyn muuttujan eteen täytyy kirjoittaa lomakkeen nimi ja piste. Seuraavassa esimerkissä Command1 muuttaa muuttujan arvoa ja Command2 näyttää sen. Dim aika As String Private Sub Command1_Click() aika = Time Private Sub Command2_Click() MsgBox aika Luvut ja merkkijonot Luvut voi tavallisen kymmenjärjestelmän lisäksi esittää 16-järjestelmässä, jolloin niiden eteen laitetaan &H-tunnus. Esimerkiksi 16 ja &H10 tarkoittavat samaa lukua. Funktio Val muuttaa merkkijonon luvuksi ja Str vastaavasti luvun merkkijonoksi. Lisäksi funktio Int muuttaa luvun kokonaisluvuksi. Kuitenkaan muutosfunktioita ei tavallisesti tarvitse käyttää, koska Visual Basic huolehtii muutoksista itse. Seuraavassa esimerkissä viestiikkunassa näkyy luvun kokonaisosa.

19 Dim luku As Single luku = MsgBox Int(luku) Luvun muuttaminen kokonaisluvuksi niin, että pyöristys menee oikein, tapahtuu Roundfunktiolla. Funktion toisena parametrina voi olla desimaalien määrä. Esimerkiksi Round(15.7) = 16 ja Round(1.2345, 2) = Vakioiden käyttö Esimerkiksi euron ja markan suhde on muuttumaton luku, joka voidaan esittää muuttujan lisäksi myös vakion avulla. Vakion määrittely kirjoitetaan koodin alkuun Constlauseella, ja siihen voi liittyä yleisen muuttujan tavoin näkyvyysalueen rajaus Privatetai Public-alkumäärityksellä. Private Const EUROKERROIN = Nyt koodissa voidaan varsinaisen lukuarvon sijaan kirjoittaa vakion nimi. Dim markat As Currency, eurot As Currency markat = 30 eurot = markat / EUROKERROIN Vakioiden käytön etuna on se, että koodi näyttää selvemmältä. Ja jos vakion arvo myöhemmin vaihtuu, muutos täytyy tehdä vain vakion määrittelyyn. Muuttujaan verrattuna vakio ei kuluta ylimääräistä tilaa muistissa, koska arvot muutetaan lopullisiksi jo ohjelman käännösvaiheessa. Taulukko useampia muuttujia yhdessä Jos ohjelman täytyisi käsitellä vaikkapa kymmenen henkilön nimiä, yksi tapa olisi tallentaa nimet erillisiin merkkijonomuuttujiin. Muuttujien määrittely näyttäisi silloin seuraavalta: Dim nimi1 As String, nimi2 As String, nimi3 As String, nimi4 As String, nimi5 As String Dim nimi6 As String, nimi7 As String, nimi8 As String, nimi9 As String, nimi10 As String Näin monen muuttujan käsittely on kuitenkin ongelmallista. Paljon parempi tapa onkin määritellä yksi taulukko, johon mahtuvat kaikki kymmenen muuttujaa. Taulukon määrittely muistuttaa tavallisen muuttujan määrittelyä, mutta taulukon nimen jälkeen sulkujen sisään tulee tieto siinä olevien muuttujien eli alkioiden määrästä. Dim nimet(1 To 10) As String Nyt taulukon alkioihin voi viitata seuraavalla tavalla: nimet(1) = "Risto" MsgBox nimet(1)

20 Jos taulukon alkioiden määrän alarajaa ei ilmoiteta, se on oletuksena nolla. Taulukossa voi myös olla useampia ulottuvuuksia, jotka erotetaan sulkujen sisällä pilkuilla. Äsken määritelty nimitaulukko oli yksiulotteinen, ristinollan ruudukon sisältävä taulukko taas olisi kaksiulotteinen. Taulukossa voi olla useita kymmeniä ulottuvuuksia, mutta yleensä tarvitaan korkeintaan kolmea ulottuvuutta. Esimerkkejä erilaisista taulukoista: ' sisältää alkiot 0-8 Dim tiedot(8) As String ' sisältää alkiot Dim vuodet(1995 To 2005) As Long ' sisältää yhteensä 100 alkiota Dim ruudukko(1 To 10, 1 To 10) As Integer Ulottuvuuksia voi ajatella myös niin, että jokaista ensimmäisen tason alkiota kohden on tietty määrä toisen tason alkioita, joita kohden taas on tietty määrä kolmannen tason alkioita jne. Tämän vuoksi taulukon alkioiden määrä kasvaa nopeasti, kun ulottuvuuksia tulee lisää. Esimerkiksi taulukossa, jonka määritelty koko on (1 To 5, 1 To 8, 1 To 7), on yhteensä 5 * 8 * 7 = 280 alkiota. Muuttuvankokoinen taulukko Toisinaan ei etukäteen tiedetä, kuinka monta alkiota taulukossa täytyy olla. Silloin taulukko määritellään ilmoittamatta sen kokoa. Myöhemmin, kun tarvittava alkioiden määrä on tiedossa, taulukon kokoa voidaan muuttaa ReDim-komennolla. Seuraavassa esimerkissä taulukon alkioiden määrä päätetään maara-muuttujan perusteella. Tavallisessa taulukon määrittelyssä ei olisi mahdollista käyttää muuttujaa. Dim kaupungit() As String maara = 5 ReDim kaupungit(maara) As String kaupungit(3) = "Helsinki" Ohjaintaulukot Lomakkeella olevia ohjaimia voi myös järjestää taulukoihin. Yhdessä taulukossa voi kuitenkin olla vain samanlaisia ohjaimia. Kaikkien taulukkoon kuuluvien ohjainten nimi on sama, mutta Index-arvot poikkeavat toisistaan. Näin määritetään nollasta alkavat ohjainten järjestysnumerot eli indeksit taulukossa. Jos ohjaimet ovat valmiiksi lomakkeella, muutetaan kunkin nimi samaksi, jolloin indeksit järjestyvät automaattisesti. Jos taas ohjaimia ei vielä ole, riittää, että samaa ohjainta kopioidaan lomakkeelle tarvittava määrä. Molemmissa tapauksissa pitää vastata myöntävästi kysymykseen Do you want to create a control array?. Taulukossa oleviin ohjaimiin viitataan samalla tavalla kuin tavallisen taulukon alkioihin: Command1(0).Caption = "Paina!" Saman taulukon ohjaimilla on yhteinen tapahtumakäsittely. Uuden Index-muuttujan avulla selviää, mikä taulukon ohjain on kulloinkin kyseessä.

21 Private Sub Command1_Click(Index As Integer) MsgBox "Painoit napista " & Index Lisäksi on mahdollista luoda kokonaan uusia ohjaimia, kunhan lomakkeella on valmiiksi ainakin yksi ohjain, jonka Index-arvo on määritelty. Uusi ohjain luodaan Loadkomennolla. Tämän jälkeen muutetaan yleensä ainakin ohjaimen paikkaa ja näkyvyyttä, koska uuden ohjaimen Visible-ominaisuus on False. Tässä esimerkissä lomakkeella on suunnitteluvaiheessa vain painonappi (Command1, jonka Index on 0), mutta heti ohjelman alussa lomakkeelle ilmestyy toinen samanlainen nappi. ' luodaan uusi nappi Load Command1(1) ' määritetään napin paikka Command1(1).Move 1000, 1000 ' muutetaan nappi näkyväksi Command1(1).Visible = True Oma muuttujatyyppi Muuttujatyyppejä voi tehdä myös itse. Oma muuttujatyyppi muodostuu Visual Basicin valmiista muuttujatyypeistä sekä mahdollisesti myös toisista omista muuttujatyypeistä. Muuttujatyypin määrittely kirjoitetaan koodin alkuun, ja sen yhteydessä voi käyttää samalla tavalla Private- ja Public-avainsanoja kuin muuttujien määrittelyssä. Seuraavassa määritellään oma tkirja-tyyppi, joka sisältää kirjan nimen, tekijän, painovuoden ja ISBN-numeron. Private Type tkirja nimi As String tekija As String vuosi As Integer isbn As String End Type Tämän jälkeen koodissa voi määritellä tkirja-tyyppisen muuttujan ja tallentaa siihen kirjan tiedot. Tiedon erotusmerkkinä on piste. Dim kirja As tkirja kirja.nimi = "Sinuhe egyptiläinen" kirja.tekija = "Mika Waltari" kirja.vuosi = 1975 kirja.isbn = " " MsgBox "Kirjan nimi on " & kirja.nimi Vähemmän kirjoittamista Jos peräjälkeen muutetaan saman muuttujan useita tietoja, voidaan käyttää With-lausetta, jolloin muuttujan nimeä ei tarvitse kirjoittaa aina erikseen. With kirja.nimi = "Sinuhe egyptiläinen".tekija = "Mika Waltari".vuosi = 1975.isbn = " " End With

22 Sama tekniikka toimii myös ohjainten kanssa. With Command1.Caption = "Paina!".Move 1000, 1000.Visible = True End With Osa 4 - Ehdot ja silmukat Ehdot aiheuttavat muutoksia ohjelman suoritukseen: niiden kohdalla ohjelma voi haarautua tai myös pysähtyä. Silmukoita käytetään silloin, kun samaa koodia pitää toistaa tietyn ehdon toteutumiseen asti tai kun käydään esimerkiksi läpi kaikki taulukossa olevat tiedot. Sekä ehdot että silmukat perustuvat lausekkeisiin, joiden arvo on tosi tai epätosi. Niiden avulla päätetään, mikä koodiosuus suoritetaan tai milloin silmukasta siirrytään pois. Ehdot ja silmukat eivät ole hankalia, mutta yhdessä käytettynä niistä pystyy muodostamaan monimutkaisen ohjelman. Todet ja epätodet lausekkeet Ohjelmaan kuuluvilla luvuilla, merkkijonoilla ja muuttujilla on kullakin oma arvonsa. Lauseke on yksi tällainen arvo yksinään tai useamman arvon yhdistelmä esimerkiksi laskutoimituksena. Kun lausekkeita vertaillaan keskenään, saadaan tuloksena totuusarvo, joka on joko tosi (True) tai epätosi (False). Vertailut ovat = (yhtä suuri), > (suurempi), >= (suurempi tai yhtä suuri), < (pienempi), <= (pienempi tai yhtä suuri) sekä <> (eri suuri). Lisäksi useampia totuusarvoja voidaan yhdistää merkinnöillä And (ja) ja Or (tai), arvon edessä oleva Not taas tarkoittaa vastakkaisuutta. Seuraavassa listassa on muutamia (ehto)lausekkeita Visual Basicin ymmärtämässä muodossa sekä käännettynä suomen kielelle. x > 3 x on suurempi kuin kolme nimi = "Juhani" nimi on Juhani ika >= 18 And ika <= 65 ikä on lukujen 18 ja 65 välillä "jänis" > "aasi" aakkosjärjestyksen tutkiminen nimi = "Juhani" Or ika < 20 nimi on Juhani tai ikä on alle 20 ika <> 20 tai Not ika = 20 ikä ei ole 20 Myös yksittäinen luku tai laskutoimitus voi toimia ehtolausekkena. Tällöin ehtolauseke on aina tosi, kunhan luku ei ole 0. Moniosaisen ehtolausekkeen esittämisessä on hyvä

23 käyttää apuna sulkuja. Esimerkki: (ika >= 18 And ika <= 65) Or nimi = "Juhani". Ehtorakenne Ehtorakenne alkaa sanalla If ja päättyy merkintään End If. Tämän lisäksi ehtorakenteeseen voi kuulua ElseIf-osia, jotka määrittävät useampia ehtoja, sekä loppuun tuleva Else-lause, jonka perässä oleva koodi suoritetaan silloin, kun yksikään aiemmista ehdoista ei ole tosi. Seuraava esimerkki tervehtii käyttäjää, jos nimi-muuttujan arvo on "Sakari". If nimi = "Sakari" Then MsgBox "Moikka, Sakke!" End If Tässä tulee pidempi ehtorakenne, joka ilmoittaa kuukaudessa olevien päivien määrän. Yleisin päivien lukumäärä on 31, minkä vuoksi se on laitettu Else-vaihtoehtoon. If kuukausi = 4 Or kuukausi = 6 Or kuukausi = 9 Or kuukausi = 11 Then MsgBox "30 päivää" ElseIf kuukausi = 2 Then MsgBox "28 tai 29 päivää" Else MsgBox "31 päivää" End If Seuraavassa esimerkissä käyttäjä saa painaa napista kaksi kertaa, mutta kolmannella kerralla ohjelma sulkeutuu. Private Sub Command1_Click() Static kerrat As Integer kerrat = kerrat + 1 If kerrat > 2 Then End End If Haarautuminen Jos jokaisessa ehtorakenteen osassa esiintyy sama muuttuja, oikean vaihtoehdon valitsemisen voi toteuttaa paremmin Select Case -rakenteen avulla. Tutkittava muuttuja ilmoitetaan vain kerran, ja sen jälkeen tulee joukko Case-haaroja, joiden perässä olevia arvoja verrataan muuttujan arvoon. Yhteen haaraan voi kuulua useampia arvoja, jotka on erotettu pilkuilla. Tässä on toteutettuna edellä ollut esimerkki lyhyemmällä koodilla: Select Case kuukausi Case 4, 6, 9, 11 MsgBox "30 päivää" Case 2 MsgBox "28 tai 29 päivää" Case Else MsgBox "31 päivää" End Select Seuraavassa esimerkissä lomakkeella on ohjaintaulukko Command1, johon kuuluu kolme painonappia indekseillä 0 2. Tapahtumankäsittelyyn on ilmestynyt Index-parametri,

24 josta selviää napin indeksi. Jokaisesta nappulasta painettaessa tulee eri ilmoitus Select Case -rakenteen avulla. Private Sub Command1_Click(Index As Integer) Select Case Index Case 0 MsgBox "Eka nappi" Case 1 MsgBox "Toka nappi" Case 2 MsgBox "Kolmas nappi" End Select Silmukka Silmukan sisällä olevaa koodia toistetaan, kunnes silmukkaan liitetty lopetusehto täyttyy tai silmukasta poistutaan muuten. Silmukan aloitussana on Do, ja se loppuu sanaan Loop. Alussa tai lopussa oleva While tarkoittaa, että silmukka jatkuu niin kauan kuin ehtolauseke on tosi. Jos taas käytetään sanaa Until, silmukka jatkuu kunnes ehtolauseke on tosi. Kun ehto laitetaan alkuun, silmukkaan ei välttämättä mennä ollenkaan. Lopussa oleva ehto takaa, että silmukka suoritetaan ainakin kerran. Seuraavassa esimerkissä silmukka toistuu niin kauan kuin i:n arvo on viittä pienempi. Joka kierroksella i kasvaa yhdellä, joten kierroksia tulee yhteensä viisi: niissä i:n arvo on 0, 1, 2, 3 ja 4. Nämä luvut näytetään myös viesti-ikkunassa. Dim i As Integer Do While i < 5 MsgBox i i = i + 1 Loop Saman voi toteuttaa myös Until-ehdon avulla, jolloin toinen rivi on: Do Until i >= 5 Ohjelmassa kannattaa valita While tai Until sen mukaan, kumpi kuulostaa luonnollisemmalta, jos ehtoa ajattelee suomen kielellä. Toista niin kauan kuin i on pienempi kuin viisi tuntuu selvemmältä kuin toista kunnes i on suurempi tai yhtä suuri kuin viisi. Siksi While sopii ehkä tähän silmukkaan paremmin. Ohjelman suoritukseen ei tietenkään vaikuta, kummin päin ehdon muodostaa. Jos silmukassa ei ole ehtoa kummallakaan puolella, lopetuksesta täytyy huolehtia itse Exit Do -komennolla. Muuten ohjelma jumiutuu. Tavallisesti Do...Loop -rakennetta käytetään silloin, kun silmukan kierrosten määrää ei ole valmiiksi tiedossa. Seuraava ohjelma kertoo, kuinka monta kertaa 100 euroa maksavan tavaran hinnasta voidaan vähentää 10 prosenttia, ennen kuin tavaran hinta laskee puoleen. Ensimmäisen vähennyksen jälkeen hinta on siis 90 euroa, toisen jälkeen 81 euroa jne. Muuttujassa hinta on tavaran kulloinenkin hinta, kerrat pitää kirjaa alennuskerroista.

25 Dim hinta As Integer, kerrat As Integer hinta = 100 Do While hinta > 50 hinta = hinta * 0.9 kerrat = kerrat + 1 Loop MsgBox "Hintaa voidaan alentaa " & kerrat & " kertaa." Jos silmukka kestää kauan, sen sisään on syytä laittaa DoEvents-komento, jotta koko käyttöjärjestelmä ei jumiudu ohjelman suorituksen ajaksi. Seuraavassa esimerkissä koko ohjelman suorituksen ajan taustalla on silmukka, joka jatkuvasti muuttaa otsikkorivin tekstiksi kellonajan. Kellonaika näkyy värisevänä, koska sen päivitys tapahtuu hyvin tiuhaan. Tällaisessa ohjelmassa täytyy muistaa panna lomakkeen Unload-tapahtumaan komento End, jotta silmukka päättyy ja ohjelma sulkeutuu kunnollisesti. Private Sub Form_Activate() Do Caption = Time DoEvents Loop Private Sub Form_Unload(Cancel As Integer) End Lukujen läpikäynti For-silmukan avulla on helppo käydä läpi joukko lukuja, jotka kasvavat tai vähenevät säännöllisesti. Silmukkaan liittyy muuttuja, jonka arvo kullakin silmukan kierroksella on vuorossa oleva luku. Silmukasta voi poistua myös kesken Exit For -lauseella. Tässä on koodinpätkä, joka näyttää luvut 0, 1, 2, 3 ja 4. Ohjelman toiminta on sama kuin edellisen kappaleen esimerkissä, mutta koodi on nyt lyhyempi ja selkeämpi. Dim i As Integer For i = 0 To 4 MsgBox i Next Lukuvälin perään voidaan laittaa askel, jolloin muuttujan arvo kasvaa tai laskee suuremmissa tai pienemmissä erissä. Jos aloitusarvo on lopetusarvoa suurempi, myös askeleen täytyy olla negatiivinen. Seuraavassa on esimerkkinä lukusarjojen (0, 2, 4, 6, 8) ja (4, 3, 2, 1, 0) läpikäynti. For i = 0 To 8 Step 2 MsgBox i Next For i = 4 To 0 Step -1 MsgBox i Next Lukujen listaamisen lisäksi For-silmukan avulla voidaan helposti käsitellä kaikkia taulukkoon kuuluvia alkioita. Seuraavassa esimerkissä luvut on taulukko, jossa on

26 kymmenen alkiota. Muutamia alkioita muutetaan, lopuille jää oletusarvo eli 0. Sitten käydään koko taulukko läpi For-silmukan avulla ja näytetään kunkin alkion sisältö. Dim luvut(1 To 10) As Integer, i As Integer luvut(1) = 7 luvut(2) = 3 luvut(7) = 6 For i = 1 To 10 MsgBox "Alkio " & i & ": " & luvut(i) Next Näin on käyty läpi Visual Basicin tavalliset ehto- ja silmukkarakenteet. Näillä pääsee jo pitkälle... Tietojen näyttäminen (MsgBox) Viesti-ikkunan näyttävä MsgBox-komento tuntee viestin lisäksi muita parametreja, joita voidaan käyttää tarvittaessa: MsgBox viesti, tiedot, otsikko Viesti ja otsikko ovat kummatkin tavallisia merkkijonoja. Toinen parametri, joka määrittää ikkunassa näkyvät painikkeet ja kuvakkeen, voi olla useamman luvun tai vakion summa. Nappeihin liittyvät vakiot ovat vbokonly, vbokcancel, vbabortretryignore, vbyesnocancel, vbyesno ja vbretrycancel, ja ne vastaavat melkein suoraan painikkeiden tekstejä englanninkielisessä Windowsissa. Kuvakkeisiin liittyvät vakiot ovat vbcritical (punainen ruksi), vbquestion (kysymysmerkki), vbexclamation (huutomerkki) ja vbinformation (tiedotus). Viesti-ikkunassa voidaan käyttää ainoastaan edellä olleita painikkeita ja kuvakkeita. Esimerkkejä: MsgBox "Kopiointi päättyi.", vbinformation, "Tiedotus" MsgBox "Asemassa ei ole levykettä.", vbabortretryignore + vbexclamation MsgBox "Haluatko tallentaa tiedoston?", vbyesno, "Varmistus" Jos MsgBox sisältää kysymyksen, käyttäjän painama nappi pitää tietenkin saada jotenkin selville. Silloin käytetään MsgBoxia funktiona, jonka palautusarvo kertoo painetun napin: vbok, vbcancel, vbabort, vbretry, vbignore, vbyes tai vbno. Seuraavassa esimerkissä kommentin tilalle kuuluisi tiedoston tallennus, joka tehdään vain silloin, kun käyttäjä vastaa kysymykseen myöntävästi. If MsgBox("Haluatko tallentaa tiedoston?", vbyesno) = vbyes Then 'tiedoston tallennus MsgBox "Tiedosto tallennettu." End If Tietojen lukeminen (InputBox) Kysymysikkuna eli InputBox kysyy käyttäjältä tietoa tekstikentän kautta. Tärkeimmät parametrit ovat:

27 InputBox(kysymys, otsikko, oletus) Ainoastaan ensimmäinen parametri on pakollinen. Seuraavassa esimerkissä kysytään käyttäjän nimi merkkijonomuuttujaan ja pelaajien määrä lukumuuttujaan. Dim nimi As String, maara As Integer nimi = InputBox("Kirjoita nimesi:", "Asetukset") maara = InputBox("Kuinka monta pelaajaa?", "Asetukset", 2) Pelaajamäärän kysymiseen liittyy kuitenkin ongelma. Jos käyttäjä kirjoittaa luvun sijasta merkkijonon tai liian suuren luvun, tulee virheilmoitus ja ohjelma keskeytyy. Seuraavassa on paranneltu mutta huomattavasti pitempi ohjelma, joka kysyy pelaajien määrän ensin merkkijonomuuttujaan ja vasta tarkastusten jälkeen kopioi sen lopulliseen lukumuuttujaan. IsNumeric-funktio kertoo, onko muuttujan sisältö luku. Jos käyttäjän ilmoittama luku ei ole kelvollinen, kysymysikkuna tulee uudestaan. Dim tieto As String, maara As Integer Do tieto = InputBox("Kuinka monta pelaajaa?", "Asetukset", 2) If IsNumeric(tieto) Then If Val(tieto) > 0 And Val(tieto) < 5 Then maara = Val(tieto) Exit Do Else MsgBox "Pelaajamäärän täytyy olla välillä 1-4!" End If Else MsgBox "Virheellinen pelaajamäärä!" End If Loop MsgBox "Pelaajien määräksi tuli " & maara Desimaaliosan sisältävien lukujen kysymiseen liittyy omat vaikeutensa, jotka johtuvat siitä, että englannin kielessä desimaalipilkun tilalla on desimaalipiste. Paras tapa on toteuttaa ohjelma niin, että se hyväksyy luvussa sekä pilkun että pisteen. Seuraavassa ohjelmassa käyttäjän kirjoittamassa tekstissä mahdollisesti olevat pilkut muutetaan pisteiksi Replace-funktion avulla. Sitten tulos muutetaan luvuksi Val-funktiolla, joka käyttää pistettä desimaalierottimena. Dim luku As Single luku = Val(Replace(InputBox("Kirjoita luku:"), ",", ".")) Samoja tarkistuksia ja muunnoksia voi tietenkin käyttää myös lomakkeella olevan tekstikentän yhteydessä. Rivien yhdistys ja jakaminen Tavallisesti yksi ohjelmalause kirjoitetaan yhdelle riville. On kuitenkin mahdollista sekä kirjoittaa monta lausetta samalle riville että jakaa pitkä lause useammalle riville. Lauseiden yhdistämiseen käytetään merkkiä : ja jakamiseen merkkiä _. Esimerkkejä:

28 a = 1: b = 2: c = 3 MsgBox "Tiedostoa ei löytynyt hakemistosta. Haluatko jatkaa?", _ vbyesno + vbquestion, "Tiedostovirhe" Tavallisesti rivejä ei kannata yhdistää, koska se monesti tekee ohjelmasta vaikeammin luettavan. Sen sijaan pitkät rivit on hyvä jakaa, jotta ne näkee yhdellä kertaa koodiikkunassa. Osa 5 - Aliohjelmat ja funktiot Tässä osassa käydään läpi kolme aihetta: aliohjelmat ja funktiot, valikot ja hyvän koodin tekeminen. Aliohjelmia ja funktioita tarvitaan jokaisessa vähänkin suuremmassa ohjelmassa, ja niiden käyttäminen kannattaa opetella kerralla hyvin. Ikkunan yläreunassa sijaitsevat valikot luodaan Visual Basicissa täysin graafisesti, ja se on varsin helppoa ja loogista. Lopuksi hyvän koodin tekeminen opastaa oikeaoppisen ja selkeän koodin tekemiseen, mikä osoittautuu myöhemmin tärkeäksi. Aliohjelmat ja funktiot Aliohjelmia ja funktioita käytetään, kun ohjelmassa toistuu jokin kohta useita kertoja. Aliohjelmat suorittavat tietyn koodipätkän saamiensa parametrien perusteella, funktiot voivat lisäksi palauttaa jonkin arvon. Toisin kuin monissa muissa kielissä, Visual Basicissa aliohjelmat ja funktiot määritetään eri käskyillä, aliohjelmat määritetään käskyllä Sub ja funktiot käskyllä Function. Aliohjelmat Otetaan heti alkuun esimerkki yksinkertaisesta aliohjelmasta: Sub NaytaKertoTaulu (luku As Integer) Dim i As Integer, teksti As String For i = 1 To 10 teksti = teksti & luku & "*" & i & "=" & (luku * i) & vbcrlf Next MsgBox teksti Aliohjelma näyttää MsgBoxissa halutun luvun kertotaulun Aliohjelmaa voitaisiin kutsua vaikkapa seuraavasti: Private Sub Form_Load () NaytaKertoTaulu 2 NaytaKertoTaulu 5 NaytaKertoTaulu 10 NaytaKertoTaulu 20

29 Nyt ohjelma näyttää lukujen 2, 5, 10 ja 20 kertotaulut MsgBoxeissa. Aliohjelmat paitsi lyhentävät koodia myös selkeyttävät sitä. Lisäksi kun kerran kirjoittaa hyvin toimivan aliohjelman, sitä voidaan käyttää uudestaan toisissa ohjelmissa. Aliohjelmat kirjoitetaan siis Sub...-lauseiden väliin. Aliohjelman nimen jälkeen annetaan sen parametrit tyyppeineen suluissa. Suluissa olevat muuttujat toimivat saman nimisinä aliohjelman sisällä ilman eri määrittelyjä. Parametreja voi olla useita pilkulla erotettuina. Funktiot Funktiot ovat hyvin samantapaisia kuin aliohjelmat, ero on, että niillä on muuttujatyyppi ja ne palauttavat jonkin arvon. Otetaan taas esimerkki: Function LaskeIka (syntymavuosi As Integer) As Integer Dim nykvuosi As Integer nykvuosi = Val(Format(Now, "yyyy")) LaskeIka = nykvuosi - syntymavuosi End Function Tämä funktio laskee henkilön tämänhetkisen iän syntymävuoden perusteella. Vuosi haetaan Format-aliohjelman avulla Now-erikoismuuttujasta, joka sisältää tämänhetkisen tarkan ajan. Funktiota voitaisiin käyttää vaikka seuraavasti: Private Sub Form_Load () Dim svuosi As Integer svuosi = InputBox("Anna syntymävuotesi:") MsgBox "Ikäsi on siis " & LaskeIka(svuosi) & " vuotta" Ohjelma kysyy ensin InputBoxilla käyttäjän syntymävuoden. Sen jälkeen funktio laskee tämänhetkisen iän ja ilmoittaa sen MsgBoxissa. Funktion määrittelyn perään lisätään siis se muuttujatyyppi, jonka funktio palauttaa, tässä tapauksessa Integer. Funktion palautusarvo määritetään yhtäsuuruusmerkillä esimerkin viimeisen rivin mukaisesti, aivan kuten muuttujien kanssa. Lisää aliohjelmista ja funktioista Aliohjelmien ja funktioiden määrittelyjen eteen voidaan laittaa avainsana Private tai Public aivan kuten muuttujissa. Private-avainsana tarkoittaa, että aliohjelma tai funktio on voimassa vain sen formin, moduulin tai luokan sisällä, jossa se on. Public-avainsanalla (oletus) aliohjelmia ja funktioita voidaan kutsua mistä tahansa ohjelman osista. Parametrit ovat oletuksena pakollisia, mutta niistä voidaan tehdä tarvittaessa myös vapaaehtoisia. Tämä onnistuu Optional-avainsanalla joka laitetaan parametrin nimen eteen, esimerkiksi seuraavasti: Sub Testi (Eka As Integer, Optional Toka As Integer)

30 Tällöin muuttuja Eka on annettava aina, Toka taas voidaan antaa tai olla antamatta tilanteen mukaan. Jos muuttujaa ei ilmoiteta, sen arvo on 0 (luvut) tai "" (merkkijonot). Valikot Melkein jokaisessa ohjelmassa käytetään valikoita eli englanniksi menuja. Yleisimpiä valikkoja ovat mm. Tiedosto, Muokkaa ja Ohje (File, Edit ja Help). Kun teet ohjelmaasi valikkoja, yritä tehdä niistä yhtenäisiä valmiiden Windows-ohjelmien kanssa. Visual Basicissa valikot luodaan täysin graafisesti Tools-valikon Menu Editorin avulla, ja niiden tekeminen on varsin helppoa ja nopeaa. Jokaista valikkokohtaa vastaa yksi rivi editorin alaosassa olevassa listassa. Oikealle- ja vasemmalle-nuolinäppäimillä määritetään, millä tasolla kyseinen valikkokohta on. Valikkokohtien taso näkyy listassa pisteinä. Kaikkein vasemmanpuolisimmat valikkokohdat näkyvät ylhäällä. Yksi pykälä oikealle tarkoittaa, että valikkokohta kuuluu suoraan ylävalikkoon. Jokaisesta valikkokohdasta voi lisäksi lähteä alivalikkoja aina viiteen tasoon asti. Kullakin valikkokohdalla on otsikko (Caption) ja nimi (Name). Jos Captioniksi kirjoittaa -, valikkoon tulee väliviiva. Valikkokohdille voidaan antaa komponenttien tapaan indeksi (Index) ja niille voidaan valita pikanäppäin (Shortcut). Lisäksi niillä on Enabled- ja Visible-arvot sekä Checkedarvo, jolloin valintoja voidaan merkitä. Jos WindowList on valittu, valikon perään lisätään lista MDI-ikkunan aukiolevista ikkunoista.

31 Hyvän koodin tekeminen Visual Basicissa, kuten kaikissa muissakin ohjelmointikielissä, on monia yleisiä tapoja ja käytäntöjä, jotka tekevät ohjelmasta selkeämmän, ja tekevät siitä helpommin tutkittavan myöhemmin, niin itselle kuin muillekin ohjelmille. Tässä on esitetty niistä tärkeimmät. Kommentointi Jos vain suinkin viitsii, ohjelmat kannattaa kommentoida hyvin ja huolellisesti. Kommentointi tarkoittaa oman tekstin lisäämistä ohjelmaan, jolloin ohjelman eri osien toiminta ja merkitys selvenee. Visual Basicissa kommentointi tapahtuu heittomerkeillä esimerkiksi seuraavaan tapaan: 'näyttää tervehdyksen MsgBox "Tsaukki!" Vaikka runsas kommentointi onkin hyvä asia, jokin raja siinäkin on. Kaikkia yksittäisiä käskyjä ja itsestäänselvyyksiä ei kannata kommentoida. Hyvien kommenttien tekeminen on taitolaji, siinä kyllä harjaantuu ajan myötä. Sisentäminen Tästä monen aloittelijan mielestä turhasta asiasta on melkein mahdotonta luopua sitten kun sen on kerran ottanut tavaksi: niin paljon sisentäminen selkeyttää ohjelman rakennetta. Periaate on se, että aina aliohjelma- ja funktiomäärittelyiden (Sub, Function), ehtolauseiden (If...Then, Select Case) ja silmukoiden (Do...Loop, For...Next) alussa painetaan Tab-näppäintä, jolloin rivin alku siirtyy muutaman merkin oikealle ja lopussa Shift+Tab jolloin rivin alku palautuu ennalleen. Tällöin ohjelmasta nähdään helpommin ja nopeammin kaikkien lauserakenteiden alat, ja koodi näyttää paljon siistimmältä. Vaikka sisentäminen tuntuisi nyt turhalta, aloita se silti: ennemmin tai myöhemmin ymmärrät sen merkityksen. Voit katsoa esimerkkiä myös valmiista koodinpätkistä, kuten Visual Basicin esimerkkiohjelmista ja Ohjelmointiputkan koodivinkeistä.

32 Osa 6 - Hiiri ja näppäimistö Tässä osassa käydään ensin läpi hiiren ja näppäimistön käsittely perustasolta ja sitten tutustutaan VB:n monipuolisiin merkkijonofunktioihin. Hiiren käsittely Hiiren käsittelyyn on kolme tapahtuma-aliohjelmaa, jotka löytyvät useimmista komponenteista. Ne ovat MouseDown, MouseMove ja MouseUp. Aliohjelmilla on seuraava tarkoitus: MouseDown aktivoituu, kun hiiren nappi painetaan pohjaan komponentin päällä MouseMove aktivoituu, kun hiirtä liikutetaan komponentin päällä MouseUp aktivoituu, kun hiiren nappi vapautetaan komponentin päällä Tapahtuma-aliohjelmissa on lisäksi käytössä seuraavat erikoismuuttujat: Button hiiren nappien tila: 1 vasen nappi pohjassa 2 oikea nappi pohjassa 3 vasen ja oikea nappi pohjassa 4 keskimmäinen nappi pohjassa 5 vasen ja keskimmäinen nappi pohjassa 6 oikea ja keskimmäinen nappi pohjassa 7 vasen, oikea ja keskimmäinen nappi pohjassa Shift X Y näppäimistön erikoisnäppäinten tila, ks. Näppäimistön käsittely osoittimen x-koordinaatti komponentin vasemmasta yläkulmasta mitattuna osoittimen y-koordinaatti komponentin vasemmasta yläkulmasta mitattuna Seuraava esimerkki luo yksinkertaisen piirto-ohjelman. Piirtokomennot PSet ja Line käsitellään oppaan seuraavassa osassa. Private Sub Form_Load Me.DrawWidth = 4 'viivan paksuus 4 Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) PSet (X, Y) Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Static vx As Single, vy As Single 'muuttujat osoittimen vanhalle paikalle If Button = 1 Then If vx <> 0 And vy <> 0 Then Line (vx, vy)-(x, Y) End If vx = X vy = Y Else vx = X

33 vy = Y End If Näppäimistön käsittely Näppäimistön käsittely on hyvin samantapaista kuin hiiren käsittely. Näppäimistöaliohjelmia on kolme, KeyDown, KeyPress ja KeyUp. Aliohjelmilla on seuraava tarkoitus: KeyDown KeyPress KeyUp aktivoituu, kun näppäin painetaan alas aktivoituu, kun näppäintä painetaan aktivoituu, kun näppäin nostetaam ylös KeyPress on ylemmän tason käsittelijä, ja se aktivoituu vain, jos KeyDownissa ei ole tehty mitään. Aliohjelmilla on lisäksi seuraavat erikoismuuttujat: KeyCode KeyAscii Shift painetun näppäimen koodi (KeyDown ja KeyUp) painetun näppäimen ASCII-koodi (KeyPress) Shift-, Alt- ja Control-näppäinten tilat: 1 painettu Shift 2 painettu Alt 3 painettu Shift ja Alt 4 painettu Control 5 painettu Shift ja Control 6 painettu Alt ja Control 7 painettu Shift, Alt ja Control Käytännössä KeyPress on melko turha aliohjelma, samat asiat saa tehtyä KeyDownilla. Jos formilla on komponentteja, KeyPreview-ominaisuus määrittää, että kaikki näppäinpainallukset kulkevat ensin formin näppäimistöaliohjelmille. Seuraava esimerkki näyttää näppäimistöstä painettaessa näppäinkoodin ja Shiftmuuttujan arvon: Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) MsgBox "Näppäinkoodi: " & KeyCode & vbcrlf & "Shift: " & Shift VB sisältää useimmille näppäimille vakion, joka korvaa vaikeasti muistettavan KeyCoden. Esimerkiksi näppäimen A vakio on vbkeya, näppäimen Shift vbkeyshift, näppäimen Esc vbkeyesc jne. eli vbkey + näppäimen nimi englanniksi.

34 Merkkijonofunktiot Visual Basic sisältää monipuoliset merkkijonofunktiot. Tässä kappaleessa käsitellään niistä tärkeimmät. Len Left Right Mid UCase LCase LTrim RTrim Trim InStr Asc Chr Space String palauttaa merkkijonon pituuden Len("Testi") on 5 palauttaa tietyn määrän merkkejä merkkijonon alusta Left("Testi", 3) on "Tes" palauttaa tietyn määrän merkkejä merkkijonon lopusta Right("Testi", 3) on "sti" palauttaa tietyn määrän merkkejä merkkijonon keskeltä Mid("Testi", 2, 3) on "est" muuttaa merkkijonon suuriksi kirjaimiksi UCase("Testi") on "TESTI" muuttaa merkkijonon pieniksi kirjaimiksi UCase("Testi") on "testi" poistaa välilyönnit merkkijonon alusta LTrim(" Testi ") on "Testi " poistaa välilyönnit merkkijonon lopusta LTrim(" Testi ") on " Testi" poistaa välilyönnit merkkijonon molemmilta puolilta Trim(" Testi ") on "Testi" palauttaa merkkijonon paikan toisessa merkkijonossa InStr("Testi", "st") on 3 InStr("Testi", "sv") on 0 palauttaa merkin ASCII-koodin Asc("A") on 65 palauttaa ASCII-koodin merkin Chr(65) on "A" palauttaa tietyn määrän välilyöntejä Space(5) on " " palauttaa tietyn määrän samoja merkkejä String(5, "A") on "AAAAA"

35 Osa 7 - Grafiikka Grafiikan piirtäminen on yksi kiinnostavimmista ohjelmoinnin alueista. Tämä opas kertoo Visual Basicin omista grafiikkakomennoista, joilla onnistuu helposti pisteiden, viivojen, ympyröiden ja muiden kuvioiden piirtäminen, tekstin tulostaminen näytölle sekä valmiiden kuvatiedostojen näyttäminen. Grafiikan piirtoon liittyvät ongelmat eivät myöskään jää huomiotta. Usein ratkaisuna ongelmaan on käyttää Visual Basicin ulkopuolista kirjastoa, joita on esitelty oppaan lopussa. Piirtoasteikko Visual Basicin tavallinen mittayksikkö on twip, jonka pituus on 1 / 567 eli noin 0,002 senttimetriä. Grafiikan piirtoon tämä mittayksikkö ei kuitenkaan sovellu hyvin, vaan on parempi käyttää pikseleitä. Yksi pikseli vastaa suoraan yhtä näytöllä näkyvää kuvapistettä. Mittayksikkö valitaan lomakkeen tai kuvakehyksen ScaleModeominaisuuden avulla, pikselin tunnusnumero on 3. Kaikissa tämän oppaan esimerkeissä mittayksiköksi on valittu pikseli. Ominaisuudet ScaleLeft, ScaleTop, ScaleWidth ja ScaleHeight kertovat lomakkeen tai kuvakehyksen piirtoasteikon. Näiden ominaisuuksien arvo muuttuu automaattisesti ScaleMode-ominaisuuden vaihtuessa. Joskus voi kuitenkin olla kätevää määrittää piirtoasteikko itse. Esimerkki: Lomakkeen leveys (Width) on 4800 ja korkeus (Height) on Aluksi ScaleWidth on 4680 ja ScaleHeight on Ero lomakkeen todelliseen kokoon johtuu siitä, että reunukset ja otsikkorivi vievät jonkin verran tilaa piirtoalueelta. Vaihdetaan ScaleModeksi 3, jolloin ScaleWidth on 312 ja ScaleHeight on 213. Tämä on piirtokomentojen käyttämä uusi asteikko. Värit Värit ilmoitetaan tavallisesti RGB-funktion avulla, jolloin parametrina on punaisen, vihreän ja sinisen värisävyn osuus asteikolla Esimerkiksi punainen väri on RGB(255, 0, 0), tummansininen RGB(0, 0, 100) ja vaaleanharmaa RGB(200, 200, 200). Samat värit kokonaislukumuodossa ovat &H0000FF, &H ja &HC8C8C8; jokainen värisävy mahtuu Long-tyyppiseen muuttujaan. Väreihin liittyy kolme ominaisuutta: taustaväriin vaikuttava BackColor, piirtoväriin vaikuttava ForeColor ja täyttöväriin vaikuttava FillColor. Kaksi ensimmäistä ominaisuutta on lomakkeen ja kuvakehyksen lisäksi monilla muillakin ohjaimilla. Useimmissa piirtokomennoissa värin voi myös määrittää erikseen, jolloin se kumoaa lomakkeen tai kuvakehyksen valmiin määrityksen.

36 Piirtokomennot Tärkeimmät lomakkeen ja kuvakehyksen piirtokomennot ovat: komento käyttö PSet piirtää pisteen Point lukee pisteen värin Line piirtää viivan tai suorakulmion Circle piirtää ympyrän Print kirjoittaa tekstiä Seuraavissa esimerkeissä piirtokomennot voi kirjoittaa esimerkiksi lomakkeen Activatetapahtumaan. Piste piirretään PSet-komennolla, jonka parametrit ovat: PSet (x, y)[, väri] Punainen piste ohjelman vasempaan ylänurkkaan piirretään näin: Me.PSet (10, 10), RGB(255, 0, 0) Pisteen väri luetaan vastaavasti Point-komennolla: väri = Point(x, y) Tämä koodi näyttää äsken piirretyn pikselin värin heksamuodossa: MsgBox Hex(Me.Point(10, 10)) Viiva piirretään Line-komennolla, jonka parametrit ovat: Line (x1, y1)-(x2, y2)[, väri] Ensimmäinen piste ilmaisee viivan aloituskohdan ja toinen piste lopetuskohdan. Seuraava esimerkki piirtää viivan kohdasta (5, 5) kohtaan (30, 20). Line (5, 5)-(30, 20), RGB(120, 120, 0) Suorakulmio piirretään myös Line-komennolla. Line (x1, y1)-(x2, y2), [väri], taytto Viimeinen parametri on erikoislaatuinen. Jos parametri on B, piirretään pelkästään suorakulmion reunat. Jos parametri on BF, suorakulmio myös täytetään. Seuraavassa esimerkissä piirretään kolme suorakulmiota, joista jokaisen

37 reunuksen värin määrää ForeColor-ominaisuus. ' täyttämätön suorakulmio Me.FillStyle = 1 Me.Line (5, 5)-(50, 50),, B ' ForeColor-värillä täytetty suorakulmio Me.Line (15, 15)-(65, 65),, BF ' FillColor-värillä täytetty suorakulmio Me.FillStyle = 0 Me.FillColor = RGB(255, 0, 0) Me.Line (25, 25)-(75, 75),, B Ympyrä piirretään Circle-komennolla, jonka tärkeimmät parametrit ovat: Circle (x, y), säde[, väri] Tämä koodi piirtää kolme sisäkkäistä ympyrää, joilla on eri säde: Me.Circle (100, 100), 50, RGB(255, 0, 0) Me.Circle (100, 100), 30, RGB(0, 255, 0) Me.Circle (100, 100), 10, RGB(0, 0, 255) Myös ympyrän kaaren osien ja ellipsien piirtäminen on mahdollista Circlekomennolla. Lisätietoa asiasta on VB:n ohjeessa. Teksti tulostetaan Print-komennolla. Tekstin fonttiin vaikuttaa Fontominaisuus, ja väri määräytyy ForeColorin perusteella niin kuin muissakin piirtokomennoissa. Tekstin loppuun tulee automaattisesti rivinvaihto. Seuraava esimerkki tulostaa kolme riviä tekstiä. ' oletusfontti Me.Print "Eka rivi" ' Arial-fontti Me.Font = "Arial" Me.Print "Toka rivi" ' edellinen kursivoituna Me.Font.Italic = True Me.Print "Kolmas rivi" Jos tekstin jälkeen tulee puolipiste, tulostus jatkuu seuraavalla kerralla samalta riviltä. Tulostuskohtaa voi muuttaa myös CurrentX- (x-koordinaatti) ja CurrentY-ominaisuuksien (y-koordinaatti) avulla. Lisäksi TextWidth-funktio palauttaa tekstin leveyden ja TextHeight palauttaa tekstin korkeuden valitulla fontilla. Kuvat näytöllä ja muistissa Jos lomakkeen tai kuvakehyksen AutoRedraw-ominaisuus on False (oletus), grafiikka piirretään ainoastaan näytölle. Mutta jos AutoRedraw on True, grafiikka tallennetaan myös muistiin, jolloin se ei esimerkiksi katoa, jos ikkunan päälle tulee välillä jonkin toisen ohjelman ikkuna. Tietyissä tapauksissa AutoRedraw myös vähentää vilkkumista, mutta se myös hidastaa grafiikan piirtämistä. Jos AutoRedraw on False, ikkunan

38 päivityksestä täytyy huolehtia itse. Aina kun päivitys on tarpeen, siirrytään Painttapahtumaan. Väärin asetetulla AutoRedraw-ominaisuudella on taipumus aiheuttaa mystisiä grafiikkaongelmia ohjelmassa. Ominaisuudet Picture ja Image ovat lähellä toisiaan. Jos lomakkeeseen, kuvakehykseen tai kuvaohjaimeen ladataan valmis kuva tiedostosta, käytetään Picture-ominaisuutta. Mahdollisia kuvamuotoja ovat muiden muassa BMP, GIF ja JPG, ja kuvan voi ladata joko suunnitteluvaiheessa ominaisuuslistan kautta tai koodissa LoadPicture-funktiolla. Jos parametrina antaa tyhjän merkkijonon, kuva katoaa. Kuvakehykseen ladataan kuva näin: pkuva.picture = LoadPicture("oma.bmp") Ominaisuus Image sisältää ladatun kuvan lisäksi myös jälkeenpäin piirretyn grafiikan, jos AutoRedraw on True. Komennolla SavePicture näin piirretyn grafiikan voi myös tallentaa takaisin tiedostoon. Tallennusmuoto on aina BMP. Seuraava esimerkki tallentaa tiedostoon kuvakehykseen piirretyn grafiikan. ' tätä ilman tallennus ei onnistu pkuva.autoredraw = True ' piirretään grafiikkaa pkuva.circle (30, 30), 20 pkuva.line (30, 30)-(60, 60),, B ' tallennetaan kuva SavePicture pkuva.image, "tuotos.bmp" Viiva- ja kuvio-ohjain Viivoja ja yksinkertaisia kuvioita voi esittää myös viiva- ja kuvio-ohjainten avulla. Ohjaimet ovat siinä mielessä poikkeuksellisia, että niillä ei ole lainkaan tapahtumia eikä toimintoja. Tärkeimmät viivaohjaimen ominaisuudet ovat viivan paikan määrittävät X1, Y1, X2 ja Y2. Kuvio-ohjaimen paikka määritetään muiden ohjainten lailla, ja Shapeominaisuus vaikuttaa näytettävään kuvioon (suorakulmio, neliö, ympyrä). Grafiikkakomentoihin verrattuna ohjainten etuna on se, että niitä voi liikuttaa helposti taustan sotkeutumatta. Todellisuudessa viiva- ja kuvio-ohjaimelle ei kuitenkaan ole kovin usein käyttöä. Kun Visual Basic ei riitä... Valmiiden grafiikkakomentojen käyttäminen on helppoa, mutta ne eivät usein ole riittävän nopeita esimerkiksi peleissä tarvittavaan grafiikkaan. Toisinaan riittää, että käyttää Windows APIn grafiikkafunktioita Visual Basicin omien sijasta, mikä ei vaadi suuria muutoksia ohjelmaan. Mutta parhaimmat pelit toteutetaan kuitenkin Direct3D:n (osa DirectX:ää), OpenGL:n tai jonkin muun varta vasten grafiikkaohjelmointiin tarkoitetun kirjaston avulla. Näiden kirjastojen käyttö pitää opetella erikseen, mutta lopputulos on vaivan arvoinen. Jos olet kiinnostunut peliohjelmoinnista, nämä Ohjelmointiputkan oppaat ovat tutustumisen arvoisia:

39 Sprite-ohjelmointi käytetään WinAPI:n BitBlt-funktiota animaation tekemiseen 2D:tä DirectX:llä helppotajuinen johdatus kaksiulotteiseen DirectX-grafiikkaan Peliohjelmointi valottaa monia peliohjelmointiin liittyviä yksityiskohtia Osa 8 - Tiedostot Tässä osassa perehdytään tiedostojen käsittelyyn VB:n tiedostofunktioilla. Tiedostoja on olemassa kahta tyyppiä, rivi- ja peräkkäistiedostoja. Rivitiedostoissa tieto on rivinvaihtomerkillä (Asc13+Asc10) erotettuna. Peräkkäistiedostossa tieto on peräkkäin, sitä ei ole erotettu millään merkeillä ja ilman tiedostoformaatin tuntemusta siitä on vaikea saada selvää. Rivitiedostot Rivitiedostojen lukeminen tapahtuu seuraavasti: Dim i As Integer, r As String Open "c:\hakemisto\tiedosto.txt" For Input As #1 For i = 1 to 5 Input #1, r Msgbox r Next Close #1 Esimerkki lukee tiedoston viisi ensimmäistä riviä ja näyttää ne yksitelleen viestiikkunassa. Open avaa tiedoston ja Close sulkee sen. #1 on tiedostonumero, jolla aukiolevaan tiedostoon viitataan. Input-komento lukee tiedostosta seuraavan rivin muuttujaan. Openlauseessa Input tarkoittaa sitä, että tiedosto avataan rivitiedostona lukemista varten. Rivitiedostoja kirjoitetaan vuorostaan seuraavasti: Dim i As Integer Open "c:\hakemisto\tiedosto.txt" For Output As #1 For i = 1 to 5 Print #1, "Rivi " & i Next Close #1 Esimerkki kirjoittaa tiedostoon viisi riviä, joissa lukee "Rivi [rivinumero]". Nyt Inputin tilalla on Output, joka avaa tiedoston kirjoitusta varten. Kirjoitusfunktio on Print. Kun tiedosto avataan kirjoittamista varten, kaikki siinä ollut tieto katoaa.

40 Kolmas rivitiedostonkäsittelytapa on rivien lisääminen tiedoston loppuun, joka tapahtuu seuraavasti: Dim i As Integer Open "c:\hakemisto\tiedosto.txt" For Append As #1 For i = 5 to 1 Step -1 Print #1, i & ". viimeinen rivi" Next Close #1 Tiedostonkäsittely on muuten identtistä edellisen esimerkkikoodin kanssa, paitsi että Output on korvattu sanalla Append. Nyt tiedoston loppuun ilmestyy viisi riviä, eivätkä valmiiksi olevat rivit katoa. Peräkkäistiedostot Peräkkäistiedostoista on eniten hyötyä silloin, kun haluaa tehdä ohjelmalle oman tallennusformaatin tai jos haluaa tallentaa tietueessa olevaa tietoa. Seuraavassa on näyte peräkkäistiedostojen käytöstä tietueen kanssa: Type HTiedot nimi As String ika As Integer palkka As Currency End Type 'aliohjelmaan: Dim tiedot As HTiedot tiedot.nimi = "Jussi Virtanen" tiedot.ika = 25 tiedot.palkka = 2500 Open "c:\hakemisto\tiedosto.dat" For Binary As #1 Put #1,,tiedot Close #1 Nyt tiedostossa tiedosto.dat on kaikki tietueen muuttujat - yhdellä tallennuskäskyllä. Tiedot voisi ladata takaisin tietueeseen seuraavasti: Type HTiedot nimi As String ika As Integer palkka As Currency End Type 'aliohjelmaan: Dim tiedot As HTiedot Open "c:\hakemisto\tiedosto.dat" For Binary As #1 Get #1,,tiedot Close #1 Msgbox tiedot.nimi Msgbox tiedot.ika Msgbox tiedot.palkka Peräkkäistiedostoissa avaustapa on siis Binary. Tiedostoa pystyy sekä lukemaan että kirjoittamaan samalla avauskerralla - komennoilla Get ja Put. Tietoa kirjoitetaan/luetaan järjestyksessä, jos toisen parametrin jättää pois, muuten sitä voidaan lukea mistä kohtaa tiedostoa tahansa

41 Osa 9 - WinAPIn käyttö Tämän VB-opassarjan päättävän osan oli alunperin tarkoitus käsitellä ainoastaan WinApia, mutta sitten muistinkin, etten ollut maininnut virheenkäsittelystä halaistua sanaa aiemmissa osissa. Tästä johtuen osa alkaakin virheenkäsittelyllä, jatkuen sitten WinApiin. Virheenkäsittely Miksi tarvitaan virheenkäsittelyä? Eikö ohjelmat pidä ensin tehdä virheettömiksi, ja sitten vasta julkaista? Kyllä, mutta on olemassa myös sellaisia virheitä joita ei ohjelmaa tehdessä voi ennakoida. Otetaanpa esimerkiksi seuraava yksinkertainen koodinpätkä joka luo levykkeelle yksirivisen tekstitiedoston. Private Sub Form_Click() Open "a:\testi.dat" For Output As #1 Print #1, "Testirivi" Close #1 Mitäpä jos levykettä ei ole asemassa? Silloin VB ilmoittaa tylysti "Run-time error '71': Disk not ready" ja ohjelman suoritus loppuu välittömästi. Jos näin tapahtuu lopullisessa ohjelmassa, kaikki siihen asti tehty työ katoaa. Jos kyseessä oli parin tunnin työn tulos, saattaapa olla, että ohjelman käyttö katkeaa siihen. Tällaiset tilanteet voi estää rakentamalla kaikkiin ohjelman virhealttiisiin osiin virheenkäsittelysysteemi. Tämä tehdään Visual Basicissa On Error Goto -lauseella ja nimiöillä. Opassarjan alussa vannotin, ettei Goto-käskyä ja nimiöitä saisi käyttää, mutta tässä erikoistapauksessa se on ainoa vaihtoehto. Virhetilanteen tutkiminen Kun On Error Goto -lause ja nimiö on määritelty, nimiöön rakennetaan tavallisesti joku virheen tunnistava järjestelmä, virheen koodi löytyy Err-erikoismuuttujasta. Edellinen esimerkki voisi olla toimivalla virheenkäsittelyllä varustettuna seuraava: Private Sub Form_Click() On Error GoTo virhe Open "a:\testi.dat" For Input As #1 Print #1, "Testirivi" Close #1 Exit Sub virhe: Select Case Err Case 71 'asemassa ei ole levykettä Dim a As Integer a = MsgBox("Asemassa ei ole levykettä!", vbabortretryignore) If a = vbretry Then Resume Else Exit Sub

42 End If Case Else 'joku muu virhe MsgBox "Tiedostovirhe: " & Error(Err) Exit Sub End Select Resume Jos virhe on jokin muu kuin 71 (asemassa ei ole levykettä), esimerkiksi kirjoitussuojattu tiedosto, näytetään vakiomuotoinen virheilmoitus. Error(Err) palauttaa virheilmoituksen sellaisena kuin VB sen antaa (tässä "Disk not ready"). Resume yrittää suorittaa virherivin uudestaan (käyttäjä on laittanut levykkeen). Virhetilanteen ohittaminen Joissain tapauksissa virhetilante on mahdollinen, mutta harmiton, esimerkiksi seuraavassa esimerkissä, jossa lasketaan 50 sattumanvaraisen kokonaislukuparin osamäärä: Private Sub Form_Click() Dim i As Integer, x As Integer Randomize Timer For i = 1 To 50 x = Int(Rnd * 50) / Int(Rnd * 50) Next Välillä, muttei aina, jakajaksi sattuu nolla, jolla jakaminen on tietenkin mahdotonta. Jos näin käy, VB tuottaa virheilmoituksen "Run-time error 11: Division by zero". Tämän ohjelman suorituksen kannalta ei kuitenkaan ole oleellista, että jokainen lasku saadaan päätökseen. Tällöin voidaan käyttää erilaista On Error -lausetta joka aina ohittaa mahdollisen virhetilanteen seuraavaan tapaan: Private Sub Form_Click() On Error Resume Next Dim i As Integer, x As Integer Randomize Timer For i = 1 To 50 x = Int(Rnd * 50) / Int(Rnd * 50) If Err = 11 Then Err = 0 Next Nyt virhetilanteen sattuessa siirrytään seuraavalle riville. Potentiaalista virhepaikkaa seuraavalla riville kannattaa laittaa Err-muuttujan tarkastus, ja tarvittaessa nollata se. Tällä tavoin ohjelma ei keskeydy vaikka toiseksi numeroksi tulisikin nolla - ja koodia tarvittiin paljon vähemmän kuin On Error Goto -tavalla. Virhetilanteet - tutkiako vai eikö? Kuten edellisistä esimerkeistä näkyy, virhetilanteiden huomioon ottaminen lisää koodin määrää ja aiheuttaa aina lisämietittävää ohjelmoijalle. Monesti tekisikin mieli unohtaa tämä osuus ohjelman teossa, voiko näin tehdä? Se riippuu aika paljon siitä, mihin ohjelma tulee. Jos ohjelman tekee itselleen apuohjelmaksi johonkin erikoistarkoitukseen, tällöin virhetilanteista ei kannata liikaa

43 huolehtia, itse osaa kuitenkin pysyä erossa virhetilanteissa, kun tietää ohjelman rajoitukset. Tai jos ei osaa, sitten täytyy vain syyttää itseään. Jos ohjelmaa rupeaa jakamaan muillekin esimerkiksi Internetissä, virhetilanteiden käsittelyn pitäisi kuitenkin olla kunnossa. Missään tilanteessa ei pitäisi olla mahdollisuutta ohjelman täydelliselle kaatumiselle. Yksikin hallitsematon virhetilanne voi antaa ohjelmasta epäluotettavan vaikutelman. Windows Api Vaikka Visual Basic aikoinaan kehitettiinkin vaikeakäyttöisen WinApi:n korvaajaksi, WinApi-funktiot ovat todella tarpeellisia kehittyneemmässä VB-ohjelmoinnissa. Funktioilla voi monesti tehdä sellaista, mikä pelkällä VB:llä olisi todella vaikeaa ellei mahdotonta. WinApi:n kautta pääsee käsiksi moniin Windowsin ominaisuuksiin, jotka Visual Basicista puuttuvat tai ovat mukana yksinkertaistettuna. Lisäksi funktiot ovat poikkeuksetta nopeampia kuin VB:n omat - tämä on tärkeää etenkin grafiikkaohjelmien kanssa. Funktioiden määritteleminen Funktiot määritellään formin/moduulin (Declarations)-osassa Declare-lauseella. Jos funktiota halutaan kutsua sen formin/moduulin alueella, jossa se on määritelty, lauseen eteen kirjoitetaan Private-avainsana. Jos funktio määritellään moduulissa, se voi myös olla voimassa ohjelman kaikissa osissa. Tällöin käytetään avainsanaa Public. Tekstin tulostamiseen tarkoitetun TextOut-funktion määrittely näyttää esimerkiksi seuraavalta: Private Declare Function TextOut Lib "gdi32" Alias "TextOutA" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal lpstring As String, ByVal ncount As Long) As Long" Välillä funktion parametrit sisältävät erikoismuuttujatyyppejä, jotka on määriteltävä funktiomäärityksiä ennen Type-käskyllä. Funktio voi saada myös parametreikseen tai palauttaa vakioita, jotka määritetään niin ikään (Declarations)-osassa. Funktioiden kutsuminen ohjelmasta WinApi-funktioita kutsutaan ohjelmasta kuin mitä tahansa muita funktioita. Esimerkiksi seuraava koodinpätkä tulostaisi äsken määritellyllä TextOut-funktiolla tekstiä formille: x = TextOut(Me.hdc, 0, 0, "Moikka!", 7)

44 Kahvat Kahvat ('handles') ovat suuressa roolissa WinApi:ssa. Ne ovat lukuja, jotka yksilöivät käyttöjärjestelmän oliot, esimerkiksi ikkunat, valikot ja kuvakkeet. Kahvojen nimet parametreina alkavat yleensä h-kirjaimella. Kaksi tärkeintä kahvaa, joita monet funktiot vaativat parametreikseen, ovat hdc ja hwnd. Hdc esiintyy tavallisesti piirtokomennoissa, ja se kuvaa piirtoaluetta. VB:ssä formilla ja PictureBox-komponentilla on automaattisesti oma hdc. Jokaisella ikkunalla taas on hwnd-kahva, joita tarvitaan useimmissa ikkunankäsittelyfunktioissa. Tämäkin löytyy VB:stä formin attribuuttina. Näiden lisäksi on lukuisia muita kahvoja, esimerkiksi hmenu, hicon, hcursor ja hpalette, joita käytetään samalla periaatteella.

Ohjausjärjestelmien jatkokurssi. Visual Basic vinkkejä ohjelmointiin

Ohjausjärjestelmien jatkokurssi. Visual Basic vinkkejä ohjelmointiin Ohjausjärjestelmien jatkokurssi Visual Basic vinkkejä ohjelmointiin http://www.techsoft.fi/oskillaattoripiirit.htm http://www.mol.fi/paikat/job.do?lang=fi&jobid=7852109&index=240&anchor=7852109 Yksiköt

Lisätiedot

Muuttujatyypit ovat Boolean, Byte, Integer, Long, Double, Currency, Date, Object, String, Variant (oletus)

Muuttujatyypit ovat Boolean, Byte, Integer, Long, Double, Currency, Date, Object, String, Variant (oletus) VISUAL BASIC OHJEITA Kutsuttava ohjelma alkaa kometoparilla Sub... End Sub Sub ohjelmanimi()...koodia... End Sub Muuttujat Muuttujan esittely Muuttujatyypit ovat Boolean, Byte, Integer, Long, Double, Currency,

Lisätiedot

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit IDL - proseduurit 25. huhtikuuta 2017 Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,

Lisätiedot

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014 18. syyskuuta 2014 IDL - proseduurit Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 7. huhtikuuta 2017 Vastaa kaikkiin tehtäviin. Tee jokainen tehtävä erilliselle konseptiarkille. Kirjoittamasi luokat, funktiot ja aliohjelmat

Lisätiedot

TAULUKON TEKEMINEN. Sisällysluettelo

TAULUKON TEKEMINEN. Sisällysluettelo Excel 2013 Taulukon tekeminen Sisällysluettelo TAULUKON TEKEMINEN TAULUKON TEKEMINEN... 1 Tietotyypit... 1 Tiedon syöttäminen taulukkoon... 1 Kirjoitusvirheiden korjaaminen... 2 Alueen sisällön tyhjentäminen...

Lisätiedot

Python-ohjelmointi Harjoitus 5

Python-ohjelmointi Harjoitus 5 Python-ohjelmointi Harjoitus 5 TAVOITTEET Kerrataan silmukkarakenteen käyttäminen. Kerrataan jos-ehtorakenteen käyttäminen. Opitaan if else- ja if elif else-ehtorakenteet. Matematiikan sisällöt Tehtävät

Lisätiedot

Luento 5. Timo Savola. 28. huhtikuuta 2006

Luento 5. Timo Savola. 28. huhtikuuta 2006 UNIX-käyttöjärjestelmä Luento 5 Timo Savola 28. huhtikuuta 2006 Osa I Shell-ohjelmointi Ehtolause Lausekkeet suoritetaan jos ehtolausekkeen paluuarvo on 0 if ehtolauseke then lauseke

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 20.1.2010 T-106.1208 Ohjelmoinnin perusteet Y 20.1.2010 1 / 40 Arvon pyytäminen käyttäjältä Käyttäjän antaman arvon voi lukea raw_input-käskyllä. Käskyn sulkujen

Lisätiedot

Ohjelmointitaito (ict1td002, 12 op) Kevät 2008. 1. Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen raine.kauppinen@haaga-helia.

Ohjelmointitaito (ict1td002, 12 op) Kevät 2008. 1. Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen raine.kauppinen@haaga-helia. Ohjelmointitaito (ict1td002, 12 op) Kevät 2008 Raine Kauppinen [email protected] 1. Java-ohjelmoinnin alkeita Tietokoneohjelma Java-kieli ja Eclipse-ympäristö Java-ohjelma ja ohjelmaluokka

Lisätiedot

Tekstinkäsittelyn jatko Error! Use the Home tab to apply Otsikko 1 to the text that you want to appear here. KSAO Liiketalous 1

Tekstinkäsittelyn jatko Error! Use the Home tab to apply Otsikko 1 to the text that you want to appear here. KSAO Liiketalous 1 KSAO Liiketalous 1 Lomakkeet Lomake on asiakirja, joka sisältää täyttämistä ohjaavia tietoja tai merkintöjä. Wordin lomakekenttä-toiminnolla luodaan näytöllä täytettäviä lomakkeita tai tulostettavia lomakepohjia.

Lisätiedot

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin. 2. Ohjausrakenteet Ohjausrakenteiden avulla ohjataan ohjelman suoritusta. peräkkäisyys valinta toisto Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet

Lisätiedot

5. HelloWorld-ohjelma 5.1

5. HelloWorld-ohjelma 5.1 5. HelloWorld-ohjelma 5.1 Sisällys Lähdekoodi. Lähdekoodin (osittainen) analyysi. Lähdekoodi tekstitiedostoon. Lähdekoodin kääntäminen tavukoodiksi. Tavukoodin suorittaminen. Virheiden korjaaminen 5.2

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 21.1.2009 T-106.1208 Ohjelmoinnin perusteet Y 21.1.2009 1 / 32 Tyypeistä Monissa muissa ohjelmointikielissä (esim. Java ja C) muuttujat on määriteltävä ennen

Lisätiedot

Muuttujien määrittely

Muuttujien määrittely Tarja Heikkilä Muuttujien määrittely Määrittele muuttujat SPSS-ohjelmaan lomakkeen kysymyksistä. Harjoitusta varten lomakkeeseen on muokattu kysymyksiä kahdesta opiskelijoiden tekemästä Joupiskan rinneravintolaa

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 22. huhtikuuta 2016 Vastaa kaikkiin tehtäviin. Tee jokainen tehtävä erilliselle konseptiarkille! Kirjoittamasi luokat, funktiot ja aliohjelmat

Lisätiedot

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, literaalivakio, nimetty vakio Tiedon merkkipohjainen tulostaminen 1 Tunnus Java tunnus Java-kirjain Java-numero

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 7.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 7.2.2011 1 / 39 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti

Lisätiedot

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5) Alkuarvot ja tyyppimuunnokset (1/5) Aiemmin olemme jo antaneet muuttujille alkuarvoja, esimerkiksi: int luku = 123; Alkuarvon on oltava muuttujan tietotyypin mukainen, esimerkiksi int-muuttujilla kokonaisluku,

Lisätiedot

Tutoriaaliläsnäoloista

Tutoriaaliläsnäoloista Tutoriaaliläsnäoloista Tutoriaaliläsnäolokierroksella voi nyt täyttää anomuksen läsnäolon merkitsemisestä Esim. tagi ei toiminut, korvavaltimon leikkaus, yms. Hyväksyn näitä omaa harkintaa käyttäen Tarkoitus

Lisätiedot

12. Javan toistorakenteet 12.1

12. Javan toistorakenteet 12.1 12. Javan toistorakenteet 12.1 Sisällys Yleistä toistorakenteista. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirheitä. Silmukan rajat asetettu

Lisätiedot

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python 8. marraskuuta 2010 Ohjelmointi Perusteet Peruskäsitteitä Olio-ohjelmointi Pythonin alkeet Esittely Esimerkkejä Muuttujat

Lisätiedot

GeoGebra-harjoituksia malu-opettajille

GeoGebra-harjoituksia malu-opettajille GeoGebra-harjoituksia malu-opettajille 1. Ohjelman kielen vaihtaminen Mikäli ohjelma ei syystä tai toisesta avaudu toivomallasi kielellä, voit vaihtaa ohjelman käyttöliittymän kielen seuraavasti: 2. Fonttikoon

Lisätiedot

12. Javan toistorakenteet 12.1

12. Javan toistorakenteet 12.1 12. Javan toistorakenteet 12.1 Sisällys Yleistä toistorakenteista. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirheitä. Silmukan rajat asetettu

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 19.1.2011 T-106.1208 Ohjelmoinnin perusteet Y 19.1.2011 1 / 39 Haluatko antaa palautetta luennoista? Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti Vast

Lisätiedot

Python-ohjelmointi Harjoitus 2

Python-ohjelmointi Harjoitus 2 Python-ohjelmointi Harjoitus 2 TAVOITTEET Kerrataan tulostuskomento ja lukumuotoisen muuttujan muuttaminen merkkijonoksi. Opitaan jakojäännös eli modulus, vertailuoperaattorit, ehtorakenne jos, input-komento

Lisätiedot

OpenOffice.org Base 3.1.0

OpenOffice.org Base 3.1.0 OpenOffice.org Base 3.1.0 Sisällysluettelo 1 Tietokannan luominen...1 2 Taulukon eli taulun luominen...3 3 Kysely...9 4 Raportti...14 1 Tietokannan luominen Tietokanta on kokoelma tietoja, joilla on yhteys

Lisätiedot

13. Loogiset operaatiot 13.1

13. Loogiset operaatiot 13.1 13. Loogiset operaatiot 13.1 Sisällys Loogiset operaatiot AND, OR, XOR ja NOT. Operaatioiden ehdollisuus. Bittioperaatiot. Loogiset operaatiot ohjausrakenteissa. Loogiset operaatiot ja laskentajärjestys.

Lisätiedot

Kielioppia: toisin kuin Javassa

Kielioppia: toisin kuin Javassa Object Pascal Pascal kielen oliolaajennus (Inprise/Borland:n oma) luokat Voit uudelleenkäyttää luomiasi objekteja esim. komponentteja Periytyminen Kielioppia: toisin kuin Javassa Ei eroa isojen ja pienien

Lisätiedot

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti: 1 (7) Tiedon lukeminen näppäimistöltä Scanner-luokan avulla Miten ohjelma saa käyttöönsä käyttäjän kirjoittamaa tekstiä? Järjestelmässä on olemassa ns. syöttöpuskuri näppäimistöä varten. Syöttöpuskuri

Lisätiedot

TAULUKOINTI. Word Taulukot

TAULUKOINTI. Word Taulukot Word 2013 Taulukot TAULUKOINTI TAULUKOINTI... 1 Taulukon tekeminen... 1 Solusta toiseen siirtyminen... 1 Solun tyhjentäminen... 2 Taulukon Layout (Asettelu) välilehti... 2 Alueiden valitseminen taulukossa...

Lisätiedot

Sen jälkeen Microsoft Office ja sen alta löytyy ohjelmat. Ensin käynnistä-valikosta kaikki ohjelmat

Sen jälkeen Microsoft Office ja sen alta löytyy ohjelmat. Ensin käynnistä-valikosta kaikki ohjelmat Microsoft Office 2010 löytyy tietokoneen käynnistävalikosta aivan kuin kaikki muutkin tietokoneelle asennetut ohjelmat. Microsoft kansion sisältä löytyy toimisto-ohjelmistopakettiin kuuluvat eri ohjelmat,

Lisätiedot

Visma Fivaldi -käsikirja Asiakaskohtaiset hinnat

Visma Fivaldi -käsikirja Asiakaskohtaiset hinnat Visma Fivaldi -käsikirja Asiakaskohtaiset hinnat 2 Sisällys 1 Yleistä... 3 2 Ylävalikko... 4 3 Vasemman laidan painikkeet... 5 4 Erikoishinnoittelut ruutu... 6 5 Raportit... 12 1 Yleistä Fivaldi Asiakaskohtaiset

Lisätiedot

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python 31. tammikuuta 2009 Ohjelmointi Perusteet Pythonin alkeet Esittely Esimerkkejä Muuttujat Peruskäsitteitä Käsittely

Lisätiedot

KÄYTTÖLIITTYMÄN PIIRTÄMINEN

KÄYTTÖLIITTYMÄN PIIRTÄMINEN LUKU 2 KÄYTTÖLIITTYMÄN PIIRTÄMINEN Käyttöliittymän ohjaimien lisääminen lomakkeeseen on mahdollisimman yksinkertaista. Käynnistettäessä työtilassa on työkalulaatikko, josta voit valita ohjaimen napsauttamalla

Lisätiedot

Scratch ohjeita. Perusteet

Scratch ohjeita. Perusteet Perusteet Scratch ohjeita Scratch on graafinen ohjelmointiympäristö koodauksen opetteluun. Se soveltuu hyvin alakouluista yläkouluunkin asti, sillä Scratchin käyttömahdollisuudet ovat monipuoliset. Scratch

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 14.9.2016 CS-A1111 Ohjelmoinnin peruskurssi Y1 14.9.2016 1 / 19 Oppimistavoitteet: tämän luennon jälkeen osaat kirjoittaa Python-ohjelman, joka pyytää käyttäjältä lukuja,

Lisätiedot

[Lomake.][Ohjain.]metodi [argumentit] Seuraava aliohjelma, jossa käytetään kuvakehyksen Move-metodia, luo vaikutelman etääntyvästä kuvakehyksestä:

[Lomake.][Ohjain.]metodi [argumentit] Seuraava aliohjelma, jossa käytetään kuvakehyksen Move-metodia, luo vaikutelman etääntyvästä kuvakehyksestä: LUKU 5 METODIT Paitsi ominaisuuksia ja tapahtumia lomakkeeseen ja ohjaimiin sekä Visual Basicin erityisolioihin Printer, Screen, Clipboard, Debug ja App samoin kuin muihin Vb:ssä käytettäviin olioihin

Lisätiedot

Zeon PDF Driver Trial

Zeon PDF Driver Trial Matlab-harjoitus 2: Kuvaajien piirto, skriptit ja funktiot. Matlabohjelmoinnin perusteita Numeerinen integrointi trapezoidaalimenetelmällä voidaan tehdä komennolla trapz. Esimerkki: Vaimenevan eksponentiaalin

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 1.4.2009 T-106.1208 Ohjelmoinnin perusteet Y 1.4.2009 1 / 56 Tentti Ensimmäinen tenttimahdollisuus on pe 8.5. klo 13:00 17:00 päärakennuksessa. Tämän jälkeen

Lisätiedot

11. Javan toistorakenteet 11.1

11. Javan toistorakenteet 11.1 11. Javan toistorakenteet 11.1 Sisällys Laskuri- ja lippumuuttujat. Sisäkkäiset silmukat. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin

Lisätiedot

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo 15.2.2006

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo 15.2.2006 TURUN YLIOPISTO DEMO III Informaatioteknologian laitos tehtävät Olio-ohjelmoinnin perusteet / Salo 15.2.2006 1. Tässä tehtävässä tarkastellaan erääntyviä laskuja. Lasku muodostaa oman luokkansa. Laskussa

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 13.9.2017 CS-A1111 Ohjelmoinnin peruskurssi Y1 13.9.2017 1 / 19 Oppimistavoitteet: tämän luennon jälkeen osaat kirjoittaa Python-ohjelman, joka pyytää käyttäjältä lukuja,

Lisätiedot

KUVAN TUOMINEN, MUOKKAAMINEN, KOON MUUTTAMINEN JA TALLENTAMINEN PAINTISSA

KUVAN TUOMINEN, MUOKKAAMINEN, KOON MUUTTAMINEN JA TALLENTAMINEN PAINTISSA KUVAN TUOMINEN, MUOKKAAMINEN, KOON MUUTTAMINEN JA TALLENTAMINEN PAINTISSA SISÄLLYS 1. KUVAN TUOMINEN PAINTIIN...1 1.1. TALLENNETUN KUVAN HAKEMINEN...1 1.2. KUVAN KOPIOIMINEN JA LIITTÄMINEN...1 1.1. PRINT

Lisätiedot

Visma Fivaldi -käsikirja MiniCRM

Visma Fivaldi -käsikirja MiniCRM Visma Fivaldi -käsikirja MiniCRM 2 Sisällys 1 Yleistä... 3 2 Ylävalikko... 4 3 Perustiedot - välilehti... 5 4 Tila (vapaassa tekstikentässä edellisellä sivulla annettu nimi) - välilehti... 6 5 Vasemman

Lisätiedot

Pikanäppäin Yhdistelmiä. Luku 6 Pikanäppäimet

Pikanäppäin Yhdistelmiä. Luku 6 Pikanäppäimet Luku 6 Pikanäppäimet Pikanäppäimet ovat näppäinyhdistelmiä, jotka mahdollistavt ZoomTextin komennot ilman ZoomTextin käyttäjäliittymän aktivointia. Pikanäppäin komentoja on melkein jokaisella ZoomTextin

Lisätiedot

Ohjelmointi 1. Kumppanit

Ohjelmointi 1. Kumppanit Ohjelmointi 1 Kumppanit November 20, 2012 2 Contents 1 Mitä ohjelmointi on 7 2 Ensimmäinen C#-ohjelma 9 2.1 Ohjelman kirjoittaminen......................... 9 A Liite 11 3 4 CONTENTS Esipuhe Esipuhe 5

Lisätiedot

FrontPage 2000 - Näkymät

FrontPage 2000 - Näkymät FrontPage 2000 - Näkymät FrontPagessa on kuusi erilaista näkymää sivustoon. Sivunäkymä Tässä näkymässä luodaan sivut eli näkymä vastaa paljolti Wordin tekstinkäsittelyohjelman näkymää. Tässä on myös muokattava

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 16.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 16.2.2010 1 / 41 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 30.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 30.9.2015 1 / 27 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2009 1 / 28 Puhelinluettelo, koodi def lue_puhelinnumerot(): print "Anna lisattavat nimet ja numerot." print

Lisätiedot

Sisällys. 12. Javan toistorakenteet. Yleistä. Laskurimuuttujat

Sisällys. 12. Javan toistorakenteet. Yleistä. Laskurimuuttujat Sisällys 12. Javan toistorakenteet Ylstä toistorakentsta. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirhtä. Silmukan rajat asetettu kierroksen

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 9.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2015 1 / 26 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 20. huhtikuuta 2018 Vastaa kaikkiin tehtäviin. Tee kukin tehtävä omalle konseptiarkille. Noudata ohjelmointitehtävissä kurssin koodauskäytänteitä.

Lisätiedot

C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa.

C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa. Taulukot C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa. Taulukon muuttujilla (muistipaikoilla) on yhteinen nimi. Jokaiseen yksittäiseen

Lisätiedot

Käyttöliittymän muokkaus

Käyttöliittymän muokkaus Käyttöliittymän muokkaus Ohjelman pitkän kehityshistorian takia asetukset ovat jakaantuneet useampaan eri kohtaan ohjelmassa. Ohessa yhteenveto nykyisistä asetuksista (versio 6.4.1, 2/2018). Ylä- ja sivupalkkien

Lisätiedot

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti C! Perusteet 19.1.2017 Palautteesta (1. kierros toistaiseksi) Toistaiseksi helppoa Miksi vain puolet pisteistä? Vaikeinta oli ohjelmointiympäristön asennus ja käyttö Vaikeaa eroavuudet Pythonin ja C:n

Lisätiedot

Ksenos Prime Käyttäjän opas

Ksenos Prime Käyttäjän opas Ksenos Prime Käyttäjän opas Versio 11.301 Turun Turvatekniikka Oy 2011 Selaa tallenteita. Tallenteiden selaaminen tapahtuu samassa tilassa kuin livekuvan katselu. Voit raahata hiirellä aikajanaa tai käyttää

Lisätiedot

Merkkijono määritellään kuten muutkin taulukot, mutta tilaa on varattava yksi ylimääräinen paikka lopetusmerkille:

Merkkijono määritellään kuten muutkin taulukot, mutta tilaa on varattava yksi ylimääräinen paikka lopetusmerkille: Merkkijonot C-kielessä merkkijono on taulukko, jonka alkiot ovat char -tyyppiä. Taulukon viimeiseksi merkiksi tulee merkki '\0', joka ilmaisee merkkijonon loppumisen. Merkkijono määritellään kuten muutkin

Lisätiedot

3. Muuttujat ja operaatiot 3.1

3. Muuttujat ja operaatiot 3.1 3. Muuttujat ja operaatiot 3.1 Sisällys Imperatiivinen laskenta. Muuttujat. Nimi ja arvo. Muuttujan nimeäminen. Muuttujan tyyppi. Operaattorit. Operandit. Arvon sijoitus muuttujaan. Aritmeettiset operaattorit.

Lisätiedot

Juha Haataja 4.10.2011

Juha Haataja 4.10.2011 METROPOLIA Taulukkolaskenta Perusteita Juha Haataja 4.10.2011 Lisätty SUMMA.JOS funktion käyttö (lopussa). Tavoite ja sisältö Tavoite Taulukkolaskennan peruskäytön hallinta Sisältö Työtila Omat kaavat,

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 12.9.2018 CS-A1111 Ohjelmoinnin peruskurssi Y1 12.9.2018 1 / 19 Oppimistavoitteet: tämän luennon jälkeen osaat kirjoittaa Python-ohjelman, joka pyytää käyttäjältä lukuja,

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti Tentaattori: Antti-Jussi Lakanen 8. kesäkuuta 2018 Yleistä Tentti 1 meni pistekeskiarvon (11.2) perusteella välttävästi. Omasta tehtäväpaperista saa kopion

Lisätiedot

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä Sisällys 11. Javan toistorakenteet Laskuri- ja lippumuuttujat.. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin lopettaminen break-lauseella.

Lisätiedot

TIETOKONEEN ASETUKSILLA PARANNAT KÄYTETTÄVYYTTÄ

TIETOKONEEN ASETUKSILLA PARANNAT KÄYTETTÄVYYTTÄ TIETOKONEEN ASETUKSILLA PARANNAT KÄYTETTÄVYYTTÄ Windows XP-käyttöjärjestelmän asetuksilla sekä Word-asetuksilla voit vaikuttaa tietokoneen näytön ulkoasuun, selkeyteen ja helppokäyttöisyyteen.. 1) ASETUKSET

Lisätiedot

13. Loogiset operaatiot 13.1

13. Loogiset operaatiot 13.1 13. Loogiset operaatiot 13.1 Sisällys Loogiset operaatiot AND, OR, XOR ja NOT. Operaatioiden ehdollisuus. Bittioperaatiot. Loogiset operaatiot ohjausrakenteissa. Loogiset operaatiot ja laskentajärjestys.

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2011 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2011 1 / 39 Kertausta: tiedoston avaaminen Kun ohjelma haluaa lukea tai kirjoittaa tekstitiedostoon, on ohjelmalle

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 10.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 10.2.2010 1 / 43 Kertausta: listat Tyhjä uusi lista luodaan kirjoittamalla esimerkiksi lampotilat = [] (jolloin

Lisätiedot

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes)

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes) Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes) Kääreluokista Javan alkeistietotyypit ja vastaavat kääreluokat Autoboxing Integer-luokka Double-luokka Kääreluokista Alkeistietotyyppiset muuttujat (esimerkiksi

Lisätiedot

Avaa ohjelma ja tarvittaessa Tiedosto -> Uusi kilpailutiedosto

Avaa ohjelma ja tarvittaessa Tiedosto -> Uusi kilpailutiedosto Condess ratamestariohjelman käyttö Aloitus ja alkumäärittelyt Avaa ohjelma ja tarvittaessa Tiedosto -> Uusi kilpailutiedosto Kun kysytään kilpailun nimeä, syötä kuvaava nimi. Samaa nimeä käytetään oletuksena

Lisätiedot

tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla

tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla 2.5. YDIN-HASKELL 19 tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla kirjaimilla. Jos Γ ja ovat tyyppilausekkeita, niin Γ on tyyppilauseke. Nuoli kirjoitetaan koneella

Lisätiedot

Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat. Operaatiot. Imperatiivinen laskenta. Muuttujat. Esimerkkejä: Operaattorit.

Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat. Operaatiot. Imperatiivinen laskenta. Muuttujat. Esimerkkejä: Operaattorit. 3. Muuttujat ja operaatiot Sisällys Imperatiivinen laskenta. Muuttujat. Nimi ja arvo. Muuttujan nimeäminen. Muuttujan tyyppi.. Operandit. Arvon sijoitus muuttujaan. Aritmeettiset operaattorit. Arvojen

Lisätiedot

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen Ohjelmointitaito (ict1td002, 12 op) Kevät 2009 Raine Kauppinen [email protected] 1. Java-ohjelmoinnin alkeita Tietokoneohjelma Java-kieli ja Eclipse-kehitysympäristö Java-ohjelma ja luokka

Lisätiedot

Tekstinkäsittelyn jatko KSAO Liiketalous 1

Tekstinkäsittelyn jatko KSAO Liiketalous 1 KSAO Liiketalous 1 Makrojen perusteita Toistuvia tehtäviä ja tehtäväsarjoja voidaan automatisoidan makrojen avulla. Makrot ovat sarja nauhoitettuja käskyjä, jotka määräävät mitä toimintoja makro toteuttaa.

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 11.9.2019 CS-A1111 Ohjelmoinnin peruskurssi Y1 11.9.2019 1 / 19 Oppimistavoitteet: tämän luennon jälkeen osaat kirjoittaa Python-ohjelman, joka pyytää käyttäjältä lukuja,

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 15.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 15.2.2010 1 / 46 Merkkijonot Merkkijonojen avulla ohjelmassa voi esittää tekstitietoa, esim. nimiä, osoitteita ja

Lisätiedot

NÄIN TEET VIDEO-MAILIN (v-mail)

NÄIN TEET VIDEO-MAILIN (v-mail) 1 NÄIN TEET VIDEO-MAILIN (v-mail) Kirjaudu iwowwe Back Officeen. HOME Klikkaa kotisivullasi (HOME) olevaa vihreää Video E-mail kuvaa Vastaava linkki Video Email on myös Video Tools - alasvetovalikossa

Lisätiedot

C# Windows ohjelmointi perusopas

C# Windows ohjelmointi perusopas Paavo Räisänen C# Windows ohjelmointi perusopas www.ohjelmoimaan.net Tätä opasta saa vapaasti kopioida, tulostaa ja levittää ei kaupallisissa tarkoituksissa. Kuitenkaan omille nettisivuille opasta ei saa

Lisätiedot

KUVANKÄSITTELY THE GIMP FOR WINDOWS OHJELMASSA

KUVANKÄSITTELY THE GIMP FOR WINDOWS OHJELMASSA KUVANKÄSITTELY THE GIMP FOR WINDOWS OHJELMASSA Ohjeistuksessa käydään läpi kuvan koon ja kuvan kankaan koon muuntaminen esimerkin avulla. Ohjeistus on laadittu auttamaan kuvien muokkaamista kuvakommunikaatiota

Lisätiedot

Vesa Ollikainen, päivitys Juha Haataja 3.8.2010

Vesa Ollikainen, päivitys Juha Haataja 3.8.2010 METROPOLIA Tekstinkäsittely1 Peruskäyttö Vesa Ollikainen, päivitys Juha Haataja 3.8.2010 Tavoitteet ja sisältö Tavoite Lyhyen asiakirjan kirjoitustaito Word-tekstinkäsittelyohjelmalla Sisältö Tekstinkäsittelyohjelman

Lisätiedot

16. Ohjelmoinnin tekniikkaa 16.1

16. Ohjelmoinnin tekniikkaa 16.1 16. Ohjelmoinnin tekniikkaa 16.1 Sisällys For-lause lyhemmin. Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely ja alustaminen yhdellä lauseella. If-else-lause vaihtoehtoisesti

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 12. huhtikuuta 2019 Tee kukin tehtävä omalle konseptiarkille. Noudata ohjelmointitehtävissä kurssin koodauskäytänteitä. Yksi A4-kokoinen lunttilappu

Lisätiedot

Sisällys. 17. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. for-lause lyhemmin

Sisällys. 17. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. for-lause lyhemmin Sisällys 17. Ohjelmoinnin tekniikkaa for-lause lyhemmin. Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely ja alustaminen yhdellä lauseella. if-else-lause vaihtoehtoisesti

Lisätiedot

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti C! Perusteet 19.1.2017 Palautteesta (1. kierros toistaiseksi) (Erittäin) helppoa Miksi vain puolet pisteistä? Vaikeinta oli ohjelmointiympäristön asennus ja käyttö Ei selvää että main funktion pitikin

Lisätiedot

Sisältö. 22. Taulukot. Yleistä. Yleistä

Sisältö. 22. Taulukot. Yleistä. Yleistä Sisältö 22. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko metodin parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 22.1 22.2 Yleistä

Lisätiedot

Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan.

Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan. Osoittimet Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan. Muistilohkon koko riippuu muuttujan tyypistä, eli kuinka suuria arvoja muuttujan

Lisätiedot

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti Luku 6 Dynaaminen ohjelmointi Dynaamisessa ohjelmoinnissa on ideana jakaa ongelman ratkaisu pienempiin osaongelmiin, jotka voidaan ratkaista toisistaan riippumattomasti. Jokaisen osaongelman ratkaisu tallennetaan

Lisätiedot

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, Vakio Tiedon merkkipohjainen tulostaminen Ohjelmointi (ict1tx006) Tunnus (5.3) Javan tunnus Java-kirjain Java-numero

Lisätiedot

Jypelin käyttöohjeet» Miten saan peliin pistelaskurin?

Jypelin käyttöohjeet» Miten saan peliin pistelaskurin? Jypelin käyttöohjeet» Miten saan peliin pistelaskurin? Pistelaskurin saamiseksi tarvitaan kaksi osaa: Laskuri, joka laskee pisteitä Olio, joka näyttää pisteet ruudulla Laskuri voi olla esimerkiksi tyyppiä

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 2.2.2011 1 / 37 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti

Lisätiedot

VERKKOVELHO-YLLÄPITOTYÖKALUN KÄYTTÖOHJE

VERKKOVELHO-YLLÄPITOTYÖKALUN KÄYTTÖOHJE VERKKOVELHO-YLLÄPITOTYÖKALUN KÄYTTÖOHJE 1. SISÄÄN KIRJAUTUMINEN Sisään kirjautuminen VerkkoVelho-ylläpitotyökaluun tapahtuu yrityksesi osoitteessa www.omaosoitteesi.fi/yllapito, esim. www.verkkovelho.fi/yllapito.

Lisätiedot

ASENNUS- JA KÄYTTÖOHJE

ASENNUS- JA KÄYTTÖOHJE ASENNUS- JA KÄYTTÖOHJE YKSIKKÖHINTA SOPIMUKSEN TOTEUTUNEET MÄÄRÄT-SOVELLUS CMPRO5 VERSIO 2.8 PÄIVITETTY HEINÄKUU 2010 COPYRIGHT 2010 ARTEMIS FINLAND OY. ALL RIGHTS RESERVED. KÄYTTÖOHJE SIVU 2 (12) SISÄLLYSLUETTELO

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 28.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2015 1 / 16 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

Lisätiedot

Javan perusteet. Ohjelman tehtävät: tietojen syöttö, lukeminen prosessointi, halutun informaation tulostaminen tulostus tiedon varastointi

Javan perusteet. Ohjelman tehtävät: tietojen syöttö, lukeminen prosessointi, halutun informaation tulostaminen tulostus tiedon varastointi 1 Javan perusteet Ohjelmointi IPO-malli Java lähdekoodista suoritettavaksi ohjelmaksi Vakio Muuttuja Miten Javalla näytetään tietoa käyttäjälle, miten Javalla luetaan käyttäjän antama syöte Miten Javalla

Lisätiedot

1 Asentaminen. 2 Yleistä ja simuloinnin aloitus 12/2006 1.1.1

1 Asentaminen. 2 Yleistä ja simuloinnin aloitus 12/2006 1.1.1 1 Asentaminen...2 2 Yleistä ja simuloinnin aloitus...2 2.1 PI-säätimet...3 2.2 Trendit...4 3 Lämpölaitoksen ohjaus...5 4 Voimalan alkuarvojen muuttaminen...6 5 Tulostus...8 6 Mahdollisia ongelmia...8 6.1

Lisätiedot

Harjoitus 2 (viikko 45)

Harjoitus 2 (viikko 45) Mikäli tehtävissä on jotain epäselvää, laita sähköpostia vastuuopettajalle ([email protected]). Muista lisätä static-määre operaatioidesi otsikoihin, jotta ohjelmasi kääntyvät. Muista noudattaa hyvän

Lisätiedot

5. HelloWorld-ohjelma 5.1

5. HelloWorld-ohjelma 5.1 5. HelloWorld-ohjelma 5.1 Sisällys Lähdekoodi. Lähdekoodin (osittainen) analyysi. Lähdekoodi tekstitiedostoon. Lähdekoodin kääntäminen tavukoodiksi. Tavukoodin suorittaminen. Virheiden korjaaminen 5.2

Lisätiedot

Ajokorttimoduuli Moduuli 2. - Laitteenkäyttö ja tiedonhallinta. Harjoitus 1

Ajokorttimoduuli Moduuli 2. - Laitteenkäyttö ja tiedonhallinta. Harjoitus 1 Ajokorttimoduuli Moduuli 2 - Laitteenkäyttö ja tiedonhallinta Harjoitus 1 Tämän harjoituksen avulla opit alustamaan levykkeesi (voit käyttää levykkeen sijasta myös USBmuistitikkua). Harjoitus tehdään Resurssienhallinnassa.

Lisätiedot