Luku 3. Syntaktisia kysymyksiä. 3.1 Lausekkeet

Koko: px
Aloita esitys sivulta:

Download "Luku 3. Syntaktisia kysymyksiä. 3.1 Lausekkeet"

Transkriptio

1 Luku 3 Syntaktisia kysymyksiä Syntaksi eli kielioppi käsittelee ohjelmien muodollista oikeellisuutta pohtimatta merkitysopillisia eli semanttisia kysymyksiä. Kieliopilliset ominaisuudet ovat (useimmiten) staattisia. 3.1 Lausekkeet Ehkä mullistavin ero toisen ja kolmannen ohjelmointikielisukupolvien siis symbolisen konekielen ja tavanomaisen (imperatiivisen) ohjelmointikielen välillä on siinä, miten laskutoimitukset voidaan niissä ilmaista. Symbolisessa konekielessä laskentakäskyt ovat tyypillisesti muotoa ota luku muistipaikasta A, ota toinen luku muistipaikasta B ja tallenna niiden summa muistipaikkaan C. Ohjelmoijaparan epäkiitolliseksi tehtäväksi tulee siten paitsi itse laskutehtävän määritteleminen myös sen pilkkominen yksinkertaisiin osiin. Esimerkiksi hypotenuusan pituuden laskeminen c a 2 + b 2 joudutaan kirjoittamaan symbolisella konekielellä tyyliin t 1 a a t 2 b b t 3 t 1 + t 2 c t 3 Tässä nuoli vasemmalle ilmaisee muuttujaan sijoittamista. Toki jokaisella konekielellä on omat erityispiirteensä, ja kullakin konekielellä koodi näyttäisi huomattavastikin erilaiselta kuin yllä, mutta ylläolevassa tulee olennainen esille. Kun vielä tyypillisessä konekielessä nopeiden muistipaikkojen eli rekisterien määrä on erittäin rajallinen (vanhoissa koneissa muuta- 31

2 32 LUKU 3. SYNTAKTISIA KYSYMYKSIÄ ma, Intelin 32-bittisissä puolisen tusinaa, parhaissa muutama kymmenen) ja tyypillisessä ohjelmassa tällaista laskentaa harjoitetaan jatkuvasti, kasvavat ohjelmoijan työmäärä, turhaumat ja virhealttius merkittävästi. Monet varhaiset ohjelmointikielet eivät olleet juuri sen kummallisempia kuin symbolisten konekielten yksinkertaisia laajennuksia, joissa ohjelmoija saattoi kirjoittaa sijoituskäskyn oikealle puolelle kohtuullisen monimutkaisen aritmeettisen laskutehtävän. Vielä tänäkin päivänä tuki tällaisille lausekkeille (engl. expressions) on ohjelmointikielen yksi tärkeimmistä (mutta helposti huomaamatta jäävistä) tehtävistä. Maailman vanhimman korkean tason ohjelmointikielen nimi on FORTRAN, formula translator, syystä. Sallittujen lausekkeiden joukko riippuu kielestä. Käytännössä kaikki ohjelmointikielet tukevat ainakin tavallisia aritmeettisia lausekkeita: 1. Lukuvakio on aritmeettinen lauseke. 2. Muuttuja, joka on nykyisessä ympäristösssä sidottu lukuarvoon, on aritmeettinen lauseke. 3. Jos e ja e ovat aritmeettisia lausekkeita, niin e + e, e e, e e ja e/e ovat aritmeettisia lausekkeita. 4. Jos e on aritmeettinen lauseke, niin sekä e että (e) ovat aritmeettisia lausekkeita. Yllä esitetyt lauseketyypit voidaan jaotella primäärilausekkeisiin (engl. primary expressions) unaarilausekkeisiin (engl. unary expressions) binäärilausekkeisiin (engl. binary expressions) Primäärilausekkeita ovat sulkulausekkeet (e) sekä muut sellaiset lausekkeet, jotka eivät ala tai pääty (osa)lausekkeella, yleensä ainakin lukuvakiot ja muuttujat lausekkeiksi tulkittuina. Unaarilausekkeet jäsentyvät (yleensä) siten, että niissä on ensin jokin operaattori ja sitten alilauseke (operandi); siispä unaarilausekkeet ovat muotoa e, missä operaattori on ja operandi on e. Myös sellaisia unaarilausekkeita voi esiintyä, joissa operaattori tulee operandin perässä. Binäärilausekkeet alkavat alilausekkeella (vasen operandi), jonka jälkeen tulee operaattori (+,, tai /) ja lopuksi toinen alilauseke (oikea operandi). Tällaista lauseketta, jossa binäärinen operaattori sijaitsee operandiensa välissä, sanotaan infix-lausekkeeksi. Näin tosin ei ole aina aivan

3 3.1. LAUSEKKEET 33 (unaarinen) / + Taulukko 3.1: Tavanomaisten aritmeettisten operaattoreiden normaali presedenssirelaatio selvää, miten lauseke pitäisi ymmärtää. Esimerkki tällaisesta moniselitteisestä (engl. ambiguous) lausekkeesta on : pitääkö se ymmärtää samoin kuin (1 + 2) 3 vai kenties samoin kuin 1 + (2 3)? Jo muinaiset matemaatikot tiesivät tähän ratkaisun: pitää määritellä, mikä on eri operaattoreiden presedenssi (engl. precedence) ja assosiatiivisuus (engl. associativity). Jos tarkasteltavana on lauseke muotoa e e e, missä operaattorilla on korkeampi presedenssi kuin operaattorilla, lausekkeen sovitaan tarkoittavan (e e ) e ; jos taas operaattorilla on matalampi presedenssi kuin operaattorilla, lausekkeen sovitaan tarkoittavan e (e e ). Jos operaattoreilla ja on sama presedenssi, niin lausekkeen tulkinta riippuu niiden assosiatiivisuudesta. Jos molemmat operaattorit assosioituvat vasemmalle (engl. associate to the left), lauseke tulkitaan (e e ) e, ja jos molemmat assosioituvat oikealle (engl. associate to the right), lauseke tulkitaan e (e e ). Jos ne assosioituvat eri suuntaan tai ainakaan toinen ei assosioidu lainkaan, lausekkeen todetaan olevan kielen sääntöjen vastainen. Jos sama operaattori voi esiintyä sekä unaarisena että binäärisenä (esimerkiksi ), tulee sen unaarinen ja binäärinen versio pitää erillään; niillä on yleensä eri presedenssi. Presedenssi- ja assosiointisäännöt vaihtelevat kielestä toiseen. Yleensä on järkevää, että matematiikasta tutut aritmeettiset operaattorit (esimerkiksi yhteen-, vähennys-, kerto- ja vähennyslaskuoperaattorit sekä vastalukuoperaattori) noudattavat matematiikasta tuttua presedenssiä: vastalukuoperaattorilla (unaarinen ) on korkeampi presedenssi kuin kerto- ja jakolaskuoperaattoreilla, joilla puolestaan on korkeampi presedenssi kuin yhteen- ja vähennyslaskuoperaattoreilla. Kerto- ja jakolaskuoperaattoreilla on sama presedenssi, ja samoin yhteen- ja vähennyslaskuoperaattoreilla on sama presedenssi. Kaikki nämä operaattorit assosioituvat vasemmalle paitsi vastalukuoperaattori, joka assosioituu oikealle. Presedenssi muodostaa operaattoreiden välille osittaisjärjestyksen. Tavallisesti kuitenkin presedenssirelaatio on täydellinen järjestys ja se esitetään tavallisesti taulukkona. Mitä korkeampi presendenssi operaattorilla on, sitä korkeammalla se on taulukossa. Edellä esitetyt tavanomaiset presedenssisäännöt on esitetty taulukossa 3.1.

4 34 LUKU 3. SYNTAKTISIA KYSYMYKSIÄ / Kuva 3.1: Lausekkeen (2 + 3) 6 7/8 rakennepuu Kannattaa huomata, että presedenssi ja assosiatiivisuus eivät määrittele laskujärjestystä vaan jäsennyksen, vaikka toisin usein ajatellaankin. Esimerkiksi lausekkeessa voidaan laskea ensin 2 + 3, vaikka koulussa opetettiinkin, että kertolasku lasketaan ensin. Vaikka infix-lausekkeet ovatkin kaikista tutuimpia, eivät ne ole ainoat mahdollisuudet. Voidaan esimerkiksi käyttää ns. puolalaisia (engl. Polish) eli prefix-lausekkeita, joissa operaattori tulee aina ensin ja vasta sitten operandit. Tämän esitystavan etu on, että sulkuja tai presedenssi- ja assosiatiivisuussääntöjä ei tarvita, jos operaattorien operandimäärä on kiinteä (eli jos sama operaattori ei ole sekä unaarinen että binäärinen): tarkoittaa yksiselitteisesti samaa kuin infix-lauseke (2 3) + (4 5). Vastaavasti voidaan käyttää käänteisesti puolalaisia (engl. reverse Polish) eli postfix-lausekkeita, joissa operaattori tulee operandien jälkeen. Tuo sama lauseke olisi postfix-lausekkeena Postfix-lausekkeet ovat käytössä Forth- ja Postscript-kielissä. Prefix-lausekkeiden muunnelma, ns. Cambridgen-puolalainen lauseketyyppi, jossa operaattorit tulevat aina operandien edellä mutta lausekkeiden ympärillä on aina sulut, on käytössä Lisp-sukuisissa kielissä. Lausekkeita ei kannata ajatella merkkijonoina vaan puina (rakennepuu, (engl. structural tree) tai abstract syntax tree). Rakennepuissa operaattorit ovat sisäsolmuja ja operandit ovat operaattorinsa alipuita. Puun lehdet muodostuvat muuttujista ja lukuvakioista. Tällöin infix-, prefix- ja postfixesitystavat ovat vain vaihtoehtoisia tapoja kirjoittaa sama lauseke merkkijonoksi. Eräs rakennepuu on kuvattu kuvassa 3.1.

5 3.2. FORMAALI KIELIOPPI Formaali kielioppi Ohjelmointikielten konkreetti ja abstrakti kielioppi määritellään yleensä täsmällisesti yhteydettömien kielioppien (context-free grammars) avulla. Abstrakti kielioppi ilmaistaan tavallisesti puhtaasti muunnossäntöinä (rewrite rules, productions): E E + E E E E E E/E L Tässä E ja L ovat välikesymboleja (nonterminal symbols) ja +,, ja / ovat päätesymboleja (terminal symbols). Välikesymboli L edustaa literaalisanasta, jonka rakennetta ei ole tässä kuvattu. Tärkeää tässä on huomata, että tämä kielioppi on moniselitteinen (ambiguous) se ei kelpaisi merkkijonon jäsentämiseen. Siihen se ei ole tarkoitettukaan: tämä kielioppi on abstrakti, se kuvailee nelilaskimen lausekkeiden oleelliset osat, ei kaikkea sitä, jota niiden kirjoittamiseen merkkijonona tarvitaan. Oikeastaan abstrakti kielioppi kuvaa rakennepuita merkkijonoina. Abstraktilla kieliopilla on mukava algebrallinen tulkinta: kukin kieliopin produktio määrittelee abstraktin operaattorin, ja kieliopin määrittelemälle operaattoristolle voidaan sitten määritellä erilaisia tulkintoja määrittelemällä operaattoristolle algebroja. Sattumoisin myös kyseiselle abstraktille kieliopille määritellyt konkreetit kieliopit voidaan tulkita algebroiksi (ns. initiaalialgebrat). Tämän tulkinnan johdosta Gougen ja kumppanit (1977) esittivätkin varsin näppärän, mutta abstraktin, määritelmän abstraktille syntaksille: kielen abstrakti syntaksi on kaikki kielen initiaalialgebrat tulkittuna (isomorfisuuden nojalla) samaksi vekottimeksi. Tämän lähestymistavan tarkempi kuvaus ei kuitenkaan kuulu tämän kurssin ydinsisältöön ja siksi sivuutetaan. Edellä esitetyn abstraktin kieliopin konkreetti kielioppi on yksiselitteinen ja varsin sotkuinen:

6 36 LUKU 3. SYNTAKTISIA KYSYMYKSIÄ E T E + T E T T F T F T/F F L (E) Edellä käytettyjen merkintöjen lisäksi tässä esiintyy kaksi uutta välikesymbolia (T ja F) seka kaksi uutta päätemerkkiä (aaltosulkeet). Konkreetti kielioppi ilmaistaan yleensä käyttäen John Backusin ja 1960-lukujen vaihteessa kehittämää merkintätapaa, jonkaa Peter Naur popularisoi Algol 60:n määrittelydokumentissa. Tätä muotoa kutsutaan Backusia ja Nauria kunnioittaen BNF:ksi (Backus Naur form). BNF:llä ilmaistuna ylläoleva kielioppi kirjoitetaan seuraavasti: Expression ::= Term Expression + Term Expression Term Term ::= Factor Term Factor Term / Factor Factor ::= Literal ( Expression ) Varsinaisen BNF:n sijasta usein käytetään jotain sen muunnelmaa. ISO ja IEC standardoivat vuonna 1996 BNF:N laajennetun version eli EBNF:n (ISO/IEC 14977). EBNF laajentaa BNF:ää lisäämällä siihen tuen valinnaisuuden, toiston, ryhmittelyn, määräkertaisen toiston ja poikkeustapausten ilmaisemiseen. EBNF sallii välikesymbolin koostua useammasta sanasta. Lisäksi EBNF sallii kommenttien lisäämisen kieliopin kuvaukseen. Internet-protokollien määrittelyissä käytetty BNF:n muunnelma (Augmented BNF eli ABNF) on myös standardoitu: RFC on syntaktisen metakielen Internet-standardi. Konkreetin kieliopin voi ajatella kuvaukseksi, joka kuvaa merkkijonoja (tai sanasjonoja) järjestetyiksi puiksi. Näiden puiden sisäsolmut ovat välikesymboleita ja lehtisolmut päätemerkkejä (sanasia). Tällaisesta ns. jäsennyspuusta (parse tree) voidaan lukea koko merkkijono (sanasjono) käymällä puu läpi järjestyksessä ja merkitsemällä kukin kohdattu lehtisolmu ylös. 1

7 3.2. FORMAALI KIELIOPPI 37 Kunkin (epätriviaalin) alipuun juuri (joka on alkuperäisen puun sisäsolmu) kertoo, mitä välikesymbolia kyseinen puu vastaa. Kuvassa 3.2 kuvataan erään aritmeettisen lausekkeen jäsennyspuu edellä annetun konkreetin kieliopin mukaan.

8 38 LUKU 3. SYNTAKTISIA KYSYMYKSIÄ L F T E E L F T L F T L F F T T E E T L F ( ) 6 8 / 7 Kuva 3.2: Lausekkeen (2 + 3) 6 7/8 jäsennyspuu sivulla 36 annetun konkreetin kieliopin mukaan

9 Luku 4 Denotationaalinen semantiikka Ohjelmointikielten syntaksi on osattu määritellä täsmällisesti jo 1950-luvun lopulta alkaen, mutta merkitysopin kanssa on ollut enemmän ongelmia. Yksinkertaisin formaalin merkitysopin menetelmä, denotationaalinen merkitysoppi, on peräisin 1970-luvulta. Denotationaalisessa merkitysopissa kullekin (ohjelmointi)kielen konstrktiolle määritellään matemaattinen otus, jota sanotaan kyseisen konstruktion tarkoitukseksi (engl. denotation). Ajatuksena on antaa kielelle sisältö, joka on riippumaton mistään konkreetista (taikka abstraktista) tietokoneesta. Keskeinen lähtökohta on seuraava ns. kompositionaalisuusvaatimus: Ohjelmointikielen konstruktion tarkoitus saa riippua vain sen osien tarkoituksesta. Denotationaalisen merkitysopin alulle panevana voimana oli toisaalta Christopher Stracheyn ohjelmointikielen periaatteiden pohdinta (Strachey, 2000) sekä toisaalta laskennan teorian alan erään ongelman (lambdalaskennon merkitysoppi) ratkaiseminen. Ratkaisevaa oli Dana Scottin alueteorian (engl. domain theory) kehittyminen. Denotationaalisesta merkityopista ks. tarkemmin esimerkiksi Allison (1986) taikka Reynolds (1998) 4.1 Perusidea Denotationaalista merkitysoppia sovellettaessa on tapana käyttää erityisiä sulkeita (semanttiset sulkeet, semantic brackets) kohdekielen erottamiseen metakielestä. Niitä käytettäessä on hyvä noudattaa seuraavaa kahta nyrkkisääntöä: 1. Semanttisten sulkeiden sisällä oleva ilmaisu on aina kohdekieltä. 39

10 40 LUKU 4. DENOTATIONAALINEN SEMANTIIKKA 2. Semanttisten sulkeiden sisällä esiintyvä muuttuja on kuitenkin yleensä ns. metamuuttuja (engl. metavariable) ei siis kohdekielen muuttuja, vaan se edustaa jotakin kohdekielen ilmaisua. Näinpä esimerkiksi int v; edustaa C-kielistä kokonaislukumuuttujan v esittelyä (missa v on tuntematon tai kontekstista määrittyvä muuttujan nimi). Määritelläänpä harjoituksen vuoksi yksinkertaisen kielen denotationaalinen merkitysoppi. Tässä kielessä ei ole mitään muuta kuin aritmeettiset lausekkeet, joten abstrakti syntaksi on yksinkertainen: c N e, f, g Expr e, f, g ::= c e e + f e f e f Määrittelyn ensimmäinen rivi kertoo, että nonterminaali c edustaa luonnollisten lukujen kieltä (siis kokonaislukuvakioita). Sen täsmällinen määrittely jätetään avoimeksi, koska se toisaalta oletetaan tunnetuksi ja toisaalta sen täsmällinen määrittely ei olisi mielenkiintoista. Määrittelyn toinen rivi tarkoittaa, että nonterminaalit e, f ja g määrittelevät saman kielen (joukon merkkijonoja taikka joukon rakennepuita taikka... ), ja kielen nimi on Expr. Loput rivit määrittelevät kyseisen kielen abstraktin kieliopin. Tämän kielen denotationaalinen merkitysoppi voitaisiin esittää vaikkapa näin: E : Expr Q E c = c (4.1) E e = E e (4.2) E e + f = E e + E f (4.3) E e f = E e E f (4.4) E e f = E e E f (4.5) Tässä määritellään semanttinen funktio E : Expr Q paloittain ja rekursiivisesti. Semanttisen funktion määritteleminen paloittain ja rekursiivisesti vaatii seuraavien ehtojen täyttymisen:

11 4.2. MUUTTUJAT Määrittelyssä tulee olla täsmälleen yksi yhtälö jokaista abstraktin kieliopin produktiota ja jokaista määriteltävänä olevaa semanttista funktiota kohti. 2. Kussakin yhtälössä on vasemman puolen oltava määriteltävänä olevan semanttisen funktion kutsu, jossa semanttisten sulkeiden sisällä esiintyy kyseisen produktion oikea puoli sellaisenaan (nonterminaaleista tulee näin metamuuttujia 1 ). 3. Kussakin yhtälössä oikealla puolella saadaan kutsua määriteltävänä olevaa semanttista funktiota vain siten, että semanttisten sulkeiden sisällä on jokin vasemmalla puolella esiintyvä (meta)muuttuja. Yllä annettu määritelmä täyttää nämä ehdot. Määritelmää soveltamalla voidaan selvittää lausekkeen (esimerkiksi ) arvo: E = E E 4 yhtälö (4.3) = E yhtälö (4.1) = E 2 + E yhtälö (4.3) = E yhtälö (4.1) = yhtälö (4.1) = 9 aritmetiikka 4.2 Muuttujat Tilanne monimutkaistuu hieman, jos kielessä on muuttujia: c N x, y, z Var e, f, g Expr e, f, g ::= c x e e + f e f e f 1 Jos produktion oikealla puolella esiintyy sama nonterminaali useampaan kertaan, erotellaan sen esiintymät toisistaan antamalla niille eri nimet esimerkiksi alaindeksoinnin avulla.

12 42 LUKU 4. DENOTATIONAALINEN SEMANTIIKKA Tällöin semanttinen funktio ei voi kuvata lausekkeita suoraan arvoiksi, vaan lausekkeiden arvo riippuu muuttujilla lausekkeen ympäristössä olevasta arvoista. Ympäristö voidaan mallittaa yksinkertaisesti osittaisfunktiona muuttujilta arvoille. Ongelmaksi tosin muodostuu se, mitä tehdään, jos ympäristö ei ole määritelty jollekin tietylle muuttujalle, mutta ratkaistaan se tässä nyt hieman fuskaten: sovitaan, että määrittelemättömien muuttujien arvo on 0. Tämän jälkeen määrittely onkin jo helppoa: Env = Var Q E : Expr Env Q E c σ = c (4.6) { 0 jos σ( x ) E x σ = (4.7) σ( x ) muuten E e σ = E e σ (4.8) E e + f σ = E e σ + E f σ (4.9) E e f σ = E e σ E f σ (4.10) E e f σ = E e σ E f σ (4.11) Näissä yhtälöissä on käytetty Gottlob Fregen ja Moses Schönfinkelin pioneroimaa tapaa, jossa funktion paluuarvo on toinen funktio. Tässä ajattelutavassa funktionuoli assosioi oikealle, joten Expr Env Q tarkoittaa samaa kuin Expr (Env Q). Funktion kutsu puolestaan assosioi vasemmalle, joten E c σ tarkoittaa samaa kuin (E c )σ (eli perinteisemmin ilmaistuna E( c )(σ)). Vaikka tämä temppu onkin Fregen ja Schönfinkelin keksimä, siitä käytetään tavallisesti englannin kielen termiä currying idean popularisoijan, Haskell Curryn, mukaan. Lasketaan nyt esimerkin vuoksi lausekkeen x + y + 2 arvo ympäristössä σ = {( x, 1)}: E x + y + 2 σ = E x + y σ + E 2 σ yhtälö (4.9) = E x + y σ + 2 yhtälö (4.6) = E x σ + E y σ + 2 yhtälö (4.9) = E x σ yhtälö (4.7), σ( y ) = yhtälö (4.7), σ( x ) = 1 = 3 aritmetiikka

13 4.3. SUORAVIIVAOHJELMAT Suoraviivaohjelmat Suoraviivaohjelmat koostuvat peräkkäin laitetuista sijoituslauseista sekä siirräntäkäskyistä (jotka tässä vaiheessa vielä jätetään huomiotta). Mitään hyppy-, ehto- tai silmukkarakenteita saatikka aliohjelmakutsuja suoraviivaohjelmissa ei ole. Niinpä voimme määritellä suoraviivaohjelmien abstraktin kieliopin seuraavasti: c N x, y, z Var e, f, g Expr s, t Stmt s, t ::= x e s ; t Lausekkeet on käsitelty edellä, joten niistä ei tässä tarvitse sanoa enempää. Suoraviivaohjelman lauseet eivät palauta arvoja, vaan niillä on sivuvaikutuksia (engl. side-effects). Ainoa sivuvaikutus, joka on tässä tilanteessa mahdollinen, on muuttujan arvon muuttuminen. Kun edellä muuttujien arvo määräytyy ympäristön (Env) perusteella, on lauseen muutettava ympäristöä. Näin ollen lauseen semanttinen tulkinta on kuvaus ympäristöltä ympäristölle: C : Stmt Env Env C x e σ = σ {( x, E e σ)} (4.12) C s ; t σ = C t (C s σ) (4.13) Tässä operaattori määritellään seuraavasti: { (r r r(x) )(x) = r (x) jos r (x) muuten. Lasketaanpa, mikä on muuttujan x arvo ohjelman y 1; x y suori-

14 44 LUKU 4. DENOTATIONAALINEN SEMANTIIKKA tuksen jälkeen (tyhjässä alkuympäristössä): (C y 1; x y )( x ) = (C x y (C y 1 ))( x ) yhtälö (4.13) = (C x y ( {( y, E 1 )}))( x ) yhtälö (4.12) = (C x y ( {( y, 1)}))( x ) yhtälö (4.6) = (C x y {( y, 1)})( x ) :n määritelmä = ({( y, 1)} {( x, E y {( y, 1)})})( x ) yhtälö (4.12) = {( y, 1), ( x, E y {( y, 1)})}( x ) :n määritelmä = {( y, 1), ( x, 1)}( x ) yhtälö (4.7), = 1 {( y, 1)}(y) = Paikalliset muuttujat Muuttuja on paikallinen, jos se on näkyvissä vain tietyssä yhtenäisessä osassa ohjelmaa. Paikalliset muuttujat ovat suoraviivaohjelmissa varsin hyödyttömiä, mutta toisaalta niiden mallittaminen denotationaalisesti on selkeintä tehdä näin yksinkertaisessa kielessä. Ensiksi abstrakti kielioppi: c N x, y, z Var e, f, g Expr s, t Stmt s, t ::= x e s ; t { d ; s } d LocalDecl d ::= my x = e d ; d Denotationaalista semantiikkaa kirjoitettaessa hieman sotkua aiheuttaa lausekkeen laskemisessa tarvittavan ympäristön kuljettaminen mukana; tavallisesti, kuten tässä, usean määrittelyn jonossa aiempiin voi viitata myöhemmissä.

15 4.4. PAIKALLISET MUUTTUJAT 45 C : Stmt Env Env C x e σ = C s ; t σ = C { d ; s } σ = (C s (σ D d σ)) (σ dom D d σ ) (4.14) D : LocalDecl Env Env D my x = e σ = {(x, E e σ)} (4.15) D d 1 ; d 2 σ = (D d 2 (σ (D d 1 σ))) D d 1 σ (4.16)

16 Liite A Matematiikan kertausta Loogisissa kaavoissa käytetään seuraavia tavanomaisia konnektiiveja ja kvanttoreita: on konjunktio ( ja ) on disjunktio ( tai ) on implikaatio ( jos niin ) on ekvivalenssi ( jos ja vain jos ) x : on universaalikvanttori ( kaikilla x ), x : on eksistentiaalikvanttori ( jollakin x ) Merkintä x S : P on lyhennys merkinnälle x : x S P, ja merkintä x S : P on lyhennys merkinnälle x : x S P. Joukkoihin liittyen käytetään seuraavia tavanomaisia merkintöjä: a S tarkoittaa, että a kuuluu joukkoon S a S tarkoittaa, että a ei kuulu joukkoon S {2, 1, 3, 2} tarkoittaa kolmialkioista joukkoa, jossa on alkioina 1, 2 ja 3 (alkioiden järjestyksellä ei ole merkitystä, kuten ei myöskään sillä, kuinka monta kertaa kukin alkio esiintyy) ja {} tarkoittavat tyhjää joukkoa { E P } tarkoittaa niiden alkioiden E joukkoa, joille pätee väite P (huomaa, että merkinnän kanssa pitää olla varovainen, sillä sillä on mahdollista ilmaista paradokseja) 159

17 160 LIITE A. MATEMATIIKAN KERTAUSTA { x S P } tarkoittaa samaa kuin { x x S P } Z tarkoittaa kokonaislukujen joukkoa Q tarkoittaa rationaalilukujen joukkoa N tarkoittaa luonnollisten lukujen joukkoa, N = { n Z n 0 } A B on joukkojen A ja B yhdiste, A B = { x x A x B } A B on joukkojen A ja B leikkaus, A B = { x x A x B } A \ B on joukkojen A ja B erotus, A \ B = { x x A x B } A B tarkoittaa, että A on B:n osajoukko, A B ( x A : x B) P(S) on joukon S osajoukkojen joukko, P(S) = { x x S } A B on joukkojen A ja B karteesinen tulo, A B = { (a, b) a A b B } Relaatioihin (karteesisten tulojen osajoukkoihin) ja funktioihin liittyen käytetään seuraavia (osittain tavanomaisia) merkintöjä: a r b tarkoittaa samaa kuin (a, b) r dom r on relaation r lähtöjoukko (engl. domain) dom r = { a b : (a, b) r } ran r on relaation r maalijoukko (engl. range) ran r = { b a : (a, b) r } r S on relaation rajoittuma, r S = { (x, y) r x S } f : A B tarkoittaa, että f on osittaisfunktio A:sta B:hen eli että f A B on relaatio, jolla on funktio-ominaisuus: a A : b, b B : (a, b) f (a, b ) f b = b f : A B tarkoittaa, että f on (täydellinen) funktio A:sta B:hen eli että se on osittaisfunktio A:sta B:hen ja A = dom f pätee

18 161 f (x) tarkoittaa sitä y:tä, jolle pätee (x, y) f (sallittu merkintä vain, jos kyseinen y on olemassa ja yksikäsitteinen) f (x) tarkoittaa, että x dom f (eli f (x) ei ole määritelty) Sanat funktio ja kuvaus ilman tarkentavia lisämääritteitä tarkoittavat tavallisesti täydellistä funktiota. Relaatio r S S on refleksiivinen, jos a S : (a, a) r pätee symmetrinen, jos a, b S : (a, b) r (b, a) r pätee antisymmetrinen, jos a, b S : (a, b) r (b, a) r a = b pätee transitiivinen, jos a, b, c S : (a, b) r (b, c) r (a, c) r pätee ekvivalenssi, jos se on symmetrinen, refleksiivinen ja transitiivinen osittaisjärjestys, jos se on antisymmetrinen, refleksiivinen ja transitiivinen täydellinen järjestys, jos se on osittaisjärjestys ja a, b S : (a, b) r (b, a) r pätee Relaation X-nen sulkeuma (engl. closure) on pienin relaatio, jolla on ominaisuus X ja jonka osajoukko kyseinen relaatio on. Tällaisia ovat esimerkiksi refleksiivinen sulkeuma, transitiivinen sulkeuma ja refleksiivis-transitiivinen sulkeuma.

TIES542 kevät 2009 Lausekkeista ja vähän muustakin

TIES542 kevät 2009 Lausekkeista ja vähän muustakin IES542 kevät 2009 Lausekkeista ja vähän muustakin Antti-Juhani Kaijanaho 13. tammikuuta 2009 1 Lausekkeet Ehkä mullistavin ero toisen ja kolmannen ohjelmointikielisukupolvien siis symbolisen konekielen

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

TIEA241 Automaatit ja kieliopit, syksy 2015. Antti-Juhani Kaijanaho. 3. joulukuuta 2015

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

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 9. lokakuuta 2016

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 9. lokakuuta 2016 TIEA241 Automaatit ja, syksy 2016 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 9. lokakuuta 2016 Sisällys Kontekstiton kielioppi Kontekstiton kielioppi koostuu joukosta päätemerkkejä (engl. terminal symbols),

Lisätiedot

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 2. helmikuuta 2012

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

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 30. marraskuuta 2015

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 30. marraskuuta 2015 TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 30. marraskuuta 2015 Sisällys t Väitöstilaisuus 4.12.2015 kello 12 vanhassa juhlasalissa S212 saa tulla 2 demoruksia

Lisätiedot

Tietojenkäsittelyteorian alkeet, osa 2

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

jäsentäminen TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho 26. marraskuuta 2015 TIETOTEKNIIKAN LAITOS

jäsentäminen TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho 26. marraskuuta 2015 TIETOTEKNIIKAN LAITOS TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 26. marraskuuta 2015 Sisällys Tunnistamis- ja jäsennysongelma Olkoon G = (N, Σ, P, S) kontekstiton kielioppi ja

Lisätiedot

FORMAALI SYSTEEMI (in Nutshell): aakkosto: alkeismerkkien joukko kieliopin määräämä syntaksi: sallittujen merkkijonojen rakenne, formaali kuvaus

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

Vasen johto S AB ab ab esittää jäsennyspuun kasvattamista vasemmalta alkaen:

Vasen johto S AB ab ab esittää jäsennyspuun kasvattamista vasemmalta alkaen: Vasen johto S AB ab ab esittää jäsennyspuun kasvattamista vasemmalta alkaen: S A S B Samaan jäsennyspuuhun päästään myös johdolla S AB Ab ab: S A S B Yhteen jäsennyspuuhun liittyy aina tasan yksi vasen

Lisätiedot

Täydentäviä muistiinpanoja kontekstittomien kielioppien jäsentämisestä

Täydentäviä muistiinpanoja kontekstittomien kielioppien jäsentämisestä Täydentäviä muistiinpanoja kontekstittomien kielioppien jäsentämisestä Antti-Juhani Kaijanaho 30. marraskuuta 2015 1 Yksiselitteiset operaattorikieliopit 1.1 Aritmeettiset lausekkeet Tällä kurssilla on

Lisätiedot

(1) refleksiivinen, (2) symmetrinen ja (3) transitiivinen.

(1) refleksiivinen, (2) symmetrinen ja (3) transitiivinen. Matematiikassa ja muuallakin joudutaan usein tekemisiin sellaisten relaatioiden kanssa, joiden lakina on tietyn ominaisuuden samuus. Tietyn ominaisuuden samuus -relaatio on ekvivalenssi; se on (1) refleksiivinen,

Lisätiedot

11.4. Context-free kielet 1 / 17

11.4. Context-free kielet 1 / 17 11.4. Context-free kielet 1 / 17 Määritelmä Tyypin 2 kielioppi (lauseyhteysvapaa, context free): jos jokainenp :n sääntö on muotoa A w, missäa V \V T jaw V. Context-free kielet ja kieliopit ovat tärkeitä

Lisätiedot

Matematiikassa ja muuallakin joudutaan usein tekemisiin sellaisten relaatioiden kanssa, joiden lakina on tietyn ominaisuuden samuus.

Matematiikassa ja muuallakin joudutaan usein tekemisiin sellaisten relaatioiden kanssa, joiden lakina on tietyn ominaisuuden samuus. Matematiikassa ja muuallakin joudutaan usein tekemisiin sellaisten relaatioiden kanssa, joiden lakina on tietyn ominaisuuden samuus. Matematiikassa ja muuallakin joudutaan usein tekemisiin sellaisten relaatioiden

Lisätiedot

Yhteydettömät kieliopit [Sipser luku 2.1]

Yhteydettömät kieliopit [Sipser luku 2.1] Yhteydettömät kieliopit [ipser luku 2.1] Johdantoesimerkkinä tarkastelemme kieltä L = { a n b m a n n > 0, m > 0 }, joka on yhteydetön (mutta ei säännöllinen). Vastaavan kieliopin ytimenä on säännöt eli

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

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

Ensimmäinen ohjelmointikieli

Ensimmäinen ohjelmointikieli Ensimmäinen ohjelmointikieli ALKEIS-suora Antti-Juhani Kaijanaho 15. tammikuuta 2007 Kaksi tärkeintä tekijää, joiden takia konekielinen ohjelmointi on vaikeaa, ovat rekisterien hallinta sekä aritmeettisten

Lisätiedot

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 3. lokakuuta 2016

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 3. lokakuuta 2016 TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 3. lokakuuta 2016 Sisällys n tunnistin Jay : An Efficient Context-Free Parsing Algorithm. Communications of the

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

jäsennyksestä TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho 29. syyskuuta 2016 TIETOTEKNIIKAN LAITOS Kontekstittomien kielioppien

jäsennyksestä TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho 29. syyskuuta 2016 TIETOTEKNIIKAN LAITOS Kontekstittomien kielioppien TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 29. syyskuuta 2016 Sisällys Harjoitustehtävätilastoa Tilanne 29.9.2016 klo 8:41 (lähes kaikki kommentoitu) passed

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

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

MS-A0402 Diskreetin matematiikan perusteet

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

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

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

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

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 10. kesäkuuta 2013 TIEA241 Automaatit ja kieliopit, kesä 2013 etenevä Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 10. kesäkuuta 2013 Sisällys etenevä etenevä Chomskyn hierarkia (ja muutakin) kieli säännöllinen LL(k) LR(1)

Lisätiedot

MAT Algebra 1(s)

MAT Algebra 1(s) 8. maaliskuuta 2012 Esipuhe Tämä luentokalvot sisältävät kurssin keskeiset asiat. Kalvoja täydennetään luennolla esimerkein ja todistuksin. Materiaali perustuu Jyväskylän, Helsingin ja Turun yliopistojen

Lisätiedot

Lisää pysähtymisaiheisia ongelmia

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

Syntaksi. TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 22. syyskuuta 2009 TIETOTEKNIIKAN LAITOS. Syntaksi. Aluksi.

Syntaksi. TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 22. syyskuuta 2009 TIETOTEKNIIKAN LAITOS. Syntaksi. Aluksi. TIE448 Kääntäjätekniikka, syksy 2009 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 22. syyskuuta 2009 Sisällys Sisällys Seuraava deadline Vaihe B tiistai 6.10. klo 10 selaaja ja jäsentäjä toimivat Kääntäjän

Lisätiedot

Jäsennys. TIEA341 Funktio ohjelmointi 1 Syksy 2005

Jäsennys. TIEA341 Funktio ohjelmointi 1 Syksy 2005 Jäsennys TIEA341 Funktio ohjelmointi 1 Syksy 2005 Muistutus: Laskutehtävä ja tulos data Laskutehtava = Luku Double Yhteen Laskutehtava Laskutehtava Vahennys Laskutehtava Laskutehtava Tulo Laskutehtava

Lisätiedot

TIEA341 Funktio-ohjelmointi 1, kevät 2008

TIEA341 Funktio-ohjelmointi 1, kevät 2008 TIEA341 Funktio-ohjelmointi 1, kevät 2008 Luento 9 Kombinaattoreista Antti-Juhani Kaijanaho Jyväskylän yliopisto Tietotekniikan laitos 21. tammikuuta 2008 Currying Haskell-funktio ottaa aina vain yhden

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

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

Kontekstittomien kielten jäsentäminen Täydentäviä muistiinpanoja TIEA241 Automaatit ja kieliopit, syksy 2016

Kontekstittomien kielten jäsentäminen Täydentäviä muistiinpanoja TIEA241 Automaatit ja kieliopit, syksy 2016 Kontekstittomien kielten jäsentäminen äydentäviä muistiinpanoja IA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho 19. lokakuuta 2016 1 Yksiselitteiset operaattorikieliopit 1.1 Aritmeettiset

Lisätiedot

815338A Ohjelmointikielten periaatteet

815338A Ohjelmointikielten periaatteet 815338A Ohjelmointikielten periaatteet 2015-2016 III Ohjelmointikielten syntaksi ja semantiikka Sisältö 1. Syntaksi ja semantiikan käsitteet 2. BNF-kielioppi 3. Syntaksikaaviot 4. Jäsentäjät 5. Semantiikka

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

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä Rekursiolause Laskennan teorian opintopiiri Sebastian Björkqvist 23. helmikuuta 2014 Tiivistelmä Työssä käydään läpi itsereplikoituvien ohjelmien toimintaa sekä esitetään ja todistetaan rekursiolause,

Lisätiedot

Valitsemalla sopivat alkiot joudutaan tämän määritelmän kanssa vaikeuksiin, jotka voidaan välttää rakentamalla joukko oppi aksiomaattisesti.

Valitsemalla sopivat alkiot joudutaan tämän määritelmän kanssa vaikeuksiin, jotka voidaan välttää rakentamalla joukko oppi aksiomaattisesti. Joukon määritelmä Joukko on alkioidensa kokoelma. Valitsemalla sopivat alkiot joudutaan tämän määritelmän kanssa vaikeuksiin, jotka voidaan välttää rakentamalla joukko oppi aksiomaattisesti. Näin ei tässä

Lisätiedot

Ohjelmointikielten syntaksista ja semantiikasta

Ohjelmointikielten syntaksista ja semantiikasta Ohjelmointikielten syntaksista ja semantiikasta Tässä osassa esitellään käsitteet syntaksi ja semantiikka sekä tutustutaan ohjelmointikielen syntaksin kuvaamismenetelmiin. Esimerkiksi Sebestan ([Seb])

Lisätiedot

Nimitys Symboli Merkitys Negaatio ei Konjuktio ja Disjunktio tai Implikaatio jos..., niin... Ekvivalenssi... jos ja vain jos...

Nimitys Symboli Merkitys Negaatio ei Konjuktio ja Disjunktio tai Implikaatio jos..., niin... Ekvivalenssi... jos ja vain jos... 2 Logiikkaa Tässä luvussa tutustutaan joihinkin logiikan käsitteisiin ja merkintöihin. Lisätietoja ja tarkennuksia löytyy esimerkiksi Jouko Väänäsen kirjasta Logiikka I 2.1 Loogiset konnektiivit Väitelauseen

Lisätiedot

Attribuuttikieliopit

Attribuuttikieliopit TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 3. toukokuuta 2011 Sisällys t Chomskyn hierarkia kieli säännöllinen kontekstiton kontekstinen rekursiivisesti

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

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet 811120P Diskreetit rakenteet 2018-2019 Kertausta toiseen välikokeeseen Yhteenveto Kurssin sisältö 1. Algoritmin käsite 2. Lukujärjestelmät ja niiden muunnokset; lukujen esittäminen tietokoneessa 3. Logiikka

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

Relaation ominaisuuksia. Ominaisuuksia koskevia lauseita Sulkeumat. Joukossa X määritelty relaatio R on. (ir) irrefleksiivinen, jos x Rx kaikilla x X,

Relaation ominaisuuksia. Ominaisuuksia koskevia lauseita Sulkeumat. Joukossa X määritelty relaatio R on. (ir) irrefleksiivinen, jos x Rx kaikilla x X, Relaation Joukossa X määritelty relaatio R on (r) refleksiivinen, jos xrx kaikilla x X, (ir) irrefleksiivinen, jos x Rx kaikilla x X, Relaation Joukossa X määritelty relaatio R on (r) refleksiivinen, jos

Lisätiedot

2. Yhteydettömät kielet

2. Yhteydettömät kielet 2. Yhteydettömät kielet Yhteydettömät eli kontekstittomat kielet (context-free language, CFL) ovat säännöllisiä kieliä laajempi luokka formaaleja kieliä. Ne voidaan esittää yhteydettömillä kieliopeilla

Lisätiedot

5.5 Jäsenninkombinaattoreista

5.5 Jäsenninkombinaattoreista 5.5. JÄSENNINKOMBINAATTOREISTA 67 type Env α = FiniteMap String α data EnvT m α = MkE (Env Integer m (Env Integer, α)) instance Transformer EnvT where promote mp = MkE $ λenv mp λr return $(env, r) instance

Lisätiedot

Säännölliset kielet. Sisällys. Säännölliset kielet. Säännölliset operaattorit. Säännölliset kielet

Säännölliset kielet. Sisällys. Säännölliset kielet. Säännölliset operaattorit. Säännölliset kielet TIEA241 Automaatit ja kieliopit, kesä 2013 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 24. toukokuuta 2013 Sisällys Formaalit kielet On tapana sanoa, että merkkijonojen joukko on (formaali) kieli. Hieman

Lisätiedot

Joukossa X määritelty relaatio R on. (ir) irrefleksiivinen, jos x Rx kaikilla x X,

Joukossa X määritelty relaatio R on. (ir) irrefleksiivinen, jos x Rx kaikilla x X, Relaation Joukossa X määritelty relaatio R on (r) refleksiivinen, jos xrx kaikilla x X, (ir) irrefleksiivinen, jos x Rx kaikilla x X, (s) symmetrinen, jos xry yrx, (as) antisymmetrinen, jos xry yrx x =

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

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

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 5. marraskuuta 2015

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 5. marraskuuta 2015 TIEA24 Automaatit ja kieliopit, syksy 205 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 5. marraskuuta 205 Sisällys Käsiteanalyysiä Tarkastellaan koodilukkoa äärellisenä automaattina. Deterministinen äärellinen

Lisätiedot

Luonnollisen päättelyn luotettavuus

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

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet 811120P Diskreetit rakenteet 2017-2018 Yhteenveto Yleistä kurssista Kurssin laajuus 5 op Luentoja 30h Harjoituksia 21h Itsenäistä työskentelyä n. 80h 811120P Diskreetit rakenteet, Yhteenveto 2 Kurssin

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

uv n, v 1, ja uv i w A kaikilla

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

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 19. tammikuuta 2012

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 19. tammikuuta 2012 TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 19. tammikuuta 2012 Sisällys Sisällys Muistathan A B -konstruktion 0 k 1 i 2 s 3 s 4 a 5 0 k 1 o 2 i 3 r 4

Lisätiedot

Täydentäviä muistiinpanoja Turingin koneiden vaihtoehdoista

Täydentäviä muistiinpanoja Turingin koneiden vaihtoehdoista Täydentäviä muistiinpanoja Turingin koneiden vaihtoehdoista Antti-Juhani Kaijanaho 15. maaliskuuta 2012 1 Apumääritelmä Määritelmä 1. Olkoon Σ merkistö, jolla on olemassa täydellinen järjestys ( ) Σ 2.

Lisätiedot

Kuvauksista ja relaatioista. Jonna Makkonen Ilari Vallivaara

Kuvauksista ja relaatioista. Jonna Makkonen Ilari Vallivaara Kuvauksista ja relaatioista Jonna Makkonen Ilari Vallivaara 20. lokakuuta 2004 Sisältö 1 Esipuhe 2 2 Kuvauksista 3 3 Relaatioista 8 Lähdeluettelo 12 1 1 Esipuhe Joukot ja relaatiot ovat periaatteessa äärimmäisen

Lisätiedot

Loogiset konnektiivit

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

Todistus: Aiemmin esitetyn mukaan jos A ja A ovat rekursiivisesti lueteltavia, niin A on rekursiivinen.

Todistus: Aiemmin esitetyn mukaan jos A ja A ovat rekursiivisesti lueteltavia, niin A on rekursiivinen. Lause: Tyhjyysongelma ei ole osittain ratkeava; ts. kieli ei ole rekursiivisesti lueteltava. L e = { w { 0, 1 } L(M w ) = } Todistus: Aiemmin esitetyn mukaan jos A ja A ovat rekursiivisesti lueteltavia,

Lisätiedot

[a] ={b 2 A : a b}. Ekvivalenssiluokkien joukko

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

8. Kieliopit ja kielet

8. Kieliopit ja kielet 8. Kieliopit ja kielet Suomen kielen sanoja voidaan yhdistellä monella eri tavalla. Kielioppi määrää sen, milloin sanojen yhdistely antaa oikein muodostetun lauseen. "Mies räpyttää siipiään" on kieliopillisesti

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

Lineaarialgebra ja matriisilaskenta II. LM2, Kesä /141

Lineaarialgebra ja matriisilaskenta II. LM2, Kesä /141 Lineaarialgebra ja matriisilaskenta II LM2, Kesä 2012 1/141 Kertausta: avaruuden R n vektorit Määritelmä Oletetaan, että n {1, 2, 3,...}. Avaruuden R n alkiot ovat jonoja, joissa on n kappaletta reaalilukuja.

Lisätiedot

jäsentämisestä TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho 27. marraskuuta 2015 TIETOTEKNIIKAN LAITOS

jäsentämisestä TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho 27. marraskuuta 2015 TIETOTEKNIIKAN LAITOS TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 27. marraskuuta 2015 Sisällys Rekursiivisesti etenevä engl. recursive descent parsing Tehdään kustakin välikesymbolista

Lisätiedot

S BAB ABA A aas bba B bbs c

S BAB ABA A aas bba B bbs c T-79.148 Kevät 2003 Tietojenkäsittelyteorian perusteet Harjoitus 8 Demonstraatiotehtävien ratkaisut 4. Tehtävä: Laadi algoritmi, joka testaa onko annetun yhteydettömän kieliopin G = V, Σ, P, S) tuottama

Lisätiedot

Konnektiivit. On myös huomattava, että vain joillakin luonnollisen kielen konnektiiveilla on vastineensa lauselogiikassa.

Konnektiivit. On myös huomattava, että vain joillakin luonnollisen kielen konnektiiveilla on vastineensa lauselogiikassa. Johdanto Lauselogiikassa tutkitaan sekä syntaktisella että semanttisella tasolla loogisia konnektiiveja ja niiden avulla muodostettuja kaavoja sekä myös formaalia päättelyä. Tarkastelemme aluksi klassisen

Lisätiedot

Täydentäviä muistiinpanoja jäsennysalgoritmeista

Täydentäviä muistiinpanoja jäsennysalgoritmeista äydentäviä muistiinpanoja jäsennysalgoritmeista Antti-Juhani Kaijanaho 7. helmikuuta 2012 1 simerkki arleyn algoritmin soveltamisesta arkastellaan kielioppia G : + () c ja sovelletaan arleyn algoritmia

Lisätiedot

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 12. kesäkuuta 2013

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 12. kesäkuuta 2013 TIEA241 Automaatit ja kieliopit, kevät 2012 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 12. kesäkuuta 2013 Sisällys t Chomskyn hierarkia (ja vähän muutakin) kieli säännöllinen LL(k) LR(1) kontekstiton

Lisätiedot

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

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 16. toukokuuta 2011 TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 16. toukokuuta 2011 Sisällys engl. random-access machines, RAM yksinkertaistettu nykyaikaisen (ei-rinnakkaisen)

Lisätiedot

MS-A0402 Diskreetin matematiikan perusteet

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

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 12. tammikuuta 2012

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 12. tammikuuta 2012 TIEA241 Automaatit ja kieliopit, kevät 2012 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 12. tammikuuta 2012 Sisällys Sisällys Äärellisiä automaatteja PUSH ON PUSH OFF Q T Q J C C H S C,Q C,Q 0 50s 1e

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

Ei-yhteydettömät kielet [Sipser luku 2.3]

Ei-yhteydettömät kielet [Sipser luku 2.3] Ei-yhteydettömät kielet [Sipser luku 2.3] Yhteydettömille kielille pätee samantapainen pumppauslemma kuin säännöllisille kielille. Siinä kuitenkin pumpataan kahta osamerkkijonoa samaan tahtiin. Lause 2.25

Lisätiedot

Chomskyn hierarkia ja yhteysherkät kieliopit

Chomskyn hierarkia ja yhteysherkät kieliopit Chomskyn hierarkia ja yhteysherkät kieliopit Laskennan teorian opintopiiri Tuomas Hakoniemi 21. helmikuuta 2014 Käsittelen tässä laskennan teorian opintopiirin harjoitustyössäni muodollisten kielioppien

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

1. Logiikan ja joukko-opin alkeet

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

Uusi näkökulma. TIEA341 Funktio ohjelmointi 1 Syksy 2005

Uusi näkökulma. TIEA341 Funktio ohjelmointi 1 Syksy 2005 Uusi näkökulma TIEA341 Funktio ohjelmointi 1 Syksy 2005 Aloitetaan alusta... Otetaan uusi näkökulma Haskelliin ohjelmointi laskentana kertausta toisaalta, uusia käsitteitä toisaalta helpottanee sitten

Lisätiedot

MS-A0401 Diskreetin matematiikan perusteet

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

Ongelma(t): Miten jollakin korkeamman tason ohjelmointikielellä esitetty algoritmi saadaan suoritettua mikro-ohjelmoitavalla tietokoneella ja siinä

Ongelma(t): Miten jollakin korkeamman tason ohjelmointikielellä esitetty algoritmi saadaan suoritettua mikro-ohjelmoitavalla tietokoneella ja siinä Ongelma(t): Miten jollakin korkeamman tason ohjelmointikielellä esitetty algoritmi saadaan suoritettua mikro-ohjelmoitavalla tietokoneella ja siinä olevilla komponenteilla? Voisiko jollakin ohjelmointikielellä

Lisätiedot

8 Joukoista. 8.1 Määritelmiä

8 Joukoista. 8.1 Määritelmiä 1 8 Joukoista Joukko on alkoidensa kokoelma. Valitsemalla sopivat alkiot joudutaan tämän määritelmän kanssa vaikeuksiin, jotka voidaan välttää rakentamalla joukkooppi aksiomaattisesti. Näin ei tässä tehdä

Lisätiedot

Ilkka Mellin Todennäköisyyslaskenta Liite 1: Joukko-oppi

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

Rekursiiviset palautukset [HMU 9.3.1]

Rekursiiviset palautukset [HMU 9.3.1] Rekursiiviset palautukset [HMU 9.3.1] Yleisesti sanomme, että ongelma P voidaan palauttaa ongelmaan Q, jos mistä tahansa ongelmalle Q annetusta ratkaisualgoritmista voidaan jotenkin muodostaa ongelmalle

Lisätiedot

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 16. marraskuuta 2015

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 16. marraskuuta 2015 ja ja TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho NFA:ksi TIETOTEKNIIKAN LAITOS 16. marraskuuta 2015 Sisällys ja NFA:ksi NFA:ksi Kohti säännöllisiä lausekkeita ja Nämä tiedetään:

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

Ohjelmointikielten periaatteet Syksy Antti-Juhani Kaijanaho

Ohjelmointikielten periaatteet Syksy Antti-Juhani Kaijanaho Ohjelmointikielten periaatteet Syksy 2004 Antti-Juhani Kaijanaho Copyright c 2002, 2004 Antti-Juhani Kaijanaho Tästä teoksesta saa valmistaa kappaleita ja sen saa saattaa yleisön saataviin, muuttamattomana

Lisätiedot

Predikaattilogiikkaa

Predikaattilogiikkaa Predikaattilogiikkaa UKUTEORIA JA TO- DISTAMINEN, MAA11 Kertausta ogiikan tehtävä: ogiikka tutkii ajattelun ja päättelyn sääntöjä ja muodollisten päättelyiden oikeellisuutta, ja pyrkii erottamaan oikeat

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

8 KANNAT JA ORTOGONAALISUUS. 8.1 Lineaarinen riippumattomuus. Vaasan yliopiston julkaisuja 151

8 KANNAT JA ORTOGONAALISUUS. 8.1 Lineaarinen riippumattomuus. Vaasan yliopiston julkaisuja 151 Vaasan yliopiston julkaisuja 151 8 KANNAT JA ORTOGONAALISUUS KantaOrthogon Sec:LinIndep 8.1 Lineaarinen riippumattomuus Lineaarinen riippumattomuus on oikeastaan jo määritelty, mutta kirjoitamme määritelmät

Lisätiedot

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 22. toukokuuta 2013

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 22. toukokuuta 2013 TIEA24 Automaatit ja kieliopit, kesä 3 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 22. toukokuuta 3 Sisällys Äärellisiä automaatteja ON PUSH PUSH OFF Q T J Q C C H S C,Q C,Q 0 40 60 80 00, 70 90 Deterministinen

Lisätiedot

Algebra I Matematiikan ja tilastotieteen laitos Ratkaisuehdotuksia harjoituksiin 6 (8 sivua) OT. 1. a) Määritä seuraavat summat:

Algebra I Matematiikan ja tilastotieteen laitos Ratkaisuehdotuksia harjoituksiin 6 (8 sivua) OT. 1. a) Määritä seuraavat summat: Algebra I Matematiikan ja tilastotieteen laitos Ratkaisuehdotuksia harjoituksiin 6 (8 sivua) 21.2.-25.2.2011 OT 1. a) Määritä seuraavat summat: [2] 4 + [3] 4, [2] 5 + [3] 5, [2] 6 + [2] 6 + [2] 6, 7 [3]

Lisätiedot

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, literaalivakio, nimetty vakio Tiedon merkkipohjainen tulostaminen 1 Tunnus Java tunnus Java-kirjain Java-numero

Lisätiedot

TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 9. marraskuuta 2009

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

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

3. Kirjoita seuraavat joukot luettelemalla niiden alkiot, jos mahdollista. Onko jokin joukoista tyhjä joukko?

3. Kirjoita seuraavat joukot luettelemalla niiden alkiot, jos mahdollista. Onko jokin joukoista tyhjä joukko? HY / Avoin yliopisto Johdatus yliopistomatematiikkaan, kesä 2015 Harjoitus 1 Ratkaisuehdotuksia Tehtäväsarja I Seuraavat tehtävät liittyvät luentokalvoihin 1 14. Erityisesti esimerkistä 4 ja esimerkin

Lisätiedot