815338A Ohjelmointikielten periaatteet

Koko: px
Aloita esitys sivulta:

Download "815338A Ohjelmointikielten periaatteet"

Transkriptio

1 815338A Ohjelmointikielten periaatteet IV.3 Imperatiivinen ohjelmointi aliohjelmat

2 Sisältö 1. Yleistä aliohjelmista 2. Proseduurit ja funktiot 3. Parametrien välittäminen 4. Taulukon välittäminen parametrina 5. Aliohjelman välittäminen parametrina 6. Ylikuormittaminen ja geneerinen ohjelmointi 7. Aliohjelmien toteuttamisesta A Ohjelmointikielten periaatteet, Aliohjelmat 2

3 IV.3.1. Yleistä aliohjelmista Prosessien abstrahointiväline Esiintynyt ohjelmointikielissä alusta asti Liittyvät top-down-suunnitteluun: Ohjelma kuvataan asteittain tarkennettavina toimintakokonaisuuksina, joita kuvataan aliohjelmilla Aliohjelmat suorittavat jonkin tietyn toiminnon mustan laatikon tapaan (yksityiskohdat piilotettu) A Ohjelmointikielten periaatteet, Aliohjelmat 3

4 IV.3.1. Yleistä aliohjelmista (2) Kaikissa ohjelmointikielissä jonkinlainen aliohjelmatoteutus Yksi merkittävimmistä ohjelmointikielten käsitteistä Tässä käsiteltävien ohjelmointikielten aliohjelmien yhteisiä piirteitä: 1.Jokaisella aliohjelmalla täsmälleen yksi tulokohta 2.Vain yhtä aliohjelmaa suoritetaan kerrallaan 3.Ohjelmakontrolli palaa kutsuvalle ohjelmalle, kun aliohjelman suoritus loppuu Aliohjelman määrittelyn osat: otsikko (header) ja runko (body) A Ohjelmointikielten periaatteet, Aliohjelmat 4

5 IV Aliohjelman otsikko Nimi, muodolliset parametrit ja niiden tyypit Aliohjelman rajapinta Paluuarvon tyyppi (mikäli on) Joissakin kielissä aliohjelman suorituksen aiheuttamien poikkeuksien tyypit (esim. Java) Joissakin kielissä aliohjelmat voidaan esitellä erillään määrittelystä = aliohjelman prototyyppi Prototyypit yleisiä C-kielessä, Adassa ja Pascalissa Javassa ei voi esitellä aliohjelmia A Ohjelmointikielten periaatteet, Aliohjelmat 5

6 IV Aliohjelman runko Aliohjelman toimintalogiikka = lauseet, jotka suoritetaan aliohjelmaa kutsuttaessa Esitellään aliohjelman paikalliset muuttujat Määritellään aliohjelmalle alisteiset aliohjelmat Pascalissa sisäkkäiset aliohjelmat yleisiä Ei sallittua kaikissa kielissä, esim. C A Ohjelmointikielten periaatteet, Aliohjelmat 6

7 IV Aliohjelman kutsu (call) Pyyntö suorittaa aliohjelma Yleensä kutsutaan aliohjelman nimellä FORTRANissa kutsulle oma käsky CALL (proseduureille) Muodolliset (formaalit) parametrit Aliohjelman otsikossa määriteltävät parametrit, jotka sidotaan muistiin kutsuttaessa Todelliset parametrit Aliohjelman kutsussa oleva lista parametreista, jotka sidotaan aliohjelman muodollisiin parametreihin A Ohjelmointikielten periaatteet, Aliohjelmat 7

8 IV Aliohjelman kutsu (2) Aliohjelman runko double ali (int x, char c) { x += 2; c = z ; return 3.14; *x++=*y++ } int main(int argc, char * argv[]) { } int luku = 5; char merkki = m ; double d = ali(luku,m); Muodolliset parametrit Todelliset parametrit Aliohjelman otsikko A Ohjelmointikielten periaatteet, Aliohjelmat 8

9 IV Aliohjelman kutsu (2) Lähes kaikissa ohjelmointikielissä sidonnan määrää parametrin sijainti listassa Python, Ada ja FORTRAN 90: voi käyttää myös avainsanaparametreja Joissakin kielissä (C++, Python) oletusarvot mahdollisia: int funk(int eka,float toka,double kol=1.0) voidaan kutsua kahdella parametrilla -> kolmas saa arvon A Ohjelmointikielten periaatteet, Aliohjelmat 9

10 IV Aliohjelman parametrien välitysmekanismi *x++=*y++ Tapa, jolla muodollinen parametri sidotaan todelliseen parametriin Tärkeimpiä valittavia ominaisuuksia aliohjelman suunnittelussa Toteutukseen useita malleja A Ohjelmointikielten periaatteet, Aliohjelmat 10

11 IV Muita suunnittelukriteerejä 1. Miten tarkastetaan parametrien tyypit 2. Minkälaisia parametreja voi välittää (esimerkiksi aliohjelmat parametreina) 3. Paikallisten muuttujien allokointitapa 4. Sallitaanko sisäkkäiset aliohjelmat 5. Voidaanko aliohjelmia ylikuormittaa 6. Sallitaanko geneeriset aliohjelmat 7. Voidaanko aliohjelmia kääntää riippumattomina yksiköinä A Ohjelmointikielten periaatteet, Aliohjelmat 11

12 IV.3.2. Proseduurit ja funktiot Proseduuri Aliohjelma jolla ei paluuarvoa Ohjelmassa lauseen asemassa Funktio Palauttaa arvon Ohjelmassa lausekkeen asemassa Toteutus ohjelmointikielissä varsin samantyyppinen Kaikissa kielissä ei molempia tyyppejä (esim. C vain funktiot) A Ohjelmointikielten periaatteet, Aliohjelmat 12

13 IV Proseduurit *x++=*y++ FORTRANissa esitellään sanalla SUBROUTINE SUBROUTINE OPEROI(I,J) kutsuttaisiin pääohjelmasta esimerkiksi CALL OPEROI(10,20) Pascalissa: PROCEDURE OPEROI(I:INTEGER;J:INTEGER) kutsutaan koodissa aliohjelman nimellä OPEROI(10,20); C-pohjaisissa kielissä void-tyyppinen funktio: void operoi(int x, int y) A Ohjelmointikielten periaatteet, Aliohjelmat 13

14 IV Funktion paluuarvo Yleisimmin annetaan return-lauseessa, joka aiheuttaa aliohjelman suorituksen loppumisen Esimerkiksi C-funktiossa double laskearvo(int x, int y) { double retval;... retval = return retval;} -> paluuarvo muuttujan retval se arvo, joka muuttujalla return-lausetta suoritettaessa A Ohjelmointikielten periaatteet, Aliohjelmat 14

15 IV Funktion paluuarvo (2) FORTRAN: aliohjelmasta palataan RETURN-lauseella, mutta sen yhteydessä ei anneta paluuarvoa, joka annetaan funktiolle sijoituslauseessa: FUNCTION SUMMA(II,JJ) SUMMA = II+JJ RETURN END Funktiota kutsutaan FORTRANissa nimellä, ts. X = SUMMA(12,25) A Ohjelmointikielten periaatteet, Aliohjelmat 15

16 IV Funktion paluuarvo (3) Pascal: Paluuarvo kuten FORTRANissa, mutta Pascalissa ei return-lausetta -> funktio suoritetaan loppuun saakka. FUNCTION MYFUNK(para1:INTEGER;para2:INTEGER): REAL; var m:integer; BEGIN MYFUNK := 2.1; FOR m:=1 TO para1+para2 DO END; writeln ('turhaa'); A Ohjelmointikielten periaatteet, Aliohjelmat 16

17 IV.3.3. Parametrien välittäminen Aliohjelma voi siirtää tietoa kutsuvan ohjelman kanssa joko globaalien (yhteisten) muuttujien avulla tai parametrien välityksellä Globaalit muuttujat -> sivuvaikutuksia Parametrit parempi ratkaisu A Ohjelmointikielten periaatteet, Aliohjelmat 17

18 IV Parametrien luokittelu semantiikan mukaan 1. Parametrit, jotka välittävät tietoa aliohjelmaan Sidonnan moodi in 2. Parametrit, jotka välittävät tietoa aliohjelmasta kutsuvaan ohjelmaan Sidonnan moodi out 3. Parametrit, jotka välittävät tietoa kumpaankin suuntaan Sidonnan moodi inout Joissakin kielissä parametri voidaan määritellä jonkin tyyppiseksi, toisissa tyyppi vakio -> välitystavat toteutettava muutoin A Ohjelmointikielten periaatteet, Aliohjelmat 18

19 IV Datan siirron toteutus parametrin välityksessä 1. Välitettävä arvo kopioidaan tai 2. Tiedon saantipolku (käytännössä useimmiten muistipaikan osoite) siirretään Ensimmäinen turvallisempi, jälkimmäinen tehokkaampi A Ohjelmointikielten periaatteet, Aliohjelmat 19

20 IV Datan siirron toteutus parametrin välityksessä (2) Parametrien välitysmekanismit 1.Arvovälitys 2.Viitevälitys 3.Tulosvälitys 4.Arvo-tulosvälitys 5.Nimivälitys A Ohjelmointikielten periaatteet, Aliohjelmat 20

21 IV Arvovälitys Muodollinen parametri eräänlainen paikallinen muuttuja, joka alustetaan todellisen parametrin arvolla Toteutetaan yleisimmin kopioimalla todellisen parametrin data paikalliseen muuttujaan -> parametrimuuttujan muuttaminen aliohjelmassa ei vaikuta todellisen parametrin arvoon Pääasiallinen haitta: suurikokoisten parametrien välittäminen -> kopiointi kuluttaa resursseja Siis in-moodi A Ohjelmointikielten periaatteet, Aliohjelmat 21

22 IV Tulosvälitys Todellisten parametrien arvoja ei välitetä aliohjelmalle Aliohjelmassa parametri kuin paikallinen muuttuja, jonka arvo kopioidaan kutsuvan ohjelman parametrin arvoksi -> todellisen parametrin on oltava muuttuja Toimii ikään kuin arvovälitys päinvastoin Tulosvälityksessä törmäämisongelma (ei esiinny arvovälityksessä) Siis out-moodi A Ohjelmointikielten periaatteet, Aliohjelmat 22

23 IV Tulosvälitys (2) Esimerkki törmäämisestä tulosvälityksessä: ali (int x, int y) { } x = 2; y = 3; Jos pääohjelmassa kutsu ali(z,z), mikä arvo z:lle? A Ohjelmointikielten periaatteet, Aliohjelmat 23

24 IV Arvo-tulosvälitys Yhdistelmä edellisistä Toteuttaa tiedonvälityksen molempiin suuntiin Mekanismi 1. Todellisen parametrin arvo kopioidaan paikallisena muuttujana toimivan muodollisen parametrin arvoksi 2. Aliohjelman palatessa em. muuttujan arvo kopioidaan todellisen parametrin arvoksi Todellisen parametrin on oltava muuttuja Sisältää sekä arvo- että tulosvälityksen haittapuolet Siis inout-moodi A Ohjelmointikielten periaatteet, Aliohjelmat 24

25 IV Viitevälitys *x++=*y++ Toteuttaa tiedonvälityksen molempiin suuntiin (inoutmoodi) Ei välitetä arvojen kopioita, vaan parametrina annetaan muuttujan muistiosoite -> aliohjelma muokkaa alkuperäistä muuttujaa Resurssien käytön kannalta huomattavan tehokas (dataa ei tarvitse siirtää, eikä ylimääräistä muistia varata) Siis inout-moodi A Ohjelmointikielten periaatteet, Aliohjelmat 25

26 IV Viitevälitys (2) Turvallisuus kärsii viitevälityksessä: Virhetilanteessa ei voi palauttaa alkuperäistä muuttujaa kutsua edeltäneeseen tilaan aliohjelman muokatessa sitä Viitevälitys voi tuottaa moninimisyyttä, yleensä eitoivottua. Esimerkki C++: void funk(int &pi1,int &pj2) kutsuttaessa int muuttuja = 1; funk(muuttuja, muuttuja); -> funktiossa pi1 ja pj2 viittaavat samaan muuttujaan, voi aiheuttaa hankaluuksia A Ohjelmointikielten periaatteet, Aliohjelmat 26

27 IV Nimivälitys Perustuu myöhäiseen sidontaan Harvinainen: Tunnetuista kielistä vain ALGOL 60, SIMULA 67 Idea: tekstuaalinen kopiointi, jossa todellinen parametri (ilmauksena) kopioituu muodollisen parametrin kaikkiin esiintymiskohtiin. Tämän jälkeen aliohjelma kopioituu sen kutsumiskohtaan Tosiasiassa tapahtuva parametrin välitys riippuu parametrin tyypistä A Ohjelmointikielten periaatteet, Aliohjelmat 27

28 IV Nimivälitys Todellinen parametri on primitiivisen tietotyypin muuttuja -> vastaa viitevälitystä Todellinen parametri on lauseke, joka sisältää muuttujia -> ei muistuta mitään edellä esitetyistä mekanismeista Vaikea toteuttaa Ohjelmoijan kannalta hankala A Ohjelmointikielten periaatteet, Aliohjelmat 28

29 IV Mekanismit esimerkkikielissä: C, C++, C# ja Java C ja Java: Aina arvovälitys parametreille -> C kielinen funktio void vaihda(int x,int y){ } int temp = x; x = y; y = temp; ei vaihda todellisten parametrien arvoa A Ohjelmointikielten periaatteet, Aliohjelmat 29

30 IV Mekanismit esimerkkikielissä: C, C++, C# ja Java (2) Vaihto toteutettava C:ssä osoittimilla: void vaihda(int *x, int *y){ } int temp = *x; *x = *y; *y = temp; int eka = 10, toka = 20; vaihda(&eka,&toka); A Ohjelmointikielten periaatteet, Aliohjelmat 30

31 IV Mekanismit esimerkkikielissä: C, C++, C# ja Java (3) Huomaa: Javassa ei osoittimia -> primitiivisten tietotyyppien arvoja ei voi näin vaihtaa C++: Viitevälityksen voi tehdä viitemuuttujilla void vaihda(int &x,int &y){ } int temp = x; x = y; y = temp; int eka = 10, toka = 20; vaihda(eka,toka); A Ohjelmointikielten periaatteet, Aliohjelmat 31

32 IV Mekanismit esimerkkikielissä: C, C++, C# ja Java (4) C#: Oletusmekanismi arvovälitys Voidaan toteuttaa myös viitevälitys Avainsanat ref ja out Molemmissa viitevälitys, ref-parametri alustettava Esimerkki public void vaihda(ref int x,ref int y){ } int temp = x; x = y; y = temp; A Ohjelmointikielten periaatteet, Aliohjelmat 32

33 IV Mekanismit esimerkkikielissä: Pascal Parametrin välityssemantiikka voidaan valita Ellei anneta välitystyyppiä, käytetään arvovälitystä *x++=*y++ Jos halutaan inout semantiikka, määritellään parametrit muuttujaparametreiksi määreellä VAR -> viittausvälitys (aliohjelma käsittelee muistipaikkaa) A Ohjelmointikielten periaatteet, Aliohjelmat 33

34 IV Mekanismit esimerkkikielissä: Pascal (2) Aliohjelma PROCEDURE vaihda(x,y:integer); BEGIN END; var temp:integer; temp := x; x := y; y := temp; ei vaihda parametriensa arvoja A Ohjelmointikielten periaatteet, Aliohjelmat 34

35 IV Mekanismit esimerkkikielissä: Pascal (3) Aliohjelma PROCEDURE vaihdaoikein(var x,y:integer); var temp:integer; BEGIN END; temp := x; x := y; y := temp; vaihtaa parametrit Samassa aliohjelmassa voi olla sekä arvo- että muuttujaparametreja A Ohjelmointikielten periaatteet, Aliohjelmat 35

36 IV.3.4. Taulukon välittäminen parametrina *x++=*y++ Erityisesti useampiulotteisten välittäminen parametrina vaatii monissa kielissä erityisiä toimenpiteitä Usein välitettävä taulukko, jonka kokoa ja dimensioita ei tunneta Alkuperäinen Pascal: taulukon indeksirajat osa taulukon tyyppiä -> mahdotonta välittää parametrina erikokoisia taulukoita Pascalissa nykyään yleisesti käytössä avoimet taulukot A Ohjelmointikielten periaatteet, Aliohjelmat 36

37 IV Taulukko parametrina: C ja C++ Yksiulotteinen taulukko voidaan antaa parametrina ilman taulukon rajoja Moniulotteisissa taulukoissa tunnettava dimensiot ylintä lukuun ottamatta -> Muodollisissa parametreissa annettava taulukon muut dimensiot, esimerkiksi 2- ulotteinen taulukko void matr_funktio(float matrix [][20]) { jne A Ohjelmointikielten periaatteet, Aliohjelmat 37

38 IV Taulukko parametrina: C ja C++ (2) *x++=*y++ Funktio, joka parametrinaan ottaa mielivaltaisen kokoisen kaksiulotteisen taulukon: void matr_funktio(float *mat_ptr, int cols, int rows){jne Parametreina taulukko, taulukon rivien ja sarakkeiden lukumäärä. Ohjelmoijan vastuulla kirjoittaa indeksointi ottamalla huomioon, että taulukon alkio mat_ptr[x][y] on sama kuin *(mat_ptr + x*rows +y) koska C:ssä tallennetaan rivi kerrallaan A Ohjelmointikielten periaatteet, Aliohjelmat 38

39 IV Taulukko parametrina: Java Taulukot ovat olioita, dimensiot tunnetaan aina Taulukot aina yksiulotteisia, mutta niiden alkiot voivat olla taulukoita -> saadaan rakennettua useampiulotteisia taulukoita Voidaan välittää mielivaltaisia taulukoita parametreina Taulukon koko selville kysymällä length attribuutin arvoa kullekin dimensiolle A Ohjelmointikielten periaatteet, Aliohjelmat 39

40 IV.3.5. Aliohjelman välittäminen parametrina Takaisinkutsu (callback) Välitetään aliohjelma parametrina toiselle aliohjelmalle, joka kutsuu sitä Funktionaalisessa ohjelmoinnissa olennainen Monissa imperatiivisissa kielissä mahdollista *x++=*y A Ohjelmointikielten periaatteet, Aliohjelmat 40

41 IV.3.5. Aliohjelman välittäminen parametrina (2) Ongelmia Tarkistetaanko parametrina saadun aliohjelman kutsuissa esiintyvien parametrien tyypit Parametrina välitetyn aliohjelman viiteympäristön määräytyminen Viiteympäristö = aliohjelmassa näkyvien tunnisteiden joukko A Ohjelmointikielten periaatteet, Aliohjelmat 41

42 IV.3.5. Aliohjelman välittäminen parametrina (3) Olio-ohjelmoinnissa ei aliohjelmatyyppisiä parametreja välttämättä tarvita Voidaan toteuttaa välittämällä olio, jonka metodia kutsutaan Esimerkiksi Javassa ei voi välittää metodia aliohjelmaparametrina Adassa kielletty, Pascalissa harvoissa versioissa käytössä FORTRAN 77:ssä voidaan aliohjelman nimi välittää parametrina aliohjelmalle Tyypin tarkistuksia ei tehdä A Ohjelmointikielten periaatteet, Aliohjelmat 42

43 IV Aliohjelma parametrina: C ja C++ *x++=*y++ Voidaan käyttää funktion nimeä parametrina Välitetään osoitin funktioon (funktion nimi) Funktion parametrit kuuluvat funktion tyyppiin -> parametrien tyyppiyhteensopivuus voidaan varmistaa käännösaikana C-kääntäjät vapaamielisiä, C++ -kääntäjät tarkempia C++:ssa voidaan käyttää funktio-olioita = olioita jotka käyttäytyvät kuin funktiot A Ohjelmointikielten periaatteet, Aliohjelmat 43

44 IV Aliohjelma parametrina: C ja C++ (2) Esimerkki: void para_ali(int x){ } printf("x=%d \n",x); void cbfun(void ali(int)){ } ali(-200); Pääohjelmassa kutsutaan:... cbfun(para_ali);... *x++=*y A Ohjelmointikielten periaatteet, Aliohjelmat 44

45 IV Parametrina välitettävän aliohjelman viiteympäristön määräytyminen 1. Pinnallinen sidonta (matala sidonta, shallow binding), 2. Syvä sidonta (deep binding), 3. Tilanteen mukainen sidonta (ad hoc binding) A Ohjelmointikielten periaatteet, Aliohjelmat 45

46 IV Parametrina välitettävän aliohjelman viiteympäristön määräytyminen (2) 1. Pinnallinen sidonta Viiteympäristö on kutsuvan aliohjelman ympäristö Joissakin dynaamiseen sidontaan perustuvissa kielissä 2. Syvä sidonta Funktion viiteympäristö on sama kuin välitettävän aliohjelman viiteympäristö muutenkin Staattista sidontaa käyttävät kielet suosivat yleensä syvää sidontaa -> syvä sidonta ylivoimaisesti yleisin malli A Ohjelmointikielten periaatteet, Aliohjelmat 46

47 IV Parametrina välitettävän aliohjelman viiteympäristön määräytyminen (3) 3. Tilanteen mukainen sidonta Viiteympäristön määrää aliohjelmaparametrin saavaa aliohjelmaa kutsuva aliohjelma Periaatteessa mahdollinen Ei tiettävästi käytössä missään kielessä A Ohjelmointikielten periaatteet, Aliohjelmat 47

48 IV.3.6. Ylikuormittaminen ja geneerinen ohjelmointi *x++=*y++ Aliohjelman ylikuormittaminen (overloading) = samannimisellä aliohjelmalla on useita määrittelyjä, jotka eroavat toisistaan parametrilistoiltaan Ohjelmassa päätellään aliohjelman kutsun muodosta, mitä versiota aliohjelmasta käytetään Yleisesti paluuarvon tyypillä ei voida erottaa aliohjelmia toisistaan Ei mahdollista FORTRANissa, uudemmat kielet yleensä sallivat aliohjelmien ylikuormittamisen C ei salli, mutta uusissa versioissa voidaan simuloida A Ohjelmointikielten periaatteet, Aliohjelmat 48

49 IV Geneerinen ohjelmointi Parametrisoitujen tyyppien käyttö konkreettisten tyyppien asemasta Tietorakenteita toteutettaessa hyödyllinen Geneeriset aliohjelmat sallivat tyyppiriippumattomien aliohjelmien toteuttamisen Geneerisiä aliohjelmia kutsutaan joskus myös polymorfisiksi aliohjelmiksi A Ohjelmointikielten periaatteet, Aliohjelmat 49

50 IV Geneerinen ohjelmointi (2) Dynaamista tyypinsidontaa käyttävissä kielissä yleisimmillään Parametrien tyyppiä ei tarvitse etukäteen määritellä Tavallisin muoto parametrisoitu polymorfismi Käytetään parametrisoituja tyyppejä Tyypit sidotaan käännösaikaisesti johonkin konkreettiseen tyyppiin Lisää koodin uudelleenkäytettävyyttä Esim. Ada ja C++ (molemmissa käännösaikainen parametrisoitu polymorfismi) A Ohjelmointikielten periaatteet, Aliohjelmat 50

51 IV Geneerinen ohjelmointi C++:ssa *x++=*y++ C++ rakennettu vahvasti tukemaan geneeristä ohjelmointia STL (= Standard Template Library) sisältyy kaikkiin C++ -toteutuksiin A Ohjelmointikielten periaatteet, Aliohjelmat 51

52 IV Geneerinen ohjelmointi C++:ssa (2) Esimerkki. Taulukon lajittelu: template <class T> void lajittele(t taulu[], int pituus) { int i, j; T temp; for (i=0; i < pituus-1; i++) for (j=i+1; j < pituus; j++) if (taulu[i] > taulu[j]) { temp = taulu[i]; taulu[i] = taulu[j]; taulu[j] = temp; } } A Ohjelmointikielten periaatteet, Aliohjelmat 52

53 IV Geneerinen ohjelmointi C++:ssa (3) Edelläolevaa funktiota voitaisiin käyttää esimerkiksi seuraavasti: double dbllist[] = {-1.2, 3.4, -5.4, 9.9, 2.5}; int intlist[] = {-1, 2, 3, -5, 10, 25, 11}; lajittele<double>(dbllist,5); lajittele<int>(intlist,7); A Ohjelmointikielten periaatteet, Aliohjelmat 53

54 IV.3.7. Aliohjelmien toteuttamisesta Ohjelmarakenne vaikuttaa aliohjelmien toteutukseen aliohjelman tapaan kommunikoida muun ohjelman kanssa 1. Välittämällä aliohjelmalle parametreja 2. Ei-paikallisen informaation välityksellä Ohjelmarakenne määrää informaation näkyvyyden aliohjelmassa A Ohjelmointikielten periaatteet, Aliohjelmat 54

55 IV Ohjelmarakenteen tyypit 1. Avoimet kielet (ei rakennetta), 2. Riippumattomat kielet (ei sisäkkäisiä ohjelman osia), 3. Alisteiset kielet (sisäkkäiset osat mahdollisia), 4. Rajoitetusti alisteiset kielet A Ohjelmointikielten periaatteet, Aliohjelmat 55

56 IV Ohjelmarakenteen tyypit BASIC, COBOL avoimia FORTRAN riippumaton Pääohjelma, riippumattomia ei-sisäkkäisiä aliohjelmia, globaalit muuttujat COMMON-lauseella Pascal ja Ada alisteisia Ohjelma yhtenäinen kokonaisuus, jonka osia sen aliohjelmat ovat. Lisäksi aliohjelmat voivat sisältää aliohjelmia C/C++ rajoitetusti alisteisia Ei sisäkkäisiä aliohjelmia Aliohjelmien yläpuolella globaali alue A Ohjelmointikielten periaatteet, Aliohjelmat 56

57 IV Ohjelman osittainen kääntäminen *x++=*y++ Välttämätöntä suurten ohjelmistojen rakentamisessa Voidaan tehdä kahdella tavalla: 1. Erillinen kääntäminen (separate compilation) 2. Riippumaton kääntäminen (independent compilation) Erikseen käännettävät ohjelman osat ovat käännösyksiköitä (compilation units) A Ohjelmointikielten periaatteet, Aliohjelmat 57

58 IV Ohjelman osittainen kääntäminen (2) *x++=*y++ Riippumaton kääntäminen - käännösyksikköjen välisiä riippuvuuksia ei tarkisteta -> käännösyksiköt voidaan kääntää täysin toisistaan piittaamatta Esimerkiksi C ja FORTRAN 77 Mahdotonta alisteisissa kielissä Erillinen kääntäminen - käännösyksiköt voidaan kääntää erikseen, mutta käännöstulos riippuu kuitenkin muista käännösyksiköistä Yleensä alisteisissa kielissä A Ohjelmointikielten periaatteet, Aliohjelmat 58

59 IV Aliohjelman linkitys (subprogram linkage) Kutsun ja paluun muodostama operaatio Toteutettava tiedonsiirto aliohjelman ja kutsuvan ohjelman välillä kaikilla sallituilla tavoilla Kontrolli voitava palauttaa aliohjelmasta poistuttaessa -> kutsuvan ohjelman ajonaikainen tila on tallennettava A Ohjelmointikielten periaatteet, Aliohjelmat 59

60 IV Aliohjelman linkitys (2) Aliohjelmissa tarvitaan paikallisia muuttujia -> varattava muistitilaa Päämenetelmät staattinen ja dynaaminen allokointi Staattisessa menetelmässä varataan käännösaikana. Suorituksen kannalta tehokas, mutta resursseja kuluttava FORTRANissa käytettiin staattista menetelmää (ei dynaamisia tietoalkioita eikä rekursiivisia aliohjelmia) Yleensä nykyään dynaaminen allokointi, vaadittava tila varataan dynaamisesti aliohjelmapinosta A Ohjelmointikielten periaatteet, Aliohjelmat 60

61 IV Aktivaatiotietue Alue, johon tietoalkiot luodaan Aliohjelmaa kutsuttaessa aktivaatiotietue laitetaan pinoon, poistetaan jälleen aliohjelmasta palattaessa. FORTRANissa staattinen aktivaatiotietue, pinomuistia ei käytetä A Ohjelmointikielten periaatteet, Aliohjelmat 61

62 IV Aktivaatiotietueen osat 1. Aliohjelman paikalliset muuttujat 2. Tila funktion paluuarvolle 3. Paluuosoite kutsuvaan ohjelmaan kontrollin siirtämiseksi 4. Kutsuvan ohjelman aktivaatiotietueen sijainti, ts. pinon vanha huippuosoite eli dynaaminen linkki Näillä tiedoilla pino voidaan palauttaa aliohjelmakutsua edeltävään tilaan ja jatkaa ohjelman suoritusta aliohjelman päättyessä Joissakin kielissä tarvitaan vielä staattinen linkki eli näkyvyyslinkki A Ohjelmointikielten periaatteet, Aliohjelmat 62

63 IV Aktivaatiotietueen tyypillinen rakenne Funktion paluuarvo Paikalliset muuttujat Parametrit Dynaaminen linkki Staattinen linkki Paluuosoite A Ohjelmointikielten periaatteet, Aliohjelmat 63

64 IV Aktivaatiotietueen tyypillinen rakenne Jos kielessä ei sisäkkäisiä aliohjelmia, aliohjelmien aktivaatiotietueiden ei tarvitse tietää mitään muiden aliohjelmien tietueista Esim. C-kielessä ei-paikalliset viittaukset kohdistuvat aina globaaliin alueeseen Alisteisilla kielillä aktivaatiotietueessa informaatiota, jonka avulla aliohjelmassa voidaan käyttää muiden aliohjelmien aktivaatiotietueita Tarvitaan ei-paikallisten viittausten arvojen hakemiseksi Ei-paikallinen muuttuja voi olla esitelty pääohjelmassa tai ylemmässä aliohjelmassa A Ohjelmointikielten periaatteet, Aliohjelmat 64

65 IV Esimerkki C-ohjelman kutsupinosta, kun pääohjelma kutsuu funktiota F ja F funktiota G Pinon huippu G:n paluuarvo, muuttujat ja parametrit G:n aktivaatiotietue Dynaaminen linkki Paluuosoite = F:n osoite F:n paluuarvo, muuttujat ja parametrit F:n aktivaatiotietue Dynaaminen linkki Paluuosoite = pääohjelman osoite Pääohjelman aktivaatiotietue A Ohjelmointikielten periaatteet, Aliohjelmat 65

66 IV Näkyvyyslinkki Käytetään myös nimitystä staattinen linkki (static link, access link) Tallennetaan aliohjelman aktivaatiotietueeseen Osoittaa pinossa viimeiseen aliohjelman sisältävän aliohjelman aktivaatiotietueeseen Käytetään hakemaan tunniste ylemmästä aliohjelmasta linkkiä seuraamalla Menetelmä ei kovin tehokas, mikäli ohjelman rakenne on monimutkainen A Ohjelmointikielten periaatteet, Aliohjelmat 66

67 IV Näkyvyystaulu (display table) Tehokkaampi kuin näkyvyyslinkki Ainoa yleisesti käytetty vaihtoehtoinen menetelmä näkyvyyslinkille Näkyvyyslinkit kootaan yhteen tauluun, ei säilytetä aktivaatiotietueissa Jokaisen aliohjelmakutsun ja aliohjelmasta paluun yhteydessä näkyvyystilanne muuttuu -> ylläpito työläämpää kuin näkyvyyslinkkien Ks. tarkemmin Sebestan luku A Ohjelmointikielten periaatteet, Aliohjelmat 67

Aliohjelmat imperatiivisissa ohjelmointikielissä

Aliohjelmat imperatiivisissa ohjelmointikielissä Aliohjelmat imperatiivisissa ohjelmointikielissä Tässä dokumentissa käsitellään aliohjelmien suunnittelu- ja toteuttamisperiaatteita imperatiivisissa ohjelmointikielissä lähinnä Sebestan ([Seb], luvut

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

2) Aliohjelma, jonka toiminta perustuu sivuvaikutuksiin: aliohjelma muuttaa parametrejaan tai globaaleja muuttujia, tulostaa jotakin jne.

2) Aliohjelma, jonka toiminta perustuu sivuvaikutuksiin: aliohjelma muuttaa parametrejaan tai globaaleja muuttujia, tulostaa jotakin jne. Proseduurit Proseduuri voi olla 1) Funktio, joka palauttaa jonkin arvon: real function sinc(x) real x sinc = sin(x)/x... y = sinc(1.5) 2) Aliohjelma, jonka toiminta perustuu sivuvaikutuksiin: aliohjelma

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

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

4.2. ALIOHJELMAT 71. Tulosvälitteisyys (call by result) Tulosvälitteinen parametri kopioidaan lopuksi

4.2. ALIOHJELMAT 71. Tulosvälitteisyys (call by result) Tulosvälitteinen parametri kopioidaan lopuksi 4.2. ALIOHJELMAT 71 sisältyä kaikki tarvittavat kontrollia ohjaavat rakenteet. Jos se on lause (yleensä lohko), niin on ratkaistava, miten paluuarvo ilmaistaan. Joissakin kielissä (esimerkiksi Pascal)

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

Jakso 4 Aliohjelmien toteutus

Jakso 4 Aliohjelmien toteutus Jakso 4 Aliohjelmien toteutus Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio 1 Aliohjelmatyypit (2) Korkean tason ohjelmointikielen käsitteet: aliohjelma, proseduuri parametrit funktio parametrit,

Lisätiedot

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus Jakso 4 Aliohjelmien toteutus Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio Aliohjelmatyypit (2) Korkean tason ohjelmointikielen käsitteet: aliohjelma, proseduuri parametrit funktio parametrit,

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

Jakso 4 Aliohjelmien toteutus

Jakso 4 Aliohjelmien toteutus Jakso 4 Aliohjelmien toteutus Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio 1 Aliohjelmatyypit (2) Korkean tason ohjelmointikielen käsitteet: aliohjelma, proseduuri parametrit funktio parametrit,

Lisätiedot

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus Jakso 4 Aliohjelmien toteutus Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio Aliohjelmatyypit (2) Korkean tason ohjelmointikielen käsitteet: aliohjelma, proseduuri parametrit funktio parametrit,

Lisätiedot

Luento 4 Aliohjelmien toteutus

Luento 4 Aliohjelmien toteutus Luento 4 Aliohjelmien toteutus Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio 1 Aliohjelmatyypit (2) Korkean tason ohjelmointikielen käsitteet: aliohjelma, proseduuri parametrit funktio parametrit,

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

Jakso 4 Aliohjelmien toteutus

Jakso 4 Aliohjelmien toteutus Jakso 4 Aliohjelmien toteutus Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio 1 Aliohjelmatyypit (2) Korkean tason ohjelmointikielen käsitteet: aliohjelma, proseduuri parametrit funktio parametrit,

Lisätiedot

Jakso 4 Aliohjelmien toteutus. Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio

Jakso 4 Aliohjelmien toteutus. Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio Jakso 4 Aliohjelmien toteutus Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio 1 Aliohjelmatyypit (2) Korkean tason ohjelmointikielen käsitteet: aliohjelma, proseduuri parametrit funktio parametrit,

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

Tieto- ja tallennusrakenteet

Tieto- ja tallennusrakenteet Tieto- ja tallennusrakenteet Sisältö Tyyppi, abstrakti tietotyyppi, abstraktin tietotyypin toteutus Tallennusrakenteet Taulukko Linkitetty rakenne Abstraktit tietotyypit Lista (Puu) (Viimeisellä viikolla)

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

Luento 4 (verkkoluento 4) Aliohjelmien toteutus

Luento 4 (verkkoluento 4) Aliohjelmien toteutus Luento 4 (verkkoluento 4) Aliohjelmien toteutus Tyypit, Parametrit Aktivaatiotietue (AT) AT-pino, rekursio 1 Aliohjelmatyypit Korkean tason ohjelmointikielen käsitteet aliohjelma, proseduuri Parametrit

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

Luento 4 Aliohjelmien toteutus

Luento 4 Aliohjelmien toteutus Luento 4 Aliohjelmien toteutus Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio 1 Aliohjelmatyypit (2) Korkean tason ohjelmointikielen käsitteet aliohjelma, proseduuri parametrit funktio parametrit,

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

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

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

Luento 4 (verkkoluento 4) Aliohjelmien toteutus

Luento 4 (verkkoluento 4) Aliohjelmien toteutus Luento 4 (verkkoluento 4) Aliohjelmien toteutus Tyypit, Parametrit Aktivointitietue (AT) AT-pino, rekursio 1 Aliohjelmatyypit Korkean tason ohjelmointikielen käsitteet aliohjelma, proseduuri Parametrit

Lisätiedot

Luento 4 Aliohjelmien toteutus

Luento 4 Aliohjelmien toteutus Luento 4 Aliohjelmien toteutus Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio 1 Aliohjelmatyypit (2) Korkean tason ohjelmointikielen käsitteet aliohjelma, proseduuri parametrit funktio parametrit,

Lisätiedot

Luento 4 Aliohjelmien toteutus. Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio

Luento 4 Aliohjelmien toteutus. Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio Luento 4 Aliohjelmien toteutus Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio 1 Aliohjelmatyypit (2) Korkean tason ohjelmointikielen käsitteet aliohjelma, proseduuri parametrit funktio parametrit,

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

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

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 12. huhtikuuta 2019 Tee kukin tehtävä omalle konseptiarkille. Noudata ohjelmointitehtävissä kurssin koodauskäytänteitä. Yksi A4-kokoinen lunttilappu

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

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

Tutoriaaliläsnäoloista

Tutoriaaliläsnäoloista Tutoriaaliläsnäoloista Tutoriaaliläsnäolokierroksella voi nyt täyttää anomuksen läsnäolon merkitsemisestä Esim. tagi ei toiminut, korvavaltimon leikkaus, yms. Hyväksyn näitä omaa harkintaa käyttäen Tarkoitus

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

Taulukot. Taulukon määrittely ja käyttö. Taulukko metodin parametrina. Taulukon sisällön kopiointi toiseen taulukkoon. Taulukon lajittelu

Taulukot. Taulukon määrittely ja käyttö. Taulukko metodin parametrina. Taulukon sisällön kopiointi toiseen taulukkoon. Taulukon lajittelu Taulukot Taulukon määrittely ja käyttö Taulukko metodin parametrina Taulukon sisällön kopiointi toiseen taulukkoon Taulukon lajittelu esimerkki 2-ulottoisesta taulukosta 1 Mikä on taulukko? Taulukko on

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

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

Algoritmit 1. Luento 3 Ti Timo Männikkö

Algoritmit 1. Luento 3 Ti Timo Männikkö Algoritmit 1 Luento 3 Ti 17.1.2017 Timo Männikkö Luento 3 Algoritmin analysointi Rekursio Lomituslajittelu Aikavaativuus Tietorakenteet Pino Algoritmit 1 Kevät 2017 Luento 3 Ti 17.1.2017 2/27 Algoritmien

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

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

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

15. Ohjelmoinnin tekniikkaa 15.1

15. Ohjelmoinnin tekniikkaa 15.1 15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Geneerinen ohjelmointi. Lueteltu tyyppi enum. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien silmukoimiseen:

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

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

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

19. Olio-ohjelmointia Javalla 19.1

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

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

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

Ohjelmointikieli TIE Principles of Programming Languages Syksy 2017 Ryhmä 19

Ohjelmointikieli TIE Principles of Programming Languages Syksy 2017 Ryhmä 19 Ohjelmointikieli TIE-20306 Principles of Programming Languages Syksy 2017 Ryhmä 19 Juho Kärnä Ville Mäntysaari 1. Johdanto D on yleiskäyttöinen, strukturoitu, staattisesti tyypitetty, käännettävä ohjelmointikieli

Lisätiedot

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2 4. Attribuutit 4.1 Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2 Yleistä Luokan lohkossa, mutta metodien ulkopuolella esiteltyjä muuttujia ja vakioita. Esittely

Lisätiedot

Rajapinta (interface)

Rajapinta (interface) 1 Rajapinta (interface) Mikä rajapinta on? Rajapinta ja siitä toteutettu luokka Monimuotoisuus ja dynaaminen sidonta Rajapinta vs periytyminen 1 Mikä rajapinta on? Rajapintoja käytetään, kun halutaan määritellä

Lisätiedot

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

TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 13. lokakuuta 2009 TIE448 Kääntäjätekniikka, syksy 2009 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 13. lokakuuta 2009 Sisällys Sisällys Seuraava deadline Vaihe C tiistai 20.10. klo 10 kielivirheiden diagnoosi, sokerin

Lisätiedot

15. Ohjelmoinnin tekniikkaa 15.1

15. Ohjelmoinnin tekniikkaa 15.1 15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Lueteltu tyyppi enum. Override-annotaatio. Geneerinen ohjelmointi. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien

Lisätiedot

Monipuolinen esimerkki

Monipuolinen esimerkki Monipuolinen esimerkki Lopuksi monipuolinen esimerkki, jossa ohjelmisto koostuu pääohjelmasta ja kahdesta aliohjelmasta, joista toinen on proseduuri ja toinen funktio. Funktio Sqrt(int n): int Sqrt(int

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

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

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

Kehittää ohjelmointitehtävien ratkaisemisessa tarvittavia metakognitioita!

Kehittää ohjelmointitehtävien ratkaisemisessa tarvittavia metakognitioita! Kehittää ohjelmointitehtävien ratkaisemisessa tarvittavia metakognitioita! eli... Hyvä kaava sanoo enemmän kuin,... tuhat riviä koodia!... sata riviä tekstiä!... kymmenen diagrammia! Sopimusohjelmointi

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

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

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä Ohjelmoinnin peruskurssien laaja oppimäärä Luento 5: Sijoituslause, SICP-oliot, tietorakenteen muuttaminen (mm. SICP 33.1.3, 3.33.3.2) Riku Saikkonen 6. 11. 2012 Sisältö 1 Muuttujan arvon muuttaminen:

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 6 Vastaukset Harjoituksen aiheena on funktionaalinen ohjelmointi Scheme- ja Haskell-kielillä. Voit suorittaa ohjelmat osoitteessa https://ideone.com/

Lisätiedot

Aliohjelmat. 1 Kutsusekvenssit. Antti-Juhani Kaijanaho 5. helmikuuta 2007

Aliohjelmat. 1 Kutsusekvenssit. Antti-Juhani Kaijanaho 5. helmikuuta 2007 Aliohjelmat Antti-Juhani Kaijanaho 5. helmikuuta 2007 1 Kutsusekvenssit Aliohjelmaan kontrolli siirtyy sen kutsun (engl. call) kautta. Kun aliohjelman suoritus päättyy, kontrolli siirtyy takaisin sinne,

Lisätiedot

Imperatiivisen ohjelmoinnin peruskäsitteet. Meidän käyttämän pseudokielen lauseiden syntaksi

Imperatiivisen ohjelmoinnin peruskäsitteet. Meidän käyttämän pseudokielen lauseiden syntaksi Imperatiivisen ohjelmoinnin peruskäsitteet muuttuja muuttujissa oleva data voi olla yksinkertaista eli primitiivistä (esim. luvut ja merkit) tai rakenteista jolloin puhutaan tietorakenteista. puhuttaessa

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

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

Sisällys. Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2

Sisällys. Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2 6. Metodit 6.1 Sisällys Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2 Oliot viestivät metodeja kutsuen Olio-ohjelmoinnissa ohjelma

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

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

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

Lisätiedot

Tietotekniikan valintakoe

Tietotekniikan valintakoe Jyväskylän yliopisto Tietotekniikan laitos Tietotekniikan valintakoe 2..22 Vastaa kahteen seuraavista kolmesta tehtävästä. Kukin tehtävä arvostellaan kokonaislukuasteikolla - 25. Jos vastaat useampaan

Lisätiedot

Java kahdessa tunnissa. Jyry Suvilehto

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

Lisätiedot

Käännös, linkitys ja lataus

Käännös, linkitys ja lataus Luento 10 (verkkoluento 10) Käännös, linkitys ja lataus Ohjelmasta prosessiin Käännösyksikkö Kääntämisen vaiheet Makrot, literaalit Staattinen ja dynaaminen linkitys Nimien sidonta Lausekielestä suoritukseen

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

A274101 TIETORAKENTEET JA ALGORITMIT

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

Lisätiedot

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

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

812341A Olio-ohjelmointi Peruskäsitteet jatkoa 812341A Olio-ohjelmointi 2106 Peruskäsitteet jatkoa Luokkakohtaiset piirteet n Yhteisiä kaikille saman luokan olioille n Liittyvät luokkaan, eivät yksittäiseen olioon n Kaikki ko. luokan oliot voivat käyttää

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti Tentaattori: Antti-Jussi Lakanen 20. toukokuuta 2016 Yleistä Tentti 1 oli pistekeskiarvon (11.6) perusteella vaikea. Omasta tehtäväpaperista saa kopion Antti-Jussilta,

Lisätiedot

18. Abstraktit tietotyypit 18.1

18. Abstraktit tietotyypit 18.1 18. Abstraktit tietotyypit 18.1 Sisällys Johdanto abstrakteihin tietotyyppeihin. Pino ja jono. Linkitetty lista. Pino linkitetyllä listalla toteutettuna. 18.2 Johdanto Javan omat tietotyypit ovat jo tuttuja:

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

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

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

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti Tentaattori: Antti-Jussi Lakanen 8. kesäkuuta 2018 Yleistä Tentti 1 meni pistekeskiarvon (11.2) perusteella välttävästi. Omasta tehtäväpaperista saa kopion

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

815338A Ohjelmointikielten periaatteet 2014-2015

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

Lisätiedot

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä Matti Luukkainen 10.12.2009 Tässä esitetty esimerkki on mukaelma ja lyhennelmä Robert Martinin kirjasta Agile and Iterative Development löytyvästä

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

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

4. Olio-ohjelmoinista lyhyesti 4.1

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

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

Tietorakenteet. JAVA-OHJELMOINTI Osa 5: Tietorakenteita. Sisällys. Merkkijonot (String) Luokka String. Metodeja (public)

Tietorakenteet. JAVA-OHJELMOINTI Osa 5: Tietorakenteita. Sisällys. Merkkijonot (String) Luokka String. Metodeja (public) Tietorakenteet JAVA-OHJELMOINTI Osa 5: Tietorakenteita Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto Olioita ja tietoja voidaan organisoida määrämuotoisiksi tietorakenteiksi Hyödyllisiä

Lisätiedot

TIE PRINCIPLES OF PROGRAMMING LANGUAGES Eiffel-ohjelmointikieli

TIE PRINCIPLES OF PROGRAMMING LANGUAGES Eiffel-ohjelmointikieli TIE-20306 PRINCIPLES OF PROGRAMMING LANGUAGES Eiffel-ohjelmointikieli Seminaariesitelmä ryhmä 24 Markku Ahokas Jani Kuitti i SISÄLLYSLUETTELO 1. YLEISTÄ EIFFELISTÄ... 1 1.1 Historia ja tausta... 1 1.2

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

Sisällys. 6. Metodit. Oliot viestivät metodeja kutsuen. Oliot viestivät metodeja kutsuen

Sisällys. 6. Metodit. Oliot viestivät metodeja kutsuen. Oliot viestivät metodeja kutsuen Sisällys 6. Metodit Oliot viestivät metodeja kutsuen. Kuormittaminen. Luokkametodit (ja -attribuutit).. Metodien ja muun luokan sisällön järjestäminen. 6.1 6.2 Oliot viestivät metodeja kutsuen Oliot viestivät

Lisätiedot

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet 811120P Diskreetit rakenteet 2016-2017 4. Joukot, relaatiot ja funktiot Osa 3: Funktiot 4.3 Funktiot Olkoot A ja B joukkoja. Funktio joukosta A joukkoon B on sääntö, joka liittää yksikäsitteisesti määrätyn

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 16.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 16.2.2010 1 / 41 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti

Lisätiedot

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen Chapel TIE-20306 Ryhmä 91 Joonas Eloranta Lari Valtonen Johdanto Chapel on Amerikkalaisen Cray Inc. yrityksen kehittämä avoimen lähdekoodin ohjelmointikieli. Chapel on rinnakkainen ohjelmointikieli, joka

Lisätiedot

1. Miten tehdään peliin toinen maila?

1. Miten tehdään peliin toinen maila? Muilla kielillä: English Suomi Pong-peli, vaihe 4 Tässä oppaassa teemme toisenkin mailan. 1. Miten tehdään peliin toinen maila? Maila tehtiin edellisessä vaiheessa, aliohjelmassa LuoKentta, seuraavasti:

Lisätiedot