TÍPUSKIKÖVETKEZTETÉSI MÓDSZEREK

Méret: px
Mutatás kezdődik a ... oldaltól:

Download "TÍPUSKIKÖVETKEZTETÉSI MÓDSZEREK"

Átírás

1 TÍPUSKIKÖVETKEZTETÉSI MÓDSZEREK THE METHODS OF TYPE INFERENCE Csörnyei Zoltán 1, Nagy Sára 2 ELTE Informatikai Kar, Programozási Nyelvek és Fordítóprogramok Tanszék 1 ELTE Informatikai Kar, Algoritmusok és Alkalmazásaik Tanszék 2 Összefoglaló Előadásunkban a típuselmélet egyik speciális területével, a típuskikövetkeztetéssel foglalkozunk. Nem minden programnyelvben kötelező a típusok megadása, vannak olyan nyelvek is, ahol egyáltalán nem kell a programozónak a típusokkal foglalkoznia. Viszont a típusok, a lehetséges típusok ismerete feltétlenül szükséges a program helyességének a vizsgálatához. A típuskikövetkeztetés feladata a típusok pontos meghatározása. Először a legegyszerűbb módszert, a Curry-típuskikövetkeztetést mutatjuk be, majd a polimorfikus let-utasításon tanulmányozzuk a Hindley-Milner-algoritmust. Megadunk környezetfüggő és környezetfüggetlen módszereket, és megmutatjuk a korlátozások generálásának és az egységesítésnek az alkalmazását. Foglalkozunk a rekurzióval is, megadjuk a mai modern programnyelvekben alkalmazott Hindley-Mycroft-típuskikövetkeztető eljárást is. Típuskikövetkeztetéssel, különböző részletességgel, az ELTE Doktori Iskolájában, a programtervező informatikus MSc-képzésben foglalkozunk, és egy rövid összefoglaló szerepel a programtervező matematikus szak tantervében is. Kulcsszavak típuselmélet, típuskikövetkeztetés, fordítóprogramok Abstract We will discuss a particular area of the type theory, the type inference. Prescribing the types is not always mandatory: There are languages in which not all of types have to be given. In some languages the programmer does not need to consider types at all. However, the knowledge of the possible types is essential for checking the correctness of softwares. Type inference describes the types exactly. First we present the simplest method, the Curry-inference method, then we study the Hindley- Milner algorithm on the polymorphic let-statement. We present context dependent and context free methods, and the applications of generating constrains and of unification. We will consider recursion, and will present the Hindley-Mycroft type inference that is used by modern programming languages. In Eotvos University, we teach type inference - in different depths in PhD courses and in an MSc course. The curriculum of BSc degree also includes a brief summary of type inference. Keywords type theory, type inference, compilers 1

2 Bevezetés A típus már a kezdetektől fogva a számítástudomány központi fogalma. A típusrendszerek vizsgálata az utóbbi évek fontos kutatási területévé vált, az eredmények sikeresen alkalmazhatók a programozási nyelvek tervezésében, nagyhatékonyságú fordítóprogramok implementációjában és a típus nem utolsósorban a biztonságos programok létrehozásának egyik eszköze. Közismert Robin Milnernek az a mondása, hogy egy jól típusozott program nem futhat rosszul. Ezt az állítást már sokan finomították, pontosabbá tették, precízebben megfogalmazták, de ez a kijelentés jól mutatja a típusnak, a típuselméletnek a programozási nyelvekben betöltött szerepét. 1. A Curry-típusrendszer Nem minden programnyelvben kötelező a típusok megadása, vannak olyan nyelvek, ahol nem kell minden típust megadni, és vannak, ahol egyáltalán nem kell a programozónak a típusokkal foglalkoznia. A típusok, a lehetséges típusok ismerete viszont feltétlenül szükséges a program helyességének a vizsgálatához, a típuskikövetkeztetés feladata a típusok pontos meghatározása. A Curry-típusos λ-kalkulust röviden Curry-típusrendszernek nevezzük. A Currytípusrendszer típusai nem alaptípusokból, hanem típusváltozókból épülnek fel. A típusváltozók konkrét típusértéket majd a típuskikövetkeztetés folyamán kapnak. A Curry-típusrendszer szintaxisa: <típus>::= <típuváltozó> ( <típus> <típus>) <λ kifejezés >::= <változó> ( λ<változó>.<λ kifejezés > ) ( <λ kifejezés > <λ kifejezés >) A kifejezések típusát mindig egy <váltózó>:<típus> párokból álló típuskörnyezetből kiindulva a Curry-típusrendszer szabályainak felhasználásával bizonyítjuk. A kifejezések szabad változóinak típusa a típuskörnyezetből olvasható ki. A környezet üres is lehet. A Curry-típusrendszerben is háromfajta következtetés van, az első kettő a szintaktikus helyességgel foglalkozik, a harmadik egy jól formált kifejezés típusát adja meg: Ha -ból E:τ, akkor -ban az E kifejezés típusaτ. Azt mondjuk, hogy egy E:τ következtetés érvényes a típuskörnyezetben, ha bizonyítható a Curry-típusrendszer szabályaival. A típus meghatározásával kapcsolatban három kérdés merül fel, ezekben a típuskörnyezet mindig üres: 1. típuskikövetkeztetés: ha adott az E kifejezés, van-e olyan A típus, melyre E:A, 2. típusellenőrzés: ha adott az E kifejezés és az A típus, akkor teljesül-e az, hogy E:A, 3. típus-reprezentáció: ha adott az A típus, van-e olyan E kifejezés, melyre E:A. 2

3 2. A Curry-típuskikövetkeztetés A fentiek szerint legyen E a Curry-típusrendszer egy kifejezése, és azt vizsgáljuk, hogy van-e olyan A típus, hogy E:A. Típusváltozók szimultán helyettesítését az [α 1 :=A 1,, α n := A n ] leírással adjuk meg, és ha s egy típusváltozó helyettesítés, akkor az A típus s helyettesítését As alakban írjuk le. Azt mondjuk, hogy az A típus a B típus variánsa, ha van olyan s 1 és s 2 helyettesítések, hogy As 1 B és Bs 2 A. Ha pedig As Bs, akkor s az A és B egyesítő helyettesítése. Az A típus általánosabb típus a B típusnál, ha létezik olyan s helyettesítés, hogy B As. Ezt a tulajdonságot B A val jelöljük. Ha üres típuskörnyezetből következik, hogy E:A és A a legáltalánosabb típus, akkor A-t principális típusnak nevezzük. A feladat tehát az, hogy meghatározzuk, kikövetkeztessük az E kifejezés principális típusát. A típuskikövetkeztetés két műveletre, a korlátozások generálására és az egyesítésre bontható fel. A korlátozások típusok közötti egyenlőségek. A korlátozások generálása azt jelenti, hogy a típusrendszer levezetési szabályainak felhasználásával az E kifejezésre és részkifejezéseire nem adunk meg konkrét típusokat, hanem új típusváltozók alkalmazásával egyenleteket generálunk. A korlátozások egyenletrendszerét az egyesítés lépése oldja meg. Az egyesítés a generált típusváltozókhoz konkrét típuskifejezéseket rendel, az E-hez tartozó típusváltozóhoz rendelt típuskifejezés lesz majd az E típusa. A korlátozások generálását a T(,E,A ) leképezéssel végezzük, ahol egy típuskörnyezet, E egy kifejezés és A egy típus. A T(,E,A ) leképezést az E szerkezete szerint adjuk meg: 1. T(,x,A ) {A = (x)} 2. T(, x.e,a ) T({,x: },E, ) {A = },ahol és új típusváltozók, 3. T(,EF,A ) T(,E, A ) T(,F, ),ahol új típusváltozó. Az egyesítés feladat a korlátozások egyenletrendszerének olyan megoldása, ami a korlátozásokat adó kifejezés principális típusa lesz. Ha egy E kifejezés korlátozásait a fenti leképezéssel határozzuk meg és eredményül egy egyenletrendszert kapunk, akkor az egyesítés eljárással meghatározzuk az egyenletrendszer legáltalánosabb megoldását, és ebből már meg tudjuk határozni a principális típust. 3. A let-kifejezés bevezetése 3.1. Az egyszerű let-kifejezés és típuskikövetkeztetése A Curry-típusos λ-kalkulust egy új kifejezéssel bővítjük, a let-kifejezéssel. Ezt az indokolja, hogy a let-kifejezés a legtöbb funkcionális programnyelvben benne van, és kezelése az eddig megismert módszerekkel nem valósítható meg. A let-kifejezés szintaktikája: let <változó> = <λ kifejezés 1 > in <λ kifejezés 2 > 3

4 Először csak olyan let-kifejezéssel foglalkozunk, amelyekben a <változó> nem szerepel a <λ kifejezés 1 > - ben, azaz nincs rekurzió, és feltesszük, hogy a <változó> típusa monomorf. A let-kifejezés operációs szemantikája: let x = E in F F[x := E], és a let-kifejezés típusszabálya: Ha Γ-ból E:A és Γ,x:A-ból F:B, akkor Γ-ból let x=e inf :B. Látható, hogy a λ absztrakcióhoz hasonlóan, a típuskörnyezet x:a eleme beépül a letkifejezésbe. Ennek a let-kifejezésnek a korlátozás-generálása nagyon egyszerű. Legyen α egy új típusváltozó, és tegyük fel, hogy a let-kifejezés típusa A, ekkor a let-kifejezéshez a következő két korlátozás-generálás adható meg: T( Γ, E,α ) és T( {Γ, x:a }, F, A ), ezeknek a megoldása pedig az előző pontban már szerepelt. A korlátozások generálása után a principális típus most is az egységesítés műveletével határozható meg Probléma a let-tel, a polimorfikus let-kifejezés bevezetése A fenti let-kifejezés nagyon jónak tűnik, de sajnos már olyan egyszerű kifejezésre sem alkalmazható, mint például a következő: let f = λx.x in pair (f 0) (f True). A λx.x típusa α α, így az (f 0) típusa Nat Nat, de az (f True) típusa Bool Bool. Az f monomorf típusa miatt ez nem lehetséges. Ezért itt (de csak itt) meg kell engedni a változó polimorf típusát. Ez a let-polimorfizmus, és ez először az ML programnyelvben jelent meg. Ha az f polimorf, akkor a pair (f 0) (f True) kifejezés típusozható, és típusa Pair_Nat_Bool. Ehhez azonban a típus fogalmát is módosítani kell. Az eddigi típust egyszerű típusnak nevezzük, és bevezetjük a típusséma, azaz a polimorfikus típus fogalmát: <típusséma> := <egyszerű típus> <típusváltozó>. <típusséma> A típussémát a σ jellel jelöljük Látható, hogy a kvantor csak a típussémák baloldalán szerepelhet. A kvantor egy kötést valósít meg, a <típusváltozó> kötött lesz az utána következő <típussémá>-ban. Ezt a kötést a típusváltozó helyettesítésekor is figyelembe kell venni. Megadhatjuk egy típusséma gen(γ,σ) általánosítását úgy, hogy univerzális kvantorokkal kötjük a szabad típusváltozóit, és beszélhetünk egy típusséma inst(σ) példányosításáról: ahol a kvantorokkal kötött típusváltozókat egyedi új típusváltozókkal helyettesítjük. Ezeknek a fogalmaknak a bevezetésével már megadhatjuk a polimorfikus let-kifejés típuskikövetkeztetését. 4

5 4. A Hindley-Milner-típuskikövetkeztetés A típuskikövetkeztetés módszerét egymástól függetlenül 1969-ben Hindley, majd ban Milner publikálta, innen származik Hindley-Milner típuskikövetkeztetés elnevezés. Milner volt az első, aki Robinson egységesítését is alkalmazta, beépítve a típuskikövetkeztést az ML fordítóprogramjának elemző algoritmusai közé. Curry is foglalkozott a típuskikövetkeztetéssel, ezért ezt a módszert gyakran Curry--Hindley típuskikövetkeztetésnek is nevezik. A principális típus tétel bizonyítását Damas adta meg, ezért sokan ennek a módszernek a Damas-Milner típuskikövetkeztetés nevet adták A típusrendszer szabályai Csak a három legfontosabb típusszabályt adjuk meg: Ha Γ-ból E:σ, akkor Γ-ból E:gen(Γ,σ), ha Γ-ból E:σ, akkor Γ-ból E:inst(σ), ha Γ-ból E:σ és Γ,x:σ-ból F: σ, akkor Γ-ból let x = E in F :σ. Látható, hogy a típusséma előfordulhat a kifejezések típusában is, nem csak a típuskörnyezetekben. Ez nehézkessé teszi a típuskikövetkeztetést, ráadásul a kifejezés szintaktikájából egyáltalán nem látszik, hogy mikor kell az általánosítás vagy a példányosítás szabályát alkalmazni. Ezért módosítsuk a let-kifejezés típusszabályát úgy, hogy ez a kifejezés írja bele a típuskörnyezetbe a polimorfikus típust, és hogy a polimorfikus típus ne szerepeljen kifejezések típusában, csak a típuskörnyezetben. ha Γ-ból E:σ és {Γ,x: gen(γ,σ)}-ból F: σ, akkor Γ-ból let x = E in F :σ. A típuskörnyezetből egy változó típusát kiolvashatjuk, de ekkor mindig a példányosítás műveletét kell alkalmazni A W-algoritmus Milner két algoritmust is adott a típuskikövetkeztetésre. Először a W-algoritmussal foglalkozunk. Az algoritmust mintákkal, a kifejezés szerkezete szerint adjuk meg. Az algoritmus egy típuskörnyezetre és a kifejezésre egy típusváltozó helyettesítését határozza meg, vagy hibajelzéssel megáll. Az algoritmust nem részletezzük, csupán két mintára vonatkozó lépését adjuk meg: W(Γ,x) = (Id, inst(σ)), ahol {x:σ} a Γ-ban van. W(Γ,let x=e inf) = (s 1, s 2, τ ), ahol W(Γ,E) = (s 1,τ ) és W({Γs 1,x:gen(Γs 1,τ },F) = (s 2,τ ) A megadott két lépésből is látható, hogy az univerzális kvantoros típusséma a let-kifejezés feldolgozásánál kerül bele a típuskörnyezetbe, és egy változó típusának a típuskörnyezetből való meghatározásánál a példányosítás műveletét alkalmazzuk. Ezek biztosítják azt, hogy például a fenti 5

6 f = λx.x in pair (f 0) (f True) kifejezésben az f típusa α.α α lesz, és az f 0 kifejezésben az f típusának meghatározásakor a példányosítás művelete az α-hoz a Nat, az f True kifejezésben pedig a Bool típust rendeli hozzá A W-algoritmus helyes, azaz ha W(Γ,E) = (s,τ), akkor Γs-ből valóban az következik, hogy E:τ, és az algoritmus teljes, vagyis a legáltalánosabb típust határozza meg A J-algoritmus A J-algoritmust is Milner definiálta 1978-ban, mint a W-algoritmus egy egyszerűbb formáját, ugyanabban a cikkben, amelyben a W-algoritmus is először szerepel. A J- algoritmust a Haskell programnyelv implementációjában használták. A típuskikövetkeztetés is használ egy s helyettesítést, mint egy globális változót, a típuskikövetkeztetés indításakor s = Id. A helyettesítést azonban csak az egységesítés argumentumainak megadásában használjuk, és ellentétben a W-algoritmussal, a helyettesítés a principális típus végső meghatározásában már nem szerepel. Most is csak két mintára vonatkozó lépést adunk meg: J(Γ,x) = inst(σ), ahol {x:σ} a Γ-ban van, J(Γ,let x=e inf) = τ, ahol J(Γ,E) = τ és W({Γ,x:gen(Γs_1,τ s},f) = τ. Az algoritmus közvetlenül a kifejezés típusát adja meg, és bizonyítható, hogy az algoritmus helyes és teljes Az M-algoritmus Mind a W-, mind a J-algoritmus az EF applikációra úgy működik, hogy először végigszámolta az E-t, majd végigszámolja az F-t, és csak ezután ellenőrzi, hogy az E típusa függvény-e, vagyis az E típus α α alakú-e. Ezért ezeket a típuskikövetkeztetéseket környezetfüggetlen típuskikövetkeztetéseknek nevezzük, hiszen a kifejezések típusát anélkül határozzák meg, hogy megvizsgálnák, azok milyen környezetben vannak. Ezeket az algoritmusokat alulról-felfelé haladó algoritmusoknak is tekinthetjük, hiszen például ha az EF applikációt gráffal ábrázoljuk, az algoritmusok először az E-t, a bal oldali részfát járják be, utána foglalkoznak a jobb oldali F részfájával, és csak ezután lépnek egy szinttel feljebb az applikáció műveletéhez, és csak most vizsgálják meg az applikáció lehetőségét. Ez a működés a hiba felfedezésére is erősen kihat, hiszen ha az applikáció nem lehetséges, ezt a kikövetkeztető algoritmus csak sok munka után, az E és F teljes feldolgozása után fedezi fel. A típuskikövetkeztető rendszer sokkal hamarabb észrevenné a hibát, ha egy EF applikáció esetén az E feldolgozása után azonnal ellenőrizné, hogy az E típusa vajon függvény-e. Ez a gondolat az alapja a típuskikövetkeztetés M-algoritmusának, amit Lee és Yi dolgozott ki 1998-ban. 6

7 Az M-algoritmus a környezetből meghatározza a várható típust, ezt a típust továbbítja a kifejezés felé, és hibát jelez, ha a kifejezés típusa nem felel meg a várt típusnak. Az algoritmust ezért környezetfüggő típuskikövetkeztetésnek nevezzük. A módszer lényegében egy felülről-lefelé haladó típuskikövetkeztetés. Az EF applikáció gráfját tekintve az algoritmus először meghatározza az applikáció elemeinek várható típusát, és csak ezután járja be az E bal oldali részfát. Csak akkor folytatja a típuskikövetkeztetést a jobb oldali részfával, azaz az F kifejezéssel, ha az E típusa megfelel a várt típusnak. 5. A rekurzió bevezetése és a Milner-Mycroft típuskikövetkeztetés A rekurzív kifejezések típusának leírására a fenti rendszerek nem alkalmasak, ezért bővítsük a rendszerünket a rekurziót leíró fix-kifejezéssel. A fix-kifejezés szintaktikája: fix <változó>. <λ kifejezés>, és operációs szemantikája fix x. E E [x:= fix x. E ]. A fix-kifejezés klasszikus monomorf típusszabályát Mycroft módosította polimorfikus típusokra: ha Γ,x:σ-ból E: σ, akkor Γ-ból fix x. E:σ. A típusok tehát típussémák, és ez biztosítja a polimorfikus típusos rekurzív függvények leírását. Ezt a típusrendszert nevezzük Milner-Mycroft típusrendszernek. A let-kifejezéshez hasonlóan, a fix-kifejezés típusszabálya is módosítható úgy, hogy a kvantoros típussémák csak a típuskörnyezetben szerepeljenek. Ez a típuskikövetkeztetés szintaxisvezérelt végrehajtását teszi lehetővé. A Milner-Mycroft típusrendszer megtartja a Hindley-Milner típusrendszer legtöbb tulajdonságát, például itt is teljesül a tárgy-redukció tétele, és itt is igaz, hogy a típusosan helyes kifejezések nem okoznak run-time típus-hibát. Azonban, míg a Curry- és a Hindley- Milner típusrendszer típus-kikövetkeztetése eldönthető és a probléma általában polinomiális, néhány speciális esetben exponenciális időbonyolultságú, addig a Milner-Mycroft típuskikövetkeztetés nem eldönthető, azaz vannak olyan problémák, amelyekre a kikövetkeztetés nem terminál. Irodalomjegyzék [1] L. Cardelli: Type Systems, Handbook of Computer Science and Engineering, CRC Press, [2] Z. Csörnyei: Lambda-kalkulus, Typotex, Budapest, [3] Z. Csörnyei: Típuselmélet (kézirat), [4] B. C. Pierce: Types and Programming Languages, The MIT Press, Cambridge, [5] B. C. Pierce (editor):advanced Topics in Types and Programming Languages, The Mit Press,

Nyelvek típusrendszere (IPM-08sztNYTRE, IPM-08EsztNYTRE)

Nyelvek típusrendszere (IPM-08sztNYTRE, IPM-08EsztNYTRE) Nyelvek típusrendszere (IPM-08sztNYTRE, IPM-08EsztNYTRE) http://people.inf.elte.hu/pgj/nytr_msc/ Páli Gábor János pgj@elte.hu Eötvös Loránd Tudományegyetem, Informatikai Kar Programozási Nyelvek és Fordítóprogramok

Részletesebben

Kaposi Ambrus. Informatikai Kar. Pannonhalmi Bencés Gimnázium november 24.

Kaposi Ambrus. Informatikai Kar. Pannonhalmi Bencés Gimnázium november 24. Bizonyítás és programozás Kaposi Ambrus Eötvös Loránd Tudományegyetem Informatikai Kar Pannonhalmi Bencés Gimnázium 2017. november 24. A tökéletes operációs rendszer (i) BeOS Plan9 2 / 22 A tökéletes operációs

Részletesebben

A szemantikus elemzés helye. A szemantikus elemzés feladatai. A szemantikus elemzés feladatai. Deklarációk és láthatósági szabályok

A szemantikus elemzés helye. A szemantikus elemzés feladatai. A szemantikus elemzés feladatai. Deklarációk és láthatósági szabályok A szemantikus elemzés helye Forrásprogram Forrás-kezelő (source handler) Lexikális elemző (scanner) A szemantikus elemzés feladatai Fordítóprogramok előadás (A, C, T szakirány) Szintaktikus elemző (parser)

Részletesebben

FUNKCIONÁLIS PROGRAMOZÁS

FUNKCIONÁLIS PROGRAMOZÁS FUNKCIONÁLIS PROGRAMOZÁS A funkcionális programozás néhány jellemzője Funkcionális programozás 1-2 Funkcionális, más néven applikatív programozás Funkcionális = függvényalapú, függvényközpontú Applikatív

Részletesebben

Kaposi Ambrus. University of Nottingham Functional Programming Lab. Hackerspace Budapest 2015. január 6.

Kaposi Ambrus. University of Nottingham Functional Programming Lab. Hackerspace Budapest 2015. január 6. Bizonyítás és programozás Kaposi Ambrus University of Nottingham Functional Programming Lab Hackerspace Budapest 2015. január 6. Bizonyítás, érvelés Példa: sáros a csizmám ha vizes a föld, esett az eső

Részletesebben

Nyelvek típusrendszere (jegyzet)

Nyelvek típusrendszere (jegyzet) Nyelvek típusrendszere (jegyzet) Kaposi Ambrus Eötvös Loránd Tudományegyetem akaposi@inf.elte.hu 2017. november 6. Lektorálta: Csörnyei Zoltán Az ELTE tankönyv- és jegyzettámogatási pályázatán elnyert

Részletesebben

Programok értelmezése

Programok értelmezése Programok értelmezése Kód visszafejtés. Izsó Tamás 2016. szeptember 22. Izsó Tamás Programok értelmezése/ 1 Section 1 Programok értelmezése Izsó Tamás Programok értelmezése/ 2 programok szemantika értelmezése

Részletesebben

A Feldspar fordító, illetve Feldspar programok tesztelése

A Feldspar fordító, illetve Feldspar programok tesztelése A Feldspar fordító, illetve Feldspar programok tesztelése [KMOP-1.1.2-08/1-2008-0002 társfinanszírozó: ERFA] Leskó Dániel Eötvös Loránd Tudományegyetem Programozási Nyelvek és Fordítóprogramok Tanszék

Részletesebben

A DEBRECENI MÉRNÖK INFORMATIKUS KÉPZÉS TAPASZTALATAIRÓL. Kuki Attila Debreceni Egyetem, Informatikai Kar. Összefoglaló

A DEBRECENI MÉRNÖK INFORMATIKUS KÉPZÉS TAPASZTALATAIRÓL. Kuki Attila Debreceni Egyetem, Informatikai Kar. Összefoglaló A DEBRECENI MÉRNÖK INFORMATIKUS KÉPZÉS TAPASZTALATAIRÓL TEACHING EXPERIENCES OF THE IT ENGINEERING COURSE OF UNIVERSITY OF DEBRECEN Kuki Attila Debreceni Egyetem, Informatikai Kar Összefoglaló A Debreceni

Részletesebben

Chomsky-féle hierarchia

Chomsky-féle hierarchia http://www.cs.ubbcluj.ro/~kasa/formalis.html Chomsky-féle hierarchia G = (N, T, P, S) nyelvtan: 0-s típusú (általános vagy mondatszerkezet ), ha semmilyen megkötést nem teszünk a helyettesítési szabályaira.

Részletesebben

Segédanyagok. Formális nyelvek a gyakorlatban. Szintaktikai helyesség. Fordítóprogramok. Formális nyelvek, 1. gyakorlat

Segédanyagok. Formális nyelvek a gyakorlatban. Szintaktikai helyesség. Fordítóprogramok. Formális nyelvek, 1. gyakorlat Formális nyelvek a gyakorlatban Formális nyelvek, 1 gyakorlat Segédanyagok Célja: A programozási nyelvek szintaxisának leírására használatos eszközök, módszerek bemutatása Fogalmak: BNF, szabály, levezethető,

Részletesebben

A szemantikus elemzés elmélete. Szemantikus elemzés (attribútum fordítási grammatikák) A szemantikus elemzés elmélete. A szemantikus elemzés elmélete

A szemantikus elemzés elmélete. Szemantikus elemzés (attribútum fordítási grammatikák) A szemantikus elemzés elmélete. A szemantikus elemzés elmélete A szemantikus elemzés elmélete Szemantikus elemzés (attribútum fordítási grammatikák) a nyelvtan szabályait kiegészítjük a szemantikus elemzés tevékenységeivel fordítási grammatikák Fordítóprogramok előadás

Részletesebben

A digitális számítás elmélete

A digitális számítás elmélete A digitális számítás elmélete 8. előadás ápr. 16. Turing gépek és nyelvtanok A nyelvosztályok áttekintése Turing gépek és a természetes számokon értelmezett függvények Áttekintés Dominó Bizonyítások: L

Részletesebben

Logika és informatikai alkalmazásai kiskérdések február Mikor mondjuk, hogy az F formula a G-nek részformulája?

Logika és informatikai alkalmazásai kiskérdések február Mikor mondjuk, hogy az F formula a G-nek részformulája? ,,Alap kiskérdések Logika és informatikai alkalmazásai kiskérdések 2012. február 19. 1. Hogy hívjuk a 0 aritású függvényjeleket? 2. Definiálja a termek halmazát. 3. Definiálja a formulák halmazát. 4. Definiálja,

Részletesebben

Kiterjesztések sek szemantikája

Kiterjesztések sek szemantikája Kiterjesztések sek szemantikája Példa D Integer = {..., -1,0,1,... }; D Boolean = { true, false } D T1... T n T = D T 1... D Tn D T Az összes függvf ggvény halmaza, amelyek a D T1,..., D Tn halmazokból

Részletesebben

A fröccs szintaxisa és operációs szemantikája

A fröccs szintaxisa és operációs szemantikája A fröccs szintaxisa és operációs szemantikája Kaposi Ambrus Eötvös Loránd Tudományegyetem akaposi@inf.elte.hu 2017. október 2. 1. Bevezetés Ipari partnerünk megkereste az Informatikai Kar Programozási

Részletesebben

FUNKCIONÁLIS PROGRAMOZÁS GYAKORLAT JEGYZET

FUNKCIONÁLIS PROGRAMOZÁS GYAKORLAT JEGYZET FUNKCIONÁLIS PROGRAMOZÁS GYAKORLAT JEGYZET Szerkesztette: Balogh Tamás 2013. május 17. Ha hibát találsz, kérlek jelezd a info@baloghtamas.hu e-mail címen! Ez a Mű a Creative Commons Nevezd meg! - Ne add

Részletesebben

Az impulzusnyomatékok általános elmélete

Az impulzusnyomatékok általános elmélete Az impulzusnyomatékok általános elmélete November 27, 2006 Az elemi kvantummechanika keretében tárgyaltuk már az impulzusnyomatékot. A továbbiakban általánosítjuk az impulzusnyomaték fogalmát a kvantummechanikában

Részletesebben

... S n. A párhuzamos programszerkezet két vagy több folyamatot tartalmaz, melyek egymással közös változó segítségével kommunikálnak.

... S n. A párhuzamos programszerkezet két vagy több folyamatot tartalmaz, melyek egymással közös változó segítségével kommunikálnak. Párhuzamos programok Legyen S parbegin S 1... S n parend; program. A párhuzamos programszerkezet két vagy több folyamatot tartalmaz, melyek egymással közös változó segítségével kommunikálnak. Folyamat

Részletesebben

FUNKCIONÁLIS PROGRAMNYELVEK IMPLEMENTÁCIÓJA

FUNKCIONÁLIS PROGRAMNYELVEK IMPLEMENTÁCIÓJA FUNKCIONÁLIS PROGRAMNYELVEK IMPLEMENTÁCIÓJA Csörnyei Zoltán, csz@maxi.elte.hu Nagy Sára, saci@ludens.elte.hu Eötvös Loránd Tudományegyetem Általános Számítástudományi Tanszék. Abstract Functional languages

Részletesebben

Formális szemantika. Kifejezések szemantikája. Horpácsi Dániel ELTE Informatikai Kar

Formális szemantika. Kifejezések szemantikája. Horpácsi Dániel ELTE Informatikai Kar Formális szemantika Kifejezések szemantikája Horpácsi Dániel ELTE Informatikai Kar 2016-2017-2 Az előadás témája Egyszerű kifejezések formális szemantikája Az első lépés a programozási nyelvek szemantikájának

Részletesebben

Magasabbrendű funkcionális programozás

Magasabbrendű funkcionális programozás 1 Magasabbrendű funkcionális programozás Hanák Péter hanak@inf.bme.hu Irányítástechnika és Informatika Tanszék OM Kutatás-Fejlesztési Helyettes Államtitkárság Hanák Dávid dhanak@inf.bme.hu Számítástudományi

Részletesebben

Általános algoritmustervezési módszerek

Általános algoritmustervezési módszerek Általános algoritmustervezési módszerek Ebben a részben arra mutatunk példát, hogy miként használhatóak olyan általános algoritmustervezési módszerek mint a dinamikus programozás és a korlátozás és szétválasztás

Részletesebben

3. előadás. Programozás-elmélet. A változó fogalma Kiterjesztések A feladat kiterjesztése A program kiterjesztése Kiterjesztési tételek Példa

3. előadás. Programozás-elmélet. A változó fogalma Kiterjesztések A feladat kiterjesztése A program kiterjesztése Kiterjesztési tételek Példa A változó fogalma Definíció Legyen A = A 1 A 2... A n állapottér. A pr Ai projekciós függvényeket változóknak nevezzük: : A A i pr Ai (a) = a i ( a = (a 1, a 2,..., a n ) A). A változók jelölése: v i =

Részletesebben

Chomsky-féle hierarchia

Chomsky-féle hierarchia http://www.ms.sapientia.ro/ kasa/formalis.htm Chomsky-féle hierarchia G = (N, T, P, S) nyelvtan: 0-s típusú (általános vagy mondatszerkezetű), ha semmilyen megkötést nem teszünk a helyettesítési szabályaira.

Részletesebben

3. Előadás. Megyesi László: Lineáris algebra, oldal. 3. előadás Lineáris egyenletrendszerek

3. Előadás. Megyesi László: Lineáris algebra, oldal. 3. előadás Lineáris egyenletrendszerek 3. Előadás Megyesi László: Lineáris algebra, 47. 50. oldal. Gondolkodnivalók Determinánsok 1. Gondolkodnivaló Determinánselméleti tételek segítségével határozzuk meg a következő n n-es determinánst: 1

Részletesebben

Alap fatranszformátorok II

Alap fatranszformátorok II Alap fatranszformátorok II Vágvölgyi Sándor Fülöp Zoltán és Vágvölgyi Sándor [2, 3] közös eredményeit ismertetjük. Fogalmak, jelölések A Σ feletti alaptermek TA = (T Σ, Σ) Σ algebráját tekintjük. Minden

Részletesebben

Házi feladatok megoldása. Nyelvek használata adatszerkezetek, képek leírására

Házi feladatok megoldása. Nyelvek használata adatszerkezetek, képek leírására Nyelvek használata adatszerkezetek, képek leírására Formális nyelvek, 2. gyakorlat 1. feladat Módosított : belsejében lehet _ jel is. Kezdődhet, de nem végződhet vele, két aláhúzás nem lehet egymás mellett.

Részletesebben

A TANTÁRGY ADATLAPJA

A TANTÁRGY ADATLAPJA A TANTÁRGY ADATLAPJA 1. A képzési program adatai 1.1 Felsőoktatási intézmény Babeș Bolyai Tudományegyetem 1.2 Kar Matematika és Informatika Kar 1.3 Intézet Magyar Matematika és Informatika Intézet 1.4

Részletesebben

Automaták és formális nyelvek

Automaták és formális nyelvek Automaták és formális nyelvek Bevezetés a számítástudomány alapjaiba 1. Formális nyelvek 2006.11.13. 1 Automaták és formális nyelvek - bevezetés Automaták elmélete: információs gépek általános absztrakt

Részletesebben

KOMPUTER-ALGEBRA RENDSZEREK VERIFIKÁCIÓJA

KOMPUTER-ALGEBRA RENDSZEREK VERIFIKÁCIÓJA KOMPUTER-ALGEBRA RENDSZEREK VERIFIKÁCIÓJA Szoftver Verifikáció és Validáció, 2015 Ősz Vaitkus Márton Tartalom Motiváció Maple MiniMaple MiniMaple típusellenőrzése MiniMaple formális specifikációja MiniMaple

Részletesebben

2019, Funkcionális programozás. 2. el adás. MÁRTON Gyöngyvér

2019, Funkcionális programozás. 2. el adás. MÁRTON Gyöngyvér Funkcionális programozás 2. el adás Sapientia Egyetem, Matematika-Informatika Tanszék Marosvásárhely, Románia mgyongyi@ms.sapientia.ro 2019, tavaszi félév Mir l volt szó? Követelmények, osztályozás Programozási

Részletesebben

ALAPFOGALMAK 1. A reláció az program programfüggvénye, ha. Azt mondjuk, hogy az feladat szigorúbb, mint az feladat, ha

ALAPFOGALMAK 1. A reláció az program programfüggvénye, ha. Azt mondjuk, hogy az feladat szigorúbb, mint az feladat, ha ALAPFOGALMAK 1 Á l l a p o t t é r Legyen I egy véges halmaz és legyenek A i, i I tetszőleges véges vagy megszámlálható, nem üres halmazok Ekkor az A= A i halmazt állapottérnek, az A i halmazokat pedig

Részletesebben

1. Homogén lineáris egyenletrendszer megoldástere

1. Homogén lineáris egyenletrendszer megoldástere X HOMOGÉN LINEÁRIS EGYENLET- RENDSZEREK 1 Homogén lineáris egyenletrendszer megoldástere Homogén lineáris egyenletrendszer definíciója már szerepelt Olyan lineáris egyenletrendszert nevezünk homogénnek,

Részletesebben

FUNKCIONÁLIS PROGRAMOZÁS ELŐADÁS JEGYZET

FUNKCIONÁLIS PROGRAMOZÁS ELŐADÁS JEGYZET FUNKCIONÁLIS PROGRAMOZÁS ELŐADÁS JEGYZET Szerkesztette: Balogh Tamás 2013. május 30. Ha hibát találsz, kérlek jelezd a info@baloghtamas.hu e-mail címen! Ez a Mű a Creative Commons Nevezd meg! - Ne add

Részletesebben

AZ EGYETEM TÖRTÉNETE. Az Eötvös Loránd Tudományegyetem Magyarország legrégebbi folyamatosan m{köd[, s egyben legnagyobb egyeteme.

AZ EGYETEM TÖRTÉNETE. Az Eötvös Loránd Tudományegyetem Magyarország legrégebbi folyamatosan m{köd[, s egyben legnagyobb egyeteme. AZ EGYETEM TÖRTÉNETE Az Eötvös Loránd Tudományegyetem Magyarország legrégebbi folyamatosan m{köd[, s egyben legnagyobb egyeteme. Pázmány Péter esztergomi érsek 1635-ben Nagyszombat városában alapította

Részletesebben

FFT. Második nekifutás. Czirbusz Sándor ELTE IK, Komputeralgebra Tanszék október 2.

FFT. Második nekifutás. Czirbusz Sándor ELTE IK, Komputeralgebra Tanszék október 2. TARTALOMJEGYZÉK Polinomok konvolúviója A DFT és a maradékos osztás Gyűrűk támogatás nélkül Második nekifutás Czirbusz Sándor ELTE IK, Komputeralgebra Tanszék 2015. október 2. TARTALOMJEGYZÉK Polinomok

Részletesebben

Algoritmuselmélet. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 13.

Algoritmuselmélet. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 13. Algoritmuselmélet NP-teljes problémák Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem 13. előadás Katona Gyula Y. (BME SZIT) Algoritmuselmélet

Részletesebben

2018, Funkcionális programozás

2018, Funkcionális programozás Funkcionális programozás 1. előadás Sapientia Egyetem, Matematika-Informatika Tanszék Marosvásárhely, Románia mgyongyi@ms.sapientia.ro 2018, tavaszi félév Követelmények, osztályozás Előadás, jelenlét:

Részletesebben

Csempe átíró nyelvtanok

Csempe átíró nyelvtanok Csempe átíró nyelvtanok Tile rewriting grammars Németh L. Zoltán Számítástudomány Alapjai Tanszék SZTE, Informatikai Tanszékcsoport 1. előadás - 2006. április 10. Képek (pictures) I. Alapdefiníciók ábécé:

Részletesebben

Emlékeztető: LR(0) elemzés. LR elemzések (SLR(1) és LR(1) elemzések)

Emlékeztető: LR(0) elemzés. LR elemzések (SLR(1) és LR(1) elemzések) Emlékeztető Emlékeztető: LR(0) elemzés A lexikális által előállított szimbólumsorozatot balról jobbra olvassuk, a szimbólumokat az vermébe tesszük. LR elemzések (SLR() és LR() elemzések) Fordítóprogramok

Részletesebben

A Formális nyelvek vizsga teljesítése. a) Normál A vizsgán 60 pont szerezhet, amely két 30 pontos részb l áll össze az alábbi módon:

A Formális nyelvek vizsga teljesítése. a) Normál A vizsgán 60 pont szerezhet, amely két 30 pontos részb l áll össze az alábbi módon: A Formális nyelvek vizsga teljesítése a) Normál A vizsgán 60 pont szerezhet, amely két 30 pontos részb l áll össze az alábbi módon: 1. Öt rövid kérdés megválaszolása egyenként 6 pontért, melyet minimum

Részletesebben

Házi feladatok megoldása. Nyelvek felismerése. Házi feladatok megoldása. Házi feladatok megoldása. Formális nyelvek, 5. gyakorlat

Házi feladatok megoldása. Nyelvek felismerése. Házi feladatok megoldása. Házi feladatok megoldása. Formális nyelvek, 5. gyakorlat Házi feladatok megoldása Nyelvek felismerése Formális nyelvek, 5. gyakorlat 1. feladat Adjunk a következő nyelvet generáló 3. típusú nyelvtant! Azon M-áris számrendszerbeli számok, melyek d-vel osztva

Részletesebben

Funkcionális Nyelvek 2 (MSc)

Funkcionális Nyelvek 2 (MSc) Funkcionális Nyelvek 2 (MSc) Páli Gábor János pgj@elte.hu Eötvös Loránd Tudományegyetem Informatikai Kar Programozási Nyelvek és Fordítóprogramok Tanszék Tematika A (tervezett) tematika rövid összefoglalása

Részletesebben

6. Függvények. Legyen függvény és nem üreshalmaz. A függvényt az f K-ra való kiterjesztésének

6. Függvények. Legyen függvény és nem üreshalmaz. A függvényt az f K-ra való kiterjesztésének 6. Függvények I. Elméleti összefoglaló A függvény fogalma, értelmezési tartomány, képhalmaz, értékkészlet Legyen az A és B halmaz egyike sem üreshalmaz. Ha az A halmaz minden egyes eleméhez hozzárendeljük

Részletesebben

Alapok. tisztán funkcionális nyelv, minden függvény (a konstansok is) nincsenek hagyományos változók, az első értékadás után nem módosíthatók

Alapok. tisztán funkcionális nyelv, minden függvény (a konstansok is) nincsenek hagyományos változók, az első értékadás után nem módosíthatók Haskell 1. Alapok tisztán funkcionális nyelv, minden függvény (a konstansok is) nincsenek hagyományos változók, az első értékadás után nem módosíthatók elég jól elkerülhetők így a mellékhatások könnyebben

Részletesebben

6. Függvények. 1. Az alábbi függvények közül melyik szigorúan monoton növekvő a 0;1 intervallumban?

6. Függvények. 1. Az alábbi függvények közül melyik szigorúan monoton növekvő a 0;1 intervallumban? 6. Függvények I. Nulladik ZH-ban láttuk: 1. Az alábbi függvények közül melyik szigorúan monoton növekvő a 0;1 intervallumban? f x g x cos x h x x ( ) sin x (A) Az f és a h. (B) Mindhárom. (C) Csak az f.

Részletesebben

Logika es sz am ıt aselm elet I. r esz Logika 1/36

Logika es sz am ıt aselm elet I. r esz Logika 1/36 1/36 Logika és számításelmélet I. rész Logika 2/36 Elérhetőségek Tejfel Máté Déli épület, 2.606 matej@inf.elte.hu http://matej.web.elte.hu Tankönyv 3/36 Tartalom 4/36 Bevezető fogalmak Ítéletlogika Ítéletlogika

Részletesebben

Funkcionális és logikai programozás. { Márton Gyöngyvér, 2012} { Sapientia, Erdélyi Magyar Tudományegyetem }

Funkcionális és logikai programozás. { Márton Gyöngyvér, 2012} { Sapientia, Erdélyi Magyar Tudományegyetem } Funkcionális és logikai programozás { Márton Gyöngyvér, 2012} { Sapientia, Erdélyi Magyar Tudományegyetem } http://www.ms.sapientia.ro/~mgyongyi ` 1 Jelenlét: Követelmények, osztályozás Az első 4 előadáson

Részletesebben

Diszkrét Matematika MSc hallgatók számára. 4. Előadás

Diszkrét Matematika MSc hallgatók számára. 4. Előadás Diszkrét Matematika MSc hallgatók számára 4. Előadás Előadó: Hajnal Péter Jegyzetelő: Szarvák Gábor 2012. február 28. Emlékeztető. A primál feladat optimális értékét p -gal, a feladat optimális értékét

Részletesebben

2. Rekurzió. = 2P2(n,n) 2 < 2P2(n,n) 1

2. Rekurzió. = 2P2(n,n) 2 < 2P2(n,n) 1 2. Rekurzió Egy objektum definícióját rekurzívnak nevezünk, ha a definíció tartalmazza a definiálandó objektumot. Egy P eljárást (vagy függvényt) rekurzívnak nevezünk, ha P utasításrészében előfordul magának

Részletesebben

HALLGATÓI KÉRDŐÍV ÉS TESZT ÉRTÉKELÉSE

HALLGATÓI KÉRDŐÍV ÉS TESZT ÉRTÉKELÉSE HALLGATÓI KÉRDŐÍV ÉS TESZT ÉRTÉKELÉSE EVALUATION OF STUDENT QUESTIONNAIRE AND TEST Daragó László, Dinyáné Szabó Marianna, Sára Zoltán, Jávor András Semmelweis Egyetem, Egészségügyi Informatikai Fejlesztő

Részletesebben

1. Példa. A gamma függvény és a Fubini-tétel.

1. Példa. A gamma függvény és a Fubini-tétel. . Példa. A gamma függvény és a Fubini-tétel.. Az x exp x + t )) függvény az x, t tartományon folytonos, és nem negatív, ezért alkalmazható rá a Fubini-tétel. I x exp x + t )) dxdt + t dt π 4. [ exp x +

Részletesebben

Java programozási nyelv

Java programozási nyelv Java programozási nyelv 2. rész Vezérlő szerkezetek Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2005. szeptember A Java programozási nyelv Soós Sándor 1/23 Tartalomjegyzék

Részletesebben

Vektorterek. Több esetben találkozhattunk olyan struktúrával, ahol az. szabadvektorok esetében, vagy a függvények körében, vagy a. vektortér fogalma.

Vektorterek. Több esetben találkozhattunk olyan struktúrával, ahol az. szabadvektorok esetében, vagy a függvények körében, vagy a. vektortér fogalma. Vektorterek Több esetben találkozhattunk olyan struktúrával, ahol az összeadás és a (valós) számmal való szorzás értelmezett, pl. a szabadvektorok esetében, vagy a függvények körében, vagy a mátrixok esetében.

Részletesebben

NP-teljesség röviden

NP-teljesség röviden NP-teljesség röviden Bucsay Balázs earthquake[at]rycon[dot]hu http://rycon.hu 1 Turing gépek 1/3 Mi a turing gép? 1. Definíció. [Turing gép] Egy Turing-gép formálisan egy M = (K, Σ, δ, s) rendezett négyessel

Részletesebben

Hadamard-mátrixok Előadó: Hajnal Péter február 23.

Hadamard-mátrixok Előadó: Hajnal Péter február 23. Szimmetrikus kombinatorikus struktúrák MSc hallgatók számára Hadamard-mátrixok Előadó: Hajnal Péter 2012. február 23. 1. Hadamard-mátrixok Ezen az előadáson látásra a blokkrendszerektől független kombinatorikus

Részletesebben

S0-02 Típusmodellek (Programozás elmélet)

S0-02 Típusmodellek (Programozás elmélet) S0-02 Típusmodellek (Programozás elmélet) Tartalom 1. Absztrakt adattípus 2. Adattípus specifikációja 3. Adattípus osztály 4. Paraméterátadás 5. Reprezentációs függvény 6. Öröklődés és polimorfizmus 7.

Részletesebben

Algoritmusok és adatszerkezetek II.

Algoritmusok és adatszerkezetek II. Algoritmusok és adatszerkezetek II. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar horvath@inf.u-szeged.hu 5. Vágható-egyesíthető Halmaz adattípus megvalósítása önszervező

Részletesebben

Egyenletek, egyenlőtlenségek, egyenletrendszerek I.

Egyenletek, egyenlőtlenségek, egyenletrendszerek I. Egyenletek, egyenlőtlenségek, egyenletrendszerek I. DEFINÍCIÓ: (Nyitott mondat) Az olyan állítást, amelyben az alany helyén változó szerepel, nyitott mondatnak nevezzük. A nyitott mondatba írt változót

Részletesebben

Dualitás Dualitási tételek Általános LP feladat Komplementáris lazaság 2017/ Szegedi Tudományegyetem Informatikai Intézet

Dualitás Dualitási tételek Általános LP feladat Komplementáris lazaság 2017/ Szegedi Tudományegyetem Informatikai Intézet Operációkutatás I. 2017/2018-2. Szegedi Tudományegyetem Informatikai Intézet Számítógépes Optimalizálás Tanszék 7. Előadás Árazási interpretáció Tekintsük újra az erőforrás allokációs problémát (vonat

Részletesebben

Formális nyelvek - 5.

Formális nyelvek - 5. Formális nyelvek - 5. Csuhaj Varjú Erzsébet Algoritmusok és Alkalmazásaik Tanszék Informatikai Kar Eötvös Loránd Tudományegyetem H-1117 Budapest Pázmány Péter sétány 1/c E-mail: csuhaj@inf.elte.hu 1 Lineáris

Részletesebben

MŰSZAKI TUDOMÁNY AZ ÉSZAK-ALFÖLDI RÉGIÓBAN 2010

MŰSZAKI TUDOMÁNY AZ ÉSZAK-ALFÖLDI RÉGIÓBAN 2010 MŰSZAKI TUDOMÁNY AZ ÉSZAK-ALFÖLDI RÉGIÓBAN 2010 KONFERENCIA ELŐADÁSAI Nyíregyháza, 2010. május 19. Szerkesztette: Edited by Pokorádi László Kiadja: Debreceni Akadémiai Bizottság Műszaki Szakbizottsága

Részletesebben

Logika es sz am ıt aselm elet I. r esz Logika Harmadik el oad as 1/33

Logika es sz am ıt aselm elet I. r esz Logika Harmadik el oad as 1/33 1/33 Logika és számításelmélet I. rész Logika Harmadik előadás Tartalom 2/33 Elsőrendű logika bevezetés Az elsőrendű logika szintaxisa 3/33 Nulladrendű állítás Az ítéletlogikában nem foglalkoztunk az álĺıtások

Részletesebben

A STRATÉGIAALKOTÁS FOLYAMATA

A STRATÉGIAALKOTÁS FOLYAMATA BUDAPESTI CORVINUS EGYETEM VÁLLALATGAZDASÁGTAN INTÉZET VERSENYKÉPESSÉG KUTATÓ KÖZPONT Szabó Zsolt Roland: A STRATÉGIAALKOTÁS FOLYAMATA VERSENYBEN A VILÁGGAL 2004 2006 GAZDASÁGI VERSENYKÉPESSÉGÜNK VÁLLALATI

Részletesebben

FUNKCIONÁLIS PROGRAMNYELVEK IMPLEMENTÁCIÓJA

FUNKCIONÁLIS PROGRAMNYELVEK IMPLEMENTÁCIÓJA CSÖRNYEI ZOLTÁN FUNKCIONÁLIS PROGRAMNYELVEK IMPLEMENTÁCIÓJA I. rész BUDAPEST, 2010 ii c Csörnyei Zoltán, 2010. Minden jog fenntartva. Jelen könyvet, illetve annak részeit tilos reprodukálni, adatrögzítő

Részletesebben

A SZAKDOLGOZAT SZERKESZTÉSE

A SZAKDOLGOZAT SZERKESZTÉSE A SZAKDOLGOZAT SZERKESZTÉSE Főiskolai és BSc szakokon Szakdolgozat 1. A szakdolgozat nyelve: magyar vagy angol. 2. A szakdolgozat alakja: A4 formátum, bekötött, fekete színű kemény kötés. 3. A szakdolgozat

Részletesebben

A logikai következmény

A logikai következmény Logika 3 A logikai következmény A logika egyik feladata: helyes következtetési sémák kialakítása. Példa következtetésekre : Minden veréb madár. Minden madár gerinces. Minden veréb gerinces 1.Feltétel 2.Feltétel

Részletesebben

Differenciálegyenletek megoldása próbafüggvény-módszerrel

Differenciálegyenletek megoldása próbafüggvény-módszerrel Differenciálegyenletek megoldása próbafüggvény-módszerrel Ez még nem a végleges változat, utoljára módosítva: 2012. április 9.19:38. Elsőrendű egyenletek Legyen adott egy elsőrendű lineáris állandó együtthatós

Részletesebben

Programtervező informatikus MSc nappali tagozat ajánlott tanterv 2018

Programtervező informatikus MSc nappali tagozat ajánlott tanterv 2018 Előadás Előadás Programtervező informatikus MSc nappali tagozat ajánlott tanterv 2018 Szoftvertechnológia specializáció (törzsanyaggal együtt) Törzsanyag IPM-18KMTGY Kutatásmódszertan 0 2 Gy 1 3 1 0+2+1

Részletesebben

Programtervező informatikus MSc nappali tagozat ajánlott tanterv 2018

Programtervező informatikus MSc nappali tagozat ajánlott tanterv 2018 Előadás Előfeltétel Előadás Előfeltétel Programtervező informatikus MSc nappali tagozat ajánlott tanterv 018 Szoftvertechnológia specializáció (törzsanyaggal együtt) Törzsanyag IPM-18KMTGY Kutatásmódszertan

Részletesebben

Diszkrét matematika 2. estis képzés

Diszkrét matematika 2. estis képzés Diszkrét matematika 2. estis képzés 2018. tavasz 1. Diszkrét matematika 2. estis képzés 10. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék

Részletesebben

Predikátumkalkulus. 1. Bevezet. 2. Predikátumkalkulus, formalizálás. Predikátumkalkulus alapfogalmai, formalizálás, tagadás, logikailag igaz formulák.

Predikátumkalkulus. 1. Bevezet. 2. Predikátumkalkulus, formalizálás. Predikátumkalkulus alapfogalmai, formalizálás, tagadás, logikailag igaz formulák. Predikátumkalkulus Predikátumkalkulus alapfogalmai, formalizálás, tagadás, logikailag igaz formulák. 1. Bevezet Nézzük meg a következ két kijelentést: Minden almához tartozik egy fa, amir l leesett. Bármely

Részletesebben

Elsőrendű logika szintaktikája és szemantikája. Logika (3. gyakorlat) 0-adrendű szemantika 2009/10 II. félév 1 / 1

Elsőrendű logika szintaktikája és szemantikája. Logika (3. gyakorlat) 0-adrendű szemantika 2009/10 II. félév 1 / 1 Elsőrendű logika szintaktikája és szemantikája Logika és számításelmélet, 3. gyakorlat 2009/10 II. félév Logika (3. gyakorlat) 0-adrendű szemantika 2009/10 II. félév 1 / 1 Az elsőrendű logika Elemek egy

Részletesebben

Diszkrét matematika 2.C szakirány

Diszkrét matematika 2.C szakirány Diszkrét matematika 2.C szakirány 2015. ősz 1. Diszkrét matematika 2.C szakirány 3. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék 2015.

Részletesebben

II. Két speciális Fibonacci sorozat, szinguláris elemek, természetes indexelés

II. Két speciális Fibonacci sorozat, szinguláris elemek, természetes indexelés II. Két speciális Fibonacci sorozat, szinguláris elemek, természetes indexelés Nagyon könnyen megfigyelhetjük, hogy akármilyen két számmal elindítunk egy Fibonacci sorozatot, a sorozat egymást követő tagjainak

Részletesebben

f(x) vagy f(x) a (x x 0 )-t használjuk. lim melyekre Mivel itt ɛ > 0 tetszőlegesen kicsi, így a a = 0, a = a, ami ellentmondás, bizonyítva

f(x) vagy f(x) a (x x 0 )-t használjuk. lim melyekre Mivel itt ɛ > 0 tetszőlegesen kicsi, így a a = 0, a = a, ami ellentmondás, bizonyítva 6. FÜGGVÉNYEK HATÁRÉRTÉKE ÉS FOLYTONOSSÁGA 6.1 Függvény határértéke Egy D R halmaz torlódási pontjainak halmazát D -vel fogjuk jelölni. Definíció. Legyen f : D R R és legyen x 0 D (a D halmaz torlódási

Részletesebben

Diszkrét matematika 2.C szakirány

Diszkrét matematika 2.C szakirány Diszkrét matematika 2.C szakirány 2017. tavasz 1. Diszkrét matematika 2.C szakirány 3. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék 2017.

Részletesebben

Diszkrét matematika I.

Diszkrét matematika I. Diszkrét matematika I. középszint 2013 ősz 1. Diszkrét matematika I. középszint 8. előadás Mérai László merai@compalg.inf.elte.hu compalg.inf.elte.hu/ merai Komputeralgebra Tanszék 2013 ősz Kombinatorika

Részletesebben

Diszkrét matematika I.

Diszkrét matematika I. Diszkrét matematika I. középszint 2014. ősz 1. Diszkrét matematika I. középszint 10. előadás Mérai László diái alapján Komputeralgebra Tanszék 2014. ősz Felhívás Diszkrét matematika I. középszint 2014.

Részletesebben

2016, Funkcionális programozás

2016, Funkcionális programozás Funkcionális programozás 2. előadás Sapientia Egyetem, Műszaki és Humántudományok Tanszék Marosvásárhely, Románia mgyongyi@ms.sapientia.ro 2016, tavaszi félév Miről volt szó? Programozási paradigmák: imperatív,

Részletesebben

Algoritmusok helyességének bizonyítása. A Floyd-módszer

Algoritmusok helyességének bizonyítása. A Floyd-módszer Algoritmusok helyességének bizonyítása A Floyd-módszer Algoritmusok végrehajtása Egy A algoritmus esetében a változókat három változótípusról beszélhetünk, melyeket az X, Y és Z vektorokba csoportosítjuk

Részletesebben

Függvények július 13. f(x) = 1 x+x 2 f() = 1 ()+() 2 f(f(x)) = 1 (1 x+x 2 )+(1 x+x 2 ) 2 Rendezés után kapjuk, hogy:

Függvények július 13. f(x) = 1 x+x 2 f() = 1 ()+() 2 f(f(x)) = 1 (1 x+x 2 )+(1 x+x 2 ) 2 Rendezés után kapjuk, hogy: Függvények 015. július 1. 1. Feladat: Határozza meg a következ összetett függvényeket! f(x) = cos x + x g(x) = x f(g(x)) =? g(f(x)) =? Megoldás: Összetett függvény el állításához a küls függvényben a független

Részletesebben

minden x D esetén, akkor x 0 -at a függvény maximumhelyének mondjuk, f(x 0 )-at pedig az (abszolút) maximumértékének.

minden x D esetén, akkor x 0 -at a függvény maximumhelyének mondjuk, f(x 0 )-at pedig az (abszolút) maximumértékének. Függvények határértéke és folytonossága Egy f: D R R függvényt korlátosnak nevezünk, ha a függvényértékek halmaza korlátos. Ha f(x) f(x 0 ) teljesül minden x D esetén, akkor x 0 -at a függvény maximumhelyének

Részletesebben

A Formális nyelvek vizsga teljesítése. a) Normál A vizsgán 60 pont szerezhet, amely két 30 pontos részb l áll össze az alábbi módon:

A Formális nyelvek vizsga teljesítése. a) Normál A vizsgán 60 pont szerezhet, amely két 30 pontos részb l áll össze az alábbi módon: A Formális nyelvek vizsga teljesítése a) Normál A vizsgán 60 pont szerezhet, amely két 30 pontos részb l áll össze az alábbi módon: 1. Öt kis kérdés megválaszolása egyenként 6 pontért, melyet minimum 12

Részletesebben

MBNK12: Permutációk (el adásvázlat, április 11.) Maróti Miklós

MBNK12: Permutációk (el adásvázlat, április 11.) Maróti Miklós MBNK12: Permutációk el adásvázlat 2016 április 11 Maróti Miklós 1 Deníció Az A halmaz permutációin a π : A A bijektív leképezéseket értjünk Tetsz leges n pozitív egészre az {1 n} halmaz összes permutációinak

Részletesebben

ÍTÉLETKALKULUS (NULLADRENDŰ LOGIKA)

ÍTÉLETKALKULUS (NULLADRENDŰ LOGIKA) ÍTÉLETKALKULUS SZINTAXIS ÍTÉLETKALKULUS (NULLADRENDŰ LOGIKA) jelkészlet elválasztó jelek: ( ) logikai műveleti jelek: ítéletváltozók (logikai változók): p, q, r,... ítéletkonstansok: T, F szintaxis szabályai

Részletesebben

Program ekvivalencia és logikai relációk

Program ekvivalencia és logikai relációk EÖTVÖS LORÁND TUDOMÁNYEGYETEM Természettudományi kar Program ekvivalencia és logikai relációk Diplomamunka Szalai Zsolt matematikus hallgató Konzulens: Csörnyei Zoltán, egyetemi docens Dr., PhD. matematikus

Részletesebben

A törzsszámok sorozatáról

A törzsszámok sorozatáról A törzsszámok sorozatáról 6 = 2 3. A 7 nem bontható fel hasonló módon két tényez őre, ezért a 7-et törzsszámnak nevezik. Törzsszámnak [1] nevezzük az olyan pozitív egész számot, amely nem bontható fel

Részletesebben

Kifejezések. Kozsik Tamás. December 11, 2016

Kifejezések. Kozsik Tamás. December 11, 2016 Kifejezések Kozsik Tamás December 11, 2016 Kifejezés versus utasítás C/C++: kifejezés plusz pontosvessző: utasítás kiértékeli a kifejezést jellemzően: mellékhatása is van például: értékadás Ada: n = 5;

Részletesebben

A fordítóprogramok szerkezete. Kódoptimalizálás. A kódoptimalizálás célja. A szintézis menete valójában. Kódoptimalizálási lépések osztályozása

A fordítóprogramok szerkezete. Kódoptimalizálás. A kódoptimalizálás célja. A szintézis menete valójában. Kódoptimalizálási lépések osztályozása A fordítóprogramok szerkezete Forrásprogram Forrás-kezelő (source handler) Kódoptimalizálás Fordítóprogramok előadás (A,C,T szakirány) Lexikális elemző (scanner) Szintaktikus elemző (parser) Szemantikus

Részletesebben

Diszkrét matematika I.

Diszkrét matematika I. Diszkrét matematika I. középszint 2014. ősz 1. Diszkrét matematika I. középszint 2. előadás Mérai László diái alapján Komputeralgebra Tanszék 2014. ősz Matematikai logika Diszkrét matematika I. középszint

Részletesebben

6. Előadás. Megyesi László: Lineáris algebra, oldal. 6. előadás Bázis, dimenzió

6. Előadás. Megyesi László: Lineáris algebra, oldal. 6. előadás Bázis, dimenzió 6. Előadás Megyesi László: Lineáris algebra, 37. 41. oldal. Gondolkodnivalók Lineáris függetlenség 1. Gondolkodnivaló Legyen V valós számtest feletti vektortér. Igazolja, hogy ha a v 1, v 2,..., v n V

Részletesebben

Formális nyelvek - 9.

Formális nyelvek - 9. Formális nyelvek - 9. Csuhaj Varjú Erzsébet Algoritmusok és Alkalmazásaik Tanszék Informatikai Kar Eötvös Loránd Tudományegyetem H-1117 Budapest Pázmány Péter sétány 1/c E-mail: csuhaj@inf.elte.hu 1 Véges

Részletesebben

Az optimális megoldást adó algoritmusok

Az optimális megoldást adó algoritmusok Az optimális megoldást adó algoritmusok shop ütemezés esetén Ebben a fejezetben olyan modellekkel foglalkozunk, amelyekben a munkák több műveletből állnak. Speciálisan shop ütemezési problémákat vizsgálunk.

Részletesebben

2012. október 2 és 4. Dr. Vincze Szilvia

2012. október 2 és 4. Dr. Vincze Szilvia 2012. október 2 és 4. Dr. Vincze Szilvia Tartalomjegyzék 1.) Az egyváltozós valós függvény fogalma, műveletek 2.) Zérushely, polinomok zérushelye 3.) Korlátosság 4.) Monotonitás 5.) Szélsőérték 6.) Konvex

Részletesebben

Számelméleti alapfogalmak

Számelméleti alapfogalmak 1 Számelméleti alapfogalmak 1 Definíció Az a IN szám osztója a b IN számnak ha létezik c IN melyre a c = b Jelölése: a b 2 Példa a 0 bármely a számra teljesül, mivel c = 0 univerzálisan megfelel: a 0 =

Részletesebben

Nagy Gábor compalg.inf.elte.hu/ nagy

Nagy Gábor  compalg.inf.elte.hu/ nagy Diszkrét matematika 3. estis képzés 2018. ősz 1. Diszkrét matematika 3. estis képzés 9. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék

Részletesebben

Fordító részei. Fordító részei. Kód visszafejtés. Izsó Tamás szeptember 29. Izsó Tamás Fordító részei / 1

Fordító részei. Fordító részei. Kód visszafejtés. Izsó Tamás szeptember 29. Izsó Tamás Fordító részei / 1 Fordító részei Kód visszafejtés. Izsó Tamás 2016. szeptember 29. Izsó Tamás Fordító részei / 1 Section 1 Fordító részei Izsó Tamás Fordító részei / 2 Irodalom Izsó Tamás Fordító részei / 3 Irodalom Izsó

Részletesebben

8. Egyenletek, egyenlőtlenségek, egyenletrendszerek II.

8. Egyenletek, egyenlőtlenségek, egyenletrendszerek II. 8 Egyenletek, egyenlőtlenségek, egyenletrendszerek II Elméleti összefoglaló Az a + b+ c, a egyenletet másodfokú egyenletnek nevezzük A D b ac kifejezést az egyenlet diszkriminánsának nevezzük Ha D >, az

Részletesebben