3.4 Muuttujat 3.4. MUUTTUJAT Sidonta Esittely sitoo (binds) nimeen joitakin ominaisuuksia (attributes). Jotkin ominaisuudet

Koko: px
Aloita esitys sivulta:

Download "3.4 Muuttujat 3.4. MUUTTUJAT Sidonta Esittely sitoo (binds) nimeen joitakin ominaisuuksia (attributes). Jotkin ominaisuudet"

Transkriptio

1 3.4. MUUTTUJAT Sidonta Esittely sitoo (binds) nimeen joitakin ominaisuuksia (attributes). Jotkin ominaisuudet ovat staattisia: nämä ominaisuudet ovat täysin määrättyjä jo ennen suoritusaikaa. Loput ominaisuudet ovat dynaamisia ja ovat osittain tai kokonaan määrättävissä vain suoritusaikana. Esimerkiksi symboliset vakiot ovat nimiä, joihin liittyy yksi oleellinen staattinen ominaisuus: arvo. 3.4 Muuttujat Muuttujat ovat nimiä. Jokaiseen muuttujaan on sidottu olio. Muuttujan arvolla tarkoitetaan muuttujaan sidotun olion arvoa. Käytännössä muuttujan sidonta olioon toteutetaan siten, että muuttujaan liittyy staattisena ominaisuutena olion osoite. Joissakin tilanteissa se on kuitenkin toteutettu laatikoinnilla (boxing): muuttujaan liittyy apuolio, joka sisältää pelkästään tuon varsinaisen olion osoitteen. Tällöin kaikki muuttujan kautta tapahtuva olion käsittely tapahtuu apuolion kautta (niin, että tämä välikäden kautta kulkeminen ei näy muuttujan käyttäjälle). Jokaiseen muuttujaan liittyy ominaisuutena myös tyyppi. Mikäli tämä ominaisuus on dynaaminen, puhutaan dynaamisesti tyypitetystä kielestä. Tällöin muuttuja voi periaatteessa olla sidottu mihin tahansa olioon sen tyypistä riippumatta, ja muuttujan tyyppi on sama asia kuin muuttujan olion tyyppi. Mikäli muuttujan tyyppi on aina staattinen ominaisuus, puhutaan staattisesti tyypitetystä kielestä. Tällöin muuttujan olion tyypin tulee olla aina sama kuin muuttujan tyyppi (joissakin kielissä sallitaan joissakin tai kaikissa tilanteissa, että olion tyyppi on muuttujan tyypin alityyppi). Muuttujan käsitteeseen liittyy keskeisenä sijoitusoperaation (assignment) käsite. Sijoituksen perusideana on muuttaa muuttujan arvoa. Tähän on kaksi tapaa: joko sijoitus käy muuttamassa olion arvoa tai sitten se sitoo muuttujan uuteen olioon. Edellisessä tapauksessa kielessä sanotaan olevan käytössä arvosemantiikka (value semantics), jälkimmäisessä tapauksessa viitesemantiikka (reference semantics). Käytännössä viitesemantiikan toteuttaminen vaatii, että kaikki muuttujat ovat laatikoituja. Viitesemantiikkakielissä voi olla muita operaatioita, jotka muuttavat olion arvoa. Muuttuja voi olla sidottu olioon, jonka ainoana sisältönä on jonkin toisen olion osoite. Tällaista muuttujaa sanotaan osoittimeksi. Osoittimen arvoksi sanotaan sitä osoitetta, joka on osoittimeen sidotun olion sisältönä. Osoitin voi olla myös nollaosoitin (null pointer), josta tiedetään, ettei se osoita mihinkään olioon.

2 36 LUKU 3. MUUTTUJAT, ARVOT, OLIOT JA TYYPIT Muuttujan käsite voidaan nähdä toisellakin tavalla: muuttuja on aliohjelman parametri ja muuttujan alustus on funktion kutsu. Esimerkiksi seuraavat ohjelmanpätkät tekevät samaa (nämäkin esimerkit on kirjoitettu kuvitteellisella, demoissa käsitellyn kielen muunnelmalla): begin var i; i :=! ; put i; end begin sub foo(i) put i; bus; call foo(! ); end Jos käytetyssä kielessä funktiot ovat arvoja ja on mahdollista määritellä nimettömiä funktioita, jälkimmäinen esimerkki voidaan kirjoittaa toisinkin: begin call ( sub(i) put i; bus ) (! ); end Tällainen muuttujakäsite on yleinen funktiokielissä, vaikka sitä voidaan käyttää myös käskykielissä. Esimerkiksi Scheme-kielessä paikallisia muuttujia määrittelevä let-lauseke on määritelty kertomalla, mitä funktio ja funktiokutsu -rakennetta se vastaa. Toteutustapana tämä on järkevä vain, mikäli funktiokutsuja optimoidaan tehokkaasti 5, mutta vaikkei sitä käyttäisi toteutustapana, se on silti hyvä tapa määritellä muuttujan käsite. 3.5 Tyypit Tyyppejä voidaan ajatella kolmella tasolla: arvotasolla, oliotasolla ja kielitasolla. 5. Katso esim. Andrew W. Appelin kirjaa Compiling with continuations, Cambridge, Cambridge University Press, 1992.

3 3.5. TYYPIT Arvotason tyypit: Scottin alueet Arvotasolla tyyppi on joukko arvoja. Tietyistä teknisistä syistä johtuen (jotka liittyvät itseviittauksen problematiikkaan, vertaa naiivin joukko-opin paradokseihin) mikä tahansa joukko ei kuitenkaan kelpaa tyypin määrittelyn lähtökohdaksi. Dana Scott kehitti 1960-luvun lopulla matemaattisen teorian, jota voitaneen kutsua tyyppien teoriaksi. Tuota nimeä ei kuitenkaan käytetä, sillä tyyppiteorialla on perinteisesti tarkoitettu aivan eri asiaa, nimittäin tietynlaista muodollista logiikkaa. Siksi nykyisin puhutaan Scottin alueista (Scott domains). Seuraavassa luetellaan muutamia teknisiä määritelmiä. Ne voidaan tarvittaessa hypätä yli. Määritelmä (Osittaisjärjestys) Olkoon S joukko ja olkoon ( ) S S relaatio. Mikäli seuraavat ehdot pitävät paikkaansa, relaatio ( ) on osittaisjärjestys ja joukko S on järjestetty osittain relaatiolla ( ) (englanniksi sanotaan, että (S, ) on poset). refleksiivisyys Kaikilla s S pätee s s. transitiivisuus Kaikilla s, t, u S, jos pätee s t ja t u, niin pätee s u. antisymmetrisyys Kaikilla s, t S, jos pätee s t ja t s, niin pätee s = t. Huomaa, että osittaisjärjestyksessä voi hyvin olla niin, että kahden alkion s, t S välillä ei päde s t sen paremmin kuin t s. Kaikki Scottin alueet ovat osittaisjärjestyksiä. Niissä relaation ( ) intuitiivinen tulkinta on alkioiden määräisyyden (definiteness) vertaaminen: jos s t, niin t on ainakin yhtä määrätty, mahdollisesti myös määrätympi kuin s. Toinen tapa ajatella asiaa on ajatella alkioiden informaatiosisältöä: jos s t pätee, niin t:ssä on kaikki se informaatio mikä on s:ssäkin, mahdollisesti jopa enemmän. Määritelmä Olkoon S järjestetty osittain relaatiolla ( ) S S ja olkoon A S. Nyt A:n alaraja on se s S jolla kaikilla a A pätee s a, yläraja on se s S jolla kaikilla a A pätee a s, infimum (merkitään inf A) on suurin A:n alaraja, supremum (merkitään sup A) on pienin A:n yläraja, minimi (merkitään min A) on inf A, mikäli pätee inf A A, sekä maksimi (merkitään max A) on sup A, mikäli pätee sup A A. Osajoukko A on ylhäältä rajoitettu, jos sillä on yläraja, ja alhaalta rajoitettu, jos sillä on ajaraja. Se on rajoitettu, jos se on sekä ylhäältä että alhaalta rajoitettu.

4 38 LUKU 3. MUUTTUJAT, ARVOT, OLIOT JA TYYPIT Samat käsitteet määritellään myös S:n jonoille (a i ) i I tarkastelemalla jonon alkioiden muodostamaa joukkoa. Määritelmä (Järjestetty ja hyvinjärjestetty joukko) Olkoon S joukko, joka on järjestetty osittain relaatiolla ( ). S on järjestetty joukko ja ( ) on täydellinen järjestys, mikäli kaikilla s, t S pätee s t tai t s (tai molemmat). Järjestetyn joukon täydellistä järjestystä merkitään yleensä ( ):llä. Mikäli järjestetyssä joukossa S jokainen osajoukko on alhaalta rajoitettu, se on hyvinjärjestetty joukko ja ( ) on S:n hyvinjärjestys. Määritelmä (Jono) Olkoot S joukko ja olkoon I hyvinjärjestetty joukko. Funktioita I:ltä S:lle sanotaan S:n jonoiksi. Jonoa merkitään tavallisesti (a i ) i I, jolloin merkinnällä a i tarkoitetaan tuon jonon arvoa kohdassa i ja merkinnällä {a i } i I tarkoitetaan joukkoa { x: i I: x = a i }. Määritelmä (Nouseva ketju) Olkoon S järjestetty osittain relaatiolla ( ) S S ja olkoon (a i ) i I S:n jono. Jono (a i ) i I on nouseva ketju, mikäli jokaisella i, j I joilla i j pätee a i a j. Scottin alueiden tapauksessa nousevan ketjussa eteenpäin mentäessä alkioiden sisältämä tieto tarkentuu. Määritelmä (Koherentti ja täydellinen osittaisjärjestys) Olkoon S järjestetty osittain relaatiolla ( ) S S. Se on koherentti mikäli jokaisella sen rajoitetulla osajoukolla on supremum. Se on täydellinen, mikäli on olemassa min S (merkitään S ) ja sen jokaisella nousevalla ketjulla on supremum. Määritelmä (Kompakti alkio) Olkoon S järjestetty osittain relaatiolla ( ) S S ja olkoon s S alkio. Jos jokaisella S:n jonolla (a i ) i I siitä, että s sup(a i ) I pätee, seuraa se, että s a j pätee jollakin j I, niin s on kompakti alkio. Määritelmä (Algebrallinen osittaisjärjestys) Olkoon S järjestetty osittain relaatiolla ( ) S S ja olkoon ( ) täydellinen osittaisjärjestys. Jos jokaiselle s S on olemassa nouseva ketju (a i ) i I siten, että { x S: x = a i jollakin i I x s x on kompakti alkio } ja s = sup(a i ) i I, niin ( ) on algeballinen osit-

5 3.5. TYYPIT 39 taisjärjestys S:ssä. Määritelmän intuitiivinen idea on se, että algebrallisen osittaisjärjestyksen jokaista alkiota voidaan arvioida alhaalta päin sitä pienemmillä kompakteilla alkioilla. Määritelmä (Scottin alue) Scottin alue on joukko, jossa on koherentti, algebrallinen osittaisjärjestys. Scottin alueet ovat siis tietynlaisia joukkoja. Näissä joukoissa voidaan joitakin alkioita vertailla keskenään määräisyyden (informaatiosisällön) suhteen: kaksi alkiota voivat olla yhtäläisesti määrättyjä (jolloin niissä on oleellisesti sama informaatio) tai toinen voi olla määrätympi (jolloin siinä on enemmän informaatiota kuin toisessa ja niiden informaatiosisältö on yhtäpitävää). Kaikissa Scottin alueissa on yksi täysin määräämätön alkio ( ), jota määrätympiä kaikki muut alkiot ovat. Muita alkioita ei välttämättä voi verrata keskenään määräisyyden suhteen. Tavalliset matemaattiset joukot S (kuten ) saadaan tehtyä Scottin alueeksi lisäämällä niihin uusi alkio S ja määrittelemällä sinne yksinkertainen osittaisjärjestys: kun x, y S, pätee x y joss x = S tai x = y. Näitä Scottin alueita sanotaan yksinkertaisiksi (elementary) tai tasaisiksi (flat), koska niillä on hyvin yksinkertainen rakenne. Kannattaa huomata, että osittaisjärjestyksenä ei käytetä joukon omaa järjestystä. Esimerkki 3 Seuraavat yksinkertaiset alueet ovat tavanomaisia: Fail = { Fail } Void = { Void, } Nat = { Nat } = { Nat, 0, 1, 2,... } Int = { Int } = { Int,..., 2, 1, 0, 1, 2,... } Bool = { Bool, True, False} Char = { Char } {Jonkin yhteydestä selvän merkkijoukon alkiot} Yksinkertaisista alueista luodaan kolmen aluekoostimen (domain constructor) avulla monimutkaisempia, rakenteisia alueita. Nämä koostimet ovat tulo-, summa- ja funktiokoostin. Tuloalueet Kahden Scottin alueen S ja T tulojoukko S T = { (s, t): s S t T } on myös Scottin alue. Tässä osittaisjärjestys ( S T ) määritellään seuraavasti: kai-

6 40 LUKU 3. MUUTTUJAT, ARVOT, OLIOT JA TYYPIT killa (s 1, t 1 ), (s 2, t 2 ) S T määritellään (s 1, t 1 ) S T (s 2, t 2 ) pätemään silloin ja vain silloin, kun s 1 S s 2 ja t 1 T t 2 pätevät. Helposti huomataan, että S T = ( S, T ). Tehtävä 5 Edellä mainittiin, että edustaa päättymätöntä tai virheeseen päättyvää laskentaa. Selvää on, että S T merkitsee sitä, että koko laskenta epäonnistuu. Mitä sitten edustavat ( S, t) ja (s, T ), kun s S ja t T? Tuloalueille on olemassa projektiofunktiot prj 0 : S T S ja prj 1 : S T T, jotka määritellään seuraavasti: { y mikäli x S T, jolloin merkitään x = (y, z), prj 0 (x) = prj 1 (x) = S { z T mikäli x S T, jolloin merkitään x = (y, z), Tehtävä 6 Määritelmän mukaan prj 0 (0, ) = 0. Jos ajatellaan päättymättömänä tai virhetilanteeseen päättyvänä laskentana, pitäisikö kuitenkin määritellä prj 0 (0, ) =? Tuloalueen käsite yleistyy mainiosti myös useammalle kuin kahdelle alueelle. Tällöin määritellään sopiva määrä projektiofunktioita prj i lisää. Summa-alueet Kahden Scottin alueen S ja T erillinen yhdiste S + T = { S+T } { (t, v): (t = 1 v S) (t = 2 v T) } on myös Scottin alue (ns. summa-alue), kun siihen lisätään (kuten edellä) erillinen pohja-arvo S+T. Osittaisjärjestys määritellään paloittain seuraavasti: Jos s 1, s 2 S ja s 1 S s 2 pätevät, niin pätee (1, s 1 ) S+T (1, s 2 ). Jos t 1, t 2 T ja t 1 T t 2 pätevät, niin pätee (2, t 1 ) S+T (2, t 2 ). Kaikilla s S pätee (1, S ) S+T (1, s). Kaikilla t T pätee (2, T ) S+T (1, t). Pätee S+T S+T S+T. Missään muussa tapauksessa eivät alkiot ole keskenään verrattavissa. Tämän laputuksen (eli 1:n ja 2:n käytön parin ensimmäisenä alkiona) tarkoituksena on varmistaa, että vaikka S ja T eivät olisikaan erillisiä, niin silti jokaisesta summa-alueen alkiosta (paitsi S+T ) voidaan sanoa, kumman alueen

7 3.5. TYYPIT 41 inj 1 : S S + T inj 1 s = (1, s) inj 2 : T S + T inj 2 t = (2, t) sel 1 : S + T S { v jos a = (1, v) sel 1 a = S sel 2 : S + T T { v jos a = (2, v) sel 2 a = T tst 1 : S + T Bool True jos a = (1, v) jollakin v tst 1 a = False jos a = (2, v) jollakin v Bool tst 2 : S + T Bool False jos a = (1, v) jollakin v tst 2 a = True jos a = (2, v) jollakin v Bool Taulukko 3.1: Summa-alueen koostimet, projektiot ja testaimet alkiota se vastaa. Ei ole merkitystä, mitä arvoja käytetään lappuina, kunhan laput ovat keskenään erilaisia. Käytännössä tavallista on käyttää lappuna jotain kuvaavaa merkkijonoa. Summa-alueelle määritellään kaksi koostinta (inj i ), kaksi projektiota (sel i ) ja kaksi testainta (tst i ) taulukon 3.1 mukaisesti. Myös summa-alueet yleistyvät helposti monen alueen tapaukseen. Esimerkki 4 Alueyhtälö String = Void + (Char String) määrittelee implisiittisesti merkkilistojen (merkkijonojen) alueen String.

8 42 LUKU 3. MUUTTUJAT, ARVOT, OLIOT JA TYYPIT Yleisemmin, jos D on alue, määrittelee alueyhtälö D:n listojen alueen D. D = Void + (D D ) Listoille on tapana määritellä seuraavat funktiot (nimet ovat traditionaalisia ja peräisin Lispistä): car: D D car = prj 1 sel 2 cdr: D D cdr = prj 2 sel 2 nullp: D Bool nullp = tst 1 Funktio car antaa listan ensimmäisen alkion, cdr antaa listan, josta on ensimmäinen alkio poistettu. Funktio nullp palauttaa totuusarvon, joka kertoo, onko lista tyhjä. Funktioalueet Funktioalueet ovat hieman kinkkisempi juttu. Jos S ja T ovat alueita, niiden välisten funktioiden joukko on liian laaja alueeksi. Syy tähän on se, että monet funktioista, joita on tarkoitus tarkastella, operoivat funktioilla ja palauttavat funktioita ja ovat lisäksi rekursiivisesti määriteltyjä. Yleisillä funktioilla päädytään tällä tavalla nopeasti joukko-opin paradokseihin, joten sallittuja funktioita on rajattava jotenkin. Asetetaan seuraava merkintä: kun S ja T ovat Scottin alueita, on S T suurin sellainen joukko, jolle pätee seuraavaa: 1. S T sisältää kaikki S:n ja T:n väliset funktiot, sekä 2. jokaisella f S T ja jokaisella nousevalla S:n ketjulla (a i ) i I pätee f(sup(a i ) i I ) = sup(f(a i )) i I. Osittaisjärjestys määritellään luonnollisesti: Olkoot f, g S T. Nyt jos kaikilla s S pätee f(s) T g(s), niin pätee myös f S T g. Tehtävä 7 Todista, että tulo- ja summa-alueille edellä määritellyt funktiot kuuluvat sopiviin funktioalueisiin. Funktioita on tapana merkitä λ-notaatiolla λx.e, joka luetaan x:n funktio E tai E x:n funktiona. Sen, mihin alueeseen funktio kuuluu, tulee selvitä yh-

9 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). Helposti nähdään, että S T on vakiofunktio λx : S. T. Funktiot jaetaan kahteen luokkaan sen mukaan, miten ne käyttäytyvät silloin, kun argumenttina on. Monet funktiot ovat tiukkoja (strict), mutta jotkut ovat väljiä (nonstrict): funktio f S T on tarkka, mikäli pätee f( S ) = T, se on väljä. Tässä esitetyllä tavalla käsiteltynä kaikki funktiot ovat yksipaikkaisia. Monipaikkaisia funktioita voidaan simuloida kahdella tavalla: funktio voi kuulua alueeseen (S 1 S 2 ) T, jolloin se on yksipaikkainen funktio, joka ottaa parin parametrinaan; toisaalta funktio voi kuulua alueeseen S 1 (S 2 T), jolloin se on yksipaikkainen funktio, joka palauttaa toisen yksipaikkaisen funktion. Jälkimmäistä tapaa sanotaan currymaiseksi (curried) loogikko Haskell B. Curryn ( ) mukaan, edellistä voisi kutsua vastaavasti epäcurrymaiseksi (uncurried). Sulut on edellä esitetyistä kaavoista tapana jättää pois: S 1 S 2 T ja S 1 S 2 T. Tuloalueen koostin siis sitoo tiukemmin kuin funktioalueen koostin, joka sitoo oikealle (associates to the right). Currymaisen tavan kautta tulkittuna myös monipaikkaiset funktiot voidaan luokitella kunkin parametrinsa osalta tiukaksi tai väljäksi. Esimerkiksi monissa kielissä looginen ja -operaattori käyttää ns. oikosulkulaskentaa eli on toisen parametrinsa suhteen väljä: jos ensimmäinen argumentti on epätosi, operaation tuloksena on epätosi riippumatta toisesta argumentista. Funktioille on määritelty yhdistämisfunktiot ( ): (T U) (S T) (S U) ( ) = λf.λg.λx.f(g(x)) ( ): (S T) (S T) (S T) { f(x) mikäli f(x) T, ( ) = λf.λg.λx. g(x). Matemaattisesti suuntautuneelle opiskelijalle jääköön harjoitustehtäväksi todistaa, että tämä funktio todella kuuluu funktioalueeseen. Funktioita on käytännöllistä määritellä paloittain ja yhdistellä määritelmät käyttäen ( )-funktiota. Varsin usein määritelmässä käytetään hyväksi hahmonsovitusta (pattern matching): parametrissa nimen sijasta annetaan jokin pari, jonka alkiona voi olla jokin toinen samanlainen pari tai sitten vakiolauseke

10 44 LUKU 3. MUUTTUJAT, ARVOT, OLIOT JA TYYPIT tai nimi. Operatiivisena tulkintana on se, että jos argumentin rakenne on sama kuin parametrin, parametrissa esiintyvien nimien arvoksi sidotaan vastaavassa paikassa argumenttia olevat arvot. Puoliformaalisti tämä määritellään rekursiona seuraavasti: ((λx.((λy.e)(prj 2 z)))(prj 1 z)) jos z S T λ(x, y): e = λz. ((λy.e)(sel x z)) jos z S + T ja tst x z = True. missä z on nimi, joka ei esiinny vapaana e:ssä. Esimerkki 5 Lisp-kielestä tuttu funktio cadr voidaan määritellä seuraavasti: cadr: S S cadr = λ(2, (x, (2, (y, z)))).y Olisi sen myös voinut määritellä lausekkeella car cdr.

3.5. TYYPIT 43. g(x) muuten. että tämä funktio todella kuuluu funktioalueeseen.

3.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ätiedot

samalla seuraavaan puoliavaruuteen (sukupolveen), jota siivotaan harvemmin.

samalla seuraavaan puoliavaruuteen (sukupolveen), jota siivotaan harvemmin. 3.2. OLIOT 31 Myös tästä menetelmästä on olemassa muunnelmia, jotka pyrkivät vähentämään yksittäisen pysähdyksen pituutta. Nämä ovat niinsanottuja ikäperustaisia (generational) menetelmiä, joissa muisti

Lisätiedot

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

tää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ätiedot

1 Määrittelyjä ja aputuloksia

1 Määrittelyjä ja aputuloksia 1 Määrittelyjä ja aputuloksia 1.1 Supremum ja infimum Aluksi kerrataan pienimmän ylärajan (supremum) ja suurimman alarajan (infimum) perusominaisuuksia ja esitetään muutamia myöhemmissä todistuksissa tarvittavia

Lisätiedot

Algebralliset tietotyypit ym. TIEA341 Funktio ohjelmointi 1 Syksy 2005

Algebralliset 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ätiedot

2. Minkä joukon määrittelee kaava P 0 (x 0 ) P 1 (x 0 ) mallissa M = ({0, 1, 2, 3}, P M 0, P M 1 ), kun P M 0 = {0, 1} ja P M 1 = {1, 2}?

2. Minkä joukon määrittelee kaava P 0 (x 0 ) P 1 (x 0 ) mallissa M = ({0, 1, 2, 3}, P M 0, P M 1 ), kun P M 0 = {0, 1} ja P M 1 = {1, 2}? HY / Matematiikan ja tilastotieteen laitos Johdatus logiikkaan II, syksy 2018 Harjoitus 4 Ratkaisuehdotukset 1. Mitkä muuttujat esiintyvät vapaina kaavassa x 2 ( x 0 R 0 (x 1, x 2 ) ( x 3 R 0 (x 3, x 0

Lisätiedot

Rekursiiviset tyypit

Rekursiiviset tyypit Rekursiiviset tyypit TIES542 Ohjelmointikielten periaatteet, kevät 2007 Antti-Juhani Kaijanaho Jyväskylän yliopisto Tietotekniikan laitos 20. helmikuuta 2007 Hiloista Kiintopisteet (Ko)rekursio Rekursiiviset

Lisätiedot

TIEA341 Funktio-ohjelmointi 1, kevät 2008

TIEA341 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ätiedot

Analyysi 1. Harjoituksia lukuihin 1 3 / Syksy Osoita täsmällisesti perustellen, että joukko A = x 4 ei ole ylhäältä rajoitettu.

Analyysi 1. Harjoituksia lukuihin 1 3 / Syksy Osoita täsmällisesti perustellen, että joukko A = x 4 ei ole ylhäältä rajoitettu. Analyysi Harjoituksia lukuihin 3 / Syksy 204. Osoita täsmällisesti perustellen, että joukko { 2x A = x ]4, [. x 4 ei ole ylhäältä rajoitettu. 2. Anna jokin ylä- ja alaraja joukoille { x( x) A = x ], [,

Lisätiedot

14.1 Rekursio tyypitetyssä lambda-kielessä

14.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ätiedot

Täydellisyysaksiooman kertaus

Täydellisyysaksiooman kertaus Täydellisyysaksiooman kertaus Luku M R on joukon A R yläraja, jos a M kaikille a A. Luku M R on joukon A R alaraja, jos a M kaikille a A. A on ylhäältä (vast. alhaalta) rajoitettu, jos sillä on jokin yläraja

Lisätiedot

Luku 3. Listankäsittelyä. 3.1 Listat

Luku 3. Listankäsittelyä. 3.1 Listat Luku 3 Listankäsittelyä Funktio-ohjelmoinnin tärkein yksittäinen tietorakenne on lista. Listankäsittely on paitsi käytännöllisesti oleellinen aihe, se myös valaisee funktio-ohjelmoinnin ideaa. 3.1 Listat

Lisätiedot

Matematiikan tukikurssi, kurssikerta 3

Matematiikan tukikurssi, kurssikerta 3 Matematiikan tukikurssi, kurssikerta 3 1 Epäyhtälöitä Aivan aluksi lienee syytä esittää luvun itseisarvon määritelmä: { x kun x 0 x = x kun x < 0 Siispä esimerkiksi 10 = 10 ja 10 = 10. Seuraavaksi listaus

Lisätiedot

Konvergenssilauseita

Konvergenssilauseita LUKU 4 Konvergenssilauseita Lause 4.1 (Monotonisen konvergenssin lause). Olkoon (f n ) kasvava jono Lebesgueintegroituvia funktioita. Asetetaan f(x) := f n (x). Jos f n

Lisätiedot

Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9

Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9 Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9 Tuntitehtävät 9-10 lasketaan alkuviikon harjoituksissa ja tuntitehtävät 13-14 loppuviikon harjoituksissa. Kotitehtävät 11-12 tarkastetaan loppuviikon

Lisätiedot

missä on myös käytetty monisteen kaavaa 12. Pistä perustelut kohdilleen!

missä on myös käytetty monisteen kaavaa 12. Pistä perustelut kohdilleen! Matematiikan johdantokurssi Kertausharjoitustehtävien ratkaisuja/vastauksia/vihjeitä. Osoita todeksi logiikan lauseille seuraava: P Q (P Q). Ratkaisuohje. Väite tarkoittaa, että johdetut lauseet P Q ja

Lisätiedot

Matematiikan tukikurssi

Matematiikan tukikurssi Matematiikan tukikurssi Kurssikerta 4 Supremum ja inmum Tarkastellaan aluksi avointa väliä, Tämä on joukko, johon kuuluvat kaikki reaaliluvut miinus yhdestä yhteen Kuitenkaan päätepisteet eli luvut ja

Lisätiedot

Matematiikan tukikurssi

Matematiikan tukikurssi Matematiikan tukikurssi Kurssikerta 1 Määrittelyjoukoista Tarkastellaan funktiota, jonka määrittelevä yhtälö on f(x) = x. Jos funktion lähtöjoukoksi määrittelee vaikkapa suljetun välin [0, 1], on funktio

Lisätiedot

Matematiikan tukikurssi, kurssikerta 2

Matematiikan tukikurssi, kurssikerta 2 Matematiikan tukikurssi kurssikerta 1 Relaatioista Oletetaan kaksi alkiota a ja b. Näistä kumpikin kuuluu johonkin tiettyyn joukkoon mahdollisesti ne kuuluvat eri joukkoihin; merkitään a A ja b B. Voidaan

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset

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

Lisätiedot

TIES542 kevät 2009 Denotaatio

TIES542 kevät 2009 Denotaatio TIES542 kevät 2009 Denotaatio Antti-Juhani Kaijanaho 27.1.2009 (korjauksia 28.1.2009) Denotationaalisessa merkitysopissa kukin (ohjelmointi)kielen konstrktiolle määritellään matemaattinen otus, jota sanotaan

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

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

Lisätiedot

Luonnollisten lukujen ja kokonaislukujen määritteleminen

Luonnollisten lukujen ja kokonaislukujen määritteleminen Luonnollisten lukujen ja kokonaislukujen määritteleminen LuK-tutkielma Jussi Piippo Matemaattisten tieteiden yksikkö Oulun yliopisto Kevät 2017 Sisältö 1 Johdanto 2 2 Esitietoja 3 2.1 Joukko-opin perusaksioomat...................

Lisätiedot

MS-A0402 Diskreetin matematiikan perusteet Esimerkkejä, todistuksia ym., osa I

MS-A0402 Diskreetin matematiikan perusteet Esimerkkejä, todistuksia ym., osa I MS-A0402 Diskreetin matematiikan perusteet Esimerkkejä, todistuksia ym., osa I G. Gripenberg Aalto-yliopisto 3. huhtikuuta 2014 G. Gripenberg (Aalto-yliopisto) MS-A0402 Diskreetin matematiikan perusteetesimerkkejä,

Lisätiedot

MS-A0402 Diskreetin matematiikan perusteet Esimerkkejä, todistuksia ym., osa I

MS-A0402 Diskreetin matematiikan perusteet Esimerkkejä, todistuksia ym., osa I MS-A040 Diskreetin matematiikan perusteet Esimerkkejä, todistuksia ym., osa I G. Gripenberg Aalto-yliopisto 3. huhtikuuta 014 G. Gripenberg (Aalto-yliopisto) MS-A040 Diskreetin matematiikan perusteetesimerkkejä,

Lisätiedot

2.4 Normaalimuoto, pohja ja laskentajärjestys 2.4. NORMAALIMUOTO, POHJA JA LASKENTAJÄRJESTYS 13

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

Lukujonon raja-arvo 1/7 Sisältö ESITIEDOT: lukujonot

Lukujonon raja-arvo 1/7 Sisältö ESITIEDOT: lukujonot Lukujonon raja-arvo 1/7 Sisältö Esimerkki lukujonon raja-arvosta Lukujonossa a 1,a 2,a 3,... (jossa on äärettömän monta termiä) voivat luvut lähestyä jotakin arvoa, kun jonossa edetään yhä pidemmälle.

Lisätiedot

Matemaatiikan tukikurssi

Matemaatiikan tukikurssi Matemaatiikan tukikurssi Kurssikerta 1 1 Funktiot Funktion määritelmä Funktio on sääntö, joka liittää kahden eri joukon alkioita toisiinsa. Ollakseen funktio tämän säännön on liitettävä jokaiseen lähtöjoukon

Lisätiedot

Tämän vuoksi kannattaa ottaa käytännöksi aina kirjoittaa uuden funktion tyyppi näkyviin, ennen kuin alkaa sen määritemää kirjoittamaan.

Tämän vuoksi kannattaa ottaa käytännöksi aina kirjoittaa uuden funktion tyyppi näkyviin, ennen kuin alkaa sen määritemää kirjoittamaan. 3.1. LISTAT 35 destaan pisteittäisesti: init :: [α] [α] init (x : []) = [] init (x : xs) = x : init xs Varuskirjastoon kuuluu myös funktiot take ja drop, jotka ottavat tai tiputtavat pois, funktiosta riippuen,

Lisätiedot

815338A Ohjelmointikielten periaatteet 2014-2015. Harjoitus 7 Vastaukset

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

Lisätiedot

Ohjelmoinnin peruskurssien laaja oppimäärä

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

Lisätiedot

Olio-ohjelmointi Syntaksikokoelma

Olio-ohjelmointi Syntaksikokoelma C++-kielen uusia ominaisuuksia Olio-ohjelmointi Syntaksikokoelma 31.10.2008 Bool-tietotyyppi: Totuusarvo true (1), jos ehto on tosi ja false (0) jos ehto epätosi. Dynaaminen muistinvaraus: Yhden muuttuja

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 2 vastaukset Harjoituksen aiheena on BNF-merkinnän käyttö ja yhteys rekursiivisesti etenevään jäsentäjään. Tehtävä 1. Mitkä ilmaukset seuraava

Lisätiedot

Matematiikan johdantokurssi, syksy 2016 Harjoitus 11, ratkaisuista

Matematiikan johdantokurssi, syksy 2016 Harjoitus 11, ratkaisuista Matematiikan johdantokurssi, syksy 06 Harjoitus, ratkaisuista. Valitse seuraaville säännöille mahdollisimman laajat lähtöjoukot ja sopivat maalijoukot niin, että syntyy kahden muuttujan funktiot (ks. monisteen

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 3 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten muuttujiin liittyvät kysymykset. Tehtävä 1. Määritä muuttujien max_num, lista,

Lisätiedot

Vaihtoehtoinen tapa määritellä funktioita f : N R on

Vaihtoehtoinen tapa määritellä funktioita f : N R on Rekursio Funktio f : N R määritellään yleensä antamalla lauseke funktion arvolle f (n). Vaihtoehtoinen tapa määritellä funktioita f : N R on käyttää rekursiota: 1 (Alkuarvot) Ilmoitetaan funktion arvot

Lisätiedot

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 26. kesäkuuta 2013

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 26. kesäkuuta 2013 ja ja TIEA241 Automaatit ja kieliopit, kesä 2012 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 26. kesäkuuta 2013 Sisällys ja ja on yksi vanhimmista tavoista yrittää mallittaa mekaanista laskentaa. Kurt

Lisätiedot

Rekursio. Funktio f : N R määritellään yleensä antamalla lauseke funktion arvolle f (n). Vaihtoehtoinen tapa määritellä funktioita f : N R on

Rekursio. Funktio f : N R määritellään yleensä antamalla lauseke funktion arvolle f (n). Vaihtoehtoinen tapa määritellä funktioita f : N R on Rekursio Funktio f : N R määritellään yleensä antamalla lauseke funktion arvolle f (n). Vaihtoehtoinen tapa määritellä funktioita f : N R on käyttää rekursiota: Rekursio Funktio f : N R määritellään yleensä

Lisätiedot

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä Ohjelmoinnin peruskurssien laaja oppimäärä Luento 2: SICP kohdat 22.2.3 Riku Saikkonen 2. 11. 2010 Sisältö 1 Linkitetyt listat 2 Listaoperaatioita 3 Listarakenteet 4 Gambit-C:n Scheme-debuggeri Linkitetyt

Lisätiedot

Kuvaus eli funktio f joukolta X joukkoon Y tarkoittaa havainnollisesti vastaavuutta, joka liittää joukon X jokaiseen alkioon joukon Y tietyn alkion.

Kuvaus eli funktio f joukolta X joukkoon Y tarkoittaa havainnollisesti vastaavuutta, joka liittää joukon X jokaiseen alkioon joukon Y tietyn alkion. Kuvaus eli funktio f joukolta X joukkoon Y tarkoittaa havainnollisesti vastaavuutta, joka liittää joukon X jokaiseen alkioon joukon Y tietyn alkion. Vastaavuus puolestaan on erikoistapaus relaatiosta.

Lisätiedot

missä on myös käytetty monisteen kaavaa 12. Pistä perustelut kohdilleen!

missä on myös käytetty monisteen kaavaa 12. Pistä perustelut kohdilleen! Matematiikan johdantokurssi Kertausharjoitustehtävien ratkaisuja/vastauksia/vihjeitä. Osoita todeksi logiikan lauseille seuraava: P Q (P Q). Ratkaisuohje. Väite tarkoittaa, että johdetut lauseet P Q ja

Lisätiedot

TIES542 kevät 2009 Rekursiiviset tyypit

TIES542 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ätiedot

Matematiikan tukikurssi

Matematiikan tukikurssi Matematiikan tukikurssi Kurssikerta 3 Supremum ja infimum Tarkastellaan aluksi avointa väliä, ) = { : < < }. Tämä on joukko, johon kuuluvat kaikki reaaliluvut miinus yhdestä yhteen. Kuitenkaan päätepisteet

Lisätiedot

Yhtälönratkaisusta. Johanna Rämö, Helsingin yliopisto. 22. syyskuuta 2014

Yhtälönratkaisusta. Johanna Rämö, Helsingin yliopisto. 22. syyskuuta 2014 Yhtälönratkaisusta Johanna Rämö, Helsingin yliopisto 22. syyskuuta 2014 Yhtälönratkaisu on koulusta tuttua, mutta usein sitä tehdään mekaanisesti sen kummempia ajattelematta. Jotta pystytään ratkaisemaan

Lisätiedot

12. Monimuotoisuus 12.1

12. 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ätiedot

Alkioiden x ja y muodostama järjestetty pari on jono (x, y), jossa x on ensimmäisenä ja y toisena jäsenenä.

Alkioiden x ja y muodostama järjestetty pari on jono (x, y), jossa x on ensimmäisenä ja y toisena jäsenenä. ja Alkioiden x ja y muodostama järjestetty pari on jono (x, y), jossa x on ensimmäisenä ja y toisena jäsenenä. ja Alkioiden x ja y muodostama järjestetty pari on jono (x, y), jossa x on ensimmäisenä ja

Lisätiedot

Kuvaus eli funktio f joukolta X joukkoon Y tarkoittaa havainnollisesti vastaavuutta, joka liittää joukon X jokaiseen alkioon joukon Y tietyn alkion.

Kuvaus eli funktio f joukolta X joukkoon Y tarkoittaa havainnollisesti vastaavuutta, joka liittää joukon X jokaiseen alkioon joukon Y tietyn alkion. Kuvaus eli funktio f joukolta X joukkoon Y tarkoittaa havainnollisesti vastaavuutta, joka liittää joukon X jokaiseen alkioon joukon Y tietyn alkion. Kuvaus eli funktio f joukolta X joukkoon Y tarkoittaa

Lisätiedot

Geneeriset tyypit. TIES542 Ohjelmointikielten periaatteet, kevät Antti-Juhani Kaijanaho. Jyväskylän yliopisto Tietotekniikan laitos

Geneeriset tyypit. TIES542 Ohjelmointikielten periaatteet, kevät Antti-Juhani Kaijanaho. Jyväskylän yliopisto Tietotekniikan laitos Geneeriset tyypit TIES542 Ohjelmointikielten periaatteet, kevät 2007 Antti-Juhani Kaijanaho Jyväskylän yliopisto Tietotekniikan laitos 6. maaliskuuta 2007 Kysymys Mitä yhteistä on seuraavilla funktioilla?

Lisätiedot

Harjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Harjoitus 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ätiedot

Kaikki kurssin laskuharjoitukset pidetään Exactumin salissa C123. Malliratkaisut tulevat nettiin kurssisivulle.

Kaikki kurssin laskuharjoitukset pidetään Exactumin salissa C123. Malliratkaisut tulevat nettiin kurssisivulle. Kombinatoriikka, kesä 2010 Harjoitus 1 Ratkaisuehdotuksia (RT (5 sivua Kaikki kurssin laskuharjoitukset pidetään Exactumin salissa C123. Malliratkaisut tulevat nettiin kurssisivulle. 1. Osoita, että vuoden

Lisätiedot

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

sama tyyppi (joka vastaa kaikkien mahdollisten arvojen summa-aluetta). Esimerkiksi 3.5. TYYPIT 51 3.5.3 Kielitason tyypit Staattinen tyypitys Kielitasolla tyyppejä käytetään sulkemaan pois joitakin merkittäviä ja automaattisesti tunnistettavissa olevia merkitysopillisia virheitä (oliotason

Lisätiedot

Yksinkertaiset tyypit

Yksinkertaiset tyypit Yksinkertaiset tyypit TIES542 Ohjelmointikielten periaatteet, kevät 2007 Antti-Juhani Kaijanaho Jyväskylän yliopisto Tietotekniikan laitos 13. helmikuuta 2007 Tyypitön puhdas λ-laskento E ::= I E 1 E 2

Lisätiedot

Lyhyt kertaus osoittimista

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

Lisätiedot

1 Supremum ja infimum

1 Supremum ja infimum Pekka Alestalo, 2018 Tämä moniste täydentää reaalilukuja ja jatkuvia reaalifunktioita koskevaa kalvosarjaa lähinnä perustelujen ja todistusten osalta. Suurin osa määritelmistä jms. on esitetty jo kalvoissa,

Lisätiedot

Kesälukio 2000 PK2 Tauluharjoituksia I Mallivastaukset

Kesälukio 2000 PK2 Tauluharjoituksia I Mallivastaukset Kesälukio 2000 PK2 Tauluharjoituksia I Mallivastaukset 2000-08-03T10:30/12:00 Huomaa, että joihinkin kysymyksiin on useampia oikeita vastauksia, joten nämä ovat todellakin vain mallivastaukset. 1 Logiikkaa

Lisätiedot

Ydin-Haskell Tiivismoniste

Ydin-Haskell Tiivismoniste Ydin-Haskell Tiivismoniste Antti-Juhani Kaijanaho 8. joulukuuta 2005 1 Abstrakti syntaksi Päätesymbolit: Muuttujat a, b, c,..., x, y, z,... Tyyppimuuttujat α, β, γ,... Koostimet (data- ja tyyppi-) C, D,...,

Lisätiedot

Logiikan kertausta. TIE303 Formaalit menetelmät, kevät Antti-Juhani Kaijanaho. Jyväskylän yliopisto Tietotekniikan laitos.

Logiikan kertausta. TIE303 Formaalit menetelmät, kevät Antti-Juhani Kaijanaho. Jyväskylän yliopisto Tietotekniikan laitos. TIE303 Formaalit menetelmät, kevät 2005 Logiikan kertausta Antti-Juhani Kaijanaho antkaij@mit.jyu.fi Jyväskylän yliopisto Tietotekniikan laitos TIE303 Formaalit mentetelmät, 2005-01-27 p. 1/17 Luento2Luentomoniste

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

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

Lisätiedot

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta 811312A Tietorakenteet ja algoritmit 2017-2018 Kertausta kurssin alkuosasta II Perustietorakenteet Pino, jono ja listat tunnettava Osattava soveltaa rakenteita algoritmeissa Osattava päätellä operaatioiden

Lisätiedot

T Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 7 (opetusmoniste, kappaleet )

T Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 7 (opetusmoniste, kappaleet ) T-79144 Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 7 (opetusmoniste, kappaleet 11-22) 26 29102004 1 Ilmaise seuraavat lauseet predikaattilogiikalla: a) Jokin porteista on viallinen

Lisätiedot

Laajennetaan vielä Ydin-Haskellia ymmärtämään vakiomäärittelyt. Määrittely on muotoa

Laajennetaan 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ätiedot

Haskell ohjelmointikielen tyyppijärjestelmä

Haskell 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ätiedot

MS-A0402 Diskreetin matematiikan perusteet Esimerkkejä ym., osa I

MS-A0402 Diskreetin matematiikan perusteet Esimerkkejä ym., osa I MS-A040 Diskreetin matematiikan perusteet Esimerkkejä ym., osa I G. Gripenberg Aalto-yliopisto. maaliskuuta 05 G. Gripenberg (Aalto-yliopisto) MS-A040 Diskreetin matematiikan perusteet Esimerkkejä. ym.,

Lisätiedot

Matematiikan tukikurssi

Matematiikan tukikurssi Matematiikan tukikurssi Kurssikerta 2 Lisää osamurtoja Tutkitaan jälleen rationaalifunktion P(x)/Q(x) integrointia. Aiemmin käsittelimme tapauksen, jossa nimittäjä voidaan esittää muodossa Q(x) = a(x x

Lisätiedot

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä Ohjelmoinnin peruskurssien laaja oppimäärä Luento 8: Pienen ohjelmointikielen tulkki (ohjelmoitava laskin) (mm. SICP 4-4.1.5 osin) Riku Saikkonen 15. 11. 2012 Sisältö 1 Nelilaskintulkki, globaalit muuttujat

Lisätiedot

DIFFERENTIAALI- JA INTEGRAALILASKENTA I.1. Ritva Hurri-Syrjänen/Syksy 1999/Luennot 6. FUNKTION JATKUVUUS

DIFFERENTIAALI- JA INTEGRAALILASKENTA I.1. Ritva Hurri-Syrjänen/Syksy 1999/Luennot 6. FUNKTION JATKUVUUS DIFFERENTIAALI- JA INTEGRAALILASKENTA I.1 Ritva Hurri-Syrjänen/Syksy 1999/Luennot 6. FUNKTION JATKUVUUS Huomautus. Analyysin yksi keskeisimmistä käsitteistä on jatkuvuus! Olkoon A R mielivaltainen joukko

Lisätiedot

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 16. maaliskuuta 2011

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 16. maaliskuuta 2011 TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 16. maaliskuuta 2011 Sisällys Sisällys Väitelauseet lause (tai virke), joka sanoo jonkin asian pitävän paikkaansa

Lisätiedot

1 sup- ja inf-esimerkkejä

1 sup- ja inf-esimerkkejä Alla olevat kohdat (erityisesti todistukset) ovat lähinnä oheislukemista reaaliluvuista, mutta joihinkin niistä palataan myöhemmin kurssilla. 1 sup- ja inf-esimerkkejä Nollakohdan olemassaolo. Kaikki tuntevat

Lisätiedot

Joukot. Georg Cantor ( )

Joukot. Georg Cantor ( ) Joukot Matematiikassa on pyrkimys määritellä monimutkaiset asiat täsmällisesti yksinkertaisempien asioiden avulla. Tarvitaan jokin lähtökohta, muutama yleisesti hyväksytty ja ymmärretty käsite, joista

Lisätiedot

Luku 2. Ohjelmointi laskentana. 2.1 Laskento

Luku 2. Ohjelmointi laskentana. 2.1 Laskento Luku 2 Ohjelmointi laskentana Funktio-ohjelmoinnin, olio-ohjelmoinnin ja käskyohjelmoinnin ero on löydettävissä niiden pohjalla olevista laskennan mallista. Automaattisen tietojenkäsittelyn yksi historiallinen

Lisätiedot

Se mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A.

Se mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A. Tehtävä. Tämä tehtävä on aineistotehtävä, jossa esitetään ensin tehtävän teoria. Sen jälkeen esitetään neljä kysymystä, joissa tätä teoriaa pitää soveltaa. Mitään aikaisempaa tehtävän aihepiirin tuntemusta

Lisätiedot

1 sup- ja inf-esimerkkejä

1 sup- ja inf-esimerkkejä Alla olevat kohdat (erityisesti todistukset) ovat lähinnä oheislukemista reaaliluvuista, mutta joihinkin niistä palataan myöhemmin kurssilla. 1 sup- ja inf-esimerkkejä Kaarenpituus. Olkoon r: [a, b] R

Lisätiedot

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

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

Lisätiedot

Funktiot. funktioita f : A R. Yleensä funktion määrittelyjoukko M f = A on jokin väli, muttei aina.

Funktiot. funktioita f : A R. Yleensä funktion määrittelyjoukko M f = A on jokin väli, muttei aina. Funktiot Tässä luvussa käsitellään reaaliakselin osajoukoissa määriteltyjä funktioita f : A R. Yleensä funktion määrittelyjoukko M f = A on jokin väli, muttei aina. Avoin väli: ]a, b[ tai ]a, [ tai ],

Lisätiedot

TIES542 kevät 2009 Tyyppijärjestelmän laajennoksia

TIES542 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ätiedot

Luku 2. Jatkuvien funktioiden ominaisuuksia.

Luku 2. Jatkuvien funktioiden ominaisuuksia. 1 MAT-1343 Laaja matematiikka 3 TTY 21 Risto Silvennoinen Luku 2. Jatkuvien funktioiden ominaisuuksia. Jatkossa väli I tarkoittaa jotakin seuraavista reaalilukuväleistä: ( ab, ) = { x a< x< b} = { x a

Lisätiedot

MS-A0402 Diskreetin matematiikan perusteet Esimerkkejä ym., osa I

MS-A0402 Diskreetin matematiikan perusteet Esimerkkejä ym., osa I MS-A040 Diskreetin matematiikan perusteet Esimerkkejä ym., osa I G. Gripenberg Aalto-yliopisto. maaliskuuta 05 G. Gripenberg (Aalto-yliopisto) MS-A040 Diskreetin matematiikan perusteet Esimerkkejä. ym.,

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

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

Lisätiedot

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä Ohjelmoinnin peruskurssien laaja oppimäärä Luento 11: Tulkin muokkaaminen, sisäiset määrittelyt, makrot (mm. SICP 3.2.4, 4-4.1.6) Riku Saikkonen 29. 11. 2012 Sisältö 1 Kirjan tulkin muokkaaminen 2 Yksityiskohta:

Lisätiedot

Diskreetin matematiikan perusteet Malliratkaisut 2 / vko 38

Diskreetin matematiikan perusteet Malliratkaisut 2 / vko 38 Diskreetin matematiikan perusteet Malliratkaisut 2 / vko 38 Tuntitehtävät 11-12 lasketaan alkuviikon harjoituksissa ja tuntitehtävät 15-16 loppuviikon harjoituksissa. Kotitehtävät 13-14 tarkastetaan loppuviikon

Lisätiedot

Approbatur 3, demo 1, ratkaisut A sanoo: Vähintään yksi meistä on retku. Tehtävänä on päätellä, mitä tyyppiä A ja B ovat.

Approbatur 3, demo 1, ratkaisut A sanoo: Vähintään yksi meistä on retku. Tehtävänä on päätellä, mitä tyyppiä A ja B ovat. Approbatur 3, demo 1, ratkaisut 1.1. A sanoo: Vähintään yksi meistä on retku. Tehtävänä on päätellä, mitä tyyppiä A ja B ovat. Käydään kaikki vaihtoehdot läpi. Jos A on rehti, niin B on retku, koska muuten

Lisätiedot

Todista raja-arvon määritelmään perustuen seuraava lause: Jos lukujonolle a n pätee lima n = a ja lima n = b, niin a = b.

Todista raja-arvon määritelmään perustuen seuraava lause: Jos lukujonolle a n pätee lima n = a ja lima n = b, niin a = b. 2 Lukujonot 21 Lukujonon määritelmä 16 Fibonacci n luvut määritellään ehdoilla Osoita: 17 a 1 = a 2 = 1; a n+2 = a n+1 + a n, n N a n = 1 [( 1 + ) n ( 2 1 ) n ] 2 Olkoon a 1 = 3, a 2 = 6, a n+1 = 1 n (na

Lisätiedot

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä Ohjelmoinnin peruskurssien laaja oppimäärä Keskeneräinen luento 3: Listat (mm. SICP 22.2.3) Riku Saikkonen 31. 10. 2011 Sisältö 1 Linkitetyt listat 2 Linkitetyt listat (SICP 2.1.1, 2.2.1) funktionaalinen

Lisätiedot

Oliot ja tyypit. TIES542 Ohjelmointikielten periaatteet, kevät Antti-Juhani Kaijanaho. Jyväskylän yliopisto Tietotekniikan laitos

Oliot 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ätiedot

z 1+i (a) f (z) = 3z 4 5z 3 + 2z (b) f (z) = z 4z + 1 f (z) = 12z 3 15z 2 + 2

z 1+i (a) f (z) = 3z 4 5z 3 + 2z (b) f (z) = z 4z + 1 f (z) = 12z 3 15z 2 + 2 BM20A5700 - Integraauunnokset Harjoitus 2 1. Laske seuraavat raja-arvot. -kohta ratkeaa, kun pistät sekä yläkerran että alakerran muotoon (z z 1 )(z z 2 ), missä siis z 1 ja z 2 ovat näiden lausekkeiden

Lisätiedot

Reaaliluvut. tapauksessa metrisen avaruuden täydellisyyden kohdalla. 1 fi.wikipedia.org/wiki/reaaliluku 1 / 13

Reaaliluvut. tapauksessa metrisen avaruuden täydellisyyden kohdalla. 1 fi.wikipedia.org/wiki/reaaliluku 1 / 13 Reaaliluvut Reaalilukujen joukko R. Täsmällinen konstruointi palautuu rationaalilukuihin, jossa eri mahdollisuuksia: - Dedekindin leikkaukset - rationaaliset Cauchy-jonot - desimaaliapproksimaatiot. Reaalilukujen

Lisätiedot

TIEA341 Funktio-ohjelmointi 1, kevät 2008

TIEA341 Funktio-ohjelmointi 1, kevät 2008 TIEA341 Funktio-ohjelmointi 1, kevät 2008 Luento 10 Todistamisesta Antti-Juhani Kaijanaho Jyväskylän yliopisto Tietotekniikan laitos 21. tammikuuta 2008 Samuuden todistaminen usein onnistuu ihan laskemalla

Lisätiedot

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

TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 27. lokakuuta 2009 TIE448 Kääntäjätekniikka, syksy 2009 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 27. lokakuuta 2009 Sisällys Sisällys Seuraava deadline Vaihe D tiistai 10.11. klo 10 välikielen generointi Kääntäjän rakenne

Lisätiedot

MS-A010{3,4} (ELEC*) Differentiaali- ja integraalilaskenta 1 Luento 3: Jatkuvuus

MS-A010{3,4} (ELEC*) Differentiaali- ja integraalilaskenta 1 Luento 3: Jatkuvuus MS-A010{3,4} (ELEC*) Differentiaali- ja integraalilaskenta 1 Luento 3: Jatkuvuus Pekka Alestalo, Jarmo Malinen Aalto-yliopisto, Matematiikan ja systeemianalyysin laitos 19.9.2016 Pekka Alestalo, Jarmo

Lisätiedot

Jatkeet. TIES341 Funktio ohjelmointi 2 Kevät 2006

Jatkeet. TIES341 Funktio ohjelmointi 2 Kevät 2006 Jatkeet TIES341 Funktio ohjelmointi 2 Kevät 2006 Havainto: häntäkutsu (1) Funktiokutsun yleinen toimintaperiaate: (koskee vain täysiä kutsuja, ts. jotka eivät palauta funktiota) kutsuja kirjaa pinoon paluuosoitteen

Lisätiedot

T Syksy 2005 Logiikka tietotekniikassa: perusteet Laskuharjoitus 8 (opetusmoniste, kappaleet )

T Syksy 2005 Logiikka tietotekniikassa: perusteet Laskuharjoitus 8 (opetusmoniste, kappaleet ) T-79.144 Syksy 2005 Logiikka tietotekniikassa: perusteet Laskuharjoitus 8 (opetusmoniste, kappaleet 2.3-3.4) 2 5.11.2005 1. Olkoon R kaksipaikkainen predikaattisymboli, jonka tulkintana on relaatio R A

Lisätiedot

Reaaliarvoisen yhden muuttujan funktion raja arvo LaMa 1U syksyllä 2011

Reaaliarvoisen yhden muuttujan funktion raja arvo LaMa 1U syksyllä 2011 Neljännen viikon luennot Reaaliarvoisen yhden muuttujan funktion raja arvo LaMa 1U syksyllä 2011 Perustuu Trench in verkkokirjan lukuun 2.1. Esko Turunen esko.turunen@tut.fi Funktion y = f (x) on intuitiivisesti

Lisätiedot

saadaan kvanttorien järjestystä vaihtamalla ehto Tarkoittaako tämä ehto mitään järkevää ja jos, niin mitä?

saadaan kvanttorien järjestystä vaihtamalla ehto Tarkoittaako tämä ehto mitään järkevää ja jos, niin mitä? ANALYYSI A, HARJOITUSTEHTÄVIÄ, KEVÄT 208 4 Funktion raja-arvo 4 Määritelmä Funktion raja-arvon määritelmän ehdosta ε > 0: δ > 0: fx) A < ε aina, kun 0 < x a < δ, saadaan kvanttorien järjestystä vaihtamalla

Lisätiedot

Demo 7 ( ) Antti-Juhani Kaijanaho. 9. joulukuuta 2005

Demo 7 ( ) Antti-Juhani Kaijanaho. 9. joulukuuta 2005 Demo 7 (14.12.2005) Antti-Juhani Kaijanaho 9. joulukuuta 2005 Liitteenä muutama esimerkki Ydin-Haskell-laskuista. Seuraavassa on enemmän kuin 12 nimellistä tehtävää; ylimääräiset ovat bonustehtäviä, joilla

Lisätiedot

Reaalilukuvälit, leikkaus ja unioni (1/2)

Reaalilukuvälit, leikkaus ja unioni (1/2) Luvut Luonnolliset luvut N = {0, 1, 2, 3,... } Kokonaisluvut Z = {..., 2, 1, 0, 1, 2,... } Rationaaliluvut (jaksolliset desimaaliluvut) Q = {m/n m, n Z, n 0} Irrationaaliluvut eli jaksottomat desimaaliluvut

Lisätiedot

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 8. syyskuuta 2016

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 8. syyskuuta 2016 TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 8. syyskuuta 2016 Sisällys a https://tim.jyu.fi/view/kurssit/tie/ tiea241/2016/videoiden%20hakemisto Matemaattisen

Lisätiedot

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä Ohjelmoinnin peruskurssien laaja oppimäärä Luento 3: Funktionaalinen listankäsittely ja listankäsittelyoperaatiot (mm. SICP 22.2.3) Riku Saikkonen 31. 10. 2011 Sisältö 1 Linkitetyt listat 2 Listarakenteet

Lisätiedot

ABHELSINKI UNIVERSITY OF TECHNOLOGY

ABHELSINKI UNIVERSITY OF TECHNOLOGY Satunnaismuuttujat ja todennäköisyysjakaumat Mitä tänään? Jos satunnaisilmiötä halutaan mallintaa matemaattisesti, on ilmiön tulosvaihtoehdot kuvattava numeerisessa muodossa. Tämä tapahtuu liittämällä

Lisätiedot

Vieruskaverisi on tämän päivän luennolla työtoverisi. Jos sinulla ei ole vieruskaveria, siirry jonkun viereen. Esittäytykää toisillenne.

Vieruskaverisi on tämän päivän luennolla työtoverisi. Jos sinulla ei ole vieruskaveria, siirry jonkun viereen. Esittäytykää toisillenne. Aloitus Vieruskaverisi on tämän päivän luennolla työtoverisi. Jos sinulla ei ole vieruskaveria, siirry jonkun viereen. Esittäytykää toisillenne. Mitkä seuraavista väitteistä ovat tosia? A. 6 3 N B. 5 Z

Lisätiedot

4.3. Matemaattinen induktio

4.3. Matemaattinen induktio 4.3. Matemaattinen induktio Matemaattinen induktio: Deduktion laji Soveltuu, kun ominaisuus on osoitettava olevan voimassa luonnollisilla luvuilla. Suppea muoto P(n) : Ominaisuus, joka joka riippuu luvusta

Lisätiedot