Egy adott paraméter pozíción értelmes tömör Prolog kifejezések halmaza. Prologban általában nincs típushiba, a hiba hatására a hívás meghiúsul.
|
|
- Zsigmond Hajdu
- 6 évvel ezelőtt
- Látták:
Átírás
1 Típusos Prolog
2 Típus fogalma Egy adott paraméter pozíción értelmes tömör Prolog kifejezések halmaza Prologban általában nincs típushiba, a hiba hatására a hívás meghiúsul. tarcsaz(bejegyzes(nev,szam),szam). tarcsaz(b( Bela, ),Tone). no Hibajelzést csak beépített típusok esetében kapunk X is 1+alma Domain error in argument 2 of is/2 Expected expression, found alma Goal: _79 is 1+alma Sicstus Prologban nincs típusdeklaráció (csak az olvasást megkönnyítendő fejkomment).
3 Mercury típusnyelve Elsősorban adatstruktúrák kialakítására alkalmas. Beépített típusok Ismert primitív típusok char int float string number Predikátum típusok: A predikátumok argumentumainak típusát határozza meg pred, pred(t) :- pred is_all_uppercase(string) Függvény típusok: A függvények argumentumainak és visszatérési értékének típusát határozza meg func(t1,t2)=t :- func length(list(t))=int
4 Tuple n-esek :- type {Arg1, Arg2,, ArgN} ---> {{Arg1, Arg2,, ArgN}} Miért szükséges az két egymásba ágyazott kapcsos zárójel??? {} Általános funktornév prefix alakban: {} (Arg1,.. ArgN) De mint sznitaktikai édesítőszer : {Arg1, ArgN} {} ((Arg1,, ArgN)) Tehát egyargumentumú funktornak képződik le A típus deklarációban külső kapcsos záró jelek mentesítik a belsőket az alól, hogy a prolog édesítőszernek értelmezze azokat.
5 Univerzális típus Standard library std_util moduljában type_to_univ/2 és univ_to_type_2 predikátumokkal konvertálhatóak. Heterogén kollekciókban.
6 Felhasználói típusok Új típusokat a :-type deklarációval hozunk létre Megkülönböztetett unió becsomagolt adatok Megkülönböztett unió: véges sok különböző funktorú típusból képzett halmaz uniója Mercury-ban csak megkülönböztetett uniók használhatóak. Sicstus Prologban megengedett legfeljebb kevésbé hatékony :-type t--->s1(t1,t2,...,tn1);...; sm(t1,t2,...,tnm). ni=0 esetén constans
7 :-type tree ---> leaf(integer);node(tree,tree). sum_tree(tree, S):- Tree=leaf(Value), S=Value. sum_tree(tree, S):- Tree=node(Left,Right), sum_tree(left, S1), sum_tree(right, S2), S is S1 +S2. Miért jó ez nekünk???
8 Kényelmes node(4,node(3,4)) alak helyett node(leaf(4),node(leaf(3), leaf(4))) alakot kell alkalmaznunk első alakhoz sum_tree2(tree, S):- integer(tree), S=Tree. klózra kéne kicserélni az elsőt. Ezt már nem lehet visszafele számolásra alkalmazni. Ez Mercury-ban nem is megengedett.
9 Sicstus-ban derive(x, 1). derive(c, 0):-integer(C). derive(u+v, DU+DV):- derive(u,du), derive(v,dv). Jó volna ha ugyan ezzel tudnánk integrálni is!
10 Megoldás: Csomagoljuk be a constanst! derive(x, 1). derive(const(c), 0). derive(u+v, DU+DV):- derive(u,du), derive(v,dv). Így viszont emberi szemmel nehezebben olvashatóak a kifejezések: x+3 helyett x+const(3)
11 További alkalmazások a megkülönböztetett uniókra: Enumeráció szerű: :- type fruit ---> ; apple ; orange ; banana. Rekord szerű: :- type employee ---> employee( name ::string, age ::int, department ::string ).
12 Polymorf :- type pair(t1,t2) ---> T1 - T2. first(p::pair(string,integer),f::string) :- P = First Sec, F = First.
13 Ekvivalencia típus Egyszerű típus szinonima :- type money==int. Egy adott szerkezet megvalósítását írja le: :- type assoc_list(keytype, ValueType) == list(pair(keytype),valuetype) Nem lehet rekurzív! Absztrakt típusok A típus implementációja hiányzik. Modulok interface részében használatosak :- type t1. :- type t2(t1,t2).
14 Módok A behelyettesítettségi állapottól függően fogalmazhatjuk meg a klózokat. in: behelyettesített változót várunk out: szabad változót várunk, és a klóz helyettesíti be tömör kifejezéssé. Behelyettesítettség Típus fa: vagy-csomópont : típusokat reprezentálnak és-csomópontok : konstruktorokat reprezentálnak Behelyettesítettségi fa: A vagy-csomópontokhoz rendel behelyettesítettségi információt. free Szabad ground - Tömör.
15 A felhasználó neveket deklarálhat az egyes behelyettesítettségi fáknak :- inst listskel == bound([]; [free listskel]). [A,B] Kielégíti [H T] nem elégíti ki, mert a váz csak egy része ismert. [A,2] nem elégíti ki, mert van egy tömör elem [A,A] nem elégíti ki, mert a két elem nem független egymástól A fenti kifejezéssel ekvivalens a bound/1 szintaktikai édesítőszere: :- inst listskel ---> [] ; [free listskel].
16 Másik példa, opcionális típus behelyettesíttettségi fája: :- inst maybeskel == bound(no;yes(ground)). vagy :- inst maybeskel ---> no;yes(ground).
17 Parametrizált behelyettesíttettségi fák: :- inst listskel(inst) = bound([];[inst listskel(inst)]). :- inst maybeskel(inst) ---> no; yes(inst).
18 Módok általánosabban Behelyettesítettségi állapot megváltozását írják le a klóz végrehajtása alatt. :- mode m == inst1 >> inst2. Az beépített alapmódok móddeklarációja ezek után: :- mode in == ground >> ground. :- mode out == free >> ground.
19 Módok átnevezése: :- mode (+) == in. :- mode (-) == out. Parametrizált módok: :- mode in(inst) == Inst >> Inst. :- mode out(inst) == free >> Inst.
20 Predikatum és Függvénymód deklaráció: :- mode out_listskel == free >> listskel. :- mode in_listskel == listskel >> listskel. :- func length(list(t)) = int :- mode length(in_listskel)=out :- mode length(out_listskel)=in :- pred append(list(t), list(t), list(t)). :- mode append(in, in, out). :- mode append(out, out, in). Mind a függvényeknek mind a predikátumoknak több módja is lehet
21 A length függvény esetében használhatjuk a standard library parametrikus in/1, és out/1 módját :- func length(list(t)) = int :- mode length(in(listskel))=out :- mode length(out(listskel))=in
22 Típusosztályok Olyan típusok halmaza melyre biztosított, hogy adott függvények és predikátumok meghívhatóak, alkalmazhatóak. :- typeclass point(t) where [ pred coords(t, float, float), mode coords(in, out, out), func translate(t, float, float) = T ].
23 Típust a típusosztályba az instance deklarációval vehetünk fel. :- type coordinate --->coordinate( float, float ). :- instance point(coordinate) where[ Pred(coords/3) is coordinate_coords, Func(translate/3) is coordinate_translate ].
24 :- pred coordinate_coords(coordinate, float, float). :- mode coordinate_coords(in, out, out). coordinate_coords(coordinate(x,y), X, Y). :- func coordinate_translate(coordinate, float, float)= coordinate. coordinate_translate(coordinate(x,y), Dx, Dy)= coordinate(x+dx,y+dy).
25 Hasonlóan felvehetjük a színes pont típust is a pont típusosztályba :- type rgb ---> rgb(int,int,int). :- type coloured_coordinate --->coordinate( float, float, rgb ). :- instance point(coloured_coordinate) where[ Pred(coords/3) is coloured_coordinate_coords, Func(translate/3) is coloured_coordinate_translate ].
26 :- pred coloured_coordinate_coords(coloured_coordinate, float, float). :- mode coloured_coordinate_coords(in, out, out). coloured_coordinate_coords(coloured_coordinate(x,y,_), X, Y). :- func coloured_coordinate_translate(coloured_coordinate, float, float)= coloured_coordinate. coloured_coordinate_translate(coloured_coordinate(x,y,c), Dx, Dy)= coloured_coordinate(x+dx,y+dy,c).
27 Típusosztály korlát predikátumokra és függvényekre :- pred distance(p1, P2, float) <= (point(p1),point(p2)). :- mode distance(in, in, out). distance(a, B, Distance) :- coords(a, Xa, Ya), coords(b, Xb, Yb), XDist is Xa-Xb, YDist is Ya-Yb, Distance = sqrt(xdist* XDist+ YDist* YDist).
28 Típusosztály korlát típusosztályra :- typeclass ring(t) where [ func zero=(t::out), func one=(t::out), func plus(t::in, T::in)=(T::out), func mult(t::in, T::in)=(T::out), func negative(t::in)=(t::out) ]. :- typeclass euclidean(t) <= ring(t) where [ func div(t::in, T::in)=(T::out), func mod(t::in, T::in)=(T::out) ]. Az euclidean osztályba sorolt típusoknak ki kell elégíteniük a gyűrűbe tartozás feltételét is. Ismerős? Tulajdonképpen öröklődésről beszélünk.
29 Ciao Prolog típusnyelve Típusok szemantikájának meghatározására is lehetőséget ad. Tulajdonságok (Properties) Speciális predikátumok, melyek eleget tesznek annak a feltételnek, hogy a behelyettesítettségi állapotot nem változtatják meg. :- prop intlist(l). intlist([]). intlist([x R]):-int(X),intlist(R). sumlist([],0). sumlist([x R],S):- sumlist(r,ps), S is PS+X. :- calls sumlist(l,n) : intlist(l). A hívások során elvégzi az L argumentumra az intlist/1 ellenőrzést
30 Adott az alábbi predikátum: string_concat([],l,l). string_concat([x Xs],L,[X NL]):- string_concat(xs,l,nl). Mely ASCII kódban ábrázolt karakterek listájából álló stringet konkatenál.
31 :-success string_concat(a,b,c) => (compatible_with_intlist(a), compatible_with_intlist(b), compatible_with_intlist(c)). :-prop compatible_with_intlist/1. compatible_with_intlist(x) :- var(x). compatible_with_intlist(x) :- nonvar(x), compatible_with_intlist_aux(x). compatible_with_intlist_aux([]). compatible_with_intlist_aux([x T]) :- int_compat(x), compatible_with_intlist_aux(t). int_compat(x) :- var(x). int_compat(x) :- nonvar(x), integer(x).
32 Láthatjuk, hogy a compat előtag azt jeleni, hogy megvizsgájuk, hogy az argumentum változó e, ha nem változó, akkor valamilyen más tulajdonságot vizsgálunk az argumentumra (pl.: intlist/1) Erre használhatjuk a standard könyvtár ilyen nevű tulajdonságát: :-success string_concat(a,b,c) => (compat(intlist(a)), compat(intlist(b)), compat(intlist(c))).
33 Felhasznált irodalom: - The Mercury Language Reference Manual - The Ciao Prolog System - Reference Manual - Benkő Tamás: A Mercury nagyhatékonyságú LP megvalósítás
34
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
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.
Generikus Típusok, Kollekciók
Generikus Típusok, Kollekciók Tóth Zsolt Miskolci Egyetem 2013 Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 1 / 26 Tartalomjegyzék 1 Enumeráció 2 Generikus Típusok 3 Kollekciók System.Collections
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
Bevezetés a programozásba II. 5. Előadás: Másoló konstruktor, túlterhelés, operátorok
Bevezetés a programozásba II 5. Előadás: Másoló konstruktor, túlterhelés, operátorok Emlékeztető struct Vektor { int meret, *mut; Vektor(int meret); int szamlal(int mit); }; int Vektor::szamlal(int mit)
Programozási nyelvek Java
Programozási nyelvek Java 11.gyakorlat Operációsrendszertől függő tulajdonságok PATH elválasztó Unix ":" Windows ";" final String PATH_SEPARATOR = File.pathSeparator; Ugyanaz, csak karakterkent final char
Programozás II. 2. Dr. Iványi Péter
Programozás II. 2. Dr. Iványi Péter 1 C++ Bjarne Stroustrup, Bell Laboratórium Első implementáció, 1983 Kezdetben csak precompiler volt C++ konstrukciót C-re fordította A kiterjesztés alapján ismerte fel:.cpp.cc.c
Bevezetés a programozásba Előadás: Tagfüggvények, osztály, objektum
Bevezetés a programozásba 2 1. Előadás: Tagfüggvények, osztály, objektum Ismétlés int main() { string s; s; s= bla ; cout
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
Programozási nyelvek Java
Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 9. előadás Interface - típust vezet be, de osztálypéldány nem készíthető belőle (statikus típust ad) - több osztály is
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
A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi.
Függvények 1.Függvények...1 1.1.A függvény deníció szintaxisa... 1..Függvények érték visszatérítése...3 1.3.Környezettel kapcsolatos kérdések...4 1.4.Lokális változók használata...4 1.5.Rekurzív hívások...5.kód
file./script.sh > Bourne-Again shell script text executable << tartalmat néz >>
I. Alapok Interaktív shell-ben vagy shell-scriptben megadott karaktersorozat feldolgozásakor az első lépés a szavakra tördelés. A szavakra tördelés a következő metakarakterek mentén zajlik: & ; ( ) < >
Web-technológia PHP-vel
Web-technológia PHP-vel A PHP programnyelv 2, futtatókörnyezet beálĺıtások Erős Bence February 26, 2013 Erős Bence () Web-technológia PHP-vel February 26, 2013 1 / 19 Szuperglobális változók $ GET : request
XPath. dr. Paller Gábor. XML technológiák
XPath dr. Paller Gábor XPath Az XPath nyelv más specifikációkat szolgál ki. Elsődlegesen az XSLT céljaira készült. Funkciói XML dokumentum részeinek kiválasztása, címzése. Mintaillesztés (van-e olyan XML
Logika nyelvészeknek, 12. óra A típuselmélet alapjai. Lehetőség van a kvantorfogalom mellett a funktorfogalom általánosítására is.
Logika nyelvészeknek, 12. óra A típuselmélet alapjai Lehetőség van a kvantorfogalom mellett a funktorfogalom általánosítására is. Az L 1 elsőrendű nyelvben csak bizonyos típusú funktoraink voltak: ami
2018, Funkcionális programozás
Funkcionális programozás 3. előadás Sapientia Egyetem, Matematika-Informatika Tanszék Marosvásárhely, Románia mgyongyi@ms.sapientia.ro 2018, tavaszi félév Miről volt szó? A Haskell programozási nyelv főbb
C# Nyelvi Elemei. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei / 18
C# Nyelvi Elemei Tóth Zsolt Miskolci Egyetem 2013 Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei 2013 1 / 18 Tartalomjegyzék 1 Object 2 Típusok 3 String 4 RegEx Tóth Zsolt (Miskolci Egyetem) C# Nyelvi
Imperatív programozás
Imperatív programozás 6. Előadás Python típusok (folytatás) Függvények Típusok + műveleteik Listák - mutable (változtatható) - heterogén lista >>> lista = ["szo", 12, 3.5] >>> lista[1] 12 >>> lista[1:3]
A C programozási nyelv I. Bevezetés
A C programozási nyelv I. Bevezetés Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv I. (bevezetés) CBEV1 / 1 A C nyelv története Dennis M. Ritchie AT&T Lab., 1972 rendszerprogramozás,
Visszalépéses keresés számintervallum felsorolása
Visszalépéses keresés számintervallum felsorolása Prolog végrehajtás LP-117 dec(j) felsorolta a 0 és 9 közötti egész számokat Általánosítás: soroljuk fel az N és M közötti egészeket (N és M maguk is egészek)
7. Laboratóriumi gyakorlat: Vezérlési szerkezetek II.
7. Laboratóriumi gyakorlat: Vezérlési szerkezetek II. A gyakorlat célja: 1. A shell vezérlő szerkezetei használatának gyakorlása. A használt vezérlő szerkezetek: if/else/fi, for, while while, select, case,
Programozás alapjai. 5. előadás
5. előadás Wagner György Általános Informatikai Tanszék Cserélve kiválasztásos rendezés (1) A minimum-maximum keresés elvére épül. Ismétlés: minimum keresés A halmazból egy tetszőleges elemet kinevezünk
1. Egyszerű (primitív) típusok. 2. Referencia típusok
II. A Java nyelv eszközei 1. Milyen eszközöket nyújt a Java a programozóknak Korábban már említettük, hogy a Java a C nyelvből alakult ki, ezért a C, C++ nyelvben járatos programozóknak nem fog nehézséget
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
7. fejezet: Mutatók és tömbök
7. fejezet: Mutatók és tömbök Minden komolyabb programozási nyelvben vannak tömbök, amelyek gondos kezekben komoly fegyvert jelenthetnek. Először is tanuljunk meg tömböt deklarálni! //Tömbök használata
Járműfedélzeti rendszerek II. 3. előadás Dr. Bécsi Tamás
Járműfedélzeti rendszerek II. 3. előadás Dr. Bécsi Tamás 5.3. Mutatók,tömbök A mutató vagy pointer olyan változó, amely egy másik változó címét tartalmazza. A C nyelvű programokban gyakran használják a
Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni:
Excel objektumok Az excelben az osztályokat úgynevezett class modulokként hozzuk létre. Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni: View-ba
The modular mitmót system. DPY kijelző kártya C API
The modular mitmót system DPY kijelző kártya C API Dokumentációkód: -D 01.0.0.0 Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék Beágyazott Információs Rendszerek
Programozás C++ -ban 2007/7
Programozás C++ -ban 2007/7 1. Másoló konstruktor Az egyik legnehezebben érthető fogalom C++ -ban a másoló konstruktor, vagy angolul "copy-constructor". Ez a konstruktor fontos szerepet játszik az argumentum
Oktatási segédlet 2014
Oktatási segédlet 2014 A kutatás a TÁMOP 4.2.4.A/2-11-1-2012- 0001 azonosító számú Nemzeti Kiválóság Program Hazai hallgatói, illetve kutatói személyi támogatást biztosító rendszer kidolgozása és működtetése
A C programozási nyelv I. Bevezetés
A C programozási nyelv I. Bevezetés Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv I. (bevezetés) CBEV1 / 1 A C nyelv története Dennis M. Ritchie AT&T Lab., 1972 rendszerprogramozás,
1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon
1. Template (sablon) 1.1. Függvénysablon Maximum függvény megvalósítása függvénynév túlterheléssel. i n l i n e f l o a t Max ( f l o a t a, f l o a t b ) { return a>b? a : b ; i n l i n e double Max (
Válogatott fejezetek a logikai programozásból ASP. Answer Set Programming Kelemen Attila
ASP 1 Kedvcsináló N királynő 3+1 sorban index(1..n). % minden sorban pontosan 1 királynő van 1{q(X,Y):index(X)}1 :- index(y). % az rossz, ha ugyanabban az oszlopban 2 királynő van :- index(x; Y1; Y2),
A C# programozási nyelv alapjai
A C# programozási nyelv alapjai Tisztán objektum-orientált Kis- és nagybetűket megkülönbözteti Ötvözi a C++, Delphi, Java programozási nyelvek pozitívumait.net futtatókörnyezet Visual Studio fejlesztőkörnyezet
Szkriptnyelvek. 1. UNIX shell
Szkriptnyelvek 1. UNIX shell Szkriptek futtatása Parancsértelmez ő shell script neve paraméterek shell script neve paraméterek Ebben az esetben a szkript tartalmazza a parancsértelmezőt: #!/bin/bash Szkriptek
Programozás C és C++ -ban
Programozás C és C++ -ban 2. További különbségek a C és C++ között 2.1 Igaz és hamis A C++ programozási nyelv a C-hez hasonlóan definiál néhány alap adattípust: char int float double Ugyanakkor egy új
Java és web programozás
Budapesti Műszaki Egyetem 2015. 02. 11. 2. Előadás Mese Néhány programozási módszer: Idők kezdetén való programozás Struktúrált Moduláris Funkcionális Objektum-orientált... Mese Néhány programozási módszer:
Memóriagazdálkodás. Kódgenerálás. Kódoptimalizálás
Kódgenerálás Memóriagazdálkodás Kódgenerálás program prológus és epilógus értékadások fordítása kifejezések fordítása vezérlési szerkezetek fordítása Kódoptimalizálás L ATG E > TE' E' > + @StPushAX T @StPopBX
Programozás C++ -ban 2007/1
Programozás C++ -ban 2007/1 1. Különbségek a C nyelvhez képest Több alapvető különbség van a C és a C++ programozási nyelvek szintaxisában. A programozó szempontjából ezek a különbségek könnyítik a programozó
Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba
Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba Témavezető: Horváth Zoltán és Simon Thompson OTDK 2007, Miskolc Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba OTDK
Szövegek C++ -ban, a string osztály
Szövegek C++ -ban, a string osztály A string osztály a Szabványos C++ könyvtár (Standard Template Library) része és bár az objektum-orientált programozásról, az osztályokról, csak később esik szó, a string
Apple Swift kurzus 3. gyakorlat
Készítette: Jánki Zoltán Richárd Dátum: 2016.09.20. Apple Swift kurzus 3. gyakorlat Kollekciók: Tömb: - let array = [] - üres konstans tömb - var array = [] - üres változó tömb - var array = [String]()
Programozás burritokkal
Monádok (folytatás) Programozás burritokkal [2..21] Programozás monádokkal: Programstrukturálás type IO α = World (α, World) -- putstr :: String IO () -- getline :: IO String (>>=) :: IO α (α IO β) IO
Python tanfolyam Python bevezető I. rész
Python tanfolyam Python bevezető I. rész Mai tematika Amiről szó lesz (most): Interpretált vs. fordított nyelvek, GC Szintakszis Alaptípusok Control flow: szekvencia, szelekció, iteráció... Függvények
Java és web programozás
Budapesti M szaki Egyetem 2013. szeptember 18. 2. El adás Komplex szám public class Complex { private float repart_; private float impart_; public Complex() { repart_ = 0; impart_ = 0; public Complex(float
Programozási nyelvek Java
statikus programszerkezet Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 2. előadás csomag könyvtárak könyvtárak forrásfájlok bájtkódok (.java) (.class) primitív osztály
Gyártórendszerek modellezése: MILP modell PNS feladatokhoz
Gyártórendszerek modellezése MILP modell PNS feladatokhoz 1 Pannon Egyetem M szaki Informatikai Kar Számítástudomány Alkalmazása Tanszék Utolsó frissítés: 2008. november 16. 1 hegyhati@dcs.uni-pannon.hu
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;
Operációs Rendszerek II. labor. 2. alkalom
Operációs Rendszerek II. labor 2. alkalom Mai témák (e)grep Shell programozás (részletesebben, példákon keresztül) grep Alapvető működés: mintákat keres a bemeneti csatorna (STDIN vagy fájl) soraiban,
Algoritmizálás és adatmodellezés tanítása 1. előadás
Algoritmizálás és adatmodellezés tanítása 1. előadás Algoritmus-leíró eszközök Folyamatábra Irányított gráf, amely csomópontokból és őket összekötő élekből áll, egyetlen induló és befejező éle van, az
Függvény pointer. Feladat: Egy tömbben soroljunk fel függvényeket, és hívjuk meg valahányszor.
Függvény pointer Több feladat közül futási időben döntöm el, hogy melyiket hajtom végre. A függvényre mutató pointer a függvény kódjának a címére mutat, azon keresztül meghívhatom a függvényt. A pointernek
A C++ szigorúbban kezeli a típuseltéréseket, mint a C nyelv Lehetséges típuskonverziók:
Típuskonverzió a C++ nyelvben Miskolci Egyetem Általános Informatikai Tanszék Típus konverzió a C++ nyelvben CPP3 / 1 Lehetséges konverziók A C++ szigorúbban kezeli a típuseltéréseket, mint a C nyelv Lehetséges
Programozás C++ -ban
Programozás C++ -ban 6. Konstansok A C nyelvben konstansokat makróval is deklarálhatunk. Ebben az esetben mindenhol ahol a makró előfordul a fordító a definiált értéket behelyettesíti a makró helyére.
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
Máté: Assembly programozás
Paraméter másutt is előfordulhat a makró törzsben, nemcsak az operandus részen, pl.: PL macro p1,p2 mov ax,p1 P2 p1 PL mov INC Adat, INC ax,adat Adat A &, %,! karakterek továbbá a és ;; speciális szerepet
Bevezetés a programozásba. 9. Előadás: Rekordok
Bevezetés a programozásba 9. Előadás: Rekordok ISMÉTLÉS Függvényhívás #include #include #include #include using using namespace namespace std; std; double double terulet(double
Bevezetés a programozásba. 8. Előadás: Függvények 2.
Bevezetés a programozásba 8. Előadás: Függvények 2. ISMÉTLÉS Helló #include using namespace std; int main() cout
Tulajdonságalapú tesztelés
Tulajdonságalapú tesztelés QuickCheck A QuickCheck Haskell programok automatikus, tulajdonságalapú tesztelésére használható. Programspecifikáció: program által teljesítendő tulajdonságok Nagy számú, a
Adatbázisok* tulajdonságai
Gazdasági folyamatok térbeli elemzése 4. előadás 2010. 10. 05. Adatbázisok* tulajdonságai Rendezett, logikailag összefüggő és meghatározott szempont szerint tárolt adatok és/vagy információk halmaza Az
Komputeralgebra rendszerek
Komputeralgebra rendszerek III. Változók Czirbusz Sándor czirbusz@gmail.com Komputeralgebra Tanszék ELTE Informatika Kar 2009-2010 ősz Index I 1 Szimbolikus konstansok kezelés A konstansok Nevek levédése
2019, Funkcionális programozás. 5. el adás. MÁRTON Gyöngyvér
Funkcionális programozás 5. 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ó? a Haskell kiértékelési stratégiája
van neve lehetnek bemeneti paraméterei (argumentumai) lehet visszatérési értéke a függvényt úgy használjuk, hogy meghívjuk
függvények ismétlése lista fogalma, használata Game of Life program (listák használatának gyakorlása) listák másolása (alap szintű, teljes körű) Reversi 2 Emlékeztető a függvények lényegében mini-programok,
Komputeralgebra rendszerek
Komputeralgebra rendszerek III. Változók Czirbusz Sándor czirbusz@gmail.com Komputeralgebra Tanszék ELTE Informatika Kar 2009-2010 ősz Index I 1 Szimbolikus konstansok kezelés A konstansok Nevek levédése
Forráskód formázási szabályok
Forráskód formázási szabályok Írta: Halmai Csongor, Webcenter Bt. A php és html kódrészletek Ugyanazon fájlon belül nem szerepelhet php kód és html tartalom. E kettő különválasztására smarty-t vagy más
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
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
Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java
Függvények, csomagok Csomagok Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges számú osztályt tartalmazhat Pl.: java.util.scanner Könyvtárhierarhiát fed: Pl.: java/util/scanner.java Célja:
Írjon olyan programot a standard könyvtár alkalmazásával, amely konzolról megadott valós adatokból meghatározza és kiírja a minimális értékűt!
Írjon olyan programot a standard könyvtár alkalmazásával, amely konzolról megadott valós adatokból meghatározza és kiírja a minimális értékűt! valós adatokat növekvő sorrendbe rendezi és egy sorba kiírja
Objective-C PPKE-ITK 2013. 02. 14.
Objective-C PPKE-ITK 2013. 02. 14. Objective-C bevezetés "Objective-C is a superset of C" Header:.h, osztálydeklarációk Implementáció:.m, osztályok implementációja Objective-C++:.mm Framework: Cocoa Szintaxis
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 +
Programozási nyelvek (ADA)
Programozási nyelvek (ADA) Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 1. előadás Hasznos weboldal http://kto.web.elte.hu Program felépítése Programegységek (program unit) eljárások (procedure)
Programozás C++ -ban
Programozás C++ -ban 4. Bevezetés az osztályokba 4.1 Az adatokhoz való hozzáférés ellenőrzése Egy C programban a struktúrák minden része mindig elérhető. Ugyanakkor ez nem a legkedvezőbb helyzet. Több
Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar
Programozás I. 3. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 1 Primitív típusok Típus neve Érték Alap érték Foglalt tár Intervallum byte Előjeles egész 0 8 bit
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:
Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós május 6. Széchenyi István Egyetem, Gy r
Programozás (GKxB_INTM021) Széchenyi István Egyetem, Gy r 2018. május 6. Parancssori paraméterek Parancssorban történ programindításkor a program nevét követ en szóközökkel elválasztva paraméterek (command
C++ referencia. Izsó Tamás február 17. A C++ nyelvben nagyon sok félreértés van a referenciával kapcsolatban. A Legyakoribb hibák:
C++ referencia Izsó Tamás 2017. február 17. 1. Bevezetés A C++ nyelvben nagyon sok félreértés van a referenciával kapcsolatban. A Legyakoribb hibák: Sokan összetévesztik a pointerrel. Keveset alkalmazzák
Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Függvények. Dr. Bécsi Tamás 6. Előadás
Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Függvények Dr. Bécsi Tamás 6. Előadás Bevezetés Egy idő után az egyetlen main(){ függvénnyel megírt programunk túl nagy méretű lesz. Vannak
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,
2011.11.29. JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése
Tartalom Integrált fejlesztés Java platformon JUnit JUnit használata Tesztelési technikák Demo 2 A specifikáció alapján teszteljük a program egyes részeit, klasszikus V-modell szerint Minden olyan metódust,
Adattípusok, vezérlési szerkezetek. Informatika Szabó Adrienn szeptember 14.
Informatika 1 2011 Második előadás, vezérlési szerkezetek Szabó Adrienn 2011. szeptember 14. Tartalom Algoritmusok, vezérlési szerkezetek If - else: elágazás While ciklus For ciklus Egyszerű típusok Összetett
Adatbázisrendszerek. adatbázisokban. Objektumorientált és objektum-relációs adatbázisok április 24.
Adatbázisrendszerek Objektum-orientáltság Objektumorientált és objektum-relációs 2018. április 24. Előadás vázlata 2 Objektumorientált Az ODMG (Object Database Management Group) szerepe Az SQL objektumorientált
Rekurzió. Dr. Iványi Péter
Rekurzió Dr. Iványi Péter 1 Függvényhívás void f3(int a3) { printf( %d,a3); } void f2(int a2) { f3(a2); a2 = (a2+1); } void f1() { int a1 = 1; int b1; b1 = f2(a1); } 2 Függvényhívás void f3(int a3) { printf(
OOP #14 (referencia-elv)
OOP #14 (referencia-elv) v1.0 2003.03.19. 21:22:00 Eszterházy Károly Főiskola Információtechnológia tsz. Hernyák Zoltán adj. e-mail: aroan@ektf.hu web: http://aries.ektf.hu/~aroan OOP OOP_14-1 - E jegyzet
Debreceni Egyetem Matematikai és Informatikai Intézet. 13. Védelem
13. Védelem A védelem célja Védelmi tartományok Hozzáférési mátrixok (access matrix, AM) A hozzáférési mátrixok implementációja A hozzáférési jogok visszavonása Képesség-alapú rendszerek Nyelvbe ágyazott
Java II. I A Java programozási nyelv alapelemei
Java II. I A Java programozási nyelv alapelemei Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2008. 02. 19. Java II.: Alapelemek JAVA2 / 1 A Java formalizmusa A C, illetve az annak
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
malloc free malloc free int sum(int a[4]) { return a[0] + a[1] + a[2] + a[3]; }
malloc free malloc free int sum(int a[4]) { return a[0] + a[1] + a[2] + a[3]; int main() { int b[4] = {1, 2, 3, 4}; printf("%d\n", sum(b)); return 0; \ \t \n \r \r\n \r string char* \0 a l m a \0 "alma"
Programozás C és C++ -ban
Programozás C és C++ -ban 1. Különbségek a C nyelvhez képest Több alapvető különbség van a C és a C++ programozási nyelvek szintaxisában. A programozó szempontjából ezek a különbségek könnyítik a programozó
Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010
Programozási technikák Pál László Sapientia EMTE, Csíkszereda, 2009/2010 Előadás tematika 1. Pascal ismétlés, kiegészítések 2. Objektum orientált programozás (OOP) 3. Delphi környezet 4. Komponensek bemutatása
Absztrakt adattípus - algebrai specifikáció - Lists (paraméteres) module imports end exports parameters variables sorts operations equations
Absztrakt adattípus -algebrai specifikáció -Lists (paraméteres) module Lists imports Booleans, Naturals parameters Items sorts Item operations erroritem : Item eq? : Item, Item Boolean variables a, b,
Adatbázis Rendszerek II. 5. PLSQL Csomagok 16/1B IT MAN
Adatbázis Rendszerek II. 5. PLSQL Csomagok 16/1B IT MAN B IT v: 2016.03.03 MAN Csomagok A DBMS csomagok a PL/SQL alkalmazások fejlesztését segítik, bennük tároljuk a létrehozott programok kódjait. A specifikációs
Tisztán funkcionális adatszerkezetek (folytatás)
Tisztán funkcionális adatszerkezetek (folytatás) FingerTree (intuíció) [2..26] FingerTree (intuíció) [3..26] FingerTree (intuíció) [4..26] FingerTree (intuíció) [5..26] FingerTree (intuíció) [6..26] FingerTree
Fejlett programozási nyelvek C++ Iterátorok
Fejlett programozási nyelvek C++ Iterátorok 10. előadás Antal Margit 2009 slide 1 Témakörök I. Bevezetés II. Iterátor definíció III. Iterátorok jellemzői IV. Iterátorkategóriák V. Iterátor adapterek slide
Programozás III CSOMAGOK. Az összetartozó osztályok és interfészek egy csomagba (package) kerülnek.
Programozás III CSOMAGOK Az összetartozó osztályok és interfészek egy csomagba (package) kerülnek. A Java is csomagok halmaza: csomagokban van a fejlesztő környezet és az osztálykönyvtárak is: rt.jar fájl
Programozás 6. Dr. Iványi Péter
Programozás 6. Dr. Iványi Péter 1 Előfeldolgozás része Makrók A forrás kódban elvégzi a helyettesítéseket a fordító Csak egyszer végez helyettesítést Nem olyan makrók, mint a LISP vagy Scheme esetén Csak
Delphi programozás IV.
Delphi programozás IV. Szöveg konvertálása egész számmá A Turbo Delphi többféle lehetőséget biztosít arra, hogy egy szöveges változó tartalmát egész számmá konvertáljunk. A konvertálandó szövegnek egy
C programozás. 6 óra Függvények, függvényszerű makrók, globális és
C programozás 6 óra Függvények, függvényszerű makrók, globális és lokális változók 1.Azonosítók A program bizonyos összetevőire névvel (azonosító) hivatkozunk Első karakter: _ vagy betű (csak ez lehet,
Komputeralgebra Rendszerek
Komputeralgebra Rendszerek A MAPLE és a SAGE felépítése Czirbusz Sándor ELTE IK, Komputeralgebra Tanszék 2015. február 17. TARTALOMJEGYZÉK 1 of 1 TARTALOMJEGYZÉK TARTALOMJEGYZÉK 2 of 1 A MAPLE 3 of 1 ÖSSZETEVŐK
Programozás II. 4. Dr. Iványi Péter
Programozás II. 4. Dr. Iványi Péter 1 inline függvények Bizonyos függvények annyira rövidek, hogy nem biztos hogy a fordító függvényhívást fordít, hanem inkább az adott sorba beilleszti a kódot. #include