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 Feltételes utasítás Az if a MAPLE -ben if a SAGE -ben 4 Ciklusok Ciklusok a MAPLE -ben for...from ciklus for/in ciklus while ciklus Általános ciklusok Ciklusok a SAGE -ben TARTALOMJEGYZÉK 2 of 28
Értékadás 3 of 28 AZ ÉRTÉKADÁS ÉS A MAPLE name := expr; (name1,..., namen) := (expr1,..., exprn);
Értékadás 4 of 28 AZ ÉRTÉKADÁS ÉS A MAPLE name := expr; (name1,..., namen) := (expr1,..., exprn); Tesztelés: assigned(name)
Értékadás 5 of 28 AZ ÉRTÉKADÁS ÉS A MAPLE name := expr; (name1,..., namen) := (expr1,..., exprn); Tesztelés: assigned(name) Hozzárendelés visszavonása (a szimbólum azért marad):
Értékadás 6 of 28 AZ ÉRTÉKADÁS ÉS A MAPLE name := expr; (name1,..., namen) := (expr1,..., exprn); Tesztelés: assigned(name) Hozzárendelés visszavonása (a szimbólum azért marad): name := name
Értékadás 7 of 28 AZ ÉRTÉKADÁS ÉS A MAPLE name := expr; (name1,..., namen) := (expr1,..., exprn); Tesztelés: assigned(name) Hozzárendelés visszavonása (a szimbólum azért marad): name := name unassign( name1, name2,...)
Értékadás 8 of 28 AZ ÉRTÉKADÁS ÉS A MAPLE name := expr; (name1,..., namen) := (expr1,..., exprn); Tesztelés: assigned(name) Hozzárendelés visszavonása (a szimbólum azért marad): name := name unassign( name1, name2,...) evaln( name );
Értékadás 9 of 28 AZ ÉRTÉKADÁS ÉS A MAPLE name := expr; (name1,..., namen) := (expr1,..., exprn); Tesztelés: assigned(name) Hozzárendelés visszavonása (a szimbólum azért marad): name := name unassign( name1, name2,...) evaln( name ); Az assign utasítás: assign(a,b), assign(a=b), assign(l): mindkét oldal kiértékelése
Értékadás 10 of 28 AZ ÉRTÉKADÁS ÉS A MAPLE name := expr; (name1,..., namen) := (expr1,..., exprn); Tesztelés: assigned(name) Hozzárendelés visszavonása (a szimbólum azért marad): name := name unassign( name1, name2,...) evaln( name ); Az assign utasítás: assign(a,b), assign(a=b), assign(l): mindkét oldal kiértékelése a,b paraméterek: a = b (egyszerű változókra)
Értékadás 11 of 28 AZ ÉRTÉKADÁS ÉS A MAPLE name := expr; (name1,..., namen) := (expr1,..., exprn); Tesztelés: assigned(name) Hozzárendelés visszavonása (a szimbólum azért marad): name := name unassign( name1, name2,...) evaln( name ); Az assign utasítás: assign(a,b), assign(a=b), assign(l): mindkét oldal kiértékelése a,b paraméterek: a = b (egyszerű változókra) A,B paraméterek: A,B azonos hosszú kifejezés-sorozat
Értékadás 12 of 28 AZ ÉRTÉKADÁS ÉS A MAPLE name := expr; (name1,..., namen) := (expr1,..., exprn); Tesztelés: assigned(name) Hozzárendelés visszavonása (a szimbólum azért marad): name := name unassign( name1, name2,...) evaln( name ); Az assign utasítás: assign(a,b), assign(a=b), assign(l): mindkét oldal kiértékelése a,b paraméterek: a = b (egyszerű változókra) A,B paraméterek: A,B azonos hosszú kifejezés-sorozat L paraméter: L egyenletek listája vagy halmaza.
Értékadás 13 of 28 AZ ÉRTÉKADÁS ÉS A SAGE Az x változót kivéve kötelező a [varlist =] var( [varlist] ) deklaráció, ez egyben a meglévő változók értékeit meg is szünteti
Értékadás 14 of 28 AZ ÉRTÉKADÁS ÉS A SAGE Az x változót kivéve kötelező a [varlist =] var( [varlist] ) deklaráció, ez egyben a meglévő változók értékeit meg is szünteti Értékadás: var = kif
Értékadás 15 of 28 AZ ÉRTÉKADÁS ÉS A SAGE Az x változót kivéve kötelező a [varlist =] var( [varlist] ) deklaráció, ez egyben a meglévő változók értékeit meg is szünteti Értékadás: var = kif Ugyanúgy megy a var1, var2,...= kif1, kif2,... forma is. Azonos számú változó és kifejezést esetén mindegyik változóba a megfelelő érték kerül.
Értékadás 16 of 28 AZ ÉRTÉKADÁS ÉS A SAGE Az x változót kivéve kötelező a [varlist =] var( [varlist] ) deklaráció, ez egyben a meglévő változók értékeit meg is szünteti Értékadás: var = kif Ugyanúgy megy a var1, var2,...= kif1, kif2,... forma is. Azonos számú változó és kifejezést esetén mindegyik változóba a megfelelő érték kerül. Ha csak egy változó és több kifejezés van, akkor a változóba egy tuple kerül (rendezett konstans lista)
Feltételes utasítás 17 of 28 FELTÉTELES UTASÍTÁS I if cond1 then statement_sequ1 elif cond2 then statement_sequ2 elif cond3 then statement_sequ3... else statement_sequn end if
Feltételes utasítás 18 of 28 FELTÉTELES UTASÍTÁS II Feltételes kifejezések konstruálása és kiértékelése: Relációs műveletek: <, <=, =, >=, >, <> Logikai műveletek - and, or, xor, implies, not Logikai nevek- true, false, FAIL Kiértékelés: evalb, testeq, vagy is Megjegyzés A logika logika háromértékű: true, false és FAIL
Feltételes utasítás 19 of 28 FELTÉTELES UTASÍTÁS if cond1: statement_sequ1 elif cond2: statement_sequ2 elif cond3: statement_sequ3... else: statement_sequn Nincs blokkvége, a kettőspont kötelező
Feltételes utasítás 20 of 28 FELTÉTELES KIFEJEZÉSEK KONSTRUÁLÁSA Feltételvizsgálat: kif1 == kif2 vagy kif1 is kif2
Feltételes utasítás 21 of 28 FELTÉTELES KIFEJEZÉSEK KONSTRUÁLÁSA Feltételvizsgálat: kif1 == kif2 vagy kif1 is kif2 Logikai operátorok: and, or, not
Feltételes utasítás 22 of 28 FELTÉTELES KIFEJEZÉSEK KONSTRUÁLÁSA Feltételvizsgálat: kif1 == kif2 vagy kif1 is kif2 Logikai operátorok: and, or, not A logikai kiértékelések természetesebbek a MAPLE -énál
Ciklusok 23 of 28 F O R...F R O M CIKLUS for counter from init by increment to final do statement_seq end do A from, a by és a to klauza opcionális, sorrendjük tetszőleges. A default értékek: by =1, from = 0.
Ciklusok 24 of 28 FOR/IN CIKLUS for variable in expr do statement_seq end do Az "expr" (iterálható struktúra) minden komponesén végigszalad a változó és végrehajtja az utasításokat. Ilyen pl a PHP foreach ciklusa.
Ciklusok 25 of 28 W H I L E CIKLUS while cond do statement_seq end do
Ciklusok 26 of 28 ÁLTALÁNOS CIKLUSOK for counter from init by increment to final while cond do statement_seq end do for variable in expr statement_seq end do while cond do Ciklusfutás befolyásolása : break,next
Ciklusok 27 of 28 A F O R ITERÁCIÓ I for counter in range(): statement_seq A range paraméterei a szokásos kezdőérték (a default 0), végérték és léptetés (default = 1). A más nyelvekben szokásostól, a végértékre már nem fut le a ciklus, mert itt futások számát jelenti. Variánsai: range : egy listát állít elő xrange : nem listat készít, hanem iterátort, ezért gyorsabb srange : a leglassab, szintén listát készít, továbbparaméterezhető
Ciklusok 28 of 28 A F O R ITERÁCIÓ II for counter in obj: statement_seq Itt az obj egy iterálható objektum, többnyire lista. A kettőspont itt is kötelező, a ciklustörzs adig tart, míg ki nem lépünk az indentálásból.
Ciklusok 29 of 28 A W H I L E CIKLUS wile logikai_felt: statement_seq A szokásos while szerkezet a Pythonos-szintaxissal.