ALKEIS-kielen semantiikan aksiomaattinen määrittely
|
|
- Marjut Niemi
- 6 vuotta sitten
- Katselukertoja:
Transkriptio
1 ALKEIS-kielen semantiikan aksiomaattinen määrittely Antti Jokipii Antti Vuorenmaa Eero Lempinen Pete Räsänen Tiivistelmä Kuvaamme kurssilla esimerkkikielenä kehitetyn ALKEIS-ohjelmointikielen semantiikan aksiomaattisesti sekä käymme läpi kielellä kirjoitettujen ohjelmien oikeellisuustodistuksia. 1 Johdanto Tony Hoaren vuonna 1969 esittelemä tietokoneohjelmien verifiointimenetelmä [1] perustuu kolmikoihin, jotka ovat muotoa {P} S {Q}, missä S edustaa suoritettavaa ohjelmaa tai koodiriviä, {P} joukkoa muuttujien arvoja koskevia väittämiä ennen S:n suoritusta ja {Q} joukkoa väittämiä S:n suorituksen jälkeen. Hoaren logiikalla pyritään todistamaan S:n osittainen oikeellisuus, ts. "Mikäli esiehto (engl. precondition) {P} on totta ennen S:n suoritusta ja S pysähtyy, niin jälkiehto (engl. postcondition) {Q} on totta S:n suorituksen jälkeen." Esi- ja jälkiehtojen sanotaan yhdessä muodostavan ohjelman spesifikaation. Käytännön esimerkkinä kolmikosta voidaan esittää { x = 0 } x := x + 2 { x 1 }, missä esiehto olettaa, että muuttujan x arvo on 0 ennen sijoitusoperaation suorittamista ja jälkiehto olettaa, että x 1 sijoituksen jälkeen. Sittemmin tällaista aksiomaattista lähestymistapaa on sovellettu ohjelmointikielten semantiikan määräämiseen (mm. [2]) osoittamalla kielen jokaiselle syntaktiselle rakenteelle päättelysääntö (engl. inference rule), joka kuvaa ko. rakenteen merkityksen. Tässä artikkelissa määrittelemme kurssilla esimerkkikielenä kehitetyn ja käytetyn ALKEIS-ohjelmointikielen semantiikan aksiomaattisesti ja käymme läpi myös lyhyitä todistuksia, jotka selventänevät päättelysääntöjen ideaa. Seuraavaksi hahmottelemme ALKEISkielen syntaksin karkealla tasolla, jonka jälkeen esittelemme päättelysäännöt erilaisille syntaktisille rakenteille. 2 ALKEIS-kielen tyypit ja syntaksi ALKEIS-kielessä on kaksi tietotyyppiä, kokonaislukujen esittämiseen tarkoitettu int ja liukuluvuille float. Lukualueet ja tarkkuus riippuvat kulloisestakin toteutuksesta. Kielen syntaksin lähtöproduktio on StatementList, joka koostuu yhdestä tai usemmasta Statementista: Ohjelmointikielten periaatteet, päätösseminaari , Jyväskylän yliopisto, tietotekniikan laitos. 1
2 StatementList ::= Statement StatementList Statement Statement puolestaan edustaa sijoituslausetta, while-silmukkaa, iflausetta, I/O-operaatiota tai lohkoa: Statement ::= Id := Expr ; while Expr do StatementList od if Expr then StatementList else StatementList fi put Expr ; get Id ; begin Vars StatementList end, missä Id on muuttujan nimi, Expr laskulauseke: Expr ::= Id IntLit FloatLit Expr + Expr Expr - Expr Expr * Expr Expr / Expr Expr mod Expr Expr == Expr Expr <= Expr ( Expr ) ja Vars yhden tai useamman muuttujan esittely: Vars ::= var Id Vars, Id Operaattorit +, -, *, / ja mod vastaavat tavallisia laskutoimituksia toiminnaltaan ja suoritusjärjestykseltään. Mikäli operandit ovat eri tyyppiä, kummatkin muunnetaan floattyyppisiksi ennen operaatiota ja paluuarvo on float-tyyppinen. Vertailuoperaattorit == ja <= palauttavat kokonaisluvun 1, mikäli vertailu on totta, muussa tapauksessa palautetaan 0. Tyyppimuunnokset tehdään samalla tavalla kuin muidenkin operaattoreiden kanssa. 3 Sijoituslause ja aksioomat Sijoitusaksiooma (engl. assignment axiom) määrittää esiehdon annetun sijoitusoperaation ja jälkiehdon perusteella: { P[E/x] } x := E { P }, missä P[E/x] tarkoittaa P:tä, jossa kaikki x:n vapaat esiintymät on korvattu lausekkeen E arvolla. Esimerkiksi seuraava kolmikko on sijoitusaksiooman perusteella tosi: { x + 1 = 2 } x := x + 1 { x = 2 }, sillä esiehto { x + 1 = 2 } saadaan jälkiehdosta { x = 2 } sijoittamalla x:n paikalle lauseke x + 1. Sijoitusaksiooman lisäksi muita aksioomia ovat mm. normaalit lukujen laskusäännöt (kommutatiivisuus, assosiatiivisuus, jne). Niitä ei kuitenkaan tässä käydä. 4 Seuraus Seuraussuhteen (engl. consequence) päättelysääntöjä on kaksi. Ensimmäistä käytetään vahventamaan esiehtoa ja toista heikentämään jälkiehtoa. Seuraus 1: Seuraus 2: P Q, {Q} S {R} {P} S {R} {P} S {Q}, Q R {P} S {R} Seuraus ei siis liity erityisesti mihinkään yksittäiseen ALKEIS-kielen syntaksin produktioon, vaan se on yleispätevä todistamisen apukeino. 2 Ohjelmointikielten periaatteet, päätösseminaari , Jyväskylän yliopisto, tietotekniikan laitos.
3 4.1 Esimerkki Olkoon annettuna kolmikko { x = y } x := y + 1 { x > y x = 1 y = 0 }, mikä Seuraus 1:stä soveltamalla saadaan muotoon: { x = 0 y = 0 x = y } x := y + 1 { x > y x = 1 y = 0 }, ja Seuraus 2 :sta soveltamalla muotoon { x = 0 y = 0 x = y } x := y + 1 { x > y }. Huom. Edellisessä esimerkissä ei todistettu annetun ohjelman oikeellisuutta, sillä siinä ei sovellettu sijoitusaksioomaa. Tarkoituksena oli näyttää kuinka esiehtoja voidaan lisätä ja jälkiehtoja karsia. 5 Yhdistäminen Yhdistämissäännöllä (engl. composition rule) liitetään yhteen kaksi peräkkäistä lausetta, joista ensimmäisen jälkiehto on jälkimmäisen esiehto. Tämä on välttämätöntä, jotta todistuksissa voidaan käsitellä useammasta lauseesta koostuvia ohjelmia. Yhdistämissääntö: 5.1 Esimerkki {P} S 1 {Q}, {Q} S 2 {R} {P} S1; S2 {R} { x = 0 } x := x + 1 { x = 1 }, { x = 1 } x := x + 1 { x 2 } { x = 0 } x := x + 1; x := x + 1 { x 2 } Tässä esimerkissä ensimmäisen kolmikon jälkiehto { x = 1 } on sama kuin jälkimmäisen kolmikon esiehto. Yhdistämissäännön perusteella näistä kahdesta voidaan yhdistää kolmikko, jonka esiehto on ensimmäisen kolmikon esiehto ja jälkiehto on jälkimmäisen kolmikon jälkiehto. Yhdistetyn kolmikon lause saadaan liittämällä kolmikoiden lauseet yhteen erotettuna puolipisteellä. Jälleen on huomattava, että edellisessä esimerkissä ei varsinaisesti todistettu mitään (sillä sijoitusaksioomaa ei sovellettu kolmikoiden sijoituslauseisiin). Seuraavassa esimerkissä sovelletaan kaikkia tähän mennessä esitettyjä sääntöjä ja todistetaan kahdesta sijoituslauseesta koostuva ohjelma osittain oikeelliseksi. 5.2 Esimerkki { x = 0 y = x } x := x + 1; y := y + x { y > 0 } Ensimmäiselle sijoituslauseelle saadaan jälkiehto soveltamalla sijoitusaksioomaa: { x = 0 y = x } x := x + 1 { x = 1 y = x 1 }. Käytetään saatua jälkiehtoa toisen sijoituslauseen esiehtona ja etsitään sille jälkiehto soveltamalla toistamiseen sijoitusaksioomaa: { x = 1 y = x 1 } y := y + x { x = 1 y = x 1 + x }. Koska { x = 1 y = x 1 + x } { y > 0 }, niin toisen sijoituslauseen kolmikko voidaan kirjoittaa muodossa (ts. sen jälkiehtoa voidaan heikentää): { x = 1 y = 0 } y := y + x { y > 0 }. Ohjelmointikielten periaatteet, päätösseminaari , Jyväskylän yliopisto, tietotekniikan laitos. 3
4 Lopuksi liitetään palat yhteen soveltamalla yhdistämissääntöä (tämä voidaan tehdä, sillä ensimmäisen jälkiehto on jälkimmäisen esiehto): 6 Silmukat { x = 0 y = x } x := x + 1; y := y + x { y > 0 }. ALKEIS-kielen silmukkarakenteen semantiikka määräytyy silmukan päättymisehdon (E) ja muuttumattoman ehdon, invariantin (P), totuusarvojen tarkastelulla: { P E } S { P } { P } while E do S od { P E }, missä S edustaa silmukassa suoritettavia operaatioita. Säännöstä käytetään tässä artikkelissa nimeä toistosääntö (engl. rule of iteration). Koska kielessä käytetään kokonaislukuja 0 ja 1 totuusarvoina, E on tulkittava siten, että lausekkeen E arvo on 1 ja E siten, että E:n arvo on 0. Todistuksia tehdessä käyttökelpoisen invariantin löytäminen ei ole välttämättä helppoa, mutta annettu väittämä P voidaan todistaa invariantiksi osoittamalla, että P on totta ennen silmukan suoritusta, P on totta silmukan suorituksen aikana ja P on totta silmukan suorituksen jälkeen. 6.1 Esimerkki { x 1 } while ( x 1 ) do { x := x - 1} od { x = 0 } Arvataan invariantiksi { x 0 }. Invarianttiehdokas on selvästi totta ennen silmukan suoritusta, sillä esiehdosta { x 1 } seuraa { x 0 }. Aloitetaan silmukan todistaminen mää- rittelemällä sijoituslauseelle x := x 1 esi- ja jälkiehdot: { x 1 } x := x 1 { x 0 }, mikä (sijoitusaksiooman perusteella) pitää paikkansa, sillä jälkiehtoon { x 0 } sijoittamalla muuttujan x paikalle lauseke x 1 saadaan haluttu esiehto { x 1 }. Tätä esiehtoa voidaan vielä vahvistaa ensimmäisen seuraussäännön avulla, jolloin uudeksi esiehdoksi saadaan { x 1 x 0 }. Nyt ollaan siis todistettu tällaisen kolmikon osittainen oikeellisuus: { x 1 x 0 } x := x 1 { x 0 }. Seuraavaksi sovelletaan toistosääntöä käyttäen väittämää x 0 invarianttina P ja silmukan ehtoa x 1 ehtona E: { x 1 x 0 } x := x 1 { x 0 } { x 0 } while x 1 do x := x 1 od { x 0 (x 1) }. Haluttu jälkiehto { x = 0 } saadaan ehdosta { x 0 (x 1) } seuraavalla päättelyllä (oletetaan x kokonaisluvuksi): { x 0 (x 1) } { x 0 x < 1 } { x = 0 }. On paikallaan vielä varmistaa, että invariantti { x 0 } on totta 1. ennen silmukkaa (tämä nähtiin jo alussa), 2. silmukan suorituksen aikana (ok, sillä { x 0 } esiintyy sijoituslauseen esi- ja jälkiehdossa), ja 3. silmukan suorituksen jälkeen (ok, sillä { x 0 } on jälkiehdon { x = 0 } heikennys). 4 Ohjelmointikielten periaatteet, päätösseminaari , Jyväskylän yliopisto, tietotekniikan laitos.
5 7 If-lause If-lauseelle on voimassa sääntö if-then-else: { P E } S 1 { Q }, { P E } S 2 { Q } { P } if E then S 1 else S 2 fi { Q } Kuten while-lauseen määrittelyn yhteydessä, tässäkin on muistettava totuusarvojen korvaaminen kokonaisluvuilla. 7.1 Esimerkki { x = 2 y = 5 } if ( x y ) then { x := y + 1 } else ; fi { x > y } Lähdetään jälleen liikkeelle sijoituslauseesta x := y + 1 keksimällä sille esija jälkiehdot (ja todistamalla näin saatava sijoituslause): { x y } x:= y + 1 { x > y }, mikä on totta, sillä jälkiehtoon { x > y } sijoittamalla x:n paikalle y + 1 saadaan tautologia 1 { y + 1 > y }, joten esiehtona voi olla mitä tahansa, erityisesti siis { x y } kelpaa. Seuraavaksi sovelletaan if-then-elsesääntöä, valitaan ehdoksi P { x = 2 y = 5 }, silmukkaehdoksi E { x y }, E:n negaatioksi { x > y } ja jälkiehdoksi Q ehto { x > y }: { x = 2 y = 5 x y } x:= y + 1 { x > y }, { x = 2 y = 5 x > y } { x > y } { x = 2 y = 5 } if x y then x := y + 1 else ; fi { x > y }, mikä on haluttu muoto. 1 tautologia = väite, joka on muuttujiensa arvoista riippumatta aina tosi 8 I/O-operaatiot Syöte- ja tulostusvirrat mallinnetaan merkeistä koostuvina jonoina, joista lukuoperaatiossa (merkitään get) poistetaan alusta ja joihin kirjoitusoperaatiossa (merkitään put) lisätään loppuun alkio. Syötevirtaa merkitään symbolilla IN ja tulostusvirtaa symbolilla OUT. Merkintä IN = al tarkoittaa, että syötevirran ensimmäinen alkio on a, jota seuraa jono L, jossa on 0 tai useampi alkio. Vastaavasti OUT = La tarkoittaa, että tulostusvirran viimeinen alkio on a, jota edeltää jono L, jossa on 0 tai useampi alkio. Seuraavat päättelysäännöt määräävät luku- ja kirjoitusoperaatioiden merkityksen: Luku: { IN = al P[a/x] } get x { IN = L P } Kirjoitus: { OUT = L E = a P } put E { OUT = La E = a P }, missä E tarkoittaa lauseketta, jonka arvo on a. 8.1 Esimerkki { IN = [17, 5]L 1 OUT = L 2 } get x; get y; put x + y { IN = L 1 OUT = L 2 [22] } Lähdetään liikkeelle ensimmäisestä getoperaatiosta. Käytetään esiehtona ohjelman esiehtoa ja poistetaan INjonosta 1. alkio. OUT-jono pysyy muuttumattomana. Kun jälkiehdossa { x = 17 } x:n paikalle sijoitetaan luettu alkio Ohjelmointikielten periaatteet, päätösseminaari , Jyväskylän yliopisto, tietotekniikan laitos. 5
6 17, niin saadaan jälleen tautologia, joka ei siis vaadi esiehdolta mitään lisää: { IN = [17, 5]L 1 OUT = L 2 } get x { IN = [5]L 1 OUT = L 2 x = 17 } Siirrytään toiseen get-operaatioon. Käytetään edellisen get-operaation jälkiehtoa tämän get-operaation esiehtona (jotta jatkossa päästään soveltamaan yhdistämissääntöä). INjonosta poistuu jälleen alkio, OUT pysyy ennallaan ja jälkiehdossa { y = 5 } on jälleen tautologia, joten muita vaatimuksia esiehdolle ei tule: { IN = [5]L 1 OUT = L 2 x = 17 } get y { IN = L 1 OUT = L 2 x = 17 y = 5 } Koska ensimmäisen get-operaation jälkiehto on toisen esiehto, yhdistämissäännön perusteella kolmikot voidaan yhdistää: { IN = [17, 5]L 1 OUT = L 2 } get x; get y; { IN = L 1 OUT = L 2 x = 17 y = 5 } Siirrytään put-operaatioon. Käytetään yhdistetyn kolmikon jälkiehtoa putoperaation esiehtona (jotta päästään taas soveltamaan yhdistämissääntöä). Esiehtoa voidaan vahvistaa oletuksella x + y = 22, sillä se suoraa oletuksesta { x = 17 y = 6 }. IN-jono pysyy muuttumattomana, OUT:iin lisätään lausekkeen x + y arvo (joka nyt siis oletuksen mukaan on 22), x, y ja x + y pysyvät muuttumattomina. Saadaan siis kolmikko: { IN = L 1 OUT = L 2 x = 17 y = 5 x + y = 22 } put x + y; { IN = L 1 OUT = L 2 [22] x = 17 y = 5 x + y = 22 } Yhdistetään kolmikot (tämä voidaan tehdä, sillä put-kolmikon esiehto on yhtäpitävä get-kolmikon jälkiehdon kanssa). put-kolmikon jälkiehtoa voidaan heikentää poistamalla siitä ehto { x = 17, y = 5, x + y = 22}. Näin saadaan { IN = [17, 5]L 1 OUT = L 2 } get x; get y; put x + y; { IN = L 1 OUT = L 2 [22] } mikä on sitä, mitä haluttiin. 9 Lohkot ALKEIS-kielen lohko (engl. block) koostuu joukosta lauseita, joissa on voimassa paikallisesti määriteltyjä muuttujia. Lohkon päättelysäännössä { P } S { Q } { P } begin D S end; { Q } D edustaa paikallisten muuttujien määrittelyä (kieliopin Vars-produktio) ja ehdot P ja Q eivät saa sisältää D:ssä esiteltyjä muuttujia. Sisäkkäisten lohkojen samannimiset muuttujat tulee pystyä erottelemaan. Tämä voidaan esimerkiksi tehdä uudelleennimeämällä ohjelman kaikki muuttujat siten, että muuttujien vanhaan nimeen lisätään # -merkki (tai mikä tahansa muu merkki, jota ALKEISkielen konkreetti syntaksi ei salli muuttujien nimissä), jonka jälkeen 6 Ohjelmointikielten periaatteet, päätösseminaari , Jyväskylän yliopisto, tietotekniikan laitos.
7 kirjoitetaan kulloisenkin lohkon syvyys ohjelman lohkohierarkiassa. Esimerkiksi siis ohjelman begin end; var x, var y begin end; var y y = y + 1; muuttujat seuraavasti: begin end; var x#1, var y#1 begin end; var y#2 y#2 = y#2 + 1; 10 Terminoituvuus uudelleennimetään Tässä luvussa käsittelemme lyhyesti ALKEIS-kielellä kirjoitettujen ohjelmien pysähtymisongelmaa. Asia ei suoranaisesti liity ohjelmointikielen semantiikan määrittämiseen, mutta on hyvin keskeinen oikeellisuustodistuksissa. Esitystapa mukailee lähteen [3] esitystä. Ohjelma P on terminoituva ts. se pysähtyy, joss se ei jää ikuiseen silmukkaan. Tähänastisilla menetelmillä on kyetty todistamaan osittainen oikeellisuus, ts. jos esiehdot täyttyvät ja ohjelma terminoituu, niin myös jälkiehdot täyttyvät. Ohjelman täydellinen oikeellisuus edellyttää, että aina esiehtojen ollessa voimassa ohjelma terminoituu ja antaa oikeat tulokset. Ohjelmissa on kaksi erityyppistä syntaktista rakennetta, jotka mahdollistavat ikuiseen silmukkaan jäämisen: 1. while-silmukat 2. rekursiiviset aliohjelmakutsut. While-silmukka todistetaan terminoituvaksi löytämällä sille ns. terminoiva lauseke (engl. termination expression). Rekursio todistetaan terminoituvaksi induktiotodistuksella. Koska käsittelemässämme ALKEISkielen versiossa ei aliohjelmia ole, keskitymme tarkastelemaan vain silmukoita. Seuraavaksi käydään läpi terminoivan lausekkeen määritelmä ja todistetaan yksinkertainen silmukka terminoituvaksi Aito ja koherentti järjestysrelaatio Joukon W osittainen järjestys on koherentti (engl. well-founded), joss kaikille W:n väheneville sekvensseille x 1 x 2 x 3... on olemassa luonnollinen luku k siten, että x i = x j i, j k. Järjestysrelaatio on aito (engl. strict), joss se ei ole refleksiivinen ja missään vähenevässä sekvenssissä ei esiinny sama alkio useampaa kertaa (ja näin kaikki vähenevät sekvenssit ovat äärellisiä) Terminoiva lauseke Olkoon joukon W aito ja koherentti järjestysrelaatio. Lauseke E on silmukan S terminoiva lauseke, joss 1. E:n arvo W jokaisella S:n iteraatiolla ja 2. jokaisella toistolla E:n arvo on :n mielessä pienempi kuin edellisellä kerralla. Osoitettaessa annettua silmukkaa terminoituvaksi on siis löydettävä Ohjelmointikielten periaatteet, päätösseminaari , Jyväskylän yliopisto, tietotekniikan laitos. 7
8 määritelmissä esiintyvät joukko W, järjestys ja lauseke E, jolla on W:n ja :n suhteen vaaditut ominaisuudet. Seuraavaksi katsotaan, kuinka tämä käytännössä tehdään Esimerkki Seuraava ohjelma laskee luonnollisen luvun 2 (muuttuja n) kertoman: { n N k = 1 i = n } while ( i 1 ) do od { k = n! } k := k * i; i := i 1; Nyt joukoksi W kelpaavat luonnolliset luvut, relaatioksi normaali luonnollisten lukujen järjestys ja terminoivaksi lausekkeeksi E muuttujan i arvo. Käytetään 3 ehtoa i Ν silmukkainvarianttina. Tarkistetaan terminoivan lausekkeen määritelmässä annetut ehdot: 1. E:n arvo W jokaisella S:n iteraatiolla ; Tämä on totta, sillä se sisältyy invarianttiehtoon i Ν. 2. Jokaisella toistolla E:n arvo on :n mielessä pienempi kuin edellisellä kerralla ; { i = A } k:= k * i; i := i 1 { A i = A 1 }. Näin siis voidaan päätellä esimerkin while-silmukan terminoituvan. Mikäli lisäksi osoittaisiin jälkiehtojen seuraavan esiehdoista, voitaisiin todeta ohjelma täydellisesti oikeelliseksi. 11 Yhteenveto Semantiikan aksiomaattinen määritteleminen ALKEIS-kielelle ja yksinkertaisten ohjelmien todistukset näyttävät siis olevan mahdollisia. Asiat mutkistuvat kun kieleen tuodaan aliohjelmat ja oliot. Artikkelissa ei todistettu esitetyn päättelysäännöstön oikeellisuutta (engl. soundness) tai täydellisyyttä (engl completeness). Seuraussääntö, yhdistämissääntö ja terminoituvuuden tarkastelu eivät varsinaisesti määritä kielen semantiikkaa, mutta ovat keskeisiä käsitteitä todistuksia tehdessä. Viitteet [1] C.A.R. Hoare, An Axiomatic Basis for Computer Programming, Communications of the ACM 12, 1969 [2] C. A. R. Hoare and N. Wirth, An axiomatic definition of the programming language Pascal, Acta Informatica, 2(4), 1973 [3] K. Slonneger, B. L. Kurtz "Formal Syntax and Semantics of Programming Languages: A Laboratory-Based Approach", luku 11, ISBN Addison- Wesley, Tässä luonnolliset luvut alkavat ykkösestä. 3 Oikeasti pitäisi vielä osoittaa, että i Ν kelpaa invariantiksi. 8 Ohjelmointikielten periaatteet, päätösseminaari , Jyväskylän yliopisto, tietotekniikan laitos.
T Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 12 (opetusmoniste, kappaleet )
T-79.144 Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 12 (opetusmoniste, kappaleet 9.1 9.5) 30.11. 3.12.2004 1. Osoita lauselogiikan avulla oheisten ehtolausekkeiden ekvivalenssi. (a)!(a
LisätiedotFORMAALI SYSTEEMI (in Nutshell): aakkosto: alkeismerkkien joukko kieliopin määräämä syntaksi: sallittujen merkkijonojen rakenne, formaali kuvaus
FORMAALI SYSTEEMI (in Nutshell): Formaali kieli: aakkosto: alkeismerkkien joukko kieliopin määräämä syntaksi: sallittujen merkkijonojen rakenne, formaali kuvaus esim. SSM:n tai EBNF:n avulla Semantiikka:
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ätiedotPropositiot: Propositiot ovat väitelauseita. Totuusfunktiot antavat niille totuusarvon T tai E.
Propositiot: Propositiot ovat väitelauseita. Totuusfunktiot antavat niille totuusarvon T tai E. Perusaksioomat: Laki 1: Kukin totuusfunktio antaa kullekin propositiolle totuusarvoksi joko toden T tai epätoden
LisätiedotApprobatur 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ätiedotLogiikan 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ätiedotKoottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.
2. Ohjausrakenteet Ohjausrakenteiden avulla ohjataan ohjelman suoritusta. peräkkäisyys valinta toisto Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet
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ätiedot811120P Diskreetit rakenteet
811120P Diskreetit rakenteet 2016-2017 1. Algoritmeista 1.1 Algoritmin käsite Algoritmi keskeinen laskennassa Määrittelee prosessin, joka suorittaa annetun tehtävän Esimerkiksi Nimien järjestäminen aakkosjärjestykseen
Lisätiedot811120P Diskreetit rakenteet
811120P Diskreetit rakenteet 2018-2019 1. Algoritmeista 1.1 Algoritmin käsite Algoritmi keskeinen laskennassa Määrittelee prosessin, joka suorittaa annetun tehtävän Esimerkiksi Nimien järjestäminen aakkosjärjestykseen
Lisätiedot811120P Diskreetit rakenteet
811120P Diskreetit rakenteet 2016-2017 ari.vesanen (at) oulu.fi 5. Rekursio ja induktio Rekursio tarkoittaa jonkin asian määrittelyä itseensä viittaamalla Tietojenkäsittelyssä algoritmin määrittely niin,
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ä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ätiedotToinen muotoilu. {A 1,A 2,...,A n,b } 0, Edellinen sääntö toisin: Lause 2.5.{A 1,A 2,...,A n } B täsmälleen silloin kun 1 / 13
2 3 Edellinen sääntö toisin: Lause 2.5.{A 1,A 2,...,A n } B täsmälleen silloin kun {A 1,A 2,...,A n,b } 0, jatkoa jatkoa 1 / 13 2 3 Edellinen sääntö toisin: Lause 2.5.{A 1,A 2,...,A n } B täsmälleen silloin
LisätiedotTIEA241 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ätiedotJohdatus matemaattiseen päättelyyn
Johdatus matemaattiseen päättelyyn Maarit Järvenpää Oulun yliopisto Matemaattisten tieteiden laitos Syyslukukausi 2015 1 Merkintöjä 2 Todistamisesta 2 3 Joukko-oppia Tässä luvussa tarkastellaan joukko-opin
Lisätiedot5/20: Algoritmirakenteita III
Ohjelmointi 1 / syksy 2007 5/20: Algoritmirakenteita III Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/17 Tämän
LisätiedotEhto- ja toistolauseet
Ehto- ja toistolauseet 1 Ehto- ja toistolauseet Uutena asiana opetellaan ohjelmointilauseet / rakenteet, jotka mahdollistavat: Päätösten tekemisen ohjelman suorituksen aikana (esim. kyllä/ei) Samoja lauseiden
LisätiedotMiten osoitetaan joukot samoiksi?
Miten osoitetaan joukot samoiksi? Määritelmä 1 Joukot A ja B ovat samat, jos A B ja B A. Tällöin merkitään A = B. Kun todistetaan, että A = B, on päättelyssä kaksi vaihetta: (i) osoitetaan, että A B, ts.
Lisätiedot-Matematiikka on aksiomaattinen järjestelmä. -uusi tieto voidaan perustella edellisten tietojen avulla, tätä kutsutaan todistamiseksi
-Matematiikka on aksiomaattinen järjestelmä -uusi tieto voidaan perustella edellisten tietojen avulla, tätä kutsutaan todistamiseksi -mustavalkoinen: asia joko on tai ei (vrt. humanistiset tieteet, ei
LisätiedotLAUSELOGIIKKA (1) Sanalliset ilmaisut ovat usein epätarkkoja. On ilmaisuja, joista voidaan sanoa, että ne ovat tosia tai epätosia, mutta eivät molempia. Ilmaisuja, joihin voidaan liittää totuusarvoja (tosi,
LisätiedotRekursiiviset 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ätiedot4 Matemaattinen induktio
4 Matemaattinen induktio Joidenkin väitteiden todistamiseksi pitää näyttää, että kaikilla luonnollisilla luvuilla on jokin ominaisuus P. Esimerkkejä tällaisista väitteistä ovat vaikkapa seuraavat: kaikilla
LisätiedotIDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit
IDL - proseduurit 25. huhtikuuta 2017 Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,
LisätiedotATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014
18. syyskuuta 2014 IDL - proseduurit Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,
Lisätiedot11. Javan toistorakenteet 11.1
11. Javan toistorakenteet 11.1 Sisällys Laskuri- ja lippumuuttujat. Sisäkkäiset silmukat. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin
Lisätiedot13. Loogiset operaatiot 13.1
13. Loogiset operaatiot 13.1 Sisällys Loogiset operaatiot AND, OR, XOR ja NOT. Operaatioiden ehdollisuus. Bittioperaatiot. Loogiset operaatiot ohjausrakenteissa. Loogiset operaatiot ja laskentajärjestys.
LisätiedotLuonnollisten 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ätiedotWP-LASKENNAN OIKEELLISUUS JA TÄYDELLISYYS
Antti Vuorenmaa WP-LASKENNAN OIKEELLISUUS JA TÄYDELLISYYS Tietotekniikan pro gradu -tutkielma Ohjelmistotekniikan linja 24.6.2003 Jyväskylän yliopisto Tietotekniikan laitos Tekijä: Antti Vuorenmaa Yhteystiedot:
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ätiedotTIEA241 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ätiedotMatematiikan 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ätiedotmissä 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ätiedotDiskreetin 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ätiedotMS-A0402 Diskreetin matematiikan perusteet
MS-A0402 Diskreetin matematiikan perusteet Osa 1: Joukko-oppi ja logiikka Riikka Kangaslampi 2017 Matematiikan ja systeemianalyysin laitos Aalto-yliopisto Kiitokset Nämä luentokalvot perustuvat Gustaf
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ätiedotSisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä
Sisällys 11. Javan toistorakenteet Laskuri- ja lippumuuttujat.. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin lopettaminen break-lauseella.
LisätiedotVastaus 1. Lasketaan joukkojen alkiot, ja todetaan, että niitä on 3 molemmissa.
Miten perustella, että joukossa A = {a, b, c} on yhtä monta alkiota kuin joukossa B = {d, e, f }? Vastaus 1. Lasketaan joukkojen alkiot, ja todetaan, että niitä on 3 molemmissa. Vastaus 2. Vertaillaan
LisätiedotMiten perustella, että joukossa A = {a, b, c} on yhtä monta alkiota kuin joukossa B = {d, e, f }?
Miten perustella, että joukossa A = {a, b, c} on yhtä monta alkiota kuin joukossa B = {d, e, f }? Miten perustella, että joukossa A = {a, b, c} on yhtä monta alkiota kuin joukossa B = {d, e, f }? Vastaus
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ätiedotInsinöörimatematiikka A
Insinöörimatematiikka A Mika Hirvensalo mikhirve@utu.fi Matematiikan ja tilastotieteen laitos Turun yliopisto 2018 Mika Hirvensalo mikhirve@utu.fi Luentoruudut 3 1 of 23 Kertausta Määritelmä Predikaattilogiikan
LisätiedotTodistusmenetelmiä Miksi pitää todistaa?
Todistusmenetelmiä Miksi pitää todistaa? LUKUTEORIA JA TO- DISTAMINEN, MAA11 Todistus on looginen päättelyketju, jossa oletuksista, määritelmistä, aksioomeista sekä aiemmin todistetuista tuloksista lähtien
LisätiedotHY / Matematiikan ja tilastotieteen laitos Johdatus logiikkaan I, syksy 2018 Harjoitus 5 Ratkaisuehdotukset
HY / Matematiikan ja tilastotieteen laitos Johdatus logiikkaan I, syksy 2018 Harjoitus 5 Ratkaisuehdotukset 1. Päättele resoluutiolla seuraavista klausuulijoukoista: (a) {{p 0 }, {p 1 }, { p 0, p 2 },
LisätiedotTehtävä 1. Päättele resoluutiolla seuraavista klausuulijoukoista. a. 1 {p 3 } oletus. 4 {p 1, p 2, p 3 } oletus. 5 { p 1 } (1, 2) 7 (4, 6)
Tehtävä 1 Päättele resoluutiolla seuraavista klausuulijoukoista. a. {{p 0 }, {p 1 }, { p 0, p 2 }, {p 1, p 2, p 3 }, { p 2, p 3 }, {p 3 }}, b. {{ p 0, p 2 }, {p 0, p 1 }, {{ p 1, p 2 }, { p 2 }}, c. {{p
Lisätiedot815338A 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ä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ätiedotMS-A0402 Diskreetin matematiikan perusteet
MS-A040 Diskreetin matematiikan perusteet Osa : Relaatiot ja funktiot Riikka Kangaslampi 017 Matematiikan ja systeemianalyysin laitos Aalto-yliopisto Relaatiot Relaatio Määritelmä 1 Relaatio joukosta A
LisätiedotTietojenkäsittelyteorian alkeet, osa 2
TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 12. syyskuuta 2016 Sisällys vs Ovat eri asioita! Älä sekoita niitä. Funktiot Funktio f luokasta A luokkaan B, merkitään
Lisätiedotuv n, v 1, ja uv i w A kaikilla
2.8 Säännöllisten kielten rajoituksista Kardinaliteettisyistä on oltava olemassa (paljon) ei-säännöllisiä kieliä: kieliä on ylinumeroituva määrä, säännöllisiä lausekkeita vain numeroituvasti. Voidaanko
LisätiedotJava-kielen perusteita
Java-kielen perusteita valintalauseet 1 Johdantoa kontrollirakenteisiin Tähän saakka ohjelmissa on ollut vain peräkkäisyyttä eli lauseet on suoritettu peräkkäin yksi kerrallaan Tarvitsemme myös valintaa
Lisätiedot811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu
811312A Tietorakenteet ja algoritmit 2017-2018, Harjoitus 2 ratkaisu Harjoituksen aiheena on algoritmien oikeellisuus. Tehtävä 2.1 Kahvipurkkiongelma. Kahvipurkissa P on valkoisia ja mustia kahvipapuja,
LisätiedotJohdanto II. TIE303 Formaalit menetelmät, kevät Antti-Juhani Kaijanaho. Jyväskylän yliopisto Tietotekniikan laitos.
TIE303 Formaalit menetelmät, kevät 2005 Johdanto II Antti-Juhani Kaijanaho antkaij@mit.jyu.fi Jyväskylän yliopisto Tietotekniikan laitos TIE303 Formaalit mentetelmät, 2005-01-20 p. 1/21 Luento2Luentomoniste
Lisätiedot1. Logiikan ja joukko-opin alkeet
1. Logiikan ja joukko-opin alkeet 1.1. Logiikkaa 1. Osoita totuusarvotauluja käyttäen, että implikaatio p q voidaan kirjoittaa muotoon p q, ts. että propositio (p q) ( p q) on identtisesti tosi. 2. Todista
LisätiedotTIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 2. helmikuuta 2012
TIEA241 Automaatit ja, kevät 2012 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 2. helmikuuta 2012 Sisällys Sisällys Chomskyn hierarkia kieli säännöllinen kontekstiton kontekstinen rekursiivisesti lueteltava
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ätiedoton Abelin ryhmä kertolaskun suhteen. Tämän joukon alkioiden lukumäärää merkitään
5. Primitiivinen alkio 5.1. Täydennystä lukuteoriaan. Olkoon n Z, n 2. Palautettakoon mieleen, että kokonaislukujen jäännösluokkarenkaan kääntyvien alkioiden muodostama osajoukko Z n := {x Z n x on kääntyvä}
LisätiedotTaulumenetelmä modaalilogiikalle K
/ Kevät 2004 ML-6 1 Taulumenetelmä modaalilogiikalle On vaikeaa löytää Hilbert-tyylisiä todistuksia: Käytössä Modus Ponens -sääntö: jotta voidaan johtaa Q, täytyy johtaa P ja P Q. Mutta mikä on sopiva
LisätiedotTietotyypit ja operaattorit
Tietotyypit ja operaattorit Luennossa tarkastellaan yksinkertaisten tietotyyppien int, double ja char muunnoksia tyypistä toiseen sekä esitellään uusia operaatioita. Numeeriset tietotyypit ja muunnos Merkkitieto
LisätiedotLogiikka 1/5 Sisältö ESITIEDOT:
Logiikka 1/5 Sisältö Formaali logiikka Luonnollinen logiikka muodostaa perustan arkielämän päättelyille. Sen käyttö on intuitiivista ja usein tiedostamatonta. Mikäli logiikka halutaan täsmällistää esimerkiksi
LisätiedotLisää pysähtymisaiheisia ongelmia
Lisää pysähtymisaiheisia ongelmia Lause: Pysähtymättömyysongelma H missä H = { w111x w validi koodi, M w ei pysähdy syötteellä x } ei ole rekursiivisesti lueteltava. Todistus: Pysähtymisongelman komplementti
Lisätiedot13. Loogiset operaatiot 13.1
13. Loogiset operaatiot 13.1 Sisällys Loogiset operaatiot AND, OR, XOR ja NOT. Operaatioiden ehdollisuus. Bittioperaatiot. Loogiset operaatiot ohjausrakenteissa. Loogiset operaatiot ja laskentajärjestys.
Lisätiedota k+1 = 2a k + 1 = 2(2 k 1) + 1 = 2 k+1 1. xxxxxx xxxxxx xxxxxx xxxxxx
x x x x x x x x Matematiikan johdantokurssi, syksy 08 Harjoitus, ratkaisuista Hanoin tornit -ongelma: Tarkastellaan kolmea pylvästä A, B ja C, joihin voidaan pinota erikokoisia renkaita Lähtötilanteessa
LisätiedotAlgoritmit 1. Luento 5 Ti Timo Männikkö
Algoritmit 1 Luento 5 Ti 24.1.2017 Timo Männikkö Luento 5 Järjestetty lista Järjestetyn listan operaatiot Listan toteutus taulukolla Binäärihaku Binäärihaun vaativuus Algoritmit 1 Kevät 2017 Luento 5 Ti
LisätiedotMS-A0401 Diskreetin matematiikan perusteet
MS-A0401 Diskreetin matematiikan perusteet Osa 2: Relaatiot ja funktiot Riikka Kangaslampi Syksy 2017 Matematiikan ja systeemianalyysin laitos Aalto-yliopisto Relaatiot Relaatio Määritelmä 1 Relaatio joukosta
LisätiedotLisää kvanttoreista ja päättelyä sekä predikaattilogiikan totuustaulukot 1. Negaation siirto kvanttorin ohi
Lisää kvanttoreista ja päättelyä sekä predikaattilogiikan totuustaulukot 1. Negaation siirto kvanttorin ohi LUKUTEORIA JA TODISTAMINEN, MAA11 Esimerkki a) Lauseen Kaikki johtajat ovat miehiä negaatio ei
LisätiedotLuento 5. Timo Savola. 28. huhtikuuta 2006
UNIX-käyttöjärjestelmä Luento 5 Timo Savola 28. huhtikuuta 2006 Osa I Shell-ohjelmointi Ehtolause Lausekkeet suoritetaan jos ehtolausekkeen paluuarvo on 0 if ehtolauseke then lauseke
LisätiedotTIES542 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ätiedotLoogiset konnektiivit
Loogiset konnektiivit Tavallisimmat loogiset konnektiivit ovat negaatio ei konjunktio ja disjunktio tai implikaatio jos..., niin... ekvivalenssi... jos ja vain jos... Sulkeita ( ) käytetään selkeyden vuoksi
LisätiedotSisällys. 3. Pseudokoodi. Johdanto. Johdanto. Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen.
Sisällys 3. Pseudokoodi Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen. Ohjausrakenteet: Valinta if- ja if--rakenteilla. oisto while-, do-while- ja for-rakenteilla. 3.1 3.2 Johdanto
Lisätiedot811120P Diskreetit rakenteet
811120P Diskreetit rakenteet 2016-2017 4. Joukot, relaatiot ja funktiot Osa 3: Funktiot 4.3 Funktiot Olkoot A ja B joukkoja. Funktio joukosta A joukkoon B on sääntö, joka liittää yksikäsitteisesti määrätyn
LisätiedotOhjelmointiharjoituksia Arduino-ympäristössä
Ohjelmointiharjoituksia Arduino-ympäristössä Yleistä Arduino-sovelluksen rakenne Syntaksi ja käytännöt Esimerkki ohjelman rakenteesta Muuttujat ja tietotyypit Tietotyypit Esimerkkejä tietotyypeistä Ehtolauseet
Lisätiedot815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset
815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 6 Vastaukset Harjoituksen aiheena on funktionaalinen ohjelmointi Scheme- ja Haskell-kielillä. Voit suorittaa ohjelmat osoitteessa https://ideone.com/
LisätiedotDFA:n käyttäytyminen ja säännölliset kielet
säännölliset kielet TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 9. marraskuuta 2015 Sisällys toiminta formaalisti Olkoon M = (Q, Σ, δ, q 0, F) deterministinen
LisätiedotIlkka Mellin Todennäköisyyslaskenta Liite 1: Joukko-oppi
Ilkka Mellin Todennäköisyyslaskenta Liite 1: Joukko-oppi TKK (c) Ilkka Mellin (2007) 1 Joukko-oppi >> Joukko-opin peruskäsitteet Joukko-opin perusoperaatiot Joukko-opin laskusäännöt Funktiot Tulojoukot
LisätiedotEnsimmäinen induktioperiaate
Ensimmäinen induktioperiaate Olkoon P(n) luonnollisilla luvuilla määritelty predikaatti. (P(n) voidaan lukea luvulla n on ominaisuus P.) Todistettava, että P(n) on tosi jokaisella n N. ( Kaikilla luonnollisilla
LisätiedotMS-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[a] ={b 2 A : a b}. Ekvivalenssiluokkien joukko
3. Tekijälaskutoimitus, kokonaisluvut ja rationaaliluvut Tässä luvussa tutustumme kolmanteen tapaan muodostaa laskutoimitus joukkoon tunnettujen laskutoimitusten avulla. Tätä varten määrittelemme ensin
LisätiedotSäännöllisten kielten sulkeumaominaisuudet
Säännöllisten kielten sulkeumaominaisuudet Osoitamme nyt, että säännöllisten kielten joukko on suljettu yhdisteen, konkatenaation ja tähtioperaation suhteen. Toisin sanoen jos A ja B ovat säännöllisiä,
LisätiedotTutoriaaliläsnäoloista
Tutoriaaliläsnäoloista Tutoriaaliläsnäolokierroksella voi nyt täyttää anomuksen läsnäolon merkitsemisestä Esim. tagi ei toiminut, korvavaltimon leikkaus, yms. Hyväksyn näitä omaa harkintaa käyttäen Tarkoitus
LisätiedotMS-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ätiedotLuonnollisten lukujen induktio-ominaisuudesta
Solmu 1/2019 19 Luonnollisten lukujen induktio-ominaisuudesta Tuomas Korppi Johdanto Kuten lukija varmaan tietääkin, luonnollisille luvuille voidaan tehdä induktiotodistuksia. Tämä mahdollisuus on ominainen
LisätiedotEnsimmäinen induktioperiaate
1 Ensimmäinen induktioperiaate Olkoon P(n) luonnollisilla luvuilla määritelty predikaatti. (P(n) voidaan lukea luvulla n on ominaisuus P.) Todistettava, että P(n) on tosi jokaisella n N. ( Kaikilla luonnollisilla
LisätiedotSisällys. 16. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. Aritmetiikkaa toisin merkiten
Sisällys 16. Ohjelmoinnin tekniikkaa Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely ja alustaminen yhdellä lauseella. For-lause lyhemmin. If-else-lause vaihtoehtoisesti
Lisätiedotb) Määritä myös seuraavat joukot ja anna kussakin tapauksessa lyhyt sanallinen perustelu.
Johdatus yliopistomatematiikkaan Helsingin yliopisto, matematiikan ja tilastotieteen laitos Kurssikoe 23.10.2017 Ohjeita: Vastaa kaikkiin tehtäviin. Ratkaisut voi kirjoittaa samalle konseptiarkille, jos
Lisätiedot12. Javan toistorakenteet 12.1
12. Javan toistorakenteet 12.1 Sisällys Yleistä toistorakenteista. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirheitä. Silmukan rajat asetettu
LisätiedotLuonnollisen päättelyn luotettavuus
Luonnollisen päättelyn luotettavuus Luotettavuuden todistamiseksi määrittelemme täsmällisesti, milloin merkkijono on deduktio. Tässä ei ole sisällytetty päättelysääntöihin iteraatiosääntöä, koska sitä
Lisätiedot16. Ohjelmoinnin tekniikkaa 16.1
16. Ohjelmoinnin tekniikkaa 16.1 Sisällys Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely ja alustaminen yhdellä lauseella. For-lause lyhemmin. If-else-lause vaihtoehtoisesti
LisätiedotJava-kielen perusteet
Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, Vakio Tiedon merkkipohjainen tulostaminen Ohjelmointi (ict1tx006) Tunnus (5.3) Javan tunnus Java-kirjain Java-numero
LisätiedotJokaisen parittoman kokonaisluvun toinen potenssi on pariton.
3 Todistustekniikkaa 3.1 Väitteen kumoaminen vastaesimerkillä Monissa tilanteissa kohdataan väitteitä, jotka koskevat esimerkiksi kaikkia kokonaislukuja, kaikkia reaalilukuja tai kaikkia joukkoja. Esimerkkejä
Lisätiedot4.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ätiedotTIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli
TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op Assembly ja konekieli Tietokoneen ja ohjelmiston rakenne Loogisilla piireillä ja komponenteilla rakennetaan prosessori ja muistit Prosessorin rakenne
Lisätiedot11/20: Konepelti auki
Ohjelmointi 1 / syksy 2007 11/20: Konepelti auki Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/11 Tämän luennon
LisätiedotJohdatus matematiikkaan
Johdatus matematiikkaan Luento 3 Mikko Salo 1.9.2017 Sisältö 1. Logiikasta 2. Suora ja epäsuora todistus 3. Jaollisuus ja alkuluvut Todistus Tähän asti esitetyt todistukset ovat olleet esimerkinomaisia.
LisätiedotJohdatus matemaattiseen päättelyyn
Johdatus matemaattiseen päättelyyn Maarit Järvenpää Oulun yliopisto Matemaattisten tieteiden laitos Syyslukukausi 2015 1 Merkintöjä Luonnollisten lukujen joukko N on joukko N = {1, 2, 3,...} ja kokonaislukujen
LisätiedotMatematiikassa väitelauseet ovat usein muotoa: jos P on totta, niin Q on totta.
Väitelause Matematiikassa väitelauseet ovat usein muotoa: jos P on totta, niin Q on totta. Tässä P:tä kutsutaan oletukseksi ja Q:ta väitteeksi. Jos yllä oleva väitelause on totta, sanotaan, että P:stä
LisätiedotTIEA241 Automaatit ja kieliopit, syksy 2015. Antti-Juhani Kaijanaho. 3. joulukuuta 2015
TIEA241 Automaatit ja, syksy 2015 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 3. joulukuuta 2015 Sisällys Formaalisti Määritelmä Nelikko G = (V, Σ, P, S) on kontekstiton kielioppi (engl. context-free
LisätiedotSisällys. 17. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. for-lause lyhemmin
Sisällys 17. Ohjelmoinnin tekniikkaa for-lause lyhemmin. Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely ja alustaminen yhdellä lauseella. if-else-lause vaihtoehtoisesti
LisätiedotHY / Matematiikan ja tilastotieteen laitos Johdatus logiikkaan I, syksy 2018 Harjoitus 4 Ratkaisuehdotukset
HY / Matematiikan ja tilastotieteen laitos Johdatus logiikkaan I, syksy 2018 Harjoitus 4 Ratkaisuehdotukset 1. Etsi lauseen (p 0 (p 1 p 0 )) p 1 kanssa loogisesti ekvivalentti lause joka on (a) disjunktiivisessa
LisätiedotMatematiikan 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ätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 25.1.2010 T-106.1208 Ohjelmoinnin perusteet Y 25.1.2010 1 / 41 Valintakäsky if Tähänastiset ohjelmat ovat toimineen aina samalla tavalla. Usein ohjelman pitäisi
Lisätiedot