ÖSSZETETT ADATTÍPUSOK
|
|
- Ignác Szőke
- 7 évvel ezelőtt
- Látták:
Átírás
1 ÖSSZETETT ADATTÍPUSOK Rekord és ennes Összetett adattípusok: rekord és ennes FP-48 Két különböző típusú értékből rekordot vagy párt képezhetünk. Pl. {x = 2, y = 1.0} : {x : t, y : real} és (2, 1.0) : (t * real) A pár is csak sztaktikus édesítőszer. Pl. (2, 1.0) {1 = 2, 2 = 1.0} {2 = 1.0, 1 = 2} {1 = 1.0, 2 = 2}. Egy párban a tagok sorrendje meghatározó! Az 1 és a 2 is: mezőnevek. Rekordot kettőnél több értékből is összeállíthatunk. Pl. {nev = "Bea", tel = , kor = 19} : {kor : t, nev : strg, tel : t} Egy hasonló rekord egészszám-mezőnevekkel: {1 = "Bea", 3 = , 2 = 19}: {1 : strg, 2 : t, 3 : t} Az utóbbi azonos az alábbi ennessel (n-tuple): ("Bea", 19, ) : (strg * t * t) azaz (strg * t * t) {1 = strg, 2 = t, 3 = t} Egy rekordban a tagok sorrendje közömbös, a tagokat a mezőnév azonosítja. Egy ennesben a tagok sorrendje nem közömbös, a tagokat a pozícionális mezőnév azonosítja.
2 GYENGE ÉS ERŐS ABSZTRAKCIÓ Adattípusok: gyenge és erős absztrakció Aadatabsztrakció, adattípusok: type, datatype FP-50 Gyenge absztrakció: a név szonima, az adatszerkezet részei továbbra is hozzáférhetők. Erős absztrakció: a név új dolgot (entitást, objektumot, izét) jelöl, az adatszerkezet részeihez csak korlátok között lehet hozzáférni. type: gyenge absztrakció; pl. type rat = {num : t, den : t} Új nevet ad egy típuskifejezésnek (vö. értékdeklaráció). Segíti a programszöveg megértését. abstype: erős absztrakció Új típust hoz létre: név, műveletek, ábrázolás, jelölés. Túlhaladott, van helyette jobb: datatype + modulok datatype: modulok nélkül gyenge, modulokkal erős absztrakció; pl. datatype a esetleg = Semmi Valami of a Belső változata az SML-ben: datatype a option = NONE SOME of a Új entitást hoz létre. Rekurzív és polimorf is lehet.
3 Aadatabsztrakció, adattípusok: type, datatype Adattípusok: felsorolásos és polimorf típusok datatype deklarációval FP-51 datatype logi = Igen Nem datatype logi3 = igen nem talan datatype a esetleg = Semmi a Valami Felsorolásos típus. Felsorolásos típus. Polimorf típus. Adatkonstruktornak nevezzük a létrehozott Igen, Nem, igen, nem, talan, Semmi és Valami értékeket. Valami ún. adatkonstruktorfügvény, az összes többi ún. adatkonstruktorállandó. Az adatkonstruktorok a többi értéknévvel azonos névtérben vannak. Típuskonstruktornak nevezzük a létrehozott logi, logi3 és esetleg neveket; esetleg ún. postfix típuskonstruktorfüggvény (vagy típusoperátor), a másik kettő ún. típuskonstruktorállandó (röviden típusállandó). Típusnévként használható a típusállandó (pl. logi), valamt a típusállandóra vagy típusváltozóra alkalmazott típuskontruktorfüggvény (pl. t list vagy a esetleg). A típuskonstruktorok más névtérben vannak, mt az értéknevek. Természetesen az adatkonstruktoroknak is van típusuk, pl. Igen Nem : logi : logi Semmi : a esetleg Valami : a -> a esetleg Példa datatype deklarációval létrehozott adattípust kezelő függvényre fun verz Nem = Igen Igen = Nem LISTÁK
4 ' ' Listák összefűzése (append) és megfordítása (nrev) Listák: append, nrev, revapp, rev FP-53 Két lista összefűzése (append, @ ::!" Az xs-t először az elemeire bontjuk, majd hátulról visszafelé haladva fűzzük az elemeket az ys-hez, ugyanis a listákat csak elölről tudjuk építeni. A lépések száma #$&%. (* append : a list * a list -> a list append(xs, ys) = xs összes eleme ys elé fűzve fun append ([], ys) = ys append (x::xs, ys) = x::append(xs, ys) Lista naív megfordítása (nrev) nrev (' nrev ('! ) nrev A lista elejéről levett elemet egyelemű listaként tudjuk a végéhez fűzni. A lépések száma #$% (* nrev : a list -> a list nrev xs = xs megfordítva fun nrev [] = [] nrev (x::xs) = (nrev [x]. Listák megfordítása: példa nrev alkalmazására Listák: append, nrev, revapp, rev FP-54 Egy példa nrev egyszerűsítésére fun nrev [] = [] nrev (x::xs) = (nrev [x] fun ys = ys ys = x :: ys (* = x :: ys) A :: és jobbra kötnek, precedenciasztjük 5. nrev([1,2,3,4]), nrev([2,3,4])@[1], nrev([3,4])@[2]@[1], nrev([4])@[3]@[2]@[1], nrev([])@[4]@[3]@[2]@[1], []@[4]@[3]@[2]@[1], [4]@[3]@[2]@[1], 4::[]@[3]@[2]@[1], 4::[3]@[2]@[1]), [4,3]@[2]@[1]), 4::([3]@[2])@[1]), []@[4]@(3::[2,1], []@[4]@[3,2,1], nrev rossz hatékonyságú: a lépések száma #$%.
5 Listák összefűzése (revapp) és megfordítása (rev) Listák: append, nrev, revapp, rev FP-55 Egy lista elemeek egy másik lista elé fűzése fordított sorrendben (revapp) (* revapp : a list * a list -> a list revapp(xs, ys) = xs elemei fordított sorrendben ys elé fűzve fun revapp ([], ys) = ys revapp (x::xs, ys) = revapp(xs, x::ys) revapp lépésszáma arányos a lista hosszával. Segítségével rev hatékonyan: (* rev : a list -> a list rev xs = xs megfordítva fun rev xs = revapp (xs, []) Egy 1000 elemű listát rev -"././. lépésben, nrev a nyereség! )010+0!2 )010! ' 43./. 3.. lépésben fordít meg. Hatalmas néven, fix operátorként és rev beépített függvények, List.revApp pedig List.revAppend néven könyvtári függvény az SML-ben. LISTÁK HASZNÁLATA
6 Példák listák használatára: számtani sorozatok előállítása Listák használata: számtani sorozatok előállítása FP-57 Naív változat (* upto1 : t -> t -> t list upto1 m n = 1 különbségű növekvő számtani sorozat az alulról zárt [m,n) tartományban fun upto1 m n = if m >= n then [] else m :: upto1 (m+1) n; Naív változat, egy segédfüggvénnyel (* upto2 : t -> t -> t list upto2 m n = 1 különbségű növekvő számtani sorozat az alulról zárt [m,n) tartományban fun upto2 m n = let fun up m = if m >= n then [] else m :: up (m+1) up m Példák listák használatára: számtani sorozatok előállítása (folyt.) Listák használata: számtani sorozatok előállítása FP-58 Naív változatok d különbséggel (* fmto? : t -> t -> t -> t list fmto? d m n = d>0 különbségű, m<n esetén növekvő, m>n esetén csökkenő számtani sorozat az alulról, ill. felülről zárt [m,n) tartományban... két segédfüggvénnyel fun fmto1 d m n = let fun up m = if n <= m then [] else m :: up (m+d) fun dn m = if m <= n then [] else m :: dn (m-d) if d <= 0 then [] else if n >= m then up m else (* if n < m then dn m... egy segédfüggvénnyel fun fmto2 d m n = let fun to cmp c m = if cmp m then [] else m :: to cmp c (c m) if d <= 0 then [] else if n >= m then to (fn i => i >= n) (fn j => j + d) m else (* if n < m then to (fn i => i <= n) (fn j => j - d) m
7 Példák listák használatára: számtani sorozatok előállítása (folyt.) Listák használata: számtani sorozatok előállítása FP-59 Akkumulátoros változat d különbséggel, egy segédfüggvénnyel (* fmto3 : t -> t -> t -> t list fmto3 d n m = d>0 különbségű, m<n esetén növekvő, m>n esetén csökkenő számtani sorozat az alulról, ill. felülről zárt [m,n) tartományban fun fmto3 d m n = let fun to cmp c m zs = if cmp m Ha az eredménylista sorrendje then rev zs közömbös, a rev elhagyható. else to cmp c (c m) (m::zs) if d <= 0 then [] else if n >= m then to (fn i => i >= n) (fn j => j + d) m [] else (* if n < m then to (fn i => i <= n) (fn j => j - d) m [] Példák listák használatára: számtani sorozatok előállítása (folyt.) Listák használata: számtani sorozatok előállítása FP-60 Generikus akkumulátoros változat komparáló és különbségi függvénnyel (* fmto4 : ( a * a -> bool) -> ( a -> a) -> a -> a -> a list fmto4 le df m n = az le kisebb-vagy-egyenlő reláció és a df különbségi függvény szert növekvő sorozat az alulról, ill. felülről zárt [m,n) tartományban fun fmto4 le df m n = let fun to cmp m zs = if cmp m Ha az eredménylista sorrendje then rev zs közömbös, a rev elhagyható. else to cmp (df m) (m::zs); fix le if m le df m andalso m le n (*df növel, [m,n)<>üres then to (fn i => n le i) m [] else if df m le m andalso n le m (*df csökkent, [m,n)<>üres then to (fn i => i le n) m [] else []
8 Példák listák használatára: számtani sorozatok előállítása (folyt.) Listák használata: számtani sorozatok előállítása FP-61 Egyszerű akkumulátoros változat, egy segédfüggvénnyel Az egyesével növekvő sorozat utolsó eleme ismert (n-1), ezért a listát hátulról visszafelé építjük fel. (* upto3 : t -> t -> t list upto3 m n = 1 különbségű növekvő számtani sorozat az alulról zárt [m,n) tartományban fun upto3 m n = let (* hátulról visszafelé haladva építjük a listát! fun up n zs = if m >= n then zs else up (n-1) (n-1::zs) up n [] fix --; fun fm -- to = upto3 fm to; Gyakorló feladat: a d = +1 vagy -1 különbségű számtani sorozatot előállító upto4 d m n függvény megírása. Példák listák használatára: számtani sorozatok előállítása (folyt.) Listák használata: számtani sorozatok előállítása FP-62 use "upto.sml"; (* egyesével növekvő egészlisták val ns50k = ; val ns150k = ; val ns200k = ; val ns400k = ; val ns600k = ; val ns1m = ; val ns2m = ; (* más sorozatok (* 1.5-del csökkenő, elemű valóslista val rs = fmto4 op>= (fn i => i-1.5) ; (* #"A"-tól kezdve mden 2. betűt tartalmazó 13 elemű lista val cs13 = fmto4 op<= (fn i => chr(ord i + 2)) #"A", #"Z";
9 FUTÁSI IDŐ MÉRÉSE Futási idő mérése PolyML alatt Futási idő mérése PolyML alatt FP-64 Akkumulátor nélküli, naív változatok (PolyML: "Increasg stack") PolyML.timg(true); val _ = upto ; (* +1 különbségű növekvő sorozat val _ = upto ; (* +1 különbségű növekvő sorozat, 1 segédfv. val _ = fmto ; (* +d különbségű növekvő/csökkenő, 1 segédfv. val _ = fmto ; (* +d különbségű növekvő/csökkenő, 2 segédfv. PolyML.timg(false); Részletek a PolyML válaszából: Warng - Increasg stack from to bytes... Timg - parse:0.0, semantics:0.0, translate:0.0, generate:0.0, run:1.9 Timg - parse:0.0, semantics:0.0, translate:0.0, generate:0.0, run:1.4 Warng - Increasg stack from to bytes Timg - parse:0.0, semantics:0.0, translate:0.0, generate:0.0, run:2.2 Timg - parse:0.0, semantics:0.0, translate:0.0, generate:0.0, run:1.5
10 Futási idő mérése PolyML alatt (folyt.) Futási idő mérése PolyML alatt FP-65 Akkumulátoros változatok PolyML.timg(true); val _ = upto ; (* +1 különbségű növekvő sorozat, végéről kezd val _ = fmto ; (* +d különbségű növekvő/csökkenő, 1 segédfv. val _ = fmto4 op<= (fn i => i+1) ; (* +d kül., gen. val _ = fmto4 op<= (fn i => i+1.0) ; (* +d kül., gen. PolyML.timg(false); Részletek a PolyML válaszából: Timg - parse:0.0, semantics:0.0, translate:0.0, generate:0.0, run:0.8 Timg - parse:0.0, semantics:0.0, translate:0.0, generate:0.0, run:2.4 Timg - parse:0.0, semantics:0.0, translate:0.0, generate:0.0, run:2.2 Timg - parse:0.0, semantics:0.0, translate:0.0, generate:0.0, run:4.6 FONTOS APRÓSÁGOK
11 Fontos apróságok az SML-ről Nullas, unit, prt, szekvenciális kifejezés, before operátor FP-67 A nullas és a unit típus A () vagy {} jelet nullasnak nevezzük, típusa: unit. A nullas a unit típus egyetlen eleme. A unit típusműveletek egységeleme. A prt függvény Ha a strg -> unit típusú prt függvényt egy füzérre alkalmazzuk, eredménye a nullas, mellékhatásként pedig kiírja a a füzér értékét. Az (e1; e2; e3) szekvenciális kifejezés eredménye azonos az e3 kifejezés eredményével. Ha az e1 és e2 kifejezéseknek van mellékhatásuk, az érvényesül. (e1; e2; e3) egyenértékű a következő let-kifejezéssel: let val _ = e1 val _ = e2 e3 end Az e1 before e2 before e3 kifejezés eredménye azonos az e1 kifejezés eredményével. Ha az e2 és e3 kifejezésnek van mellékhatása, az érvényesül. e1 before e2 before e3 egyenértékű a következő let-kifejezéssel: let val e = e1 val _ = e2 val _ = e3 e end FUTÁSI IDŐ MÉRÉSE
12 Futási idő mérése: Timer SML Basis Library Futási idő mérése: Timer és Time (SML Basis Library) FP-69 type cpu_timer type real_timer val startcputimer : unit -> cpu_timer val checkcputimer : cpu_timer -> {usr: Time.time, sys: Time.time, gc: Time.time} [cpu_timer] is the type of timers for measurg CPU time consumption (user time, garbage collection time, and system time). [real_timer] is the type of timers for measurg the passg of real time (wall-clock time). [startcputimer ()] returns a cpu_timer started at the moment of the call. [checkcputimer tmr] returns {usr, sys, gc} where usr is the amount of user CPU time consumed sce tmr was started, gc is the amount of user CPU time spent on garbage collection, and sys is the amount of system CPU time consumed sce tmr was started. Note that gc time is cluded the usr time. Under MS DOS, usr time and gc time are measured real time. Futási idő mérése: Timer és Time SML Basis Library (folyt.) Futási idő mérése: Timer és Time (SML Basis Library) FP-70 val startrealtimer : unit -> real_timer val checkrealtimer : real_timer -> Time.time [startrealtimer ()] returns a real_timer started at the moment of the call. [checkrealtimer tmr] returns the amount of real time that has passed sce tmr was started. eqtype time exception Time val fmt : t -> time -> strg [time] is a type for representg durations as well as absolute pots time (which can be thought of as durations sce some fixed time zero). [zerotime] represents the 0-second duration, and the orig of time, so zerotime + t = t + zerotime = t for all t. [fmt n t] returns as a strg the number of seconds represented by t, rounded to n decimal digits. If n <= 0, then no decimal digits are reported.
13 Futási idő mérése: idomero Futási idő mérése: Timer és Time (SML Basis Library) FP-71 (* app load ["Timer", "Time"]; (* idomero = fn : ( a -> b) -> a -> b * time * time idomero f a = az a argumentumra alkalmazott f függvény eredményéből, továbbá a kiértékeléséhez felhasznált CPU-időt és valós időt másodpercben tartalmazó füzérekből álló hármas fun idomero f a = let val RealStart = Timer.startRealTimer() val CPUstart = Timer.startCPUTimer() val res = f a val {usr,...} = Timer.checkCPUTimer CPUstart val rtm = Timer.checkRealTimer RealStart (res, usr, rtm) Futási idő mérése: idoiro Futási idő mérése: Timer és Time (SML Basis Library) FP-72 (* idoiro = fn : strg -> ( a -> b) -> a -> b idoiro t f a = f a mellékhatásként kiírja a t füzért, az a argumentumra alkalmazott f függvény kiértékeléséhez felhasznált CPU-időt és valós időt (mp-ben) fun idoiro t f a = let val (res, usr, rtm) = idomero f a (prt (t ^ " CPU time: " ^ Time.fmt 2 usr ^ res ) ", real time: " ^ Time.fmt 2 rtm ^ " (sec)\n");
14 LISTÁK HASZNÁLATA Példák listák használatára: maxl még több változatban Listák használata: maxl több változatban FP-74 (* app load ["Int"]; use "idomero.sml"; use "szamlistak.sml"; (* maxl? : t list -> t maxl? ns = az ns egészlista legnagyobb eleme fun maxl1 [n] = n fun maxl4 [] = raise Empty maxl1 (n::ns) = Int.max(n, maxl1 ns) maxl4 ns = let (* [] esete lefedetlen! maxl1 [] = raise Empty; fun mxl [n] = n fun maxl2 [n] = n mxl (n::m::ns) = mxl(int.max(n, m)::ns) maxl2 (n::m::ns) = mxl ns maxl2(int.max(n, m)::ns) maxl2 [] = raise Empty; fun maxl5 [] = raise Empty fun maxl3 [] = raise Empty maxl5 (n::ns) = maxl3 [n] = n let fun mxl (m, []) = m maxl3 (n::m::ns) = maxl3(int.max(n, m)::ns); mxl (m, n::ns) = mxl(int.max(m, n), ns) mxl(n, ns)
15 Példák listák használatára: maxl még több változatban (folyt.) Listák használata: maxl több változatban FP-75 (* maxl? : ( a* a-> a) * a list -> a maxl? (max, ns) = az ns lista max szerti legnagyobb eleme fun maxl6 (max, []) = raise Empty maxl6 (max, [n]) = n maxl6 (max, n::m::ns) = maxl6(max, max(n, m)::ns); fun maxl7 (max, []) = raise Empty maxl7 (max, ns) = let (* [] esete lefedetlen! fun mxl [n] = n mxl (n::m::ns) = mxl(max(n, m)::ns) mxl ns fun maxl8 (max, []) = raise Empty maxl8 (max, n::ns) = let fun mxl (m, []) = m mxl (m, n::ns) = mxl(max(m, n),ns) mxl(n, ns) datatype a esetleg = Semmi Valami of a; (* maxl9 : ( a* a-> a) * a list -> a esetleg maxl9 (max, ns) = az ns lista max szerti legnagyobb eleme fun maxl9 (max, []) = Semmi maxl9 (max, n::ns) = let fun mxl (m, []) = Valami m mxl (m, n::ns) = mxl(max(m, n),ns) mxl(n, ns) Példák maxl alkalmazására: maxl7(int.max, [1,3,9,7,4,6,2]) = 9; maxl8(op+, [1,2,3,4,5,6,7,8,9]) = 45; maxl9(op*, [1,2,3,4,5,6,7,8,9]) = Valami Furcsa maximum maxl8(...) és maxl9(...) eredménye! maxl futási idejének mérése idoiro-val Listák használata: maxl több változatban FP-76 idoiro "maxl1, ns2m: " maxl1 ns2m; idoiro "maxl2, ns2m: " maxl2 ns2m; idoiro "maxl3, ns2m: " maxl3 ns2m; idoiro "maxl4, ns2m: " maxl4 ns2m; idoiro "maxl5, ns2m: " maxl5 ns2m; idoiro "maxl6, ns2m: " maxl6(int.max, ns2m); idoiro "maxl7, ns2m: " maxl7(int.max, ns2m); idoiro "maxl8, ns2m: " maxl8(int.max, ns2m); idoiro "maxl9, ns2m: " maxl9(int.max, ns2m); Részletek a PolyML válaszából: Warng - Increasg stack from to bytes maxl1, ns2m: CPU time: 4.57, real time: 7.99 (sec) maxl2, ns2m: CPU time: 0.73, real time: 1.00 (sec) maxl3, ns2m: CPU time: 0.80, real time: 0.80 (sec) maxl4, ns2m: CPU time: 0.83, real time: 0.83 (sec) maxl5, ns2m: CPU time: 0.14, real time: 0.16 (sec)!!! maxl6, ns2m: CPU time: 1.41, real time: 1.41 (sec) maxl7, ns2m: CPU time: 1.54, real time: 1.55 (sec) maxl8, ns2m: CPU time: 0.85, real time: 0.85 (sec) val it = : Int.t maxl9, ns2m: CPU time: 0.86, real time: 0.85 (sec) val it = Valami : Int.t esetleg
16 LISTÁK HASZNÁLATA Példák listák használatára: futamok előállítása Listák: futamok előállítása FP-78 A futam olyan elemekből álló lista, amelynek szomszédos elemei kielégítenek egy predikátumot. Írjon olyan SML függvényt futamok néven, amelynek egy lista futamaiból álló lista az eredménye. Első változat: futam és maradék előállítása két függvénnyel (* futam1 : ( a * a -> bool) -> ( a * a list) -> a list futam1 p (x, ys) = az x::ys p-t kielégítő első futama (prefixuma) fun futam1 p (x, []) = [x] futam1 p (x, y::ys) = if p(x, y) then x :: futam1 p (y, ys) else [x] (* maradek : ( a * a -> bool) -> ( a * a list) -> a list maradek p (x, ys) = az x::ys p-t kielegítő futama utáni maradéka fun maradek p (x, []) = [] maradek p (x, yys as y::ys) = if p(x,y) then maradek p (y, ys) else yys (* futamok1 : ( a * a -> bool) -> a list -> a list list futamok1 p xs = az xs p-t kielégítő futamaiból álló lista fun futamok1 p [] = [] futamok1 p (x::xs) = let val fs = futam1 p (x, xs) val ms = maradek p (x, xs) if null ms then [fs] else fs :: futamok1 p ms
17 Példák listák használatára: futamok előállítása (folyt.) Listák: futamok előállítása FP-79 Példák: futam1 op<= (1, [9,19,3,4,24,34,4,11,45,66,13,45,66,99]); maradek op<= (1, [9,19,3,4,24,34,4,11,45,66,13,45,66,99]); futamok1 op<= [1,9,19,3,4,24,34,4,11,45,66,13,45,66,99]; futamok1 op<= [99,1]; futamok1 op<= [99]; futamok1 op<= []; Hatékonyságot rontó tényezők 1. futamok1 kétszer megy végig a listán: először futam1, azután maradek, 2. p-t paraméterként adjuk át futam1-nek és maradek-nak, 3. egyik függvény sem használ akkumulátort. Javítási lehetőség 1. futam2 egy párt adjon eredményül, ennek első tagja legyen a futam, második tagja pedig a maradék; a futam elemeek gyűjtésére használjunk akkumulátort, 2. futam2 legyen lokális futamok2-n belül, Példák listák használatára: futamok előállítása (folyt.) Listák: futamok előállítása FP-80 Második változat: futam és maradék előállítása egy függvénnyel (* futam2 : ( a * a -> bool) -> ( a * a list) -> a list * a list futam2 p (x, ys) zs = olyan pár, amelynek első tagja az x::ys p-t kielégítő első futama (prefixuma) a zs elé fűzve, második tagja pedig az x::ys maradéka fun futam2 p (x, []) zs = (rev(x::zs), []) futam2 p (x, yys as y::ys) zs = if p(x, y) then futam2 p (y, ys) (x::zs) else (rev(x::zs), yys); (* futamok2 : ( a * a -> bool) -> a list -> a list list futamok2 p xs = az xs p-t kielégítő futamaiból álló lista fun futamok2 p [] = [] futamok2 p (x::xs) = let val (fs, ms) = futam2 p (x, xs) [] if null ms then [fs] else fs :: futamok2 p ms
18 Példák listák használatára: futamok előállítása (folyt.) Listák: futamok előállítása FP-81 Harmadik változat: futam és maradék előállítása egy lokális függvénnyel (* futamok3 : ( a * a -> bool) -> a list -> a list list futamok3 p xs = az xs p-t kielégítő futamaiból álló lista fun futamok3 p [] = [] futamok3 p (x::xs) = let (* futam : ( a * a list) -> a list * a list futam (x, ys) zs = olyan pár, amelynek első tagja az x::ys p-t kielégítő első futama (prefixuma) a zs elé fűzve, második tagja pedig az x::ys maradéka fun futam (x, []) zs = (rev(x::zs), []) futam (x, yys as y::ys) zs = if p(x, y) then futam (y, ys) (x::zs) else (rev(x::zs), yys); val (fs, ms) = futam (x, xs) [] if null ms then [fs] else fs :: futamok3 p ms Példák listák használatára: futamok előállítása (folyt.) Listák: futamok előállítása FP-82 Negyedik változat: az egyes futamokat és a futamok listáját is gyűjtjük (* futamok4 : ( a * a -> bool) -> a list -> a list list futamok4 p xs = az xs p-t kielégítő futamaiból álló lista fun futamok4 p [] = [] futamok4 p (x::xs) = let (* futamok : ( a * a list) -> a list -> a list * a list futamok (x, ys) zs zss = az x::ys p-t kielégítő futamaiból álló lista zss elé fűzve fun futamok (x, []) zs zss = rev(rev(x::zs)::zss) futamok (x, yys as y::ys) zs zss = if p(x, y) then futamok (y, ys) (x::zs) zss else futamok (y, ys) [] (rev(x::zs)::zss) futamok (x, xs) [] []
FUNKCIONÁLIS PROGRAMOZÁS
Történeti áttekintés Történeti áttekintés FP-2 FUNKCIONÁLIS PROGRAMOZÁS A -kalkulus rövid története 1910 Russel & Whitehead Principia Mathematica 1935 Gödel nem létezhet erős axióma- és tételrszer, amely
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
KIÍRÁS AZ SML-BEN. Kiírás. Kiírás (folyt.) Kiírás (folyt.)
Kiírás Kiírás, nyomkövetés és hibakeresés az SML-ben FP-5..6-65 KIÍRÁS AZ SML-BEN {TextIO.}prt : strg -> unit prt s = kiírja az s értékét a standard kimenetre, és azonnal kiüríti a puffert. {General.}makestrg
FUNKCIONÁLIS PROGRAMOZÁS
Tartalom Bevezető FP-1..12-2 Az első rész tartalma Bevezető FUNKCIONÁLIS PROGRAMOZÁS Programelemek Függvények (eljárások) és az általuk létrehozott folyamatok Magasabb rű függvények (eljárások) Absztrakció
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
KIÍRÁS. - makestring("alma"^"korte\n"); > val it = "\"almakorte\\n\"" : string
KIÍRÁS Kiírás Kiírás 10-2 {TextIO.}prt : strg -> unit prt s = kiírja az s értékét a standard kimenetre, és azonnal kiüríti a puffert. {General.}makestrg : numtxt-> strg makestrg v = eredménye a v érték
LUSTA KIÉRTÉKELÉS, LUSTA LISTA
Mohó kiértékelés, lusta kiértékelés FP-11-12-230 Idézzük föl: Mohó (eager) vagy applikatív sorrendű (applicative order) kiértékelésnek nevezzük azt a kiértékelési sorrendet, amikor egy összetett kifejezésben
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
1. numere.txt n (1 n 10000) n növekvő kilenc a) Pascal/C++ Például: NUMERE.TXT
Az informatika érettségi harmadik tételsora tartalmaz egy feladatot, melyet hatékonyan kell megoldani. A program megírása mellett követelmény a megoldásban használt módszer rövid leírása, kitérve a módszer
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
Webprogramozás szakkör
Webprogramozás szakkör Előadás 5 (2012.04.09) Programozás alapok Eddig amit láttunk: Programozás lépései o Feladat leírása (specifikáció) o Algoritmizálás, tervezés (folyamatábra, pszeudokód) o 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
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
Információs Technológia
Információs Technológia A C programozási nyelv (Típusok és operátorok) Fodor Attila Pannon Egyetem Műszaki Informatika Kar Villamosmérnöki és Információs Rendszerek Tanszék foa@almos.vein.hu 2010 szeptember
Sorozatok határértéke SOROZAT FOGALMA, MEGADÁSA, ÁBRÁZOLÁSA; KORLÁTOS ÉS MONOTON SOROZATOK
Sorozatok határértéke SOROZAT FOGALMA, MEGADÁSA, ÁBRÁZOLÁSA; KORLÁTOS ÉS MONOTON SOROZATOK Sorozat fogalma Definíció: Számsorozaton olyan függvényt értünk, amelynek értelmezési tartománya a pozitív egész
Rendezések. Összehasonlító rendezések
Rendezések Összehasonlító rendezések Remdezés - Alapfeladat: Egy A nevű N elemű sorozat elemeinek nagyság szerinti sorrendbe rendezése - Feltételezzük: o A sorozat elemei olyanok, amelyekre a >, relációk
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;
Komputeralgebra Rendszerek
Komputeralgebra Rendszerek Programozás Czirbusz Sándor ELTE IK, Komputeralgebra Tanszék 2014. február 23. TARTALOMJEGYZÉK 1 of 28 TARTALOMJEGYZÉK I 1 TARTALOMJEGYZÉK 2 Értékadás MAPLE -ben SAGE -ben 3
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
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(
Sorozatok I. Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma)
Sorozatok I. DEFINÍCIÓ: (Számsorozat) A számsorozat olyan függvény, amelynek értelmezési tartománya a pozitív egész számok halmaza, értékkészlete a valós számok egy részhalmaza. Jelölés: (a n ), {a n }.
2. Rekurzió. = 2P2(n,n) 2 < 2P2(n,n) 1
2. Rekurzió Egy objektum definícióját rekurzívnak nevezünk, ha a definíció tartalmazza a definiálandó objektumot. Egy P eljárást (vagy függvényt) rekurzívnak nevezünk, ha P utasításrészében előfordul magának
Algoritmizálás. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar
Algoritmizálás Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar horvath@inf.u-szeged.hu 0.1. Az algoritmikus tudás szintjei Ismeri (a megoldó algoritmust) Érti Le tudja pontosan
Programozási nyelvek Java
statikus programszerkezet Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 2. előadás csomag könyvtárak könyvtárak forrásfájlok bájtkódok (.java) (.class) primitív osztály
Megjegyzés: A programnak tartalmaznia kell legalább egy felhasználói alprogramot. Példa:
1. Tétel Az állomány két sort tartalmaz. Az első sorában egy nem nulla természetes szám van, n-el jelöljük (5
1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon
1. Template (sablon) 1.1. Függvénysablon Maximum függvény megvalósítása függvénynév túlterheléssel. i n l i n e f l o a t Max ( f l o a t a, f l o a t b ) { return a>b? a : b ; i n l i n e double Max (
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
SQL*Plus. 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
SQL*Plus 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ó táblák táblanév-prefixek:
Listák, szótárak, fájlok Listák, szótárak, fájlok
lista fogalma, használata listák másolása (alap szintű, teljes körű) szótárak fogalma, használata adatbázis alkalmazás fejlesztése műveletek fájlokkal (megnyítás, írás, olvasás, lezárás) rejtjelező alkalmazás
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
.Net adatstruktúrák. Készítette: Major Péter
.Net adatstruktúrák Készítette: Major Péter Adatstruktúrák általában A.Net-ben számos nyelvvel ellentétben nem kell bajlódnunk a változó hosszúságú tömbök, listák, sorok stb. implementálásával, mert ezek
Országos Középiskolai Tanulmányi Verseny 2009/2010 Matematika I. kategória (SZAKKÖZÉPISKOLA) 2. forduló feladatainak megoldása
Oktatási Hivatal Országos Középiskolai Tanulmányi Verseny / Matematika I. kategória (SZAKKÖZÉPISKOLA) 2. forduló feladatainak megoldása. Oldja meg a valós számok legbővebb részhalmazán a egyenlőtlenséget!
Adatbázis-kezelés. Harmadik előadás
Adatbázis-kezelés Harmadik előadás 39 Műveletek csoportosítása DDL adat definiálás Objektum létrehozás CREATE Objektum törlés DROP Objektum módosítás ALTER DML adat módosítás Rekord felvitel INSERT Rekord
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
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
Algoritmizálás és adatmodellezés tanítása 1. előadás
Algoritmizálás és adatmodellezés tanítása 1. előadás Algoritmus-leíró eszközök Folyamatábra Irányított gráf, amely csomópontokból és őket összekötő élekből áll, egyetlen induló és befejező éle van, az
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
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,
Kilencedik témakör: Lazarus-Firebird. Készítette: Dr. Kotsis Domokos
PASzSz Kilencedik témakör: Lazarus-Firebird Készítette: Dr. Kotsis Domokos Az SQLdb fülön IBConnection Kapcsolat A Data Access fülön Az SQLdb fülön... Select 1. Az SQLQuery lezárása. (Active := false,
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
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
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,
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
Felvételi tematika INFORMATIKA
Felvételi tematika INFORMATIKA 2016 FEJEZETEK 1. Természetes számok feldolgozása számjegyenként. 2. Számsorozatok feldolgozása elemenként. Egydimenziós tömbök. 3. Mátrixok feldolgozása elemenként/soronként/oszloponként.
Járműfedélzeti rendszerek II. 4. előadás Dr. Bécsi Tamás
Járműfedélzeti rendszerek II. 4. előadás Dr. Bécsi Tamás 6. Struktúrák A struktúra egy vagy több, esetleg különböző típusú változó együttese, amelyet a kényelmes kezelhetőség céljából önálló névvel látunk
Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája
Adatszerkezetek Összetett adattípus Meghatározói: A felvehető értékek halmaza Az értékhalmaz struktúrája Az ábrázolás módja Műveletei Adatszerkezet fogalma Direkt szorzat Minden eleme a T i halmazokból
A sorozat fogalma. függvényeket sorozatoknak nevezzük. Amennyiben az értékkészlet. az értékkészlet a komplex számok halmaza, akkor komplex
A sorozat fogalma Definíció. A természetes számok N halmazán értelmezett függvényeket sorozatoknak nevezzük. Amennyiben az értékkészlet a valós számok halmaza, valós számsorozatról beszélünk, mígha az
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
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
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
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
Operációs rendszerek. UNIX fájlrendszer
Operációs rendszerek UNIX fájlrendszer UNIX fájlrendszer Alapegység: a file, amelyet byte-folyamként kezel. Soros (szekvenciális) elérés. Transzparens (átlátszó) file-szerkezet. Link-ek (kapcsolatok) létrehozásának
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
Edényrendezés. Futási idő: Tegyük fel, hogy m = n, ekkor: legjobb eset Θ(n), legrosszabb eset Θ(n 2 ), átlagos eset Θ(n).
Edényrendezés Tegyük fel, hogy a rendezendő H = {a 1,...,a n } halmaz elemei a [0,1) intervallumba eső valós számok. Vegyünk m db vödröt, V [0],...,V [m 1] és osszuk szét a rendezendő halmaz elemeit a
Mapping Sequencing Reads to a Reference Genome
Mapping Sequencing Reads to a Reference Genome High Throughput Sequencing RN Example applications: Sequencing a genome (DN) Sequencing a transcriptome and gene expression studies (RN) ChIP (chromatin immunoprecipitation)
Gyártórendszerek modellezése: MILP modell PNS feladatokhoz
Gyártórendszerek modellezése MILP modell PNS feladatokhoz 1 Pannon Egyetem M szaki Informatikai Kar Számítástudomány Alkalmazása Tanszék Utolsó frissítés: 2008. november 16. 1 hegyhati@dcs.uni-pannon.hu
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]
6. gyakorlat Egydimenziós numerikus tömbök kezelése, tömbi algoritmusok
6. gyakorlat Egydimenziós numerikus tömbök kezelése, tömbi algoritmusok 1. feladat: Az EURO árfolyamát egy negyedéven keresztül hetente nyilvántartjuk (HUF / EUR). Írjon C programokat az alábbi kérdések
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
Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT október október 26. Adatbázisok 1 / 17
Adatbázisok 8. gyakorlat SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT 2015. október 26. 2015. október 26. Adatbázisok 1 / 17 SQL nyelv Structured Query Language Struktúrált lekérdez
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
Információk. Ismétlés II. Ismétlés. Ismétlés III. A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin. Algoritmus. Algoritmus ábrázolása
1 Információk 2 A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin Elérhetőség mesko.katalin@tfk.kefo.hu Fogadóóra: szerda 9:50-10:35 Számonkérés időpontok Április 25. 9 00 Május 17. 9 00 Június
Intergrált Intenzív Matematika Érettségi
. Adott a mátri, determináns determináns, ahol,, d Számítsd ki:. b) Igazold, hogy a b c. Adott a az 6 0 egyenlet megoldásai. a). c) Számítsd ki a d determináns értékét. d c a b determináns, ahol abc,,.
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
INFORMATIKA javítókulcs 2016
INFORMATIKA javítókulcs 2016 ELMÉLETI TÉTEL: Járd körbe a tömb fogalmát (Pascal vagy C/C++): definíció, egy-, két-, több-dimenziós tömbök, kezdőértékadás definíciókor, tömb típusú paraméterek átadása alprogramoknak.
Szövegek C++ -ban, a string osztály
Szövegek C++ -ban, a string osztály A string osztály a Szabványos C++ könyvtár (Standard Template Library) része és bár az objektum-orientált programozásról, az osztályokról, csak később esik szó, a string
Adatbázis használat I. 2. gyakorlat
Adatbázis használat I. 2. gyakorlat Tudnivalók Oracle 10g a weben: http://www.oracle.com/technetwork/database/ database10g/downloads/index.html Egyéb letöltési lehetőség: http://jerry.gorextar.hu/ab1/oracle/
Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós február 18. Széchenyi István Egyetem, Gy r
Programozás (GKxB_INTM021) Széchenyi István Egyetem, Gy r 2018. február 18. Minimum és maximumkeresés u s i n g n a m e s p a c e s t d ; i n t main ( ) { c o u t
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
ADATBÁZISKEZELÉS ADATBÁZIS
ADATBÁZISKEZELÉS 1 ADATBÁZIS Az adatbázis adott (meghatározott) témakörre vagy célra vonatkozó adatok gyűjteménye. - Pl. A megrendelések nyomon követése kereskedelemben. Könyvek nyilvántartása egy könyvtárban.
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
Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter
Adatszerkezetek Tömb, sor, verem Dr. Iványi Péter 1 Adat Adat minden, amit a számítógépünkben tárolunk és a külvilágból jön Az adatnak két fontos tulajdonsága van: Értéke Típusa 2 Adat típusa Az adatot
Gráfelméleti feladatok. c f
Gráfelméleti feladatok d e c f a b gráf, csúcsok, élek séta: a, b, c, d, e, c, a, b, f vonal: c, d, e, c, b, a út: f, b, a, e, d (walk, lanţ) (trail, lanţ simplu) (path, lanţ elementar) 1 irányított gráf,
Bánsághi Anna 2014 Bánsághi Anna 1 of 68
IMPERATÍV PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 3. ELŐADÁS - PROGRAMOZÁSI TÉTELEK 2014 Bánsághi Anna 1 of 68 TEMATIKA I. ALAPFOGALMAK, TUDOMÁNYTÖRTÉNET II. IMPERATÍV PROGRAMOZÁS Imperatív
Miskolci Egyetem Gépészmérnöki és Informatikai Kar Informatikai Intézet Alkalmazott Informatikai Intézeti Tanszék
Miskolci Egyetem Gépészmérnöki és Informatikai Kar Informatikai Intézet Alkalmazott Informatikai Intézeti Tanszék 2016/17 2. félév 5. Előadás Dr. Kulcsár Gyula egyetemi docens Tartalom 1. Párhuzamosan
Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)
Programozás alapjai C nyelv 4. gyakorlat Szeberényi Imre BME IIT Mit tudunk már? Típus fogalma char, int, float, double változók deklarációja operátorok (aritmetikai, relációs, logikai,
Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double
Programozás alapjai C nyelv 4. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.10.10.. -1- Mit tudunk már? Típus fogalma char, int, float,
file./script.sh > Bourne-Again shell script text executable << tartalmat néz >>
I. Alapok Interaktív shell-ben vagy shell-scriptben megadott karaktersorozat feldolgozásakor az első lépés a szavakra tördelés. A szavakra tördelés a következő metakarakterek mentén zajlik: & ; ( ) < >
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
A relációs adatbáziskezelés szabványos nyelve Két fő csoportba sorolhatók az utasításai
8. gyakorlat Structured Query Language Struktúrált lekérdező nyelv A relációs adatbáziskezelés szabványos nyelve Két fő csoportba sorolhatók az utasításai DDL (Data Definition Language) adatstruktúra definiáló
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
Excel 2010 függvények
Molnár Mátyás Excel 2010 függvények Csak a lényeg érthetően! Tartalomjegyzék FÜGGVÉNYHASZNÁLAT ALAPJAI 1 FÜGGVÉNYEK BEVITELE 1 HIBAÉRTÉKEK KEZELÉSE 4 A VARÁZSLATOS AUTOSZUM GOMB 6 SZÁMÍTÁSOK A REJTETT
Előfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból
ÜTEMTERV Programozás-elmélet c. tárgyhoz (GEMAK233B, GEMAK233-B) BSc gazdaságinformatikus, programtervező informatikus alapszakok számára Óraszám: heti 2+0, (aláírás+kollokvium, 3 kredit) 2019/20-es tanév
Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása
Tömbök kezelése Példa: Vonalkód ellenőrzőjegyének kiszámítása A számokkal jellemzett adatok, pl. személyi szám, adószám, taj-szám, vonalkód, bankszámlaszám esetében az elírásból származó hibát ún. ellenőrző
Kupac adatszerkezet. A[i] bal fia A[2i] A[i] jobb fia A[2i + 1]
Kupac adatszerkezet A bináris kupac egy majdnem teljes bináris fa, amely minden szintjén teljesen kitöltött kivéve a legalacsonyabb szintet, ahol balról jobbra haladva egy adott csúcsig vannak elemek.
BABEŞ-BOLYAI TUDOMÁNYEGYETEM MATEMATIKA-INFORMATIKA KAR Felvételi verseny - minta Informatika írásbeli
BABEŞ-BOLYAI TUDOMÁNYEGYETEM MATEMATIKA-INFORMATIKA KAR Felvételi verseny - minta Informatika írásbeli A versenyzők figyelmébe: 1. Minden tömböt 1-től kezdődően indexelünk. 2. A rácstesztekre (A rész)
SZÁMTANI SOROZATOK. Egyszerű feladatok
SZÁMTANI SOROZATOK Egyszerű feladatok. Add meg az alábbi sorozatok következő három tagját! a) ; 7; ; b) 2; 5; 2; c) 25; 2; ; 2. Egészítsd ki a következő sorozatokat! a) 7; ; 9; ; b) 8; ; ; 9; c) ; ; ;
Adatszerkezetek I. 7. előadás. (Horváth Gyula anyagai felhasználásával)
Adatszerkezetek I. 7. előadás (Horváth Gyula anyagai felhasználásával) Bináris fa A fa (bináris fa) rekurzív adatszerkezet: BinFa:= Fa := ÜresFa Rekord(Elem,BinFa,BinFa) ÜresFa Rekord(Elem,Fák) 2/37 Bináris
INFORMATIKA tétel 2019
INFORMATIKA tétel 2019 ELIGAZÍTÁS: 1 pont hivatalból; Az 1-4 feladatokban (a pszeudokód programrészletekben): (1) a kiír \n utasítás újsorba ugratja a képernyőn a kurzort; (2) a / operátor osztási hányadost
A rész (30 pont) A.1. Vajon mit csinál? (5 pont) A generál(n) algoritmus egy n természetes számot dolgoz fel (0 < n < 100).
BABEŞ-BOLYAI TUDOMÁNYEGYETEM MATEMATIKA-INFORMATIKA KAR Felvételi verseny - szeptember Informatika írásbeli A versenyzők figyelmébe: 1. Minden tömböt 1-től kezdődően indexelünk. 2. A rácstesztekre (A rész)
5. Gyakorlat. struct diak {
Rövid elméleti összefoglaló 5. Gyakorlat Felhasználó által definiált adattípusok: A typedef egy speciális tárolási osztály, mellyel érvényes típusokhoz szinonim nevet rendelhetünk. typedef létező_típus
end function Az A vektorban elõforduló legnagyobb és legkisebb értékek indexeinek különbségét.. (1.5 pont) Ha üres a vektor, akkor 0-t..
A Név: l 2014.04.09 Neptun kód: Gyakorlat vezető: HG BP MN l 1. Adott egy (12 nem nulla értékû elemmel rendelkezõ) 6x7 méretû ritka mátrix hiányos 4+2 soros reprezentációja. SOR: 1 1 2 2 2 3 3 4 4 5 6
Adatszerkezetek I. 1. előadás
Adatszerkezetek I. 1. előadás Adatok jellemzői ismétlés 1. Azonosító Az a jelsorozat, amellyel hivatkozhatunk a tartalmára, amely által módosíthatjuk tartalmát. 2. Hozzáférési jog Adatokat módosítani,
11. Sorozatok. I. Nulladik ZH-ban láttuk:
11. Sorozatok I. Nulladik ZH-ban láttuk: 1. Egy számtani sorozat harmadik eleme 15, a nyolcadik eleme 30. Mely n természetes számra igaz, hogy a sorozat első n elemének összege 6? A szokásos jelöléseket
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
Haladó rendezések. PPT 2007/2008 tavasz.
Haladó rendezések szenasi.sandor@nik.bmf.hu PPT 2007/2008 tavasz http://nik.bmf.hu/ppt 1 Témakörök Alapvető összehasonlító rendezések Shell rendezés Kupacrendezés Leszámláló rendezés Radix rendezés Edényrendezés
Az időhöz kötődő parancsok
Az időhöz kötődő parancsok Az idő nyilvántartása...1 A date parancs...2 A time parancs...4 A sleep parancs...5 Időzített programfuttatás...6 Az at parancs...6 A UNIX démonok...6 A cron démon...7 Az idő
Algoritmusok és adatszerkezetek gyakorlat 07
Algoritmusok és adatszerkezetek gyakorlat 0 Keresőfák Fák Fa: összefüggő, körmentes gráf, melyre igaz, hogy: - (Általában) egy gyökér csúcsa van, melynek 0 vagy több részfája van - Pontosan egy út vezet
NAGYPONTOSSÁGÚ EGÉSZ-ARITMETIKA TARTALOM
NAGYPONTOSSÁGÚ EGÉSZ-ARITMETIKA TARTALOM 0. A feladat... 2 1. Az Egész számok ábrázolásai... 2 2. A műveletek szignatúrája... 3 3. A keretprogram... 4 4. Technikai tanácsok... 7 5. Elegancianövelő lehetőségek