815338A Ohjelmointikielten periaatteet
|
|
- Jarkko Tamminen
- 7 vuotta sitten
- Katselukertoja:
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ä Tässä dokumentissa käsitellään aliohjelmien suunnittelu- ja toteuttamisperiaatteita imperatiivisissa ohjelmointikielissä lähinnä Sebestan ([Seb], luvut
Lisätiedot815338A 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ätiedot2) 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ätiedotOsoitin 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ätiedot815338A 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ätiedot815338A 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ätiedot4.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ätiedotOperaattoreiden 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ätiedotJakso 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ätiedotAliohjelmatyypit (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ätiedotSisä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ätiedotJakso 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ätiedotAliohjelmatyypit (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ätiedotLuento 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ätiedot1. 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ätiedotJakso 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ätiedotJakso 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ätiedotC-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ätiedotTieto- ja tallennusrakenteet
Tieto- ja tallennusrakenteet Sisältö Tyyppi, abstrakti tietotyyppi, abstraktin tietotyypin toteutus Tallennusrakenteet Taulukko Linkitetty rakenne Abstraktit tietotyypit Lista (Puu) (Viimeisellä viikolla)
Lisätiedot11/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ätiedotLuento 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ätiedotSisä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ätiedotLuento 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ätiedotYleistä. 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ätiedotITKP102 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ätiedotMetodit. 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ätiedotLuento 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ätiedotLuento 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ätiedotLuento 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ätiedotOhjelmoinnin 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ätiedotLuokassa 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ätiedotC++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ätiedotITKP102 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ätiedotSisä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ätiedotLyhyt 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ätiedotTutoriaalilä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ätiedotRakenteiset 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ätiedotTaulukot. 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ätiedotOlio-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ätiedotITKP102 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ätiedotAlgoritmit 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ätiedotITKP102 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ätiedotOhjelmassa 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ätiedotSisä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ätiedot15. 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ätiedot1. 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ätiedotTIE448 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ätiedot815338A 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ätiedot19. 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ätiedotOhjelmointi 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ätiedot815338A 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ätiedotOhjelmointikieli 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ätiedotSisä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ätiedotRajapinta (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ätiedotTIE448 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ätiedot15. 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ätiedotMonipuolinen 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ätiedotOlion 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ätiedotTaulukot. 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ätiedot12 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ätiedotKehittää 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ätiedotOsoittimet 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ätiedot7. 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ätiedotOhjelmoinnin 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ätiedot815338A 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ätiedotAliohjelmat. 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ätiedotImperatiivisen 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ätiedotJava-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ätiedotJAVA-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ätiedotSisä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ätiedot815338A 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ätiedotSisä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ätiedotTietotekniikan 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ätiedotJava 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ätiedotKää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ätiedotOsoittimet 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ätiedotA274101 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ätiedotSisä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ätiedot812341A 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ätiedotITKP102 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ätiedot18. 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ätiedotGeneeriset 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ätiedot4. 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ätiedotJava-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ätiedotITKP102 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ätiedot812347A 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ätiedot815338A 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ätiedotOliosuunnitteluesimerkki: 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ätiedottietueet 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ätiedotOlio-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ätiedot4. 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ätiedot5.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ätiedotTietorakenteet. 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ätiedotTIE 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ätiedotD-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ätiedotSisä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ätiedot811120P 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ätiedotOhjelmoinnin 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ätiedotChapel. 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ätiedot1. 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