1 / 50

Cach é Object Script

Cach é Object Script. Jan Lánský zizelevak@matfyz.cz. 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“

tim
Download Presentation

Cach é Object Script

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Caché Object Script Jan Lánský zizelevak@matfyz.cz

  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 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“ Cache Object Script

  4. Proměnné - konverze 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ímemezerou. 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 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“ 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é 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 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 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 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é 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“ 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 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 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 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) 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í 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 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 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ý“) 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 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 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 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) 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. 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“ 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“ 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) 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) 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“ 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. 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 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 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: ** 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“ 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: ‘! 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: ‘> 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: @ 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ář: /*, */ Cache Object Script

  41. 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 ); Operátory +, -, *, /, \, #, ** Cache Object Script

  42. 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); Operátory ‘, &, &&, !, ||, ‘&, ‘! Cache Object Script

  43. 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; Operátory =, ‘=, >, <, ‘>, ‘< 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 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 ) 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 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 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. 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 Cache Object Script

  50. Literatura • Caché On-Line Dokumentation • M[UMPS] by Example • Ed de Moel, 1995-2004. Cache Object Script

More Related