INSIDE C++ Ohjelmoijan käsikirja. Ivor Horton WROX PRESS

Koko: px
Aloita esitys sivulta:

Download "INSIDE C++ Ohjelmoijan käsikirja. Ivor Horton WROX PRESS"

Transkriptio

1 INSIDE C++ Ohjelmoijan käsikirja Ivor Horton WROX PRESS

2 C++ Ohjelmoijan käsikirja Kirjoittanut Kääntäjä Kansi Kustantaja Ivor Horton Jouni Laaksonen Frank Chaumont IT Press PL HELSINKI Sähköpostiosoite Internet Painopaikka Gummerus Kirjapaino Oy, Jyväskylä 1999 Authorized translation from the English language edition published by Wrox Press Copyright 1998 All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from the Publisher. Finnish language edition published by IT Press Copyright Kaikki oikeudet pidätetään. Tämän julkaisun tai sen osan jäljentäminen ilman tekijän kirjallista lupaa painamalla, monistamalla, äänittämällä tai muulla tavoin on tekijänoikeuslain mukaisesti kielletty. Suomenkielisen version on julkaissut IT Press Copyright Alkuperäisen teoksen nimi on Ivor Horton s Beginning C++ ISBN X

3 Sisältö C++ Ohjelmoijan käsikirja Johdanto 1 Miksi C++? 1 Miksi ANSI/ISO-standardi? 1 Merkintätavat 2 Lähdetekstit 3 CD-levy 4 Virheet ja päivitykset 4 1: Perusasiat 7 Ohjelmointikielet 7 Tulkattu vs. käännetty ohjelman suoritus 8 Kirjastot 9 Miksi C++ on niin suosittu kieli? 9 C++:n ANSI-standardi 10 Yksinkertainen C++-ohjelma 10 Nimet 12 Nimiavaruudet 12 Varatut sanat 13 C++:n lauseet ja lohkot 14 Ohjelman rakenne 14 Suoritettavan tiedoston tekeminen lähdetekstitiedostoista 16 Kääntäminen 17 Linkittäminen 17 Merkit ja merkkijoukot 19 Merkkien koodaus 19 Koodinvaihtomerkit 19 Merkit UCS-merkkijoukossa 22 Tyhjät merkit 22 Ohjelmien kommentointi 23 i

4 C++ Ohjelmoijan käsikirja Standardikirjasto 25 C++-ohjelmointi 25 Proseduraalinen ja oliopohjainen ohjelmointi 26 Yhteenveto 27 Harjoituksia 28 2: Perustietotyypit ja laskutoimitukset 31 Tieto ja tietotyypit 31 Yksinkertaiset laskutoimitukset 32 Kokonaislukuliteraalit 33 Binääriluvut 33 Heksadesimaaliluvut 34 Negatiiviset binääriluvut 36 Heksadesimaaliset kokonaislukuliteraalivakiot 37 Oktaaliset kokonaislukuliteraalivakiot 38 Kokonaislukulaskenta 39 Tulostuksen ulkoasun muotoilu 42 Muuttujien käyttö 43 Muuttujien nimet 44 Kokonaislukumuuttujat 44 Kokonaislukutyypit 47 Kokonaisluvut muistissa 48 Sijoitusoperaattori 49 Peräkkäiset sijoitukset 51 Muuttujan arvon muuttaminen 51 Sijoitusoperaattorit op= 52 Kokonaisluvun arvon lisäys ja vähennys 53 const-avainsana 54 Liukulukuarvot 56 Liukulukutietotyypit 57 Liukulukuarvojen käsittely 60 Tulostuksen muuntaminen 61 Merkkien käyttö 63 Laajennetut merkkijoukot 65 Alkuarvon asetus funktiomuotoisena 66 ii

5 Sisältö Yhteenveto 67 Harjoituksia 68 3: Lisää perustietotyypeistä 71 Eri tietotyyppejä sisältävät lausekkeet 71 Sijoitukset ja eri tietotyypit 73 Eksplisiittiset tyypinmuunnokset 73 Vanhantyyliset tyypinmuunnokset 76 Tyyppien tiedot 77 Tietotyyppien raja-arvot 79 Bittioperaattorit 81 Bittien siirto-operaattori 81 Etumerkillisten kokonaislukujen bittisiirto 83 Bittitason loogiset operaattorit 84 Bittitason AND-operaattori 84 Bittitason OR 86 Bittitason poissulkeva OR 87 Lisää muokkausfunktioista 92 Luetellut tietotyypit 93 Nimettömät luetellut tietotyypit 95 Tyypinmuunnokset kokonaislukujen ja lueteltujen tietotyyppien välillä 96 Tietotyyppien synonyymit 98 Muuttujan elinaika 99 Automaattiset muuttujat 100 Muuttujan määrittelyjen sijainti 102 Globaalit muuttujat 102 Staattiset muuttujat 105 Erikoismuokkausfunktiot 106 Ulkoisten muuttujien määrittely 106 Suoritusjärjestys ja laskemissuunta 107 Yhteenveto 108 Harjoituksia 109 4: Valinnat ja päätökset 111 Tiedon vertailu 111 Vertailuoperaattoreiden käyttö 112 iii

6 iv C++ Ohjelmoijan käsikirja Liukulukuarvojen vertailu 114 If-lause 115 Sisäkkäiset if-lauseet 117 Merkkien koodauksesta riippumaton merkkien käsittely 119 if-else -lause 122 Sisäkkäiset if-else -lauseet 125 Sisäkkäiset if-lauseet 126 Loogiset operaattorit 127 Looginen AND 128 Looginen OR 128 Looginen NOT 129 Ehto-operaattori 131 switch-lause 134 Ehdoton hyppykäsky 139 Valintalauseiden lohkot ja muuttujien näkyvyysalue 139 Yhteenveto 141 Harjoituksia 142 5: Silmukat 145 Silmukoiden perusteet 145 while-silmukka 147 do-while -silmukka 149 Monimutkaisemmat while-silmukan ehtolauseet 151 for-silmukka 152 Silmukat ja muuttujien näkyvyysalue 155 for-silmukat ANSI -yhteensopimattomissa kääntäjissä 155 for-silmukan suorituksen kontrolloiminen liukuluvuilla 156 Monimutkaisten silmukan kontrollointilausekkeiden käyttö 160 Pilkku-operaattori 162 Sisäkkäiset silmukat 163 Silmukan lauseiden yli hyppääminen 167 Silmukasta poistuminen 170 Päättymättömät silmukat 170 Yhteenveto 175 Harjoituksia 176

7 Sisältö 6: Taulukot ja merkkijonot 179 Taulukot 179 Taulukon käyttö 180 Taikanumeroiden välttäminen 184 Taulukoiden alustaminen 184 Taulukon alkioiden alustaminen nollaksi 186 Taulukon koon määrittely alkuarvoluettelolla 186 Taulukon alkioiden lukumäärän laskeminen 186 Merkkitaulukot 188 Moniulotteiset taulukot 192 Moniulotteisten taulukoiden alustus 194 Ulottuvuuden määrittely oletusarvoisesti 196 Moniulotteiset merkkitaulukot 197 Paremmat merkkijonot 199 string-tyyppisten olioiden esittely 200 string-olioden käsittely 201 Merkkijonojen yhdistäminen 202 Merkkijonon yksittäisten merkkien käsittely 204 Merkkijonon osien käsittely 206 Merkkijonojen vertailu 207 compare()-funktio 210 Merkkijonon etsintä 212 Merkkijoukon merkkien etsintä merkkijonosta 215 Etsiminen taaksepäin 219 Merkkijonon muuttaminen 220 Merkkijonon lisäys 221 Ali-merkkijonon korvaus 222 Merkkien poisto merkkijonosta 225 string-tyyppiset taulukot 226 Yhteenveto 227 Harjoituksia 228 7: Osoittimet 231 Mikä on osoitin? 231 Osoittimen esittely 232 Osoittimien käyttö 233 Osoite-operaattori 233 Osoitus-operaattori 234 v

8 vi C++ Ohjelmoijan käsikirja Miksi käyttää osoittimia? 235 Osoittimien alustus 238 char-tyyppisten osoittimien alustus 239 Merkkijonojen lajittelu osoittimien avulla 244 Tulostuksen ulkoasun parantaminen 248 Osoitinvakiot ja osoittimet vakioihin 248 Osoittimet ja taulukot 250 Osoitinlaskenta 251 Kahden osoittimen välisen eron laskeminen 253 Osoitinmuodon käyttö taulukon nimen yhteydessä 253 Osoittimien käyttö moniulotteisten taulukoiden yhteydessä 257 Osoitinmuodon käyttö moniulotteisen taulukon nimen yhteydessä 257 Operaatiot C-tyylisten merkkijonojen yhteydessä 260 Merkkijonojen yhdistäminen 260 Dynaaminen muistinvaraus 261 Vapaa muisti eli keko 262 Operaattorit new ja delete 263 Taulukoiden dynaaminen muistinvaraus 264 Dynaamisen muistinvarauksen vaarat 266 Muistivuodot 267 Osoittimet ja muuttujien näkyvyysalue 267 Vapaan muistin pirstoutuminen 267 Monirivisen merkkijonon sanojen lukeminen ja laskeminen 268 Sanojen osoitintaulukon luominen 269 string-tyyppisten olioiden luonti sanoja varten 270 Sanojen lajittelu ja tulostus 270 Muistin vapauttaminen 271 Osoittimien muuntaminen 272 Yhteenveto 273 Harjoituksia 274 8: Ohjelmointi funktioiden avulla 277 Ohjelman jakaminen osiin 277 Miksi ohjelmat tulee jakaa osiin 278 Funktioiden perusteet 279 Funktion määrittely 280 Funktion otsikko 280

9 Sisältö Funktion otsikon yleinen muoto 280 Funktion runko 281 Parametrit 282 Paluuarvot 283 return-lause 284 Funktion esittely 284 Funktion prototyyppi 285 Funktion prototyypin käyttö 286 Parametrien välitys funktiolle 287 Arvoparametrit 287 Osoittimen välitys funktiolle 289 Taulukoiden välitys funktiolle 291 const-tyyppiset parametrit 294 Moniulotteisen taulukon välittäminen funktiolle 295 Viittausparametrit 297 const-viittausten käyttö 299 Viittaukset vs. osoittimet 300 Viittausten esittely 300 main()-funktion parametrit 301 Parametrin oletusarvot 302 Useiden parametrien oletusarvot 303 Arvon palauttaminen funktiosta 306 Osoittimen palauttaminen 306 Viittauksen palauttaminen 311 Uuden muuttujan palauttaminen funktiosta 311 Avoimet funktiot 312 Staattiset muuttujat 312 Yhteenveto 315 Harjoituksia 316 9: Lisää funktioista 319 Funktioiden uudelleenmäärittely 319 Funktion allekirjoitus 320 Uudelleenmäärittely ja osoitinparametrit 322 Uudelleenmäärittely ja viittausparametrit 322 Uudelleenmäärittely ja const-parametrit 324 Uudelleenmäärittely ja const-tyyppinen osoitinparametri 325 Uudelleenmäärittely ja viittausparametrit 325 Uudelleenmäärittely ja parametrien oletusarvot 326 vii

10 viii C++ Ohjelmoijan käsikirja Mallifunktiot 326 Malliparametrin määrittely eksplisiittisesti 330 Erikoistuneet mallifunktiot 332 Erikoistuneen mallifunktion määrittely 332 Mallifunktiot ja uudelleenmäärittely 334 Mallifunktio, jolla on monta malliparametriä 335 Muut kuin tietotyyppiä olevat malliparametrit 336 Osoittimet funktioihin 337 Funktio-osoittimen esittely 338 Funktion välittäminen parametrinä 341 Funktio-osoitintaulukot 343 Rekursio 344 Rekursion käyttö 346 Lajittelun toteuttaminen rekursiivisesti 347 Yhteenveto 353 Harjoituksia : Ohjelmatiedostot ja esikääntäjä 357 Ohjelmatiedostojen käsittely 357 Ohjelmatiedostot ja linkitys 359 Ulkoiset muuttujat 360 Toisessa tiedostossa olevan const-muuttujan käsittely 362 Nimiavaruudet 365 Globaali nimiavaruus 366 Nimiavaruuksien esittely 366 Nimien nimiavaruuden määrittely implisiittisesti 370 using-esittelyjen käyttö 371 Funktiot ja nimiavaruudet 372 Mallifunktiot ja nimiavaruudet 376 Nimiavaruuden laajennukset 378 Nimettömät nimiavaruudet 381 Nimiavaruuksien peitenimet 382 Sisäkkäiset nimiavaruudet 382 Esikääntäjä 383 Otsikkotiedostojen sisällyttäminen ohjelmiin 384 Korvaukset ohjelman koodissa 386 Merkkijonojen poistaminen ohjelmasta 387

11 Sisältö Tunnisteen määrittelyalueen päättäminen 387 Makrokorvaukset 388 Makrot voivat aiheuttaa virheitä 389 Moniriviset esikääntäjäkomennot 390 Merkkijonot makron parametreinä 391 Parametrien yhdistäminen 392 Loogiset esikääntäjäkomennot 393 Looginen #if-komento 393 Koodin monistamisen välttäminen 394 Arvojen testauksen komennot 396 Koodin valinta monista vaihtoehdoista 397 Esikääntäjän standardimakrot 398 #error- ja #pragma-komennot 399 Testausmenetelmät 399 Itegroidut debuggerit 400 Testaus esikääntäjän avulla 400 assert-makron käyttö 407 Yhteenveto 409 Harjoituksia : Omat tietotyypit 413 Mikä on olio? 413 C++:n struktuurit 415 Struktuurit 415 Struktuurin määrittely 416 Struktuuriolion esittely 417 Struktuurimuuttujan alustus 418 Struktuurimuuttujan jäsenten käsittely 419 Struktuurin jäsenfunktiot 423 Jäsenfunktion määrittelyn sijoittaminen 424 Osoittimien käyttö struktuurien yhteydessä 425 Jäsenmuuttujien käsittelyn osoittimien avulla 425 Jäseneen osoitus -operaattori 426 Olio-osoittimien käyttötilanteet 428 Unionit 429 Unionien esittely 430 Nimettömät unionit 432 Monimutkaisemmat struktuurit 432 ix

12 C++ Ohjelmoijan käsikirja Struktuurit struktuurin jäsenenä 434 Yhteenveto 440 Harjoituksia 440 x 12: Luokat 443 Luokat ja olio-ohjelmointi 443 Kapselointi 444 Tiedon kätkentä 445 Perityminen 446 Polymorfismi 447 Terminologiaa 448 Luokan määrittely 449 Muodostinfunktiot 452 Muodostinfunktion määrittelyn sijoittaminen luokan ulkopuolelle 454 Oletusmuodostinfunktio 456 Oletusarvoiset alkuarvot 460 Alkuarvolistan käyttö muodostinfunktiossa 461 explicit-avainsanan käyttö 461 Luokan yksityiset jäsenet 463 Yksityisten jäsenten käyttö 467 Oletuskopiomuodostin 469 Ystävät 470 Luokan ystäväfunktiot 471 Ystäväluokat 474 this -osoitin 474 Vakiotyyppiset oliot ja jäsenfunktiot 478 Luokan muuttuvat jäsenmuuttujat 480 const-määreen vaikutuksen poistaminen 481 Luokan olioiden taulukko 481 Luokan olion koko 484 Luokan staattiset jäsenet 486 Luokan staattiset jäsenmuuttujat 487 Staattisen jäsenmuuttujan käsittely 490 Staattisen jäsenmuuttujan tyyppi 491 Luokan staattiset jäsenfunktiot 492

13 Sisältö Yhteenveto 493 Harjoituksia : Luokan operaatiot 497 Osoittimet ja viittaukset luokan olioihin 497 Osoittimet jäsenmuuttujina 498 Paketti-luokan määrittely 500 AutoKuorma-luokan määrittely 503 AutoKuorma-luokan toteutus 504 Jäsenfunktioiden määrittely 505 Luokan käsittelyn kontrollointi 513 Sisäkkäiset luokat Sisäkkäiset luokat ja julkinen saantitapa 515 Ystäväluokat 515 Kopiomuodostimen tärkeys 515 Kopiomuodostimen toteuttaminen 516 Viittausparametrit 517 Dynaaminen muistinvaraus oliossa 522 Mikä on tuhoajafunktio? 522 Olioiden tuhoaminen 522 Tuhoajafunktio 523 Oletustuhoajafunktio 523 Tuhoajafunktion toteuttaminen 525 Viittaukset luokassa 527 Viittaukset luokan jäsenmuuttujina 527 Yhteenveto 530 Harjoituksia : Operaattoreiden uudelleenmäärittely 533 Operaattoreiden toteutus luokille 533 Operaattoreiden uudelleenmäärittely 534 Operaattorit, jotka voidaan uudelleenmääritellä 534 Uudelleenmääritellyn operaattorin toteutus 535 xi

14 xii C++ Ohjelmoijan käsikirja Globaalit operaattorifunktiot 539 Operaattorin täydellinen toteuttaminen 539 Erilaiset operaattorifunktiot 543 Sijoitusoperaattorin uudelleenmäärittely 544 Sijoitusoperaattorin toteuttaminen 545 Aritmeettisten operaattoreiden uudelleenmäärittely 551 Operaattorin toteutus perustuen toiseen operaattoriin 556 Indeksointioperaattorin uudelleenmäärittely 557 L-arvo ja uudelleenmääritelty indeksointioperaattori 563 const-tyyppinen uudelleenmäärittely 564 Tyypinmuunnosten uudelleenmäärittely 564 Kaksimerkityksiset muunnokset 565 Lisäys- ja vähennysoperaattoreiden uudelleenmäärittely 566 Fiksut osoittimet 566 Fiksun osoittimen määrittely Laatikko-olioille 567 Fiksun osoitinluokan toteuttaminen 570 new ja delete -operaattorien uudelleenmäärittely 573 Yhteenveto 574 Harjoituksia : Periytyminen 577 Luokat ja olio-ohjelmointi 577 Hierarkiat 578 Luokkien periytyvyys 579 Periytyminen vs. kerääminen 580 Luokkien periyttäminen kantaluokasta 581 Jäsenten saantitapa perinnässä 584 Luokan jäsenten esittely suojatuiksi 588 Perittyjen jäsenten saantitavat 590 Saantitavan hallintakomentojen käyttö luokkien hierarkiassa 592 Perittyjen jäsenten saantitavan muuttaminen 593 Muodostinfunktioiden toiminta periytetyssä luokassa 595 Periytetyn luokan kopiomuodostin 599 Tuhoajafunktiot periytymisessä 602 Saman nimiset jäsenet 605 Saman nimiset jäsenfunktiot 606 Moniperintä 607

15 Sisältö Monta kantaluokkaa 607 Perityn jäsenen monimerkityksisyys 608 Toistuva perintä 614 Virtuaaliset kantaluokat 616 Muunnokset luokkien tyyppien välillä 617 Yhteenveto 618 Harjoituksia : Virtuaalifunktiot ja polymorfismi 621 Polymorfismin perusteet 621 Osoitin kantaluokkaan 622 Perittyjen funktioiden kutsuminen 624 Virtuaalifunktiot 628 Virtuaalifunktion vaatimukset 632 Virtuaalifunktiot ja luokkahierarkia 633 Saantitavat ja virtuaalifunktiot 634 Parametrien oletusarvot virtuaalifunktioissa 636 Viittausten käyttö kutsuttaessa virtuaalifunktioita 637 Virtuaalifunktion kantaluokan version kutsuminen 639 Olioiden osoittimien muuntaminen 640 Dynaaminen muunnos 642 Osoittimien dynaamiset muunnokset 642 Viittausten muuntaminen 644 Polymorfismin kustannukset 644 Puhtaat virtuaalifunktiot 645 Abstraktit luokat 646 Abstrakti luokka rajapintana 649 Epäsuorat abstraktit kantaluokat 649 Olioiden tuhoaminen osoittimien avulla 653 Virtuaaliset tuhoajafunktiot 654 Tyyppien tunnistus suoritusaikana 656 Osoittimet luokan jäseniin 657 Osoittimet jäsenmuuttujiin 657 Osoitin jäseneen -valintaoperaattori 659 Osoittimet jäsenfunktioihin 661 Osoittimen jäseneen välittäminen funktiolle 665 Yhteenveto 666 xiii

16 xiv C++ Ohjelmoijan käsikirja Harjoituksia : Ohjelman virheet ja poikkeusten käsittely 669 Virheiden käsittely 669 Mitä poikkeukset ovat? 670 Poikkeuksen muodostaminen 671 Poikkeusten käsittely 674 Käsittelemättömät poikkeukset 675 Poikkeuksen muodostava koodi 676 Sisäkkäiset try-lohkot 678 Luokkaoliot poikkeuksina 681 Oikean catch-käsittelijän valinta 683 Periytetyn luokan poikkeuksen käsittely kantaluokan käsittelijällä 687 Poikkeuksen uudelleenmuodostaminen 689 Kaikkien poikkeusten käsittely 693 Poikkeuksia muodostavat funktiot 695 Funktion try-lohko 695 Funktiossa mahdollisesti muodostettavien poikkeusten määrittely 696 Yllättävät poikkeukset 697 Poikkeusten muodostaminen muodostinfunktioissa 698 Poikkeukset ja tuhoajafunktiot 699 Standardikirjaston poikkeukset 700 Standardikirjaston poikkeusluokat 701 Standardipoikkeusten käyttö 702 Omien poikkeusluokkien periyttäminen 702 Yhteenveto 703 Harjoituksia : Mallit 707 Malliluokka 707 Mallien käyttökohteet 708 Mallien määrittely 709 Malliparametrit 709 Yksinkertainen malli 710 Mallin jäsenmuuttujien määrittely 712

17 Sisältö Mallin ilmentymien luominen 715 Mallien vienti 722 Mallin staattiset jäsenet 723 Mallin ei-tyyppiparametrit 724 Ei-tyyppiparametrien esimerkki 725 Jäsenfunktioiden mallit 726 Ei-tyyppiparametrien arvot 728 Osoittimet ja taulukot ei-tyyppiparametreinä 729 Malliparametrien oletusarvot 736 Mallin ilmentymän eksplisiittinen muodostus 736 Mallin ystävät 737 Erikoistapaukset 739 Osittain erikoistuneet mallit 739 Osittain erikoistuneen mallin valinta 740 Mallit ja sisäkkäiset luokat 741 Mallifunktioiden määrittely 743 Kehittyneemmät mallit 750 Yhteenveto 751 Harjoituksia : Syöttö- ja tulostusoperaatiot 755 C++:n syöttö ja tulostus 755 Virrat 756 Virtaluokat 758 Standardivirrat 759 Virtojen <<- ja >>-operaattorit 759 Virtojen >>-operaattori 760 Virtojen <<-operaattori 761 Virtojen muokkausfunktiot 762 Parametrilliset muokkausfunktiot 763 Tiedostovirrat 764 Tiedostoon kirjoittaminen 765 Tiedostosta lukeminen 767 Tiedoston avaustavan asetus 770 Virran nykyisen sijainnin käsittely 777 Muotoilemattomat virtaoperaatiot 779 Muotoilematon syöttövirta 780 xv

18 xvi C++ Ohjelmoijan käsikirja Muotoilematon tulostusvirta 782 Virtojen syötön/tulostuksen virheet 782 I/O-virheet ja poikkeukset 784 Binäärimuotoiset virtaoperaatiot 784 Numeerisen tiedon kirjoitus binäärimuodossa 788 Virran luku/kirjoitus -operaatiot 793 Virran hajasaanti 794 Binäärivirran hajasaanti 794 Merkkijonovirrat 801 Oliot ja virrat 803 <<-operaattorin uudelleenmäärittely olioille 803 <<-operaattorin uudelleenmäärittely olioille 806 Monimutkaisemmat oliot ja virrat 808 Virtojen tuki malleille 811 <<-operaattorin käyttö Pino-mallissa 812 >>-operaattorin käyttö Pino-mallissa 814 Pinon olioiden käsittely 815 Yhteenveto 820 Harjoituksia : Standardi mallikirjasto 823 STL:n arkkitehtuurin perusteet 823 STL:n otsikkotiedostot 825 vector-säiliön käyttö 826 vector-säiliön perusoperaatiot 828 vector-säiliön käyttö taulukko-operaatioissa 834 Keskiarvon laskeminen iteraattoreiden avulla 835 Mallitaulukko-vaihtoehto 838 Iteraattori istream_iterator 839 Toiminnallisuutta sisältävät istream_iterator-iteraattorit 841 Lisää iteraattoreista 842 Iteraattorit 842 Iteraattoreiden välitys algoritmille 845 istream_operator:n ja ostream_operator:n jäljittely 847 Iteraattoreiden vaatimukset 848 Parempi Kokonaisluku-iteraattori 849 Syöttö- ja tulostusiteraattorit 855

19 Sisältö Tähän saakka käsittelemämme aiheet 857 Muistinkäsittely 857 Apuluokka Laskuri 858 STL:n vaatimukset säiliön alkiolle 860 Säiliöalkion vaatimukset 861 vector-säiliön ja sen muistinhallinnan tarkastelu 863 Kuinka se toimii: Muodostinfunktion testit 864 Koon muutto -testit 865 Lisää koon muutto -testejä 866 Lisäys alkuun ja loppuun -testit 867 Sijoitus- ja vertailutestit 867 list-säiliö 868 Kommentteja list-säiliöstä 874 Assosiatiivinen map-säiliö 875 Suorituskyky ja erikoistuminen 881 Yhteenveto 883 Harjoituksia 883 A: ASCII-koodit 885 ASCII Merkit ASCII Merkit B: C++:n varatut sanat 889 C: Standardikirjaston otsikkotiedostot 893 Kielen tuki 893 Syöttö/Tulostus 894 Diagnostiikka 894 Yleiset välineet 895 Merkkijonot 895 Säiliöt 895 Iteraattorit 896 Algoritmit 896 Numeeriset operaatiot 897 Paikallistaminen 897 xvii

20 C++ Ohjelmoijan käsikirja D: Operaattoreiden suoritusjärjestys 899 E: Esimerkkiprojekti 903 Hahmotelma 903 Projektin määrittelyn parantelu 905 Suunnittelijan huomiot 905 Henkilo-luokka 906 Periytetyt luokat Opiskelija ja Opettaja 906 Säiliö 906 Tietojen talletus ja palautus 907 Yhteenveto 907 Hakemisto 909 xviii

21 Sisältö xix

22 xx C++ Ohjelmoijan käsikirja

C++ Vol 1. Stanley B. Lippman Josée Lajoie. Copyright IT Press Tämän e-kirjan kopiointi, tulostaminen ja jakeleminen eteenpäin luvatta on kielletty.

C++ Vol 1. Stanley B. Lippman Josée Lajoie. Copyright IT Press Tämän e-kirjan kopiointi, tulostaminen ja jakeleminen eteenpäin luvatta on kielletty. C++ Vol 1 Stanley B. Lippman Josée Lajoie C++ Vol 1 Kirjoittaja Kääntäjä Kansi Kustantaja Stanley B. Lippman & Josée Lajoie Erkki Huru Frank Chaumont Oy Edita Ab IT Press PL 760 00043 EDITA Sähköpostiosoite

Lisätiedot

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

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

Lisätiedot

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

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

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

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

Algoritmit C++ Kauko Kolehmainen

Algoritmit C++ Kauko Kolehmainen Algoritmit C++ Kauko Kolehmainen Algoritmit - C++ Kirjoittanut Taitto Kansi Kustantaja Kauko Kolehmainen Kauko Kolehmainen Frank Chaumont Oy Edita Ab IT Press PL 760 00043 EDITA Sähköpostiosoite Internet

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

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

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

Standardi mallikirjasto

Standardi mallikirjasto Standardi mallikirjasto 20 Standardi mallikirjasto Kuten jo tiedätkin C++ sisältää laajan standardikirjaston, joka yksinkertaistaa monia ohjelmointitehtäviä. Tähän saakka näkemäsi lisäksi tämä kirjasto

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

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

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

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

Lisätiedot

Luokat. Luokat ja olio-ohjelmointi

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

Lisätiedot

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

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa(); Sisällys 7. Oliot ja viitteet Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen. Viitteiden käsittelyä: sijoitus, vertailu ja varautuminen null-arvoon. Viite metodin paluuarvona.. 7.1 7.2 Olio

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

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

815338A Ohjelmointikielten periaatteet 2014-2015

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

Lisätiedot

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

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

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

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

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

Kielioppia: toisin kuin Javassa

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

Lisätiedot

TIE-20200 Ohjelmistojen suunnittelu. Luento 8..9: moniperintä

TIE-20200 Ohjelmistojen suunnittelu. Luento 8..9: moniperintä TIE-20200 Ohjelmistojen suunnittelu Luento 8..9: moniperintä 1 Ajankohtaista Harjoitustyön suunnittelusessiot pidetty, työt jatkuvat, välivaiheen esittely seuraavana Viimeinen viikkoharjoituskerta, palataan

Lisätiedot

Tässä dokumentissa kuvataan Keimo-projektissa sovellettavia ohjelmointikäytäntöjä. Päivämäärä 10.11.2002 Projektiryhmä Keimo keimo-dev@list.hut.

Tässä dokumentissa kuvataan Keimo-projektissa sovellettavia ohjelmointikäytäntöjä. Päivämäärä 10.11.2002 Projektiryhmä Keimo keimo-dev@list.hut. T-76.115 Tietojenkäsittelyopin ohjelmatyö Sisältö Tässä dokumentissa kuvataan Keimo-projektissa sovellettavia ohjelmointikäytäntöjä. Päivämäärä 10.11.2002 Projektiryhmä Keimo keimo-dev@list.hut.fi Kirjoittajat

Lisätiedot

P e d a c o d e ohjelmointikoulutus verkossa

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

Lisätiedot

Harjoitustyö: virtuaalikone

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

Lisätiedot

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

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

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

Muutamia peruskäsitteitä

Muutamia peruskäsitteitä Muutamia peruskäsitteitä Huom. 1: nämä peruskäsitteet eivät muodosta hyvin määriteltyä keskenään yhteensopivien käsitteiden joukkoa, vaan käsitteet ovat osittain päällekkäisiä ja eri yhteyksissä niillä

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

C++ Ohjelmoijan käsikirja. Johdanto

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

Lisätiedot

Ohjelmoinnin perusteet Y Python

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

Lisätiedot

Perustietotyypit ja laskutoimitukset

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

Lisätiedot

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

Ohjelmoinnin perusteet Y Python

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

Lisätiedot

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

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen Taulukot: Array Taulukko Javassa pitää aina perustaa (new) Yksinkertaisessa tilanteessa taulukon koko tiedetään etukäteen ja

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

Esimerkki luokkahierarkiasta: C++-kielen IOstream-kirjasto

Esimerkki luokkahierarkiasta: C++-kielen IOstream-kirjasto Esimerkki luokkahierarkiasta: C++-kielen IOstream-kirjasto Tässä materiaalissa tutustutaan tarkemmin C++:n luokkahierarkiaan. Koska kyseessä on oliopohjainen kieli, C++:n luokat on järjestetty hierarkisesti

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

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

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

A274101 TIETORAKENTEET JA ALGORITMIT

A274101 TIETORAKENTEET JA ALGORITMIT A274101 TIETORAKENTEET JA ALGORITMIT PERUSTIETORAKENTEET LISTA, PINO, JONO, PAKKA ABSTRAKTI TIETOTYYPPI Tietotyyppi on abstrakti, kun se on määritelty (esim. matemaattisesti) ottamatta kantaa varsinaiseen

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

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

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

Lisätiedot

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

Zeon PDF Driver Trial

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

Lisätiedot

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

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

Lisätiedot

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

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

Lisätiedot

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

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

Lisätiedot

Merkkijonot ja C++ Antti-Juhani Kaijanaho. 5. maaliskuuta 2001. 1 Vanhojen C++-kääntäjien käyttäjät, huomio! 2 Merkkijonojen perusteet

Merkkijonot ja C++ Antti-Juhani Kaijanaho. 5. maaliskuuta 2001. 1 Vanhojen C++-kääntäjien käyttäjät, huomio! 2 Merkkijonojen perusteet Merkkijonot ja C++ Antti-Juhani Kaijanaho 5. maaliskuuta 2001 1 Vanhojen C++-kääntäjien käyttäjät, huomio! Tämä kirjoitus perustuu vuonna 1998 julkistettuun C++-kielen kansainväliseen ISO-standardiin.

Lisätiedot

4. Lausekielinen ohjelmointi 4.1

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

Lisätiedot

Osa III. Olioiden luominen vapaalle muistialueelle

Osa III. Olioiden luominen vapaalle muistialueelle Osa III 10. oppitunti Kehittyneet osoittimet Eräs tehokkaimpia C++ -työkaluja on mahdollisuus käsitellä tietokoneen muistia suoraan osoittimien avulla. Tässä luvussa käsitelläänkin seuraavia aiheita: Kuinka

Lisätiedot

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004 Vertailulauseet Ehtolausekkeet Ehdot, valintalausekkeet Boolean-algebra == yhtäsuuruus!= erisuuruus < pienempi suurempi >= suurempi tai yhtäsuuri Esimerkkejä: int i=7; int j=10;

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

Abstraktit tietotyypit ja olio-ohjelmointi

Abstraktit tietotyypit ja olio-ohjelmointi Abstraktit tietotyypit ja olio-ohjelmointi Edellisessä osassa käsiteltiin aliohjelmia prosessiabstraktion välineenä. Prosessiabstraktio onkin vanhimpia ohjelmointikielten suunnittelukäsitteitä ja sisältynyt

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

Tietorakenteet ja algoritmit - syksy 2015 1

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

Lisätiedot

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

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

Lisätiedot

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

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

Lisätiedot

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

C++-KIELI. Versio 4.0

C++-KIELI. Versio 4.0 C++-KIELI Versio 4.0 RAJOITUKSET Kunnes toisin määrätään, tätä materiaalia voivat monistaa omaan henkilökohtaiseen käyttöön OAMK/Tekniikan yksikön opiskelijat. Tämän materiaalin käyttö kaikenlaisessa kaupallisessa

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

17/20: Keittokirja IV

17/20: Keittokirja IV Ohjelmointi 1 / syksy 2007 17/20: Keittokirja IV Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/10 Tavoitteita

Lisätiedot

JReleaser Yksikkötestaus ja JUnit. Mikko Mäkelä 6.11.2002

JReleaser Yksikkötestaus ja JUnit. Mikko Mäkelä 6.11.2002 JReleaser Yksikkötestaus ja JUnit Mikko Mäkelä 6.11.2002 Sisältö Johdanto yksikkötestaukseen JUnit yleisesti JUnit Framework API (TestCase, TestSuite) Testien suorittaminen eri työkaluilla Teknisiä käytäntöjä

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

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

Osa III. Edelliset kolme lukua ovat käsitelleet viittausten ja osoittimien käyttöä. Tämän luvun aiheita ovat:

Osa III. Edelliset kolme lukua ovat käsitelleet viittausten ja osoittimien käyttöä. Tämän luvun aiheita ovat: Osa III 12. oppitunti Kehittyneet viittaukset ja osoittimet Edelliset kolme lukua ovat käsitelleet viittausten ja osoittimien käyttöä. Tämän luvun aiheita ovat: Kuinka viittausten viemisellä voidaan tehostaa

Lisätiedot

Luokat ja funktiot: suunnittelu ja esittely

Luokat ja funktiot: suunnittelu ja esittely Luokat ja funktiot: suunnittelu ja esittely Luokat ja funktiot: suunnittelu ja Uuden luokan esittely ohjelmaan luo uuden tyypin: luokan suunnittelu on tyypin suunnittelua. Sinulla ei ehkä ole paljon kokemusta

Lisätiedot

Java-kielen perusteita

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

Lisätiedot

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu 13.11.2000

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu 13.11.2000 HELIA 1 (15) Luento 2.7 Toiminnallisuutta tietokantaan... 2 Deklaratiivinen eheysvalvonta... 2 Proseduraalinen eheysvalvonta... 3 Eheysvalvonnan suunnittelusta... 4 Sääntöjen määrittely... 4 Toteutusvaihtoehdot...

Lisätiedot

++ 153, 759 += 98 = 102, 751 == 102 -> 756 ->* 655 >> 165, 1063? 133 ^ 165 166 147 ~165

++ 153, 759 += 98 = 102, 751 == 102 -> 756 ->* 655 >> 165, 1063? 133 ^ 165 166 147 ~165 Hakemisto 1199 Symbols 165, 1063! 147 -- 153, 759 #endif-direktiivi 14 #ifdef-direktiivi 14 #ifndef-direktiivi 14 #include 9 #include-direktiivi 17 & 165 && 143, 147 &&-operaattori 143 ( ) 755 (...) 354,

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

Soveltuvuustutkimus Lifebelt-ohjelman ideologian käytettävyydestä olioorientoituneeseen

Soveltuvuustutkimus Lifebelt-ohjelman ideologian käytettävyydestä olioorientoituneeseen Soveltuvuustutkimus Lifebelt-ohjelman ideologian käytettävyydestä olioorientoituneeseen ohjelmointiin Jukka Talvitie Valvoja: Professori Jorma Jormakka Paikka: TietoEnator oyj Ongelma Ideologia Lifebelt

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

- Komposiittityypit - Object (Mukaanlukien funktiot) - Array. - Erikoisdatatyypit - null - undefined

- Komposiittityypit - Object (Mukaanlukien funktiot) - Array. - Erikoisdatatyypit - null - undefined Ohjelmointitekniikka Tyyppiturvallisuuden tavoittelua Javascriptissa muuttujat ovat tyypittömiä, mutta arvoilla on tyyppi. Muuttuja esitellään var -avainsanalla ja muuttujan tyypin arvoa ei erikseen määritellä.

Lisätiedot

19/20: Ikkuna olio-ohjelmoinnin maailmaan

19/20: Ikkuna olio-ohjelmoinnin maailmaan Ohjelmointi 1 / syksy 2007 19/20: Ikkuna olio-ohjelmoinnin maailmaan Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007

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

1 Erilaisia tapoja järjestää

1 Erilaisia tapoja järjestää TIE-20100 Tietorakenteet ja algoritmit 1 1 Erilaisia tapoja järjestää Käsitellään seuraavaksi järjestämisalgoritmeja, jotka perustuvat muihin kuin vertailuun alkioiden oikean järjestyksen saamiseksi. Lisäksi

Lisätiedot

Java kahdessa tunnissa. Jyry Suvilehto

Java kahdessa tunnissa. Jyry Suvilehto Java kahdessa tunnissa Jyry Suvilehto Ohjelma Ohjelmointiasioita alkeista nippelitietoon n. 45 min Tauko 10 min Oliot, luokat ja muut kummajaiset n. 45 min Kysykää Sisältöä ei oikeasti ole 2x45 min täytteeksi,

Lisätiedot

Modulaarisessa ohjelmoinnissa jaetaan ohjelma osiin (moduuleihin), jotka ovat yksinkertaisia ja lyhyitä.

Modulaarisessa ohjelmoinnissa jaetaan ohjelma osiin (moduuleihin), jotka ovat yksinkertaisia ja lyhyitä. 3. Funktiot Modulaarisessa ohjelmoinnissa jaetaan ohjelma osiin (moduuleihin), jotka ovat yksinkertaisia ja lyhyitä. Modulaarisuudella pyritään parantamaan ohjelman ymmärrettävyyttä, testattavuutta sekä

Lisätiedot

Muodostinfunktiot, tuhoajafunktiot ja sijoitusoperaattorit

Muodostinfunktiot, tuhoajafunktiot ja sijoitusoperaattorit Muodostinfunktiot, tuhoajafunktiot ja sijoitusoperaattorit Muodostinfunktiot, tuhoajafunktiot ja sijoitusoperaattorit Melkein jokaisella kirjoittamallasi luokalla on yksi tai useampi muodostinfunktio,

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

4. Lausekielinen ohjelmointi 4.1

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

Lisätiedot

Asynkroninen ohjelmointi.net 4.5 versiolla

Asynkroninen ohjelmointi.net 4.5 versiolla Asynkroninen ohjelmointi.net 4.5 versiolla Jari Kallonen Software Specialist at Tieturi Oy Régis Laurent Director of Operations, Global Knowledge Competencies include: Gold Learning Silver System Management

Lisätiedot

2. Olio-ohjelmoinista lyhyesti 2.1

2. Olio-ohjelmoinista lyhyesti 2.1 2. Olio-ohjelmoinista lyhyesti 2.1 Sisällys Yleistä. Oliot ja luokat. Attribuutit. Olioiden esittely ja alustus. Rakentajat. Olion operaation kutsuminen. 2.2 Yleistä Olio-ohjelmointia käsitellään hyvin

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

Ohjelmoinnin perusteet Pythonilla. Teemu Sirkiä, 2015

Ohjelmoinnin perusteet Pythonilla. Teemu Sirkiä, 2015 Ohjelmoinnin perusteet Pythonilla Teemu Sirkiä, 2015 Päivitetty 16.9.2015 Yleistä Materiaali sisältää lähinnä Aalto-yliopiston Ohjelmoinnin peruskurssi Y1:n harjoitustehtävissä tarvittavia keskeisiä asioita

Lisätiedot

C# olio-ohjelmointi perusopas

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

Lisätiedot

Javascript 2: Ohjelmointikielen ominaisuudet. Jaana Holvikivi Metropolia

Javascript 2: Ohjelmointikielen ominaisuudet. Jaana Holvikivi Metropolia Javascript 2: Ohjelmointikielen ominaisuudet Jaana Holvikivi Metropolia HTML - sivun rakenne ja osiot HTML HEAD STYLE SCRIPT STYLEsheet Javascript file BODY Javascript

Lisätiedot

Lauseet. Ehdollinen lause. Tämän osan sisältö. Ehdollinen lause. Esimerkkejä. Yksinkertainen ehto. Lohkosulut ja sisennys. Ehdollinen lause if

Lauseet. Ehdollinen lause. Tämän osan sisältö. Ehdollinen lause. Esimerkkejä. Yksinkertainen ehto. Lohkosulut ja sisennys. Ehdollinen lause if 3 Lauseet Lue kirjasta s. 54-84 Tämän osan sisältö Ehdollinen lause if Looginen lauseke vertailut AND-operaattori &&, & OR-operaattori, NOT-operaattori! Valintalause switch Toistolauseet while for do while

Lisätiedot

Sisällys. 19. Olio-ohjelmointia Javalla. Yleistä. Olioiden esittely ja alustus

Sisällys. 19. Olio-ohjelmointia Javalla. Yleistä. Olioiden esittely ja alustus Sisällys 19. Olio-ohjelmointia Javalla Olioiden esittely ja alustus. Metodit Yleistä metodeista. Mihin metodeja tarvitaan? Metodien määrittely. Omat metodit: nimeäminen, paikka, kutsuminen, parametrit

Lisätiedot

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena Ohjelmointikielet ja -paradigmat 5op Markus Norrena Ko#tehtävä 4 Viimeistele "alkeellinen kuvagalleria". Käytännössä kaksi sivua Yksi jolla voi ladata kuvia palvelimelle (file upload) Toinen jolla ladattuja

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

TAITAJA 2007 ELEKTRONIIKKAFINAALI 31.01-02.02.07 KILPAILIJAN TEHTÄVÄT. Kilpailijan nimi / Nro:

TAITAJA 2007 ELEKTRONIIKKAFINAALI 31.01-02.02.07 KILPAILIJAN TEHTÄVÄT. Kilpailijan nimi / Nro: KILPAILIJAN TEHTÄVÄT Kilpailijan nimi / Nro: Tehtävän laatinut: Hannu Laurikainen, Deltabit Oy Kilpailutehtävä Kilpailijalle annetaan tehtävässä tarvittavat ohjelmakoodit. Tämä ohjelma on tehty laitteen

Lisätiedot