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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 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

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

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

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

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

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

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

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

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

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

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

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

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

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

Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö C-ohjelmassa

Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö C-ohjelmassa ssa ohjelman käytössä suoritusaikana oleva muisti jakautuu neljään osaan: koodisegmentti datasegmentti pinosegmentti (stack) kasa (heap) ssa ohjelman koodisegmentti sisältää käännetyn ohjelmakoodin sisältö

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

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

Operaattoreiden uudelleenmäärittely

Operaattoreiden uudelleenmäärittely Operaattoreiden uudelleenmäärittely 14 Operaattoreiden uudelleenmäärittely Tässä luvussa käsittelemme, kuinka voit lisätä toiminnallisuutta luokkiisi, jotta ne toimivat enemmän C++:n perustietotyyppien

Lisätiedot

Digitaalitekniikan matematiikka Harjoitustehtäviä

Digitaalitekniikan matematiikka Harjoitustehtäviä arjoitustehtäviä Sivu 6 6.3.2 e arjoitustehtäviä uku 3 ytkentäfunktiot ja perusporttipiirit 3. äytäväkytkin on järjestelmä jossa käytävän kummassakin päässä on kytkin ja käytävän keskellä lamppu. amppu

Lisätiedot

1. luento. Ohjelmointi (C) T0004 Syksy 2003. 1. luento. 1. luento. 1. luento. 1. luento. kurssin sisältö ja tavoitteet työmuodot.

1. luento. Ohjelmointi (C) T0004 Syksy 2003. 1. luento. 1. luento. 1. luento. 1. luento. kurssin sisältö ja tavoitteet työmuodot. EVTEK Teknillinen ammattikorkeakoulu Ohjelmointi (C) T0004 Syksy 2003 Olli Hämäläinen kurssin sisältö ja tavoitteet työmuodot luennot 1-2/2003 laboratorioharjoitukset 1-2/2003 kotitehtävät, laboratoriokerrat

Lisätiedot

14. oppitunti. Operaattorin ylikuormitus. Osa. Operaattorin ylikuormittaminen

14. oppitunti. Operaattorin ylikuormitus. Osa. Operaattorin ylikuormittaminen Osa IV 14. oppitunti Operaattorin ylikuormitus Edellisessä luvussa opit ylikuormittamaan metodeita ja luomaan kopiomuodostimen, joka tekee syvän kopion. Tässä luvussa käsitellään seuraavia aiheita: Kuinka

Lisätiedot

Desimaaliluvut, mitä ne oikeastaan ovat?

Desimaaliluvut, mitä ne oikeastaan ovat? Desimaaliluvut, mitä ne oikeastaan ovat? Matti Lehtinen Desimaaliluvut ovat niin jokapäiväisiä ja niillä laskemiseen niin totuttu, ettei yleensä tule miettineeksi, mitä ne oikeastaan ovat. Joskus kauan

Lisätiedot

4. oppitunti. Ilmaukset ja ohjelmalauseet. Osa

4. oppitunti. Ilmaukset ja ohjelmalauseet. Osa Osa I 4. oppitunti Ilmaukset ja ohjelmalauseet Ohjelma ei todellisuudessa ole mitään muuta kuin joukko komentoja, jotka suoritetaan peräkkäin. Monipuolisuutta ohjelmaan saadaan, kun ohjelmassa haaraudutaan

Lisätiedot

5.6. C-kielen perusteet, osa 6/8, Taulukko 6.1.2008, pva, kuvat jma

5.6. C-kielen perusteet, osa 6/8, Taulukko 6.1.2008, pva, kuvat jma 5.6. C-kielen perusteet, osa 6/8, Taulukko 6.1.2008, pva, kuvat jma Every cloud has a silver line. - englantilainen sananlasku Tässä osiossa tärkeää: yksi- ja moniulotteinen taulukko Sisältö Yleistä Yksiulotteinen

Lisätiedot

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

Perusasiat. Mitkä ovat C++-ohjelman perusosat. Miten lähdeteksti kommentoidaan. Miten lähdetekstistä tulee suoritettava ohjelma 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

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

8.1 Murtoluvun määritelmä - murtoluvulla tarkoitetaan aina osaa (osia) jostakin kokonaisuudesta

8.1 Murtoluvun määritelmä - murtoluvulla tarkoitetaan aina osaa (osia) jostakin kokonaisuudesta 8. Murtoluvun määritelmä - murtoluvulla tarkoitetaan aina osaa (osia) jostakin kokonaisuudesta - oheisessa kuvassa ympyrä on jaettu kolmeen yhtä suureen osaan, joista kukin osa on yksi kolmasosa koko ympyrästä

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

7. Laskutoimitukset eri lukujärjestelmissä 1 / 31

7. Laskutoimitukset eri lukujärjestelmissä 1 / 31 7. Laskutoimitukset eri lukujärjestelmissä 1 / 31 Johdanto Lukujen esitykset eri lukujärjestelmissä Muunnokset lukujärjestelmien välillä Laskutoimitukset eri lukujärjestelmissä. 2 / 31 7.1. Muunnokset

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

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

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

Ohjelmiston testaus ja laatu. Testausmenetelmiä

Ohjelmiston testaus ja laatu. Testausmenetelmiä Ohjelmiston testaus ja laatu Testausmenetelmiä Testausmenetelmiä - 1 Testauksen menetelmien päälähestymistapoina ovat black-box testi testaaja ei voi tutkia lähdekoodia testaus perustuu sovellukselle suunnitteluvaiheessa

Lisätiedot

Numeropelissä 3x3-ruudukko sisältää luvut 1, 2,, 9. Tehtäväsi on järjestää ruudukko näin:

Numeropelissä 3x3-ruudukko sisältää luvut 1, 2,, 9. Tehtäväsi on järjestää ruudukko näin: A Numeropeli Numeropelissä 3x3-ruudukko sisältää luvut 1, 2,, 9. Tehtäväsi on järjestää ruudukko näin: 1 2 3 4 5 6 7 8 9 Voit jokaisella siirrolla vaihtaa keskenään kaksi vierekkäistä lukua vaaka- tai

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

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

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

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

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

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

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

n! k!(n k)! n = Binomikerroin voidaan laskea pelkästään yhteenlaskun avulla käyttäen allaolevia ns. palautuskaavoja.

n! k!(n k)! n = Binomikerroin voidaan laskea pelkästään yhteenlaskun avulla käyttäen allaolevia ns. palautuskaavoja. IsoInt Tietokoneiden muisti koostuu yksittäisistä muistisanoista, jotka nykyaikaisissa koneissa ovat 64 bitin pituisia. Muistisanan koko asettaa teknisen rajoituksen sille, kuinka suuria lukuja tietokone

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

Aiemmin opittu. Jakson tavoitteet. Ajankäyttö. Tutustu kirjaan!

Aiemmin opittu. Jakson tavoitteet. Ajankäyttö. Tutustu kirjaan! Aiemmin opittu Perusopetuksen opetussuunnitelman mukaan seuraavat lukuihin ja laskutoimituksiin liittyvät sisällöt on käsitelty vuosiluokilla 3 5: kymmenjärjestelmä-käsitteen varmentaminen, tutustuminen

Lisätiedot

Seguinin lauta A: 11-19

Seguinin lauta A: 11-19 Lukujen syventäminen Kun lapsi ryhtyy montessorileikkikoulussa syventämään tietouttaan lukualueesta 1-1000, uutena montessorimateriaalina tulevat värihelmet. Värihelmet johdattavat lasta mm. laskutoimituksiin,

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

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

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

PERUSKOULUSTA PITKÄLLE

PERUSKOULUSTA PITKÄLLE Raimo Seppänen Tytti Kiiski PERUSKOULUSTA PITKÄLLE KERTAUSTA JA TÄYDENNYSTÄ LUKION PITKÄLLE MATEMATIIKALLE JA MATEMATIIKKAA VAATIVAAN AMMATILLISEEN KOULUTUKSEEN MFKA-KUSTANNUS OY HELSINKI 2007 SISÄLLYS

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

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

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

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

1 Raja-arvo. 1.1 Raja-arvon määritelmä. Raja-arvo 1

1 Raja-arvo. 1.1 Raja-arvon määritelmä. Raja-arvo 1 Raja-arvo Raja-arvo Raja-arvo kuvaa funktion f arvon f() kättätmistä, kun vaihtelee. Joillakin funktioilla f() muuttuu vain vähän, kun muuttuu vähän. Toisilla funktioilla taas f() hppää tai vaihtelee arvaamattomasti,

Lisätiedot

jakokulmassa x 4 x 8 x 3x

jakokulmassa x 4 x 8 x 3x Laudatur MAA ratkaisut kertausarjoituksiin. Polynomifunktion nollakodat 6 + 7. Suoritetaan jakolasku jakokulmassa 5 4 + + 4 8 6 6 5 4 + 0 + 0 + 0 + 0+ 6 5 ± 5 5 4 ± 4 4 ± 4 4 ± 4 8 8 ± 8 6 6 + ± 6 Vastaus:

Lisätiedot

Excel syventävät harjoitukset 31.8.2015

Excel syventävät harjoitukset 31.8.2015 Yleistä Excel on taulukkolaskentaohjelma. Tämä tarkoittaa sitä että sillä voi laskea laajoja, paljon laskentatehoa vaativia asioita, esimerkiksi fysiikan laboratoriotöiden koetuloksia. Excel-ohjelmalla

Lisätiedot

Ratkaisu: a) Aritmeettisen jonon mielivaltainen jäsen a j saadaan kaavalla. n = a 1 n + (n 1)n d = 5 500 + 4 = 501500. 2 500 = 5 + 2001 2

Ratkaisu: a) Aritmeettisen jonon mielivaltainen jäsen a j saadaan kaavalla. n = a 1 n + (n 1)n d = 5 500 + 4 = 501500. 2 500 = 5 + 2001 2 Kotitehtäviä 5. Ratkaisuehdotuksia. a) Jono a,..., a 500 on aritmeettinen, a = 5 ja erotusvakio d = 4. Laske jäsenet a, a 8 ja a 00 sekä koko jonon summa. b) Jono b,..., b 0 on geometrinen, b = ja suhdeluku

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

Huom! (5 4 ) Luetaan viisi potenssiin neljä tai viisi neljänteen. 7.1 Potenssin määritelmä

Huom! (5 4 ) Luetaan viisi potenssiin neljä tai viisi neljänteen. 7.1 Potenssin määritelmä 61 7.1 Potenssin määritelmä Potenssi on lyhennetty merkintä tulolle, jossa kantaluku kerrotaan itsellään niin monta kertaa kuin eksponentti ilmaisee. - luvun toinen potenssi on nimeltään luvun neliö o

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

VeRan laboratoriotietojen siirtoformaatti

VeRan laboratoriotietojen siirtoformaatti FCG Finnish Consulting Group Oy VERA TOIMINTAOHJEET Rev./pvm 1.03 Hyväksytty 30.4.2010 Sisältö Käyttö Vastuuhenkilö VeRan tiedonsiirtoformaatti Laboratoriot, jotka toimittavat tulokset suoraan VeRaan.

Lisätiedot

Yhden bitin tiedot. Binaariluvun arvon laskeminen. Koodin bittimäärä ja vaihtoehdot ? 1

Yhden bitin tiedot. Binaariluvun arvon laskeminen. Koodin bittimäärä ja vaihtoehdot ? 1 Luku Digitaalitekniikan matematiikka Täsmätehtävät.9. Fe Digitaalitekniikan matematiikka Täsmätehtävät.9. Fe Opetuskerta Sivu Luku Opetuskerta Sivu Yhden bitin tiedot Luettele esimerkkejä yhden bitin tiedoista.

Lisätiedot

Taulukkolaskentaa selkokielellä EXCEL

Taulukkolaskentaa selkokielellä EXCEL Taso 1 1 MICROSOFT Taulukkolaskentaa selkokielellä EXCEL Tuomas Seitsemän veljeksen Tuomas on vakaa ja vahva kuin tammi. Hänellä ei ole juuri mielikuvitusta, hän ei keksi mitään itse, vaan ideat tulevat

Lisätiedot

Ohjausjärjestelmien jatkokurssi. Visual Basic vinkkejä ohjelmointiin

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

Lisätiedot

Osa II. Peruskieli 00011011011100010110010000111011...

Osa II. Peruskieli 00011011011100010110010000111011... Osa II Peruskieli Kirjoittamamme ohjelmakoodin teksti ja käsittelemämme tieto on tallennettu tietokoneen muistiin bittijonoina. Bitti on yksittäinen solu, jolla voi olla arvo 0 tai 1. Fysiikan termein

Lisätiedot

Ohjelmoinnin peruskurssi Y1

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

Lisätiedot

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti

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

Lisätiedot

Toisessa kyselyssä alueella on 1 ruudussa A ja 3 ruudussa B, joten suosituin ehdokas on B.

Toisessa kyselyssä alueella on 1 ruudussa A ja 3 ruudussa B, joten suosituin ehdokas on B. A Alueet Bittimaassa järjestetään vaalit, joissa on 26 ehdokasta. Jokaisella ehdokkaalla on kirjaintunnus välillä A...Z. Bittimaa on suorakulmion muotoinen ja jaettu neliöruutuihin. Tehtäväsi on selvittää

Lisätiedot

Olio-ohjelmoinnissa luokat voidaan järjestää siten, että ne pystyvät jakamaan yhteisiä tietoja ja aliohjelmia.

Olio-ohjelmoinnissa luokat voidaan järjestää siten, että ne pystyvät jakamaan yhteisiä tietoja ja aliohjelmia. 4. Periytyminen 4.1. Johdantoa Käytännössä vähänkään laajemmissa ohjelmissa joudutaan laatimaan useita luokkia, joiden pitäisi pystyä välittämään tietoa toisilleen. Ohjelmien ylläpidon kannalta olisi lisäksi

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

Ohjelmoinnin perusteet Y Python

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

Lisätiedot

Plagioinnin tunnistaminen lähdekielisistä ohjelmista

Plagioinnin tunnistaminen lähdekielisistä ohjelmista Plagioinnin tunnistaminen lähdekielisistä ohjelmista Plagiointi- ja tutkimusetiikka seminaari 30.09.2003 Kirsti Ala-Mutka TTY/Ohjelmistotekniikka Sisältö Plagiointi ohjelmointikursseilla Tyypillisiä ulkoasumuutoksia

Lisätiedot

1 Aritmeettiset ja geometriset jonot

1 Aritmeettiset ja geometriset jonot 1 Aritmeettiset ja geometriset jonot Johdatus Johdatteleva esimerkki 1 Kasvutulille talletetaan vuoden jokaisen kuukauden alussa tammikuusta alkaen 100 euroa. Tilin nettokorkokanta on 6%. Korko lisätään

Lisätiedot