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

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

C++ Ohjelmoijan käsikirja. Hakemisto. #ifdef 394 #ifndef 394, 396 ympäristön tuki 396 koodi, monistamisen välttäminen

C++ Ohjelmoijan käsikirja. Hakemisto. #ifdef 394 #ifndef 394, 396 ympäristön tuki 396 koodi, monistamisen välttäminen Hakemisto Symbolit!, looginen NOT 127,129!=, vertailuoperaattori 111, 207 # operaattorin uudelleenmäärittely 534 esikäsittelijän komennot 383 merkkijonon korvaus, esikäsittelijän makrot 391 ## useammat

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

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

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

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

Lisätiedot

Ohjelman virheet ja poikkeusten käsittely

Ohjelman virheet ja poikkeusten käsittely Ohjelman virheet ja poikkeusten käsittely 17 Ohjelman virheet ja poikkeusten käsittely Poikkeukset ovat tapa ilmoittaa virheistä ja odottamattomista tilanteista C++-ohjelmassasi. Poikkeusten käyttö virheiden

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

Olio-ohjelmointi Syntaksikokoelma

Olio-ohjelmointi Syntaksikokoelma C++-kielen uusia ominaisuuksia Olio-ohjelmointi Syntaksikokoelma 31.10.2008 Bool-tietotyyppi: Totuusarvo true (1), jos ehto on tosi ja false (0) jos ehto epätosi. Dynaaminen muistinvaraus: Yhden muuttuja

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

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

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

C++11 lambdat: [](){} Matti Rintala

C++11 lambdat: [](){} Matti Rintala C++11 lambdat: [](){} Matti Rintala bool(*)(int) Tarve Tarve välittää kirjastolle/funktiolle toiminnallisuutta Callback-funktiot Virhekäsittely Käyttöliittymät Geneeristen kirjastojen räätälöinti STL:n

Lisätiedot

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

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

Lisätiedot

11/20: Konepelti auki

11/20: Konepelti auki Ohjelmointi 1 / syksy 2007 11/20: Konepelti auki Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/11 Tämän luennon

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

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

Algoritmit 1. Luento 4 Ke Timo Männikkö

Algoritmit 1. Luento 4 Ke Timo Männikkö Algoritmit 1 Luento 4 Ke 18.1.2017 Timo Männikkö Luento 4 Tietorakenteet Pino Pinon toteutus Jono Jonon toteutus Lista Listaoperaatiot Algoritmit 1 Kevät 2017 Luento 4 Ke 18.1.2017 2/29 Pino Pino, stack,

Lisätiedot

C++11 Syntaksi. Jari-Pekka Voutilainen Jari-Pekka Voutilainen: C++11 Syntaksi

C++11 Syntaksi. Jari-Pekka Voutilainen Jari-Pekka Voutilainen: C++11 Syntaksi 1 C++11 Syntaksi Jari-Pekka Voutilainen 13.4.2012 2 Range-for Iteroi säiliön kaikki alkiot for-silmukassa. Säiliöltä vaaditaan begin- ja end-iteraattorit. Pätee kaikille C++11 STL-säiliöille, taulukoille,

Lisätiedot

Luokat. Luokat ja olio-ohjelmointi

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

Lisätiedot

Ohjelmoinnin perusteet Y Python

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

Lisätiedot

7. Oliot ja viitteet 7.1

7. Oliot ja viitteet 7.1 7. Oliot ja viitteet 7.1 Sisällys Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen. Viitteiden sijoitus. Viitteiden vertailu. Varautuminen null-arvoon. Viite metodin paluuarvona. Viite metodin

Lisätiedot

Sisällys. 7. Oliot ja viitteet. Olion luominen. Olio Java-kielessä

Sisällys. 7. Oliot ja viitteet. Olion luominen. Olio Java-kielessä Sisälls 7. Oliot ja viitteet Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen.. Viitteiden vertailu. Varautuminen null-arvoon. Viite metodin paluuarvona.. Muuttumattomat ja muuttuvat merkkijonot.

Lisätiedot

Moduli 4: Moniulotteiset taulukot & Bittioperaatiot

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

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

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

Lisätiedot

Ohjelmointi 1 Taulukot ja merkkijonot

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

Lisätiedot

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

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

Lisätiedot

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

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

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

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 4 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 4 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 4 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten lauseisiin, lausekkeisiin ja aliohjelmiin liittyvät kysymykset. Tehtävä 1. Mitä

Lisätiedot

815338A Ohjelmointikielten periaatteet

815338A Ohjelmointikielten periaatteet 815338A Ohjelmointikielten periaatteet 2015-2016 V Abstraktit tietotyypit ja olioohjelmointi Sisältö I. Abstraktit tietotyypit II. 1. Johdatus abstrakteihin tietotyyppeihin 2. Abstraktit tietotyypit Adassa

Lisätiedot

Sisältö. 2. Taulukot. Yleistä. Yleistä

Sisältö. 2. Taulukot. Yleistä. Yleistä Sisältö 2. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.1 2.2 Yleistä

Lisätiedot

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma. 2. Taulukot 2.1 Sisältö Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.2 Yleistä

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

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

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

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

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

Lisätiedot

Ohjelmoinnin 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

Luokassa määriteltävät jäsenet ovat pääasiassa tietojäseniä tai aliohjelmajäseniä. Luokan määrittelyyn liittyvät varatut sanat:

Luokassa määriteltävät jäsenet ovat pääasiassa tietojäseniä tai aliohjelmajäseniä. Luokan määrittelyyn liittyvät varatut sanat: 1. Luokan jäsenet Luokassa määriteltävät jäsenet ovat pääasiassa tietojäseniä tai aliohjelmajäseniä. Luokan määrittelyyn liittyvät varatut sanat: class luokan_nimi tyypit: enum, struct, class, typedef

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

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

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

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

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

Lisätiedot

Java-kielen perusteet

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

Lisätiedot

12. Näppäimistöltä lukeminen 12.1

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

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

Ohjelmointi funktioiden avulla

Ohjelmointi funktioiden avulla Ohjelmointi funktioiden avulla 8 Ohjelmointi funktioiden avulla Ohjelman jakaminen hallittaviin osiin on idea, joka on perustana kaikille ohjelmointikielille. Funktio on kaikkien C++-ohjelmien perusosa.

Lisätiedot

Ohjelmointiharjoituksia Arduino-ympäristössä

Ohjelmointiharjoituksia Arduino-ympäristössä Ohjelmointiharjoituksia Arduino-ympäristössä Yleistä Arduino-sovelluksen rakenne Syntaksi ja käytännöt Esimerkki ohjelman rakenteesta Muuttujat ja tietotyypit Tietotyypit Esimerkkejä tietotyypeistä Ehtolauseet

Lisätiedot

Tietorakenteet ja algoritmit syksy Laskuharjoitus 1

Tietorakenteet ja algoritmit syksy Laskuharjoitus 1 Tietorakenteet ja algoritmit syksy 2012 Laskuharjoitus 1 1. Tietojenkäsittelijä voi ajatella logaritmia usein seuraavasti: a-kantainen logaritmi log a n kertoo, kuinka monta kertaa luku n pitää jakaa a:lla,

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

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

TAMPEREEN TEKNILLINEN YLIOPISTO

TAMPEREEN TEKNILLINEN YLIOPISTO TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja Tietokonetekniikan laitos TKT-3200 Tietokonetekniikka ASSEMBLER: QSORT 06.09.2005 Ryhmä 00 nimi1 email1 opnro1 nimi2 email2 opnro2 nimi3 email3 opnro3 1. TEHTÄVÄ

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

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

Javan perusteita. Janne Käki

Javan perusteita. Janne Käki Javan perusteita Janne Käki 20.9.2006 Muutama perusasia Tietokone tekee juuri (ja vain) sen, mitä käsketään. Tietokone ymmärtää vain syntaksia (sanojen kirjoitusasua), ei semantiikkaa (sanojen merkitystä).

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

Dynaaminen muisti. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät 2017.

Dynaaminen muisti. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät 2017. C! Dynaaminen muisti 9.2.2017 Agenda Kertausta merkkijonoista Dynaaminen muisti Valgrind-perusteet ja esimerkkejä Seuraava luento to 2.3. Ei harjoituksia arviointiviikolla 13.2. 17.2. 2 Palautetta merkkijonoihin

Lisätiedot

Common Lisp Object System

Common Lisp Object System Common Lisp Object System Seminaarityö Tomi Vihtari Ohjelmointikielten periaatteet kevät 2004 Helsingin Yliopisto Tietojenkäsittelytieteen laitos Järvenpää 5. huhtikuuta 2004 Sisältö 1 Johdanto... 1 2

Lisätiedot

Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat ja operaatiot

Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat ja operaatiot 3. Muuttujat ja operaatiot Sisällys Muuttujat. Nimi ja arvo. Algoritmin tila. Muuttujan nimeäminen. Muuttujan tyyppi. Muuttuja ja tietokone. Operaattorit. Operandit. Arvon sijoitus muuttujaan. Aritmeetiikka.

Lisätiedot

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet 811120P Diskreetit rakenteet 2016-2017 1. Algoritmeista 1.1 Algoritmin käsite Algoritmi keskeinen laskennassa Määrittelee prosessin, joka suorittaa annetun tehtävän Esimerkiksi Nimien järjestäminen aakkosjärjestykseen

Lisätiedot

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista Sisällys 1. Omat operaatiot Yleistä operaatioista. Mihin operaatioita tarvitaan? Oman operaation määrittely. Yleisesti, nimeäminen ja hyvä ohjelmointitapa, määreet, parametrit ja näkyvyys. HelloWorld-ohjelma

Lisätiedot

Objective-C. Ryhmä 35: Ilpo Kärki Aleksi Pälä

Objective-C. Ryhmä 35: Ilpo Kärki Aleksi Pälä Objective-C Ryhmä 35: Ilpo Kärki Aleksi Pälä Sisällysluettelo 1 Yleistä...3 1.1 Lyhyesti...3 1.2 Historiaa...3 1.3 Hybridikieli...3 2 Muistinhallinta...5 2.1 Manual Retain Release (MRR)...5 2.2 Automatic

Lisätiedot

815338A Ohjelmointikielten periaatteet

815338A Ohjelmointikielten periaatteet 815338A Ohjelmointikielten periaatteet 2015-2016 VIII Poikkeusten ja tapahtumien käsittely Sisältö 1. Poikkeusten käsittelyn käsitteitä ja suunnittelukriteerejä 2. Poikkeusten käsittely C++:ssa 3. Poikkeusten

Lisätiedot

Mathematica Sekalaista asiaa

Mathematica Sekalaista asiaa Mathematica Sekalaista asiaa Asetusoperaattorit Mathematicassa voi käyttää omia muuttujasymboleja melko rajattomasti ja niiden nimeämisessä voi käyttää miltei mitä tahansa merkkejä. Käytännössä nimeämisessä

Lisätiedot

Sisällys. JAVA-OHJELMOINTI Osa 6: Periytyminen ja näkyvyys. Luokkahierarkia. Periytyminen (inheritance)

Sisällys. JAVA-OHJELMOINTI Osa 6: Periytyminen ja näkyvyys. Luokkahierarkia. Periytyminen (inheritance) Sisällys JAVA-OHJELMOINTI Osa 6: Periytyminen ja näkyvyys Periytyminen (inheritance) Näkyvyys (visibility) Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto 13.10.2000 E. Hyvönen: Java Osa

Lisätiedot

1. Omat operaatiot 1.1

1. Omat operaatiot 1.1 1. Omat operaatiot 1.1 Sisällys Yleistä operaatioista. Mihin operaatioita tarvitaan? Oman operaation määrittely. Yleisesti, nimeäminen ja hyvä ohjelmointitapa, määreet, parametrit ja näkyvyys. HelloWorld-ohjelma

Lisätiedot

PERL. TIE Principles of Programming Languages. Ryhmä 4: Joonas Lång & Jasmin Laitamäki

PERL. TIE Principles of Programming Languages. Ryhmä 4: Joonas Lång & Jasmin Laitamäki PERL TIE-20306 Principles of Programming Languages Ryhmä 4: Joonas Lång & Jasmin Laitamäki 1. Johdanto Perl on ohjelmointikielten perhe, johon kuuluu Perl 5 ja Perl 6. Kielet ovat kuitenkin erilliset ohjelmointikielet

Lisätiedot

Groovy. Niko Jäntti Jesper Haapalinna Group 31

Groovy. Niko Jäntti Jesper Haapalinna Group 31 Groovy Niko Jäntti Jesper Haapalinna Group 31 Johdanto Groovy on Apachen kehittämä Javaan perustuva dynaaminen oliopohjainen ohjelmointikieli. Kielen kehitys alkoi vuonna 2003, versio 1.0 julkaistiin 2007

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

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. II Johdanto olio-ohjelmointiin

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. II Johdanto olio-ohjelmointiin 812347A Olio-ohjelmointi, 2015 syksy 2. vsk II Johdanto olio-ohjelmointiin Sisältö 1. Abstraktiosta 2. Olio-ohjelmoinnin historiaa 3. Olioparadigmasta 4. Peruskäsitteiden esittely 2 II.1 Abstraktiosta

Lisätiedot

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit Tietorakenteet ja algoritmit Pino Pinon määritelmä Pinon sovelluksia Järjestyksen kääntäminen Palindromiprobleema Postfix-lausekkeen laskenta Infix-lausekkeen muunto postfix-lausekkeeksi Sisäkkäiset funktiokutsut

Lisätiedot

12. Javan toistorakenteet 12.1

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

Lisätiedot

TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 27. lokakuuta 2009

TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 27. lokakuuta 2009 TIE448 Kääntäjätekniikka, syksy 2009 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 27. lokakuuta 2009 Sisällys Sisällys Seuraava deadline Vaihe D tiistai 10.11. klo 10 välikielen generointi Kääntäjän rakenne

Lisätiedot

Metodit Arvotyyppi. Metodit Arvotyyppi. Metodit Parametrit. Metodit Parametrit. Metodit Kuormittaminen. Metodit Kuormittaminen. Javan perusteet

Metodit Arvotyyppi. Metodit Arvotyyppi. Metodit Parametrit. Metodit Parametrit. Metodit Kuormittaminen. Metodit Kuormittaminen. Javan perusteet Metodit Arvotyyppi Ellei metodi palauta arvoa, sen arvotyyppi on void Tällöin return; -lauseke ei ole metodissa pakollinen, vaikka sen käyttö on sallittua Metodi voi palauttaa alkeistyypin tai olion Tällöin

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

D-OHJELMOINTIKIELI. AA-kerho, 33. Antti Uusimäki. Arto Savolainen

D-OHJELMOINTIKIELI. AA-kerho, 33. Antti Uusimäki. Arto Savolainen D-OHJELMOINTIKIELI AA-kerho, 33 Antti Uusimäki Arto Savolainen 2 D-OHJELMOINTIKIELI D-kielen historia alkaa vuodesta 1999, kun Walter Bright aloitti uuden ohjelmointikielen kehittämisen. Ensimmäinen versio

Lisätiedot

Bootstrap / HTDP2 / Realm of Racket. Vertailu

Bootstrap / HTDP2 / Realm of Racket. Vertailu Bootstrap / HTDP2 / Realm of Racket Vertailu Bootstrap http://www.bootstrapworld.org/ Tarkoitettu yläkoululaisille (12-15v) Ohjelmointi on integroitu matematiikan opetukseen Materiaalina tuntisuunnitelmat

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

ADA. Ohjelmointikieli. Ryhmä 5 Henna Olli, Päivi Hietanen

ADA. Ohjelmointikieli. Ryhmä 5 Henna Olli, Päivi Hietanen ADA Ohjelmointikieli Ryhmä 5 Henna Olli, Päivi Hietanen 1 JOHDANTO Ada on käännettävä ohjelmointikieli, joka kehitettiin vähentämään sulautettujen ja reaaliaikaisten järjestelmien käyttökustannuksia. Kieli

Lisätiedot

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

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

Lisätiedot

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

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

Lisätiedot

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

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen Ohjelmointitaito (ict1td002, 12 op) Kevät 2009 Raine Kauppinen raine.kauppinen@haaga-helia.fi 1. Java-ohjelmoinnin alkeita Tietokoneohjelma Java-kieli ja Eclipse-kehitysympäristö Java-ohjelma ja luokka

Lisätiedot

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

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

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

\+jokin merkki tarkoittaa erikoismerkkiä; \n = uusi rivi.

\+jokin merkki tarkoittaa erikoismerkkiä; \n = uusi rivi. 1. Johdanto 1.1 Yleistä Suurten ohjelmien organisointi vaikeaa C:ssä. 1980 Stroustrup lisäsi C:hen olio-ohjelmoinnin (OOP = Object Oriented Programming). C C++: C-ohjelma on (muutamia poikkeuksia lukuunottamatta)

Lisätiedot

17. Ohjelmoinnin tekniikkaa 17.1

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

Lisätiedot

Euroopan unionin neuvosto Bryssel, 11. toukokuuta 2016 (OR. en)

Euroopan unionin neuvosto Bryssel, 11. toukokuuta 2016 (OR. en) Euroopan unionin neuvosto Bryssel, 11. toukokuuta 2016 (OR. en) 8823/16 ENER 146 ENV 279 SAATE Lähettäjä: Euroopan komissio Saapunut: 10. toukokuuta 2016 Vastaanottaja: Kom:n asiak. nro: D044838/02 Asia:

Lisätiedot

11. Javan toistorakenteet 11.1

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

Lisätiedot

7/20: Paketti kasassa ensimmäistä kertaa

7/20: Paketti kasassa ensimmäistä kertaa Ohjelmointi 1 / syksy 2007 7/20: Paketti kasassa ensimmäistä kertaa 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 15.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 15.2.2010 1 / 46 Merkkijonot Merkkijonojen avulla ohjelmassa voi esittää tekstitietoa, esim. nimiä, osoitteita ja

Lisätiedot

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100 Tiedonsiirtokäskyt LOAD LOAD-käsky toimii jälkimmäisestä operandista ensimmäiseen. Ensimmäisen operandin pitää olla rekisteri, toinen voi olla rekisteri, vakio tai muistiosoite (myös muuttujat ovat muistiosoitteita).

Lisätiedot

Ohjelmointi 1 / syksy /20: IDE

Ohjelmointi 1 / syksy /20: IDE Ohjelmointi 1 / syksy 2007 10/20: IDE Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/8 Tämän luennon rakenne

Lisätiedot

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

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

Lisätiedot

6. Muuttujat ja Java 6.1

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

Lisätiedot

Algoritmit 1. Luento 2 Ke Timo Männikkö

Algoritmit 1. Luento 2 Ke Timo Männikkö Algoritmit 1 Luento 2 Ke 11.1.2017 Timo Männikkö Luento 2 Algoritmin esitys Algoritmien analysointi Suoritusaika Asymptoottinen kertaluokka Peruskertaluokkia NP-täydelliset ongelmat Algoritmit 1 Kevät

Lisätiedot

Java-kielen perusteet

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

Lisätiedot

Matriisit ovat matlabin perustietotyyppejä. Yksinkertaisimmillaan voimme esitellä ja tallentaa 1x1 vektorin seuraavasti: >> a = 9.81 a = 9.

Matriisit ovat matlabin perustietotyyppejä. Yksinkertaisimmillaan voimme esitellä ja tallentaa 1x1 vektorin seuraavasti: >> a = 9.81 a = 9. Python linkit: Python tutoriaali: http://docs.python.org/2/tutorial/ Numpy&Scipy ohjeet: http://docs.scipy.org/doc/ Matlabin alkeet (Pääasiassa Deni Seitzin tekstiä) Matriisit ovat matlabin perustietotyyppejä.

Lisätiedot

16. Ohjelmoinnin tekniikkaa 16.1

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

Lisätiedot

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

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

Lisätiedot