2016, Funkcionális programozás

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

Download "2016, Funkcionális programozás"

Átírás

1 Funkcionális programozás 11. előadás Sapientia Egyetem, Műszaki és Humántudományok Tanszék Marosvásárhely, Románia 2016, tavaszi félév

2 Miről volt szó? Haskell I/O műveletek, feladatok: születési dátum, névnap keresés Kombinatorikai feladatok

3 Miről lesz szó? Haskell hibakezelés az error függvény az catch függvény a Maybe érték az Either érték feladatok: racionális számok sorozata

4 Hibakezelés, az error függvény Kisebb, informális programkódok esetében használják: mydiv :: Double -> Double -> Double mydiv _ 0 = error "Zeroval valo osztas" mydiv n m = n / m > mydiv > mydiv 3 0 *** Exception: Zeroval valo osztas

5 Hibakezelés, a catch függvény A függvény szignatúrája: catch :: Exception e => IO a -> (e -> IO a) -> IO a Két paramétere van: az a típusú ellenőrző függvény és egy kivételkezelő függvény, a visszatérítési érték típusa is a lesz. import Control.Exception fel :: Double -> Double -> IO() fel x y = catch (print $ mydiv x y) handler where handler :: SomeException -> IO () handler err = putstrln $ "Caught exception: " ++ show err > fel > fel 2 0 Caught exception: Zeroval valo osztas

6 Hibakezelés, a Maybe érték részlegesen értelmezett függvények (partial functions): nincsenek definiálva az argumentumértékek minden esetében, ilyenkor egy Maybe érték lehet a visszatérítési érték data Maybe a = Nothing Just a minden a típusra használható mintaillesztéssel lehet eldönteni, hogy mi a függvény visszatérítési értéke a Maybe érték segítségével az dönthető el csupán, hogy hiba adódott

7 Hibakezelés, a Maybe érték mydiv1 :: Double -> Double -> Maybe Double mydiv1 _ 0 = Nothing mydiv1 n m = Just (n / m) > mydiv1 2 3 Just > mydiv1 3 0 Nothing

8 Hibakezelés, a Maybe érték fel1 :: Double -> Double -> IO() fel1 x y = case mydiv1 x y of Nothing -> putstrln "Zeroval valo osztas" Just k -> putstrln (show k) > fel > fel1 3 0 Zeroval valo osztas

9 Hibakezelés, a Maybe érték divsum1 :: Double -> Double -> Double -> Maybe Double divsum1 x y z = do temp1 <- mydiv1 x y temp2 <- mydiv1 x z return (temp1 + temp2) > divsum Nothing > divsum Nothing > divsum Just

10 Hibakezelés, a Maybe érték myhead1 :: [a] -> Maybe a myhead1 [] = Nothing myhead1 ve = Just (head ve) > myhead1 "Sapientia" Just S > myhead1 "" Nothing

11 Hibakezelés, az Either érték hasonlóan a Maybe-hez a Prelude-ben van definiálva és két paramétere van: data Either a b = Left a Right b A Left esete a hibát jelzi, és hibaüzenetre is van lehetőség a Right esetében sikeres a kód végrehajtása a Maybe érték segítségével az dönthető el csupán, hogy hiba adódott

12 Hibakezelés, a Either érték mydiv2 :: Double -> Double -> Either String Double mydiv2 _ 0 = Left ("Zeroval valo osztas ") mydiv2 n m = Right (m/n) > mydiv2 2 3 Right > mydiv2 3 0 Left "Zeroval valo osztas "

13 Hibakezelés, a Either érték fel2 :: Double -> Double -> IO() fel2 x y = case mydiv2 x y of Left str -> putstrln str Right k -> putstrln (show k) > fel > fel2 3 0 Zeroval valo osztas

14 Hibakezelés, a Either érték myhead2 :: [a] -> Either String a myhead2 [] = Left ("ures lista") myhead2 ve = Right (head ve) > myhead2 "Sapientia" Right S > myhead2 "" Left "ures lista"

15 Hibakezelés, a Monad és a fail használata az előbbi megoldások általánosítása: mydiv3 :: (Monad a) => Double -> Double -> a Double mydiv3 n 0 = fail "Zeroval valo osztas" mydiv3 n m = return (n / m) fel3_1 :: Double -> Double -> IO () fel3_1 x y = case mydiv3 x y of Nothing -> putstrln "Zeroval valo osztas" Just k -> putstrln (show k) fel3_2 :: Double -> Double -> IO () fel3_2 x y = case mydiv3 x y of Left str -> putstrln str Right k -> putstrln (show k)

16 Hibakezelés, a Monad, a fail és a catch import Control.Exception fel3_3 :: Double -> Double -> IO() fel3_3 x y = catch ( do k <- mydiv3 x y putstrln (show k) ) handler where handler :: SomeException -> IO () handler err = putstrln $ "Caught exception: " ++ show err > fel3_ > fel3_3 2 0 Caught exception: user error (Zeroval valo osztas)

17 Hibakezelés, IO hibák import System.IO.Error mygetchar :: IO Char mygetchar = catchioerror (getchar) handler where handler err = do putstrln $ "Caught exception: " ++ show err return \ n mygetchar1 :: IO Char mygetchar1 = catchioerror getchar (\ err -> return \ n )

18 Hibakezelés, ioerror és catch mydiv4 :: Double -> Double -> IO Double mydiv4 x 0 = ioerror (usererror "Zeroval valo osztas") mydiv4 x y = return (x / y) fel4 :: Double -> Double -> IO () fel4 x y = catch (do k <- mydiv4 x y putstrln (show k) ) handler where handler :: SomeException -> IO () handler err = putstrln $ "Caught exception: " ++ show err

19 Feladatok 1. feladat Generáljuk ki a pozitív racionális számok sorozatát egy megadott értékig, a következők alapján, ahol szűrjük ki az ismétlődő elemeket: [1/1, 1/2, 2/1, 1/3, 2/2, 3/1, 1/4, 2/3, 3/2, 4/1,...] lnko :: Integer -> Integer -> Integer lnko a b b == 0 = a otherwise = lnko b (a mod b) elista :: Integer-> [(Integer, Integer)] elista n = map fugv (lista n) where lista n = zip [1..n] [n, n-1..1] fugv (x, y) = (x1, y1) where x1 = x div l y1 = y div l l = lnko x y

20 Feladatok 1. feladat ratlistai :: Integer -> [(Integer, Integer)] ratlistai i = (elista i) ++ ( ratlistai (i+1) ) halmaz :: [(Integer, Integer)] -> [(Integer, Integer)] halmaz [] = [] halmaz (k: ve) = k: halmaz [x x <- ve, x /= k] mainf1 :: (Integer, Integer) -> [(Integer, Integer)] mainf1 (nr1, nr2) = halmaz (takewhile (/= (tnr1, tnr2)) (ratlistai 1)) where tnr1 = nr1 div l tnr2 = nr2 div l l = lnko nr1 nr2

21 Feladatok 2. feladat Generáljuk ki a pozitív racionális számok sorozatát egy megadott értékig, a következők alapján: az x után következő racionális szám: 2 x + 1 x y y y reciproka, ahol alsó egész részt jelöl. Példák: = = 5 5 (10 5) = = = = 3 5 (9 5) = =

22 Feladatok 2. feladat nextrat :: (Integer, Integer) -> (Integer, Integer) nextrat (x, y) = (y div l, x1 div l) where x1 = (2 * floor ((fromintegral x)/(fromintegral y)) + 1) * y l = lnko x1 y - x ratlistaii :: (Integer, Integer) -> [(Integer, Integer)] ratlistaii (x, y) = (x, y) : ratlistaii (nextrat (x, y))

23 Feladatok 2. feladat mainf2 :: (Integer, Integer) -> [(Integer, Integer)] mainf2 (nr1, nr2) = takewhile (/= (tnr1, tnr2)) (ratlistaii (1,1)) where tnr1 = nr1 div l tnr2 = nr2 div l l = lnko nr1 nr2

24 Feladatok 3. feladat Adott n szám, határozzuk meg, hogy hányféleképpen álĺıtható elő egy adott xs összeg, az n számból, ha mindegyik számot csak egyszer használhatom fel, az eredményt írjuk ki állományba. Megoldási ötlet: előálĺıtjuk az 1, 2, stb elemű részhalmazokat(listákat) majd kiválasztjuk azokat a listákat melyeknek elemeinek összeg xs.

2018, Funkcionális programozás

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

Részletesebben

2018, Funkcionális programozás

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

Részletesebben

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

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

Részletesebben

2018, Funkcionális programozás

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

Részletesebben

Tulajdonságalapú tesztelés

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

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

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

2018, Funkcionális programozás

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

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

2016, Diszkrét matematika

2016, Diszkrét matematika Diszkrét matematika 2. előadás Sapientia Egyetem, Műszaki és Humántudományok Tanszék Marosvásárhely, Románia mgyongyi@ms.sapientia.ro 2016, őszi félév Miről volt szó az elmúlt előadáson? Követelmények,

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

Programozás burritokkal

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

Részletesebben

2018, Diszkrét matematika

2018, Diszkrét matematika Diszkrét matematika 3. előadás mgyongyi@ms.sapientia.ro Sapientia Egyetem, Matematika-Informatika Tanszék Marosvásárhely, Románia 2018, őszi félév Miről volt szó az elmúlt előadáson? számtartományok: természetes

Részletesebben

2018, Diszkrét matematika

2018, Diszkrét matematika Diszkrét matematika 12. előadás mgyongyi@ms.sapientia.ro Sapientia Egyetem, Matematika-Informatika Tanszék Marosvásárhely, ománia 2018, őszi félév Miről volt szó az elmúlt előadáson? a diszkrét logaritmus,

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

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

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

Részletesebben

2015, Diszkrét matematika

2015, Diszkrét matematika Diszkrét matematika 4. előadás Sapientia Egyetem, Műszaki és Humántudományok Tanszék Marosvásárhely, Románia mgyongyi@ms.sapientia.ro 2015, őszi félév Miről volt szó az elmúlt előadáson? Számtartományok:

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

2016, Diszkrét matematika

2016, Diszkrét matematika Diszkrét matematika 8. előadás Sapientia Egyetem, Műszaki és Humántudományok Tanszék Marosvásárhely, Románia mgyongyi@ms.sapientia.ro 2016, őszi félév Miről volt szó az elmúlt előadáson? a Fibonacci számsorozat

Részletesebben

2018, Diszkrét matematika

2018, Diszkrét matematika Diszkrét matematika 4. előadás mgyongyi@ms.sapientia.ro Sapientia Egyetem, Matematika-Informatika Tanszék Marosvásárhely, Románia 2018, őszi félév Miről volt szó az elmúlt előadáson? számtartományok: racionális

Részletesebben

2016, Diszkrét matematika

2016, Diszkrét matematika Diszkrét matematika 11. előadás Sapientia Egyetem, Műszaki és Humántudományok Tanszék Marosvásárhely, Románia mgyongyi@ms.sapientia.ro 2016, őszi félév Miről volt szó az elmúlt előadáson? legnagyobb közös

Részletesebben

2016, Diszkrét matematika

2016, Diszkrét matematika Diszkrét matematika 7. előadás Sapientia Egyetem, Műszaki és Humántudományok Tanszék Marosvásárhely, Románia mgyongyi@ms.sapientia.ro 2016, őszi félév Miről volt szó az elmúlt előadáson? az ord, chr függvények

Részletesebben

2018, Diszkrét matematika

2018, Diszkrét matematika Diszkrét matematika 5. előadás mgyongyi@ms.sapientia.ro Sapientia Egyetem, Matematika-Informatika Tanszék Marosvásárhely, Románia 2018, őszi félév Miről volt szó az elmúlt előadáson? Python alapfogalmak:

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

Tisztán funkcionális adatszerkezetek

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

Részletesebben

HASKELL. Tartalom előadás

HASKELL. Tartalom előadás HASKELL Tartalom 1 HS1-2 1. előadás Bevezetés A mint funkcionális nyelv típusok és értékek függvények és operátorok adatkonstruktorok tulajdonságai mintaillesztés, őrök vezérlési szerkezetek a forráskód

Részletesebben

Tartalom előadás

Tartalom előadás HASKELL Tartalom 1 HS1-2 1. előadás Bevezetés A mint funkcionális nyelv típusok és értékek függvények és operátorok adatkonstruktorok tulajdonságai mintaillesztés, őrök vezérlési szerkezetek a forráskód

Részletesebben

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015 Objektumorientált programozás Pál László Sapientia EMTE, Csíkszereda, 2014/2015 9. ELİADÁS Kivételkezelés (Exception handling) 2 Mi a kivétel (exception)? A kivétel, olyan hibás állapot vagy esemény, amely

Részletesebben

Sapientia Egyetem, Matematika-Informatika Tanszék.

Sapientia Egyetem, Matematika-Informatika Tanszék. Kriptográfia és Információbiztonság 8. előadás Sapientia Egyetem, Matematika-Informatika Tanszék Marosvásárhely, Románia mgyongyi@ms.sapientia.ro 2018 Miről volt szó az elmúlt előadáson? az RSA titkosító

Részletesebben

2018, Diszkre t matematika. 8. elo ada s

2018, Diszkre t matematika. 8. elo ada s Diszkre t matematika 8. elo ada s MA RTON Gyo ngyve r mgyongyi@ms.sapientia.ro Sapientia Egyetem, Matematika-Informatika Tansze k Marosva sa rhely, Roma nia 2018, o szi fe le v MA RTON Gyo ngyve r 2018,

Részletesebben

2017, Diszkrét matematika

2017, Diszkrét matematika Diszkrét matematika 10. előadás Sapientia Egyetem, Matematika-Informatika Tanszék Marosvásárhely, Románia mgyongyi@ms.sapientia.ro 2017, őszi félév Miről volt szó az elmúlt előadáson? a prímszámtétel prímszámok,

Részletesebben

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

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:

Részletesebben

Á Ó Á Ü ő ű Ú ö í ő Ó ú ö Á ú Ű Ó ű Ó í ű ö í ö ő ö ö í ö ö ő É ö Á ű Ó ö Á Ó ö í Á í í ö ű ö ú ö ö ú ö Ú ö ű Ó Ú ö Á í Ó í í Í í í Í ö Ú ö Á ú í Ó ő í ú ö Á ú Á í ú ö Á ú í ö Á ú í Ó ö ű Ó Ú Ú ű ő ö ü

Részletesebben

É ő ő íí í ú í ő Ő ő ü ü ü ü ü Ü Ü ő ő ő ő í ő ő ő í íí í ő ű í Ó Ó Ó í Ö Ö í Á Ö Ü Ö É í Ö í ő Ö Ö Ö Á í Á ő ő ő ő É Í Í ő ú Ú ú Ö í ő Á Ö ő Í Í ő ű í ő ú ü íí í Ö ő ő ő ő Í ő ő ő ő í ő ő ő ő í É É í

Részletesebben

Í ö Í ű ú ö ö ú ö É í í ö Ó ű í ö ö í ö ö ö í í ö í í ö ö í ö ö ö ű í ö ö ö ö ö ö ö ú ö í ö ö í ö ö ö ö ö ú ű ű ú ö ö í ö É í ö ö í ö ö ö ú ű ö ö í ö ú ű ö ö í í ú ö ö í ö í í ö ö ö ú ö ö ö ö Í ö ú ö ú

Részletesebben

ö Ö ö Ö ö ö ö ö ö ö ö Ö ö Ö ö ö ö ö ö ű ö ö ö ö Ö ö Ő Ü ö ö Ö Ö ö ö ö ö ö ö ö ö Ü ö ö ö ű ö ö ö ö ű ö ű ö Ö Ü Ü ö ö ú Ű ÍŐ Ö Ő ÍŐ ö ö ö ö ű ö Ö Ö Ó ö ö Ö ö ö Ö ö ö Ö ö ű ö ö É ö ö Í Á Á Ő ű ö ű ú Ö Ü Á

Részletesebben

í ö Ö Á í ö í í ö í ö ö í í ö ö ö ö í í ö í ö í ö í ü í í ö í í í í í ö ö í í í ú ö í í ö Á Á Á ü ú í ö Á í í í ö í í ü ö ö ö ö í ö í í í ú í í ű ú í í í í ö í ű í ö ö ü ö ű ö ö í í í í í ö ü í ö í ö ű

Részletesebben

ö é Ö é ü ö é ü ö é Ö é ü í ü ü ü é é ü é é Ö ö é é é é ö ü ö ü ö é é ö é é ö é é ö ö é í é ü é é é í é ö é é ö é ö é ü é ü ú é é é é é í é é é é ö ö é é ö ö é é í í é í é ü ö ü Á é ö Á í ö í é ö ü ö é

Részletesebben

Í ú ó ú ó ú ó ó Á ó ó ö ű ú Á ú ó ó ó Í ó ö ö ö Í ö ó ó ö ó ó ó ö ó ö ö ö ö ó ö ó ö ó ü ó ó ü ó ü ö ö ö ö Ő ó ó Íó ó ó ü ó ű ó ó ű ű ó ö ü ö ú ö ü ű ö ö ö ö ó ú ö ö ö ü Í Í Í Á ó ó ú ü ú Á ü ö Á ó ü ó

Részletesebben

ü Ü ö ö ú Í ó í í ó ó ó ü ó ű ó í ó ó í ö ó ö ú ü ö Í í í ó ó ó ó Í ó ü ű ó í ó ó í ó Í í ó ü ö ú ó ó ó í í ó í í ű í ü ö í ó í ö í ú ó í ú ü ú Í í ü Í í í ó ü ö í ó í ó ü ö ó Í í í ó Í É ó ó ó Í í ö ö

Részletesebben

ö Á ö É É ü ü É É Ő ö É ö Á ó ü É Ó Ö Á ú é ü ö é Ö é ü é é ü ü é é Ü é ö ö Ö ö é Á é é é é é ó é é é é ü é ö ö ö í é ü ú é é é ü ü é é é ü é é ö é ö é é ó ö ü é é é é ó ó ö í ó é ó é é é ó é é é ű ö é

Részletesebben

Á Á É Á Ü ö ű ű ő í ő ö ő í ő ö í É ő í ű ö ő ő í ö ü ő ő ü ő ü í ö ö ü ö ü ő ő ü ü ő ü ö ő ő ő ő íő ö ö ö ü ő ő ő ő í ú ő ő í ü ö ő í ű ü ö ő ő ő ő í ú ö ö ő ö ö ö ö ü ő ő ö ő ő í í ő ö ü ö í ö ö ö ö

Részletesebben

ó Í ó ó Ü ó ő Ú ő É ó É Í ő Ö ő ő ó Íó ó Ú ó É Ö ó ő ő Ú Íő ő ő ő ő ő Ú ő ó ó ő ő ő ő ó ő ő ő ő ő ő Í ő ő ó ő ő ó ő Í ő ó ő ő ő ő ő ó ó ó ő ő ó ő ő ő ő ő ő ó ő ő ő ó ő ő Á ű ő ő ő ő ő ő Í ó ő ő ő ő ó ó

Részletesebben

Á Á Í ó ó ó ö ó Ü ö ú Í ó ö ö ó ú ö ó ö ö Ü ö ú ó ó ó ó ö ü ó ö ö ü Ü ö ö ú ó ó ö ú ö ó ó ó ó ö ó ö ó ö ó ö ű ö ö ö ű ö ö ű ö ö ö ű ö ö ó ö ö ó ó ü ö ö ű ö ö ö ó ö ű ö Ü ö ö ú ó ö ó ü ü ö ü ü ö Í ö ü ö

Részletesebben

ó ő ó ó ö ö ú Á Í ö ó ő ö ú Í ó ü ó ő ö ú ö ó ő ó ő ü ő ű ö ö ü ő ü ó Ó ö ó ó ő ő ő ö Í ó ö ö ö ó ő ö ő Í ü ö ö ö ö ö ö ő ö ö ö ö ú ú ű ö ű ó ó ö ö ő ű ö ú ö ö ö ö ö ó Á ö ö ö ő ő ó ő ő Ö ő ú ó ö ú ú ű

Részletesebben

í ö ő í ú ö ö í íí ü Ú Í Á ú ü í ö í ő í ö ő ű Í í ö ü ü ő ő ú í ő í ő ü ü ő Í ő Í í ü ö ö ö ö í ű ő ö ö ö í ü í Ó ö í ő ő í í ő Ó Ú Ő Íő Ő Ó ő ö ő ü ű í í ü ú Ő Í ő ő ő í ü ő É í Ő í ü ü ö ő í ü ö ö ü

Részletesebben

Ő Ö ö Ö É Á Ü É ó É ó ü É É Ö Ö Á É Ő ú É Á ú Ő Ö Ü Ö Ö ü ó ó ü Ü ű ö ú ó Á í ó ö ö ö ö ó ü í í Á í Ó í ó ü Ö ö ú ó ó ö ü ó ó ö í í ű ö ó í ü í ö í í ű ö ü Ő ü ú Ö ö ó ö ó ö ö ö ü ó ö í ó Ö ö Ő ü Ö Ö ü

Részletesebben

ű í ö ö Á ü ü ö ö ö í í É ú ú ö ö ű í ö ü ö ú ü ű ú ö í í ú ö ú í ö ü í í ö í Á Ó É í ű ö ü ö ü ú ü ö ü ú ű ö ü ű ü í ü ű ü ü ö ű í ü í ö ü í í í í ö í ö ö ö Á ű ú ű ö ö ű í ö ö í ú í í ű í ö ú ö ö í Á

Részletesebben

ö ú í í í ő ű Ü Ű Í í Ő Á Á Ö Ő Ű Í ö ú í í í ú ő ö ű í í í ö Ó ő í í í ö ú í ö ö ö ö Ü ő ö ö ö ú ű ő ú ű ö ö ú ö ö ő Ü ö ö í í ő ö í í í í í í ö ö í ö ö í í ő í ő ö ő í ú í ö í ö í í ö ű ö ö Ó Ü ö ő ő

Részletesebben

ú ű ö ö ü ü Í ö ö ö ö É Í É ú ú É ú ú ö É ö Í Ü ú Í ö ö Í ú ö ö ö ö ü ö ö ú ü Ü ö ü Í ö ö ű ö ö Í ű ú ö ö ö ö Í ö ö ű ö ö Í ü Í ü ú Í É ö ö ü ö ö Ü ö ö Í ü Í ö ü Í Í ö Í ö Í ü ö ú Í ú Í ö É ú Í ö ö Í É

Részletesebben

É ö ö Í Í Í Ó Í Í Á Ó Á Ü Ú Í Á Á ű Á Ó Í Í É Á Ó Á Á ö ö Á Í Á Á ö ö ű ö ö Í Í ű Ö ű ö ö ű Í Í Ü ö ö Ó ű Í ö ö Í ö ö Ó ö Ö Í ö ö Ö ö ű ö ö Ó Í ű Ó ö ö ű ö ű Ö Ü Ö ű ű ö ö ö ö ö ö Íö ö Í Ö Ó ű ö ű ö ö

Részletesebben

Ő Ö Ü Ö Ö ő ü ó í ü ü ő ü ó Ö ó ő ó ó ő ó ő í ő í ü ő ö ö ö ü í ü ö ö ö ö Ö ő ő Ö ő í ó ő ó ő Ö í ő ő ő ő ü ő ő ö ó ű ö ó ö ú ő ő ó ü ö í ü ö ö ó í ú ő ó ő í ö ö ö í ő ö ő ő ó ü ö ú ü ő ó ó ő ó ő ó í í

Részletesebben

É É É Ó Ö É í Ö ő ü ó ő ó ű Á ű ó ő ó ü ó ő ű ő Ö ü É É É ó É ó ü ű í Ö ü ó ű í ó ő ó ő ü ó ü ő ó É Í ő ő ő Ú ó ő ő ő ó ű ó ő ó ü ő ő ő í ü ő ü ő ó Ü ő ó ő ő ó ő Ú ő ő ó ő í ó ő ü ó Í ő ő ü ő É í ő ü ó

Részletesebben

ő ö é ü ö é Ö é ő ü é í ü é é ő ö é ő ö Á ó ü ö é í é ö é Ö é ő ü ü é í é é ó é é í í é é ő ü í ő Ö í é ő é é ő é ő éü ú ü ö ő í Ú Ú ö É í í ü ó ó ó ü ő ö é í ó ö é í ö é é í ö é ó ű ő ö é ő ű ő í é í

Részletesebben

ú Ö ü ő ő ú ú ű ő í ó ó í ó ú ő ü ú ű ő í ó ó í ó ű í ó ő Í ő ü ú ő ő í ó ú Ö ő Ü ó ő ő É ó ó ó ó ő ő ú ű ő í ó ú ű ő ú ú ő ű ő í ő ó í ű ő ü ú ó ő ő ó ű ő ő í í í í ó ű ú ő Á ó ő Á ú ó ó ő ó í ó ű í í

Részletesebben

ú ő ó ú ö ő ü ú ö ő ó ó ó ü ő í ö í ó ú ő ó ó ó ú ó ú ó ő ő ö ö ő ó ú ó ő ó ő í Á Á ö ö ó ő ú ö ő ú ó í ő ü ü ü í ú ü ü ü ó ú í ü í ó ő ó ő í ú ü ú ó ü ü ö ó ü ó í ü ó ő ö ö í ü ú ó ő ó í ó ő ó í ó ó í

Részletesebben

Á ó ü ő Ö Á ü ó ü ő Í ü Í Ó ü ő ő ó ó ó Í ó ü ó ő ő ó ó ü ú Í ő ő ó Ó ő ó ü ó Á ü ó ő ó Í Á Í ő ó ó ó ő ő Á ó ó ú ő Í ő ű ó Ó ü ó ó ú ó ő ú ü ő ó ó ó ő ó ó Ö ó ó ő ó ő ó ő ü ű ő ó ó ő ú ő ú ü Í ü ő ó ó

Részletesebben

ü ö Ö ü ó ü ó ó ó Á Ő É ö Ö ü ó ü ú ó ó ó ö ó í í ö ú Ó É ö Ö ü ó ü ü ó ó ó ö ó í ü ö Ö ó ü ü ü ó ó ó ö ó ü í í í ó í ú ű ű ü ű ú í ü ö ö í ö ú ü ó ú ú ű í ü ö ö ó ú ó í ü ú ó ü ó ó ű ó í ü ű ü í ű í

Részletesebben

ü ó Ö ü í ü ü ü ö É ó ó í ó ó ö ó ö ö ö í í ű ü ü ü Í í ü ü ü ö í ó í ó ó í ó í É ü ö í Í É í ö ú í ó í ö ö ó í ö ó ó ó ö ó ö í í ó ó í ó ó Ö í ö ö ó ö ó ú ó ö ó í ó ó í í ü ó í ö ó ó ü ü ó ö ó ú í ó í

Részletesebben

Imperatív programozás

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]

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

Imperatív programozás

Imperatív programozás Imperatív programozás 7. Előadás Függvények, láthatóság (folytatás) Modulok Kivételkezelés Beágyazott függvény def lnko(x, y): def kivon(m, n): return m - n while not (x == y) : if x > y : x = kivon(x,y)

Részletesebben

Párhuzamos programozás Haskellben (folytatás)

Párhuzamos programozás Haskellben (folytatás) Párhuzamos programozás Haskellben (folytatás) Mit tudtunk meg eddig a párhuzamos programokról? Párhuzamos programozással gyorsíthatunk a programon, miközben megőrizzük a determinisztikusságát. Teljesen

Részletesebben

Tisztán funkcionális adatszerkezetek (folytatá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

Részletesebben

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN Objektum Orientált Programozás 11. Kivételkezelés 44/1B IT MAN B IT v: 2016.05.03 MAN Pici elmélet A Java kivételkezelésének célja a programfutás során keletkezett hibák kiszűrése és megfelelő kezelése.

Részletesebben

2018, Diszkre t matematika. 10. elo ada s

2018, Diszkre t matematika. 10. elo ada s Diszkre t matematika 10. elo ada s MA RTON Gyo ngyve r mgyongyi@ms.sapientia.ro Sapientia Egyetem, Matematika-Informatika Tansze k Marosva sa rhely, Roma nia 2018, o szi fe le v MA RTON Gyo ngyve r 2018,

Részletesebben

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

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

Részletesebben

Kivételek, kivételkezelés a C++ nyelvben

Kivételek, kivételkezelés a C++ nyelvben 2009. Kivételek, kivételkezelés a C++ nyelvben Haladó C++ programozás Kurucz Attila ELTE - IK 2009.06.09. Tartalomjegyzék Tartalomjegyzék... 2 Mi a kivételkezelés?... 3 Alapfogalmak... 3 Kivétel... 3 Try

Részletesebben

Programozás alapjai. 5. előadás

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

Részletesebben

1. Egészítsük ki az alábbi Python függvényt úgy, hogy a függvény meghatározza, egy listába, az első n szám faktoriális értékét:

1. Egészítsük ki az alábbi Python függvényt úgy, hogy a függvény meghatározza, egy listába, az első n szám faktoriális értékét: Az írásbeli vizsgán, az alábbiakhoz hasonló, 8 kérdésre kell választ adni. Hasonló kérdésekre lehet számítani (azaz mi a hiba, egészítsük ki, mi a függvény kimeneti értéke, adjuk meg a függvényhívást,

Részletesebben

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek Programozás alapjai gyakorlat 4. gyakorlat Konstansok, tömbök, stringek Házi ellenőrzés (f0069) Valósítsd meg a linuxos seq parancs egy egyszerűbb változatát, ami beolvas két egész számot, majd a kettő

Részletesebben

Pénzügyi algoritmusok

Pénzügyi algoritmusok Pénzügyi algoritmusok A C++ programozás alapjai Tömbök (3. rész) Konstansok Kivételkezelés Tömbök 3. Többdimenziós tömbök Többdimenziós tömbök int a; Többdimenziós tömbök int a[5]; Többdimenziós tömbök

Részletesebben

1. Jelölje meg az összes igaz állítást a következők közül!

1. Jelölje meg az összes igaz állítást a következők közül! 1. Jelölje meg az összes igaz állítást a következők közül! a) A while ciklusban a feltétel teljesülése esetén végrehajtódik a ciklusmag. b) A do while ciklusban a ciklusmag után egy kilépési feltétel van.

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

Emlékeztető: a fordítás lépései. Szimbólumtábla-kezelés. Információáramlás. Információáramlás. Információáramlás.

Emlékeztető: a fordítás lépései. Szimbólumtábla-kezelés. Információáramlás. Információáramlás. Információáramlás. Emlékeztető: a fordítás lépései Forrás-kezelő (source handler) Szimbólumtábla-kezelés Fordítóprogramok előadás (A, C, T szakirány) Lexikális elemző (scanner) Szintaktikus elemző (parser) Szemantikus elemző

Részletesebben

2016, Diszkrét matematika

2016, Diszkrét matematika Diszkrét matematika 3. előadás Sapientia Egyetem, Műszaki és Humántudományok Tanszék Marosvásárhely, Románia mgyongyi@ms.sapientia.ro 2016, őszi félév Miről volt szó az elmúlt előadáson? A gyorshatványozás

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

Funkcioná lis prográmozá s Start

Funkcioná lis prográmozá s Start Start Ez a jegyzet a tudásom és a http://pnyf.inf.elte.hu/fp/index.xml szerint készült, előfordulhatnak benne hibák, de igyekszem megértetni. Elsőnek érdemes elolvasni, kis leírás a Haskell programnyelvről:

Részletesebben

Kivételek kezelése (exception handling) Hibakezelés old style. Kivételkezelés

Kivételek kezelése (exception handling) Hibakezelés old style. Kivételkezelés Kivételek kezelése (exception handling) Hibakezelés old style class Szamolo { void szamol( String s, int i ) { int d; if (i!= 0) d = (i+1)/i; else if (s!= null) d = s.length(); else if (i > 10) // applikációs

Részletesebben

Algoritmusok - pszeudókód... 1

Algoritmusok - pszeudókód... 1 Tartalomjegyzék Algoritmusok - pszeudókód... 1 Abszolút érték... 1 Hányados ismételt kivonással... 1 Legnagyobb közös osztó... 1 Páros számok szűrése... 2 Palindrom számok... 2 Orosz szorzás... 2 Minimum

Részletesebben

Funkcionális programozás

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

Részletesebben

DSL-eket kétféleképpen szoktak megvalósítani:

DSL-eket kétféleképpen szoktak megvalósítani: Beágyazott nyelvek Bevezetés Domain-specific language (DSL), szakterület-specifikus nyelv : A computer programming language of limited expressiveness focused on a particular domain. Martin Fowler, Domain-Specific

Részletesebben

OOP: Java 1.Gy: Java alapok

OOP: Java 1.Gy: Java alapok OOP: Java 1.Gy: Java alapok Eclipse alapok O O P Objektum Orientált Programozás 31/1 B ITv: MAN 2019.02.25 Feladat Írja meg a 4 alapműveletet megvalósító Kalkulátor programot Java nyelven. Az elvégzendő

Részletesebben

Java-ról Kotlinra. Ekler Péter AutSoft BME AUT. AutSoft

Java-ról Kotlinra. Ekler Péter AutSoft BME AUT. AutSoft Java-ról Kotlinra Ekler Péter peter.ekler@aut.bme.hu BME AUT Tartalom Java és Kotlin kapcsolata Hogyan próbálhatjuk ki? Kotlin kultúra kialakítása cégen belül Milyen a Kotlin a Java-hoz képest? Történet

Részletesebben

Adatbázis-lekérdezés. Az SQL nyelv. Makány György

Adatbázis-lekérdezés. Az SQL nyelv. Makány György Adatbázis-lekérdezés Az SQL nyelv Makány György SQL (Structured Query Language=struktúrált lekérdező nyelv): relációs adatbázisok adatainak visszakeresésére, frissítésére, kezelésére szolgáló nyelv. Születési

Részletesebben

Sapientia Egyetem, Műszaki és Humántudományok Tanszék.

Sapientia Egyetem, Műszaki és Humántudományok Tanszék. Kriptográfia és Információbiztonság 8. előadás Sapientia Egyetem, Műszaki és Humántudományok Tanszék Marosvásárhely, Románia mgyongyi@ms.sapientia.ro 2017 Miről volt szó az elmúlt előadáson? A Crypto++

Részletesebben

Kriptográfia 0. A biztonság alapja. Számítás-komplexitási kérdések

Kriptográfia 0. A biztonság alapja. Számítás-komplexitási kérdések Kriptográfia 0 Számítás-komplexitási kérdések A biztonság alapja Komplexitás elméleti modellek független, egyenletes eloszlású véletlen változó értéke számítással nem hozható kapcsolatba más információval

Részletesebben

Megoldott feladatok. Informatika

Megoldott feladatok. Informatika Megoldott feladatok Informatika I.81. Egy autóbuszjegyen az n*n-es négyzethálóban összesen k lyukasztás lehet. Ha a buszjegyet fordítva helyezzük a lyukasztóba, akkor a jegy tükörképét kapjuk. (Csak egyféleképpen

Részletesebben

Adatbázisok* tulajdonságai

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

Részletesebben

Kivételkezelés a C++ nyelvben Bevezetés

Kivételkezelés a C++ nyelvben Bevezetés Kivételkezelés a C++ nyelvben Bevezetés Miskolci Egyetem Általános Informatikai Tanszék Kivételkezelés a C++ nyelvben CPP9 / 1 Hagyományos hibakezelés Függvény visszatérési értéke (paramétere) hátrányai:

Részletesebben

Mintavételes szabályozás mikrovezérlő segítségével

Mintavételes szabályozás mikrovezérlő segítségével Automatizálási Tanszék Mintavételes szabályozás mikrovezérlő segítségével Budai Tamás budai.tamas@sze.hu http://maxwell.sze.hu/~budait Tartalom Mikrovezérlőkről röviden Programozási alapismeretek ismétlés

Részletesebben

Lineáris belsőpontos Newton-iteráció

Lineáris belsőpontos Newton-iteráció Lineáris belsőpontos Newton-iteráció Implementáció Haskellben Dr. Érdi Gergő http://gergo.erdi.hu/ Az alábbiakban összeállítunk egy Haskell modult, amely a belsőpontos Newton-iteráció algoritmusával old

Részletesebben

Sapientia Egyetem, Matematika-Informatika Tanszék.

Sapientia Egyetem, Matematika-Informatika Tanszék. Kriptográfia és Információbiztonság 7. előadás Sapientia Egyetem, Matematika-Informatika Tanszék Marosvásárhely, Románia mgyongyi@ms.sapientia.ro 2018 Miről volt szó az elmúlt előadáson? Kriptográfiai

Részletesebben

Egyszerű programok készítése... 56 Kifejezések... 57 Bitszintű műveletek... 57 Relációs műveletek... 58

Egyszerű programok készítése... 56 Kifejezések... 57 Bitszintű műveletek... 57 Relációs műveletek... 58 Tartalomjegyzék Algoritmusok - pszeudókód... 1 Abszolút érték... 1 Hányados ismételt kivonással... 1 Legnagyobb közös osztó... 1 Páros számok szűrése... 2 Palindrom számok... 2 Orosz szorzás... 3 Minimum

Részletesebben

ORACLE. SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

ORACLE. SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) közönséges felhasználók Oracle SQL*Plus SQL ORACLE Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók Adatszótár: metaadatokat tartalmazó, csak olvasható

Részletesebben

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat Kivételkezelés, beágyazott osztályok Nyolcadik gyakorlat Kivételkezelés Nem minden hibát lehet fordítási időben megtalálni Korábban (pl. C-ben) a hibakezelést úgy oldották meg, hogy a függvény hibakódot

Részletesebben

Feladatok cím szerint

Feladatok cím szerint Házi feladat témák Feladatok cím szerint ADATBÁZIS NÉLKÜL 1. Római szám - decimális szám konverter 2. Caesar-titkosító 3. Kalkulátor ADATBÁZISSAL 4. Irányítószám-konverter (.csv) 5. Periódikus tábla (.xml)

Részletesebben

Globális operátor overloading

Globális operátor overloading Programozás II. 9. gyakorlat Operátor overloading 2: Unáris operátorok, globálisan megvalósított operátorok, > operátorok Kivételkezelés, IO library Globális operátor overloading Előző alkalommal

Részletesebben

Programozás II. 2. Dr. Iványi Péter

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

Részletesebben