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

Samankaltaiset tiedostot
Ohjelmointi 1 Taulukot ja merkkijonot

tietueet eri tyyppisiä tietoja saman muuttujan arvoiksi

Osoitin ja viittaus C++:ssa

Java-kielen perusteet

Java-kielen perusteet

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

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

12 Mallit (Templates)

Olio-ohjelmointi Syntaksikokoelma

Osoittimet. Mikä on osoitin?

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

Tietueet. Tietueiden määrittely

C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa.

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

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

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

6. Muuttujat ja Java 6.1

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

13 Operaattoreiden ylimäärittelyjä

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

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

Muuttujien roolit Kiintoarvo cin >> r;

C++-KIELI. Versio 4.0

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

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

6. Muuttujat ja Java 6.1

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

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

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

Omat tietotyypit. Mikä on olio?

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

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

7/20: Paketti kasassa ensimmäistä kertaa

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

Johdatus ohjelmointiin / Lausekielinen ohjelmointi 1 & 2

Rakenteiset tietotyypit Moniulotteiset taulukot

Tietotyypit ja operaattorit

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

Osoittimet ja taulukot

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

AS C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin

C-ohjelmointi: Osoittimet

sama tyyppi (joka vastaa kaikkien mahdollisten arvojen summa-aluetta). Esimerkiksi

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

Loppukurssin järjestelyt C:n edistyneet piirteet

Tietuetyypin määrittely toteutetaan C-kielessä struct-rakenteena seuraavalla tavalla:

Moduli 2: Osoittimet ja taulukot. Joel Huttunen

Tietorakenteet ja algoritmit

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

Loppukurssin järjestelyt

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

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

7. Näytölle tulostaminen 7.1

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python

Lyhyt kertaus osoittimista

Luokat. Luokat ja olio-ohjelmointi

Tieto ja sen osoite (3) Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Osoitinmuuttujat. Tieto ja sen osoite (5)

UNIVERSITY OF OULU DEPARTMENT OF INFORMATION PROCESSING SCIENCE

Olio-ohjelmointi 2. välikoe HYV5SN

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

1.1 Pino (stack) Koodiluonnos. Graafinen esitys ...

C# olio-ohjelmointi perusopas

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen

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

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python

Mallit standardi mallikirjasto parametroitu tyyppi

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

Luennon sisältö Tyypit int, char, float, double signed, unsigned short, long Vakiot const Rakenteet if, for, while, switch, do-while Syöttö ja tulostu

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

Tehtävä 1. TL5302 Olio-ohjelmointi Koe Malliratkaisuja. Tässä sekä a)- että b)-kohdan toimiva ratkaisu:

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

1. Olio-ohjelmointi 1.1

1. Mitä seuraava ohjelma tulostaa? Vastaukseksi riittää yksi rivi joka esittää tulosteen. (6 p)

Operaattoreiden uudelleenmäärittely

Kielioppia: toisin kuin Javassa

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

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti

Virtuaalifunktiot ja polymorfismi

ITKP102 Ohjelmointi 1 (6 op)

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

Algebralliset tietotyypit ym. TIEA341 Funktio ohjelmointi 1 Syksy 2005

Tietorakenteet ja algoritmit

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

tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla

Ohjelmointiharjoituksia Arduino-ympäristössä

Muuttujat ja kontrolli. Ville Sundberg

4. Olio-ohjelmoinista lyhyesti 4.1

15. Ohjelmoinnin tekniikkaa 15.1

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

1. Mitä tehdään ensiksi?

811120P Diskreetit rakenteet

T Olio-ohjelmointi Osa 5: Periytyminen ja polymorfismi Jukka Jauhiainen OAMK Tekniikan yksikkö 2010

abba 1. Perusrakenteita

Ohjelmoinnin perusteet Y Python

Luokan operaatiot. Osoittimet ja viittaukset luokan olioihin

ITKP102 Ohjelmointi 1 (6 op)

Ohjelman virheet ja poikkeusten käsittely

C-ohjelmointikieli vs. muut kielet. C vs. Java ("stereotyyppisesti") C-ohjelman korkean tason rakenne. Java-ohjelman korkean tason rakenne

Transkriptio:

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 Totuusarvo: bool

Tyyppien arvoalueet C++-kielessä on otsikkotiedosto climits, jossa on määritelty tietotyyppien ylä- ja alarajat vakioina. Vakiot SHRT_MAX, SHRT_MIN, INT_MAX, INT_MIN etc. http://www.cplusplus.com/reference/clibrary/ climits/ Esimerkki käytöstä: limits.cpp (moodle)

Vakiotyypit Lisämäärellä const muuttuja muutetaan vakioksi const double PI = 3.145; Tällöin muuttujan arvoa ei voida ohjelmassa enää vaihtaa Tämä ei siis onnistu PI = 2.2;

Lisää tyypeistä Perustietotyyppien lisäksi C++-kielessä on Tietue- ja luokkatyyppejä struct, union ja class Johdettuja tyyppejä taulukot, osoittimet ja viittaukset Tänään katsotaan structia, unionia ja osoittimia.

Tietue- ja luokkatyypit Tietuetyyppi on koosteinen tietotyyppi, joka sisältää tietokenttiä. Tietokentät voivat olla perustietotyyppejä tai johdettuja tyyppejä Ohjelmoijan itse määrittelemä tietotyyppi! Varatut sanat struct ja union Luokkatyyppiä opiskellaan olio-ohjelmoinnin yhteydessä jätetään käsittelemättä tässä vaiheessa

Tietuetyypeistä Tietuetyypit ovat ohjelmoijan itsensä määrittelemiä tyyppejä Kokonaisluvun määritys: int kokonaisluku; Päivämäärän määritys: PVM paivamaara; Nyt PVM on ohjelmoijan luoma tietotyyppi!

struct Tietuetyyppi kootaan tietokentistä: struct PVM { }; int pp; int kk; int vv; Esimerkki: struct.cpp (moodle)

struct-alustus Tietue voidaan alustaa määrittelyn yhteydessä: DATE mydate = {2008, 12, 1}; Varaa tässä tapaukselle kolmelle kokonaisluvulle tilaa muistista Esimerkki: struct2.cpp

union Union on tietuetyyppi, jossa tietueen kentät jakavat saman muistialueen. union PVM { }; int pp; int kk; int vv; Todella harvoin käytetty, pärjätään ilmankin.

Osoittimet 2007-08-21, Jussi Pohjolainen

Muistialue ja muuttujat Keskusmuisti (ram) 1. int a = 1; 2. int b = 2; muistin allokointi (varaus) osoite arvo 0x00 1.23 0x01 1 0x02-3 0x03 'k' 0x04 2 0x05 1938

Muistialue ja muuttujat Keskusmuisti (ram) osoite arvo 1. int a = 1; 2. int b = 2; 3. b = 8; arvon muutos 0x00 1.23 0x01 1 0x02-3 0x03 'k' 0x04 8 0x05 1938

Muistiosoitteeseen viittaaminen Keskusmuisti (ram) 1. int a = 1; 2. cout << &a; osoite arvo 0x00 1.23 0x01 1 0x02-3 0x03 'k' > g++ -o app printaddress.cpp >./app > 0x01 0x04 8 0x05 1938

Muistialue ja muuttujat 1. int a = 1; 2. int* b = &a; muistin allokointi (varaus) Keskusmuisti (ram) osoite arvo 0x00 1.23 0x01 1 0x02-3 muuttuja, joka sisältää kokonaisluvun muistipaikan osoitteen a-muuttujan muistipaikan osoite 0x03 'k' 0x04 0x01 0x05 1938

Muistiosoitteeseen viittaaminen 1. int a = 1; 2. int* b = &a; 3. cout << b; Keskusmuisti (ram) osoite arvo 0x00 1.23 0x01 1 0x02-3 0x03 'k' > g++ -o app printaddress.cpp >./app > 0x01 0x04 0x01 0x05 1938

Muistiosoitteeseen viittaaminen 1. int a = 1; 2. int* b = &a; 3. cout << b; 4. cout << *b; > g++ -o app printaddress.cpp >./app > 0x01 > 1 Keskusmuisti (ram) osoite arvo 0x00 1.23 0x01 1 0x02-3 0x03 'k' 0x04 0x01 0x05 1938

Muistiosoitteeseen viittaaminen 1. int a = 1; 2. int* b = &a; 3. a = 12; 4. cout << *b; > g++ -o app printaddress.cpp >./app > 12 Keskusmuisti (ram) osoite arvo 0x00 1.23 0x01 12 1 0x02-3 0x03 'k' 0x04 0x01 0x05 1938

Muistiosoitteeseen viittaaminen Osoitin B arvo: 0x01 Osoitin D arvo: 0x01 A osoitteessa: 0x01 arvo: 12 Osoitin C arvo: 0x01 Osoitin E arvo: 0x01

Osoitin Osoitin (pointer) on muuttuja, joka sisältää keskusmuistiosoitteen! Osoittimia käytetään dynaamisessa muistinhallinnassa ja aliohjelmien parametreissa. Palataan näihin myöhemmin... Osoitinmuuttujan määrittely tyyppi* osoitin;

Osoittimen määrittely ja alustus Osoitinmuuttujan määrittely int* osoitin; Alustus osoitin = NULL; osoitin = 0; osoitin = &muuttuja; Esimerkki: pointer1.cpp

Osoite- ja sisältöoperaattori Osoitinmuuttujan käyttö edellyttää kahden eri operaattorin käyttöä: & osoiteoperaattori * sisältöoperaattori & ja * - merkkien tarkoitus vaihtelee riippuen kontekstista!

Esimerkki int a = 5; // Määritellään osoitintyyppinen muuttuja int* b = &a; // Tulostaa muistipaikan osoitteen cout << b << endl; // Tulostaa arvon 5 // HUOM! Nyt siis * merkki tarkoittaa // sisältöoperaattoria! cout << *b << endl; // Esimerkki: pointer2.cpp

Vakio-osoitin 1 int luku1 = 1; int luku2 = 2; int* const osoitin = &luku1; // Tämä onnistuu *osoitin = 10; // Tämä ei osoitin = &luku2;

Vakio-osoitin 2 int luku1 = 1; int luku2 = 2; const int* osoitin = &luku1; // Tämä ei onnistu *osoitin = 10; // Tämä onnistuu osoitin = &luku2;

Vakio-osoitin 3 int luku1 = 1; int luku2 = 2; const int* const osoitin = &luku1; // Tämä ei onnistu *osoitin = 10; // Tämä ei onnistu osoitin = &luku2;

Osoitin tietueeseen Kun tietueen kenttiin halutaan viitata osoittimen kautta, käytetään merkintää * tai -> DATE pvm = {1,1,2000}; DATE* osoitin = &pvm; cout << osoitin << endl; // cout << osoitin.vuosi << endl; cout << (*osoitin).vuosi << endl; cout << osoitin->vuosi << endl; Esimerkki: pointer-struct.cpp