sama tyyppi (joka vastaa kaikkien mahdollisten arvojen summa-aluetta). Esimerkiksi
|
|
- Aapo Lehtinen
- 7 vuotta sitten
- Katselukertoja:
Transkriptio
1 3.5. TYYPIT Kielitason tyypit Staattinen tyypitys Kielitasolla tyyppejä käytetään sulkemaan pois joitakin merkittäviä ja automaattisesti tunnistettavissa olevia merkitysopillisia virheitä (oliotason tyyppivirheet osa arvotason -arvoista). Tämä toteutetaan staattisella tyyppitarkastuksella (static typechecking), jossa toteutus diagnosoi tyyppivirheet ennen suorituksen alkua. Mikäli kielen määrittely vaatii staattisen tyyppitarkastuksen, kieli on staattisesti tyypitetty (static typing). Dynaamisesti tyypitetyt kielet ovat kielitasolla tarkasteltuna tyypittömiä (untyped) muuttujilla ei ole tyyppejä, tai sanoen toisin, kaikilla muuttujilla on sama tyyppi (joka vastaa kaikkien mahdollisten arvojen summa-aluetta). Esimerkiksi Luca Cardellin ansiokkaassa tyyppijärjestelmäartikkelissa 8 koko terminologia määritellään kielitason näkökulmasta oliotason tyypille ei edes anneta nimeä, vaikka oliotason tyyppivirheelle tämä tehdään. Kielitason tyyppejä Yksinkertaiset tyypit Arvotason rakenteen pohjalla ovat yksinkertaiset alueet, oliotyyppien perusosaset ovat perustyyppejä. Samoin myös kielitason tyyppijärjestelmän perustana ovat yksinkertaiset tyypit (simple types) eli perustyypit (basic types) eli skalaarityypit (scalar types). Yksinkertaiset tyypit vastaavat suoraan yksinkertaisia alueita ja oliotason perustyyppejä. Niinpä näitä ovat erilaiset kokonaislukutyypit ja liukulukutyypit, jotka edustavat sopivia oliotason tyyppejä. Näiden lisäksi yksinkertaisiksi tyypeiksi lasketaan luettelotyypit (enumeration types). Luettelotyypillä tarkoitetaan tyyppiä, joka sisältää äärellisen määrän arvoja joita ohjelmakoodissa edustaa joukko nimiä. Esimeriksi Haskellin määrittely data Viikonpäivät = Maanantai Tiistai Keskiviikko Torstai Perjantai Lauantai Sunnuntai 8. Luca Cardelli: Type Systems. Julkaistu kirjan Handbook of Computer Science and Engineering lukuna 103, CRC Press 1997 sekä Internetissä osoitteessa com/users/luca/papers/typesystems.a4.ps
2 52 LUKU 3. MUUTTUJAT, ARVOT, OLIOT JA TYYPIT määrittelee luettelotyypin Viikonpäivät, jolla on seitsemän ( :sta eroavaa) arvoa. Kukin määrittelyn yhteydessä mainituista nimistä (Maanantai, Tiistai, Keskiviikko, Torstai, Perjantai, Lauantai, Sunnuntai) sidotaan määrittelyssä staattisesti yhteen näistä arvoista (niin, että jokainen arvo tulee sidotuksi johonkin nimeen). Vastaavasti Pascalissa voidaan kirjoittaa type viikonpaiva = (maanantai, tiistai, keskiviikko, torstai, perjantai, lauantai, sunnuntai); Joissakin kielissä luettelotyypit ovat järjestettyjä, joissakin ei (esimerikiksi Haskellissa pitää määrittelyn lopussa erikseen mainita, jos haluaa tyypin olevan järjestetty, Pascalissa luettelotyyppi on aina järjestetty sen mukaan, missä järjestyksessä arvoje nimet luetellaan määrittelyssä). Useimmissa kielissä on jo kielen määrittelyssä (tai varuskirjastossa) määritelty totuusarvojen tyyppi (yleensä nimeltään bool, Bool, boolean tai Boolean). Se voidaan kaikissa tapauksissa ymmärtää ainakin käsitteellisesti luettelotyypiksi. Esimerkiksi Haskellin varuskirjasto (Haskell Standard Prelude) määrittelee seuraavaa: data Bool = False True Vastaavasti C99:n 9 tyyppi bool voitaisiin ajatella määritellyksi seuraavasti: enum bool { true, false }; (Oikeasti bool on makro, joka lavenee varustyypiksi (predefined type) _Bool, ja true ja false ovat makroja, jotka lavenevat vakioiksi 1 ja 0.) Toinen luettelotyypiksi käsitettävissä oleva tyyppi on merkkityyppi. Tällöin tosin pitää mielikuvitusta venyttää hieman enemmän kuin edellä, sillä merkkiliteraalit eivät ole kieliopillisesti kelvollisia nimiä. Mutta jos ne sallittaisiin nimiksi, voitaisiin esimerkiksi Haskellissa kirjoittaa jotain seuraavan kaltaista: data Char =... a b... Joissain kielissä (esimerkiksi C:ssä ja C++:ssa) luettelotyypit ovat lähinnä kokonaislukutyyppejä. Lähes kaikissa suhteissa C++:n määrittely enum season { winter, spring, summer, autumn }; vastaa määrittelyä class season { int val; public: explicit season(int val) : val(val) {} operator int () { return val; } }; 9. Programming languages C. International standard ISO/IEC 9899:1999(E), 1999.
3 3.5. TYYPIT 53 static const season winter(0); static const season spring(1); static const season summer(2); static const season autumn(3); Muissakin kielissä luettelotyyppejä vastaa oliotasolla kokonaislukutyyppi. Osavälityyppejä (subrange types) voidaan käyttää lähes kaikissa Algol-sukuisissa kielissä Pascalista alkaen. Kyse on tyypistä, joka sisältää osavälin jostakin järjestetystä tyypistä (sen päätyyppi, base type, parent type). Tavallisesti päätyypiksi kelpaa vain kokonaislukutyyppi tai luettelotyyppi. Esimerkiksi Pascalissa voidaan määritellä type koepisteet = 0..24; arkipaiva = maanantai..lauantai; Tietueet Tietuetyypin (record type, structure type) arvot ovat tuloalueen alkioita, tietuetyypin oliot ovat monikkoja. Tietueolion kullakin alkiolla eli tietuearvon kullakin projektiolla (eli tietueen kentällä, field) on nimi, joka on kiinnitetty tyypin määrittelyssä. Tietuetyyppiä olevan muuttujan perään kirjoitetaan tyypillisesti piste ja halutun kentän nimi. Tällainen konstruktio on kyseisen olion kyseistä kenttää edustava l-arvo 10. Esimerkiksi C:ssä voidaan määritellä seuraavanlainen tietuetyyppi ja tietue struct paivays { int p; int kk; int v; }; struct paivays tanaan = { 14, 10, 2002 }; Tällöin lauseke tanaan.p viittaa sen olion ensimmäiseen alkioon, joka on sidottu muuttujaan tanaan, ja siis myös kyseisen olion arvon ensimmäiseen projektioon. Yön yli nukuttua on hyvä sanoa tanaan.p = tanaan.p + 1; if (((tanaan.kk == 3 tanaan.kk == 5 tanaan.kk == 7 tanaan.kk == 8 tanaan.kk == 10 tanaan.kk == 12) && tanaan.pp == 31) ((tanaan.kk == 4 tanaan.kk == 6 tanaan.kk == 9 tanaan.kk == 11) 10. L-arvolla (l-value) tarkoitetaan kielen abstraktin syntaksin lauseketta, joka voi toimia jonkin olion nimenä, siis sijoituslauseen vasemmalla puolella.
4 54 LUKU 3. MUUTTUJAT, ARVOT, OLIOT JA TYYPIT && tanaan.pp == 30) (tanaan.kk == 2 && ((!((tanaan.v % 4 == 0 && tanaan.v % 100!= 0) tanaan.v % 400 == 0) && tanaan.pp == 28) (((tanaan.v % 4 == 0 && tanaan.v % 100!= 0) tanaan.v % 400 == 0) && tanaan.pp == 29)))) { tanaan.kk = tanaan.kk + 1; tanaan.p = 1; } if (tanaan.kk > 12) { tanaan.kk = 1; tanaan.v = tanaan.v + 1; } (Tai oikeastaan ei: oikeasti kuukauden vaihdos kannattaa hoitaa taulukoimalla.) Jotkin kielet sallivat muuttuvia tietueita (variant records). Tällöin osa tietueen kentistä vaihtelee sen mukaan, mikä arvo jollakin toisella tietueen kentällä on. Esimerkiksi Pascalissa voidaan kirjoittaa seuraavasti: type string = packed array [0..maxlen] of char; type symkind = (variable, function); type symbol = record nimi : string; case kind : symkind of variable : ( depth : integer; displacement : integer; ); function : ( parameter_count : integer; call_address : integer; ) end; Tällöin tyypin symbol muuttujien sisältönä on merkkijono nimi sekä tieto (kentässä kind) siitä, onko kyseessä muuttuja vai funktio; jos kyseessä on muuttuja, tässä symbol-muuttujassa on kentät depth ja displacement, joita käytetään muuttujanhakukoodin generoinnissa; jos kyseessä on funktio, symbol-muuttujassa on kentät parameter_count, jota käytetään kutsun tyyppitarkastuksessa, ja call_addresss, jota käytetään kutsukoodin generoin-
5 3.5. TYYPIT 55 nissa. Muuttuvat tietueet toteutetaan luonnollisesti monikko-olioina, joissa on sisällä laputettu yhdisteolio. Algebralliset tyypit Haskellissa voidaan kirjoittaa seuraavasti: data Lauseke = Plus Lauseke Lauseke Miinus Lauseke Lauseke Kerto Lauseke Lauseke Jako Lauseke Lauseke Jaannos Lauseke Lauseke Kokonaisluku Integer Liukuluku Double Tämä määrittelee tyypin nimeltä Lauseke, jonka arvoalue Lauseke on määriteltävissä seuraavasti: I = {Plus, Miinus, Kerto, Jako, Jaannos, Kokonaisluku, Liukuluku} S Plus = Lauseke Lauseke S Miinus = Lauseke Lauseke S Kerto = Lauseke Lauseke S Jako = Lauseke Lauseke S Jaannos = Lauseke Lauseke S Kokonaisluku = Integer S Liukuluku = Double Lauseke = i I S i Huomaa, että luettelotyypit voidaan nähdä algebrallisten tyyppien erikoistapauksena. Tyypin Lauseke määrittelyn vaikutusalueella voidaan nimiä Plus, Miinus, Kerto, Jako, Jaannos, Kokonaisluku ja Liukuluku käyttää koostinfunktioina (constructor), joista kaksi viimeistä ottavat yhden parametrin (Kokonaisluku ottaa parametrin tyyppiä Integer, Liukuluku ottaa Doublen) ja loput ottavat kaksi Lauseke-tyyppistä parametria. Näiden koostinfunktioiden merkitysoppi on seuraava (tarkastellaan esimerkin vuoksi vain Pluskoostinta): Plus : Lauseke Lauseke Lauseke Plus x y = (Plus, (x, y))
6 56 LUKU 3. MUUTTUJAT, ARVOT, OLIOT JA TYYPIT Lauseke-parametrin ottavia funktioita voidaan Haskellissa määritellä paloittain hahmontunnistuksella siten, että parametrin paikalle kirjoitetaan jokin koostimista ja sen parametreiksi nimiä (tai sitten muita samanlaisia hahmoja): sievenna :: Lauseke -> Lauseke sievenna (Plus (Kokonaisluku i) (Kokonaisluku j)) = Kokonaisluku (i + j) sievenna (Miinus (Kokonaisluku i) (Kokonaisluku j)) = Kokonaisluku (i - j) sievenna (Kerto (Kokonaisluku i) (Kokonaisluku j)) = Kokonaisluku (i * j)... Tyyppejä, 1. jotka ovat merkitykseltään tuloalueiden summa-alueita, joissa summaalueen laput voidaan valita vapaasti, 2. joiden laput toimivat koostinfunktioina lausekkeissa, ja 3. joiden arvoja voidaan sovittaa lapuista ja muista hahmoista koostettuun hahmoon, kun funktioita määritellään paloittain, sanotaan algebrallisiksi (algebraic types). Algebrallisia tietotyyppejä on nykyisin lähinnä sellaisissa kielissä kuin ML, Haskell ja Pizza 11. Algebralliset tyypit ovat luonnostaan rekursiivisia: on mahdollista kirjoittaa tyypinmäärittely, jossa määriteltävä tyyppi itse esiintyy koostimen parametrityyppinä. Tätä ominaisuutta tarvitaan useimpien kehittyneiden tietorakenteiden (kuten puut ja verkot) toteuttamiseen. Abstraktit tyypit Abstrakti tyyppi (abstract type) on tyyppi, jonka rakenne on piilotettu. Tyypin käyttäjälle annetaan joukko nimiä, joiden tyyppisidonta kerrotaan. Tyypin käyttäjä voi käsitellä tyypin olioita ja arvoja vain näiden nimien (joista suurin osa on epäilemättä funktioita) avulla. Esimerkiksi C:ssä seuraava otsikkotiedosto määrittelee abstraktit tyypit symbol_table_t ja scope_ ref_t: #ifndef SYMBOL_TABLE_H #define SYMBOL_TABLE_H typedef struct symbol_table * symbol_table_t; typedef struct scope_ref * scope_ref_t; 11. Ks.
7 3.5. TYYPIT 57 symbol_table_t symbol_table_new(void); void symbol_table_delete(symbol_table_t); void enter_new_scope(symbol_table_t, int closed_p); void leave_scope(symbol_table_t); scope_ref_t get_current_scope(symbol_table_t); void enter_old_scope(symbol_table_t, scope_ref_t); void insert_symbol(symbol_table_t, char const *, void * data); void * lookup_symbol(symbol_table_t, char const *); #endif /* SYMBOL_TABLE_H */ Erillisessä.c-tiedostossa on sitten näiden tyyppien ja funktioiden toteutukset, jotka eivät näy tyypin käyttäjälle. Joissakin kielissä abstrakteihin tyyppeihin voi liittää spesifikaatiota: funktioille saatetaan voida määritellä esiehtoja ja jälkiehtoja, funktioiden välisiä suhteita voidaan rajoittaa kiinnittämällä niille päteviä yhtälöitä ynnä muuta sellaista. Tällaiset spesifikaatiopredikaatit ovat osa abstraktin tyypin rajapintaa: toteutuksen on täytettävä niissä esitetyt vaatimukset, mutta se voi olettaa esiehtojen pätemisen, tyypin käyttäjän on puolestaan huolehdittava, että esiehdot pätevät, mutta se voi olettaa jälkiehtojen ja yhtälöiden pätevän. Tällaiset kielet ovat harvinaisuuksia tiedeyhteisön ulkopuolella; Eiffel lienee tunnetuin. Muita tällaisia kieliä ovat Alphard ja Euclid. Lisäksi monet formaalit menetelmät sisältävät tukea ohjelmoinnille, jolloin mukaan tulevat myös tällaiset keinot. Luokat ja rajapinnat Luokka on olio-ohjelmoinnin tärkein tyyppikäsite. Luokalla on seuraavat merkittävät ominaisuudet: Kapselointi Luokka määrittelee paitsi arvojen ja olioiden rakenteen, myös sen, mitä niillä voi tehdä. Toisin sanoen luokkaan sisältyy eräänlaisia etuoikeutettuja aliohjelmia eli metodeita (methods). Mikäli luokka jättää määrittelemättä yhdenkin metodin toiminnallisuuden (jolloin kyseessä on abstrakti metodi, abstract method), luokka on abstrakti (abstract class). Arvojen ja olioiden rakenne on luokkatyypeissä lähes aina tuloalue ja monikko; tämä määritellään samaan tapaan kuin tietueiden tapauksessa määrittelemällä attribuutteja (attributes) (tietueterminologiassa kenttiä). Perintä Luokka voidaan määritellä perimään kaikki jonkin toisen luokan ominaisuudet (attribuutit ja metodit). Tällöin tästä luokasta tulee perityn luokan alityyppi (subtype) eli aliluokka (subclass) eli johdettu luok-
8 58 LUKU 3. MUUTTUJAT, ARVOT, OLIOT JA TYYPIT ka (derived class); perittyä luokkaa sanotaan tämän luokan ylityypiksi (supertype) eli yliluokaksi (superclass) eli kantaluokaksi (base class). Luokan olio voi toimia kantaluokkansa oliona kaikissa tilanteissa. Monimuotoisuus Luokan metodi voi syrjäyttää (refine, override) kantaluokassa määritellyn metodin. Mikäli tällöin oliota käytetään kantaluokan oliona ja kutsutaan kantaluokan syrjäytettyä metodia, kuitenkin suoritetaan se metodi, joka tuon metodin oli syrjäyttänyt. Tätä monimuotoisuustyyppiä sanotaan sisällytysmonimuotoisuudeksi (inclusion polymorphism). Luokkainvariantti Hyvin monilla luokilla on attribuuttien arvojen kombinaatioita, jotka ovat mielettömiä luokan tehtävän kannalta. Jokaiseen luokkaan liittyy predikaatti, jossa luokan attribuutit esiintyvät vapaina, ja joka on tosi täsmälleen silloin, kun attribuuttien arvot muodostavat mielekkään kombinaation. Tätä predikaattia sanotaan luokkainvariantiksi (class invariant) useimmat kielet eivät tue sitä suoraan, mutta poikkeuksiakin on, tunnetuin niistä on Eiffel. Luokan metodeilla on vastuu siitä, että ne säilyttävät luokkainvariantin toisin sanoen, mikäli luokkainvariantti pätee metodin suorituksen alkaessa, sen tulee päteä myös metodin suorituksen päättyessä. Luokalla on rakennin (constructor 12 ), jonka tehtävänä on alustaa olion tila (attribuutit) sellaiseksi, että luokkainvariantti pätee. Rakennin ajetaan aina heti olion syntymän jälkeen. Joissakin kielissä rakentimia voi luokassa olla useita ja niille voi antaa argumentteja, joiden perusteella rakennin alustuksensa tekee. Luokkien oliot ovat kaikki OO-olioita. Javassa osaa luokista kutsutaan rajapinnoiksi (interface). Ne eroavat tavallisista luokista paitsi kieliopillisesti myös siten, että ne eivät sisällä lainkaan attribuutteja ja kaikki sen metodit ovat abstrakteja. Rajapinnat ovat siis eräänlaisia abstrakteja tietotyyppejä. Taulukot Merkittävin ero oliotason ja kielitason välillä taulukoiden suhteen on se, että kielitasolla indeksointi ei suinkaan aina ala nollasta. Joissakin kielissä taulukon indeksointi alkaa aina ykkösestä, ja monessa kielessä taulukon indeksityypiksi kelpaa myös mikä tahansa osavälityyppi (jolloin indeksien rajat riippuvat tyypistä). Kuitenkin niin kauan, kun indeksityyppi on toteutettu kokonaislukuvälinä ja sen alin arvo tiedetään ennen suorituksen alkamista, 12. Rakentimia ei pidä sekoittaa algebrallisten tyyppien ja Scottin alueiden koostimiin, vaikka englanninkielinen termi onkin sama.
lausekkeiden tapauksessa. Jotkin ohjelmointikielet on määritelty sellaisiksi,
3.5. TYYPIT 59 indeksit voidaan siirtää kielitasolta oliotasolle siirryttäessä alkamaan nollasta. Vain mikäli indeksin alin arvo oliotasolla ei ole tiedossa ennen suorituksen alkua, on tarpeen lisätä taulukko-olioon
Lisätiedottään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla
2.5. YDIN-HASKELL 19 tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla kirjaimilla. Jos Γ ja ovat tyyppilausekkeita, niin Γ on tyyppilauseke. Nuoli kirjoitetaan koneella
LisätiedotTIES542 kevät 2009 Tyyppijärjestelmän laajennoksia
TIES542 kevät 2009 Tyyppijärjestelmän laajennoksia Antti-Juhani Kaijanaho 16. helmikuuta 2009 Tyypitetyt ohjelmointikielet sisältävät paljon muitakin konstruktioita kuin yksinkertaisesti tyypitetyn lambda-kielen,
LisätiedotHarjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:
Harjoitus 7 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti: class Lintu //Kentät private int _siivenpituus; protected double _aivojenkoko; private bool _osaakolentaa; //Ominaisuudet public int
LisätiedotTietueet. Tietueiden määrittely
Tietueet Tietueiden määrittely Tietue on tietorakenne, joka kokoaa yhteen eri tyyppistä tietoa yhdeksi asiakokonaisuudeksi. Tähän kokonaisuuteen voidaan viitata yhteisellä nimellä. Auttaa ohjelmoijaa järjestelemään
Lisä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ä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ä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ätiedotHaskell ohjelmointikielen tyyppijärjestelmä
Haskell ohjelmointikielen tyyppijärjestelmä Sakari Jokinen Helsinki 19. huhtikuuta 2004 Ohjelmointikielten perusteet - seminaarityö HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos 1 Johdanto 1 Tyyppien
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ä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ä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ätiedotLaajennetaan vielä Ydin-Haskellia ymmärtämään vakiomäärittelyt. Määrittely on muotoa
2.6. TIETOKONE LASKIMENA 23 Edellä esitetty Ydin-Haskell on hyvin lähellä sitä kieltä, jota GHCi (Glasgow Haskell Compiler, Interactive) sekä muut Haskell-järjestelmät suostuvat ymmärtämään. Esimerkiksi:
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ätiedotOliot ja tyypit. TIES542 Ohjelmointikielten periaatteet, kevät Antti-Juhani Kaijanaho. Jyväskylän yliopisto Tietotekniikan laitos
Oliot ja tyypit TIES542 Ohjelmointikielten periaatteet, kevät 2007 Antti-Juhani Kaijanaho Jyväskylän yliopisto Tietotekniikan laitos 19. maaliskuuta 2007 Olion tyyppi? attribuutti on oikeastaan metodi,
LisätiedotAlgebralliset tietotyypit ym. TIEA341 Funktio ohjelmointi 1 Syksy 2005
Algebralliset tietotyypit ym. TIEA341 Funktio ohjelmointi 1 Syksy 2005 Tällä luennolla Algebralliset tietotyypit Hahmonsovitus (pattern matching) Primitiivirekursio Esimerkkinä binäärinen hakupuu Muistattehan...
LisätiedotLuokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista.
1 Luokka Murtoluku uudelleen Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista. Sievennettäessä tarvitaan osoittajan ja nimittäjän suurin yhteinen tekijä (syt).
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ä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ä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ätiedotKielioppia: toisin kuin Javassa
Object Pascal Pascal kielen oliolaajennus (Inprise/Borland:n oma) luokat Voit uudelleenkäyttää luomiasi objekteja esim. komponentteja Periytyminen Kielioppia: toisin kuin Javassa Ei eroa isojen ja pienien
Lisä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ätiedotJavan perusteita. Janne Käki
Javan perusteita Janne Käki 20.9.2006 Muutama perusasia Tietokone tekee juuri (ja vain) sen, mitä käsketään. Tietokone ymmärtää vain syntaksia (sanojen kirjoitusasua), ei semantiikkaa (sanojen merkitystä).
Lisä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ätiedotSisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki
Sisällys JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta Abstrakti luokka ja metodi Rajapintamäärittely (interface) Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto 13.10.2000 E.
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ä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ä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ä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ä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ätiedot12. Monimuotoisuus 12.1
12. Monimuotoisuus 12.1 Sisällys Johdanto. Periytymismekanismi määrittää alityypityksen. Viitteiden sijoitus ja vertailu. Staattinen ja dynaaminen luokka. Myöhäinen ja aikainen sidonta. Parametrinvälitys
Lisätiedot9. Periytyminen Javassa 9.1
9. Periytyminen Javassa 9.1 Sisällys Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Ilmentymämetodien korvaaminen. Luokkametodien peittäminen. Super-attribuutti. Override-annotaatio.
LisätiedotC++11 Syntaksi. Jari-Pekka Voutilainen Jari-Pekka Voutilainen: C++11 Syntaksi
1 C++11 Syntaksi Jari-Pekka Voutilainen 13.4.2012 2 Range-for Iteroi säiliön kaikki alkiot for-silmukassa. Säiliöltä vaaditaan begin- ja end-iteraattorit. Pätee kaikille C++11 STL-säiliöille, taulukoille,
LisätiedotTyyppiluokat II konstruktoriluokat, funktionaaliset riippuvuudet. TIES341 Funktio-ohjelmointi 2 Kevät 2006
Tyyppiluokat II konstruktoriluokat, funktionaaliset riippuvuudet TIES341 Funktio-ohjelmointi 2 Kevät 2006 Alkuperäislähteitä Philip Wadler & Stephen Blott: How to make ad-hoc polymorphism less ad-hoc,
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ätiedotSisällys. 18. Abstraktit tietotyypit. Johdanto. Johdanto
Sisällys 18. bstraktit tietotyypit Johdanto abstrakteihin tietotyyppeihin. Pino ja jono. Linkitetty lista. Pino linkitetyllä listalla toteutettuna. 18.1 18.2 Johdanto Javan omat tietotyypit ovat jo tuttuja:
LisätiedotOpintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen Taulukot: Array Taulukko Javassa pitää aina perustaa (new) Yksinkertaisessa tilanteessa taulukon koko tiedetään etukäteen ja
Lisätiedot2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)
2. Lisää Java-ohjelmoinnin alkeita Muuttuja ja viittausmuuttuja Vakio ja literaalivakio Sijoituslause Syötteen lukeminen ja Scanner-luokka 1 Muuttuja ja viittausmuuttuja (1/4) Edellä mainittiin, että String-tietotyyppi
Lisätiedot3.5. TYYPIT 43. g(x) muuten. että tämä funktio todella kuuluu funktioalueeseen.
3.5. TYYPIT 43 teydestä. On myös mahdollista ilmaista parametrin alue tyyliin λx : S.E, joka tarkoittaa, että kyseinen funktio kuuluu alueeseen S T jollakin T (T on yleensä johdettavissa E:n rakenteesta).
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ätiedotAlkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)
Alkuarvot ja tyyppimuunnokset (1/5) Aiemmin olemme jo antaneet muuttujille alkuarvoja, esimerkiksi: int luku = 123; Alkuarvon on oltava muuttujan tietotyypin mukainen, esimerkiksi int-muuttujilla kokonaisluku,
Lisä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ätiedot7/20: Paketti kasassa ensimmäistä kertaa
Ohjelmointi 1 / syksy 2007 7/20: Paketti kasassa ensimmäistä kertaa Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007
Lisätiedot- Komposiittityypit - Object (Mukaanlukien funktiot) - Array. - Erikoisdatatyypit - null - undefined
Ohjelmointitekniikka Tyyppiturvallisuuden tavoittelua Javascriptissa muuttujat ovat tyypittömiä, mutta arvoilla on tyyppi. Muuttuja esitellään var -avainsanalla ja muuttujan tyypin arvoa ei erikseen määritellä.
LisätiedotTIEA341 Funktio-ohjelmointi 1, kevät 2008
TIEA34 Funktio-ohjelmointi, kevät 2008 Luento 3 Antti-Juhani Kaijanaho Jyväskylän yliopisto Tietotekniikan laitos 2. tammikuuta 2008 Ydin-Haskell: Syntaksi Lausekkeita (e) ovat: nimettömät funktiot: \x
LisätiedotOhjelmoinnin jatkokurssi, kurssikoe 28.4.2014
Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Kirjoita jokaiseen palauttamaasi konseptiin kurssin nimi, kokeen päivämäärä, oma nimi ja opiskelijanumero. Vastaa kaikkiin tehtäviin omille konsepteilleen.
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ä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ätiedotsemantiikasta TIE448 Kääntäjätekniikka, syksy 2009 Antti-Juhani Kaijanaho 5. lokakuuta 2009 TIETOTEKNIIKAN LAITOS Ohjelmointikielten staattisesta
TIE448 Kääntäjätekniikka, syksy 2009 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 5. lokakuuta 2009 Sisällys Sisällys Seuraava deadline Vaihe B tiistai 6.10. klo 10 selaaja ja jäsentäjä toimivat Vaihe
LisätiedotTIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 30. marraskuuta 2015
TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 30. marraskuuta 2015 Sisällys t Väitöstilaisuus 4.12.2015 kello 12 vanhassa juhlasalissa S212 saa tulla 2 demoruksia
LisätiedotT740103 Olio-ohjelmointi Osa 5: Periytyminen ja polymorfismi Jukka Jauhiainen OAMK Tekniikan yksikkö 2010
12. Periytyminen Johdantoa Käytännössä vähänkään laajemmissa ohjelmissa joudutaan laatimaan useita luokkia, joiden pitäisi pystyä välittämään tietoa toisilleen. Ohjelmien ylläpidon kannalta olisi lisäksi
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ätiedotOpintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat Rajapinnat Java-kieli ei tue luokkien moniperintää. Jokaisella luokalla voi olla vain yksi välitön yliluokka. Toisinaan olisi
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ätiedot9. Periytyminen Javassa 9.1
9. Periytyminen Javassa 9.1 Sisällys Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Metodien korvaaminen ja super-attribuutti. Attribuutin peittäminen periytymisen kautta. Rakentajat
Lisätiedot7. Näytölle tulostaminen 7.1
7. Näytölle tulostaminen 7.1 Sisällys System.out.println- ja System.out.print-operaatiot. Tulostus erikoismerkeillä. Edistyneempää tulosteiden muotoilua. 7.2 Tulostusoperaatiot System.out.println-operaatio
LisätiedotOhjelmointitaito (ict1td002, 12 op) Kevät 2008. 1. Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen raine.kauppinen@haaga-helia.
Ohjelmointitaito (ict1td002, 12 op) Kevät 2008 Raine Kauppinen raine.kauppinen@haaga-helia.fi 1. Java-ohjelmoinnin alkeita Tietokoneohjelma Java-kieli ja Eclipse-ympäristö Java-ohjelma ja ohjelmaluokka
Lisä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ä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ätiedotSisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä
Sisällys 9. Periytyminen Javassa Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Metodien korvaaminen ja super-attribuutti. Attribuutin peittäminen periytymisen kautta. Rakentajat
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ä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ä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ä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. 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ä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ä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ätiedotKääreluokat (oppikirjan luku 9.4) (Wrapper-classes)
Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes) Kääreluokista Javan alkeistietotyypit ja vastaavat kääreluokat Autoboxing Integer-luokka Double-luokka Kääreluokista Alkeistietotyyppiset muuttujat (esimerkiksi
LisätiedotJypelin käyttöohjeet» Miten voin liittää törmäyksiin tapahtumia?
Muilla kielillä: English Suomi Jypelin käyttöohjeet» Miten voin liittää törmäyksiin tapahtumia? Kun kaksi fysiikkaoliota törmää toisiinsa, syntyy törmäystapahtuma. Nämä tapahtumat voidaan ottaa kiinni
Lisätiedot12. Monimuotoisuus 12.1
12. Monimuotoisuus 12.1 Sisällys Johdanto. Periytymismekanismi määrittää alityypityksen. Viitteiden sijoitus ja vertailu. Staattinen ja dynaaminen luokka. Parametrinvälitys eräs monimuotoisuuden sovellus.
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ätiedot14.1 Rekursio tyypitetyssä lambda-kielessä
Luku 14 Rekursiiviset tyypit Edellisessä luvussa esitetyt tietue- ja varianttityypit eivät yksinään riitä kovin mielenkiintoisten tietorakenteiden toteuttamiseen. Useimmissa ohjelmissa tarvitaan erilaisia
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ätiedotTIE Principles of Programming Languages CEYLON
TIE-20306 Principles of Programming Languages CEYLON SISÄLLYSLUETTELO 1. YLEISTIETOA KIELESTÄ JA SEN KEHITTÄMISESTÄ... 1 2. CEYLONIN OMINAISUUKSIA... 2 2.1 Modulaarisuus... 2 2.2 Tyypit... 2 2.3 Muita
Lisätiedot1 Tehtävän kuvaus ja analysointi
Olio-ohjelmoinnin harjoitustyön dokumentti Jyri Lehtonen (72039) Taneli Tuovinen (67160) 1 Tehtävän kuvaus ja analysointi 1.1 Tehtävänanto Tee luokka, jolla mallinnetaan sarjaan kytkettyjä kondensaattoreita.
LisätiedotSisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä
Sisällys 9. Periytyminen Javassa Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Metodien korvaaminen ja super-attribuutti. Attribuutin peittäminen periytymisen kautta. Rakentajat
LisätiedotTIES542 kevät 2009 Rekursiiviset tyypit
TIES542 kevät 2009 Rekursiiviset tyypit Antti-Juhani Kaijanaho 17. helmikuuta 2009 Edellisessä monisteessa esitetyt tietue- ja varianttityypit eivät yksinään riitä kovin mielenkiintoisten tietorakenteiden
LisätiedotTietorakenteet ja algoritmit
Tietorakenteet ja algoritmit Merkintöjen tulkintoja *++Pstack->top = item *Pstack->top++ = item (*Pstack->top)++ *(Pstack++)->top = item *(++Pstack)->top = item Lisää pinon toteutuksia Dynaaminen taulukko
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ä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ä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ä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ä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ä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ätiedotTIES542 kevät 2009 Tyyppiteorian alkeet
TIES542 kevät 2009 Tyyppiteorian alkeet Antti-Juhani Kaijanaho 9. helmikuuta 2009 [Staattinen t]yyppijärjestelmä on ratkeava, kieliopillinen menetelmä, jota käytetään todistamaan tiettyjen käytösten puuttuminen
LisätiedotHarjoitustyö: virtuaalikone
Harjoitustyö: virtuaalikone Toteuta alla kuvattu virtuaalikone yksinkertaiselle olio-orientoituneelle skriptauskielelle. Paketissa on testaamista varten mukana kaksi lyhyttä ohjelmaa. Ohjeita Noudata ohjelman
LisätiedotOhjelmointi 2 / 2010 Välikoe / 26.3
Ohjelmointi 2 / 2010 Välikoe / 26.3 Välikoe / 26.3 Vastaa neljään (4) tehtävään ja halutessa bonustehtäviin B1 ja/tai B2, (tuovat lisäpisteitä). Bonustehtävät saa tehdä vaikkei olisi tehnyt siihen tehtävään
LisätiedotAttribuuttikieliopit
TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 3. toukokuuta 2011 Sisällys t Chomskyn hierarkia kieli säännöllinen kontekstiton kontekstinen rekursiivisesti
LisätiedotTyyppejä ja vähän muutakin. TIEA341 Funktio ohjelmointi 1 Syksy 2005
Tyyppejä ja vähän muutakin TIEA341 Funktio ohjelmointi 1 Syksy 2005 Viime luennolla... Haskellin alkeita pääasiassa Hello World!... ja muita tutunoloisia ohjelmia Haskellilla Haskellin voima on kuitenkin
LisätiedotOhjelmoinnin peruskurssien laaja oppimäärä
Ohjelmoinnin peruskurssien laaja oppimäärä Luento 4: Symbolit, derivojaesimerkki, kierroksen 1 ratkaisut (mm. SICP 2.32.3.2) Riku Saikkonen 1. 11. 2011 Sisältö 1 Symbolit ja sulkulausekkeet 2 Lisää Schemestä:
LisätiedotAlityypitys. TIES542 Ohjelmointikielten periaatteet, kevät Antti-Juhani Kaijanaho. Jyväskylän yliopisto Tietotekniikan laitos
Alityypitys TIES542 Ohjelmointikielten periaatteet, kevät 2007 Antti-Juhani Kaijanaho Jyväskylän yliopisto Tietotekniikan laitos 5. maaliskuuta 2007 Muistatko tietueet? {I 1 = E 1,..., I n = E n } : {I
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ätiedot13 Operaattoreiden ylimäärittelyjä
248 13 C++-kielessä voidaan operaattoreita ylimäärittää. Ylimääriteltävää operaattoria voidaan pitää ikäänkuin metodina, joka esitellään luokan esittelyssä ja määritellään luokan ulkopuolella kuten metoditkin.
LisätiedotLoppukurssin järjestelyt C:n edistyneet piirteet
C! Loppukurssin järjestelyt C:n edistyneet piirteet 30.3.2017 Ohjelmassa Ohjelmontitehtävän järjestelyt Tietokonetentin järjestelyt Esikääntäjä Parametrilistat Funktio-osoittimet Kunniamainintoja Kuura
Lisätiedot\+jokin merkki tarkoittaa erikoismerkkiä; \n = uusi rivi.
1. Johdanto 1.1 Yleistä Suurten ohjelmien organisointi vaikeaa C:ssä. 1980 Stroustrup lisäsi C:hen olio-ohjelmoinnin (OOP = Object Oriented Programming). C C++: C-ohjelma on (muutamia poikkeuksia lukuunottamatta)
LisätiedotAttribuutit. Copyright IT Press Tämän e-kirjan kopiointi, tulostaminen ja jakeleminen eteenpäin luvatta on kielletty.
8 Attribuutit Useimmat ohjelmointikielet on suunniteltu tavoitteena määrätty joukko ominaisuuksia. Kun esimerkiksi ryhdyt tekemään kääntäjää, mietit millainen uudella kielellä tehty sovellus on rakenteeltaan,
Lisätiedot1. Esittelyt ja vakiot 1.1 Esittelyt (declarations) Ennen nimen, tunnuksen (identifier) käyttöä se on
1. Esittelyt ja vakiot 1.1 Esittelyt (declarations) Ennen nimen, tunnuksen (identifier) käyttöä se on esiteltävä. char ch; int count=1; struct complex float re, im; complex z; complex sqrt( complex );
Lisä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ä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ätiedot2.4 Normaalimuoto, pohja ja laskentajärjestys 2.4. NORMAALIMUOTO, POHJA JA LASKENTAJÄRJESTYS 13
2.4. NORMAALIMUOTO, POHJA JA LASKENTAJÄRJESTYS 13 Toisinaan voi olla syytä kirjoittaa α- tai β-kirjain yhtäsuuruusmerkin yläpuolelle kertomaan, mitä muunnosta käytetään. Esimerkki 4 1. (λx.x)y β = y 2.
Lisätiedot