50
Caché Object Script Jan Lánský [email protected]

Cach é Object Script

  • Upload
    tim

  • View
    59

  • Download
    0

Embed Size (px)

DESCRIPTION

Cach é Object Script. Jan Lánský [email protected]. Proměnné. Nemusí se deklarovat, netypované Mohou být i pole (téměř) neomezené dimenze Lokální proměnné - Při konci procesu zaniknou Př. SET pozdrav = “AHOJ“ Globální - Perzistentní, uloženy v DB Př. SET ^pozdrav = “AHOJ“ - PowerPoint PPT Presentation

Citation preview

Page 1: Cach é Object Script

Caché Object Script

Jan Lánský

[email protected]

Page 2: Cach é Object Script

24.3.2004 Cache Object Script 2

Proměnné• Nemusí se deklarovat, netypované

• Mohou být i pole (téměř) neomezené dimenze

• Lokální proměnné - Při konci procesu zaniknou• Př. SET pozdrav = “AHOJ“

• Globální - Perzistentní, uloženy v DB• Př. SET ^pozdrav = “AHOJ“

• Systémové - Speciální sada proměnných prostředí• Př. SET cas = $HOROLOG

• Systémové a perzistentní• Př. ^$JOB

Page 3: Cach é Object Script

24.3.2004 Cache Object Script 3

Vícedimenzionální proměnné

• SET a(1)=“ Pepa“

• SET a(1,“věk“)=56

• SET a(1,“děti“,1,“jméno“)=“Honza“

• SET a(1,“děti“,1,“pohlaví“)=“Muž“

• SET a(1,“děti“,2,“jméno“)=“Jana“

• SET a(1,“děti“,2,“pohlaví“)=“Žena“

Page 4: Cach é Object Script

24.3.2004 Cache Object Script 4

Proměnné - konverze

Z Do Pravidla

Číslo Objekt NELZE

Číslo Řetězec Př. 22 “22“

Objekt Číslo Objektu se přiřadí číslo

Objekt Řetězec “oref@classname“ kde oref je číslo instance a classname jméno třídy.

Řetězec Číslo Převede první číselný podřetězec.

Řetězec Objekt NELZE

Page 5: Cach é Object Script

24.3.2004 Cache Object Script 5

Příkazy

• Syntax: Příkaz:podmínka parametry • Názvy příkazů jsou psány velkými písmeny, lze je

zkrátit na libovolný jejich prefix.• Většina příkazů má jeden nebo více parametrů.• Za příkazem následuje dvojtečka, podmínka,

mezera a parametry příkazu. • Podmínku (a dvojtečku) lze vždy vynechat.• Parametr lze často vynechat, pokud ho nahradíme

mezerou.

Page 6: Cach é Object Script

24.3.2004 Cache Object Script 6

Použití podmínky v příkazech

• K ukončení cyklu• FOR i=1,1 WRITE i QUIT:i>2 WRITE *

• Vypíše 1*2*3

• K nahrazení IF• WRITE:i>5 i

• Je náhradou za IF (i>5) WRITE i

Page 7: Cach é Object Script

24.3.2004 Cache Object Script 7

Příkaz SET

• Nastaví hodnotu proměnné

• SET a=1

• SET a=1,b=2,c=3

• SET (a,b,c)=1

• SET (a,b)=1,c=6,(d,e,f)=2

• SET osoba.jmeno= “Honza“

Page 8: Cach é Object Script

24.3.2004 Cache Object Script 8

Příkaz KILL

• KILL – mazání proměnných• KILL x // zruší proměnnou x

• KILL x,y // zruší proměnné x,y

• KILL (x) // zruší lokální proměnné mimo X

• KILL // zruší všechny lokální proměnné

Page 9: Cach é Object Script

24.3.2004 Cache Object Script 9

Příkaz WRITE

• Vypíše text• WRITE “Ahoj“

• Vypíše hodnotu proměnné, výsledek funkce• SET a=1 WRITE a

• Bez parametru vypíše jména a hodnoty všech lokálních proměnných

• Lze používat formátovací znaky

Page 10: Cach é Object Script

24.3.2004 Cache Object Script 10

Formátovací znaky

• Odřádkování: !• SET x=5 WRITE “x = “,x,! WRITE “y = “,y

• Nová stránka: #• Smaže terminál a začne na hoře novou stránku

• Sloupec n: ?n• Nastaví se n-tý sloupec

Page 11: Cach é Object Script

24.3.2004 Cache Object Script 11

Příkaz READ

• READ formát, popisek, proměnná• Načte hodnotu proměnné se standardního

vstupu.

• Popisek se zobrazí před načtením proměnné

• Formát (viz předchozí slide) udává, kde na obrazovce objeví oblast pro zadání hodnoty proměnné.

• READ !, “Zadej celé číslo“, X

Page 12: Cach é Object Script

24.3.2004 Cache Object Script 12

Příkaz IF, ELSEIF, ELSE

• IF podmínka { příkazy } • Jeli splněna podmínka vykoná se blok příkazů

• ELSEIF podmínka { příkazy }• ELSE + IF

• nepovinné

• ELSE { příkazy }• Není-li splněna podmínka za IF, vykoná se blok

příkazů za ELSE

• nepovinné

Page 13: Cach é Object Script

24.3.2004 Cache Object Script 13

Příkaz IF, ELSEIF, ELSE

• READ “Zadej číslo:“, X

• IF (X=1) WRITE “Jednička“

• ELSEIF (X=2) WRITE “Dvojka“

• ELSEIF (X=3) WRITE “Trojka“

• ELSE WRITE “Větší než tři“

Page 14: Cach é Object Script

24.3.2004 Cache Object Script 14

Příkaz FOR

• FOR řídící=start:přírůstek:konec { příkazy }• Řídící proměnnou nastaví na hodnotu start• V každém kroku cyklu ji zvýší o přírůstek• Skončí po provedení cyklu, ve kterém řídící

proměnná dosáhla hodnoty konec. • Cyklus lze kdykoliv ukončit pomocí QUIT• Příklad

• FOR i=0:7:70 WRITE I,!• Vypíše malou násobilku sedmi

Page 15: Cach é Object Script

24.3.2004 Cache Object Script 15

Příkaz FOR

• FOR řídící=start:přírůstek { příkazy }• Nekonečný cyklus

• Ukončit lze pomocí QUIT

• FOR {příkazy}• Nekonečný cyklus

• Za FOR jsou 2 mezery

Page 16: Cach é Object Script

24.3.2004 Cache Object Script 16

Příkaz FOR

• FOR řídící=položka1,položka2, …{ příkazy}• Řídící proměnná se postupně nastavuje na hodnoty

uvedené v seznamu a pro ně vykonává blok příkazů

• Příklad• FOR i=Petr,Honza,Karel WRITE !,“To je“,i

Page 17: Cach é Object Script

24.3.2004 Cache Object Script 17

Příkaz DO, WHILE

• DO { příkazy } WHILE (podmínka)• Vykonává blok příkazů dokud je splněna

podmínka

• WHILE (podmínka) { příkazy }• Dokud je splněna podmínka vykonává blok

příkazů

• Předčasně lze ukončit pomocí QUIT

• Příklad: WHILE (i>5) SET i=(i-1)

Page 18: Cach é Object Script

24.3.2004 Cache Object Script 18

Funkce

• $JménoFunkce(Parametr1,Parametr2,…)• $ a závorky jsou povinné• Parametry se oddělují čárkou, po čárce může

být mezera• Mezi jménem funkce a závorkou nesmí být

mezera• Jména funkcí lze zkracovat na libovolný prefix• Parametry můžou být nepovinné nebo libovolné

množství

Page 19: Cach é Object Script

24.3.2004 Cache Object Script 19

Funkce $DATA

• $DATA(proměnná, cíl)• Vrátí informace o proměnné (případně i části

vícedimenzionální proměnné)• Parametr cíl je nepovinný, uloží se sem výsledek• Návratové hodnoty

• 0 – nedefinované proměnná• 1 - proměnná obsahuje data, ale nemá potomky• 10 – proměnná neobsahuje data, ale má potomky• 11 – proměnná obsahuje data i potomky

Page 20: Cach é Object Script

24.3.2004 Cache Object Script 20

Funkce $DATA

• SET a(1)=“ Pepa“

• SET a(1,“děti“,1,“jméno“)=“Honza“

• SET a(1,“děti“,1,“pohlaví“)=“Muž“

• SET a(1,“děti“,2,“pohlaví“)=“Zena“

• $DATA(a(2)) // vrátí 0

• $DATA(a(1,“děti“,1,“pohlaví“)) // vrátí 1

• $DATA(a(1,“děti“,2)) // vrátí 10

• $DATA(a(1)) // vrátí 11

Page 21: Cach é Object Script

24.3.2004 Cache Object Script 21

Funkce $GET

• $GET(proměnná, DefaultHodnota)

• Vrátí hodnotu proměnné. Pokud proměnná není definována, tak vrátí defaultní hodnotu.

• Defaultní hodnota jen nepovinný parametr, není-li zadán, je nastaven na prázdný řetězec.

• Příklad: • SET a(1)=“Pepa“

• SET b=$GET(a(1),“neznámý“)

Page 22: Cach é Object Script

24.3.2004 Cache Object Script 22

Funkce $ORDER

• $ORDER(proměnná, směr, cíl)

• Vrátí jméno Následníka (či předchůdce) proměnné, která je na stejné úrovni vnoření. U proměnných bez indexu vrátí následující (předchozí) lokální proměnnou.

• Směr je nepovinný parametr, nabývá hodnot –1 (předchůdce) a 1 (následník) - defaultní hodnota.

• Parametr cíl je nepovinný, uloží se sem výsledek

Page 23: Cach é Object Script

24.3.2004 Cache Object Script 23

Funkce $ORDER

• SET a(1)=“ Pepa“, d=4

• SET a(1,“děti“,1,“jméno“)=“Honza“

• SET a(1,“děti“,1,“pohlaví“)=“Muž“

• SET a(1,“děti“,2,“pohlaví“)=“Zena“

• $ORDER(a) // vrátí “d“

• $ORDER(a(1,“děti“,2),-1) // vrátí 1

Page 24: Cach é Object Script

24.3.2004 Cache Object Script 24

Funkce $QUERY

• $ QUERY(reference, směr, cíl)• Vrátí referenci na Následníka (či předchůdce)

vstupní reference, který obsahuje data. Nemusí být na stejné úrovni vnoření. U proměnných bez indexu vrátí jejich nejlevější definovaný list.

• Je-li list poslední (první) vrací prázdný řetězec• Směr je nepovinný parametr, nabývá hodnot –1

(předchůdce) a 1 (následník) - defaultní hodnota.• Parametr cíl je nepovinný, uloží se sem výsledek

Page 25: Cach é Object Script

24.3.2004 Cache Object Script 25

Funkce $QUERY

• SET a(1)=“ Pepa“, a(2)=“Radek “

• SET a(1,“děti“,1)=“Honza“

• SET a(1,“děti“,2 )=“Jana“

• $ORDER(a) // vrátí a(1,“děti“,1) $ORDER(a(1,“děti“,2 )) // vrátí a(2)

• $ORDER(a(1,“děti“,2),-1)• // vrátí a(1,“děti“,1)

Page 26: Cach é Object Script

24.3.2004 Cache Object Script 26

Funkce $PIECE

• $PIECE(řetězec,oddělovač,od,do)• Řetězec je rozdělen na podřetězce pomocí

oddělovače. Jsou vráceny podřetězce z rozpětí udaného parametry od a do.

• Parametry od a do jsou nepovinné. Udávají rozpětí ze kterého se mají vzorky vracet. Defaultně jsou oba parametry 1.

Page 27: Cach é Object Script

24.3.2004 Cache Object Script 27

Funkce $PIECE

• $PIECE(“a,b,c,d,e“,“,“) // vrátí “a“

• $PIECE(“a,b,c,d,e“,“,“,2,4) // vrátí “b,c,d“

• $PIECE(“ABCcxBcx“,“cx“) // vrátí “ABC“

Page 28: Cach é Object Script

24.3.2004 Cache Object Script 28

Funkce $EXTRACT

• $EXTRACT(řetězec,od,do)• Vrátí podřetězec začínající na pozici od a

končící na pozici do

• Parametry od a do jsou nepovinné, defaultně nastavené na 1. Je-li nastaven pouze parametr od, parametr do má stejnou hodnotu.

• Příklad: • $EXTRACT(“123456789“,5,7) // vrátí “5,6,7“

Page 29: Cach é Object Script

24.3.2004 Cache Object Script 29

Funkce $SELECT

• $SELECT(výraz:hodnota, …)• Libovolný počet parametrů typu výraz:hodnota

• Při vyhodnocování se prochází tento seznam a prvního výrazu, který je TRUE se vrátí jeho hodnota.

• Není-li žádný výraz TRUE, vrátí error.

• Příklad:• $SELECT(x=“a“:1, x=“b“:1, x=“c“:1)

Page 30: Cach é Object Script

24.3.2004 Cache Object Script 30

Funkce $CASE

• $CASE(cíl,výraz:hodnotu,…,default)• Postupně prochází seznam parametrů typu

výraz:proměnná a porovnává cíl s výrazem. Při prvním TRUE vrátí příslušnou hodnotu. V případě nenalezení TRUE vrátí default.

• Parametr defalut je nepovinný, chybí-li s žádný výraz není TRUE, nastane error.

• Příklad• $SELECT(x,“a“:1,“b“:1,“c“:1,-1)

Page 31: Cach é Object Script

24.3.2004 Cache Object Script 31

Funkce $LISTBUILD

• $LISTBUILD(element, …)• Parametr element může mít libovolný počet

výskytů.• Vytvoří spojový seznam, který bude obsahovat

elementy, v pořadí jak byli zadány jako parametry funkce.

• Příklad• SET X=$LISTBUILD(“a“,“b“,“c“)• WRITE $LIST(X,1,3) // vrátí “a,b,c“

Page 32: Cach é Object Script

24.3.2004 Cache Object Script 32

Operátory - úvod

• Syntax: [operand] operátor operand

• Operandem libovolného operátoru může být číslo, řetězec i logická hodnota. Dochází k automatické konverzi na typ vyžadovaný operátorem.

Page 33: Cach é Object Script

24.3.2004 Cache Object Script 33

Vyhodnocování Operátorů

• Neuznává priority operátorů, striktně vyhodnocuje zleva doprava.• Př.: 1+1*2

• Vrátí 4, místo 3

• IF K=L+3 THEN WRITE K• Vždy vypíše K

• Prioritu lze určit závorkami• Př.: 1+(1*2) = 3

• IF K=(L+3 ) THEN WRITE K

Page 34: Cach é Object Script

24.3.2004 Cache Object Script 34

Typy operátorů

• Číselné – operandy čísla,vrací číslo

• Řetězcové – operandy řetězce, vrací řetězec

• Logické – operandy TRUE(1) nebo FALSE(0), vrací TRUE(1) nebo FALSE(0)

• Porovnávací –vrací TRUE nebo FALSE• Číselné – operandy čísla

• Řetězcové – operandy řetězce

Page 35: Cach é Object Script

24.3.2004 Cache Object Script 35

Aritmetické operátory

• Plus (binární, unární): +

• Mínus (binární, unární): -

• Krát: *

• Děleno: /

• Celočíselné dělení: \

• Modulo: #

• Mocnina: **

Page 36: Cach é Object Script

24.3.2004 Cache Object Script 36

Řetězcové operátory

• Konkatenace: _• op1_op2

• Zřetězí levý operand (op1) s pravým operandem (op2)

• Příklad: • Zadání: “ahoj“_865

• Výsledek: “ ahoj865“

Page 37: Cach é Object Script

24.3.2004 Cache Object Script 37

Logické operátory

• NOT: ‘

• AND s úplným vyhodnocením: &

• AND s redukovaným vyhodnocením: &&

• OR s úplným vyhodnocením: !

• OR s redukovaným vyhodnocením: ||

• NAND: ‘&

• NOR: ‘!

Page 38: Cach é Object Script

24.3.2004 Cache Object Script 38

Porovnávací číselné operátory

• Test na rovnost: =

• Test na nerovnost: ‘=

• Větší: >

• Menší: <

• Větší nebo rovno: ‘<

• Menší nebo rovno: ‘>

Page 39: Cach é Object Script

24.3.2004 Cache Object Script 39

Porovnávací řetězcové operátory

• Test na rovnost řetězců: =• Test na nerovnost řetězců: ‘=• Levý operand je podřetězcem pravého: [• Levý operand není podřetězcem pravého : ‘[• Lexikograficky větší: ]• Lexikograficky menší nebo rovno: ‘]• Numericky větší: ]]• Numericky menší nebo rovno: ‘]]• Porovnání se vzorem: @

Page 40: Cach é Object Script

24.3.2004 Cache Object Script 40

Speciální operátory

• Závorky, volání funkce, index pole: (, )

• Porovnání, přiřazení: =

• Přístup k metodám a proměnným objektů: .

• Dereference: @

• Komentář do konce řádky: //

• Komentář: /*, */

Page 41: Cach é Object Script

24.3.2004 Cache Object Script 41

Operátory +, -, *, /, \, #, ** • SET X=-3 • SET Y=12• SET Z=+X• SET Z=-X• SET Z=X+Y• SET Z=X–Y• SET Z=X*Y• SET R=X/Y• SET Z=X\Y• SET Z=X#Y• SET Z=X**Y

• int X = -3, Y = 12, Z;• double R;• Z = +X;• Z = -X;• Z = X + Y;• Z = X – Y;• Z = X * Y;• R = X / Y;• Z = X / Y;• Z = X % Y;• Z = pow( X, Y );

Page 42: Cach é Object Script

24.3.2004 Cache Object Script 42

Operátory ‘, &, &&, !, ||, ‘&, ‘!

• SET X=0,Y=7

• SET Z=‘ X

• SET Z=X&Y

• SET Z=X&&Y

• SET Z=X!Y

• SEZ Z=X||Y

• SET Z=X‘&Y

• SET Z=X‘!Y

• int X = 0, Y = 7, Z;

• Z = ! X;

• Z = (!!X + !!Y) == 2;

• Z = X && Y;

• Z = !! (!! X + !! Y);

• Z = X || Y;

• Z = (!!X + !!Y) != 2;

• Z = ! (!! X + !! Y);

Page 43: Cach é Object Script

24.3.2004 Cache Object Script 43

Operátory =, ‘=, >, <, ‘>, ‘<

• SET X=4,Y=7

• SET Z=X=Y

• SET Z=X‘=Y

• SET Z=X>Y

• SET Z=X<Y

• SET Z=X‘>Y

• SET Z=X‘<Y

• int X = 4, Y = 7, Z;

• Z = X == Y;

• Z = X != Y;

• Z = X > Y;

• Z = X < Y;

• Z = X <= Y;

• Z = X >= Y;

Page 44: Cach é Object Script

24.3.2004 Cache Object Script 44

Řetězcové operátory =, ‘=

• Operátor rovnost řetězců: =• op1 = op2• Vrací TRUE pokud levý operand (op1) a pravý operand

(op2) obsahují shodný textový řetězec.• Příklad: “007“ = “7“ vrací FALSE

• Operátor nerovnost řetězců: ‘=• op1 ‘= op2• Vrací TRUE pokud levý operand (op1) a pravý operand

(op2) obsahují různý textový řetězec.• Příklad: “ahoj“ = “ahoj“ vrací FALSE

Page 45: Cach é Object Script

24.3.2004 Cache Object Script 45

Operátory [, ‘[, ], ‘]

• Je podřetězcem: op1 [ op2• Vrací TRUE, pokud pravý operand (op2) je

podřetězcem levého operandu (op1).• Příklad: “ABCDE“ [ “BC“ vrací TRUE• op1 ‘[ op2 je zkratka za ‘( op1 [ op2 )

• Je lexikograficky větší: op1 ] op2• Vrací TRUE, pokud levý operand (op2) je

lexikograficky větší než pravý operand (op1).• Příklad: “ABC“ ] “AC“ vrací FALSE• op1 ‘] op2 je zkratka za ‘( op1 ] op2 )

Page 46: Cach é Object Script

24.3.2004 Cache Object Script 46

Operátory ]], ‘]]

• Operátor numerické větší pro řetězce: ]]• op1 ]] op2• Vrací TRUE pokud levý operand (op1) je numericky

větší než pravý operand (op2).• Příklad: “10“ = “8“ vrací TRUE

• Operátor numerické <= pro řetězce : ‘]]• op1 ‘]] op2• Vrací TRUE pokud levý operand (op1) je numericky

menší nebo rovný než pravý operand (op2).• Příklad: “569“ = “ahoj“ vrací FALSE

Page 47: Cach é Object Script

24.3.2004 Cache Object Script 47

Operátor ?

• Porovnání ze vzorem: op1 ?op2• Vrací TRUE pokud se levý operand (op1)

odpovídá vzorku definovaném v pravém operandu (op2).

• Za ? Nesmí být mezera• Vzorek se skládá z těchto částí v tomto pořadí

• Počet opakování vzorku• Vlastí vzorek• Po logickém OR může následovat další vzor

Page 48: Cach é Object Script

24.3.2004 Cache Object Script 48

Operátor ? – počet opakování

• Počet opakování vzorku ve vzoru• n – právě n krát

• n.m – nejméně n krát, nejvýše m krát

• .m – njevýše m krát

• n. – nejméně n krát

• Příklad: “ABABAB“ ?1.4“AB“• Vrátí TRUE, neboť AB se opakuje třikrát.

Page 49: Cach é Object Script

24.3.2004 Cache Object Script 49

Operátor ? – vlastní vzorek

• Místo řetězce lze použít konstanty• A – písmeno• C – znak od 31 do 255 ASCII• E – cokoliv • L – malé písmeno• N – číslice (Př.: rodné číslo: 6N1“/“4N)• P – interpunkční znaménko• U – velké písmeno

Page 50: Cach é Object Script

24.3.2004 Cache Object Script 50

Literatura

• Caché On-Line Dokumentation

• M[UMPS] by Example• Ed de Moel, 1995-2004.