S2-01 Funkcionális nyelvek alapfogalmai
|
|
- Attila Varga
- 5 évvel ezelőtt
- Látták:
Átírás
1 S2-01 Funkcionális nyelvek alapfogalmai Tartalom 1. Funkcionális nyelvek alapfogalmai Modell Kiértékelés Curry-zés Magasabbrendű függvények Listák Tisztaság 2. Típusok Algebrai adattípusok Típusosztályok Típuskonstruktorok Kindok 3. Monadikus programozás 4. További források 1.Funkcionális nyelvek alapfogalmai 1.1 Modell Funkcionális programozási paradigma, nyelvek Nem az algoritmust írjuk le = függvényekkel specifikáljuk a feladatot Deklaratív nyelvek családjába tartozik Imperatív nyelvek: HOGYAN csinálja meg a feladatot a program, utasítások írása, sokszor a memóriát is mi kezeljük Deklaratív nyelvek: MIT csináljon a program, magát a feladatot adjuk meg Minden program alapegysége a függvény Maga a program, programmodul az egy függvényhalmaz Program végrehajtása kezdeti függvénykifejezés (main) kiértékelése Matematikai számítási modellje a lambda-kalkulus (Érdekesség: szokták lambda-kalkulust a funkcionális nyelvek assembly-jének is hívni) Nincsenek változók, nincsen állapot, minden immutable, minden másolódik Iteráció helyett paraméterek mintaillesztése (pattern matching) és rekurzió Mintaillesztés + rekurzió: mint a teljes indukció matematikában Első minta: alapeset Rekurzív minta: indukciós lépés Funkcionális programozás előnyei 1. Közelebb áll a feladat és annak leírása 1
2 2. Szemlélete közelebb áll a formális, matematikai leíráshoz, precízebb 3. Helyességet könnyű kifejezni Hoare-hármasokat (elő-utó feltétel) könnyű funkcionális nyelvekkel leírni 4. Feladatosztályok absztrakcióinak kifejezése Van egy nagyon általános feladatsémám (nem algoritmus!) Ezt egy függvénnyel felparaméterezve (magasabbrendű függvények) eljutok a konkrétabb feladathoz 5. Kevesebb sor, tömörebb program, kevesebb hiba, könnyebb karbantarthatóság 6. Könnyű funkcionális programokat párhuzamosítani Például (2 + 3) + (7 + 1) Egyik CPU: (2 + 3) Másik CPU: (7 + 1) Minden asszociatív műveletre igaz: ha zárójelezünk, akkor több CPU tudja feldolgozni a zárójelezett részeket Végrehajtási modell Végrehajtási modell egy konfluens redukciós (átíró) rendszer Mitől konfluens: Az egyes részkifejezések átírásának sorrendje a végeredményre nincs hatással A sorrend legfeljebb azt befolyásolja = hogy az átírási lépéssorozattal eljutunk-e a végeredményig Tehát a végrehajtás redukciós, átírási lépések, redukáló kifejezések (redexek) sorozata 1.2 Kiértékelés Kiértékelőrendszer feladata Kiértékeli a specifikációt majd megadja a függvényértéket Függvénydefiníció részei 1. Függvény azonosító 2. Formális paraméterek 3. Függvény törzse Kiértékelés menete Átírási lépések (redukciók) sorozatával Átírási lépésben függvény alkalmazásában: függvény helyettesítése = függvény törzsével Addig írunk át, amíg el nem érjük a normálformát = azaz tovább már nem lehet átírni Kiértékelési stratégiák nem mások, mint redex-ek kiválasztási sorrendje. Ezek lehetnek: Mohó 2
3 Lusta Párhuzamos Lusta (Lazy) kiértékelés Nem fontos a függvénykiértékelések sorrendje Először a FÜGGVÉNYT értékeli ki Haskell-ban és Clean-ben: alapértelmezett kiértékelési mód squareinc 7 = square (inc 7) = (inc 7) * (inc 7) = 8 * (inc 7) = 8 * 8 = 64 Mohó (strict) kiértékelés Fontos a függvénykiértékelések sorrendje Először az ARGUMENTUMOKAT értékeli ki Haskell-ban és Clean-ben: alfüggvény/paraméter!-el való megjelölése squareinc 7 = square (inc 7) = square (1 + 7) = square 8 = 8 * 8 = Curry-zés Matematikában: több argumentumot elfogadó függvény átalakítása függvények sorozatára amik csak egy-egy argumentumot kapnak Minden függvény csak egy argumentummal rendelkezik ((+) x) y -- x + y helyett 1.4 Magasabbrendű függvények Függvények, melyeknek argumentumaik egy- vagy több függvény vagy visszatérési értékük egy függvény applyfunctiontwice :: (Int -> Int) Int -> Int applyfunctiontwice f x = f(f x) 3
4 applyfunctiontwice (\x -> x + x) 3 = Listák Listák ábrázolása Láncolt listákkal Maga a listaábrázolás is egy függvény. Funkcionális programozásban mindennek az alapja a függvény. [] listaépítés függvénye, listakonstruktor ([a] írható [] a -ként is, mint [] függvény alkalmazása) : listaragasztás, konkatenáció függvénye Listaműveletek esetén nem írunk felül semmit, NEM MÓDOSÍTUNK ELEMET! Listafüggvény eredménye egy új lista lesz Immutable, mindig másolódik (valójában csak a lista váza másolódik) Figure 1: Lista felépítése és ábrázolása funkcionális nyelvekben. Listakonstruktor mintaillesztést használ: -- "a" bármilyen típusú (polimorf) paraméter. data [] a = [] -- Üres lista ha nem adunk elemet. a : [a] -- Értékhez hozzáragasztunk egy következő listát. -- A következő lista lehet üres is ([]). Lista típus definíciója Haskell-ban: data List a = Nil -- Üres lista. Cons a (List a) -- "Cons" a ragasztás, "(List a)" lehet üres is Ez egy rekurzív, paraméteres típus Szétszedhető, újra összeragasztható, az elejéről könnyű kivenni, könnyű hozzátenni Végére nehéz elemet tenni, költségesen végig kell járni 4
5 (Megjegyzés: mint ahogy láncolt listákban szokás imperatív programozásban is.) Szabványos listafüggvények (Clean nyelv) Figure 2: Head, Tail, Last és Init függvények Head: lista első elemének olvasása hd [x : xs] = x -- Minteillesztés első elemre hd [] = abort "hd of []" -- Üres lista esetén hiba Tail: lista végéről olvasás Nem egy elemet, hanem a maradék listát adja vissza tl [x : xs] = xs -- Minteillesztés első elem után ragasztott listára tl [] = abort "tl of []" -- Üres lista esetén hiba Last: lista utolsó elemének olvasása (head ellentétje) last [x] = x -- Minteillesztés egy elemre last [x : xs] = last xs -- Rekurzív hívás maradék listára amíg egy elemet -- nem kapunk last [] = abort "last of []" -- Üres lista esetén hiba Init: lista elejének olvasása (tail ellentéte) init [] = [] -- "I didn't do anything and I still got paid." init [x] = [] -- Utolsó elem a listában már nem kell init [x : xs] = [x : init xs] -- Rekurzív hívás amíg egy elem nincs a listában Length: lista hossza length [] = 0 -- Minteillesztés üres listára length [_ : xs] = 1 + length xs -- "_" a thunk-ot ("tönk") jelenti. Tökmindegy -- mi van ott, nem kerül kiértékelésre, nem -- foglalkozunk vele. 5
6 Reverse: NEM FORDÍTJA MEG A MEGLÉVŐ LISTÁT! Másolatot készít, ami meg van fordítva. Sort: NEM RENDEZI A MEGLÉVŐ LISTÁT! Másolatot készít, ami rendezve van. Magarabbrendű listafüggvények Filter: megadott logikai függvény (predikátum, predicate) alapján kiválogatja azokat az elemeket a listából amelyekre teljesül a logikai függvény evennumberfunction :: Int -> Bool evennumberfunction x = x mod 2 == 0 evennumbers = filter (evennumberfunction) [0..] Map: elemenkénti függvényalkalmazás Első paraméter: függvény, amit map a második paraméterben kapott lista elemeire alkalmaz Második paraméter: lista, aminek elemeire az első paraméterben kapott függvényt alkalmazza map :: (a -> b) [a] -> [b] map f [] = [] map f [x : xs] = [f x : map f xs] Fold: elemenkénti fogyasztás Paraméterként kapott függvénnyel kicseréli a lista összeragasztó függvényt (:) Van jobbasszociatív (foldr) és balasszociatív (foldl) változata foldr :: (a -> b -> b) -> b -> [a] -> b -- (a -> b -> b): Alkalmazandó listafüggvény foldr f z [] = z -- b: Kezdőérték ami nincs listában foldr f z (x : xs) = f x (foldr f z xs) -- [a]: Lista amire fold alkalmazva va -- b: Eredményérték További magasabbrendű listafüggvények: takewhile: elemek megtartása míg predikátum teljesül dropwhile: elemek eldobása míg predikátum teljesül 1.6 Tisztaság Nyelvi elemei felhasználásánál mellékhatások biztosan nem lépnek fel (pure programming) Az előző értéket megsemmisítő értékadás vagy más imperatív programozásra jellemző nyelvi elem nem áll rendelkezésre Pár tulajdonság: 6
7 Hivatkozási helyfüggetlenség Ugyanannak a kifejezésnek a programszöveg bármely pontján = ugyanaz lesz a végeredménye Egyenlőségi érvelés Minden egyes előforduláshoz beírható a végeredmény = hisz úgy is egyenlőek a hivatkozási helyfüggetlenség miatt Egyéb tulajdonságok: Szigorú típusosság Kevés, vagy egyáltalán nincs implicit típuskonverzió Statikus típusrendszer A kifejezések típusa fordítási időben ismert Absztrakt- és algebrai adattípusok leírásához adottak a nyelvi eszközök Hindley Milner-féle korlátozottan polimorfikus típusrendszer Rekurzió, mintaillesztés Konstruktorokra, típusértékekre (amelyek valójában konstruktorok, konstans függvények) Joker minta Őrfeltételek (argumentumokra, x when x > 10) Margó-szabály Összetartozó kifejezések csoportjának azonosítására és deklarációk hatáskörének korlátozására alkalmas a bal oldali margó szélességének változtatása IO-modell Haskell IO monádja Vagy a Clean Unique World típusa (egyszeresen hivatkozott, egyedi környezet) A műveletek láncolásával (>>=, bind) egy rejtett változó, a külvilág modellje adódik át 2.Típusok 2.1 Algebrai adattípusok Algebrai adattípusok: összetett típusok amiket több típusból kapjuk Példák: List: Nil, Cons és List-ből épül fel Tree: Node, Leaf és Tree-ből épül fel De mitől algebrai egy algebrai adattípus? Típuselméletből: összeg típusok (sum types) szorzat típusok (product types) 7
8 Összeg típus: A B, választás, A és B altípus egy összeg típust alkot (mintha A + B lenne) Szorzat típus: A B együtt, kombináció, A és B altípus egy szorzat típust alkot (mintha A B lenne) Paraméteres algebrai adattípusok Fa (egyparaméteres algebrai típus) Ez a paraméter most az a lesz Típus definiálása data Tree a = Node a (Tree a) (Tree a) Leaf Jelölések: Tree: alaptípus a: típusváltozó Node: adatkonstruktor (ragasztó, fordító lefoglal neki memóriát) (Tree a): leszármazott típus, lehet Tree Int vagy Tree String is Típus használata fa = Node 2 (Node 1 Leaf Leaf) (Node 3 Leaf Leaf) Lehet akár két különböző típusparamétere, a és b, ekkor kétparaméteres lesz data Tree a b = Node b (Tree a b) (Tree a b) Leaf a -- most Leaf-ben is tárolok értéket Paraméternélküli adattípus Nem adok típusváltozót paraméterként Ilyen például a felsorolásos típus (enumeration) Tipikusan összeg típusokból áll data Day = Mon Tue Wed Thu Fri Sat Sun Day típuskonstruktornak hét darab adatkonstruktora van Rekurzív adattípusok Olyan adattípus, ami saját magát is tartalmazza más értékkel data List a = Cons a (List a) Nul Lista adatkonstruktorai Nul: üres lista ([]) Cons: összeragasztott lista (:) 8
9 Más adattípusok felírása Például parser-ek írásához kifejezésfákat (parse tree) BNF-formában megadhatjuk :: Statement = Skip Sequence Statement Statement Assign Var ArithmeticExpression If BoolExpression Statement Statement While BoolExpression Statement 2.2 Típusosztályok Hasonló egy interfészhez Megad pár függvényt, melyet a típusnak teljesíteni kell Azt mondjuk: egy típusnak van példánya adott típusosztályra amennyiben megadtunk egy példányt (instance) és definiáltuk a megfelelő függvényeket. Van lehetőség egy függvényre megadni default implementációt a többi függvény felhasználásánál. A függvények típusdeklarációiban előfordulhatnak típusparaméterek Ezekre megadhatóak megszorítások Hiszen egyébként a paraméter helyére bármely típus behelyettesíthető lenne (ez a parametrikus polimorfizmus egyébként) A megszorításban megadható, milyen típusosztály példányokat várunk el az adott típustól. Egyes funkcionális nyelvek képesek az alapvető típusosztályok függvényeit automatikusan levezetni egy típus számára (deriving). Ezek beépített, egyszerűbb típusosztályok Eq: egyenlőség Ord: rendezés Show: sztringgé alakítás Read: beolvasás sztringből 2.3 Típuskonstruktorok Típuskonstruktor: típus felépítése és származtatása. Például List és Tree Adatkonstruktor: típuskonstruktor paramétere. Ezektől függ mi lesz a típus. Nulláris típuskonstruktor Ha nulla argumentuma van: nulláris típuskonstruktornak hívják (nullary type constructor) Például data Bool = True False (Haskell) Bool: típuskonstruktor True és False: két nullás adatkonstruktor 9
10 Unáris típuskonstruktor data Tree a = Leaf Node a (Tree a) (Tree a) Tree: típuskonstruktor 2.4 Kindok Magasabb rendű típus: típust kap argumentumként (akárcsak magasabb rendű függvényeknél) Kind: típusok, amik információt mondanak el a kapott típusról Kind of a type, avagy mi a típus típusa? Elsőrendű típus kindja (konkrét típus vagy típuskonstans): * Magasabbrendű típus kindjai (Curry-zve írjuk őket) Unáris típuskonstruktor kindja (egy típusparamétert fogad el): Bináris típuskonstruktor kindja (két típusparamétert fogad el): Kind-ok nyelvtana: K :== (K K) Kind-ok jobb asszociatívak (jobbról kezdjük a zárójelezést) = ( ) Melyik típus milyen kind-al rendelkezik? Int: * (konkrét típus) Char: * (konkrét típus) Bool: * (konkrét típus) [a]: (unáris típuskonstruktor) Mert még kell neki hogy milyen típusú lista lesz belőle Ne felejtsd el, [a] ugyanaz mint [] a List: (unáris típuskonstruktor) data List a = Nil Cons a (List a) Argumentum: milyen típusú értékek legyenek a listában és milyen típusú értéket ragasszon össze Cons Tree: (bináris típuskonstruktor) data Tree a b = Leaf a Node b (Tree a b) (Tree a b) Argumentumok: milyen típusú legyen a, majd utána milyen típusú legyen b 10
11 3.Monadikus programozás Módszer mellyel számításokat lehet építeni Funkcionális nyelvekben adattípus, amiben a számítások lépések láncaiként vannak definiálva Monád meghatározza hogy az összekombinált számítások hogyan alkossanak egy új számítást Három fő művelet: bind (>>=) >> return Ha nem lennének monadikus műveletek, akkor fejjel lefelé nézne ki egy program tele lambda kifejezésekkel Pure programming: funkcionális nyelvekben nincsenek mellékhatások. Monádok: Lennél szíves csinálni nekem egy mellékhatást? (Rinus Plasmeijer) Monad mint típusosztály class Monad m where return :: a -> m a (>>=) infixl 1 :: (m a) (a -> m b) -> m b (>>) infixl 1 :: (m a) (m b) -> m b (>>) m k :== m >>= \_ -> k fail :: String -> m a Amikor ezt a típuszosztályt akarjuk példányosítani >> műveletet már meg se kell adni az instance-ban, mert >>= definíciójából származtatjuk return Egyszerű típusból (a) fogja az értéket = monadikus értéket (m a) csinál belőle Értéket beemeli a monadikus környezetbe Szerencsétlen elnevezése van, semmi köze az imperatív megfelelőjéhez, nem tér vissza semmivel Bind művelet (>>=) Számítás eredményét másik akcióhoz rendeli Argumentumként vesz 11
12 Monadikus értéket (m a) Függvényt, mely egyszerű típusból monadikus értéket csinál (a -> m b) Visszatérési értéke újabb monadikus érték lesz (m b) Utána lambdakifejezést kell használni f >>= \x -> return x >> Bind-ból származtatott művelet Nem bind-ol semmilyen eredményt Szekvenciaként lehet felfogni Programozható pontosvesszőnek is mondják m >> k (>>) m k = m >>= \_ -> k Maybe Mellékhatás: számítás eredményének opcionalitása adható meg Exception-ök szimulálása Hiba a függvényből felfele propagálódik Ha függvény adott pontban nem értelmezhető: Nothing Ha igen: számításokat sorba is kapcsolhatjuk bind-al amíg van eredmény :: Maybe a = Just a Nothing instance Monad Maybe where return x = Just x (>>=) (Just m) k = k m (>>=) = Nothing State Mellékhatás: bármilyen típusú állapotinformációt lehet rendelni számításhoz Bemenetként állapotot kap Kiementként t típusú visszatérési értéket és egy s típusú új állapotot add Önmagában még nem monád, hanem absztrakt monád állapot típusával, s-el paraméterezhető 12
13 :: State s a = ST (S s a) -- Clean nyelv unst :: (State s a) -> S s a unst (ST m) = m State kétparaméteres típus, Monad csak egy nem baj, mert State kind-jait lehet Curry-zni instance Monad (State s) where -- (State s) absztrakt monád, kell még s típusa return x = ST (return_s x) (>>=) m k = ST ((unst m) bind_s (\x -> unst (k x))) List monád Lista típusára, [] típusra is felírható egy monadikus típuspéldány Listák segtíségével is lehet monadikus műveleteket ábrázolni Mellékhatás: egy monadikus akciót egyszerre több elemen lehet végrehajtani ezeket az elemeket újra listává ragasztjuk össze instance Monad [] where return x = [x] (>>=) m k = flatten [k x \\ x <- m] do jelölés Szintaktikai cukor monadikus programozásra Haskell-ban Megfelelő átírási szabályok, melyekkel olvashatóbbá tehető a program Mintha imperatívan programoznánk do { e1; e2 } -- e1 >> do { e2 } do { p <- e1; e2 } -- e1 >>= \x -> case x of p -> do { e2 } -- _ -> fail "error" do { let p = e1; e2 } -- let p = e1 in do { e2 } do { e } -- e 4.További források Egy korábbi Funkcionális Nyelvek 1 vizsga anyagom Korábbi záróvizsga tételkidolgozások
14
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
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
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
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
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
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
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,
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
Funkcionális programozás
Funkcionális programozás Horváth Zoltán E-mail: hz@inf.elte.hu Eötvös Lóránd Tudományegyetem, Budapest Programozási Nyelvek és Fordítóprogramok Tanszék Ajánlott irodalom Plasmeijer et al.: Programming
Kifejezések. Kozsik Tamás. December 11, 2016
Kifejezések Kozsik Tamás December 11, 2016 Kifejezések Lexika Szintaktika Szemantika Lexika azonosítók (változó-, metódus-, típus- és csomagnevek) literálok operátorok, pl. + zárójelek: (), [], {},
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
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
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
Tisztán funkcionális adatszerkezetek
Tisztán funkcionális adatszerkezetek Bevezetés A hatékony adatszerkezetek általában... [..] language-independent only in the sense of Henry Ford: Programmers can use any language as they want, as long
Doktori értekezés. Diviánszky Péter 2012.
Doktori értekezés Diviánszky Péter 2012. Referenciák tisztán funkcionális nyelvekben Diviánszky Péter ELTE IK Informatika Doktori Iskola Az informatika alapjai és módszertana oktatási program vezető:
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;
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
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
2019, Funkcionális programozás. 4. el adás. MÁRTON Gyöngyvér
Funkcionális programozás 4. 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ó? GHC parancsok fenntartott szavak
2018, Funkcionális programozás
Funkcionális programozás 10. 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 foldl és foldr függvények lista
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
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
Java II. I A Java programozási nyelv alapelemei
Java2 / 1 Java II. I A Java programozási nyelv alapelemei Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2009. 02. 09. Java II.: Alapelemek JAVA2 / 1 A Java formalizmusa A C, illetve
2016, Funkcionális programozás
Funkcionális programozás 11. 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ó? Haskell I/O műveletek, feladatok:
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)
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(
Felhasználó által definiált adattípus
Felhasználó által definiált adattípus C++ Izsó Tamás 2017. február 24. Izsó Tamás Felhasználó által definiált adattípus/ 1 Irodalom Izsó Tamás Felhasználó által definiált adattípus/ 2 Programtervezési
2018, Funkcionális programozás
Funkcionális programozás 6. 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ó? Haskell modulok, kompilálás a
Bánsághi Anna 2014 Bánsághi Anna 1 of 33
IMPERATÍV PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 7. ELŐADÁS - ABSZTRAKT ADATTÍPUS 2014 Bánsághi Anna 1 of 33 TEMATIKA I. ALAPFOGALMAK, TUDOMÁNYTÖRTÉNET II. IMPERATÍV PROGRAMOZÁS Imperatí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.
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
Tartalomjegyzék. I. Tillárom 3
Tartalomjegyzék I. Tillárom 3 1. A funkcionális programozási nyelvek elemei 5 1.1. Bevezetés.............................. 5 1.1.1. A funkcionális programozási stílus............. 6 1.1.2. Funkcionális
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
Occam 1. Készítette: Szabó Éva
Occam 1. Készítette: Szabó Éva Párhuzamos programozás Egyes folyamatok (processzek) párhuzamosan futnak. Több processzor -> tényleges párhuzamosság Egy processzor -> Időosztásos szimuláció Folyamatok közötti
Programozás BMEKOKAA146. Dr. Bécsi Tamás 2. előadás
Programozás BMEKOKAA146 Dr. Bécsi Tamás 2. előadás Szintaktikai alapok Alapvető típusok, ismétlés C# típus.net típus Méret (byte) Leírás byte System.Byte 1Előjel nélküli 8 bites egész szám (0..255) char
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:
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
2018, Funkcionális programozás
Funkcionális programozás 7. 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ó? összefésüléses rendezés (merge
ABSZTRAKCIÓ FÜGGVÉNYEKKEL (ELJÁRÁSOKKAL)
ABSZTRAKCIÓ FÜGGVÉNYEKKEL (ELJÁRÁSOKKAL) Elágazó rekurzió Absztrakció függvényekkel (eljárásokkal) FP-5..7-2 Korábban lineáris-rekurzív, ill. lineáris-iteratív folyamatokra láttunk példákat (faktoriális
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
Feldspar: Nyelv digitális jelfeldolgozáshoz
Feldspar: Nyelv digitális jelfeldolgozáshoz Eötvös Loránd Tudományegyetem, Budapest Támogatja: Ericsson, KMOP-1.1.2-08 Feldspar funkcionális beágyazott nyelv Feldspar digitális jelfeldolgozáshoz párhuzamossághoz
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 a közoktatásban alapfogalmak II. előadás
Programozási nyelvek a közoktatásban alapfogalmak II. előadás Szintaxis, szemantika BNF szintaxisgráf absztrakt értelmező axiomatikus (elő- és utófeltétel) Pap Gáborné. Szlávi Péter, Zsakó László: Programozási
Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)
Programozás alapjai C nyelv 7. gyakorlat Szeberényi Imre BME IIT Függvények C program egymás mellé rendelt függvényekből áll. A függvény (alprogram) jó absztrakciós eszköz a programok
Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)
Programozás alapjai C nyelv 7. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.11.05. -1- Függvények C program egymás mellé rendelt függvényekből
Cekla. Készítette Doxygen Tue Sep :13:44
Cekla Készítette Doxygen 1.7.1 Tue Sep 20 2011 14:13:44 TARTALOMJEGYZÉK 1 Tartalomjegyzék 1. Cekla C++ könyvtár deklaratív C++-hoz 1 2. Modulmutató 1 2.1. Modulok............................................
5. SOR. Üres: S Sorba: S E S Sorból: S S E Első: S E
5. SOR A sor adatszerkezet is ismerős a mindennapokból, például a várakozási sornak számos előfordulásával van dolgunk, akár emberekről akár tárgyakról (pl. munkadarabokról) legyen szó. A sor adattípus
Programozás II. 2. gyakorlat Áttérés C-ről C++-ra
Programozás II. 2. gyakorlat Áttérés C-ről C++-ra Tartalom Új kommentelési lehetőség Változók deklarációjának helye Alapértelmezett függvényparaméterek Névterek I/O műveletek egyszerűsödése Logikai adattípus,
Programozási nyelvek a közoktatásban alapfogalmak I. előadás
Programozási nyelvek a közoktatásban alapfogalmak I. előadás Szempontok Programozási nyelvek osztályozása Felhasználói kör (amatőr, professzionális) Emberközelség (gépi nyelvektől a természetes nyelvekig)
C programozási nyelv Pointerek, tömbök, pointer aritmetika
C programozási nyelv Pointerek, tömbök, pointer aritmetika Dr. Schuster György 2011. június 16. C programozási nyelv Pointerek, tömbök, pointer aritmetika 2011. június 16. 1 / 15 Pointerek (mutatók) Pointerek
Informatika terméktervezőknek
Informatika terméktervezőknek C# alapok Névterület (namespace) using Osztály (class) és Obejtumok Metódus (function, procedure, method) main() static void string[] arg Szintaxis // /* */ \n \t Névadások
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ő,
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
Tisztán funkcionális adatszerkezetek (folytatás)
Tisztán funkcionális adatszerkezetek (folytatás) Rövid összefoglalás az eddigiekről A hatékony adatszerkezetek általában... [..] language-independent only in the sense of Henry Ford: Programmers can use
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
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,
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
Járműfedélzeti rendszerek II. 1. előadás Dr. Bécsi Tamás
Járműfedélzeti rendszerek II. 1. előadás Dr. Bécsi Tamás A tárgy órái Előadás hetente (St101) csüt. 8:15 Bécsi Tamás C elmélet Ajánlott irodalom Dennis Ritchie: A C programozási nyelv Gyakorlat hetente
Adatszerkezetek és algoritmusok
2009. november 13. Ismétlés El z órai anyagok áttekintése Ismétlés Specikáció Típusok, kifejezések, m veletek, adatok ábrázolása, típusabsztakció Vezérlési szerkezetek Függvények, paraméterátadás, rekurziók
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
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)
Relációs algebra 1.rész alapok
Relációs algebra 1.rész alapok Tankönyv: Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009 Lekérdezések a relációs modellben 2.4. Egy algebrai lekérdező nyelv, relációs
Járműfedélzeti rendszerek II. 2. előadás Dr. Bécsi Tamás
Járműfedélzeti rendszerek II. 2. előadás Dr. Bécsi Tamás 4.11. A C előfeldolgozó rendszer A fordítás első lépése a C esetében a különböző nyelvi kiterjesztések feldolgozása: másik állomány tartalmának
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
Funkcionális nyelvek (egyetemi jegyzet) Páli Gábor János
Funkcionális nyelvek (egyetemi jegyzet) Páli Gábor János Budapest, 2016 Tartalomjegyzék 1. Rövid áttekintés 1 1.1. Bevezetés............................. 1 1.2. Elágazások függvényekben....................
Imperatív programozás
Imperatív programozás 2. Előadás Python alapok Elérhetőség Tejfel Máté Déli épület, 2.616 matej@elte.hu http://matej.web.elte.hu Python Script nyelv Értelmezett (interpretált) Dinamikus típusrendszer Gyors
Alkalmazott modul: Programozás 4. előadás. Procedurális programozás: iteratív és rekurzív alprogramok. Alprogramok. Alprogramok.
Eötvös Loránd Tudományegyetem Informatikai Kar Alkalmazott modul: Programozás 4. előadás Procedurális programozás: iteratív és rekurzív alprogramok Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto
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,
Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás 2. előadás
Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606 Dr. Bécsi Tamás 2. előadás Console I/O bővebben Lásd mintaprogram 2015.09.21. Számítástechnika I. 2. Előadás 2 Számábrázolásról
Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe
Mechatronika és mikroszámítógépek 2017/2018 I. félév Bevezetés a C nyelvbe A C programozási nyelv A C egy általános célú programozási nyelv, melyet Dennis Ritchie fejlesztett ki Ken Thompson segítségével
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,
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
Programozási nyelvek (ADA)
Programozási nyelvek (ADA) Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 3. előadás Programozási nyelv felépítése szabályok megadása Lexika Milyen egységek építik fel? Szintaktikus szabályok
és az instanceof operátor
Java VIII. Az interfacei és az instanceof operátor Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 24. Java VIII.: Interface JAVA8 / 1 Az interfészről általában
Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán
Java VIII. Az interfacei és az instanceof operátor Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 24. Java VIII.: Interface JAVA8 / 1 Az interfészről általában
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
A programozás alapjai előadás. Amiről szólesz: A tárgy címe: A programozás alapjai
A programozás alapjai 1 1. előadás Híradástechnikai Tanszék Amiről szólesz: A tárgy címe: A programozás alapjai A számítógép részegységei, alacsony- és magasszintű programnyelvek, az imperatív programozási
Bevezetés a C++ programozási nyelvbe
Bevezetés a C++ programozási nyelvbe Miskolci Egyetem Általános Informatikai Tanszék CPP0 / 1 Története A C++ programozási nyelv a C programozási nyelv objektum orientált kiterjesztése. Az ANSI-C nyelvet
Szoftvertechnológia alapjai Java előadások
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz e-mail: fandrew@mit.bme.hu tárgy honlap: http://home.mit.bme.hu/~fandrew/szofttech_hu.html A mai előadás tartalma: Miért pont Java?
A félév során előkerülő témakörök
A félév során előkerülő témakörök rekurzív algoritmusok rendező algoritmusok alapvető adattípusok, adatszerkezetek, és kapcsolódó algoritmusok dinamikus programozás mohó algoritmusok gráf algoritmusok
A C programozási nyelv III. Pointerek és tömbök.
A C programozási nyelv III. Pointerek és tömbök. Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv III. (Pointerek, tömbök) CBEV3 / 1 Mutató (pointer) fogalma A mutató olyan változó,
Algoritmusok és adatszerkezetek gyakorlat 03 Oszd meg és uralkodj. Nagy
Algoritmusok és adatszerkezetek gyakorlat 03 Oszd meg és uralkodj Divide & Conquer (,,Oszd meg és uralkodj ) paradigma Divide: Osszuk fel az adott problémát kisebb problémákra. Conquer: Oldjuk meg a kisebb
Vezérlési szerkezetek
Vezérlési szerkezetek Szelekciós ok: if, else, switch If Segítségével valamely ok végrehajtását valamely feltétel teljesülése esetén végezzük el. Az if segítségével valamely tevékenység () végrehajtását
Már megismert fogalmak áttekintése
Interfészek szenasi.sandor@nik.bmf.hu PPT 2007/2008 tavasz http://nik.bmf.hu/ppt 1 Témakörök Polimorfizmus áttekintése Interfészek Interfészek kiterjesztése Eseménykezelési módszerek 2 Már megismert fogalmak
Objektumok inicializálása
Objektumok inicializálása Miskolci Egyetem Általános Informatikai Tanszék Objektumok inicializálása CPP4 / 1 Tartalom public adattagok inicializálása felsorolással konstruktor objektum tömbök osztály típusú
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]()
List<String> l1 = new ArrayList<String>(); List<Object> l2 = l1; // error
Generics Egyszerűbb példák (java.util csomagból): public interface List { void add(e x); Iterator iterator(); public interface Iterator { E next(); boolean hasnext(); E - formális típusparaméter,
BASH script programozás II. Vezérlési szerkezetek
06 BASH script programozás II. Vezérlési szerkezetek Emlékeztető Jelölésbeli különbség van parancs végrehajtása és a parancs kimenetére való hivatkozás között PARANCS $(PARANCS) Jelölésbeli különbség van
sallang avagy Fordítótervezés dióhéjban Sallai Gyula
sallang avagy Fordítótervezés dióhéjban Sallai Gyula Az előadás egy kis példaprogramon keresztül mutatja be fordítók belső lelki világát De mit is jelent, az hogy fordítóprogram? Mit csinál egy fordító?
A C programozási nyelv III. Pointerek és tömbök.
A C programozási nyelv III. Pointerek és tömbök. Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv III. (Pointerek, tömbök) CBEV3 / 1 Mutató (pointer) fogalma A mutató olyan változó,
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
Programozási nyelvek 6. előadás
Programozási nyelvek 6. előadás Szempontok Programozási nyelvek osztályozása Felhasználói kör (amatőr, professzionális) Emberközelség (gépi nyelvektől a természetes nyelvekig) Számítási modell (hogyan
Az UPPAAL egyes modellezési lehetőségeinek összefoglalása. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék
Az UPPAAL egyes modellezési lehetőségeinek összefoglalása Majzik István BME Méréstechnika és Információs Rendszerek Tanszék Résztvevők együttműködése (1) Automaták interakciói üzenetküldéssel Szinkron
Programozás alapjai gyakorlat. 2. gyakorlat C alapok
Programozás alapjai gyakorlat 2. gyakorlat C alapok 2016-2017 Bordé Sándor 2 Forráskód, fordító, futtatható állomány Először megírjuk a programunk kódját (forráskód) Egyszerű szövegszerkesztőben vagy fejlesztőkörnyezettel
Logikai és funkcionális programozás funkcionális programozás modul
Logikai és funkcionális programozás funkcionális programozás modul A laborfeladatok írásához a Clean nyelvet használtuk a program ingyenesen letölthető a ftp://ftp.cs.kun.nl/pub/clean illetve a http://www.cs.kun.nl/~clean
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
A programozás alapjai 1 Rekurzió
A programozás alapjai Rekurzió. előadás Híradástechnikai Tanszék - preorder (gyökér bal gyerek jobb gyerek) mentés - visszaállítás - inorder (bal gyerek gyökér jobb gyerek) rendezés 4 5 6 4 6 7 5 7 - posztorder
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
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
Felvételi vizsga mintatételsor Informatika írásbeli vizsga
BABEȘ BOLYAI TUDOMÁNYEGYETEM MATEMATIKA ÉS INFORMATIKA KAR A. tételsor (30 pont) Felvételi vizsga mintatételsor Informatika írásbeli vizsga 1. (5p) Egy x biten tárolt egész adattípus (x szigorúan pozitív