Oktatási segédlet. Harmadik, átdolgozott kiadás. Angol nyelvű fejezetekkel.
Értesítőt kérek a kiadóról
A beállítást mentettük, naponta értesítjük a beérkező friss kiadványokról
A beállítást mentettük, naponta értesítjük a beérkező friss kiadványokról
Előszó
Ez a jegyzet oktatási segédletként a Deklaratív programozás (korábban Programozási paradigmák) c. tárgy funkcionális programozással foglalkozó részéhez készült.
1.1. A programozási paradigmákról...
Tovább
Előszó
Ez a jegyzet oktatási segédletként a Deklaratív programozás (korábban Programozási paradigmák) c. tárgy funkcionális programozással foglalkozó részéhez készült.
1.1. A programozási paradigmákról
A programozási paradigma1 viszonylag újkeletű szakkifejezés (terminus technicus). A paradigma az Idegen szavak és kifejezések szótára szerint görög-latin eredetű, és két jelentése is van:
1. bizonyításra vagy összehasonlításra alkalmazott példa;
2. (nyelvtani) ragozási minta.
Az Akadémiai Kislexikon a fentieken túl még egy, a mi szempontunkból fontos jelentését említi:
3. valamely tudományterület sarkalatos megállapítása.
Programozási paradigmának nevezzük:
1. azt a módot, ahogyan a programozási alapfogalmakat felhasználják valamely programozási nyelv létrehozására; ill.
2. azt a programozási stílust, amelyet valamely programozási nyelv sugall.
A programozási paradigmáknak két alaptípusa van: imperatív és deklaratív. Minden programnak, legyen szó bármilyen stílusról, van valamilyen szerkezete. E tekintetben különbséget kell tennünk a monolitikus és a strukturált (moduláris) programozás között. A monolitikus program
• lineáris szerkezetű, azaz a programszövegben egymás után álló programelemeket rendszerint az adott sorrendben kell végrehajtani vagy kiértékelni, és nincsenek benne bonyolultabb adatszerkezetek;
• egyetlen fordítási egység, azaz változás esetén a teljes programszöveget újra kell fordítani.
Nyilvánvaló, hogy ilyen stílusban nem lehet nagyméretű programokat készíteni. A hatvanas évek közepén mozgalom indult a strukturált programozási elvek elfogadtatására, a megfelelő programozási nyelvek és fordítóprogramok kidolgozására és elterjesztésére, a szükséges elméleti és módszertani háttér kimunkálására.
Vissza
Tartalom
1. Bevezetés 9
1.1. A programozási paradigmákról 9
1.2. Az imperatív programozási paradigma 10
1.3. A deklaratív programozási paradigma 11
1.3.1. A logikai programozási paradigma 11
1.3.2. A funkcionális programozási paradigma 11
1.4. Egyszerű példák SML-ben 12
1.4.1. A funkcionális program 12
1.4.2. Négyzetre emelés 12
1.4.3. A read-eval-print ciklus 12
1.4.4. Pénzváltás 12
1.5. Hivatkozási átlátszóság 13
1.6. A függvényértékről 14
1.7. Funkcionális nyelvek jellemzői 15
1.8. Az SML fontosabb jellemzői 15
1.9. SML-értelmezők és fordítók 16
1.10. Információforrások 17
1.11. Köszönetnyilvánítás 18
1.12. Hibajelentés 18
2. Nevek, függvények, egyszerű típusok 19
2.1. Értékdeklaráció 19
2.1.1. Névadás állandónak 19
2.1.2. Névadás függvénynek 20
2.1.3. Nevek újradefiniálása 21
2.1.3.1. Nevek képzése 21
2.2. Egész, valós, füzér, karakter és más egyszerű típusok 22
2.2.1. Egészek és valósak 22
2.2.1.1. A real, floor, ceil, aba, round és trunc függvény 22
2.2.1.2. Alapműveletek előjeles egész számokkal 23
2.2.1.3. Alapműveletek valós számokkal 24
2.2.1.4. Precedencia 25
2.2.1.5. Alapműveletek előjel nélküli egészekkel 25
2.2.1.6. Típusmegkötés 26
2.2.2. Füzérek 26
2.2.2.1. Escape-szekvenciák 27
2.2.2.2. Gyakori műveletek füzérekkel 27
2.2.3. Karakterek 28
2.2.3.1. Gyakori műveletek karakterekkel 28
2.2.4. Igazságértékek, logikai kifejezések, feltételes kifejezések 28
2.2.4.1. Feltételes operátor 28
2.2.4.2. Logikai operátorok 29
2.2.4.3. Tesztelő függvények 30
3. Párok, ennesek, rekordok 31
3.1. Pár, ennes 31
Típuskifejezés 31
3.1.1. Példa: vektorok 31
3.1.2. Függvény több argumentummal és eredménnyel 32
3.1.2.1. Gyakorló feladatok 32
3.1.3. Ennes elemeinek kiválasztása mintaillesztéssel 33
3.1.4. A nullás 33
3.1.4.1. A print, a use és a load függvény 33
3.1.4.2. Mi a különbség? 33
3.2. Rekord 34
3.2.1. Rekordminta 35
4. Kifejezések 37
4.1. Újra az infix operátorról 37
4.1.1. Infix operátor kötése 38
4.2. Kifejezések kiértékelése az SML-ben 39
4.2.1. Mohó kiértékelés 40
4.2.1.1. Mohó kiértékelés rekurzív függvények esetén 40
4.2.1.2. Iteratív függvények 40
4.2.1.3. Feltételes kifejezések speciális kiértékelése 41
4.2.1.4. Gyakorló feladat 42
4.2.2. Lusta kiértékelés 42
4.2.3. A mohó és a lusta kiértékelés összevetése 42
5. Lokális kifejezés, lokális és egyidejű deklaráció, polimorf típusellenőrzés 45
5.1. Lokális kifejezés 45
5.2. Lokális deklaráció 45
5.3. Egyidejű deklaráció 46
5.4. Polimorf típusellenőrzés 46
6. Listák 49
6.1. Típuskifejezések és típusoperátorok 49
6.2. Lista létrehozása 50
6.3. Egyszerű műveletek listákkal 50
6.3.1 Lista elemeinek szorzata 50
6.3.2. Lista legnagyobb eleme 51
6.3.3. Karakter, füzér és lista 51
6.4. Listák vizsgálata és darabokra szedése 52
6.5. Listák és egész számok 52
6.6. Listák összefűzése és megfordítása 54
6.7. Listákból álló lista, párokból álló lista 55
7. Rekurzív függvények 57
7.1. Egész kitevőjű hatványozás 57
7.2. Fibonacci-számok 58
7.3. Egész négyzetgyök közelítéssel 59
7.4. Valós szám négyzetgyöke Newton-Raphson módszerrel 60
7.5. T/4 közelítő értéke kölcsönös rekurzióval 61
7.6. A következő permutált 62
8. Polimorfizmus 67
8.1. Polimorf halmazműveletek 68
9. Adattípusok 71
9.1. A datatype deklaráció 71
9.2. A felsorolásos típus 72
9.3. Polimorf adattípusok 73
9.4. A case-kifejezés 74
10. Részlegesen alkalmazható függvények 75
10.1. Az fn jelölés 75
10.1.1. Függvény definiálása f un, val és val rec kulcsszóval 76
10.2. Részlegesen alkalmazható függvények 76
10.3. Függvény mint argumentum és mint eredmény 77
11. Magasabb rendű függvények 79
11.1. Magasabb rendű függvények 79
11.1.1. secl és secr 79
11.1.2. Kombinátotok 80
11.1.2.1. Két függvény kompozíciója 80
11.1.2.2. Az S, a K és az I kombinátor 81
11.1.3. map és filter 81
11.1.4. takevhile és dropvhile 82
11.1.5. exists és forall 82
11.1.6. foldl és foldr 83
11.1.7. További rekurzív függvények 85
11.1.8. curry és uncurry 85
11.1.9. map újradefiniálása foldr-rel 86
12. Kivételkezelés 87
12.1. Kivétel deklarálása az axcepticm kulcsszóval 87
12.2. Kivétel jelzése a raise kulcsszóval 87
12.2.1. Belső kivételek 88
12.3. Kivétel feldolgozása a handlé kulcsszóval 88
12.4. Néhány példa a kivételkezelésre 88
13. Listák használata: rendezés 91
13.1. Beszúró rendezés
13.1.1. Generikus megoldások
13.1.2. Beszúró rendezés foldr-rel és foldl-lel 92
13.1.3. A futási idők összehasonlítása 92
13.2. Gyorsrendezés 93
13.3. összefésülő rendezés 94
13.3.1. Fölülről lefelé haladó összefésülő rendezés 94
13.3.2. Alulról fölfelé haladó összefésülő rendezés 95
13.4. Simarendezés 97
14. Bináris fák 99
14.1. Egyszerű műveletek bináris fákon 100
14.2. Lista előállítása bináris fa elemeiből 102
14.3. Bináris fa előállítása lista elemeiből 103
14.4. Elem törlése bináris fából 104
14.5. Bináris keresőfák
15. Lusta lista 107
15.1. Elemi feldolgozási műveletek sorozatokkal 108
15.2. Magasabb rendű függvények sorozatokra 109
15.3. Néhány összetett példa 110
15.3.1. Álvéletlen-számok 110
15.3.2. Prímszámok 111
15.3.3. Numerikus számítások 111
15.4. Sorozatok sorozata és egymásba ékelése 112
15.4.1. Keresztszorzatokból álló lista 112
15.4.2. Keresztszorzatokból álló sorozat 113
16. Példaprogramok: fák kezelése 115
16.1. Fa adott tulajdonságának ellenőrzése (ugyanannyi) 115
16.2. Fa adott tulajdonságú részfáinak száma (bea) 117
16.3. Fa adott tulajdonságú részfáinak száma (testverE) 118
16.4. Fa adott elemeinek összegzése (szintOsaz) 119
16.5. Kifejezésfa egyszerűsítése (egyszerűsít) 121
16.6. Kifejezésfa egyszerűsítése (coeff) 122
16.7. Szövegfeldolgozás (parPairs) 123
17. Példaprogramok: füzérek és listák kezelése 125
17.1. Füzér adott tulajdonságú elemei (mezők) 125
17.2. Füzér adott tulajdonságú elemei (basename) 126
17.3. Füzér adott tulajdonságú elemei (rootname) 127
17.4. Lista adott tulajdonságú részlistái (szomsor) 128
17.5. Bináris számok inkrementálása (binc) 128
17.6. Mátrix transzponáltja (trans)
18. Az SML szintaxisa j33
18.1. Fogalmak és jelölések j33
18.1.1. Nevek 133
18.1.2. Infix operátorok 134
18.1.3. Jelölések 134
18.2. Az SML Core language szintaxisa 135
18.2.1. Kifejezések és klózsorozatok 135
18.2.2. Declarációk és kötések 136
18.2.3. Típuskifejezések 137
18.2.4. Minták 137
18.2.5. Szintaktikai korlátozások 137
A. Válogatás az SML '97 könyvtáraiból 139
A.1. Structure Binaryset 141
A.2. Structure Bool 143
A.3. Structure Char 144
A.4. Structure General 148
A.5. Structure Int 150
A.6. Structure Intset 153
A.7. Structure List 155
A.8. Structure Listsort 158
A.9. Structure Math 159
A.10. Structure Meta 161
A.11. Structure Option 165
A.12. Structure Random 166
A.13. Structure Real 167
A.14. Structure Regex 170
A.15. Structure String 175
A.16. Structure StringCvt 178
A.17. Structure Substring 180
A.18. Structure Susp 185
A.19. Structure TextIO 186
A.20. Structure Time 190
A.21. Structure Timer 192
A.22. Structure Vector 193
A.23. Structure Word 196
A.24. Structure Word8 199
Hanák D. Péter műveinek az Antikvarium.hu-n kapható vagy előjegyezhető listáját itt tekintheti meg: Hanák D. Péter könyvek, művek
Megvásárolható példányok
Nincs megvásárolható példány
A könyv összes megrendelhető példánya elfogyott. Ha kívánja, előjegyezheti a könyvet, és amint a könyv egy újabb példánya elérhető lesz, értesítjük.
Google, Facebook, Apple, Microsoft fiókkal való belépés/regisztráció eseténautomatikusan elfogadja az Általános Szerződési Feltételeket.
Elfelejtett jelszó
Kérjük, adja meg azonosítóját, és a hozzá tartozó email címet, hogy jelszavát elküldhessük Önnek!
A *-gal jelölt mezők kitöltése kötelező!
Azonosító név/E-mail cím* Azonosító és e-mail cím megegyező
E-mail cím*
(2009 március óta a regisztrált ügyfelek azonosító neve megegyezik az email címmel)
Ha az azonosítóját sem tudja megadni, kérjük, hívja az ügyfélszolgálati vonalat:
+36-62-452-833
×
1
2
3
Regisztráció
×
Regisztráció
Regisztrációja sikeresen megtörtént.
Megadott e-mail címére megerősítő e-mailt küldtünk. Ahhoz, hogy a regisztrációja véglegesedjen, és le tudja adni rendeléseit, kérjük, kattintson a levélben található linkre. A megerősítő link a kiküldéstől számított 48 óráig érvényes, ezután a regisztrációs adatok törlésre kerülnek.
Kérjük, jelölje meg az érdeklődési körébe tartozó témaköröket!
Mehet
×
Regisztráció
Az ön által megjelölt témakörök:
Temakor_1
Beállíthatja, hogy emailben értesítőt kapjon az újonnan beérkezett példányokról a bejelölt témaköröknek megfelelően.
Beállított értesítőit belépés után bármikor módosíthatja az Értesítő menüpont alatt:
létrehozhat új témaköri értesítőt
inaktiválhatja értesítőjét, ha éppen nem kíván a megadott témában értesítőt kapni
törölheti véglegesen az adott értesítőjét
szerkesztheti jelenlegi értesítőjét, ha még részletesebben szeretné megadni mi érdekli.
Az Ön választása alapján naponta vagy 3 naponta kap tőlünk emailt a beállított értesítőjéről.