Perusasiat. Mitkä ovat C++-ohjelman perusosat. Miten lähdeteksti kommentoidaan. Miten lähdetekstistä tulee suoritettava ohjelma

Koko: px
Aloita esitys sivulta:

Download "Perusasiat. Mitkä ovat C++-ohjelman perusosat. Miten lähdeteksti kommentoidaan. Miten lähdetekstistä tulee suoritettava ohjelma"

Transkriptio

1 Perusasiat 1 Perusasiat Tässä ensimmäisessä luvussa käsittelemme C++:n perusominaisuuksia. Kaikkiin tässä käsiteltäviin asioihin palataan tarkemmin myöhemmissä luvuissa - tarkoituksena on nyt vain hieman raottaa esirippua ennen kuin siirrymme C++-ohjelmien kirjoittamisen saloihin. Näytämme miltä yksinkertainen C++-ohjelma näyttää ja miten kaikki oikein rakennetaan yhteen. Käsittelemme myöskin yleisesti ohjelmointia C++:n avulla sekä miten teet kirjoittamastasi lähdetekstistä suoritettavan ohjelman. Älä yritä muistaa kaikkea tässä kappaleessa esitettyä. Keskity vain esitettyihin ideoihin. Kaikki tässä kappaleessa mainittu tulee vastaan myöhemmissä kappaleissa, ja opit parhaiten kokeilemalla itse, ei pelkästään lukemalla. Tässä kappaleessa käsittelemme seuraavaa: Mitkä C++:n ominaisuudet tekevät siitä niin suositun Mitkä ovat C++-ohjelman perusosat Miten lähdeteksti kommentoidaan Miten lähdetekstistä tulee suoritettava ohjelma Miten olio-ohjelmointi eroaa proseduraalisesta ohjelmoinnista Ohjelmointikielet Tunnet jo ehkä ohjelmoinnin perusasiat sekä joitakin ohjelmointikieliä, mutta haluamme varmistaa, että seisomme tukevasti samalla maaperällä käymällä ensiksi läpi kirjassa käytettyjä termejä. Vertailemme C++ -kieltä myös muihin ohjelmointikieliin, joista olet saattanut kuulla jo aiemmin. Ohjelmointikielestä riippumatta kirjoittamasi ohjelmat muodostuvat yksittäisistä käskyistä, jotka muodostavat lähdetekstin. Lähdetekstit talletetaan lähdetekstitiedostoon. Erilaisia ohjelmointikieliä on olemassa runsaasti. Niissä on kussakin omat hyvät ja huonot puolensa. C++:n lisäksi olet saattanut kuulla kielistä kuten BASIC, COBOL, FORTRAN, Pascal ja C. FORTRAN on kieli, joka on ollut olemassa jo lähes 40 vuotta ja käytetään edelleen laajasti tieteellisessä laskennassa, vaikka C++ ja muut kielet ovatkin korvanneet sen käyttöä. COBOL on erityisesti liike-elämän tietojenkäsittelyyn tarkoitettu kieli ja on lähes yhtä vanha kuin FORTRAN. Vaikka hyvin vähän uudesta koodista kirjoitetaan COBOLilla, käytössä on runsaasti 7

2 C++ Ohjelmoijan käsikirja koo dia, joka on kirjoitettu vuosia sitten. C++-kielestä on tullut kuitenkin varsin suosittu myöskin COBOLin vahvoilla alueilla. Koska C-kieli on C++:n edeltäjä, näiden kielien syntaksi ja toiminnallisuus on osittain samanlaista. Tarkemmin sanottuna, C on C++:n alijoukko. C++:n laajennukset ja parannukset C- kieleen nähden ovat parantuneet kielen kehityksen aikana ja kuten saamme nähdä, C++ on huomattavasti rikkaampi ja monipuolisempi kuin esi-isänsä. Tulkattu vs. käännetty ohjelman suoritus Ohjelmointikielet on suunniteltu siten, että sinun olisi helpompi kuvata toimenpiteet, jotka tietokoneen tulisi suorittaa, verrattuna ohjelmaan, jonka tietokone voi varsinaisesti suorittaa. Tietokoneesi voi ainoastaan suorittaa ohjelmia, jotka koostuvat konekielisistä käskyistä (puhutaan myöskin konekielestä). Eli se ei pysty suorittamaan kirjoittamiasi ohjelmia suoraan. Ohjelman Lähdeteksti Ohjelman Lähdeteksti Läheteksti on syötteenä Tulkille Lähdeteksti on syötteenä kääntäjälle Lähdetekstin tulkki Lähdetekstin Kääntäjä Kääntäjä generoi lähdetekstiä vastaavan konekielisen ohjelman Tulkki suorittaa lähdetekstissä määritellyt toimenpiteet. Tämä on hidasta verrattuna käännettyyn ohjelmaan. Tulkattu ohjelman suoritus Konekieli Konekielen suoritus suorittaa lähdetekstissä määritellyt toimenpiteet. Käännetty ohjelman suoritus 8 Periaatteessa on olemassa kaksi tapaa, jolla edellä mainituilla kielillä kirjoitetut ohjelmat voidaan suorittaa. Yleensä myöskin itse kielen kohdalla on määritelty jompi kumpi suoritustapa. Esimerkiksi BASIC-kielellä kirjoitetut ohjelmat suoritetaan yleensä tulkattuna - tämä tarkoittaa, että toinen ohjelma, tulkki, tutkii BASIC-lähdetekstiä ja päättelee, mitä ohjelman pitäisi tehdä ja sitten tekee sen. C++ on puolestaan käännettävä kieli. Ennen kuin voit suorittaa C++-ohjelmaasi, se täytyy muuttaa konekieliseksi toisen ohjelman, kääntäjän, avulla. Kääntäjä tutkii C++-ohjelman ja generoi konekielisiä käskyjä, jotka suorittavat lähdetekstissä määrätyt toimenpiteet. Tulkkaaminen ja kääntäminen ei luonnollisestikaan ole niin yksinkertaista kuin edellä kuvasimme, mutta periaatteessa kaikki toimii näin. Tulkattavan kielen kohdalla ohjelman suoritus on epäsuoraa. Tällä tarkoitamme sitä, että lähdekoodin sisältö tulee päätellä jokaisella ohjelman suorituskerralla. Tästä syystä tulkkaus on huomattavasti hitaampaa - joskus jopa 100 kertaa hitaampaa - kuin vastaava ohjelma käännetyllä kielellä. Yksi ohjelmointikieli on usein joko tulkattava tai käännettävä, ja valinnan ratkaisee

3 Perusasiat kielen suunnittelu ja ajateltu käyttötarkoitus. Jonkinlainen poikkeus tähän sääntöön on Java, joka on varsin uusi kieli ja sisältää suuren osan C++:n ominaisuuksista. Koska sen tarkoituksena on olla siirrettävä eri tietokoneiden välillä sekä Internetissä, se on pohjimmiltaan tulkattava kieli. Olemassa on kuitenkin JIT-kääntäjiä (just in time), jotka suorituksen aikana tuottavat alkuperäisestä Java-lähdetekstistä konekielisiä ohjelmia. Tällöin ohjelman suoritusnopeus kasvaa suuresti. Kirjastot Jos sinun tarvitsisi joka ohjelmointikerralla aloittaa aivan tyhjältä pöydältä, ohjelmointi olisi ikävystyttävää. Useat ohjelmat tarvitsevat samanlaisia ominaisuuksia - esimerkiksi tiedon lukua näppäimistöltä ja tiedon näyttämistä näytöllä. Tästä syystä ohjelmointikielet sisältävät yleensä huomattavan määrän valmista koodia, joka tarjoaa esimerkiksi edellä mainitut palvelut. Eli sinun ei tarvitse kirjoittaa tätä kaikkea itse. Standardi koodi, jota on tarkoitus käyttää useammassa ohjelmassa, sijoitetaan kirjastoon. Kielen mukana tulevat kirjastot ovat yhtä tärkeitä kuin itse kielikin, koska kirjastojen laadulla ja laajuudella on suuri merkitys siihen, miten nopeasti pystyt suoriutumaan annetusta ohjelmointitehtävästä. Miksi C++ on niin suosittu kieli? C++-kieli on huomattavan suosittu lähes kaikissa tietokoneympäristöissä: henkilökohtaisissa tietokoneissa, Unix-työasemissa ja keskustietokoneissa. Tämä on vieläkin merkittävämpää, jos otat huomioon, miten vastahakoisesti on aina kohdeltu uutta ohjelmointikieltä, vaikka se olisi kuinka hyvä. Koska olemassa on runsaasti aikaisemmilla ohjelmointikielillä kirjoitettuja ohjelmia, uuden ohjelmointikielen hyväksyntä on luonnollisestikin hidasta. Lisäksi useimmilla ammattilaisilla on tapana pitäytyä siinä mitä he osaavat ja missä he ovat tehokkaita ennen kuin siirtyvät johonkin uuteen ja epävarmaan, jossa sujuva työskentely ei heti onnistu. Luonnollisesti se, että C++ on kehitetty C-kielestä (joka on ollut oletuskielenä monissa laitealustoissa ennen kuin C++ oli olemassa), auttaa C++:n leviämisessä, mutta C++ tarjoaa muutakin kuin vain tämän: C++ on tehokas uskomattoman laajassa sovellusjoukossa. Voit käyttää C++kieltä lähes mihin tahansa, tekstinkäsittelyohjelmasta tieteellisiin ohjelmiin ja käyttöjärjestelmistä peleihin. C++ yhdistää tehokkaat C-kielestä perityt proseduraalisen ohjelmoinnin osat tehokkaisiin olio-ohjelmoinnin mahdollisuuksiin. C++:n standardikirjasto sisältää laajan joukon valmiita toimintoja. On olemassa monia C++-kirjastoja, jotka tukevat suurta joukkoa käyttöjärjestelmäympäristöjä ja tiettyjä erikoisohjelmia. 9

4 C++ Ohjelmoijan käsikirja Huomaat myöskin, että lähes jokaista tietokonetta voi ohjelmoida C++:n avulla. Eli kieli on levinnyt lähes kaikille laitteistoalustoille. Tämä tarkoittaa sitä, että pitäisi olla mahdollista siirtää jossain tietokoneessa kirjoitettu C++-ohjelma toiseen tietokoneeseen varsin pienellä vaivalla. Sinun täytyy luonnollisesti ottaa ohjelmaa kirjoittaessasi huomioon, jos haluat suorittaa ohjelmaa toisessa laitteistossa. C++:n ANSI-standardi Standardointi on kaiken perustana, kun halutaan siirtää ohjelmia tietokoneesta toiseen. Standardien luominen mahdollistaa kielen ristiriidattoman toteutuksen eri laitealustoille. Täydellinen joukko standarditoimintoja standardinmukaisissa kääntäjissä mahdollistaa sen, että tiedät lopputuloksen aina tarkalleen. C++:n ANSI-standardin käyttäminen helpottaa sovellusten siirtämistä laitealustasta toiseen sekä helpottaa useissa laitealustoissa suoritettavien sovellusten ylläpitoa. Luonnollisesti muitakin asioita täytyy ottaa huomioon. Jos ohjelmasi tulee olla siirrettävä, et saa käyttää standardoimattomien kirjastojen rutiineja ohjelmakoodissa ja sinun tulee minimoida ohjelman riippuvuus ohjelmointiympäristönä toimivasta laitteesta. Jos et näin tee, ohjelman siirtäminen on varsin hankalaa. Lisäksi C++:n ANSI-standardista on se hyöty, että se standardoi sen, mitä sinun tulee opetella voidaksesi ohjelmoida C++:lla. Standardin olemassaolo pakottaa yhdenmukaisuuteen, koska se tarjoaa ainoan tarkan määrittelyn siitä, mitä C++-kääntäjän ja kirjastojen tulisi sisältää. Se poistaa kääntäjien tekijöiden tavan olla joustavia. Jos et vielä ole ostanut C++-kääntäjääsi, vaadi että sen tulee olla ANSI-standardin mukainen. Yksinkertainen C++-ohjelma Katsotaanpa hyvin yksinkertaista C++-ohjelmaa ja erityisesti, mitkä ovat sen perusosat. Älä kirjoita tätä ohjelmaa kääntäjääsi; sen tarkoituksena on vain kuvata, mitkä osat muodostavat ohjelman. Emme myöskään tässä kohtaa paneudu yksityiskohtiin - kaikki tässä esitetty käsitel- Tämä on kommentti, jota kääntäjä ei huomioi. // Esimerkki 1.1 A yksinkertainen C++ -ohjelma #include <iostream> using namespace std; int main() { Tämä sisällyttää otsikkotiedoston iostream ohjelmaan cout << "Paras paikka aloittaa on alkukohta ; return 0; Tämä kertoo, että tästä eteenpäin voimme käyttää nimiavaruuteen std kuuluvia nimiä.. Tämä nimeää funktion nimeksi main(), joka palauttaa int-tyyppisen paluuarvon. Tämä lause tulostaa viestin näytölle. Lauseet päättyvät puolipisteeseen. 10 } Aaltosulkeet rajaavat lohkon, joka tässä tapauksessa on funktion runko. Tämä on funktion main() runko. Se sisältää funktion suoritettavan osan.. Tämä lause päättää main() -funktion ja palauttaa kontrollin käyttöjärjestelmälle.

5 Perusasiat lään tarkemmin myöhemmissä luvuissa. Edellä esitetty ohjelma tulostaa viestin: Paras paikka aloittaa on alkukohta Ohjelma koostuu yhdestä funktiosta, main(). Funktion ensimmäinen rivi on: int main() Funktio on itsenäinen ohjelmalohko, johon viitataan funktion nimellä, tässä tapauksessa main. Ohjelmassa voi olla runsaasti muutakin koodia, mutta jokaisessa C++-ohjelmassa täytyy olla ainakin main()-funktio ja main()-funktiota voi olla ohjelmassa vain yksi kappale. C++ohjelman suoritus alkaa aina main()-funktion ensimmäisestä lauseesta. main()-funktiomme muodostuu kahdesta suoritettavasta lauseesta: cout << Paras paikka aloittaa on alkukohta ; return 0; Nämä lauseet suoritetaan järjestyksessä, alkaen ensimmäisestä. Yleisesti ottaen funktion lauseet suoritetaan peräkkäin, ellei funktiossa ole lausetta, joka erityisesti määrää suoritusjärjestyksen. Luvussa 4 näemme millaisia ovat nämä suoritusjärjestystä muuttavat lauseet. C++:ssa syöttö ja tulostus tapahtuvat virtojen avulla. Jos haluat tulostaa jotain, sijoitat tulostettavan tulostusvirtaan ja jos haluat jotain syötettävän ohjelmaan, luet syötteen syöttövirrasta. C++:n standarditulostus- ja standardisyöttövirtoja kutsutaan nimillä cout ja cin ja ne käyttävät tietokoneesi näyttöä ja näppäimistöä. Edellä oleva koodi tulostaa näytöllesi merkkijonon Paras paikka aloittaa on alkukohta. Tämä tapahtuu sijoittamalla merkkijono tulostusvirtaan siirto-vasemmalle -operaattorilla <<. Kun kirjoitamme ohjelmia, jotka tarvitsevat syötteitä, törmäämme siirto-oikealle -operaattoriin >>. Nimi cout on määritelty otsikkotiedostossa iostream. Se on standardi otsikkotiedosto, joka sisältää tarvittavat määrittelyt, jotta voit käyttää C++:n syöttö- ja tulostusominaisuuksia. Jos ohjelmassasi ei olisi riviä #include <iostream> se ei kääntyisi, koska otsikkotiedosto iostream sisältää cout:n määrittelyn ja ilman otsikkotiedostoa kääntäjä ei tiedä mitä cout tarkoittaa. Huomaa, että kulmasulkeiden < ja > sekä otsikkotiedoston nimen välissä ei ole välilyöntejä. Useiden kääntäjien kohdalla välilyönnit ovat merkitseviä kulmasulkeiden yhteydessä; jos kirjoitat välilyönnin näihin kohtiin, voi olla että ohjelmasi ei käänny. Toinen ja samalla viimeinen lause funktion rungossa on: return 0; Tämä lause lopettaa ohjelman suorituksen ja palauttaa kontrollin käyttöjärjestelmälle. Se myöskin palauttaa arvon nolla käyttöjärjestelmälle. Muita paluuarvoja voidaan käyttää ilmoittamaan ohjelman eri päättymistilanteita. Käyttöjärjestelmä voi sitten käyttää näitä arvoja päättelemään onnistuiko ohjelman suoritus. Käyttöjärjestelmä kuitenkin määrittelee, miten näihin paluuarvoihin reagoidaan. 11

6 C++ Ohjelmoijan käsikirja Nimet Suurella osalla asioista C++:ssa on nimet (kutsutaan myös termillä tunniste), joita käytetään viitattaessa niihin. C++-ohjelmassasi annat nimiä viidelle eri asialle: funktiot ovat itsenäisiä, nimettyjä lohkoja suoritettavaa koodia. Funktioiden määrittelyyn palaamme luvussa 8. muuttujat ovat nimettyjä muistipaikkoja, joihin voidaan tallettaa arvoja. Muuttujien käsittelyn aloitamme luvusta 2. tyypit ovat nimiä sille, minkälaista tietoa voidaan tallettaa muuttujiin. Esimerkiksi tyyppi int tarkoittaa kokonaislukuja. Joitakin tyyppejä käsittelemme luvussa 2 ja lisää sitä seuraavissa luvuissa - erityisesti luvuissa 11 ja 12. nimiöiden avulla voidaan viitata tiettyyn lauseeseen. Nimiöitä käytetään varsin harvoin, mutta tutustumme niihin luvussa 4. nimiavaruuksien avulla voidaan tunnistaa joukko nimettyjä asioita ohjelmassasi. Jos tämä kuulostaa sekavalta, älä välitä: tähän palataan aivan kohta sekä luvussa 10. Useimmissa uusimmissa C++-kääntäjissä nimi voi koostua pelkästään isoista ja pienistä kirjaimista, alaviivasta (_) ja numeroista 0-9. ANSI-standardi sallii myöskin Universal Character Setin merkkien käytön (tähän palaamme hetken päästä) nimissä, mutta on epätodennäköistä, että tarvitset tätä ominaisuutta. Koska nimet voivat koostua vain sallituista merkeistä, et voi kirjoittaa tyhjiä merkkejä (välilyöntejä, sarkainmerkkejä jne) nimen keskelle. Jos kuitenkin kirjoitat, kääntäjä tunnistaa sen kahdeksi nimeksi, eli nimeä ei käsitellä oikein. Lisärajoituksena on, että nimi ei voi alkaa numerolla. Seuraavassa on joitakin sallittuja nimiä: arvo2 Turkulainen JuhaniNiemi Kokonais_paino PI sekä muutamia virheellisiä nimiä: 8Pallo Juha-Matti Juhani Niemi Kokonais-paino 2PI Huomaa, että nimet, jotka sisältävät tupla-alaviivan ( ) tai alkavat alaviivalla, jonka perässä on iso kirjain, ovat C++:n standardikirjaston varattuja sanoja, joten sinun ei tulisi käyttää tällaisia nimiä ohjelmissasi. Kääntäjäsi ei todennäköisesti tarkista tätä, joten huomaat päällekkäisen nimen vasta kun asiat alkavat mennä väärin! Käsittelemme nimiä lisää siinä yhteydessä kun niitä käytetään. 12 Nimiavaruudet Huomasit varmaankin, ettemme käyneet läpi esimerkkiohjelmassa ollutta yhtä riviä. Jotta ymmärrät sen, sinun täytyy ensin tietää, mitä nimiavaruudet ovat ja jotta voisit ymmärtää

7 Perusasiat nimiavaruudet, nimet pitää ymmärtää ensin. Kysymyksessä ollut rivi oli: using namespace std; Nimiavaruuden nimi on vähän kuin perheen sukunimi. Jokaisella perheenjäsenellä on oma nimensä ja useimmiten jokaisella on eri nimi. Niemen perheessä saattaa olla Juhani, Jouni, Jaana ja Ritva. Perheenjäsenet kutsuvat toisiaan näillä nimillä. Toisilla perheillä saattaa kuitenkin olla samoja nimiä kuin Niemen perheellä. Esimerkiksi Anttilan perheessä saattaa olla Jukka, Jaana ja Pirkko. Kun Jukka Anttila viittaa Jaanaan, on selvää, että hän tarkoittaa Jaana Anttilaa. Jos hän haluaa viitata Niemen perheen Jaanaan, hän käyttää koko nimeä: Jaana Niemi. Jos et kuuluisi kumpaankaan näistä perheistä, voisit olla varma kenestä milloinkin on puhe vain, jos ihmiset käyttävät koko nimiä, kuten Juhani Niemi ja Pirkko Anttila. Nimiavaruudet toimivat aivan samalla periaatteella - nimiavaruuden nimi vastaa sukunimeä. Nimiavaruuden sisällä voit käyttää yksittäisiä nimiä nimiavaruuden asioista. Nimiavaruuden ulkopuolelta voit viitata johonkin nimiavaruuden sisällä ainoastaan itse asian nimellä ja nimiavaruuden nimellä. Nimiavaruuksien tarkoitus on vähentää samojen nimien käytön aiheuttamaa sekaannusvaaraa laajoissa ohjelmissa. Yleensä yhdessä ohjelmassa voi olla useita eri nimiavaruuksia. C++:n standardikirjastossa olevat oliot on määritelty nimiavaruuteen std, joten standardikirjaston kaikkiin nimiin voidaan viitata std:llä. Näin ollen cout-olion koko nimi on std::cout. Noilla kahdella kaksoispisteellä on varsin mielikuvituksellinen nimi: näkyvyysalue-operaattori. Sitä käsittelemme lisää myöhemmin. Tässä esimerkissä sen tarkoituksena on erottaa nimiavaruuden nimi, std, virran nimestä, cout. Käyttämällä using-esittelyä yksinkertaisenkin C++-ohjelman alussa ilmoitamme, että haluamme viitata nimiavaruuteen std ilman, että meidän tarvitsisi käyttää nimiavaruuden nimeä joka kerta. Jos jatkamme kuvaavaa esimerkkiämme, tällä tarkoitamme sitä, että std-perhettä käsitellään ohjelmassa siten, että voimme viitata kaikkiin perheen jäseniin pelkällä etunimellä. Tästä seuraa se, että meidän ei tarvitse viitata olioon cout käyttämällä std::cout. Ohjelmakoodista tulee näin hieman yksinkertaisempaa. Jos emme käyttäisi using-esittelyä, olisi tulostuslause kirjoitettava seuraavasti: std::cout << Paras paikka aloittaa on alkukohta ; Varatut sanat C++:ssa on varattuja sanoja, joilla on kielessä erityismerkitys. Jo näkemämme ja käsittelemämme return ja namespace ovat esimerkkejä varatuista sanoista. Näet monia muitakin varattuja sanoja tässä kirjassa. Sinun tulee varmistaa, että valitsemasi nimet eivät ole samoja kuin C++:n varatut sanat. C++:n kaikki varatut sanat on lueteltu liitteessä B. Varatut sanat, kuten kaikki muukin C++:ssa, ovat merkkikoosta riippuvia. Eli esimerkiksi heikki ja Heikki ovat eri nimiä. 13

8 C++ Ohjelmoijan käsikirja C++:n lauseet ja lohkot Lauseet ovat peruselementtejä sekä ohjelmasi suoritukselle että ohjelmasi käsittelemälle tiedolle. Useimmat C++-lauseet päättyvät puolipisteeseen. Käytössä on varsin monta erilaista lausetta, mutta ehkä kaikkein yksinkertaisin on lause, jolla otetaan ohjelmassa käyttöön uusi nimi. Lausetta, jolla otetaan ohjelmassa käyttöön uusi nimi, on esittely. Esittely vain ottaa nimen käyttöön ja ilmoittaa, millaiseen asiaan nimellä viitataan. Vastaavasti voidaan käyttää määrittelyä, joka myöskin luo sen, mihin nimellä viitataan. Yleensä useimmat esittelyt ovat myös määrittelyjä. Seuraavassa on esimerkki lauseesta, joka esittelee muuttujan nimen ja määrittelee sekä alustaa muuttujan: double tulos = 0.0; Tämä esittelee nimen tulos, joka viittaa double-tyyppiseen muuttujaan (esittely), varaa muistia muuttujan tietoa varten (määrittely) ja asettaa sen alkuarvoksi 0.0 (alkuarvon asetus). Seuraavassa on esimerkki toisenlaisesta lauseesta, valintalauseesta: if (oituus > 25) laatikonpituus = koko + 2; Tämä lause testaa ehtolausekkeen Onko muuttujan laatikonpituus suurempi kuin 25 ja tekee jotain, jos ehtolauseke on tosi. Tässä tapauksessa suoritetaan seuraavalla rivillä oleva lause, joka lisää muuttujan koko arvoon luvun kaksi ja sijoittaa tuloksen muuttujaan laatikonpituus. Voimme sijoittaa useita lauseita aaltosulkeiden sisään, jolloin sitä kutsutaan lohkoksi. Ensimmäisessä esimerkissä näkemämme funktion runko on esimerkki lohkosta. Lohkoa kutsutaan myöskin nimellä yhdistetty lause, koska sen voidaan monessa tapauksessa käsittää olevan yksi lause. Tähän palaamme luvussa 4, kun käsittelemme valintojen tekemistä C++:ssa. Itse asiassa, aina kun voit C++:ssa sijoittaa lauseen, voit sijoittaa lauseen sijaan myöskin lohkon. Tästä johtuen lohkoja voi olla myös toisten lohkojen sisällä - tätä kutsutaan sisäkkäisyydeksi. Lohkoja voidaan sijoittaa sisäkkäin kuinka monta tahansa. Lohkolla on myös tärkeä merkitys muuttujien yhteydessä. Tähän palaamme kuitenkin vasta seuraavassa luvussa, kun käsittelemme muuttujien näkyvyysaluetta. 14 Ohjelman rakenne Jokainen C++-ohjelmasi koostuu yhdestä tai useammasta tiedostosta. Käytössäsi on kaksi erityyppistä tiedostoa, joihin voit sijoittaa lähdetekstiäsi: otsikkotiedostot ja lähdetekstitiedostot. Otsikkotiedostot sisältävät koodia, joka kertoo, minkä tyyppistä tietoa ohjelmasi tarvitsee sekä joitakin muita määrittelyjä. Tällaista tiedostoa kutsutaan otsikkotiedostoksi, koska yleensä ne sisällytetään muiden lähdetekstitiedostojen alkuun ( otsikoksi ). Otsikkotiedostot erotetaan muista tiedostoista käyttämällä tiedostoliitettä.h. Tämä on kuitenkin vapaaehtoista, ja joissakin järjestelmissä käytetäänkin muita merkintätapoja, kuten.hxx.

9 Perusasiat Lähdetekstitiedostot, joiden tiedostoliitteenä on.cpp, sisältävät funktioiden määrittelyjä - ohjelmasi suoritettavaa koodia. Kaikki sellaisten tyyppien ja muuttujien esittelyt ja määrittelyt, joita tarvitset.cpp-tiedostossa olevassa koodissa, tulee sisällyttää yhdestä tai useammasta otsikkotiedostosta.cpp-tiedoston alussa. Ohjelmatiedostot Ohjelma1.cpp #include <iostream> #Include eka.h #Include toka.h Funktioiden määrittelyt Globalien muuttujien määrittelyt jne. Ohjelma2.cpp #include "toka.h #Include vika.h Funktioiden määrittelyt Globalien muuttujien määrittelyt jne. Lisää standardin otsikkotiedoston sisällön Määriteltyjen otsikkotiedostojen sisältö sisällytetään.cpp - tiedostoon Otsikkotiedostot Eka.h Luokan (käyttäjän tyypin) määrittelyt Funktioiden määrittelyt Jne. Toka.h Luokan (käyttäjän tyypin) määrittelyt Funktioiden määrittelyt Jne. Vika.h Luokan (käyttäjän tyypin) määrittelyt Funktioiden määrittelyt Jne. Yllä oleva kuva esittää ohjelmaa, jossa lähdeteksti on kahdessa.cpp-tiedostossa ja kolmessa otsikkotiedostossa. Ensimmäinen.cpp-tiedosto käyttää kahta ensimmäistä otsikkotiedostoa ja toinen.cpp-tiedosto tarvitsee tietoa kahdesta jälkimmäisestä otsikkotiedostosta. Luvussa 10 käsittelemme lisää #include-komentoa. Kääntäjäsi mukana toimitetaan joukko standardiotsikkotiedostoja, jotka sisältävät standardikirjastojen tarvitsemia esittelyjä. Ne sisältävät esimerkiksi standardikirjaston funktioiden esittelyt. Yllä olevan kuvan ensimmäiseen.cpp-tiedostoon sisällytetään iostream-otsikkotiedosto, johon törmäsimme jo esimerkkiohjelmassakin. Kuten huomaat, tässä tiedoston nimellä ei ole lainkaan tiedostoliitettä. Jotta ANSI-standardiotsikkotiedostot erotettaisiin tavallisista otsikkotiedostoista, niiden tiedostonimissä ei ole lainkaan tiedostoliitettä. Kirjan kirjoitushetkellä tämä on varsin uusi lisäys ANSI-standardiin, joten törmäät varmastikin kääntäjiin, jotka yhä käyttävät.h -tiedostoliitettä standardiotsikkotiedostojen yhteydessä. Liitteessä C kuvataan ANSIstandardiotsikkotiedostot. Kääntäjäsi saattaa sisältää koko joukon muitakin otsikkotiedostoja, jotka ovat tarpeellisia esimerkiksi käyttöjärjestelmän kutsuissa tai muuten vain ohjelmointia helpottavia funktioita. Esimerkissämme käytettiin vain muutamia otsikkotiedostoja, mutta useimmissa C++sovelluksissa käytetään runsaasti muitakin. 15

10 C++ Ohjelmoijan käsikirja Suoritettavan tiedoston tekeminen lähdetekstitiedostoista Suoritettavan ohjelman teko C++-lähdetekstistä on perusteiltaan kaksivaiheinen prosessi. Ensimmäisessä vaiheessa kääntäjä muodostaa jokaisesta.cpp-tiedostosta objektitiedoston, joka sisältää konekielisen version lähdetekstistä. Toisessa vaiheessa linkkeri yhdistää kääntäjän tuottamat objektitiedostot tiedostoksi, joka sisältää täydellisen suoritettavan ohjelman. Otsikkotiedostojen sisältö sisällytetään ennen käännöstä. Lähdeteksti Lähdeteksti Lähdeteksti Jokaisesta.cpp - tiedostosta tulee yksi objektitiedosto. Kääntäjä Kääntäjä Kääntäjä Objektitiedosto Objektitiedosto Objektitiedosto Linkkeri yhdistää kaikki objektitiedostot ja tarvittavat kirjastot suoritettavaksi ohjelmaksi. Kirjasto Linkkeri Suoritettava.exe -tiedosto 16 Kuvassa on kolme lähdetekstitiedostoa, jotka käännetään kolmeksi vastaavaksi objektitiedostoksi. Näiden tiedostojen yhteydessä käytettävät tiedostoliitteet eroavat laitteistoympäristöstä toiseen, joten niitä ei tässä näytetä. Ohjelman muodostavat lähdetekstitiedostot voidaan kääntää riippumatta toisistaan joko erikseen tai yhdellä kääntäjän ajokerralla. Kääntäjä kuitenkin käsittelee jokaista lähdetekstitiedostoa erillisenä, ja muodostaa jokaisesta.cpptiedostosta oman objektitiedoston. Linkittäminen sitten yhdistää objektitiedostot ja muut tarpeelliset kirjastofunktiot yhdeksi suoritettavaksi tiedostoksi. Käytännössä kääntäminen on prosessi, jossa sama vaihe toistetaan useamman kerran, koska mitä todennäköisemmin olet tehnyt lähdetekstiin kirjoitusvirheitä tai muita virheitä. Kun olet poistanut virheet kaikista lähdetekstitiedostoista, voi siirtyä linkittämisvaiheeseen, jolloin saatat huomata, että uusia virheitä on ilmaantunut! Vaikka linkitysvaihe tuottaisi suoritettavan ohjelman, ohjelmassa saattaa silti olla loogisia virheitä; tämä tarkoittaa sitä, että ohjelma ei tee sitä mitä sen pitäisi tehdä. Korjataksesi tällaiset virheet, sinun täytyy palata muokkaamaan lähdetekstiä ja yrittää kääntää lähdeteksti uudelleen... Tarkastellaan seuraavaksi tarkemmin, mitä tapahtuu edellä mainituissa kahdessa vaiheessa, kääntämisessä ja linkittämisessä. Niissä tapahtuu taustalla mielenkiintoisia asioita.

11 Kääntäminen Kääntämisessä on kaksi päävaihetta, mutta siirtyminen vaiheesta toiseen on automaattinen. Ensimmäinen vaihe on esikääntäminen, joka suoritetaan ennen kääntämisvaihetta. Esikääntäminen muokkaa lähdetekstiä siihen sijoitettujen esikääntäjäkomentojen mukaan. Esimerkkinä on #include-esikäsittelijäkomento, joka lisää otsikkotiedoston sisällön.cpptiedostoon. Esikäsittelijäkomentoja on monia muitakin (kuten näemme luvussa 10). Perusasiat Otsikkotiedostojen sisältö sisällytetään ennen käännöstä. Muut esikääntäjäkomennot saattavat muokata tai ehdollisesti poistaa osan koodista. Kääntäjälle menevä lähdetekstitiedostoa on muokattu siten, että se ei sisällä enää esikäsittelijäkomentoja. Lähdeteksti Esikääntäjä Muokattu Lähdeteksti Kääntäjä Otsikkotiedosto Otsikkotiedosto Objektitiedosto (Konekieli) Tämä lähdetekstin muokkausmahdollisuus ennen käännöstä mahdollistaa joustavan, eri tietokoneiden ja käyttöjärjestelmien huomioon ottamisen. Koodi, jonka tarvitset jossain ympäristössä, saattaa olla eri kuin minkä tarvitset jossain toisessa ympäristössä, koska käytössä saattaa olla eri laitteisto tai käyttöjärjestelmä. Monissa tapauksissa voit kirjoittaa koodin eri ympäristöjä varten samaan lähdetekstitiedostoon. Tällöin koodi muokataan esikäännösvaiheessa käytössä olevan ympäristön mukaan. Vaikka esikääntäminen esitetäänkin edellä erillisenä vaiheena, sitä ei tavallisesti suoriteta kääntäjästä erillään. Kääntäjän käynnistäminen suorittaa esikääntämisen automaattisesti ennen varsinaista lähdetekstin kääntämistä. Linkittäminen Vaikka kääntäjä tuottaa lähdetekstitiedostosta konekieltä, se on vielä kaukana suoritettavasta ohjelmasta. Ensinnäkin eri objektitiedostojen välillä ei ole mitään liitoksia. Yhden lähdetekstitiedoston objektitiedostossa voi olla viittauksia funktioihin tai muihin nimettyihin asioihin toisissa lähdetekstitiedostoissa. Näitä viittauksia ei ole vielä tässä vaiheessa ratkaistu. Itse 17

12 C++ Ohjelmoijan käsikirja asiassa näiden funktioiden koodi ei ole edes vielä osana tiedostoa. Näiden kaikkien asioiden kanssa työskentelee linkkeri. Tarvittaessa Kirjastorutiinit Suoritettava tiedosto Objektitiedosto 1 Objektitiedosto 1 Objektitiedosto 2 Linkkeri Objektitiedosto 2 Viittaukset Objektitiedosto n Objektitiedosto n Kuten kuvasta näkyy, linkkeri yhdistää kaikkien objektitiedostojen koodin ja ratkaisee kaikki viittaukset niiden välillä. Se myöskin yhdistää koodiin kaikkien objektitiedostojen tarvitsemat kirjastofunktiot. Tämä on varsin yksinkertaistettu esitys linkkerin toiminnasta, koska oletamme, että kaikki viittaukset objektitiedostojen välillä tehdään suoritettavassa ohjelmassa staattisesti. Jotkut viittaukset voivat olla myöskin dynaamisia, mikä tarkoittaa, että viittaukset muodostetaan vasta suoritusaikana. Linkkeri liittää lähdetekstitiedostojen funktioiden väliset viittaukset toisiinsa staattisesti - eli ennen ohjelman suoritusta. Funktiot, jotka liitetään dynaamisesti - eli ohjelman suorituksen aikana - käännetään ja linkitetään suoritettavaan moduuliin, jota kutsutaan dynaamiseksi kirjastoksi tai jaetuksi kirjastoksi. Viittaukset dynaamisen kirjaston funktioihin ratkaistaan, kun ohjelma kutsuu funktiota, ei aikaisemmin. Dynaamisilla kirjastoilla on joitakin tärkeitä etuja. Tärkein on se, että dynaamisen kirjaston funktioita voidaan käyttää samanaikaisesti kaikista suorituksessa olevista ohjelmista. Tämä säästää muistia, koska yhdestä funktiosta tarvitaan vain yksi kopio. Toinen etu on se, että dynaamista kirjastoa ei tuoda muistiin ennen kuin jotain sen sisältämää funktiota kutsutaan. Tämä tarkoittaa sitä, että jos et käytä dynaamisen kirjaston yhtäkään funktiota, kirjasto ei varaa yhtään muistia. Dynaamisten kirjastojen käyttö riippuu suuresti käyttöjärjestelmästä, joten emme käsittele niitä tässä kirjassa enempää. 18

13 Merkit ja merkkijoukot Perusasiat Merkit, joita voit käyttää C++:ssa, ovat isot ja pienet kirjaimet A-Z ja a-z, numerot 0-9, välilyönti ja rivinvaihto, sarkainmerkki, sivunvaihto ja kellon koodinvaihtomerkki sekä seuraavat erikoismerkit: _ { } [ ] # ( ) < > % : ;.? * + - / ^ & ~! =, \ Näitä merkkejä kutsutaan myös symboleiksi (verrattuna numeroihin ja aakkosmerkkeihin sekä koodinvaihtomerkkeihin, joita ei varsinaisesti näytetä). Merkkien koodaus Huomaa, että edellä esitetty määritelmä C++:ssa käytettävissä olevista merkeistä ei kerro mitään varsinaisesta merkkien koodauksesta. Kääntäjäsi päättää, miten C++-lähdetekstissäsi käyttämäsi merkit esitetään tietokoneessa. PC-maailmassa merkit esitetään yleensä 8-bittisinä laajennettuina ASCII-koodeina (kuten ISO Latin-1), mutta muitakin koodaustapoja voitaisiin käyttää. ASCII-koodaukselle onkin useita erilaisia laajennuksia, jotka tukevat eri kieliä (kuten suomi). Suurtietokoneissa käytetään usein EBCDIC (Extended Binary Coded Decimal Interchange Code) -koodausta. Tämä on 8-bittinen koodaustapa, joka eroaa suuresti ASCIIkoodauksesta. Termillä Laajennettu ASCII-koodi tarkoitetaan 8-bittistä koodausta, jossa 128 ensimmäistä merkkiä ovat samat kuin normaalissa 7-bittisessä ASCII-koodissa. Liitteessä A luetellaan nämä merkit. Koodinvaihtomerkit Kun haluat käyttää merkkivakioita ohjelmissasi, tietyt merkit ovat ongelmallisia. Merkkivakio on ohjelmasi käyttämä tieto, joka voi olla joko yksittäinen merkki tai merkkijono, kuten esimerkissämme oli. Luonnollisestikaan et voi kirjoittaa esimerkiksi rivinvaihtoa tai sarkainmerkkiä, koska ne vain tekevät nimensä mukaan: siirtävät kontrollin seuraavalle riville tai seuraavaan sarkainkohtaan. Tällaisten merkkien kohdalla sinun tulee kirjoittaa merkin koodinvaihtomerkki. Koodinvaihtomerkit kirjoitetaan käyttämällä koodinvaihtomerkkiä, joka alkaa aina vinoviivalla \. Koodinvaihtomerkkejä ovat: Koodinvaihtomerkki Tarkoitus \n rivinvaihto \t sarake \v rivi 19

14 C++ Ohjelmoijan käsikirja Koodinvaihtomerkki Tarkoitus \b askelpalautin \r rivinpalautin \f sivunvaihto \a hälytys kello Näiden lisäksi on joitakin muita merkkejä, joita on vaikea esittää suoraan. Vinoviiva on luonnollisesti vaikea esittää, koska se aloittaa varsinaisen koodinvaihtomerkin. Ja vastaavia on muitakin: Koodinvaihtomerkki Tarkoitus \\ vinoviiva \' heittomerkki \" lainausmerkki \? kysymysmerkki Koska vinoviiva aloittaa koodinvaihtomerkin, ainoa tapa kirjoittaa vinoviiva merkkivakioon on kirjoittaa se kaksi kertaa. Koodinvaihtomerkkejä voidaan käyttää myös muiden kuin näppäimistösi tukeman kansallisen kielen merkkien kirjoituksessa. Tällöin voit kirjoittaa merkin heksadesimaali- (kantaluku 16) tai oktaaliarvon (kantaluku 8) vinoviivan perään. Tällä tavoin voit esittää kaikki merkit, koska käytät merkin numeroarvoa. C++:ssa heksadesimaaliluvut alkavat merkeillä x tai X, kuten esimerkiksi \x99a ja \XE3. Voit myös määritellä merkkejä käyttämällä korkeintaan kolmea oktaalilukua kenoviivan perässä, kuten \165. Koska tässä ei käytetä x tai X -merkkejä, koodi tulkitaan oktaaliluvuiksi. Kokeile itse - Koodinvaihtomerkkien käyttö Seuraavassa on esimerkki, jossa käytetään koodinvaihtomerkkejä näytölle tulostettavan viestin määrittelyssä. Nähdäksesi tuloksen itse, käännä, linkitä ja suorita alla oleva ohjelma. Kuten johdannossa kerrottiin, näiden vaiheiden suorittaminen riippuu kääntäjästäsi; lue lisätietoja kääntäjäsi ohjekirjoista. Jos löydät komennot edit, compile ja link (ja joissain kääntäjissä build ), onnistut kääntämisessä, linkittämisessä ja itse ohjelman suorituksessa. // Esimerkki 1.2 Koodinvaihtomerkkien käyttö #include <iostream> using namespace std; 20

15 Perusasiat int main() { cout << "\n\"vähiten sanottu\n\t\teniten tarkoitettu.\"\n\a"; return 0; } Kun käännät, linkität ja suoritat tämän ohjelman, näet seuraavanlaisen tulostuksen: Vähiten sanottu eniten tarkoitettu. Lisäksi sinun tulisi kuulla kellon ääni tai vastaava merkkiääni riippuen tietokoneesi ominaisuuksista. Kuinka se toimii Tulostettava merkkijono muodostuu niistä merkeistä, jotka ovat lauseen uloimpien lainausmerkkien sisäpuolella: cout << "\n\"vähiten sanottu\n\t\teniten tarkoitettu.\"\n\a"; Kaikki uloimpien lainausmerkkien sisäpuolella oleva lähetetään cout-oliolle. Merkkijonoa lainausmerkkien sisällä kutsutaan merkkijonovakioksi. Lainausmerkit kertovat, mistä merkkijonovakio alkaa ja mihin se päättyy; ne eivät kuulu itse merkkijonoon. Merkkijonovakiossa oleva vinoviiva tarkoittaa aina koodinvaihtomerkin alkamista, joten ensimmäinen cout-oliolle lähetettävä merkki on \n - rivinvaihto. Tämä sijoittaa näytön kursorin seuraavalle riville. Seuraava cout-oliolle lähetettävä merkki on koodinvaihtomerkki \, jolloin näytölle tulostuu lainausmerkki. Tämän perään tulostuu merkkijono: Vähiten sanottu. Seuraavaksi on jälleen rivinvaihto, \n, joten kohdistin siirtyy seuraavalle riville. Tämän jälkeen cout-oliolle lähetetään kaksi sarakemerkkiä \t\t, jolloin kohdistin siirtyy kaksi sarkainkohtaa oikealle. Tästä kohdasta eteenpäin tulostetaan merkkijono eniten tarkoitettu. ja perään tulostetaan vielä lainausmerkki (\ ). Lopuksi on vielä yksi rivinvaihto, joka siirtää kohdistimen jälleen seuraavalle riville, sekä \a, joka saa aikaan merkkiäänen. Sisempiä lainausmerkkejä ei tulkita merkkijonovakion alku- ja päätekohdiksi, koska niiden edellä on vinoviiva, eli ne tulkitaan koodinvaihtomerkeiksi. Jos käytössämme ei olisi koodinvaihtomerkkiä \, emme voisi mitenkään tulostaa lainausmerkkiä, koska se tulkittaisiin merkkijonon päättäväksi lainausmerkiksi. C++:ssa käytetään myös endl-nimeä, joka tarkoittaa tulostuslauseessa rivinvaihtomerkkiä. Käyttämällä endl-nimeä, edellä olevan esimerkin tulostuslause voitaisiin kirjoittaa seuraavasti: cout << endl << "\"Vähiten sanottu << endl 21

16 C++ Ohjelmoijan käsikirja << \t\teniten tarkoitettu.\ \a" << endl; Tämä lause lähettää peräkkäin viisi erillistä merkkijonovakiota cout-oliolle - endl, \ Vähiten sanottu, endl, \t\teniten tarkoitettu.\ \a ja endl. Tämä saa aikaan aivan saman tulostuksen kuin alkuperäinen lausekin. Huomaa, että viimeinen merkki sanassa endl on kirjain l, ei numero 1. Joskus saattaa olla vaikea erottaa nämä toisistaan. Sinun ei tarvitse valita käytätkö endl-sanaa vai vastaavaa koodinvaihtomerkkiä, kun haluat uuden rivin. Ne eivät ole toisiaan poissulkevia, joten voit käyttää niitä sekaisin miten haluat. Voimme esimerkiksi edelleen muokata tulostuslausetta ja saamme silti aivan saman lopputuloksen: cout << endl << "\"Vähiten sanottu\n\t\teniten tarkoitettu.\ \a" << endl; Tässä olemme käyttäneet endl-sanaa ensimmäisen ja viimeisen rivinvaihdon kohdalla. Keskimmäinen rivinvaihto on saatu aikaan koodinvaihtomerkillä. Merkit UCS-merkkijoukossa UCS (Universal Character Set) on ISO:n (International Standards Organization) standardi merkkien esittämiseksi 32-bittisinä. UCS on määritelty standardidokumentissa ISO/IEC UCS:n ideana on se, että voidaan kuvata kaikki kansallisten kielten merkit (kuten suomi, ranska, englanti, venäjä jne) sekä kaikki mahdolliset tarpeelliset symbolit yhdellä ja samalla merkkijoukolla. Et kuitenkaan tarvitse UCS-koodausta kovinkaan usein, mutta jos tarvitset, C++:ssa voidaan tämäkin tehdä. Kirjoittaaksesi UCS-merkin, kirjoitat yksinkertaisesti \unnnnnnnn, jossa NNNNNNNN on UCS-merkin heksadesimaalinen esitysmuoto. Latin-merkkijoukolla on UCS:ssä koodit, joissa neljä ensimmäistä numeroa ovat nollia, \u0000nnnn. Voit kirjoittaa tällaiset koodit jättämällä nollat pois, esimerkiksi \unnnn. 22 Tyhjät merkit Tyhjä merkki on C++:ssa termi, jolla tarkoitetaan välilyöntejä, pysty- ja vaakasuuntaisia sarkainmerkkejä sekä rivinvaihtomerkkejä. Monissa tapauksissa tyhjät merkit erottavat lauseen yhden osan toisesta osasta. Tällä tavoin kääntäjä pystyy erottamaan mihin yksi osa päättyy ja mistä toinen osa alkaa. Tutkitaan esimerkiksi seuraavaa koodia: int hedelma;

17 Perusasiat Tässä lauseessa on sana int, joka on tyypin nimi ja hedelma, joka on muuttujan nimi. Sanojen int ja hedelma välissä tulee olla vähintään yksi tyhjä merkki (yleensä välilyönti), jotta kääntäjä pystyy erottelemaan ne. Tämä siksi, että inthedelma olisi aivan kelvollinen muuttujan tai minkä tahansa muun asian nimi. Kääntäjä myös tulkitsisi sen tällaiseksi. Toisaalta, tutkitaan seuraavaa lausetta: hedelma = omenia + appelsiineja; Tyhjiä merkkejä ei tarvita hedelma ja = välissä, tai = ja omenia välissä, mutta voit kirjoittaa tyhjän merkin halutessasi. Tämä siitä syystä, että = ei ole kirjain eikä numero, joten kääntäjä pystyy erottamaan sen ympäristöstään. Samaten + -merkin ympärillä ei tarvita tyhjiä merkkejä. Olisit voinut kirjoittaa lauseen myös seuraavasti: hedelma = omenia + appelsiineja; Jos kirjoitat lauseen tällä tavalla, sinua tuskin kiitellään hyvästä ohjelmointityylistä, mutta kääntäjähän ei tästä välitä. Vaikka kääntäjä käyttääkin tyhjiä merkkejä erottamaan lauseen osia, se jättää ne muutoin huomioimatta. Tästä syystä voit lisätä lähdetekstiin niin paljon tyhjiä merkkejä kuin haluat saadaksesi sen esimerkiksi helpommin luettavaksi. Joissain ohjelmointikielissä lause päättyy rivin loppuun, mutta C++:ssa lause päättyy puolipisteeseen. Tämä mahdollistaa lauseen jakamisen useammalle riville, joten voit kirjoittaa lauseen seuraavasti: cout << endl << "\"Vähiten sanottu << endl << \t\teniten tarkoitettu.\ \a" << endl; Tai seuraavasti: cout << endl << "\"Vähiten sanottu << endl << \t\teniten tarkoitettu.\ \a" << endl; Ohjelmien kommentointi Ohjelmiesi kommentointi on erittäin tärkeää. Koodi, joka näyttää erittäin selkeältä kirjoitushetkellä, voi näyttää erittäin sekavalta, kun luet sitä kuukauden päästä. Ohjelmat kommentoidaan käyttämällä kommentteja. C++:ssa on kahdenlaisia kommentteja: yhden ja useamman rivin mittaiset kommentit. Yhden rivin kommentti aloitetaan kahdella kauttaviivalla: // Ohjelma, joka ennustaa pörssikursseja 23

18 C++ Ohjelmoijan käsikirja Kääntäjä ei huomioi riviltä mitään kahden kauttaviivan jälkeen. Tämä ei kuitenkaan tarkoita sitä, että rivillä voisi olla pelkästään kommentti. Voit käyttää tätä kommentointitapaa lauseen kommentoimiseen: pituus = kutista(pituus, lampotila); // huomioidaan lämpötila pituudessa Voit myös tilapäisesti poistaa rivin lähdetekstistä lisäämällä rivin alkuun kaksi jakomerkkiä: // pituus = kutista(pituus, lampotila); // huomioidaan lämpötila pituudessa Tämä muuttaa lauseen kommentiksi. Tällaista tapaa tarvitset esimerkiksi testatessasi ohjelmaa. Kaikki ensimmäisistä // -merkeistä rivin loppuun saakka jätetään huomioimatta, mukaan lukien seuraavat //-merkit. Monirivistä kommenttia käytetään, kun halutaan kirjoittaa runsaammin - esimerkiksi kun halutaan selittää algoritmin toimintaa. Tällainen kommentti alkaa /*-merkeillä ja päättyy */- merkkeihin. Kaikki näiden merkkien välillä oleva jätetään huomioimatta. Näin voidaan kirjoittaa selkeästi erottuvia kommentteja: /***************************************** * Tämä funktio ennustaa pörssikursseja * * käyttämälää tealeaf-simulaatiota * ******************************************/ Voit käyttää tätä kommentointitapaa myös poistaaksesi lähdetekstistä lohkon koodia. Lisää /* lohkon alkuun ja */ lohkon loppuun. Huomioi kuitenkin, että /*... */ -kommentteja ei voi kirjoittaa sisäkkäin. Tämä siitä syystä, että sisempi */ kohdistetaan ulompaan kommenttiin: // Monirivisiä kommentteja ei voi kirjoittaa sisäkkäin /* Tämä aloittaa ulomman kommentin /* Tämä on sisempi kommentti, mutta sen alkukohtaa ei huomata, koska ulompi kommentti on voimassa. Päinvastoin, sisemmän kommentin päättäminen tulkitaan ulomman kommentin loppumiseksi. */ Tämä saa aikaan kääntäjän virheilmoituksen, koska kääntäjä yrittää kääntää tätä ulomman kommentin osaa C++ -koodina. */ Ulomman kommentin loppuosa jätetään tässä roikkumaan ja kääntäjä yrittää kääntää sitä, mikä luonnollisesti johtaa virheeseen. Tästä syystä //-tyyppisen kommentin käyttö on C++-ohjelmissa eniten käytetty.! Saatat myös kuulla monirivistä kommentointia kutsuttavan C-tyyliseksi kommentoinniksi. Tämä siitä syystä, että /*... */ -kommentit ovat ainoat mahdolliset C-kielessä. 24

19 Standardikirjasto Perusasiat Standardikirjasto sisältää suuren joukon funktioita sekä muita asioita, jotka tukevat ja laajentavat C++ -kielen peruskielen ominaisuuksia. Standardikirjaston sisältö on yhtä paljon osa C++kieltä kuin on itse kielen syntaksi ja semantiikkakin. C++:n standardikirjasto määrittelee molemmat ja jokaisen standardinmukaisen kääntäjän mukana tulee täydellinen standardikirjasto. Täten standardikirjaston laajuus on varsin huomattava. Saat käyttöösi suuren joukon toiminnallisuutta alkaen välttämättömistä osista, kuten peruskielen tuki, syöttö- ja tulostusfunktiot ja poikkeusten käsittely (poikkeus on epätavallinen tapahtuma ohjelman suorituksessa - yleensä jonkinlainen virhetilanne) ja loppuen hyötyfunktioihin, matemaattisiin funktioihin sekä suureen joukkoon testattuja toimintoja, joilla voit tallettaa ja käsitellä tietoa ohjelman suorituksen aikana. Jotta voisit käyttää C++-kieltä mahdollisimman tehokkaasti, sinun tulisi tuntea standardikirjasto mahdollisimman hyvin. Moniin standardikirjaston ominaisuuksiin palataan myöhemmin, kun käsittelemme lisää C++-kieltä. Luonnollisestikaan emme käy läpi kaikkia standardikirjaston ominaisuuksia emmekä kovinkaan syvällisesti. Tarvittaisiin toinen tämänkokoinen kirja, jos standardikirjasto käytäisiin läpi perusteellisesti. Standardikirjaston käytön vaatimat esittelyt ja määrittelyt ovat standardiotsikkotiedostoissa. Joissakin tapauksissa standardiotsikkotiedosto sisällytetään automaattisesti lähdetekstiisi, mutta useimmiten sinun tulee tehdä se itse #include-esikäsittelijäkomennolla. Liitteessä C on täydellinen lista otsikkotiedostoista sekä kuvaus, millaisia toimintoja mikäkin tukee. Lähes kaikki C++:n standardikirjastossa on määritelty nimiavaruuteen std. Tämä tarkoittaa sitä, että kaikki käyttämäsi nimet alkavat std-etuliitteellä. Kuten jo aikaisemmin näimme, kun viittaat johonkin standardikirjastossa, sinun tulee kirjoittaa nimen eteen std, kuten seuraavassa: std::cout << Paras paikka aloittaa on alkukohta ; Vaihtoehtoisesti voit sijoittaa using-komennon lähdetekstin alkuun: using namespace std; Tällöin voit jättää std-etuliitteen kirjoittamatta, koska std on automaattisesti käytössä: cout << Paras paikka aloittaa on alkukohta ; C++-ohjelmointi Koska C++ on perinyt alkuperäisen C-kielen tehokkuuden ja joustavuuden, ja jota on edelleen laajennettu, voit kirjoittaa suoritusajaltaan kriittisiä, koneläheisiä ohjelmia sekä ratkaista ongelmia, jotka ovat perinteisellä proseduraalisella lähestymistavalla mielekkäämpiä. C++:n suurin vahvuus on kuitenkin sen tehokkuus ja olio-ominaisuudet. Tämä mahdollistaa sellaisten ohjelmien kirjoittamisen, jotka ovat vähemmän virhealttiita, helpompia ylläpitää, yksinkertaisempia laajentaa ja helpompia ymmärtää kuin vastaavat proseduraaliset ratkaisut. 25

20 C++ Ohjelmoijan käsikirja Näiden kahden ohjelmointimetodologian välillä on perustavanlaatuisia eroja, joten katsotaan seuraavaksi, miten ne eroavat toisistaan sekä joitakin syitä, miksi oliopohjainen ratkaisutapa on niin kiehtova. Proseduraalinen ja oliopohjainen ohjelmointi Kun tarkastellaan historiaa, lähes kaikki ohjelmat ovat rakenteeltaan proseduraalisia. Jos haluat ratkaista ongelman proseduraalisella ohjelmoinnilla, keskityt prosessiin, jonka ohjelmasi täytyy toteuttaa ongelman ratkaisemiseksi. Karkeana hahmotelmana vaiheista voidaan pitää seuraavaa (olettaen, että tarpeet on määritelty tarkasti): Teet selkeän korkean tason määrittelyn koko prosessista, jonka ohjelmasi täytyy toteuttaa. Jaat kokonaisprosessin osiin, jotka ovat sekä käsiteltäviä että itsenäisiä. Nämä osat vastaavat tavallisesti funktioita. Jaat kunkin osan edelleen yksityiskohtaisiin, järjestyksessä suoritettaviin toimenpiteisiin. Nämä toimenpiteet vastaavat kutakuinkin ohjelmointikielen lauseita. 26 Ohjelmoit funktiot, jotka käsittelevät perustietotyyppejä: numeroita, merkkejä ja merkkijonoja. Oliopohjainen ratkaisutapa on varsin erilainen, vaikka kaiken perusteena oleva ongelman tarkka määrittely onkin samankaltainen: Ongelman määrittelyn jälkeen ratkaiset, millaisia olioita ongelma sisältää. Jos ohjelmasi käsittelee esimerkiksi jääkiekon pelaajia, varmastikin yksi tällainen olio on JaakiekonPelaaja. Jos ohjelmasi on kirjanpidon sovellus, tarvitset varmastikin oliota kuten Tili ja Siirto. Tässä yhteydessä määrittelet myöskin operaatiot, jotka ohjelman tulee pystyä suorittamaan kunkin olion kohdalla. Tuloksena on joukko sovellukseen kuuluvia tietotyyppejä, joita sitten käytät ohjelmaa kirjoittaessasi. Teet yksityiskohtaisen suunnitelman kustakin uudesta ongelman ratkaisemiseen tarvittavasta tietotyypistä. Tähän kuuluvat operaatiot, jotka tulee pystyä suorittamaan kunkin tietotyypin kohdalla. Ilmaiset ohjelman logiikan uusien tietotyyppien avulla sekä niille sallituilla operaatioilla. Oliopohjaisen ratkaisun lähdeteksti on aivan erilainen kuin vastaavan proseduraalisen, ja aivan varmasti helppotajuisempi. Oletetaan, että olet toteuttamassa ohjelmaa, joka käsittelee erilaisia laatikoita. Yhtenä mahdollisena vaatimuksena tällaiselle ohjelmalle voisi olla, että useista pienemmistä laatikoista voidaan muodostaa suurempia laatikoita. Proseduraalisessa ratkaisussa sinun tulisi tallettaa kunkin laatikon leveys, korkeus ja syvyys joukkoon erillisiä muuttujia. Uuden laatikon, joka muodostuu useista pienemmistä laatikoista, mitat täytyy laskea erikseen kunkin laatikon ulkomittojen mukaan. Lisäksi täytyisi huomioida mahdolliset säännöt laatikoiden muodostamiseksi.

Osoitin ja viittaus C++:ssa

Osoitin ja viittaus C++:ssa Osoitin ja viittaus C++:ssa Osoitin yksinkertaiseen tietotyyppiin Osoitin on muuttuja, joka sisältää jonkin toisen samantyyppisen muuttujan osoitteen. Ohessa on esimerkkiohjelma, jossa määritellään kokonaislukumuuttuja

Lisätiedot

Kääntäjän virheilmoituksia

Kääntäjän virheilmoituksia OHJ-1101 Ohjelmointi 1e 2008-09 1 Kääntäjän virheilmoituksia Kun progvh2 ohjelma käännetään antaa tutg++ seuraavat virheilmoitukset ja varoitukset: proffa> tutg++ progvh2.cc progvh2.cc:29:13: warning:

Lisätiedot

AS-0.1103 C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin

AS-0.1103 C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin AS-0.1103 C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin Raimo Nikkilä Aalto-yliopiston sähkötekniikan korkeakoulu - Automaation tietotekniikan tutkimusryhmä 17. tammikuuta 2013

Lisätiedot

Osa. Listaus 2.1. HELLO.CPP esittelee C++ -ohjelman osat. 14: #include 15: 16: int main() 17: {

Osa. Listaus 2.1. HELLO.CPP esittelee C++ -ohjelman osat. 14: #include <iostream.h> 15: 16: int main() 17: { Osa I 2. oppitunti C++-ohjelman osat Ennen kuin menemme yksityiskohtaisemmin sisälle C++-luokkiin, -muuttujiin jne, katsokaamme ensin, millaisista osista C++-ohjelma koostuu. Tämän tunnin aikana opit seuraavat

Lisätiedot

MITÄ JAVASCRIPT ON?...3

MITÄ JAVASCRIPT ON?...3 JavaScript MITÄ JAVASCRIPT ON?...3 YLEISTÄ JAVASCRIPTIN SYNTAKSISTA...3 KÄSKYSANAT JA MUUT VARATUT SANAT...3 MUUTTUJIEN, FUNKTIOIDEN JA LUOKKIEN NIMISSÄ...3 HTML-TAGEIHIN VIITTAAVISSA METODINIMISSÄ...3

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 raine.kauppinen@haaga-helia.fi 1. Java-ohjelmoinnin alkeita Tietokoneohjelma Java-kieli ja Eclipse-ympäristö Java-ohjelma ja ohjelmaluokka

Lisätiedot

12 Mallit (Templates)

12 Mallit (Templates) 12 Mallit (Templates) Malli on määrittely, jota käyttämällä voidaan luoda samankaltaisten aliohjelmien ja luokkien perheitä. Malli on ohje kääntäjälle luoda geneerisestä tyyppiriippumattomasta ohjelmakoodista

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 28.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 28.2.2011 1 / 46 Ohjelmointiprojektin vaiheet 1. Määrittely 2. Ohjelman suunnittelu (ohjelman rakenne ja ohjelman

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

Johdatus Ohjelmointiin

Johdatus Ohjelmointiin Johdatus Ohjelmointiin Syksy 2006 Viikko 2 13.9. - 14.9. Tällä viikolla käsiteltävät asiat Peruskäsitteitä Kiintoarvot Tiedon tulostus Yksinkertaiset laskutoimitukset Muuttujat Tiedon syöttäminen Hyvin

Lisätiedot

4. Lausekielinen ohjelmointi 4.1

4. Lausekielinen ohjelmointi 4.1 4. Lausekielinen ohjelmointi 4.1 Sisällys Konekieli, symbolinen konekieli ja lausekieli. Hyvä ohjelmointitapa. Lausekielestä konekieleksi: - Lähdekoodi, tekstitiedosto ja tekstieditorit. - Kääntäminen

Lisätiedot

4. Lausekielinen ohjelmointi 4.1

4. Lausekielinen ohjelmointi 4.1 4. Lausekielinen ohjelmointi 4.1 Sisällys Konekieli, symbolinen konekieli ja lausekieli. Lausekielestä konekieleksi: - Lähdekoodi, tekstitiedosto ja tekstieditorit. - Kääntäminen ja tulkinta. - Kääntäminen,

Lisätiedot

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset Harjoituksen aiheena ovat aliohjelmat ja abstraktit tietotyypit sekä olio-ohjelmointi. Tehtävät tehdään C-, C++- ja Java-kielillä.

Lisätiedot

TT00AA12-2016 - Ohjelmoinnin jatko (TT10S1ECD)

TT00AA12-2016 - Ohjelmoinnin jatko (TT10S1ECD) TT00AA12-2016 - Ohjelmoinnin jatko (TT10S1ECD) Ohjelmointikäytännöt 21/3/11 Mikko Vuorinen Metropolia Ammattikorkeakoulu 1 Sisältö 1) Mitä on hyvä koodi? 2) Ohjelmointikäytäntöjen merkitys? 3) Koodin asettelu

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

C++ Ohjelmoijan käsikirja. Johdanto

C++ Ohjelmoijan käsikirja. Johdanto Johdanto C++ Ohjelmoijan käsikirja Johdanto Tervetuloa Inside C++-kirjan pariin. Tämä on opaskirja standardi C++:n käyttöön. Käsittelemme kirjassa kaikki syntaksin, kieliopin, olio-ohjelmoinnin ja standardikirjastojen

Lisätiedot

Ongelma(t): Miten mikro-ohjelmoitavaa tietokonetta voisi ohjelmoida kirjoittamatta binääristä (mikro)koodia? Voisiko samalla algoritmin esitystavalla

Ongelma(t): Miten mikro-ohjelmoitavaa tietokonetta voisi ohjelmoida kirjoittamatta binääristä (mikro)koodia? Voisiko samalla algoritmin esitystavalla Ongelma(t): Miten mikro-ohjelmoitavaa tietokonetta voisi ohjelmoida kirjoittamatta binääristä (mikro)koodia? Voisiko samalla algoritmin esitystavalla ohjelmoida useita komponenteiltaan ja rakenteeltaan

Lisätiedot

Virtuaalifunktiot ja polymorfismi

Virtuaalifunktiot ja polymorfismi Virtuaalifunktiot ja polymorfismi 16 Virtuaalifunktiot ja polymorfismi Polymorfismi on niin tehokas olio-ohjelmoinnin ominaisuus, että tulet varmastikin käyttämään sitä lähes kaikissa C++-ohjelmissasi.

Lisätiedot

Esimerkkiprojekti. Mallivastauksen löydät Wroxin www-sivuilta. Kenttä Tyyppi Max.pituus Rajoitukset/Kommentit

Esimerkkiprojekti. Mallivastauksen löydät Wroxin www-sivuilta. Kenttä Tyyppi Max.pituus Rajoitukset/Kommentit Liite E - Esimerkkiprojekti E Esimerkkiprojekti Olet lukenut koko kirjan. Olet sulattanut kaiken tekstin, Nyt on aika soveltaa oppimiasi uusia asioita pienen, mutta täydellisesti muotoiltuun, projektiin.

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

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4) 2. Lisää Java-ohjelmoinnin alkeita Muuttuja ja viittausmuuttuja Vakio ja literaalivakio Sijoituslause Syötteen lukeminen ja Scanner-luokka 1 Muuttuja ja viittausmuuttuja (1/4) Edellä mainittiin, että String-tietotyyppi

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

Tietueet. Tietueiden määrittely

Tietueet. Tietueiden määrittely Tietueet Tietueiden määrittely Tietue on tietorakenne, joka kokoaa yhteen eri tyyppistä tietoa yhdeksi asiakokonaisuudeksi. Tähän kokonaisuuteen voidaan viitata yhteisellä nimellä. Auttaa ohjelmoijaa järjestelemään

Lisätiedot

Osoittimet. Mikä on osoitin?

Osoittimet. Mikä on osoitin? Osoittimet 7 Osoittimet On aika siirtyä käsittelemään osoittimia, C++:lle elintärkeätä ominaisuutta. Osoittimet ovat tärkeitä, koska ne luovat perustan muistin dynaamiselle varaukselle ja käytölle. Ne

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

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla Viimeksi muokattu 5. toukokuuta 2012 Maastotietokannan torrent-jakeluun sisältyy yli 5000 zip-arkistoa,

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

Periytyminen. Luokat ja olio-ohjelmointi

Periytyminen. Luokat ja olio-ohjelmointi Periytyminen 15 Periytyminen Tässä luvussa käsittelemme aihetta, joka on olio-ohjelmoinnin kaikkein tärkein osa - periytyvyys. Periytyvyyden avulla voimme luoda uusia luokkia uudelleenkäyttämällä ja laajentamalla

Lisätiedot

Taulukot. Jukka Harju, Jukka Juslin 2006 1

Taulukot. Jukka Harju, Jukka Juslin 2006 1 Taulukot Jukka Harju, Jukka Juslin 2006 1 Taulukot Taulukot ovat olioita, jotka auttavat organisoimaan suuria määriä tietoa. Käsittelylistalla on: Taulukon tekeminen ja käyttö Rajojen tarkastus ja kapasiteetti

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

1. Olio-ohjelmointi 1.1

1. Olio-ohjelmointi 1.1 1. Olio-ohjelmointi 1.1 Sisällys Olio-ohjelmointi on eräs ohjelmointiparadigma. Olio-ohjelmoinnin muotoja. Ohjelmiston analyysi ja suunnittelu. Olioparadigman etuja ja kritiikkiä. 1.2 Ohjelmointiparadigmoja

Lisätiedot

Sisällys. 3. Pseudokoodi. Johdanto. Johdanto. Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen.

Sisällys. 3. Pseudokoodi. Johdanto. Johdanto. Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen. Sisällys 3. Pseudokoodi Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen. Ohjausrakenteet: Valinta if- ja if--rakenteilla. oisto while-, do-while- ja for-rakenteilla. 3.1 3.2 Johdanto

Lisätiedot

C-kieli mahdollistaa hyvin tiiviin ja samalla sekavan tavan esittää asioita, kuitenkin hyvän ohjelman tulisi olla mahdollisimman helppolukuinen ja

C-kieli mahdollistaa hyvin tiiviin ja samalla sekavan tavan esittää asioita, kuitenkin hyvän ohjelman tulisi olla mahdollisimman helppolukuinen ja 1. C-kieli yleiskäyttöinen ohjelmointikieli, standardoitu 1990. siirrettävä laiteläheinen pieni ydin, monimutkaiset kokonaisuudet rakennetaan aliohjelmakirjastojen avulla. direktiivit ja esikääntäjien

Lisätiedot

Perustietotyypit ja laskutoimitukset

Perustietotyypit ja laskutoimitukset Perustietotyypit ja laskutoimitukset 2 Perustietotyypit ja laskutoimitukset Tässä luvussa käsittelemme C++:n perustietotyyppejä, varsinkin sellaisia kuin sinä mitä todennäköisemmin tulet käyttämään omissa

Lisätiedot

Ohjelmoinnin peruskurssi Y1

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

Lisätiedot

etunimi, sukunimi ja opiskelijanumero ja näillä

etunimi, sukunimi ja opiskelijanumero ja näillä Sisällys 1. Algoritmi Algoritmin määritelmä. Aiheen pariin johdatteleva esimerkki. ja operaatiot (sijoitus, aritmetiikka ja vertailu). Algoritmista ohjelmaksi. 1.1 1.2 Algoritmin määritelmä Ohjelmointi

Lisätiedot

Tietorakenteet ja algoritmit - syksy 2015 1

Tietorakenteet ja algoritmit - syksy 2015 1 Tietorakenteet ja algoritmit - syksy 2015 1 Tietorakenteet ja algoritmit - syksy 2015 2 Tietorakenteet ja algoritmit Johdanto Ari Korhonen Tietorakenteet ja algoritmit - syksy 2015 1. JOHDANTO 1.1 Määritelmiä

Lisätiedot

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen Metodit Metodien määrittely Metodin parametrit ja paluuarvo Metodien suorittaminen eli kutsuminen Metodien kuormittaminen 1 Mikä on metodi? Metodi on luokan sisällä oleva yhteenkuuluvien toimintojen kokonaisuus

Lisätiedot

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä 12.1 12.2 12.3 12.4

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä 12.1 12.2 12.3 12.4 Sisällys 12. Näppäimistöltä lukeminen Arvojen lukeminen näppäimistöltä yleisesti. Arvojen lukeminen näppäimistöltä Java-kielessä.. Luetun arvon tarkistaminen. Tietovirrat ja ohjausmerkit. Scanner-luokka.

Lisätiedot

1. Algoritmi 1.1 Sisällys Algoritmin määritelmä. Aiheen pariin johdatteleva esimerkki. Muuttujat ja operaatiot (sijoitus, aritmetiikka ja vertailu). Algoritmista ohjelmaksi. 1.2 Algoritmin määritelmä Ohjelmointi

Lisätiedot

Java-kielen perusteita

Java-kielen perusteita Java-kielen perusteita Käyttäjän kanssa keskusteleva ohjelma 1 Kirjoittaminen konsolinäkymään //Java ohjelma, joka tulostaa konsoli-ikkunaan public class HeiMaailma { public void aja() { // kirjoitus ja

Lisätiedot

Omat tietotyypit. Mikä on olio?

Omat tietotyypit. Mikä on olio? Omat tietotyypit 11 Omat tietotyypit C++:n suuri vahvuus on sen oliopohjaisuudessa. Siihen liittyy runsaasti asiaa ja kulutammekin seuraavat viisi lukua tässä aiheessa. Tässä ja seuraavassa luvussa käsittelemme

Lisätiedot

Valinnat ja päätökset

Valinnat ja päätökset Valinnat ja päätökset 4 Valinnat ja päätökset Päätöksenteko on erittäin tärkeässä asemassa kaikissa ohjelmointikielissä. Jos ohjelman lauseiden suoritusjärjestystä ei voitaisi muuttaa tietojen vertailun

Lisätiedot

Hyvän salasanan tunnusmerkit Hyökkääjästä salasanan pitää näyttää satunnaiselta merkkijonolta. Hyvän salasanan luominen: Luo mahdollisimman pitkä

Hyvän salasanan tunnusmerkit Hyökkääjästä salasanan pitää näyttää satunnaiselta merkkijonolta. Hyvän salasanan luominen: Luo mahdollisimman pitkä Hyvä Salis Hyvän salasanan tunnusmerkit Hyökkääjästä salasanan pitää näyttää satunnaiselta merkkijonolta. Hyvän salasanan luominen: Luo mahdollisimman pitkä salasana. Jokainen salasanaan lisäämäsi kirjain

Lisätiedot

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari 1 1. JOHDANTO 1.1 Määritelmiä 1.2 Tietorakenteen ja algoritmin valinta 1.3 Algoritmit ja tiedon määrä 1.4 Tietorakenteet ja toiminnot 1.5 Esimerkki:

Lisätiedot

Ohjelmoinnin peruskurssi Y1

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

Lisätiedot

XML prosessori. XML prosessointi. XML:n kirjoittaminen. Validoiva jäsennin. Tapahtumaohjattu käsittely. Tapahtumaohjattu käsittely.

XML prosessori. XML prosessointi. XML:n kirjoittaminen. Validoiva jäsennin. Tapahtumaohjattu käsittely. Tapahtumaohjattu käsittely. XML prosessointi Miten XML dokumentteja luetaan ja kirjoitetaan XML prosessori lukee ja välittää XML dokumentin sovellukselle. Se sisältää entieettikäsittelijän (mahdollisesti) XML jäsentimen Sovellus

Lisätiedot

Luokat. Luokat ja olio-ohjelmointi

Luokat. Luokat ja olio-ohjelmointi Luokat 12 Luokat Tässä luvussa laajennamme edellisessä luvussa käsittelemäämme struktuurityyppiä ja siirrymme yhteen C++-ohjelmoijan kaikkein tärkeimmistä välineistä: luokkiin. Käsittelemme myöskin joitakin

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

BL40A1810 Mikroprosessorit, harjoitus 1

BL40A1810 Mikroprosessorit, harjoitus 1 BL40A1810 Mikroprosessorit, harjoitus 1 Käytettävä laitteisto Kurssin opetuslaitteistona käytetään Legon MINDSTORMS laitteita, jonka pääosia ovat ohjelmoitava NXT-yksikkö (Atmel ARM7, 64k RAM, 256k Flash),

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 15.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 15.3.2010 1 / 56 Tiedostoista: tietojen tallentaminen ohjelman suorituskertojen välillä Monissa sovelluksissa ohjelman

Lisätiedot

2. C-kieli ja ongelmanratkaisu

2. C-kieli ja ongelmanratkaisu 2. C-kieli ja ongelmanratkaisu Taustaa Esimerkki C-kielisen ohjelman kehityksestä Kielen yleispiirteet Muuttujat Suoritettavat lauseet Tietotyypit ja lausekkeet Tietojen lukeminen ja tulostaminen 64 C

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

T Olio-ohjelmointi Osa 3: Luokka, muodostin ja hajotin, this-osoitin Jukka Jauhiainen OAMK Tekniikan yksikkö 2010

T Olio-ohjelmointi Osa 3: Luokka, muodostin ja hajotin, this-osoitin Jukka Jauhiainen OAMK Tekniikan yksikkö 2010 11. Luokka Opetellaan seuraavaksi, miten omia luokkia kirjoitetaan. Aikaisemmin olikin jo esillä, että luokka on tietorakenne, joka sisältää sekä tiedot (attribuutit) että niitä käsittelevät aliohjelmat

Lisätiedot

Datatähti 2009 -alkukilpailu

Datatähti 2009 -alkukilpailu Datatähti 2009 -alkukilpailu Ohjelmointitehtävä 1/3: Hissimatka HUOM: Tutustuthan huolellisesti tehtävien sääntöihin ja palautusohjeisiin (sivu 7) Joukko ohjelmoijia on talon pohjakerroksessa, ja he haluavat

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

11. oppitunti III. Viittaukset. Osa. Mikä on viittaus?

11. oppitunti III. Viittaukset. Osa. Mikä on viittaus? Osa III 11. oppitunti Viittaukset Kahdessa viime luvussa opit käyttämään osoittimia kohteiden käsittelyyn vapaalla muistialueella sekä viittaamaan noihin kohteisiin epäsuorasti. Tässä luvussa käsiteltävät

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

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

Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014

Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Kirjoita jokaiseen palauttamaasi konseptiin kurssin nimi, kokeen päivämäärä, oma nimi ja opiskelijanumero. Vastaa kaikkiin tehtäviin omille konsepteilleen.

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 26.1.2011 T-106.1208 Ohjelmoinnin perusteet Y 26.1.2011 1 / 34 Luentopalaute kännykällä käynnissä! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti Vast

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

Sulautettujen järjestelmien skaala on niin laaja, että on erittäin vaikea antaa yleispätevää kuvausta siitä millainen on sulautettu järjestelmä.

Sulautettujen järjestelmien skaala on niin laaja, että on erittäin vaikea antaa yleispätevää kuvausta siitä millainen on sulautettu järjestelmä. Sulautettujen järjestelmien skaala on niin laaja, että on erittäin vaikea antaa yleispätevää kuvausta siitä millainen on sulautettu järjestelmä. On arvioitu, että maailmassa on tällä hetkellä enemmän sulautettuja

Lisätiedot

Perinteiset tietokoneohjelmat alkavat pääohjelmasta, c:ssä main(), jossa edetään rivi riviltä ja käsky käskyltä.

Perinteiset tietokoneohjelmat alkavat pääohjelmasta, c:ssä main(), jossa edetään rivi riviltä ja käsky käskyltä. TIETOKONEOHJELMIEN RAKENNE Perinteiset tietokoneohjelmat alkavat pääohjelmasta, c:ssä main(), jossa edetään rivi riviltä ja käsky käskyltä. Teollisuusautomaation ohjelmiin on lainattu runsaasti perinteisen

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

Algoritmit. Ohjelman tekemisen hahmottamisessa käytetään

Algoritmit. Ohjelman tekemisen hahmottamisessa käytetään Ohjelmointi Ohjelmoinnissa koneelle annetaan tarkkoja käskyjä siitä, mitä koneen tulisi tehdä. Ohjelmointikieliä on olemassa useita satoja. Ohjelmoinnissa on oleellista asioiden hyvä suunnittelu etukäteen.

Lisätiedot

Olio-ohjelmointi Javalla

Olio-ohjelmointi Javalla 1 Olio-ohjelmointi Javalla Olio-ohjelmointi Luokka Attribuutit Konstruktori Olion luominen Metodit Olion kopiointi Staattinen attribuutti ja metodi Yksinkertainen ohjelmaluokka Ohjelmaluokka 1 Olio-ohjelmointi

Lisätiedot

Ongelma(t): Miten jollakin korkeamman tason ohjelmointikielellä esitetty algoritmi saadaan suoritettua mikro-ohjelmoitavalla tietokoneella ja siinä

Ongelma(t): Miten jollakin korkeamman tason ohjelmointikielellä esitetty algoritmi saadaan suoritettua mikro-ohjelmoitavalla tietokoneella ja siinä Ongelma(t): Miten jollakin korkeamman tason ohjelmointikielellä esitetty algoritmi saadaan suoritettua mikro-ohjelmoitavalla tietokoneella ja siinä olevilla komponenteilla? Voisiko jollakin ohjelmointikielellä

Lisätiedot

11.4. Context-free kielet 1 / 17

11.4. Context-free kielet 1 / 17 11.4. Context-free kielet 1 / 17 Määritelmä Tyypin 2 kielioppi (lauseyhteysvapaa, context free): jos jokainenp :n sääntö on muotoa A w, missäa V \V T jaw V. Context-free kielet ja kieliopit ovat tärkeitä

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 9.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 9.2.2009 1 / 35 Listat Esimerkki: halutaan kirjoittaa ohjelma, joka lukee käyttäjältä 30 lämpötilaa. Kun lämpötilat

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 25.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 25.2.2009 1 / 34 Syötteessä useita lukuja samalla rivillä Seuraavassa esimerkissä käyttäjä antaa useita lukuja samalla

Lisätiedot

C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. Operaatioiden suoritusjärjestys

C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. Operaatioiden suoritusjärjestys Loogisia operaatioita - esimerkkejä Tänään on lämmin päivä ja perjantai Eilen satoi ja oli keskiviikko tai tänään on tiistai. On perjantai ja kello on yli 13 Ei ole tiistai tai ei sada. Ei pidä paikkaansa,

Lisätiedot

Kerta 2. Kerta 2 Kerta 3 Kerta 4 Kerta 5. 1. Toteuta Pythonilla seuraava ohjelma:

Kerta 2. Kerta 2 Kerta 3 Kerta 4 Kerta 5. 1. Toteuta Pythonilla seuraava ohjelma: Kerta 2 Kerta 3 Kerta 4 Kerta 5 Kerta 2 1. Toteuta Pythonilla seuraava ohjelma: 2. Tulosta Pythonilla seuraavat luvut allekkain a. 0 10 (eli, näyttää tältä: 0 1 2 3 4 5 6 7 8 9 10 b. 0 100 c. 50 100 3.

Lisätiedot

Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b

Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b Pythonin Kertaus Cse-a1130 Tietotekniikka Sovelluksissa Versio 0.01b Listat 1/2 esimerkkejä listan peruskäytöstä. > lista=['kala','kukko','kissa','koira'] ['kala','kukko','kissa','koira'] >lista.append('kana')

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

ohjelman arkkitehtuurista.

ohjelman arkkitehtuurista. 1 Legacy-järjestelmällä tarkoitetaan (mahdollisesti) vanhaa, olemassa olevaa ja käyttökelpoista ohjelmistoa, joka on toteutettu käyttäen vanhoja menetelmiä ja/tai ohjelmointikieliä, joiden tuntemus yrityksessä

Lisätiedot

Taulukot. Taulukon määrittely ja käyttö. Taulukko metodin parametrina. Taulukon sisällön kopiointi toiseen taulukkoon. Taulukon lajittelu

Taulukot. Taulukon määrittely ja käyttö. Taulukko metodin parametrina. Taulukon sisällön kopiointi toiseen taulukkoon. Taulukon lajittelu Taulukot Taulukon määrittely ja käyttö Taulukko metodin parametrina Taulukon sisällön kopiointi toiseen taulukkoon Taulukon lajittelu esimerkki 2-ulottoisesta taulukosta 1 Mikä on taulukko? Taulukko on

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 27.1.2010 T-106.1208 Ohjelmoinnin perusteet Y 27.1.2010 1 / 37 If-käsky toistokäskyn sisällä def main(): HELLERAJA = 25.0 print "Anna lampotiloja, lopeta -300:lla."

Lisätiedot

Ohje tutkielman tekemiseen

Ohje tutkielman tekemiseen Sauvon koulukeskus 2011 Ohje tutkielman tekemiseen Aiheen valinta Etsi materiaalia Valitse itseäsi kiinnostava aihe. Sovi opettajan kanssa aiheen rajaus. Pyydä opettajalta tutkielmapassiin merkintä aiheen

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

Ehto- ja toistolauseet

Ehto- ja toistolauseet Ehto- ja toistolauseet 1 Ehto- ja toistolauseet Uutena asiana opetellaan ohjelmointilauseet / rakenteet, jotka mahdollistavat: Päätösten tekemisen ohjelman suorituksen aikana (esim. kyllä/ei) Samoja lauseiden

Lisätiedot

Mallit standardi mallikirjasto parametroitu tyyppi

Mallit standardi mallikirjasto parametroitu tyyppi Mallit 18 Mallit Malli on tehokas mekanismi uusien luokkien generoimiseksi automaattisesti. Standardikirjaston suuri osa, standardi mallikirjasto, rakentuu kokonaan mallien määrittelymahdollisuuden ympärille,

Lisätiedot

OHJELMOINNIN TYYLISÄÄNTÖJÄ

OHJELMOINNIN TYYLISÄÄNTÖJÄ Ohjelmoinnin tyylisääntöjä Sivu 1 OHJELMOINNIN TYYLISÄÄNTÖJÄ www.naturalprogramming.com Ohjelmointityylillä tarkoitetaan sääntöjä lähdekielisten ohjelmien kirjoittamiseen. Kääntäjähän hyväksyy varsin monella

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

Muuttujien roolit Kiintoarvo cin >> r;

Muuttujien roolit Kiintoarvo cin >> r; Muuttujien roolit Muuttujilla on ohjelmissa eräitä tyypillisiä käyttötapoja, joita kutsutaan muuttujien rooleiksi. Esimerkiksi muuttuja, jonka arvoa ei muuteta enää kertaakaan muuttujan alustamisen jälkeen,

Lisätiedot

3.1 Mitä tarkoittaan heredoc? Milloin sitä kannattaa käyttää? Kirjoita esimerkki sen käyttämisestä.

3.1 Mitä tarkoittaan heredoc? Milloin sitä kannattaa käyttää? Kirjoita esimerkki sen käyttämisestä. PHP-kielen perusteet Käytä lähteenä PHP:n virallista manuaalia http://www.php.net/docs.php tai http://www.hudzilla.org/php (siirry Paul Hudsonin verkkokirjaan). Lisää materiaalia suomeksi esimerkiksi ohjelmointiputkan

Lisätiedot

Harjoitustyö: virtuaalikone

Harjoitustyö: virtuaalikone Harjoitustyö: virtuaalikone Toteuta alla kuvattu virtuaalikone yksinkertaiselle olio-orientoituneelle skriptauskielelle. Paketissa on testaamista varten mukana kaksi lyhyttä ohjelmaa. Ohjeita Noudata ohjelman

Lisätiedot

P e d a c o d e ohjelmointikoulutus verkossa

P e d a c o d e ohjelmointikoulutus verkossa P e d a c o d e ohjelmointikoulutus verkossa Java-kielen perusteet Teoria ja ohjelmointitehtävät Java-kielen perusteet 3 YLEISKATSAUS KURSSIN SISÄLTÖIHIN 10 JAVA-KIELEN PERUSTEET 10 OPISKELUN ALOITTAMINEN

Lisätiedot

4.12.2005. SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T

4.12.2005. SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T SEPA: REFAKTOROINTI 2 (9) SEPA: REFAKTOROINTI 3 (9) VERSIOHISTORIA Version Date Author Description 0.1 2.12.2005 Erik Hakala Ensimmäinen

Lisätiedot

815338A Ohjelmointikielten periaatteet 2014-2015

815338A Ohjelmointikielten periaatteet 2014-2015 815338A Ohjelmointikielten periaatteet 2014-2015 X Skriptiohjelmointi Sisältö 1. Johdanto 2. Skriptikielten yleispiirteitä 3. Python 815338A Ohjelmointikielten periaatteet, Skriptiohjelmointi 2 X.1 Johdanto

Lisätiedot

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet String-merkkijonoluokka 1 Ohjelmointikielten merkkijonot Merkkijonot ja niiden käsittely on välttämätöntä ohjelmoinnissa Valitettavasti ohjelmointikielten tekijät eivät tätä ole ottaneet

Lisätiedot

2 Konekieli, aliohjelmat, keskeytykset

2 Konekieli, aliohjelmat, keskeytykset ITK145 Käyttöjärjestelmät, kesä 2005 Tenttitärppejä Tässä on lueteltu suurin piirtein kaikki vuosina 2003-2005 kurssin tenteissä kysytyt kysymykset, ja mukana on myös muutama uusi. Jokaisessa kysymyksessä

Lisätiedot

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++? JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: http://java.sun.com/docs/books/tutorial/index.html Vesterholm, Kyppö: Java-ohjelmointi,

Lisätiedot

ASCII-taidetta. Intro: Python

ASCII-taidetta. Intro: Python Python 1 ASCII-taidetta All Code Clubs must be registered. Registered clubs appear on the map at codeclubworld.org - if your club is not on the map then visit jumpto.cc/18cplpy to find out what to do.

Lisätiedot

Harjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Harjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti: Harjoitus 7 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti: class Lintu //Kentät private int _siivenpituus; protected double _aivojenkoko; private bool _osaakolentaa; //Ominaisuudet public int

Lisätiedot

Harjoitustehtäväkierros 1

Harjoitustehtäväkierros 1 T-06.50 kurssihenkilökunta deadline Tiistai 20.0.2009 2:5 Johdanto Tämä tehtäväkierros käsittelee pääasiassa toisen luennon sisältöä. Harjoituksia saa tehdä yksin tai yhdessä. Yhdessä tekeminen on suositeltavaa,

Lisätiedot

Condes. Quick Start opas. Suunnistuksen ratamestariohjelmisto. Versio 7. Quick Start - opas Condes 7. olfellows www.olfellows.net 1.

Condes. Quick Start opas. Suunnistuksen ratamestariohjelmisto. Versio 7. Quick Start - opas Condes 7. olfellows www.olfellows.net 1. Condes Suunnistuksen ratamestariohjelmisto Versio 7 Quick Start opas Yhteystiedot: olfellows Jouni Laaksonen Poijukuja 4 21120 RAISIO jouni.laaksonen@olfellows.net www.olfellows.net olfellows www.olfellows.net

Lisätiedot

Java-kielen perusteita

Java-kielen perusteita Java-kielen perusteita valintalauseet 1 Johdantoa kontrollirakenteisiin Tähän saakka ohjelmissa on ollut vain peräkkäisyyttä eli lauseet on suoritettu peräkkäin yksi kerrallaan Tarvitsemme myös valintaa

Lisätiedot