Perustietotyypit ja laskutoimitukset

Koko: px
Aloita esitys sivulta:

Download "Perustietotyypit ja laskutoimitukset"

Transkriptio

1 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 ohjelmissasi. Käsittelemme myöskin miten suoritetaan yksinkertaisia numeerisia laskutoimituksia. Kaikki C++:n olio-ominaisuudet perustuvat perustietotyyppeihin, koska kaikki omat tietotyypit rakennetaan perustietotyypeistä. Tästä syystä on ensin tärkeää saada tukeva ote perustietotyypeistä. Tämän luvun jälkeen pystyt kirjoittamaan yksinkertaisia C++-ohjelmia perinteisen mallin mukaan: syöttö...käsittely...tulostus. Tässä luvussa käsittelemme: Tietotyypit C++:ssa Literaalivakiot, mitä ne ovat ja kuinka niitä määritellään Kokonaislukujen binäärinen ja heksadesimaalinen esitysmuoto Miten muuttujia määritellään ja alustetaan Miten kokonaislukujen laskutoimitukset toimivat Arvojen, jotka eivät ole kokonaislukuja, käyttö - eli liukulukulaskenta Miten estetään muuttujaan sijoitetun arvon muuttaminen Miten luodaan muuttujia, jotka voivat sisältää merkkejä Tieto ja tietotyypit C++ on vahvasti tyypitetty kieli - toisin sanoen, jokaisella tiedolla on tyyppi, joka määrittelee, minkälainen tieto on. C++-kääntäjäsi varmistaa niin pitkälle kuin mahdollista, että käytät oikeaa tietotyyppiä oikeassa paikassa ja kun yhdistät tietotyyppejä, että ne ovat yhteensopivia. Tästä tarkistuksesta johtuen kääntäjä huomaa useimmat virheet, jotka syntyisivät, jos esimerkiksi yrittäisit yhdistää tietotyyppejä, jotka eivät ole keskenään yhteensopivia. 31

2 C++ Ohjelmoijan käsikirja Numeeriset arvot, joita voit C++:ssa käsitellä, jakaantuvat kahteen pääluokkaan: kokonaisluvut (ei desimaaliosaa) ja liukuluvut (voi olla desimaaliosa). Tämä ei kuitenkaan tarkoita sitä, että käytössä olisi vain kaksi numeerista tietotyyppiä. Kummassakin luokassa on useita tietotyyppejä, joista jokainen voi sisältää tietyn arvojoukon lukuja. Käsitellään seuraavassa tietotyyppejä rinnakkain laskutoimitusten suorittamisen kanssa. Aloitetaan kokonaislukulaskennasta. 32 Yksinkertaiset laskutoimitukset Käsitellään ensiksi hieman terminologiaa: operaatio (kuten laskutoimitus) määritellään operaattorilla - esimerkiksi + lisäyksessä ja * kertomisessa. Arvot, joiden pohjalta operaattori toimii, ovat operandeja. Esimerkiksi lausekkeessa 2 * 3 operandeja ovat 2 ja 3. Koska kertolaskussa tarvitaan kaksi operandia, sitä kutsutaan binääriseksi operaattoriksi. Jotkut toiset operaattorit tarvitsevat vain yhden operandin ja niitä kutsutaankin unaarisiksi operaattoreiksi. Esimerkkinä unaarisista operaattoreista on miinusmerkki lausekkeessa -2. Miinusmerkillä on tässä yksi operandi - luku 2, jonka merkin se vaihtaa. Miinusmerkillä voi olla kaksikin operandia, kuten lausekkeessa 4-2. Laskutoimituksissa käytetään numeroita, joten katsotaan ensin, miten numeroita määritellään. C++:ssa vakioarvoja, kuten 42, tai Aleksis Kivi, kutsutaan literaalivakioiksi. Luvussa 1 käytimme merkkijonotyyppistä literaalivakiota, joka määriteltiin sijoittamalla joukko merkkejä lainausmerkkien väliin, kuten Aleksis Kivi. Seuraavaksi käsittelemme numeerisia literaalivakioita. Tällaisia ovat tavalliset numerot, joihin törmäät joka päivä: kengän koko, veden kiehumispiste - itse asiassa mikä tahansa määritelty numero. C++:n numeeriset vakiot luokitellaan kahteen luokkaan: Kokonaislukuliteraalit, jotka ovat kokonaislukuja ilman desimaalipistettä. Liukulukuliteraalit (kutsutaan yleensä liukuluvuiksi) ovat numeroita, joihon kuuluu desimaalipiste tai eksponentti tai molemmat (käsittelemme eksponentteja myöhemmin). Käytät kokonaislukuja, kun käsittelet kokonaisia lukuja, kuten joukkueen pelaajien lukumäärä tai kirjan sivujen lukumäärä. Liukulukuja käytät, kun arvot eivät ole kokonaisia: tilanteissa, joissa ympyrä jaetaan sen halkaisijalla tai euron ja dollarin valuuttakurssit. Liukulukuja käytetään myös, kun käsitellään hyvin pieniä tai hyvin suuria lukuja: elektronin paino tai aurinkokunnan halkaisija. Käytämme termiä liukuluku, koska luvut esittävät kiinteän määrän numeroita ja desimaalipiste liukuu molempiin suuntiin. Siirretään desimaalipistettä Molemmissa näissä luvuissa on sama määrä numeroita, mutta ne ovat aivan eri numeroita. Koska desimaalipistettä voidaan joustavasti siirtää, voimme esittää ja tallettaa hyvin suurta joukkoa eri lukuja. Hyvin pienet ja hyvin suuret luvut voidaan näin esittää kohtuullisen pienessä muistimäärässä.

3 Perustietotyypit ja laskutoimitukset Käsittelemme ensin kokonaislukujen käyttöä, koska se on näistä kahdesta yksinkertaisempia. Liukulukuja käsittelemme heti kokonaislukujen jälkeen. Kokonaislukuliteraalit Kokonaislukuliteraaleja voit kirjoittaa varsin suoraviivaisesti. Seuraavassa on joitakin esimerkkejä: Esimerkeissä olleet + ja - -merkit ovat unaarisia operaattoreita. Voit jättää + -merkin pois, koska se on oletusarvona, mutta voit myöskin kirjoittaa sen, jos se selventää asioita. Literaali +123 on sama kuin 123. Viimeisen esimerkin luvun kirjoittaisit normaalisti 22,333, mutta kokonaislukuliteraaleissa ei voi käyttää pilkkuja tuhannen erottimina. Kääntäjä tulkitsisi lukusi tällöin kahtena lukuna. Et voi myöskään kirjoittaa millaista tahansa kokonaislukuarvoa. Esimerkiksi kokonaislukua, jossa on 100 numeroa, ei voi kirjoittaa. Kokonaislukuliteraalilla on arvojen ylä- ja alarajat, jotka määräytyvät sen mukaan, miten paljon muistia varataan kullekin kokonaisluvulle. Palaamme tähän hieman myöhemmin tässä luvussa, kun käsittelemme kokonaislukumuuttujia. Binääriluvut Tutkitaan ensin, mitä tarkoitamme, kun kirjoitamme niinkin jokapäiväisiä lukuja kuin 324 tai 911. Luonnollisestikin tarkoitamme lukuja kolmesataa ja kaksikymmentä neljä ja yhdeksänsataa ja yksitoista. Tarkemmin ottaen tarkoitamme: 324 on: 3* * *10 0, joka on 3*10*10 + 2* on: 9* * *10 0, joka on 9*10*10 + 1* Kutsumme sitä desimaaliseksi esitystavaksi, koska se rakentuu kymmenen potensseista (desimaalinen juontaa juurensa latinankieliseen sanaan decimalis, joka tarkoittaa kymmenesosaa, jolla tarkoitettiin 10 % veroa - voi niitä aikoja...). Numeroiden esittäminen tällä tavalla on erittäin käytännöllistä ihmisille, joilla on kymmenen sormea ja/tai varvasta. Tietokoneesi ei kuitenkaan ole näin käytännönläheinen, se on rakennettu vain kytkimistä, jotka ovat joko päällä tai poissa päältä. Tällöin on kaikki vielä hyvin, kun lasketaan kahteen, mutta kaikkea muuta, kun lasketaan kymmeneen. Tämä onkin perimmäinen syy, miksi tietokoneissa luvut esitetään 2-kantaisina eikä 10-kantaisina. Lukujen esittämistä 2- kantalukujärjestelmässä kutsutaan binäärilukujärjestelmäksi. Luvut voivat olla joko 0 tai 1, mikä on ideaalitilanne, kun niiden esittämiseen voidaan käyttää vain kaksiasentoisia kytkimiä. Tarkastellaan vielä, miten luku 1101 muodostuu: 1*23 + 1*22 + 0*21 + 1*20, joka on 1*2*2*2 + 1*2*2 + 0*

4 C++ Ohjelmoijan käsikirja Tämä on 12 desimaalijärjestelmässä. Seuraavassa taulukossa on kaikki luvut, jotka voit esittää kahdeksalla binäärisellä numerolla (binäärinen numero tunnetaan paremmin bittinä). Binääri Desimaali Binääri Desimaali Huomaa, että seitsemällä ensimmäisellä bitillä voimme esittää luvut 0-127, mikä on 2 7 lukua. Kahdeksalla bitillä saamme 256 eli 2 8 lukua. Yleisesti ottaen, jos käytössä on n bittiä, voimme esittää 2 n kokonaislukua, joiden arvot ovat välillä 2 n -1. Binääristen lukujen yhteenlasku on tietokoneen sisällä hyvin yksinkertaista, koska siirto seuraavalle kymmenelle voi olla vain 0 tai 1. Tämä voidaan suorittaa hyvin yksinkertaisilla piireillä. Binärinen Desimaalinen 29 Viereisessä kuvassa esitetään, miten kahden binäärisen 8-bittisen luvun yhteenlasku toimisi Heksadesimaaliluvut Kun käsittelemme suuria binäärilukuja, kuten huomaamme pian, että binääriluvut eivät ole kovinkaan käyttökelpoisia käytännössä. Ajatellaan esimerkiksi lukua numeroinen desimaaliluku. Binäärisenä tämä luku esitettäisiin seuraavasti: Luvun pituus on kokonaista 24 numeroa. Tämähän on jo hieman liikaa! Tarvitsemme taloudellisemman tavan kirjoittaa tämän, mutta desimaalinen esitysmuoto ei aina ole tarkoituksenmukainen. Joskus (kuten näemme seuraavassa luvussa) voisi olla esimerkiksi tarvetta määritellä, että 10. ja 24. bitti oikealta lukien asetettaisiin ykköseksi. Desimaaliluvun, joka suorittaisi tämän, keksiminen on melko rankkaa, ja siinä tulee Siirto 34

5 Perustietotyypit ja laskutoimitukset helposti virheitä. Huomattavasti helpompi tapa on heksadesimaalilukujen käyttö. Heksadesimaalilukujen kohdalla kantalukuna on 16. Laskutoimitus 16-kantaisena on huomattavasti mukavampaa ja se sopii varsin hyvin yhteen binäärisen kanssa. Jokaisella heksadesimaalinumerolla voi olla arvo 0-15 (numerot esitetään kirjaimilla A - F, kuten alla olevasta taulukosta näkyy) ja arvot 0-15 vastaavat mukavasti arvoja, jotka neljä bittiä voi esittää. Heksadesimaali Desimaali Binääri A B C D E F Koska heksadesimaaliluvun yksi numero vastaa neljää binääriluvun numeroa, voimme esittää suuren binäärilukumme heksadesimaalilukuna yksinkertaisesti ryhmittelemällä binääriluvun oikealta alkaen neljän mittaisiin ryhmiin ja kirjoittamalla kutakin ryhmää vastaavan heksadesimaalinumeron. Binääriluvusta muodostuu siis luku F 5 B 9 E 1 Tässä meillä on kuusi heksadesimaalista numeroa, jotka vastaavat kuutta binääriluvun ryhmää. Varmistetaan vielä, että kaikki toimii kuvatulla tavalla - muunnetaan heksadesimaaliluku suoraan desimaaliluvuksi seuraavasti: F5B9E1 muunnetaan desimaaliluvuksi seuraavasti: 15* * * * * *16 0 Joka on siis: Ja tämähän on sama kuin alkuperäinen binäärinen luku muunnettuna desimaaliluvuksi:

6 C++ Ohjelmoijan käsikirja Negatiiviset binääriluvut Binäärisissä laskutoimituksissa tulee huomioida myöskin toinen puoli: negatiiviset luvut. Tähän saakka olemme olettaneet, että kaikki luvut ovat positiivisia, joten optimistisesti ajatellen olemme jo puolivälissä. Mutta emme voi välttää elämän negatiivista puolta - pessimistisesti ajatellen olemme vasta puolivälissä. Miten negatiiviset luvut esitetään tietokoneessa? No meillähän ei ole käytössä kuin binääriluvut, joten niillähän nekin täytyy esittää. Sellaisten numeroiden kohdalla, joilla haluamme esittää myöskin negatiivisia arvoja (kutsutaan myös termillä etumerkillinen luku), pitää ensin päättää kiinteä pituus (toisin sanoen, bittien lukumäärä) ja määritellä vasemmanpuoleisin bitti merkkibitiksi. Pituus pitää kiinnittää, koska muutoin sekoittaisimme, mikä bitti on merkkibitti. Koska tietokoneesi muisti koostuu 8-bitin tavuista, binääriluvut talletetaan 8-bitin kerrannaisiin (yleensä kaksi potenssiin x). Eli käytössä voi olla 8-bittisiä numeroita, 16-bittisisä numeroita tai minkä mittaisia tahansa, kunhan aina tiedämme pituuden kussakin tapauksessa. Näin löydämme aina merkkibitin - vasemmanpuoleisimman bitin. Jos merkkibitti on 0, luku on positiivinen, ja jos se on 1, luku on negatiivinen. Tämä näyttäisi ratkaisevan ongelmamme, mutta tosiasiassa näin ei vielä aivan ole. Kun suoritamme kahden kokonaisluvun yhteenlaskun, emme halua, että tietokoneen pitää erikseen tarkistaa, onko jompi kumpi tai molemmat luvut negatiivisia. Haluamme yksinkertaisesti käyttää samaa piiriä kaikenlaisten lukujen kohdalla. Jos lisäämme lukuun +12 luvun -8, haluamme saada vastaukseksi +4. Jos kokeilemme tätä yksinkertaistetulla ratkaisutavallamme, jossa positiivisen luvun merkkibitti asetetaan ykköseksi ja näin saadaan negatiivinen luku, ja suoritamme laskutoimituksen normaaleilla siirtymillä, emme saa oikeaa tulosta: 12 binäärisenä on oletamme, että -8 on binäärisenä Kun laskemme nämä yhteen, saamme: Tämä näyttäisi olevan -20, mitä emme todellakaan halunneet vastaukseksi. Se ei todellakaan ole +4, jonka tiedämme olevan Voi voi, emmekö voikaan kohdella merkkibittiä kuten tavallista bittiä. Haluamme kuitenkin näin tehdä, joten tarvitsemme toisenlaisen merkintätavan negatiivisille luvuille. Katsotaan, miten tietokone haluaisi meidän esittävän luvun -8. Yritetään ensin vähentää +12 luvusta +4, koska se antaa meille oikean vastauksen: +4 binäärisenä on binäärisenä on Ja vähennyslaskun lopputuloksena saadaan

7 Perustietotyypit ja laskutoimitukset Neljännestä numerosta oikealta päin laskettuna alkaen meidän piti aina lainata 1 voidaksemme suorittaa vähennyslaskun, kuten meidän olisi pitänyt toimia normaalin desimaalisenkin laskutoimituksen yhteydessä. Tämän tuloksen oletetaan olevan -8, ja vaikka se ei siltä näytäkään, se kuitenkin on -8. Kokeile lisäämällä se esimerkiksi lukuihin +12 ja +15, niin huomaat, että se toimii! Miten saimme tuloksen tarkasti ottaen aikaan, kun vähensimme 12 luvusta 4? Näyttää siltä, että meillä on nyt käytössä negatiivisten binäärilukujen kahden komplementti -esitysmuoto. Älä vielä tässä vaiheessa ihmettele, miten tämä oikein toimii. Käsitellään aivan kohta, miten kahden komplementti muodostetaan positiivisesta luvusta ja voit tällöin todeta, että kaikki toimii. Palataan takaisin edelliseen esimerkkiimme, jossa tarvitsemme kahden komplementtia luvusta -8. Lähdemme liikkeelle luvusta +8 binäärisenä: Muutamme nyt kaikki bitit käänteisiksi, eli ykköset nolliksi ja päinvastoin: Tätä kutsutaan yhden komplementiksi ja jos nyt lisäämme siihen luvun 1, saamme kahden komplementin: Tämähän on aivan sama muoto luvusta -8 kuin saimme vähennyslaskulla Jotta olisimme aivan varmoja, suoritetaan alkuperäinen yhteenlaskumme: +12 binäärisenä on Uusi versiomme luvusta -8 on Ja laskutoimituksen tuloksena saame: Tulos on 4 - hienoa, se toimii! Siirto muuttaa kaikki vasemmanpuoleiset bitit takaisin nolliksi. Viimeisin siirto häviää luvun ulkopuolelle, mutta siitä ei tarvitse välittää. Itse asiassa tässä oletamme, että merkkibitti, 1 tai 0, jatkuu loputtomasti vasemmalle päin. Kokeile muutamaa omaa esimerkkiäsi; huomaat, että tämä toimii aina ja automaattisesti. Todellinen etu tästä on, että se tekee laskutoimitukset tietokoneelle erittäin helpoiksi (ja nopeiksi). Nyt kun olemme käsitelleet binääriset ja heksadesimaaliset luvut, palataan C++:n kokonaislukuliteraalivakioihin. Heksadesimaaliset kokonaislukuliteraalivakiot Edellisissä esimerkeissä kokonaislukuliteraalivakiot olivat desimaalisia, mutta voit myöskin käyttää heksadesimaalisia kokonaislukuja. Ilmoitat, että olet kirjoittamassa heksadesimaalista lukua lisäämällä luvun eteen 0x tai 0X. Eli jos kirjoitat 0x999, olet kirjoittamassa heksadesimaalista lukua. Pelkkä 999 on siis desimaalinen luku. Seuraavassa on joitakin esimerkkejä kokonaislukuliteraalivakioista kirjoitettuna heksadesimaalisina: 37

8 C++ Ohjelmoijan käsikirja Heksadesimaalinen Vastaava desimaalinen Desimaalinen 0x1AF 1* * * x123 1* * * xA 10* xCAD 12* * * xFF 15* * Luvussa 1 käytimme heksadesimaalisia lukuja koodinvaihtomerkkeinä, jotka määrittelivät merkkejä. Se, mitä käsittelemme nyt tässä, on eri asia - määrittelemme kokonaislukuja. Palaamme merkkimuotoisten literaalivakioiden määrittelyyn myöhemmin tässä luvussa. Oktaaliset kokonaislukuliteraalivakiot Voit myöskin kirjoittaa kokonaislukuja oktaalisina, eli käyttäen 8-kantaisia lukuja. Ilmoitat luvun olevan oktaalisen kirjoittamalla luvun eteen nollan. Seuraavassa taulukossa on esimerkkejä oktaalisista luvuista: Oktaaliluku Vastaava desimaalinen Luonnollisesti oktaaliluvun yksi numero voi esittää vain arvot 0-7. Oktaalilukuja käytetään nykyään varsin harvoin ja niiden käyttömahdollisuus on säilytetty C++:ssa pääasiassa historiallisista syistä. Tästä huolimatta on tärkeää tietää niiden olemassaolosta, koska jos vahingossa kirjoitat desimaaliluvun eteen nollan, kääntäjä yrittää tulkita luvun oktaalilukuna. Älä kirjoita desimaalisten kokonaislukujen eteen nollaa. Kääntäjä tulkitsee tällaiset luvut oktaalisiksi (8-kantaisiksi). Eli luku kirjoitettuna 065 tarkoittaa desimaalista lukua 53. Kääntäjä ei millään tavalla välitä siitä, minkälaisena kokonaisluvun kirjoitat - luku talletetaan tietokoneeseen binäärisenä. Eri kirjoitustavat ovat olemassa, jotta voit kirjoittaa luvut haluamallasi tavalla. Voit kirjoittaa kokonaislukuarvon 15 seuraavilla tavoilla: 15, 0xF tai 017. Kaikkien näiden tuloksena on sama binäärinen luku, joten voit vapaasti valita kuhunkin tilanteeseen parhaimmin sopivan esitystavan. 38

9 Kokonaislukulaskenta Peruslaskutoimitukset, jotka voit suorittaa kokonaisluvuille, ovat: Perustietotyypit ja laskutoimitukset Operaattori Operaatio + Yhteenlasku - Vähennyslasku * Kertolasku / Jakolasku % Jakojäännös (jakolaskun jälkeen) Nämä laskutoimitukset toimivat suurelta osin niin kuin odottaa saattaakin. Huomaa, että ne ovat kaikki binäärisiä operaattoreita. Jakolaskuoperaattori on hieman erikoinen, joten käsitellään sitä ensin. Koska kokonaislukuoperaatioiden tuloksena on aina kokonaisluku, lausekkeen kuten 11/4 arvona ei ole 2.75, vaan 2. Kokonaislukujen jakolaskun tuloksen on kuinka monta kertaa jakaja sisältyy jaettavaan. Jakojäännös yksinkertaisesti jätetään huomiotta. Kokonaislukujen jakolasku 11/4 2 kertaa 4, jäännös 3 Tulos = 2 Hylätään Jakojäännös-operaattori 11%4 2 kertaa 4, jäännös 3 Hylätään Tulos = 3 Jakojäännös operaattori % täydentää jakolaskuoperaattoria, koska sen avulla saa selville jakolaskussa syntyvän jakojäännöksen. Lausekkeen 11%4 tuloksena on arvo 3, joka on jakojäännös, kun 11 jaetaan luvulla 4. Tarkastellaan seuraavassa laskutoimituksia esimerkin avulla. Kokeile itse - Kokonaislukulaskenta Seuraavassa on ohjelma, joka tulostaa erilaisten kokonaislukujen laskutoimitusten tuloksen. Tarkoituksena on selventää, miten edellä mainitut operaattorit toimivat. 39

10 C++ Ohjelmoijan käsikirja // Esimerkki Kokonaislukulaskenta #include <iostream> using namespace std; // Tulostusta varten // Nimiavaruus std int main() { cout << << endl; // Tulostaa 30 cout << 10-5 << endl; // Tulostaa 5 cout << << endl; // Tulostaa -10 } cout << 10 * 20 << endl; // Tulostaa 200 cout << 10 / 3 << endl; // Tulostaa 3 cout << 10 % 3 << endl; // Tulostaa 1 cout << / 10-5 << endl; // Tulostaa 7 cout << ( ) / (10-5) << endl; // Tulostaa 6 cout << / (10-5) << endl; // Tulostaa 14 cout << ( ) / 10-5 << endl; // Tulostaa -2 cout << 4 * 5 / 3 % / 3 << endl; // Tulostaa 4 return 0; // Ohjelma päättyy Ohjelman tulostuksena on: Tämä ei näytä kovinkaan hienolta, koska lukujen oikea reuna ei ole tasattu. Tämä johtuu kokonaislukujen oletusarvoisesta tulostustavasta. Palaamme tulostuksen ulkonäön parantamiseen hetken päästä. Kuinka se toimii Kukin lause suorittaa laskutoimituksen ja tulostaa tuloksen näytölle. Tuloksen perään tulostetaan rivinvaihtomerkki, mikä siirtää kohdistimen seuraavan rivin alkuun. Kaikki esimerkin lausekkeet ovat vakiolausekkeita, koska kääntäjä pystyy määrittelemään ne täydellisesti jo ennen ohjelman suoritusta. Ensimmäiset kuusi lausetta ovat varsin selkeitä ja sen miksi ne tuottavat edellä mainitut arvot, pitäisi olla varsin selvä: 40

11 cout << << endl; // Tulostaa 30 cout << 10-5 << endl; // Tulostaa 5 cout << << endl; // Tulostaa -10 Perustietotyypit ja laskutoimitukset cout << 10 * 20 << endl; // Tulostaa 200 cout << 10 / 3 << endl; // Tulostaa 3 cout << 10 % 3 << endl; // Tulostaa 1 Ainoastaan viimeiset kaksi riviä vaativat lisäkäsittelyä. Koska kokonaislukuoperaatioiden tuloksena on kokonaislukuja, lausekkeen 10/3 tuloksena on 3, koska kolme sisältyy lukuun 10 kolme kertaa. Jakojäännös 1 jätetään huomiotta. Viimeinen rivi selventää %-operaattoria, jonka tuloksena on jakojäännös. Seuraavat neljä lausetta näyttävät, kuinka sulkeita käytetään: cout << / 10-5 << endl; // Tulostaa 7 cout << ( ) / (10-5) << endl; // Tulostaa 6 cout << / (10-5) << endl; // Tulostaa 14 cout << ( ) / 10-5 << endl; // Tulostaa -2 Sulkeilla muutetaan operaattoreiden luonnollista suoritusjärjestystä. Sulkeiden sisällä olevien lausekkeiden arvo lasketaan aina ensin, alkaen kaikkein sisimmistä sulkeista kaikkein uloimpiin päin. Lausekkeissa, joissa on useita erilaisia operaattoreita, niiden suoritusjärjestys määritellään siten, että tietyt operaattorit suoritetaan ennen jotain toista operaattoria. Tätä prioriteettia kutsutaan operaattoreiden suoritusjärjestykseksi. Käsittelemiemme kokonaislukuoperaattoreiden kohdalla operaattorit *, / ja % muodostavat ryhmän, joiden prioriteetti on suurempi kuin operaattoreiden + ja -, jotka muodostavat toisen ryhmän. Voidaan sanoa, että operaattorit *, / ja % ovat suoritusjärjestyksessä ennen operaattoreita + ja -. Tietyn ryhmän operaattorit - kuten + ja - - ovat suoritusjärjestyksessä samanarvoiset. Esimerkin viimeinen lause selventää, kuinka operaattoreiden suoritusjärjestys määrää, missä järjestyksessä operaattorit suoritetaan: cout << 4 * 5 / 3 % / 3 << endl; // Tulostaa 4 Operaattori + on suoritusjärjestyksessä kaikkein alimmassa ryhmässä, joten se suoritetaan viimeisenä. Tämä tarkoittaa, että alilausekkeet 4*5/3%4 ja 7/3 lasketaan ensin. Alilausekkeen 4*5/3%4 kaikki operaattorit ovat samanarvoisia, joten niiden suoritusjärjestys määräytyy laskemissuunnan mukaan. Tietyn operaattoriryhmän laskemissuunta voi olla joko vasen tai oikea. Operaattori, joka on vasemmalta laskettava, sidotaan ensin operaattorin vasemmalla puolella olevaan operandiin, joten tällaiset operaattorit suoritetaan vasemmalta oikealle. Havainnollistetaan tätä esimerkkimme avulla. Lausekkeen 4*5/3%4 kaikkien operaattoreiden laskemissuunta on vasen. Tämä tarkoittaa sitä, että kunkin operaattorin vasen operandi on se mikä on operaattorin vasemmalla puolella. Eli kertolaskun vasen operandi on 4, jakolaskun vasen operandi on 4*5 ja jakojäännöksen vasen operandi on 4*5/3. Lausekkeen arvo lasketaan siis ((4*5)/3)%4 - mikä on, kuten sanottu, vasemmalta oikealle. Lausekkeen operaattoreiden suoritusjärjestyksen määrää operaattoreiden laskemissuunta saman ryhmän sisällä. Tämä ei sano mitään operandeista. Esimerkiksi lausekkeessamme 4*5/3%4+7/3 ei ole määritelty, suoritetaanko alilauseke 4*5/3%4 ennen alilauseketta 7/3, tai päinvastoin. Se voi olla kumpi tahansa, kääntäjä määrää tämän järjestyksen. Voit ajatella, että mitä väliä sillä on, 41

12 C++ Ohjelmoijan käsikirja koska se ei vaikuta lopputulokseen. Tässä tapauksessa näin onkin: sillä, kumpi yhteenlaskun operandeista lasketaan ensin, ei ole merkitystä. Mutta saattaa olla tilanteita, joissa sillä on merkitystä. Näemme tällaisia tilanteita jatkossa. Lähes kaikki operaattoriryhmät ovat C++:ssa vasemmalta laskettavia, joten useimmat saman suoritusjärjestystason lausekkeet suoritetaan vasemmalta oikealle. Ainoat oikealta laskettavat operaattorit ovat unaariset operaattorit, joita olemme jo käsitelleetkin, sekä sijoitusoperaattori, jota käsittelemme myöhemmin. Seuraavassa taulukossa on kokonaislukulaskutoimitusten suoritusjärjestys ja laskemissuunta. Taulukosta näet lausekkeiden suoritusjärjestyksen: Operaattori Laskemissuunta unaarinen + - oikea * / % vasen + - vasen Jokainen taulukon rivi on ryhmä operaattoreita, joiden suoritusjärjestys on sama. Ryhmät on järjestetty siten, että ylimmällä rivillä on suoritusjärjestyksessä ensimmäiset operaattorit. Koska taulukossa on vain kolme riviä, se on varsin yksinkertaistettu, mutta lisäämme tähän taulukkoon rivejä, kun käsittelemme uusia operaattoreita. Jos haluat jo nyt tutustua kaikkien C++:n operaattoreiden suoritusjärjestykseen, löydät taulukon liitteestä D. Tulostuksen ulkoasun muotoilu Esimerkkimme tulostus oli oikealle tasattu, vaikka se ei siltä oikein näyttänytkään. Epätasainen oikea reuna johtui kuitenkin siitä, että kukin kokonaisluku tulostetaan kenttään, jonka leveys on tarkalleen luvun merkkien lukumäärä. Voimme muuttaa kentän leveyden kunkin luvun kohdalla seuraavasti: // Esimerkki 2.1A - Tulostuksen ulkoasun muotoilu #include <iostream> // Näytölle tulostusta varten #include <iomanip> // Muokkausfunktioita varten using namespace std; // Nimiavaruus std int main() { cout << setw(10) << << endl; // Tulostaa 30 cout << setw(10) << 10-5 << endl; // Tulostaa 5 cout << setw(10) << << endl; // Tulostaa cout << setw(10) << 10 * 20 << endl; // Tulostaa 200 cout << setw(10) << 10 / 3 << endl; // Tulostaa 3 cout << setw(10) << 10 % 3 << endl; // Tulostaa 1 cout << setw(10) << / 10-5 << endl; // Tulostaa 7 cout << setw(10) << ( ) / (10-5) << endl; // Tulostaa 6

13 Perustietotyypit ja laskutoimitukset } cout << setw(10) << / (10-5) << endl; // Tulostaa 14 cout << setw(10) << ( ) / 10-5 << endl; // Tulostaa - 2 cout << setw(10) << 4 * 5 / 3 % / 3 << endl; // Tulostaa 4 return 0; // Ohjelma päättyy Nyt tulostus näyttää seuraavalta: Kuinka se toimii Tämä näyttää paljon paremmalta vai mitä? Parempi ulkoasu saadaan aikaan muutoksella itse tulostuslauseessa. Kunkin tulostettavan luvun eteen on lisätty setw(10), kuten ensimmäisessä lauseessa: cout << setw(10) << << endl; // Tulostaa 30 Funktion kutsua setw() kutsutaan muokkausfunktioksi, koska sen avulla voit muokata, tai kontrolloida, tulostuksen ulkonäköä. Muokkausfunktio ei tulosta mitään; se vain muokkaa tulostusprosessia. Sen vaikutuksesta seuraavaksi tulostettava arvo tulostetaan sulkeiden sisällä olevan luvun osoittaman levyisessä kentässä. Eli tässä tapauksessa 10. Lisäksi täytyy ohjelman alkuun lisätä #include-esikäsittelijäkomento standardiotsikkotiedostoa iomanip varten. Tämän jälkeen setw()-muokkausfunktio on käytettävissä ohjelmassasi. Käytössäsi on muitakin muokkausfunktioita. Käytämme niitä tulevissa esimerkeissämme. Kokeile edellä ollutta esimerkkiä erilaisilla kentän leveyksillä. Muuttujien käyttö Kokonaislukuvakioiden laskutoimitukset ovat aivan hyödyllisiä, mutta varmastikin odotat C++ -ohjelmiesi olevan hieman kehittyneempiä. Jotta pääsisimme eteenpäin, täytyy jotenkin olla mahdollista tallettaa tietoja ohjelmassa. Tämä on mahdollista muuttujien avulla. Muuttuja on alue muistissa, joka tunnistetaan antamasi nimen perusteella ja johon voit tallettaa tietyntyyppistä tietoa. Muuttujan käyttöönotto vaatii siis kaksi vaihetta: sinun tulee antaa sille nimi sekä kertoa, minkä tyyppistä tietoa haluat siihen tallettaa. Tarkastellaan ensin, millaisia mahdollisuuksia meillä on muuttujien nimeämiseen. 43

14 C++ Ohjelmoijan käsikirja Muuttujien nimet Muuttujan nimi voi koostua vain isoista ja pienistä merkeistä, alaviivasta sekä numeroista 0-9. Ensimmäisen merkin tulee olla kirjain tai alaviiva. Kuten jo luvussa 1 mainittiin, ANSI-standardin mukaan muuttujan nimessä voi olla UCS-merkkejä. Suosituksena on kuitenkin, ettet käyttäisi näitä merkkejä, ellei ole aivan välttämätöntä, koska useimmat kääntäjät eivät tue tätä mahdollisuutta. Näimme joitakin esimerkkejä muuttujan nimistä luvussa 1, mutta seuraavassa on joitakin lisää: arvo kuukausipalkka Kahdeksas_pallo VAKIO_ARVO JukkaJaakko Muuttujan nimi ei voi alkaa numerolla, eli nimiä 8Pallo tai 7UP ei voi käyttää. C++ on myöskin merkkikoosta riippuva kieli, joten JukkaJaakko ja jukkajaakko ovat eri nimiä. Sellaisten muuttujien nimiä tulisi välttää, jotka alkavat alaviivalla ja heti perään isolla merkillä tai joissa on kaksi peräkkäistä alaviivaa. Tällaiset nimet on varattu kirjastojen käyttöön. Yleensä muuttujien nimien tulisi ilmaista minkälaista tietoa ne sisältävät. Esimerkiksi kengan_koko on huomattavasti informatiivisempi kuin kk - olettaen tietysti, että käsittelet tällä muuttujalla aina kengän kokoja. Huomaat pian, että haluat useimmiten käyttää muuttujan nimiä, jotka muodostuvat kahdesta tai useammasta sanasta. Näin ohjelmaasi on helpompi lukea. Yleinen tapa yhdistää kaksi sanaa on käyttää alaviivaa sanojen välissä, kuten: rivien_lukumaara palkan_lisays nykyinen_korko C++:ssa käytetään usein tapaa, jossa isolla kirjaimella alkavat sanat on säästetty luokkien nimille. (Luokat ovat käyttäjän määrittelemiä tietotyyppejä. Käyttäjän määrittelemiä tietotyyppejä käsittelemme luvussa 11.) Näin ollen Piste, Henkilo ja Ohjelma tunnistetaan heti käyttäjän määrittelemiksi tyypeiksi. Luonnollisesti voit itse käyttää millaisia nimiä haluat (kunhan ne eivät ole varattuja sanoja), mutta jos käytät nimiä, jotka todella tarkoittavat jotain ja käytät nimiä samalla tavalla kaikkien muuttujien kohdalla, ohjelmistasi tulee helppolukuisempia ja vähemmän virhealttiita. Luettelo kaikista C++:n varatuista sanoista löytyy liitteestä B. Kokonaislukumuuttujat Oletetaan, että haluamme käyttää muuttujaa pitämään kirjaa hallussamme olevien omenoiden lukumäärästä. Voimme luoda muuttujan omenoita muuttujan esittelylauseella. Muuttujan esittely Muuttujalle antamamme nimi Tämä on kommentti eikä ole osa lausetta int omenoita ; //Muuttujan omenoita esittely Tämä määrittelee minkälaista tietoa muuttuja sisältää - tässä tapauksessa kokonaisluvun Puolipiste päättää lauseen 44

15 Perustietotyypit ja laskutoimitukset Lausetta kutsutaan esittelyksi, koska se esittelee nimen omenoita. Jokainen lause, joka esittelee nimen ohjelmaasi, on tämän nimen esittely. Edellä oleva lause on myöskin määrittely, koska se varaa muistia muuttujalle omenoita. Myöhemmin näemme lauseita, jotka ovat esittelyjä, mutta eivät määrittelyjä. Muuttuja luodaan sen määrittelyllä, joten voit viitata muuttujaan vasta määrittelyn jälkeen. Jos yrität viitata muuttujaan ennen sen määrittelyä, kääntäjä ilmoittaa virheestä. Kun määrittelemme muuttujan, voimme antaa sille myöskin alkuarvon. Esimerkiksi: int omenoita = 10; // Muuttujan omenoita määrittely Tämä määrittelee muuttujan omenoita ja antaa sille alkuarvon 10. Kuvassa olleessa määrittelyssä ei annettu lainkaan alkuarvoa, joten muuttujalle varattu muistialue sisältää mitä tahansa roskaa, jota tässä muistialueessa oli viimeksi säilytetty. Roskien säilyttäminen ohjelman muuttujissa ei ole suotavaa, joten voimme muotoilla ensimmäisen kultaisen sääntömme: Alusta muuttujan arvo määrittelyn yhteydessä. Jos et tiedä, minkä arvon muuttuja tulee saamaan, alusta se määrittelyssä nollaksi. Kokeillaan kokonaislukumuuttujia seuraavassa esimerkkiohjelmassa. Kokeile itse - Kokonaislukumuuttujien käyttö Seuraavassa on ohjelma, joka selventää, kuinka omenamme voidaan jakaa tasan ryhmälle lapsia: // Esimerkki Kokonaislukumuuttujien käyttö #include <iostream> using namespace std; int main() { int omenoita = 10; int lapsia = 3; // Näytölle tulostusta varten // Muuttujan omenoita määrittely // Muuttujan lapsia määrittely // lasketaan omenien lukumäärä kullekin cout << endl // Aloitetaan uusi rivi << "Kukin lapsi saa " // Tulostetaan ensin hieman << omenoita / lapsia // Tulostetaan omenien määrä kullekin << " omenaa."; // Tulostetaan lisää // Lasketaan ylijääneiden lukumäärä cout << endl // Aloitetaan uusi rivi << "Yli jäi " // Tulostetaan ensin hieman << omenoita % lapsia // Tulostetaan ylijääneiden määrä << " omenaa."; // Tulostetaan lisää } cout << endl; return 0; // Ohjelman loppu 45

16 C++ Ohjelmoijan käsikirja Esimerkissä on käytetty varsin runsaasti kommentteja, jotka selventävät kunkin kohdan. Normaalisti et varmastikaan kommentoi näin itsestään selviä asioita. Ohjelma tulostaa seuraavaa: Kukin lapsi saa 3 omenaa. Yli jäi 1 omenaa. Kuinka se toimii Tämä esimerkki ei varmastikaan kuormita aivosolujasi liikaa. Ensimmäiset kaksi lausetta funktiossa main() määrittelee muuttujat omenoita ja lapsia: int omenoita = 10; int lapsia = 3; // Muuttujan omenoita määrittely // Muuttujan lapsia määrittely Muuttujan omenoita alkuarvoksi asetetaan 10 ja muuttujan lapsia alkuarvoksi asetetaan 3. Jos olisimme halunneet, olisimme voineet määritellä molemmat muuttujat yhdessä lauseessa, kuten seuraavassa: int omenoita = 10, lapsia = 3; Tämä lause määrittelee sekä muuttujan omenoita että muuttujan lapsia int-tyyppisiksi ja asettaa niille alkuarvot kuten edelläkin. Pilkulla erotetaan määriteltävät muuttujat ja koko lause päättyy puolipisteeseen. Tähän lauseeseen ei ole kovinkaan helppo lisätä kommentteja, mutta voimme jakaa lauseen kahdelle riville: int omenoita = 10, lapsia = 3; // Muuttujan omenoita määrittely // Muuttujan lapsia määrittely Pilkku erottaa yhä nämä kaksi muuttujaa ja meillä on enemmän tilaa kommenteille. Voit määritellä kuinka monta muuttujaa tahansa yhdessä lauseessa ja voit jakaa lauseen kuinka monelle riville tahansa. On kuitenkin hyvää ohjelmointityyliä pysyä yhdessä määrittelyssä yhdessä lauseessa. Seuraava lause laskee montako omenaa kukin lapsi saa: cout << endl // Aloitetaan uusi rivi << "Kukin lapsi saa " // Tulostetaan ensin hieman << omenoita / lapsia // Tulostetaan omenien määrä kullekin << " omenaa."; // Tulostetaan lisää 46 Huomaa, että tässä neljä riviä muodostaa yhden lauseen ja olemme lisänneet kommentin kunkin rivin perään. Kommentit ovat näin itse asiassa lauseen sisällä. Laskutoimituslausekkeessa käytetään jakolasku-operaattoria, jolla saadaan kunkin lapsen omenamäärä selville. Tässä lausekkeessa käytetään vain kahta määrittelemäämme muuttujaa, mutta voisit yhtä hyvin sekoittaa haluamasi määrän muuttujia ja literaalivakioita lausekkeeseen. Seuraava lause tulostaa yli jääneiden omenien lukumäärän: cout << endl // Aloitetaan uusi rivi << "Yli jäi " // Tulostetaan ensin hieman << omenoita % lapsia // Tulostetaan ylijääneiden määrä << " omenaa."; // Tulostetaan lisää

17 Perustietotyypit ja laskutoimitukset Tässä käytämme jakojäännös-operaattoria yli jääneiden omenoiden laskentaan. Tulos tulostetaan kahden merkkijonon väliin yhdessä tulostuslauseessa. Jos olisimme halunneet, olisimme voineet tulostaa kaiken tulostuksen yhdessä lauseessa. Vastakohtana tälle, olisimme voineet tulostaa kunkin merkkijonon ja lasketun arvon erillisissä lauseissa. Tässä esimerkissä käytimme muuttujiemme tyyppinä tyyppiä int, mutta käytössä on muitakin kokonaislukutyyppejä. Kokonaislukutyypit Kokonaislukumuuttujan tyyppi määrittelee, kuinka paljon muistia sille varataan ja muistimäärästä johtuen myöskin siihen talletettavan pienimmän ja suurimman arvon. Käytössä on neljä kokonaislukumuuttujan tyyppiä: Tyypin nimi char short int long Tyypillinen muistimäärä 1 tavu 2 tavua 4 tavua 4 tai 8 tavua char saattaa kuulostaa oudolta kokonaislukutyyppinä, mutta kuten huomaamme myöhemmin, sen päätarkoituksena on tallettaa merkki. Tyypit short ja long voidaan kirjoittaa myöskin short int ja long int, mutta usein kirjoitetaan vain lyhyempi muoto. Näimme jo aikaisemmin, kuinka määritellään int-tyyppinen muuttuja, ja short ja longtyyppisten muuttujien määrittely tapahtuu aivan samaan tapaan. Voit esimerkiksi määritellä ja alustaa muuttujan siementen_maara short-tyyppiseksi lauseella: short siementen_maara = 5; Kuten mainittua, olisit voinut kirjoittaa tämän myös: short int siementen_maara = 5; Vastaavasti voisit määritellä long-tyyppisen muuttujan lauseella: long maan_halkaisija = L; //Maan halkaisija metreissä Huomaa alkuarvon perässä oleva L. Tämä tarkoittaa, että se on tyyppiä long. Jos et kirjoittaisi merkkiä L alkuarvon perään, se ei haittaisi mitään, mutta on hyvä tapa käyttää samantyyppisiä alkuarvoja kuin on itse muuttujakin. Muuttujat, joiden tyyppi on short, int tai long, voivat tallettaa myöskin negatiivisia arvoja, joten voit kirjoittaa ne myös signed short, signed int ja signed long. Voit käyttää jopa varattua sanaa signed tyyppinä - se tarkoittaa signed int. Tämä ei ole kuitenkaan suositeltavaa, koska se ei ainakaan paranna ohjelmasi luettavuutta; ja onhan int lyhyempi kirjoittaakin! 47

18 C++ Ohjelmoijan käsikirja Kokonaislukumuuttuja, joka on tyyppiä 16-bittiset etumerkilliset kokonaisluvut: signed, voi tallettaa sekä negatiivisia että Minimi = Maksimi = positiivisia kokonaislukuja. unsigned-tyyppinen kokonaislukumuuttuja voi tallettaa vain positiivisia lukuja, ja varmasti hämmästyt kun Merkkibitti Merkkibitti sinulle kerrotaan, että kolme tällaista tyyppiä 16-bittiset etumerkittömät kokonaisluvut: ovat unsigned short, unsigned int ja unsigned Minimi = 0 Maksimi = long. Näitä tyyppejä käytetään yleensä sellaisten arvojen tallettamiseen, joita tarkastellaan bitteinä eikä kokonaisina lukuina. Käsittelemme tätä lisää luvussa 3, kun käsittelemme bittioperaattoreita. Bittioperaattoreilla käsittelet muuttujan yksittäisiä bittejä. Yllä olevassa kuvassa näytetään 16-bittisen etumerkillisen ja etumerkittömän -kokonaisluvun ero. Kuten olemme jo nähneet, etumerkillisten kokonaislukujen kohdalla vasemmanpuoleisin bitti ilmoittaa luvun merkin. Se on 0 positiivisille luvuille ja 1 negatiivisille. Etumerkittömien kokonaislukujen kohdalla kaikki bitit voidaan tulkita varsinaisen luvun biteiksi. Koska etumerkitön kokonaisluku tulkitaan aina positiiviseksi, sillä ei ole merkkibittiä - vasemmanpuoleisin bitti on osa lukua. Jos binäärinen esitysmuoto luvusta näyttää oudolta, palauta mieleen, että negatiiviset arvot esitetään yleensä kahden komplementissa. Kuten näimme aikaisemmin positiivisen binääriluvun muuntaminen negatiiviseksi binääriluvuksi (tai päinvastoin) kahden komplementtimuotoon tapahtuu muuttamalla kaikki bitit vastakkaisiksi ja lisäämällä luku 1. Luonnollisestikaan et voi esittää lukua bittisenä etumerkillisenä kokonaislukuna, koska sallitut arvot ovat vain Tyyppi char voi itse asiassa olla joko etumerkillinen tai etumerkitön, riippuen kääntäjästäsi. Jos haluat yhden tavun tallettavan kokonaislukuarvoja, sinun tulee eksplisiittisesti määritellä muuttuja joko signed char tai unsigned char -tyyppiseksi. Huomaa, että vaikka tyyppi char on sama kuin tyypit signed char ja unsigned char, kaikki kolme tulkitaan kuitenkin eri tyypeiksi. Luonnollisestikin sanat char, short, int, long, signed ja unsigned ovat kaikki varattuja sanoja. 48 Kokonaisluvut muistissa Muistin perusyksikkö C++:ssa on tavu. C++ tulkitsee vain, että tavu on riittävän suuri tallettamaan kaikki merkkijoukon perusmerkit, joita C++-kääntäjä käyttää. Muutoin se on määrittelemätön. Tämä mahdollistaa sen, että C++-kääntäjä voi käyttää jotain muutakin merkkijoukkoa kuin 8-bittistä ASCII-merkkijoukkoa. Mutta voit lähes aina olettaa, että merkit ovat 8-bittisiä. Kullekin kokonaislukumuuttujan tyypille varattua muistimäärää ei ole erikseen määrätty ANSI C++-standardissa. Standardissa sanotaan kuitenkin seuraavaa: char-tyyppinen muuttuja vie yhden tavun. int-tyyppinen muuttuja vie niin paljon tilaa, kuin on luonnollista laitteistoympäristölle, jossa ohjelma käännetään.

19 signed ja unsigned -versiot tyypistä vievät saman määrän tilaa. Perustietotyypit ja laskutoimitukset short-tyyppinen arvo vie vähintään yhtä paljon tilaa kuin tyyppi char; inttyyppinen arvo vie vähintään yhtä paljon tilaa kuin tyyppi short ja long-tyyppinen arvo vie vähintään yhtä paljon tilaa kuin tyyppi int. Yhdellä lauseella sanottuna tyyppi char on yhdellä tavullaan kaikkein pienin ja tyyppi long kaikkein suurin. Tyyppi int on jossain näiden kahden välimaastossa, mutta vie niin monta tavua kuin parhaiten sopii tietokoneesi kokonaislukulaskennalle. Syynä tällaiselle epämääräisyydelle on se, että tyypin int tavujen määrä kullekin tietokoneelle olisi sellainen, joka saa aikaan parhaan mahdollisen kokonaislukulaskennan suorituskyvyn. Kääntäjäsi kullekin kokonaislukutyypille käyttämä muistimäärä määrittelee myöskin talletettavien arvojen arvovälin. Seuraavassa on joitakin tyypillisiä kokonaislukumuuttujien kokoja: Tyyppi Koko (tavua) Arvoväli char unsigned char 1 0U - 255U short unsigned short 2 0U U int unsigned int 4 0U U long L L unsigned long UL Merkki U unsigned-tyyppisten muuttujien arvojen perässä tarkoittaa, että literaalivakiot ovat unsigned-tyyppisiä. Ilman U-merkkiä literaalivakiot määrittelisivät etumerkillisen kokonaisluvun. Voit myöskin käyttää pientä u-merkkiä ilmoittamaan, että kokonaisluku on unsigned-tyyppinen. Samaan tapaan on 8-tavuisen kokonaisluvun arvon perään kirjoitettu L. Tämä ilmoittaa luvun olevan tyyppiä long. Kaikki kokonaisluvut, joiden perässä on iso tai pieni L talletetaan longtyyppisenä. Jos määrittelet kokonaisluvun ilman L-kirjainta, se talletetaan int-tyyppisenä - ellei se ole int-tyypin arvoalueen ulkopuolella, jolloin se talletetaan long-tyyppisenä. Jos sen arvo on long-tyypin arvoalueen ulkopuolella, kääntäjän pitäisi antaa virheilmoitus. Muista, että kunkin kokonaislukutyypin arvoalue riippuu kääntäjästäsi. Taulukossa oli tyypilliset arvoalueet, mutta kääntäjäsi voi aivan hyvin varata jonkin muunkin muistimäärän. Sijoitusoperaattori Voimme tallettaa laskutoimituksen tuloksen muuttujaan käyttämällä sijoitusoperaattoria =. Katsotaan esimerkkiä. Oletetaan, että määrittelemme kolme muuttujaa seuraavilla lauseilla: int hedelmia = 0; 49

20 C++ Ohjelmoijan käsikirja int omenia = 10; int appelsiineja = 6; Voimme laskea hedelmien kokonaismäärän lauseella: hedelmia = omenia + appelsiineja; Tässä lauseessa lasketaan ensin =-operaattorin oikealla puolella olevan lausekkeen arvo, omenien ja appelsiinien summa, joka sitten talletetaan =-operaattorin vasemmalla puolella olevaan muuttujaan hedelmia. Lähes sanomattakin lienee selvää, että sijoitusoperaattorin oikealla puolella oleva lauseke voi olla niin monimutkainen kuin vain tarvitset. Jos olisimme määritelleet muuttujat poikia ja tyttoja, voisimme laskea, kuinka monta hedelmää kukin lapsi saisi jakamalla kokonaismäärän lapsilla lauseella: int hedelmia_per_lapsi = 0; hedelmia_per_lapsi = (omenia + appelsiineja) / (poikia + tyttoja); Huomaa, että olisimme voineet myöskin määritellä muuttujan hedelmia_per_lapsi ja alustaa sen samalla kertaa: int hedelmia_per_lapsi = (omenia + appelsiineja) / (poikia + tyttoja); Muuttujan alkuarvon voi asettaa millaisella tahansa lausekkeella, kunhan kaikki lausekkeessa esiintyvät muuttujat on määritelty. Kokeile itse - Sijoitusoperaattorin käyttö Seuraavassa on yhdistetty edellä esitettyjä koodinpaloja ohjelmaksi: // Esimerkki 2.3 Sijoitusoperaattorin käyttö #include <iostream> using namespace std; // Näytölle tulostusta varten int main() { int omenia = 10; int appelsiineja = 6; int poikia = 3; int tyttoja = 4; int hedelmia_per_lapsi = (omenia + appelsiineja) / (poikia + tyttoja); cout << endl << "Kukin lapsi saa " << hedelmia_per_lapsi << " hedelmää."; 50 } cout << endl; return 0;

Kappale 20: Kantaluvut

Kappale 20: Kantaluvut Kappale 20: Kantaluvut 20 Johdanto: Kantaluvut... 328 Kantalukujen syöttäminen ja muuntaminen... 329 Matemaattiset toiminnot Hex- ja Bin-luvuilla... 330 Bittien vertaileminen ja manipulointi... 331 Huom!

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

Lisää perustietotyypeistä

Lisää perustietotyypeistä Perustietotyypit ja laskutoimitukset 3 Lisää perustietotyypeistä Tässä luvussa käsittelemme lisää jo edellisessä luvussa käsittelemiämme perustietotyyppejä. Näemme, kuinka eri tyyppiset muuttujat vaikuttavat

Lisätiedot

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet 811120P Diskreetit rakenteet 2016-2017 2. Lukujen esittäminen ja aritmetiikka 2.1 Kantajärjestelmät ja lukujen esittäminen Käytettävät lukujoukot: Luonnolliset luvut IN = {0,1,2,3,... } Positiiviset kokonaisluvut

Lisätiedot

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

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 3 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten muuttujiin liittyvät kysymykset. Tehtävä 1. Määritä muuttujien max_num, lista,

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

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 2 vastaukset Harjoituksen aiheena on BNF-merkinnän käyttö ja yhteys rekursiivisesti etenevään jäsentäjään. Tehtävä 1. Mitkä ilmaukset seuraava

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

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

Digitaalitekniikan matematiikka Luku 10 Sivu 1 (14) Lukujärjestelmämuunnokset. 2 s s

Digitaalitekniikan matematiikka Luku 10 Sivu 1 (14) Lukujärjestelmämuunnokset. 2 s s Digitaalitekniikan matematiikka Luku 10 Sivu 1 (14) k 10 2 10 2 s 10 10 8 10 16 10 2 10 2 s 2 8 8 2 2 16 16 2 Digitaalitekniikan matematiikka Luku 10 Sivu 2 (14) Johdanto Tässä luvussa perustellaan, miksi

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

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

KAAVAT. Sisällysluettelo

KAAVAT. Sisällysluettelo Excel 2013 Kaavat Sisällysluettelo KAAVAT KAAVAT... 1 Kaavan tekeminen... 2 Kaavan tekeminen osoittamalla... 2 Kaavan kopioiminen... 3 Kaavan kirjoittaminen... 3 Summa-funktion lisääminen... 4 Suorat eli

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

Lukujärjestelmät. Digitaalitekniikan matematiikka Luku 9 Sivu 3 (26) Lukujärjestelmät ja lukujen esittäminen Fe

Lukujärjestelmät. Digitaalitekniikan matematiikka Luku 9 Sivu 3 (26) Lukujärjestelmät ja lukujen esittäminen Fe Digitaalitekniikan matematiikka Luku 9 Sivu 3 (26) Lukujärjestelmät ja lukujen esittäminen.9.2 Fe Lukujärjestelmät Kymmen- eli desimaalijärjestelmä: kantaluku perinteisesti käytetty ja tuttu numerot,,

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

VIII. Osa. Liitteet. Liitteet Suoritusjärjestys Varatut sanat Binääri- ja heksamuoto

VIII. Osa. Liitteet. Liitteet Suoritusjärjestys Varatut sanat Binääri- ja heksamuoto Osa VIII Liitteet Liitteet A B C Suoritusjärjestys Varatut sanat Binääri- ja heksamuoto Osa VIII A. Liite Operaattoreiden suoritusjärjestys On tärkeää ymmärtää, että operaattoreilla on prioriteettinsa,

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

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

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

Tietotyypit ja operaattorit

Tietotyypit ja operaattorit Tietotyypit ja operaattorit Luennossa tarkastellaan yksinkertaisten tietotyyppien int, double ja char muunnoksia tyypistä toiseen sekä esitellään uusia operaatioita. Numeeriset tietotyypit ja muunnos Merkkitieto

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

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

Ohjelmoijan binaarialgebra ja heksaluvut

Ohjelmoijan binaarialgebra ja heksaluvut Paavo Räisänen Ohjelmoijan binaarialgebra ja heksaluvut www.ohjelmoinaan.net Tätä opasta saa vapaasti kopioida, tulostaa ja levittää ei kaupallisissa tarkoituksissa. Kuitenkaan omille nettisivuille opasta

Lisätiedot

ANSI/IEEE Std

ANSI/IEEE Std Digitaalitekniikan matematiikka Luku 9 Sivu 1 (26) Lukujärjestelmät ja lukujen esittäminen ANSI/IEEE Std 754-2008 0 1 0 1 1 0 0 0 B = Σ B i 2 i Digitaalitekniikan matematiikka Luku 9 Sivu 2 (26) Johdanto

Lisätiedot

OHJ-1010 Tietotekniikan perusteet 4 op Syksy 2012

OHJ-1010 Tietotekniikan perusteet 4 op Syksy 2012 OHJ-1010 Tietotekniikan perusteet 4 op Syksy 2012 Luento 6: Tiedon esittäminen tietokoneessa, osa 1 Tekijät: Antti Virtanen, Timo Lehtonen, Matti Kujala, Kirsti Ala-Mutka, Petri M. Gerdt et al. Luennon

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

13 Operaattoreiden ylimäärittelyjä

13 Operaattoreiden ylimäärittelyjä 248 13 C++-kielessä voidaan operaattoreita ylimäärittää. Ylimääriteltävää operaattoria voidaan pitää ikäänkuin metodina, joka esitellään luokan esittelyssä ja määritellään luokan ulkopuolella kuten metoditkin.

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

C = P Q S = P Q + P Q = P Q. Laskutoimitukset binaariluvuilla P -- Q = P + (-Q) (-Q) P Q C in. C out

C = P Q S = P Q + P Q = P Q. Laskutoimitukset binaariluvuilla P -- Q = P + (-Q) (-Q) P Q C in. C out Digitaalitekniikan matematiikka Luku ivu (2).9.2 Fe C = Aseta Aseta i i = n i > i i i Ei i < i i i Ei i i = Ei i i = i i -- On On On C in > < = CI CO C out -- = + (-) (-) = + = C + Digitaalitekniikan matematiikka

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

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

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. salinovi tai syntymapaiva

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. salinovi tai syntymapaiva Sisällys 6. Muuttujat ja Java Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit: Kokonais- ja liukuluvut. boolean- ja char-tyypit. Tyyppien yhteensopivuus. Viitetietotyypit ja merkkijonotietotyyppi

Lisätiedot

6. Muuttujat ja Java 6.1

6. Muuttujat ja Java 6.1 6. Muuttujat ja Java 6.1 Sisällys Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit: Kokonais- ja liukuluvut. boolean- ja char-tyypit. Tyyppien yhteensopivuus. Viitetietotyypit ja merkkijonotietotyyppi

Lisätiedot

Moduli 4: Moniulotteiset taulukot & Bittioperaatiot

Moduli 4: Moniulotteiset taulukot & Bittioperaatiot C! : Moniulotteiset taulukot & Bittioperaatiot 15.3.2016 Agenda Pieni kertausharjoitus Moniulotteiset taulukot Esimerkki taulukoista Tauko (bittitehtävä) Binäärioperaatioista Esimerkki (vilkaistaan IP

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

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit:

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit: Sisällys 6. Muuttujat ja Java Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit: Kokonais- ja liukuluvut, merkit, totuusarvot. Tyyppien yhteensopivuus. Viitetietotyypit ja merkkijonotietotyyppi

Lisätiedot

Luvuilla laskeminen. Esim. 1 Laske 6 21 7

Luvuilla laskeminen. Esim. 1 Laske 6 21 7 Luvuilla laskeminen TI-84 Plus käyttää laskujen suorittamiseen ns. yhtälönkäsittelyjärjestelmää (EOS TM, Equation Operating System), jonka avulla lausekkeiden syöttö tapahtuu matemaattisessa kirjoitusjärjestyksessä.

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

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

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

Merkitse kertolasku 3 3 3 3 potenssin avulla ja laske sen arvo.

Merkitse kertolasku 3 3 3 3 potenssin avulla ja laske sen arvo. 13 Luvun potenssi Kertolasku, jonka kaikki tekijät ovat samoja, voidaan merkitä lyhyemmin potenssin avulla. Potenssimerkinnässä eksponentti ilmaisee, kuinka monta kertaa kantaluku esiintyy tulossa. Potenssin

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

Paavo Räisänen. Ohjelmoijan binaarialgebra ja heksaluvut. www.ohjelmoimaan.net

Paavo Räisänen. Ohjelmoijan binaarialgebra ja heksaluvut. www.ohjelmoimaan.net Paavo Räisänen Ohjelmoijan binaarialgebra ja heksaluvut www.ohjelmoimaan.net Tätä opasta saa vapaasti kopioida, tulostaa ja levittää ei kaupallisissa tarkoituksissa. Kuitenkaan omille nettisivuille opasta

Lisätiedot

SISÄLLYS - DIGITAALITEKNIIKKA

SISÄLLYS - DIGITAALITEKNIIKKA SISÄLLYS - DIGITAALITEKNIIKKA Digitaalitekniikan perusteita...2 Bitti (bit)...2 Tavu (bytes)...2 Sana (word)...2 Yksiköt...2 Binääri järjestelmän laskutapa...2 Esimerkki: Digikuvan siirron kestoaika...2

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

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

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. salinovi tai syntymapaiva

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. salinovi tai syntymapaiva Sisällys 6. Muuttujat ja Java Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit: Kokonais- ja liukuluvut, merkit, totuusarvot. Tyyppien yhteensopivuus. Viitetietotyypit ja merkkijonotietotyyppi

Lisätiedot

6. Muuttujat ja Java 6.1

6. Muuttujat ja Java 6.1 6. Muuttujat ja Java 6.1 Sisällys Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit: Kokonais- ja liukuluvut, merkit, totuusarvot. Tyyppien yhteensopivuus. Viitetietotyypit ja merkkijonotietotyyppi

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

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

Ohjelmointi 2. Jussi Pohjolainen. TAMK» Tieto- ja viestintäteknologia , Jussi Pohjolainen TAMPEREEN AMMATTIKORKEAKOULU

Ohjelmointi 2. Jussi Pohjolainen. TAMK» Tieto- ja viestintäteknologia , Jussi Pohjolainen TAMPEREEN AMMATTIKORKEAKOULU Ohjelmointi 2 Jussi Pohjolainen TAMK» Tieto- ja viestintäteknologia Tietotyypeistä C++ - kielessä useita tietotyyppejä Kirjaimet: char, wchar_t Kokonaisluvut: short, int, long Liukuluvut: float, double

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

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

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

LAUSEKKEET JA NIIDEN MUUNTAMINEN

LAUSEKKEET JA NIIDEN MUUNTAMINEN LAUSEKKEET JA NIIDEN MUUNTAMINEN 1 LUKULAUSEKKEITA Ratkaise seuraava tehtävä: Retkeilijät ajoivat kahden tunnin ajan polkupyörällä maantietä pitkin 16 km/h nopeudella, ja sitten vielä kävelivät metsäpolkua

Lisätiedot

Kirjoita, tallenna, käännä ja suorita alla esitelty ohjelma, joka tervehtii käyttäjäänsä.

Kirjoita, tallenna, käännä ja suorita alla esitelty ohjelma, joka tervehtii käyttäjäänsä. Tehtävä 1. Kirjoita, tallenna, käännä ja suorita alla esitelty ohjelma, joka tervehtii käyttäjäänsä. #include /* mm. I/O-funktiot */ #include /* mm. EXIT_SUCCESS */ /*main-funktio,

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

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

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

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

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

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta C++ - perusteet Java-osaajille luento 5/7: operaattoreiden ylikuormitus, oliotaulukko, parametrien oletusarvot, komentoriviparametrit, constant, inline, Operaattoreiden ylikuormitus Operaattoreiden kuormitus

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

Osa. Listaus 2.1. HELLO.CPP esittelee C++ -ohjelman osat. 14: #include <iostream.h> 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

Ohjelmointi 1 Taulukot ja merkkijonot

Ohjelmointi 1 Taulukot ja merkkijonot Ohjelmointi 1 Taulukot ja merkkijonot Jussi Pohjolainen TAMK Tieto- ja viestintäteknologia Johdanto taulukkoon Jos ohjelmassa käytössä ainoastaan perinteisiä (yksinkertaisia) muuttujia, ohjelmien teko

Lisätiedot

5. Laskutoimitukset eri lukujärjestelmissä

5. Laskutoimitukset eri lukujärjestelmissä 5. Laskutoimitukset eri lukujärjestelmissä Lukujen esitykset eri lukujärjestelmissä Muunnokset lukujärjestelmien välillä Laskutoimitukset eri lukujärjestelmissä. 5.1. Muunnokset lukujärjestelmien välillä

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

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

Metropolia ammattikorkeakoulu 05.02.2015 TI00AA43-3004: Ohjelmointi Kotitehtävät 3

Metropolia ammattikorkeakoulu 05.02.2015 TI00AA43-3004: Ohjelmointi Kotitehtävät 3 : http://users.metropolia.fi/~pasitr/2014-2015/ti00aa43-3004/kt/03/ratkaisut/ Tehtävä 1. (1 piste) Tee ohjelma K03T01.cpp, jossa ohjelmalle syötetään kokonaisluku. Jos kokonaisluku on positiivinen, niin

Lisätiedot

PERUSLASKUJA. Kirjoita muuten sama, mutta ota välilyönti 4:n jälkeen 3/4 +5^2

PERUSLASKUJA. Kirjoita muuten sama, mutta ota välilyönti 4:n jälkeen 3/4 +5^2 PERUSLASKUJA Matemaattisten lausekkeiden syöttäminen: Kirjoita ilman välilyöntejä /+^2 Kirjoita muuten sama, mutta ota välilyönti :n jälkeen / +^2 Kopioi molemmat matematiikka-alueet ja liiku alueen sisällä

Lisätiedot

Ohjelmassa on käytettävä funktiota laskeparkkimaksu laskemaan kunkin asiakkaan maksu. Funktio floor pyöristää luvun lähimmäksi kokonaisluvuksi.

Ohjelmassa on käytettävä funktiota laskeparkkimaksu laskemaan kunkin asiakkaan maksu. Funktio floor pyöristää luvun lähimmäksi kokonaisluvuksi. Tehtävä 24. Kallioparkki veloittaa 2 euroa kolmelta ensimmäiseltä pysäköintitunnilta. Yli kolmen tunnin pysäköinnistä veloitetaan lisäksi 0.5 euroa jokaiselta yli menevältä tunnilta. Kuitenkin maksimiveloitus

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

Kaulaketju. Syöte. Tuloste. Esimerkki 1. Esimerkki 2

Kaulaketju. Syöte. Tuloste. Esimerkki 1. Esimerkki 2 A Kaulaketju Kaulaketjussa on sinisiä ja punaisia helmiä tietyssä järjestyksessä. Helmien järjestys voidaan esittää merkkijonona, jossa S vastaa sinistä helmeä ja P punaista helmeä. Esimerkiksi ketjussa

Lisätiedot

7. Näytölle tulostaminen 7.1

7. Näytölle tulostaminen 7.1 7. Näytölle tulostaminen 7.1 Sisällys System.out.println- ja System.out.print-operaatiot. Tulostus erikoismerkeillä. Edistyneempää tulosteiden muotoilua. 7.2 Tulostusoperaatiot System.out.println-operaatio

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

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

Harjoitus 3 (viikko 39)

Harjoitus 3 (viikko 39) Mikäli tehtävissä on jotain epäselvää, laita sähköpostia vastuuopettajalle (jorma.laurikkala@uta.fi). Muista nimetä muuttujat hyvin sekä kommentoida ja sisentää koodisi. Vältä liian pitkiä rivejä. Ohjelmointitehtävien

Lisätiedot

Tietojen syöttäminen ohjelmalle. Tietojen syöttäminen ohjelmalle Scanner-luokan avulla

Tietojen syöttäminen ohjelmalle. Tietojen syöttäminen ohjelmalle Scanner-luokan avulla Tietojen syöttäminen ohjelmalle Tähän mennessä on käsitelty Javan tulostuslauseet System.out.print ja System.out.println sekä ohjelman perusrakenneosat (muuttujat, vakiot, lauseet). Jotta päästään tekemään

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 28.1.2009 T-106.1208 Ohjelmoinnin perusteet Y 28.1.2009 1 / 28 Esimerkki: murtoluvun sieventäminen Kirjoitetaan ohjelma, joka sieventää käyttäjän antaman murtoluvun.

Lisätiedot

LUKUJÄRJESTELMÄT. Kymmenjärjestelmä eli desimaalijärjestelmä. Binäärilukujärjestelmä

LUKUJÄRJESTELMÄT. Kymmenjärjestelmä eli desimaalijärjestelmä. Binäärilukujärjestelmä Ammatti-Instituutti Lukujärjestelmistä Sivu 1 (5) LUKUJÄRJESTELMÄT Kymmenjärjestelmä eli desimaalijärjestelmä Kymmenjärjestemä on meille se tutuin järjestelmä jonka tunnemme x Siinä on (10) kymmenen numeroa,

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

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

Tietotekniikan valintakoe

Tietotekniikan valintakoe Jyväskylän yliopisto Tietotekniikan laitos Tietotekniikan valintakoe 2..22 Vastaa kahteen seuraavista kolmesta tehtävästä. Kukin tehtävä arvostellaan kokonaislukuasteikolla - 25. Jos vastaat useampaan

Lisätiedot

1. Mikä on lukujen 10, 9, 8,..., 9, 10 summa? 2. Mikä on lukujen 10, 9, 8,..., 9, 10 tulo? =?

1. Mikä on lukujen 10, 9, 8,..., 9, 10 summa? 2. Mikä on lukujen 10, 9, 8,..., 9, 10 tulo? =? Tehtävät 1 1. Mikä on lukujen 10, 9, 8,..., 9, 10 summa? 2. Mikä on lukujen 10, 9, 8,..., 9, 10 tulo? 3. 16 125 250 =? 4. Kirjoita lausekkeeseen sulut siten, että tulos on nolla. 2 + 2 2 2 : 2 + 2 2 2

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

2.2 Neliöjuuri ja sitä koskevat laskusäännöt

2.2 Neliöjuuri ja sitä koskevat laskusäännöt . Neliöjuuri ja sitä koskevat laskusäännöt MÄÄRITELMÄ 3: Lukua b sanotaan luvun a neliöjuureksi, merkitään a b, jos b täyttää kaksi ehtoa: 1o b > 0 o b a Esim.1 Määritä a) 64 b) 0 c) 36 a) Luvun 64 neliöjuuri

Lisätiedot

Tiedon esitysmuodot. Luento 6 (verkkoluento 6) Lukujärjestelmät Kokonaisluvut, liukuluvut Merkit, merkkijonot Äänet, kuvat, muu tieto

Tiedon esitysmuodot. Luento 6 (verkkoluento 6) Lukujärjestelmät Kokonaisluvut, liukuluvut Merkit, merkkijonot Äänet, kuvat, muu tieto Luento 6 (verkkoluento 6) Tiedon esitysmuodot Lukujärjestelmät Kokonaisluvut, liukuluvut Merkit, merkkijonot Äänet, kuvat, muu tieto Ohjelman esitysmuoto Rakenteellinen tieto 1 Tiedon tyypit Kommunikointi

Lisätiedot

Demo 1: Simplex-menetelmä

Demo 1: Simplex-menetelmä MS-C2105 Optimoinnin perusteet Malliratkaisut 3 Ehtamo Demo 1: Simplex-menetelmä Muodosta lineaarisen tehtävän standardimuoto ja ratkaise tehtävä taulukkomuotoisella Simplex-algoritmilla. max 5x 1 + 4x

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

finnish BOI 2015, päivä 1. Muistiraja: 256 MB. 30.04.2015

finnish BOI 2015, päivä 1. Muistiraja: 256 MB. 30.04.2015 Tehtävä: BOW Keilaus finnish BOI 0, päivä. Muistiraja: 6 MB. 30.04.0 Jarkka pitää sekä keilauksesta että tilastotieteestä. Hän on merkinnyt muistiin muutaman viimeisimmän keilapelin tulokset. Valitettavasti

Lisätiedot

Apuja ohjelmointiin» Yleisiä virheitä

Apuja ohjelmointiin» Yleisiä virheitä Apuja ohjelmointiin» Yleisiä virheitä Ohjelmaa kirjoittaessasi saattaa Visual Studio ilmoittaa monenlaisista virheistä "punakynällä". Usein tämä johtuu vain siitä, että virheitä näytetään vaikket olisi

Lisätiedot

Ajattelemme tietokonetta yleensä läppärinä tai pöytäkoneena

Ajattelemme tietokonetta yleensä läppärinä tai pöytäkoneena Mikrotietokone Moderni tietokone Ajattelemme tietokonetta yleensä läppärinä tai pöytäkoneena Sen käyttötarkoitus on yleensä työnteko, kissavideoiden katselu internetistä tai pelien pelaaminen. Tietokoneen

Lisätiedot

Binäärioperaatiot Tiedostot ja I/O

Binäärioperaatiot Tiedostot ja I/O C! Binäärioperaatiot Tiedostot ja I/O 8.3.2018 Tiedotteita Viimeinen luento to 29.3. Ohjelmointitehtävä, ohjelmointikoe ja niiden järjestelyt Ohjelmointikokeeseen ilmoittautuminen auki 2 .c tiedostot ja.h

Lisätiedot

Luku 8. Aluekyselyt. 8.1 Summataulukko

Luku 8. Aluekyselyt. 8.1 Summataulukko Luku 8 Aluekyselyt Aluekysely on tiettyä taulukon väliä koskeva kysely. Tyypillisiä aluekyselyitä ovat, mikä on taulukon välin lukujen summa tai pienin luku välillä. Esimerkiksi seuraavassa taulukossa

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

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

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