812347A Olio-ohjelmointi, 2015 syksy 2. vsk. I Johdanto ohjelmointiin C++kielellä

Koko: px
Aloita esitys sivulta:

Download "812347A Olio-ohjelmointi, 2015 syksy 2. vsk. I Johdanto ohjelmointiin C++kielellä"

Transkriptio

1 812347A Olio-ohjelmointi, 2015 syksy 2. vsk I Johdanto ohjelmointiin C++kielellä

2 Sisältö 1. C++-kielen lyhyt historia 2. C++-kielen ominaisuuksia tiivistettynä 3. Peruskäsitteitä 4. C++-ohjelman looginen rakenne 5. Ohjelmatiedostot 6. Tietotyypit 7. Muuttujat 8. Perus I/O 9. Funktiot ohjelmointiin C++-kielellä 2

3 I.1 C++-kielen lyhyt historia 1980 C with classes kielen ensimmäinen versio Bjarne Stroustrup, AT&T Bell Laboratories 1983 C++ Nimen keksi Rick Mascitti Käyttöön AT&T:n ulkopuolella 1989 C Uusia ominaisuuksia moniperiytyminen, parametrisoidut tyypit ja poikkeusten käsittely 1997 C++:lle ISO-standardi Sisältää kielen ja standardikirjaston (STL) Uusin versio standardista C++14 ohjelmointiin C++-kielellä 3

4 I.2 C++-kielen ominaisuuksia tiivistettynä Standardoitu ohjelmointikieli Tukee suoraan useita eri ohjelmointiparadigmoja Proseduraalinen ohjelmointi Modulaarinen ohjelmointi Olio-ohjelmointi Geneerinen ohjelmointi Perustuu C-ohjelmointikieleen Voidaan käyttää olemassa olevia C-kielen kirjastoja ohjelmointiin C++-kielellä 4

5 I.2 C++-kielen ominaisuuksia tiivistettynä (2) Moniperiytyminen Template-mekanismi on täydellinen ohjelmointikieli Voidaan tehdä monimutkaisia suunnitteluratkaisuja jo käännösaikana Ohjelmoijan muodostamat tyypit eivät eroa millään tavoin sisäisistä tyypeistä Operaattoreiden ylikuormitus ohjelmointiin C++-kielellä 5

6 I.2 C++-kielen ominaisuuksia tiivistettynä (3) Rinnakkaisuuden tuki (Concurrency) Uusimmassa versiossa (C++11) suora tuki säikeille (Threads) Ei tukea moniprosessointiin (Multi-Processing) Säännöllisten ilmausten tuki Uusimmassa versiossa (C++11) Ei automaattista roskien keruuta Ohjelmoijan vapautettava kekodynaaminen muisti Ei suoraa tukea tiedon pysyvyyteen (Persistence) Toteuttamiseen olemassa kirjastoja ohjelmointiin C++-kielellä 6

7 I.3 Peruskäsitteitä : I.3.1 Entiteetti C++ ohjelman osa, jolla on nimi ja tyyppi Nimiavaruus (namespace) Tietue (struct) Luokka (class) Funktio (function) Muuttuja (variable) Vakio (const) ohjelmointiin C++-kielellä 7

8 I.3.2 Lohko Yksi lausekielten peruskäsitteitä Määrää rajat ohjelman entiteettien olemassaololle C++:n lohkotyypit Ohjelma Nimiavaruus Luokka Funktio Lohko { } sulkeiden välissä oleva alue ohjelmointiin C++-kielellä 8

9 I.3.3 Esittely ja tyyppi Jokainen ohjelman entiteetti esiteltävä ennen käyttöä Jos entiteettiä käytetään, pitää myös määritellä Esittelyn yhteydessä entiteetille sidotaan tyyppi Tyyppi määrittelee entiteetille sallitut operaatiot Tyyppi määrittelee kuinka tietokoneen muistia tulkitaan ajonaikana T float ohjelmointiin C++-kielellä 9

10 I.3.4 Määrittely Entiteetti esitellään ja samalla liitetään siihen toteutus Jokainen käytettävä entiteetti pitää määritellä täsmälleen kerran Muuten viimeistään linkittäjä antaa virheilmoituksen Voimassa siinä lohkossa, jossa määritys tapahtuu Määrittelyn ja esittelyn vastattava täsmälleen toisiaan ohjelmointiin C++-kielellä 10

11 I.4 C++-ohjelman looginen rakenne Koostuu yleensä vähintään kolmesta lohkosta Ohjelma eli globaalinen lohko main funktio (pääohjelma) std nimiavaruus (jos käytetään std kirjastoa) Mahdolliset muut nimiavaruudet, esimerkiksi boostkirjaston boost-nimiavaruus ohjelmointiin C++-kielellä 11

12 I.4.1 Nimiavaruudet Loogisia ohjelman osia sitovia kokonaisuuksia Työkaluja suurten ohjelmistojen ja ohjelmakirjastojen hallintaan Mahdollistavat samannimiset entiteetit esimerkiksi eri toimittajilta hankituista kirjastoista Tällä kurssilla käytetään vain std-nimiavaruutta Ovat avoimia: niihin voi lisätä entiteettejä useassa eri tilanteessa std-nimiavaruus Suljettu: sisältää standardissa määritellyt entiteetit ohjelmointiin C++-kielellä 12

13 I.4.2 Pääohjelma C++-ohjelman suoritus alkaa aina funktiosta main Kutsutaan automaattisesti Funktion tyyppi aina int Kaksi muotoa int main () int main (int argc, char** argv) Jos main -funktiossa ei ole return -lausetta kääntäjä olettaa paluuarvoksi nollan ohjelmointiin C++-kielellä 13

14 I.4.2 Pääohjelma (2) main-funktio ilman parametreja: #include <iostream> #include <string> using namespace std; int main() { cout << Anna nimesi: ; string nimi; getline(cin, nimi); cout << Onko ohjelmointi hauskaa << nimi <<? << endl; } return 0; ohjelmointiin C++-kielellä 14

15 I.4.2 Pääohjelma (3) main-funktio parametreilla #include <iostream> #include <string> int main(int argc, char** argv) { using namespace std; cout << Käynnistysparametrien lukumäärä on: << argc << endl; cout << Ohjelman nimi on: << argv[0] << endl; for (int i = 1; i < argc; ++i){ cout << Parametri << i << on << argv[i] << endl; } } ohjelmointiin C++-kielellä 15

16 I.5 Ohjelmatiedostot: I.5.1 Otsikkotiedostot Päätarkoitus: Tarjota entiteetin eri käyttäjille yhtenäinen esittely ja estää moninkertaiset esittelyt Sisällytetään esikääntäjän käskyllä #include Vältä sisällyttämästä toista otsikkotiedostoa toiseen otsikkotiedostoon Usein kuitenkin pakko tehdä Otsikkotiedostoissa ei tule koskaan esiintyä Funktioiden määrityksiä Muuttujien määrityksiä ohjelmointiin C++-kielellä 16

17 I.5.1 Otsikkotiedostot (2) #ifndef INCLUDED_OTSIKKOTIEDOSTON_NIMI_H #define INCLUDED_OTSIKKOTIEDOSTON_NIMI_H /* * OtsikkoTiedosto.h * -- Muut tiedostokommentin kentät */ // // Esittelyt ja määritykset // INCLUDE-VAHTI #endif // not def. INCLUDED_OTSIKKOTIEDOSTON_NIMI_H ohjelmointiin C++-kielellä 17

18 I.5.2 Lähdekooditiedostot Ohjelman eri entiteettien määrittely pääsääntöisesti Funktion määrittely on sen toteutus Yhden entiteetin määrittely yhdessä lähdetiedostossa Laajat määritykset voidaan hajottaa useampaan tiedostoon Pienemmät objektitiedostot Nopeammat käännösajat ohjelmointiin C++-kielellä 18

19 I.6 Tietotyypit C++:n tietotyypit jaetaan kolmeen ryhmään 1. Primitiiviset tyypit (perustietotyypit) 2. Johdetut tyypit 3. Luokkatyypit ohjelmointiin C++-kielellä 19

20 I.6.1 Primitiiviset tietotyypit Sisäänrakennettuja tietotyyppejä Ei määritellä muiden tyyppien avulla Primitiiviset tyypit char short, int, long, long long bool float, double, long double void - Merkki, tavu - Kokonaisluvut - Totuusarvo (false, true) - Reaaliluvut - Näennäistyypi Kokonaislukutyypit ohjelmointiin C++-kielellä 20

21 I.6.2 Primitiivisten tyyppien koko C++:n standardissa ei ole täsmällisesti määritelty primitiivityyppien kokoja short >= 16b, long >= 32b, C++11: long long >= 64b Tyypin koon tavuissa saa selville sizeof -operaattorilla Yleensä char -tyyppi on yhden tavun kokoinen Muille tyypeille standardissa sizeof (char) <= sizeof (short) <= sizeof(int) <= sizeof (long) <= sizeof (long long) sizeof(float) <= sizeof (double) <= sizeof(long double) ohjelmointiin C++-kielellä 21

22 I.6.3 Näennäistyyppi void void == tyhjä, ei-mitään Ei varsinainen tyyppi, koska sen avulla ei voida muodostaa muuttujaa Käytetään kun määritellään funktiota, joka ei palauta paluuarvoa void myfunc(); // funktio ei palauta mitään Voidaan käyttää tyypittömän osoitinmuuttujan määrittelemiseen. void* -- osoitin johonkin ohjelmointiin C++-kielellä 22

23 I.6.4 typedef Mekanismi tarjoaa keinon esitellä synonyymejä sisäisille tai muille tyypeille Uusi tyyppi on alias, uusi nimi vanhalle tyypille Käytetään usein, kun oikea tyyppi on epämiellyttävän mutkikas Esim. typedef int Ika; int pekanika=12,yhteensa; Ika maijanika=11; yhteensa = pekanika + maijanika; ohjelmointiin C++-kielellä 23

24 I.6.5 Johdetut tyypit Primitiivityypeistä johdetut tyypit 1. Vakiot 2. Viittaukset 3. Osoittimet 4. Taulukot 5. Aliohjelmat (funktiot) ohjelmointiin C++-kielellä 24

25 I Vakiot Muuttuja määritellään vakiotyyppiseksi lisäämällä määrityksen alkuun ennen muuttujan nimeä avainsana const. Arvoa ei voida muuttaa alustuksen jälkeen const int monthsinyear = 12; ohjelmointiin C++-kielellä 25

26 I Viittaukset Sekä viittaukset että osoittimet viittaavat muistipaikkaan Viittaukset sidotaan määrityksen yhteydessä (ei voi muuttaa suorituksen aikana) Osoittimet voivat muuttaa kohdettaan suorituksen aikana Viittaustyyppimääritys koostuu tyypistä ja &-merkistä ennen muuttujan nimeä Käytetään yleisesti vakioviittausparametrina suurten olioiden välittämiseen funktioille ohjelmointiin C++-kielellä 26

27 I Viittaukset (2) Esimerkki int original = 1; int& reference = original; reference = 8; // original == 8 cout << reference; // tulostaa muuttujan // original arvon reference = 10; //original == 10 ohjelmointiin C++-kielellä 27

28 I Osoittimet Osoitintyypin määritys koostuu tyypistä ja *-merkistä ennen muuttujan tai funktion nimeä. Osoittimen arvo on muuttujan, olion tai funktion osoite Tyypillisiä käyttökohteita: linkitettyjen tietorakenteiden luominen, dynaamisesti kekomuistista (heap) varattujen olioiden hallinta ja funktioiden parametrityyppinä pääasiassa taulukoiden ja suurten olioiden välittäminen Osoittimien käyttö on virhealtista! Suosi aina viittausta (&) jos voit Tarkista osoittimet ja huolehdi että osoittavat validiin kohteisiin tai että arvo on nolla! ohjelmointiin C++-kielellä 28

29 I Osoittimet (2) Esimerkki int original = 1; int* pointer = &original; *pointer = 8; // original == 8 cout << pointer; // tulostaa muuttujan // original osoitteen cout << *pointer; // tulostaa muuttujan // original arvon pointer = 0; // Ei osoita enää mihinkään, // ei voida käyttää ohjelmointiin C++-kielellä 29

30 I Taulukko Kokoelma samantyyppisiä olioita Voidaan alustaa eksplisiittisesti pilkuin erotellulla arvolistan avulla, joka on aaltosulkujen sisällä Ei ole mahdollista Alustaa taulukkoa suoraan toisen taulukon arvoilla Sijoittaa taulukkoa toiseen taulukkoon Tehdä taulukkoa, jonka alkioiden tyyppi on viittaus Välitetään funktioon aina osoittimena taulukon ensimmäiseen alkioon Indeksiarvoja ei tarkisteta ajon aikana! Usein kannattaa käyttää STL - kirjaston säiliöitä taulukoiden asemasta ohjelmointiin C++-kielellä 30

31 I Taulukko (2): Esimerkkejä int kuukausienpaivat[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; int marraskuunpvat = kuukausienpaivat[10]; char nimi[50]; const int MAX_NIMI = 50; struct person { }; char nimi[max_nimi]; int ika; person persons[10]; persons[5].ika = 39; ohjelmointiin C++-kielellä 31

32 I Taulukko (3) : Merkkitaulukko Alkiot merkkityyppisiä C-kielessä merkkijonot ovat merkkitaulukkoja, joiden viimeisenä merkkinä on nolla-merkki C++-kielessä merkkijonoa mallintaa standardikirjaston string luokka Älä käytä merkkitaulukkoa merkkijonon esittämiseen! ohjelmointiin C++-kielellä 32

33 I.7 Muuttujat Muuttujamääritys voi olla lohkossa missä kohdassa tahansa Muuttujamääritys koostuu tyypistä, nimestä ja alustuslausekkeesta Globaalit muuttujat alustetaan automaattisesti tyypin nolla-arvoon Muiden kuin globaalien muuttujien arvot pitää alustaa eksplisiittisesti Jos ei alustettu, arvo satunainen ohjelmointiin C++-kielellä 33

34 I.7.1 Muuttujan elinikä Aika muistinvarauksesta muistin vapauttamiseen C++:ssa eliniältään kolmentyyppisiä muuttujia 1. Staattiset (static) varataan muistialueen globaalista osasta 2. Automaattiset (pinodynaamiset) varataan pinomuistista (stack) 3. Kekodynaamiset varataan ohjelmoijan toimesta kekomuistista (heap) ohjelmointiin C++-kielellä 34

35 I Staattiset muuttujat Muuttujat, jotka määritelty staattisiksi static - lisämääreen avulla Voivat olla funktion paikallisia muuttujia Globaalit muuttujat Luodaan ja alustetaan ohjelman käynnistämisen yhteydessä tai ensimmäisen määrityksen yhteydessä int myglobalint; void myfunc(int aparam) { static int mystaticint;... ohjelmointiin C++-kielellä 35

36 I Pinodynaamiset muuttujat Paikalliset muuttujat (ellei static-määrettä) ja funktioiden parametrit Kääntäjä varaa pinosta muuttujalle tilan määrittelyn yhteydessä ja vapauttaa sen kun määrityslohko päättyy void myfunc(int aparam) { int totalcount;... } // muuttuja totalcount hävitetty ohjelmointiin C++-kielellä 36

37 I Kekodynaamiset muuttujat Kekodynaamisen muuttujan elinikä täysin ohjelmoijan määrittelemä Muuttuja varataan keosta operaattorilla new ja vapautetaan operaattorilla delete int * allocheapint(void) { return new int; }... int * x = allocheapint();... delete x; // Tehtävä muistivuodon välttämiseksi!! ohjelmointiin C++-kielellä 37

38 I.8 Perus I/O Syöttö- ja tulostustoimenpiteet tehdään iostreamkirjaston avulla Oliokeskeinen luokkahierarkia Sisältyy C++ -standardikirjastoon IOStream - kirjasto laajennettavissa ohjelmoijan omiin tyyppeihin Älä käytä C-kielen tyylisiä muotoilumerkkijonoparametreja printf( %d, %s, intvar,charstringvar); ohjelmointiin C++-kielellä 38

39 I.8.1 Standardivirtaoliot Syöttö- ja tulostusoperaatiot on toteutettu istream- (syöttövirta) ja ostream-(tulostusvirta) luokkiin. Standardin määrittelemät virrat: cin (istream) edustaa vakiosyöttöä, joka on yleensä sidottu tietokoneen näppäimistöön cout (ostream) edustaa vakiotulostusta, joka on yleensä sidottu tietokoneen konsoli-ikkunaan cerr (ostream) edustaa vakiovirhetulostusta, joka on yleensä sidottu samaan kuin cout-olio clog (ostream) edustaa vakiolokitulostusta, joka on yleensä sidottu samaan kuin cerr-olio ohjelmointiin C++-kielellä 39

40 Esimerkki #include <iostream> #include <string> int main() { int i = 0; double f = 0; char ch = \000 ; } string str = ; cin >> i; // luetaan kokonaisluku esim. 1 cin >> f; // luetaan reaaliluku esim. 1.5 cin >> ch; // luetaan merkki esim. 1 cin >> str; // luetaan merkkijono esim. 0x1.5 ohjelmointiin C++-kielellä 40

41 I.8.2 Virhetilanteet I/O:ssa Virhetilanteissa asetetaan failbit jonka arvo voidaan lukea jäsenfunktiolla fail() Virhetilassa olevaa virtaan ei voida kirjoittaa eikä sitä voida lukea Virhelipun voi tyhjentää jäsenfunktiolla clear() Jäsenfunktiolla good() voidaan tarkistaa onko virta toimintakuntoinen Lisää I/O:sta myöhemmin ohjelmointiin C++-kielellä 41

42 Esimerkki:Syötteen tarkistus #include <iostream> #include <string> int main() { int luku = 0; int lukuja = 0; long summa = 0; do{ summa += luku; cin >> luku; if (!cin.fail()) lukuja++; } while (!cin.fail()); } cout << Syötettyjen lukujen keskiarvo on ; cout << setprecision(2) << static_cast<double>(summa) / lukuja; ohjelmointiin C++-kielellä 42

43 Esimerkki: Kokonaisen rivin lukeminen #include <iostream> #include <string> int main() { string nimi; cout << Anna nimesi: ; string nimi; getline(cin, nimi); cout << Onko ohjelmointi hauskaa << nimi <<? << endl; } return 0; ohjelmointiin C++-kielellä 43

44 I.9 Funktiot Funktion esittelylause (prototyyppi) koostuu Palautusarvon tyypistä Funktion nimestä Sulkeiden sisällä olevasta parametrien tyyppiluettelosta, jossa parametrien tyypit ovat pilkulla erotettuna toisistaan. Lauseen päättävästä puolipisteestä Esimerkki int summa(int n, int k); ohjelmointiin C++-kielellä 44

45 I.9 Funktiot (2) Funktion määrittely koostuu Prototyypistä (ilman puolipistettä) Funktion rungosta, joka on määritelty lohkona Esimerkki int summa(int n, int k){ return (n+k); } Määrittelyn ja esittelyn on vastattava toisiaan Parametrit ovat funktion paikallisia automaattisia muuttujia ohjelmointiin C++-kielellä 45

46 I.9.1 Parametrien välitys funktiolle C++ tukee kahdenlaista parametrien välitystä Arvoparametrit Viittausparametrit Arvoparametrivälityksessä välitetään parametrin arvo funktiolle, jolloin parametriin tehdyt muutokset jäävät kutsuttavan funktion muuttujaan Viittausvälityksessä välitetään parametrina olevan muuttujan osoite, jolloin siihen tehdyt muutokset välittyvät kutsuvan funktion muuttujaan C++:ssa oletusvälitys on arvoparametrivälitys ohjelmointiin C++-kielellä 46

47 I Arvoparametrit Arvoparametri C++:ssa määritellään antamalla parametrille tyyppi, joka ei ole viittaustyyppinen Parametrista tulee funktion paikallinen muuttuja, jonka elinikä alkaa kun funktiota kutsutaan ja päättyy kun funktiosta palataan. Yleensä kielen sisäiset tyypit kannattaa välittää arvoparametrina ja muut tyypit (tietorakenteet, luokat) viittaustyyppisenä parametrina // Esimerkkejä arvoparametrista void f1(int i); void f2(myclass olio); ohjelmointiin C++-kielellä 47

48 I Arvoparametrit (2): Osoitin parametrina HUOM! Osoitin välitetään arvoparametrina, mutta koska sisältää muistiosoitteen, voidaan sen kautta käsitellä alkuperäisen muuttujan muistipaikkaa: void arvoosoitinparamfun(int *p) { *p = 5; } int main() { int kokoluku = 1; std::cout << kokoluku << std::endl; // Tulostus 1 // HUOMAA että välitetään muuttujan osoite! arvoosoitinparamfun(&kokoluku); std::cout << kokoluku << std::endl; // Tulostus 5 ohjelmointiin C++-kielellä 48

49 I Viittausparametrit Parametrin tyyppinä on viittaustyyppi Tyyppi ja merkki & Johdetut tyypit kannattaa yleensä välittää viittaustyyppisinä istream& luerivi(istream& in, string& rivi) { getline(in, rivi); return in; } Jos parametrin arvoa ei ole tarkoitus muuttaa funktiossa, se välitetään vakioviittauksena void tulosta (const string& viesti); ohjelmointiin C++-kielellä 49

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

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

Lisätiedot

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset

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

Lisätiedot

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

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

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

Lisätiedot

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

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

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. X Poikkeusten käsittelystä

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. X Poikkeusten käsittelystä 812347A Olio-ohjelmointi, 2015 syksy 2. vsk X Poikkeusten käsittelystä Sisältö 1. Yleistä poikkeusten käsittelystä 2. Poikkeuskäsittelyn perusteita C++:ssa 3. Standardissa määritellyt poikkeukset 4. Poikkeusvarmuus

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

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

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, literaalivakio, nimetty vakio Tiedon merkkipohjainen tulostaminen 1 Tunnus Java tunnus Java-kirjain Java-numero

Lisätiedot

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

Kääntäjän virheilmoituksia

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

Lisätiedot

C++ rautaisannos. Kolme tapaa sanoa, että tulostukseen käytetään standardikirjaston iostreamosassa määriteltyä, nimiavaruuden std oliota cout:

C++ rautaisannos. Kolme tapaa sanoa, että tulostukseen käytetään standardikirjaston iostreamosassa määriteltyä, nimiavaruuden std oliota cout: C++ rautaisannos Kolme tapaa sanoa, että tulostukseen käytetään standardikirjaston iostreamosassa määriteltyä, nimiavaruuden std oliota cout: # include #include main ( ) main (

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

tietueet eri tyyppisiä tietoja saman muuttujan arvoiksi

tietueet eri tyyppisiä tietoja saman muuttujan arvoiksi tietueet eri tyyppisiä tietoja saman muuttujan arvoiksi ero taulukkoon taulukossa alkiot samantyyppisiä tietueessa alkiot voivat olla erityyppisiä tiedot kuitenkin yhteen kuuluvia ohjelmoinnin perusteet,

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

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

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

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

Geneeriset luokat. C++ - perusteet Java-osaajille luento 6/7: Template, tyyppi-informaatio, nimiavaruudet. Geneerisen luokan käyttö.

Geneeriset luokat. C++ - perusteet Java-osaajille luento 6/7: Template, tyyppi-informaatio, nimiavaruudet. Geneerisen luokan käyttö. Geneeriset luokat C++ - perusteet Java-osaajille luento 6/7: Template, tyyppi-informaatio, nimiavaruudet Geneerinen luokka tarkoittaa parametroitua luokkamallia, jonka avulla voidaan muodostaa useita,

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

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

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

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

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 20.1.2010 T-106.1208 Ohjelmoinnin perusteet Y 20.1.2010 1 / 40 Arvon pyytäminen käyttäjältä Käyttäjän antaman arvon voi lukea raw_input-käskyllä. Käskyn sulkujen

Lisätiedot

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

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

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

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

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 13.9.2017 CS-A1111 Ohjelmoinnin peruskurssi Y1 13.9.2017 1 / 19 Oppimistavoitteet: tämän luennon jälkeen osaat kirjoittaa Python-ohjelman, joka pyytää käyttäjältä lukuja,

Lisätiedot

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

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

ITKP102 Ohjelmointi 1 (6 op)

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

Lisätiedot

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

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

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

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 12. huhtikuuta 2019 Tee kukin tehtävä omalle konseptiarkille. Noudata ohjelmointitehtävissä kurssin koodauskäytänteitä. Yksi A4-kokoinen lunttilappu

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

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

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

Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot

Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot Tiedosto yhteenkuuluvien tietojen joukko, joka on tavallisesti talletettu pysyväismuistiin muodostuu tietueista, jotka voivat olla keskenään samanlaisia tai vaihdella tyypiltään tiedostot ovat joko tekstitiedostoja

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 20. huhtikuuta 2018 Vastaa kaikkiin tehtäviin. Tee kukin tehtävä omalle konseptiarkille. Noudata ohjelmointitehtävissä kurssin koodauskäytänteitä.

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

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

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 12.9.2018 CS-A1111 Ohjelmoinnin peruskurssi Y1 12.9.2018 1 / 19 Oppimistavoitteet: tämän luennon jälkeen osaat kirjoittaa Python-ohjelman, joka pyytää käyttäjältä lukuja,

Lisätiedot

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

1. Esittelyt ja vakiot 1.1 Esittelyt (declarations) Ennen nimen, tunnuksen (identifier) käyttöä se on

1. Esittelyt ja vakiot 1.1 Esittelyt (declarations) Ennen nimen, tunnuksen (identifier) käyttöä se on 1. Esittelyt ja vakiot 1.1 Esittelyt (declarations) Ennen nimen, tunnuksen (identifier) käyttöä se on esiteltävä. char ch; int count=1; struct complex float re, im; complex z; complex sqrt( complex );

Lisätiedot

Lyhyt kertaus osoittimista

Lyhyt kertaus osoittimista , syksy 2007 Kertausta Luento 10 12.10.2007 Syksy 2007 1 Lyhyt kertaus osoittimista char *p; /* char, int, jne ilmoittavat, minkä tyyppisiä */ Keskusmuisti int *q; /* olioita sisältäviin muistilohkoihin

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

UNIVERSITY OF OULU DEPARTMENT OF INFORMATION PROCESSING SCIENCE

UNIVERSITY OF OULU DEPARTMENT OF INFORMATION PROCESSING SCIENCE 1 UNIVERSITY OF OULU DEPARTMENT OF INFORMATION PROCESSING SCIENCE OPETUSMONISTEET SARJA C11 JUUSTILA ANTTI KETTUNEN HARRI KILPI TEEMU RÄISÄNEN TONI VESANEN ARI C++- OHJELMOINTIKURSSIN OHEISMATERIAALI ISBN

Lisätiedot

1. C++ -pääohjelma. Olio-ohjelmointi Johdanto ohjelmointiin C++-kielellä

1. C++ -pääohjelma. Olio-ohjelmointi Johdanto ohjelmointiin C++-kielellä Olio-ohjelmointi Johdanto ohjelmointiin C++-kielellä Tässä osassa tutustutaan C++ - ohjelmoinnin perusrakenteisiin ja siihen, kuinka käyttäjän kanssa kommunikoidaan käyttäen hyväksi konsoli-ikkunaa. Teksti

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

Muuttujien roolit Kiintoarvo cin >> r;

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

Lisätiedot

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

4. Luokan testaus ja käyttö olion kautta 4.1

4. Luokan testaus ja käyttö olion kautta 4.1 4. Luokan testaus ja käyttö olion kautta 4.1 Olion luominen luokasta Java-kielessä olio määritellään joko luokan edustajaksi tai taulukoksi. Olio on joukko keskusmuistissa olevia tietoja. Oliota käsitellään

Lisätiedot

Loppukurssin järjestelyt

Loppukurssin järjestelyt C! Loppukurssin järjestelyt 29.3.2018 Ohjelmassa Yhteenvetoa palautteesta Ohjelmontitehtävän järjestelyt Tietokonetentin järjestelyt Kysyttävää / kerrattavaa 10-kierroksen asioista? Aikatauluista 10. kierroksen

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 11.9.2019 CS-A1111 Ohjelmoinnin peruskurssi Y1 11.9.2019 1 / 19 Oppimistavoitteet: tämän luennon jälkeen osaat kirjoittaa Python-ohjelman, joka pyytää käyttäjältä lukuja,

Lisätiedot

Loppukurssin järjestelyt C:n edistyneet piirteet

Loppukurssin järjestelyt C:n edistyneet piirteet C! Loppukurssin järjestelyt C:n edistyneet piirteet 30.3.2017 Ohjelmassa Ohjelmontitehtävän järjestelyt Tietokonetentin järjestelyt Esikääntäjä Parametrilistat Funktio-osoittimet Kunniamainintoja Kuura

Lisätiedot

1. Olio-ohjelmointi 1.1

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

Lisätiedot

Rakenteiset tietotyypit Moniulotteiset taulukot

Rakenteiset tietotyypit Moniulotteiset taulukot C! Rakenteiset tietotyypit Moniulotteiset taulukot 22.2.2018 Agenda Rakenteiset tietotyypit Vilkaisu 6. kierroksen tehtäviin Moniulotteiset taulukot Esimerkki Seuraava luento to 8.3. Ilmoittautuminen ohjelmointikokeeseen

Lisätiedot

Osoittimet ja taulukot

Osoittimet ja taulukot C! ja taulukot 1.2.2018 Tiedotteita Tämän jälkeen taas pari väliviikkoa (tenttiviikko) Seuraava luento 22.2. Laskareita ei tenttiviikolla 12.2. 16.2. 2 ja muisti Muisti Keskusyksikkö Suorittaa muistissa

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 14.9.2016 CS-A1111 Ohjelmoinnin peruskurssi Y1 14.9.2016 1 / 19 Oppimistavoitteet: tämän luennon jälkeen osaat kirjoittaa Python-ohjelman, joka pyytää käyttäjältä lukuja,

Lisätiedot

Olio-ohjelmointi Javalla

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

Lisätiedot

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

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

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

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

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

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

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. V Geneerisyys

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. V Geneerisyys 812347A Olio-ohjelmointi, 2015 syksy 2. vsk V Geneerisyys Sisältö 1. Johdanto geneerisyyteen 2. Geneeriset funktiot 3. Geneeriset luokat 4. Standard Template Library (STL) 5. IOStream-kirjasto 812347A

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

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

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

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti: 1 (7) Tiedon lukeminen näppäimistöltä Scanner-luokan avulla Miten ohjelma saa käyttöönsä käyttäjän kirjoittamaa tekstiä? Järjestelmässä on olemassa ns. syöttöpuskuri näppäimistöä varten. Syöttöpuskuri

Lisätiedot

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

Osoittimet ja taulukot

Osoittimet ja taulukot Osoittimet ja taulukot Hannu Laine Copyright Hannu Laine Osoittimet int main (void) { int a; int *p; //p on osoitinmuuttuja p = &a; *p = 10; printf( %d, *p); //tulostuu muuttujan a sisältö scanf( %d, p);

Lisätiedot

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2 4. Attribuutit 4.1 Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2 Yleistä Luokan lohkossa, mutta metodien ulkopuolella esiteltyjä

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 21.1.2009 T-106.1208 Ohjelmoinnin perusteet Y 21.1.2009 1 / 32 Tyypeistä Monissa muissa ohjelmointikielissä (esim. Java ja C) muuttujat on määriteltävä ennen

Lisätiedot

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti C! Perusteet 19.1.2017 Palautteesta (1. kierros toistaiseksi) Toistaiseksi helppoa Miksi vain puolet pisteistä? Vaikeinta oli ohjelmointiympäristön asennus ja käyttö Vaikeaa eroavuudet Pythonin ja C:n

Lisätiedot

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

7. Näytölle tulostaminen 7.1

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

Lisätiedot

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti C! Perusteet 19.1.2017 Palautteesta (1. kierros toistaiseksi) (Erittäin) helppoa Miksi vain puolet pisteistä? Vaikeinta oli ohjelmointiympäristön asennus ja käyttö Ei selvää että main funktion pitikin

Lisätiedot

Merkkijono määritellään kuten muutkin taulukot, mutta tilaa on varattava yksi ylimääräinen paikka lopetusmerkille:

Merkkijono määritellään kuten muutkin taulukot, mutta tilaa on varattava yksi ylimääräinen paikka lopetusmerkille: Merkkijonot C-kielessä merkkijono on taulukko, jonka alkiot ovat char -tyyppiä. Taulukon viimeiseksi merkiksi tulee merkki '\0', joka ilmaisee merkkijonon loppumisen. Merkkijono määritellään kuten muutkin

Lisätiedot

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

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

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

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

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

Lisätiedot

Table of Contents. T740103 Olio-ohjelmointi C/C++ perusteita Jukka Jauhiainen OAMK Tekniikan yksikkö 2010, 2011

Table of Contents. T740103 Olio-ohjelmointi C/C++ perusteita Jukka Jauhiainen OAMK Tekniikan yksikkö 2010, 2011 Tämän materiaalin lähteenä on käytetty osoitteesta http://www.cplusplus.com/doc/tutorial löytyvää C+ + Language Tutorial. Tämän osan tarkoituksena on pääasiassa kerrata C-kielestä tuttuja perusasioita

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

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

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

Olio-ohjelmointi Geneerisyys. 1. Johdanto

Olio-ohjelmointi Geneerisyys. 1. Johdanto Olio-ohjelmointi Geneerisyys Aiemmin käsiteltiin kolme monimuotoisuuden muotoa. Tässä osassa tutustutaan niistä neljänteen geneerisyyteen. Esitys perustuu pääosin teoksen [Bud] lukuun 18. Java-kielen geneerisyyden

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

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

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

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

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

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

Javan perusteet. Ohjelman tehtävät: tietojen syöttö, lukeminen prosessointi, halutun informaation tulostaminen tulostus tiedon varastointi

Javan perusteet. Ohjelman tehtävät: tietojen syöttö, lukeminen prosessointi, halutun informaation tulostaminen tulostus tiedon varastointi 1 Javan perusteet Ohjelmointi IPO-malli Java lähdekoodista suoritettavaksi ohjelmaksi Vakio Muuttuja Miten Javalla näytetään tietoa käyttäjälle, miten Javalla luetaan käyttäjän antama syöte Miten Javalla

Lisätiedot

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