Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Funkcionális programozás 2. gyakorlat 2011.02.15. Batha Dorián.

Hasonló előadás


Az előadások a következő témára: "Funkcionális programozás 2. gyakorlat 2011.02.15. Batha Dorián."— Előadás másolata:

1 Funkcionális programozás 2. gyakorlat Batha Dorián

2 Elérhetőség Batha Dorián Tárgy: [fpgyak]_ Anyagok: kacsi3.web.elte.hu Feladatok beadása: https://pnyf.inf.elte.hu/bead/

3 Általános tudnivalók +/- feladatok: min. 8 leadása, végén +-ban kell lenni Kisbeadandók: hetente; 8 jó megoldás kell (lesznek szorgalmik is) Nagybeadandó: 1 db lesz (szükséges feltétele a zh-nak) Csoport zh: 1 db lesz a félévben

4 BSc 1. évesek: 1 db jegy (5 kredit)  Gyakorlat kötelező  Jegy: csoport zh és a vizsga zh átlaga BSc 3. évesek: 1 v 2 db jegy (2 v 2+2 kredit)  Gyakorlat opcionális  Gyakorlat: csoport zh  Kollokvium: félév végén géptermi zh

5 Bevezetés – a Haskell A félév tananyaga: Haskell nyelv alapjainak megismerése  Funkcionális nyelv  Erősen típusos  Lusta kiértékelésű

6 Programozási környezet Ajánlott: Linux Shell + ghci GHC: Glasgow Haskell Compiler  Fordító: a megadott modulban definiált main nevű akcióból futtatható programot készít GHCi:  Interpreter: modulok betöltése; kifejezés kiértékelése; akció végrehajtása Próbáljuk ki! (Verzió > 6.8 ?)

7 Az interpreter parancsai Elindítás: ghci paranccsal Parancssor elején: betöltött modul(ok) Kezdetben alapértelmezés: Prelude> Modul betöltése: :l modulnév vagy fájlnév Legutóbb betöltött modul újratöltése: :r Kifejezés kiértékelése vagy akció végrehajtása: írjuk be a kifejezést vagy akciót, aztán enter. Többsoros kifejezés nincs -> modul késíztése Kilépés: :q vagy Ctrl+d (csak Linuxban) Fel és le nyilak: előzőleg begépelt parancsok Tab: parancsok és függvénynevek kiegészítése

8 Órai anyag mentése script mentes.txt (Script started, file is mentes.txt) exit (Script done, file is mentes.txt) Megjegyzések: - A scriptet a ghci indítása előtt indítsuk el - A mentes.txt tartalma a "Script started" és "Script done" közti rész lesz. - A script-ből kilépés Ctrl+d is lehet exit helyett

9 Lexikális elemek Megjegyzések  Egysoros: --  Többsoros: {- megjegyzés -}. Egymásba ágyazhatók. Literálok  Egész számok: 1, 5, 119  Tizedestörtek: 1.1, 0.45, 3e10, 1.3e-10  Hexadecimális számok: 0xABCD, 0xabcd, 0XabCD  Oktális számok: 0o776, 0O11  Karakterek: ‘a’, ‘ű’, ‘\n’, ‘\t’  Szövegek: ”alma” (karakterek listája)

10 Operátorok – kötési erősségek OperátorKötés ^, ^^, **(.(.)) *, /((.).) +, -((.).) ==, /=,, >= - &&(.(.)) ||(.(.))

11 Hatványozás Hatványozás nemnegatív kitevővel: 2 ^ 3 Hatványozás egész kitevővel: 2 ^^ (-3) Hatványozás valós kitevővel: 2 ** 0.5 A hatványozás jobbra köt, ellentétben a négy elemi művelettel!

12 Gyökvonás, negálás Gyökvonás  sqrt 2 Negálás  Az egyetlen prefix operátor  Precedenciája, kötése megegyezik a kivonáséval  zárójelezése (-6) - 2  - 6 ^ 2 zárójelezése -(6 ^ 2)  Hibás kifejezés: ; helyesen: 3 + (-11)

13 További műveletek A függvényeket `` jel közé téve infix operátorként is használhatjuk. div (quot) - maradékos osztás mod (rem) - maradékképzés Az infix módon használt ‘div‘ és ‘mod‘ kötési erőssége ugyanaz, mint a ‘*‘ és ‘/‘ operátoroké

14 Listák Üres lista: [ ] Elemek felsorolásával:  [1,3,8,6]  [‘a’, ‘x’]  [True,False,True] Pont-pont kifejezéssel:  [1..4] -> [1,2,3,4]  [2,4..11] -> [2,4,6,8,10]  [0..] -> a természetes számok (végtelen lista)  [1,3..] -> a páratlan számok (végtelen lista)

15 Alapvető függvények lenght [1..10] = 10 [1..10] !! 0 = 1 „he” ++ „llo” = „hello” sum [1..10] = product [1..10] = 1 * 2 *... * 10

16 Halmazkifejezés Matematikai példakép: { n^2^ | n ∈ N, n páros } Haskellben: [ n^2 | n <- [1..], n `mod` 2 == 0 ] Tetszőlegesen sok generátor és feltétel. A halmazokkal ellentétben az elemekből több is lehet és számít a sorrend. A generátorokkal bevezetett új változók csak a generátortól jobbra láthatóak, tehát a következő hibás: [ n^2 | n `mod` 2 == 0, n <- [1..] ]


Letölteni ppt "Funkcionális programozás 2. gyakorlat 2011.02.15. Batha Dorián."

Hasonló előadás


Google Hirdetések