Komputeralgebra Rendszerek Összetett adatszerkezetek a MAPLE -ben Czirbusz Sándor ELTE IK, Komputeralgebra Tanszék 2014. március 11. TARTALOMJEGYZÉK 1 of 66
TARTALOMJEGYZÉK I 1 TARTALOMJEGYZÉK 2 Kifejezéssorozatok 3 Halmazok 4 Listák 5 Sztringek 6 Vermek, sorok Vermek Sorok Prioritásos adatszerkezetek 7 Rekordok TARTALOMJEGYZÉK 2 of 66
KIFEJEZÉSSOROZATOK exprseq Kifejezéssorozatok 3 of 66
KIFEJEZÉSSOROZATOK exprseq Vesszővel elválasztott kifejezéssorozat Kifejezéssorozatok 4 of 66
KIFEJEZÉSSOROZATOK exprseq Vesszővel elválasztott kifejezéssorozat A függvényhívások argumentumlistája: args, nargs Kifejezéssorozatok 5 of 66
KIFEJEZÉSSOROZATOK exprseq Vesszővel elválasztott kifejezéssorozat A függvényhívások argumentumlistája: args, nargs Típusa exprseq: exprseq expr 1 expr 2... Kifejezéssorozatok 6 of 66
KIFEJEZÉSSOROZATOK exprseq Vesszővel elválasztott kifejezéssorozat A függvényhívások argumentumlistája: args, nargs Típusa exprseq: exprseq expr 1 expr 2... Üres sorozat: NULL Kifejezéssorozatok 7 of 66
KIFEJEZÉSSOROZATOK exprseq Vesszővel elválasztott kifejezéssorozat A függvényhívások argumentumlistája: args, nargs Típusa exprseq: exprseq expr 1 expr 2... Üres sorozat: NULL Generálás: seq(expr, range), x$n (leggyakrabban a diff-el) Kifejezéssorozatok 8 of 66
KIFEJEZÉSSOROZATOK exprseq Vesszővel elválasztott kifejezéssorozat A függvényhívások argumentumlistája: args, nargs Típusa exprseq: exprseq expr 1 expr 2... Üres sorozat: NULL Generálás: seq(expr, range), x$n (leggyakrabban a diff-el) Indexelés (szelektor): [n], visszafelé [-n] Kifejezéssorozatok 9 of 66
KIFEJEZÉSSOROZATOK exprseq Vesszővel elválasztott kifejezéssorozat A függvényhívások argumentumlistája: args, nargs Típusa exprseq: exprseq expr 1 expr 2... Üres sorozat: NULL Generálás: seq(expr, range), x$n (leggyakrabban a diff-el) Indexelés (szelektor): [n], visszafelé [-n] A MAPLE -ben nincsen exprseq adattípus, bár a whattype függvény exprsq-t ad vissza azoknál az objektumoknál, melyek kifejezéssorozatok. Kifejezéssorozatok 10 of 66
KIFEJEZÉSSOROZATOK exprseq Vesszővel elválasztott kifejezéssorozat A függvényhívások argumentumlistája: args, nargs Típusa exprseq: exprseq expr 1 expr 2... Üres sorozat: NULL Generálás: seq(expr, range), x$n (leggyakrabban a diff-el) Indexelés (szelektor): [n], visszafelé [-n] A MAPLE -ben nincsen exprseq adattípus, bár a whattype függvény exprsq-t ad vissza azoknál az objektumoknál, melyek kifejezéssorozatok. (MAPLE Help) Kifejezéssorozatok 11 of 66
Halmazok 12 of 66 HALMAZOK set
Halmazok 13 of 66 HALMAZOK set Sorozat kapcsoszárójelek között: {expr 1, expr 2,...}. Üres halmaz {};
Halmazok 14 of 66 HALMAZOK set Sorozat kapcsoszárójelek között: {expr 1, expr 2,...}. Üres halmaz {}; Egy elem csak egyszer fordul elő, nincs rendezés;
Halmazok 15 of 66 HALMAZOK set Sorozat kapcsoszárójelek között: {expr 1, expr 2,...}. Üres halmaz {}; Egy elem csak egyszer fordul elő, nincs rendezés; Alapműveletek: union, minus, intersect. Használhatók a műveleti jelek is;
Halmazok 16 of 66 HALMAZOK set Sorozat kapcsoszárójelek között: {expr 1, expr 2,...}. Üres halmaz {}; Egy elem csak egyszer fordul elő, nincs rendezés; Alapműveletek: union, minus, intersect. Használhatók a műveleti jelek is; Lekérdezés: member, in;
Halmazok 17 of 66 HALMAZOK set Sorozat kapcsoszárójelek között: {expr 1, expr 2,...}. Üres halmaz {}; Egy elem csak egyszer fordul elő, nincs rendezés; Alapműveletek: union, minus, intersect. Használhatók a műveleti jelek is; Lekérdezés: member, in; Kiválasztás: select, remove, selectremove select(funct, set, b 1,b 2,...);
Halmazok 18 of 66 HALMAZOK set Sorozat kapcsoszárójelek között: {expr 1, expr 2,...}. Üres halmaz {}; Egy elem csak egyszer fordul elő, nincs rendezés; Alapműveletek: union, minus, intersect. Használhatók a műveleti jelek is; Lekérdezés: member, in; Kiválasztás: select, remove, selectremove select(funct, set, b 1,b 2,...); Egyéb: combinat csomag, pl. powerset.
Listák 19 of 66 LISTÁK list, listlist
LISTÁK list, listlist Sorozat szögletes zárójelek között: [expr 1, expr 2,...]. Üres lista: []; Listák 20 of 66
LISTÁK list, listlist Sorozat szögletes zárójelek között: [expr 1, expr 2,...]. Üres lista: []; Egy elem többször is előfordul, rendezéstartó, könnyen adható új érték elemnek.; Listák 21 of 66
LISTÁK list, listlist Sorozat szögletes zárójelek között: [expr 1, expr 2,...]. Üres lista: []; Egy elem többször is előfordul, rendezéstartó, könnyen adható új érték elemnek.; Rendezés: sort(list,mode). Helyben történik; Listák 22 of 66
LISTÁK list, listlist Sorozat szögletes zárójelek között: [expr 1, expr 2,...]. Üres lista: []; Egy elem többször is előfordul, rendezéstartó, könnyen adható új érték elemnek.; Rendezés: sort(list,mode). Helyben történik; Eleme member, in eleme - vizsgálat; Listák 23 of 66
LISTÁK list, listlist Sorozat szögletes zárójelek között: [expr 1, expr 2,...]. Üres lista: []; Egy elem többször is előfordul, rendezéstartó, könnyen adható új érték elemnek.; Rendezés: sort(list,mode). Helyben történik; Eleme member, in eleme - vizsgálat; Szelektorok:T[],T[i], T[-i], T[i..j], T[i,j,...], T[i..j,k,...]; Listák 24 of 66
LISTÁK list, listlist Sorozat szögletes zárójelek között: [expr 1, expr 2,...]. Üres lista: []; Egy elem többször is előfordul, rendezéstartó, könnyen adható új érték elemnek.; Rendezés: sort(list,mode). Helyben történik; Eleme member, in eleme - vizsgálat; Szelektorok:T[],T[i], T[-i], T[i..j], T[i,j,...], T[i..j,k,...]; A ListTools csomag: Listák 25 of 66
LISTÁK list, listlist Sorozat szögletes zárójelek között: [expr 1, expr 2,...]. Üres lista: []; Egy elem többször is előfordul, rendezéstartó, könnyen adható új érték elemnek.; Rendezés: sort(list,mode). Helyben történik; Eleme member, in eleme - vizsgálat; Szelektorok:T[],T[i], T[-i], T[i..j], T[i,j,...], T[i..j,k,...]; A ListTools csomag: Flatten Listák 26 of 66
LISTÁK list, listlist Sorozat szögletes zárójelek között: [expr 1, expr 2,...]. Üres lista: []; Egy elem többször is előfordul, rendezéstartó, könnyen adható új érték elemnek.; Rendezés: sort(list,mode). Helyben történik; Eleme member, in eleme - vizsgálat; Szelektorok:T[],T[i], T[-i], T[i..j], T[i,j,...], T[i..j,k,...]; A ListTools csomag: Flatten Rotate, Reverse Listák 27 of 66
LISTÁK list, listlist Sorozat szögletes zárójelek között: [expr 1, expr 2,...]. Üres lista: []; Egy elem többször is előfordul, rendezéstartó, könnyen adható új érték elemnek.; Rendezés: sort(list,mode). Helyben történik; Eleme member, in eleme - vizsgálat; Szelektorok:T[],T[i], T[-i], T[i..j], T[i,j,...], T[i..j,k,...]; A ListTools csomag: Flatten Rotate, Reverse Categorize Listák 28 of 66
SZTRINGEK string Sztringek 29 of 66
SZTRINGEK string 64-biten: 34.359.738.335 karakter; Sztringek 30 of 66
SZTRINGEK string 64-biten: 34.359.738.335 karakter; Megadása: s:="czirbusz Sándor"; Sztringek 31 of 66
SZTRINGEK string 64-biten: 34.359.738.335 karakter; Megadása: s:="czirbusz Sándor"; Idézőjel sztringen belül: vagy "", vagy \"; Sztringek 32 of 66
SZTRINGEK string 64-biten: 34.359.738.335 karakter; Megadása: s:="czirbusz Sándor"; Idézőjel sztringen belül: vagy "", vagy \"; Konkatenáció:, cat(). Literálok whitespace-el is; Sztringek 33 of 66
SZTRINGEK string 64-biten: 34.359.738.335 karakter; Megadása: s:="czirbusz Sándor"; Idézőjel sztringen belül: vagy "", vagy \"; Konkatenáció:, cat(). Literálok whitespace-el is; Keresés: searchtext(pattern, string, range), vagy SearchText(pattern, string, range); Sztringek 34 of 66
SZTRINGEK string 64-biten: 34.359.738.335 karakter; Megadása: s:="czirbusz Sándor"; Idézőjel sztringen belül: vagy "", vagy \"; Konkatenáció:, cat(). Literálok whitespace-el is; Keresés: searchtext(pattern, string, range), vagy SearchText(pattern, string, range); Részsztring: substring(string, range); Sztringek 35 of 66
SZTRINGEK string 64-biten: 34.359.738.335 karakter; Megadása: s:="czirbusz Sándor"; Idézőjel sztringen belül: vagy "", vagy \"; Konkatenáció:, cat(). Literálok whitespace-el is; Keresés: searchtext(pattern, string, range), vagy SearchText(pattern, string, range); Részsztring: substring(string, range); Egyéb: StringTools csomag. Sztringek 36 of 66
VERMEK I A régi konstrukció: stack Vermek, sorok 37 of 66
VERMEK I A régi konstrukció: stack stack[new](x 1,..., x n ) - Új létrehozása, opcionálisan elemekkel; Vermek, sorok 38 of 66
VERMEK I A régi konstrukció: stack stack[new](x 1,..., x n ) - Új létrehozása, opcionálisan elemekkel; stack[push](x, s); Vermek, sorok 39 of 66
VERMEK I A régi konstrukció: stack stack[new](x 1,..., x n ) - Új létrehozása, opcionálisan elemekkel; stack[push](x, s); stack[pop](s); Vermek, sorok 40 of 66
VERMEK I A régi konstrukció: stack stack[new](x 1,..., x n ) - Új létrehozása, opcionálisan elemekkel; stack[push](x, s); stack[pop](s); Információk: stack[empty](s), stack[top](s), stack[depth](s). Vermek, sorok 41 of 66
VERMEK II Az objektumoreintált konstrukciók: Stack Vermek, sorok 42 of 66
VERMEK II Az objektumoreintált konstrukciók: Stack Konsruktorok: Vermek, sorok 43 of 66
VERMEK II Az objektumoreintált konstrukciók: Stack Konsruktorok: SimpleStack() a szokásos verem, objektumorientált köntösben; Vermek, sorok 44 of 66
VERMEK II Az objektumoreintált konstrukciók: Stack Konsruktorok: SimpleStack() a szokásos verem, objektumorientált köntösben; BoundedStack(bound::posint) a stack legfeljebb a megadott méretű lehet; Vermek, sorok 45 of 66
VERMEK II Az objektumoreintált konstrukciók: Stack Konsruktorok: SimpleStack() a szokásos verem, objektumorientált köntösben; BoundedStack(bound::posint) a stack legfeljebb a megadott méretű lehet; MeteredStack() a naplózó verem. Vermek, sorok 46 of 66
VERMEK II Az objektumoreintált konstrukciók: Stack Konsruktorok: SimpleStack() a szokásos verem, objektumorientált köntösben; BoundedStack(bound::posint) a stack legfeljebb a megadott méretű lehet; MeteredStack() a naplózó verem. Műveletek: s:-push(e::anything), s:-pop(), s:-empty(), s:-top(), s:-depth(); Vermek, sorok 47 of 66
VERMEK II Az objektumoreintált konstrukciók: Stack Konsruktorok: SimpleStack() a szokásos verem, objektumorientált köntösben; BoundedStack(bound::posint) a stack legfeljebb a megadott méretű lehet; MeteredStack() a naplózó verem. Műveletek: s:-push(e::anything), s:-pop(), s:-empty(), s:-top(), s:-depth(); A MeteredStack() többlete: s:-stats(). Vermek, sorok 48 of 66
SOROK A régi: queue Az új: Vermek, sorok 49 of 66
SOROK A régi: queue Létrehozás: hasonlóan a stack-hez; Az új: Vermek, sorok 50 of 66
SOROK A régi: queue Létrehozás: hasonlóan a stack-hez; Lehetőségek: new, empty,enqueue sor végére szúrás, dequeue utolsó elem; Az új: Vermek, sorok 51 of 66
SOROK A régi: queue Létrehozás: hasonlóan a stack-hez; Lehetőségek: new, empty,enqueue sor végére szúrás, dequeue utolsó elem; Egyéb: front - első elem törlés nélkül, lengt, clear, reverse; Az új: Vermek, sorok 52 of 66
SOROK A régi: queue Az új: Létrehozás: hasonlóan a stack-hez; Lehetőségek: new, empty,enqueue sor végére szúrás, dequeue utolsó elem; Egyéb: front - első elem törlés nélkül, lengt, clear, reverse; Használat: with(queue). Vermek, sorok 53 of 66
SOROK A régi: queue Az új: Queue Létrehozás: hasonlóan a stack-hez; Lehetőségek: new, empty,enqueue sor végére szúrás, dequeue utolsó elem; Egyéb: front - első elem törlés nélkül, lengt, clear, reverse; Használat: with(queue). A Simplestack és a queue-ból kitalálható a szintaxis. Vermek, sorok 54 of 66
PRIORITÁSOS ADATSZERKEZETEK heap Vermek, sorok 55 of 66
PRIORITÁSOS ADATSZERKEZETEK heap heap[new](f,x1,x2,..xn). f: a rendezést megvalósító logikai fv, pl lexorder; Vermek, sorok 56 of 66
PRIORITÁSOS ADATSZERKEZETEK heap heap[new](f,x1,x2,..xn). f: a rendezést megvalósító logikai fv, pl lexorder; insert, extract, empty, max, size. Vermek, sorok 57 of 66
PRIORITÁSOS ADATSZERKEZETEK heap heap[new](f,x1,x2,..xn). f: a rendezést megvalósító logikai fv, pl lexorder; insert, extract, empty, max, size. priority queue Vermek, sorok 58 of 66
PRIORITÁSOS ADATSZERKEZETEK heap heap[new](f,x1,x2,..xn). f: a rendezést megvalósító logikai fv, pl lexorder; insert, extract, empty, max, size. priority queue Konstruálás: initialize(pq); Vermek, sorok 59 of 66
PRIORITÁSOS ADATSZERKEZETEK heap heap[new](f,x1,x2,..xn). f: a rendezést megvalósító logikai fv, pl lexorder; insert, extract, empty, max, size. priority queue Konstruálás: initialize(pq); Műveletek: insert(newrecord, pq), extract(pq); Vermek, sorok 60 of 66
PRIORITÁSOS ADATSZERKEZETEK heap heap[new](f,x1,x2,..xn). f: a rendezést megvalósító logikai fv, pl lexorder; insert, extract, empty, max, size. priority queue Konstruálás: initialize(pq); Műveletek: insert(newrecord, pq), extract(pq); Használata: with(priqueue). Vermek, sorok 61 of 66
Rekordok 62 of 66 REKORDOK record
Rekordok 63 of 66 REKORDOK record Pascal stílusú rekordmegvalósítása;
Rekordok 64 of 66 REKORDOK record Pascal stílusú rekordmegvalósítása; Konstruktor: Record(nev 1 =ert 1,nev 2 =ert 2,...);
Rekordok 65 of 66 REKORDOK record Pascal stílusú rekordmegvalósítása; Konstruktor: Record(nev 1 =ert 1,nev 2 =ert 2,...); Implementáció: modulokkal;
Rekordok 66 of 66 REKORDOK record Pascal stílusú rekordmegvalósítása; Konstruktor: Record(nev 1 =ert 1,nev 2 =ert 2,...); Implementáció: modulokkal; Hivatkozás: rec_name:-
Rekordok 67 of 66 REKORDOK record Pascal stílusú rekordmegvalósítása; Konstruktor: Record(nev 1 =ert 1,nev 2 =ert 2,...); Implementáció: modulokkal; Hivatkozás: rec_name:- Egyenlőség tesztelése: verify(expr1, expr2, record)