Funkcionális programozás 2. gyakorlat

Slides:



Advertisements
Hasonló előadás
Szerver oldali programozás
Advertisements

Definíciók: Algoritmus: bármely véges sok lépéssel leírható tevékenység. Olyan pontos előírás, amely megmondja, hogy egy adott típushoz tartozó feladat.
1 Bori Tamás Operációs Rendszerek I. 2. óra: parancssori alapok.
Digitális képanalízis Félévi megbeszélnivalók. A tárgy •címe: Digitális képanalízis •szakirányos tárgy •neptun-kód: BMEEOFTASJ5 (BSc) •előadó és gyakorlatvezető:
Operációs Rendszerek I.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Adatbázis alapú rendszerek 1. Gyakorlat Követelmények / SQL.
Adminisztratív teendők Kacsuk Péter Egyetemi tanár
Adminisztratív kérdések
Halmazok, műveletek halmazokkal
Tóth Dániel, Szatmári Zoltán
JavaScript.
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
Turbo Pascal Változók.
Bevezetés a Java programozásba
1 Programozás alapjai GEIAL312B (ANSI C) BSc (Bachelor of Science) / Alap képzés 2005/2006. őszi félév Miskolci Egyetem Általános Informatikai Tanszék.
4. előadás (2005. március 8.) Pointerek Pointer aritmetika
ETR Tanügy DEXTER Informatikai kft.. ETR Képesítési követelmények Tantervek Oktatási Tevékenység Oktatási folyamat Szervezése, lebonyolítása Erőforrások.
2. Gyakorlat Követelmények / „C” ismétlés
Programozás II. 3. Gyakorlat C++ alapok.
Parancssori argumentumok Primitív típusok Operátorok Vezérlési szerkezetek Tömbök Ürmös Beáta, 2011.
Táblázatkezelés alapjai MS Excel, OpenOffice Calc
A CLIPS keretrendszer CLIPS "C" Language Integration Production System.
C A C nyelv utasításai.
Borland C/C++ mintapéldák fájlokra. 1. példa Írjon olyan programot,amely megnyit egy hw.txt fájlt és írja bele a Hello világ szöveget. Ez után zárja le.
Ruby nyelv. Története Yukihiro Matsumoto (szül ápr. 4.) alkotta meg, az ideális script nyelv hosszú eredménytelen keresése után. A lehetséges jelöltek.
Programozás I. Horváth Ernő.
WEB Technológiák Dr. Pance Miklós – Kolcza Gábor Miskolci Egyetem.
1 Programozás alapjai GEIAL312B (ANSI C) BSc (Bachelor of Science) / Alap képzés 2005/2006. őszi félév Miskolci Egyetem Általános Informatikai Tanszék.
Valós számok Def. Egy algebrai struktúra rendezett test, ha test és rendezett integritási tartomány. Def. Egy (T; +,  ;  ) rendezett test felső határ.
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
A RobotinoView programozása
Vizuális és web programozás II.
Bevezetés a C++ programozási nyelvbe
Operációs rendszerek gyakorlat 4. Gyakorlat Vakulya Gergely.
Operációs rendszerek gyakorlat 8. Gyakorlat Vakulya Gergely.
PHP I. Alapok. Mi a PHP? PHP Hypertext Preprocessor Szkriptnyelv –Egyszerű, gyors fejlesztés –Nincs fordítás (csak értelmező) Alkalmazási lehetőségek:
Táblázatkezelés alapjai MS Excel, OpenOffice Calc
Táblázatkezelés alapjai MS Excel, OpenOffice Calc
Operációs rendszerek gyakorlat 1. Bevezetés Vakulya Gergely.
Kifejezések a Pascalban Páll Boglárka. Ismétlés: Ahogy algoritmikából láttuk, a kifejezések a Pascal nyelvben is operátorokból és operandusokból állnak.
Kifejezések. Algoritmus számol; Adott összeg; összeg:=0; Minden i:=1-től 5-ig végezd el Ha 2 | i akkor összeg:=összeg+2*i Ha vége Minden vége Algoritmus.
Operátorok Értékadások
Turbo Pascal Indítás: C:\LANGS\Turbo Pascal Turbo Pascal.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 1. gyakorlat.
Műszer vezérlő - kezelő program GPI-745A teszterhez.
– SQL 3: SELECT - 1. – Tarcsi Ádám, január 31. Adatbázis gyakorlat.
Objektumvezérelt rendszerek tervezése 7. óra – Iterator, State, Interpreter © Szőke Gábor.
A Visual Basic nyelvi elemei
Operátorok Vezérlési szerkezetek Gyakorlás
Táblázatkezelés KÉPLETEK.
Fontos tudnivalók A MATLAB egy fajta objektummal dolgozik (Mátrix)
Digitális képanalízis Félévi megbeszélnivalók. A tárgy címe: Digitális képanalízis szakirányos tárgy neptun-kód: BMEEOFTASJ5 (BSc) előadó és gyakorlatvezető:
Táblázatkezelés alapjai MS Excel, OpenOffice, LibreOffice Calc
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 1. gyakorlat.
Halmazok Érettségi követelmények:
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 1. gyakorlat.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás I. Követelmények.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás I. 3. gyakorlat.
Európa regionális társadalomföldrajza I. Bottlik Zsolt, Szabó Pál
Készítette: Rummel Szabolcs Elérhet ő ség: Linux kezelése.
Alkalmazásfejlesztés F#-ban Dunaújvárosi Főiskola Kiss Gyula mérnökinformatikus hallgató Nemzeti Tehetség Program Tehetségútlevél Program „NTP-TÚP ”
Fordítóprogramok gyakorlat tavaszi félév gyakorlatvezető:Kitlei Róbert szoba:D 2-616B honlap:
EVA 1 – 5. kurzus Kanyó Kristóf.
Informatikai gyakorlatok 11. évfolyam
Kifejezések C#-ban.
Programozás C# -ban Elágazások.
A CLIPS keretrendszer
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Előadás másolata:

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

Elérhetőség Batha Dorián E-mail: batha.dorian.elte@gmail.com Tárgy: [fpgyak]_<gyakorlat_száma> Anyagok: kacsi3.web.elte.hu Feladatok beadása: https://pnyf.inf.elte.hu/bead/

Á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

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

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ű

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 ?)

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

Ó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

Lexikális elemek Megjegyzések Literálok 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)

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

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!

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

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é

Listák Üres lista: [ ] Elemek felsorolásával: Pont-pont kifejezéssel: [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)

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

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..] ]