Uživatelské nástroje

Nástroje pro tento web


orbis:oil

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revizePředchozí verze
Následující verze
Předchozí verze
orbis:oil [2025/04/15 11:53] – [Operátory výrazu] ppkorbis:oil [2025/04/15 15:40] (aktuální) – [CONTINUE] ppk
Řádek 9: Řádek 9:
 Změnu aktivního elementu je možné provést nastavením systémové proměnné ''**ACTIVEELEMENT**''. každý řádek má výsledek kterým je buď hodnota, nebo seznam hodnot. Cesta zápisu může být i **absolutní**, pak řádek začíná slovem **World**.\\ Změnu aktivního elementu je možné provést nastavením systémové proměnné ''**ACTIVEELEMENT**''. každý řádek má výsledek kterým je buď hodnota, nebo seznam hodnot. Cesta zápisu může být i **absolutní**, pak řádek začíná slovem **World**.\\
 Příkazový řádek tedy v souhrnu disponovat těmito jevy: Příkazový řádek tedy v souhrnu disponovat těmito jevy:
-  * Cesta k elementu \\ ''ObjecModel.Karel''\\ ... zápis vrátí číselnou adresu elementu Karel (0 pokud neexistuje) +  * definice proměnné stylem '' Jméno: typ '' např. <code oil> W: TElement </code> 
-  * Cesta k vlastnosti elementu \\ ''ObjecModel.Karel.Count'' \\ ...Vrátí počet elementů Karla +  * Cesta k elementu <code oil>ObjecModel.WORK </code> ... zápis vrátí číselnou adresu elementu WORK v Objektovém modelu světa 
-  * Výraz \\ ''{ 2 * 3}'' \\ ...Výsledkem je 6  +  * Cesta k vlastnosti elementu <code oil>ObjecModel.WORK.Count </code> ...Vrátí počet elementů WORK 
-  * Přiřazení \\ ''ObjecModel.Karel.Name = 'Rudolf''' \\ ...Změní hodnotu vlastnosti Name, tedy přejmenuje Karla na Rudolfa +  * Výraz <code oil>{ 2 * 3}</code> ...Výsledkem je 6  
-  * Funkce \\ ''ObjecModel.Karel.CreateElement(TOwnerEntity, Bohdan)'' \\ ...pod Karlem vytvoří Entitu Bohdan a vrátí její adresu +  * Funkce <code oil> 
-  * Seznam \\ ''ObjecModel.Karel.Element.Name'' \\ ...Vrací seznam jmen všech elementů pod Karlem +ObjecModel.WORK.CreateElement(TOwnerEntity, Karel) 
-  * a kombinace těchto stavů.+ObjecModel.WORK.CreateElement(TOwnerEntity, Bohdan) 
 +</code> ...pod WORK vytvoří Entity Karel a Bohdan a poslední řídek vrátí adresu Bohdana 
 +  * Přiřazení <code oil> 
 +ObjecModel.WORK.Karel.Name = 'Rudolf' 
 +</code> ...Změní hodnotu vlastnosti Name, tedy přejmenuje Karla na Rudolfa 
 +  * Seznam <code oil>ObjecModel.WORK.Element.Name</code> ...Vrací seznam jmen všech elementů pod WORK, výsledkem bude ''Rudolf, Bohdan'' 
 +  * a kombinace těchto stavů: <code oil> 
 +W: TElement                          // definice proměnné W 
 +i: integer                           // a celočíselné proměnné i 
 +S: string                            // textové S   
 +Bobo: TElement                       // a nakonec objektového Boba 
 +   
 +W = ÓbjecModel.WORK                  // do W přiřadíme element WORK 
 +W.CreateElement(TOwnerEntity, Karel) // ve WORK vytvoříme entitu Karel 
 +                                     // to samé provedeme s Bohdanem ale jinak 
 +Bobo = Create(TOwnerEntity, Bohdan)  // do proměnné Bobo přiřadíme vytvořeného Bohdana 
 +W.NextElement = Bobo                 // a vložíme ho do WORK aby se stal součásti modelu 
 +W.Karel.Name = 'Rudolf'              // Karla přejmenujeme na Rudolfa  
 +i = {W.Count * 2}                    // do i přijde dvojnásobná hodnota počtu elementů WORK, tedy 4 
 +S = cat(" Dvojnásobný počet elementů ve WORK je ", i) 
 +                                     // v S je text Dvojnásobný počet elementů ve WORK je 4 
 +</code>
  
  
Řádek 64: Řádek 85:
 ==== Definice ==== ==== Definice ====
 Proměnné je možné definovat kdekoliv v kódu, každopádně před jejím prvním použitím. Jejich název by neměl obsahovat mezery a doporučoval bych i šetřit s diakritikou a použitím jiných záhadných znaků. Existuje jen jedna vyjímka při které se proměnná, neexistuje-li, vytváří automaticky a to je v hlavičce cyklu **for**\\ Proměnné je možné definovat kdekoliv v kódu, každopádně před jejím prvním použitím. Jejich název by neměl obsahovat mezery a doporučoval bych i šetřit s diakritikou a použitím jiných záhadných znaků. Existuje jen jedna vyjímka při které se proměnná, neexistuje-li, vytváří automaticky a to je v hlavičce cyklu **for**\\
-Definice proměnné se provádí následujícím zápisem:+Definice proměnné se provádí následujícím zápisem: 
 <code oil> <code oil>
  
Řádek 119: Řádek 140:
 Výrazy slouží k aritmetickým nebo porovnávacím operacím nad hodnotami představovanými objekty (elementy), jejich vlastnostmi nebo obecně proměnnými. Nepoužívají se striktně jenom ve skriptech, ale i mimo ně (např funkce hledání výrazem v LEDu).  Výrazy slouží k aritmetickým nebo porovnávacím operacím nad hodnotami představovanými objekty (elementy), jejich vlastnostmi nebo obecně proměnnými. Nepoužívají se striktně jenom ve skriptech, ale i mimo ně (např funkce hledání výrazem v LEDu). 
 ==== Syntaxe výrazu ==== ==== Syntaxe výrazu ====
-Výraz v rámci OILu je uzavřen složenými závorkami... ''**{..}**''. Výjimkou je hlavička ''**IF**'' a ''**WHILE**'' ... tam je samozřejmé, že se jedná o výraz a závorka se nepoužívá.\\+Výraz v rámci OILu je uzavřen složenými závorkami... ''**{..}**''. Výjimkou je hlavička ''**IF**'' a ''**WHILE**'' ... tam je samozřejmé, že se jedná o výraz a závorka se nepoužívá. Další vyjímkou je samostatné použití například v dialogu "Hledání ve vrstvách výrazem" v LEDu. Pak se ve výrazu nevyskytují žádné proměnné, ale spouští se na každý testovaný objekt a je možné v něm používat přímo vlastnosti testovaného objektu.\\
 Výraz, stejně jako zbytek OILu není case senzitivní, takže velikost písmen nerozhoduje.\\ Výraz, stejně jako zbytek OILu není case senzitivní, takže velikost písmen nerozhoduje.\\
 Další syntaktická pravidla jsou ale mnohem přísnější: Další syntaktická pravidla jsou ale mnohem přísnější:
Řádek 163: Řádek 184:
 | <=           | "menší nebo rovno" ...True pokud je první hodnota menší nebo rovna druhé    |boolean             | | <=           | "menší nebo rovno" ...True pokud je první hodnota menší nebo rovna druhé    |boolean             |
 | <>           | "různé" ...True pokud je první hodnota jiná než druhá                       |boolean             | | <>           | "různé" ...True pokud je první hodnota jiná než druhá                       |boolean             |
-| AND          | "a zároveň" logický součin ...True pokud je platí obě strany výrazu         |boolean             | +| AND          | "a zároveň" logický součin ...True pokud platí obě strany výrazu         |boolean             | 
-| OR           | "nebo" logický součet ...True pokud je platí alespoň jedna strana výrazu    |boolean             |+| OR           | "nebo" logický součet ...True pokud platí alespoň jedna strana výrazu    |boolean             |
 | NOT          | logický zápor ...převrací logickou hodnotu výrazu za sebou  True - false    |boolean             | | NOT          | logický zápor ...převrací logickou hodnotu výrazu za sebou  True - false    |boolean             |
 | IS           | objekt vlevo je potomkem třídy vpravo zapsané jako text: ''E is 'TElement'''|boolean            | | IS           | objekt vlevo je potomkem třídy vpravo zapsané jako text: ''E is 'TElement'''|boolean            |
Řádek 181: Řádek 202:
 | FRAC()     | Vrátí desetinnou část: ''FRAC(54.156) = 0.156''                               |float              |  | FRAC()     | Vrátí desetinnou část: ''FRAC(54.156) = 0.156''                               |float              | 
 | ODD()      | Testuje, zda je argument liché číslo                                          |boolean            |  | ODD()      | Testuje, zda je argument liché číslo                                          |boolean            | 
-| ABS()      | Vrátí absolutní hodnotu parametru ''FRAC(-12) = 12 ''                         |integer nebo float | +| ABS()      | Vrátí absolutní hodnotu parametru ''ABS(-12) = 12 ''                         |integer nebo float | 
 | EXP(x)     | e na x kde e je základ přirozených logaritmů (eulerovo číslo)                 |float      | EXP(x)     | e na x kde e je základ přirozených logaritmů (eulerovo číslo)                 |float     
 | LN(x)      | vrátí přirozený logaritmus x                                                  |float      | LN(x)      | vrátí přirozený logaritmus x                                                  |float     
Řádek 239: Řádek 260:
  
 ==== WHILE ==== ==== WHILE ====
-Příkaz WHILE provádí cyklicky kód uzavřený slovem END, dokud platí vstupní podmínka daná výrazem+Příkaz **WHILE** provádí cyklicky kód uzavřený slovem **END****dokud platí** vstupní podmínka daná **výrazem**
 === Syntaxe === === Syntaxe ===
 <code oil> <code oil>
Řádek 257: Řádek 278:
  
 ==== REPEAT UNTIL ==== ==== REPEAT UNTIL ====
-Příkaz REPEAT provádí cyklicky kód ukončený klíčovým slovem UNTIL, dokud neplatí podmínka daná výrazem za UNTIL.+Příkaz **REPEAT** provádí cyklicky kód ukončený klíčovým slovem **UNTIL****dokud neplatí** podmínka daná **výrazem** za UNTIL.
 === Syntaxe === === Syntaxe ===
 <code oil> <code oil>
Řádek 274: Řádek 295:
 </code> </code>
 ==== CONTINUE ==== ==== CONTINUE ====
-Příkaz CONTINUE ukončí vykonávání stávajícího cyklu a přeskočí na další kolo.+Příkaz **CONTINUE** ukončí vykonávání zbytku stávajícího cyklu a přeskočí na další kolo.
 <code oil> <code oil>
 for i = 1 to 5               // začínáme  cykly 1 - 5  for i = 1 to 5               // začínáme  cykly 1 - 5 
Řádek 285: Řádek 306:
  
 ==== BREAK ==== ==== BREAK ====
-Příkaz BREAK ukončí vykonávání  cyklu a přeskočí na kód následující za ním.+Příkaz **BREAK** ukončí vykonávání  cyklu a přeskočí na kód následující za ním.
 <code oil> <code oil>
 for i = 1 to 5               // začínáme  cykly 1 - 5  for i = 1 to 5               // začínáme  cykly 1 - 5 
Řádek 297: Řádek 318:
  
 ==== IF THEN ELSE ==== ==== IF THEN ELSE ====
-Příkaz IF umožňuje podmíněné provedení části kódu. Podmínku definuje logický výraz mezi klíčovými slovy IF a END. ELSE je nepovinné, případně odděluje část prováděnou při nesplnění podmínky.+Příkaz **IF** umožňuje podmíněné provedení části kódu. Podmínku definuje logický výraz mezi klíčovými slovy **IF** **END****ELSE** je nepovinné, případně odděluje část prováděnou při nesplnění podmínky.
 === Syntaxe === === Syntaxe ===
 <code oil> <code oil>
orbis/oil.1744710810.txt.gz · Poslední úprava: 2025/04/15 11:53 autor: ppk