Sb forum speech.png DiscordLink.png FacebookLink.png RedditLink.png SteamLink.png TwitterLink.png YoutubeLink.png

YOLOL:de

From Starbase wiki
Jump to navigation Jump to search
English Deutsch Français Русский Українська 日本語 简体中文

Zusammenfassung

YOLOL ist eine Programmiersprache zur Steuerung und Verwaltung elektrischer Geräte.
Der Code wird zeilenweise in YOLOL-Chips geschrieben welche dann in Chip-Sockel eingefügt werden, die wiederum die Nachrichten lesen und weiterleiten.
Die Programmiersprache ermöglicht die Programmierung und Steuerung nahezu aller Geräte im bekannten Universum.

Informationen

Wie es funktioniert

Der Code wird in programmierbare Chips geschrieben welche diesen ausgeführten. Er kann sowohl zur Überwachung als auch zur Steuerung elektrischer Geräte und Maschinen verwendet werden welche an ein Datennetzwerk angeschlossen sind.
Codezeilen werden nacheinander von oben nach unten ausgeführt, wobei der Zyklus des Chips nach Ausführung der letzten Zeile wiederholt wird, es sei denn, das Skript enthält programmierte Anweisungen für bestimmte Zeilenänderungen oder das vollständige Stoppen der Ausführung.

Einfach gesagt:

  1. Die Codeausführung beginnt in Zeile 1
  2. Nach dem Lesen von Zeile 1 geht es basierend auf dem Zeitintervall des Chips zur nächsten Zeile über
  3. Der Vorgang wird dann für die Zeilen 2, 3, 4 ... usw. wiederholt.
  4. Der Chip beginnt erneut mit der Ausführung von Zeile 1, nachdem die letzte Zeile ausgeführt wurde (es sei denn, die letzte Zeile enthält eine goto-Anweisung oder die Ausführung wurde angehalten).

Leerzeilen benötigen also immer noch 0,2 Sekunden und können als kurze Ausführungsverzögerung verwendet werden. (Zeilen mit nur einem Kommentar entsprechen praktisch einer leeren Zeile.)

Verwandte Seiten

Befehlsreferenzen

Groß- und Kleinschreibung wird nicht berücksichtigt

Die Programmiersprache unterscheidet nicht zwischen Groß- und Kleinschreibung.
Dies bedeutet, dass die folgenden zwei Beispielskripte identisch funktionieren:

if ButtonState == 1 then DoorState = 1 end
IF buttonstate == 1 THEN doorstate = 1 END
  • Beide Skripte setzen den DoorState auf 1, wenn der Wert für den ButtonState 1 ist.
  • Die Zeichen in der Programmiersprache können entweder in Klein- oder Großbuchstaben geschrieben werden.
    • Sie werden immer noch als unabhängig von Groß- und Kleinschreibung analysiert.
    • Auf diese Weise kann der Code etwas übersichtlicher aussehen.

Variablen

  • Die Variablen in der Programmiersprache sind schwach typisiert (erzwingen keine Typgültigkeit) und unterstützen zwei Datentypen: Festkomma-Dezimalstellen (mit einer Genauigkeit von bis zu 0,001) und Zeichenfolgen.
    • Einfach ausgedrückt können die Variablen entweder als Zeichenfolgen oder als Zahlen eingegeben werden, wobei der frühere Variablentyp ignoriert wird, wenn der vorherige Typ nicht identisch ist, ohne einen Fehler zu verursachen.
  • Jede Variable ist immer von einem einzigen Typ, wird jedoch bei Bedarf implizit konvertiert.
  • Der Standardwert einer nicht initialisierten Variablen ist 0 und Nullwerte werden nicht unterstützt.
  • True/False sind numerische Werte von nicht 0 und 0.
    • True =! 0
    • False == 0

Wenn Sie einer Variablen einen Wert zuweisen, wird die Variable immer in den Typ des neu zugewiesenen Werts konvertiert.

Beispiel:

ultimateAutopilot= 128.643
  • Dies führt dazu, dass die Variable ultimativeAutopilot einen numerischen Wert von 128.643 enthält


ultimateAutopilot= "Error prone"
  • Dies führt dazu, dass die Variable ultimateAutopilot in eine Zeigenfolgevariable mit dem Inhalt "Error prone" umgewandelt und der numerische Wert 128.643 entfernt wird.

Dezimalstellen

Numerische Werte in der Programmiersprache sind 64-Bit-Festkomma-Dezimalstellen.
Die Variablen enthalten Dezimalzahlen mit einer Genauigkeit von bis zu drei Dezimalstellen
Infolgedessen befindet Maximalwertbereich (auch während des Betriebs) zwischen [-9223372036854775.808, 9223372036854775.807]

pieVariable= 3.142
  • Das obige Skript weist der Variablen pieVariable einen numerischen Wert von 3,142 zu.
    • Die Angeben genauerer Werte als die Variablen speicher kann funktioniert, hat jedoch keinen Einfluss auf das Endergebnis.
notPieVariable= 0.5772156649
  • Das obige Skript versucht, der Variablen notPieVariable einen numerischen Wert von 0,5772156649 zuzuweisen.
  • Das Endergebnis ist jedoch notPieVariable == 0,577
    • Hier werden die genaueren Werte beschnitten, wobei nur drei Dezimalstellen zurückbleiben.

Zeichenfolgen

Um ein Zeichenfolgen in der Programmiersprache anzugeben, muss der gewünschte Zeichenfolgenwert in doppelte Anführungszeichen gesetzt werden.

badRobots= "saltberia" 
  • Dieses Skript weist der Variable badRobots den Zeichenfolgenwert "saltberia" zu.

Gerätefelder / Externe Variablen

Externe Variablen und Gerätefelder können in der Programmiersprache mit folgender Syntax verwendet werden:

  • :variableName
    • variableName ist die konfigurierte Gerätefeld-ID.

Ein Doppelpunktpräfix : wird verwendet, um dem Skript mitzuteilen, dass auf eine externe Variable zugegriffen wird, anstatt eine zu verwenden welche im Skript deklariert oder verwendet werden kann.
Ein programmierbarer YOLOL-Chip welcher mit einem Gerät verbunden ist, hat Zugriff auf alle Geräte im selben Datennetzwerk.
Es kann dann alle Gerätefelder ändern und abhören, auf die es Zugriff hat.

if :ButtonState == 1 then :DoorState = 1 end
  • Das obige Skript sendet den Wert 1 an alle Geräte, die das Gerätefeld DoorState abhören, wenn der Wert von ButtonState im Datennetzwerk 1 ist.

Operatoren und Befehle

Beachten Sie, dass die verfügbaren Operatoren möglicherweise durch den Typ des programmierbaren YOLOL-Chips begrenzt sind.
Grundlegende Chips haben eine begrenzte Auswahl an Funktionen, während fortgeschrittenere Chips komplexere Operationen nativ ausführen können.

Grundlegende Arithmetik- und Zuweisungsoperatoren

Operation Numerische Operation Zeichenfolge Operation
A + B Addition Zeichenfolge A wird an Zeichenfolge B angehängt.
A - B Subtraction Das letzte Auftreten der Zeichenfolge B in Zeichenfolge A wird aus Zeichenfolge A entfernt.
A * B Multiplication Laufzeit Fehler. Der Rest der Zeile wird übersprungen.
A / B Division Laufzeit Fehler. Der Rest der Zeile wird übersprungen.
A ++ PostIncrement (A=A+1) Hängt ein Leerzeichen an Zeichenfolge A an. Wertet den ursprünglichen Wert aus.
A -- PostDecrement (A=A-1) Entfernt das letzte Zeichen der Zeichenfolge. Führt zu einem Laufzeitfehler, wenn versucht wird, "" zu entfernen. Wertet auf den ursprünglichen Wert aus.
++ A PreIncrement (A=A+1) Hängt ein Leerzeichen an Zeichenfolge A an. Wertet den geänderten Wert aus.
-- A PreDecrement (A=A-1) Entfernt das letzte Zeichen der Zeichenfolge. Führt zu einem Laufzeitfehler, wenn versucht wird, "" zu entfernen. Wertet auf den geänderten Wert aus.
A = B Zuweisung (Variable A wird auf den Wert von Variable B gesetzt) Zuweisung (Variable A wird auf den Wert von Variable B gesetzt)
A += B Addition-assignment (A=A+B) A wird der Wert der Zeichenfolge Operation A + B zugewiesen
A -= B Subtraction-assignment (A=A-B) A wird der Wert der Zeichenfolge Operation A - B zugewiesen
A *= B Multiplication-assignment (A=A*B) Laufzeit Fehler. Der Rest der Zeile wird übersprungen.
A /= B Division-assignment (A=A/B) Laufzeit Fehler. Der Rest der Zeile wird übersprungen..
A %= B Modulo-assignment (A=A%B) Laufzeit Fehler. Der Rest der Zeile wird übersprungen.
A ^ B Potenzierung Laufzeit Fehler. Der Rest der Zeile wird übersprungen.
A % B Modulo Laufzeit Fehler. Der Rest der Zeile wird übersprungen.
ABS A Modulus (absoluter Wert) (A=A if A>=0, else A=-A) Laufzeit Fehler. Der Rest der Zeile wird übersprungen.
A! Factorial Laufzeit Fehler. Der Rest der Zeile wird übersprungen.
SQRT A Quadratwurzel von A Laufzeit Fehler. Der Rest der Zeile wird übersprungen.
SIN A Sinus von A (Grad) Laufzeit Fehler. Der Rest der Zeile wird übersprungen.
COS A Kosinus von A (Grad) Laufzeit Fehler. Der Rest der Zeile wird übersprungen.
TAN A Tangente von A (Grad) Laufzeit Fehler. Der Rest der Zeile wird übersprungen.
ASIN A Inverser Sinus von A (Grad) Laufzeit Fehler. Der Rest der Zeile wird übersprungen..
ACOS A Inverser Kosinus von A (Grad) Laufzeit Fehler. Der Rest der Zeile wird übersprungen.
ATAN A Inverse Tangente von A (deGradrees) Laufzeit Fehler. Der Rest der Zeile wird übersprungen.

Logische Operatoren

Logische Operatoren sind Überprüfungen, die feststellen, ob die Aussage wahr oder falsch ist.
Alle logischen Operationen geben entweder "0 für falsch"' oder "1 für wahr" zurück.

Operation Numerische Operation Zeichenfolge Operation
A < B Kleiner als Gibt 1 zurück, wenn die Zeichenfolge A in alphabetischer Reihenfolge an erster Stelle steht. Wenn nicht, wird 0 zurückgegeben.
A > B Größer als Gibt 0 zurück, wenn die Zeichenfolge A in alphabetischer Reihenfolge an erster Stelle steht. Wenn nicht, wird 1 zurückgegeben
A <= B Kleiner oder gleich als Gibt 1 zurück, wenn die Zeichenfolge A zuerst in alphabetischer Reihenfolge oder identisch mit der Zeichenfolge B ist. Wenn nicht, wird 0 zurückgegeben.
A >= B Größer oder gleich als Gibt 0 zurück, wenn die Zeichenfolge A zuerst in alphabetischer Reihenfolge oder identisch mit der Zeichenfolge B ist. Wenn nicht, wird 1 zurückgegeben.
A != B Ungleich als Gibt 1 zurück, wenn die Zeichenfolge A nicht gleich der Zeichenfolge B ist. 0, wenn dies der Fall ist.
A == B Gleich als Gibt 1 zurück, wenn die Zeichenfolg A gleich der Zeichenfolge B ist. 0, wenn nicht.

Es ist auch möglich, die Schlüsselwörter not, and und or zu verwenden, um kompliziertere Bedingungen als einfache Variablenwertprüfungen einzurichten.

Variablentypen in Operationen mischen

Das Mischen von Variablentypen in einer Operation behandelt die Operation unter Verwendung aller Parameter als Strings.

previouslyNumber= "10" + 15
  • Das obige Skript resultiert darin, dass previouslyNumber die Zeichenfolge"1015" enthält.
    • Beachten Sie, dass die beteiligten Parameter selbst keine Typen ändern. Ihre Werte werden nur als Zeichenfolgen für den Zweck der Operation umgewandelt:
purelyNumber = 15
purelyString = "10" + purelyNumber
  • Wenn dieses Skript ausgeführt wurde, enthält purelyString die Zeichenfolge "1015", während purelyNumber noch den numerischen Wert 15 enthält.

Goto

Die Goto-Syntax wird verwendet, wenn die normale Skriptlesereihenfolge von 1-> 20 nicht erwünscht ist oder geändert werden muss.

Goto wird mit der folgenden Syntax verwendet:

  • goto lineNumber
    • lineNumber ist die Zeile, in der dieser Befehl die Skriptausführung übernimmt.
    • Verbleibende Befehle, die sich nach dem Befehl goto in derselben Zeile befinden, werden nicht ausgeführt.
      • Wenn Sie if-Anweisungen vor goto verwenden, wird die goto-Syntax ignoriert, wenn die if-Anweisung falsch ist.
    • Unter Verwendung von Bedingungen können mehrere goto-Befehle in derselben Zeile hinzugefügt werden, da False goto-Befehle übersprungen werden.
    • Numerische Werte außerhalb des Bereichs [1,20] werden auf diesen Bereich geklemmt.
    • Nicht ganzzahlige Werte werden abgerundet.
    • Zeichenfolgenwerte führen zu einem Laufzeitfehler.
if variable == 5 then goto 4 end goto 6

Das obige Skript geht zu Zeile 4, wenn variable den Wert 5 hat.
Andernfalls geht es zu Zeile 6.

If-else Anweisung

If-else-Anweisungen werden verwendet, um das Skript in verschiedene Pfade zu verzweigen.
Sie verwenden die folgende Syntax:

  • if Bedingung then Anweisung else Anweisung end
    • Eine Bedingung ist eine Auswertung, die zu einem numerischen Wert führt (wobei 0 als False, alles andere als True analysiert wird), und Anweisungen sind Skriptteile, die ausgeführt werden.
    • Für alle bedingten If-else-Anweisung muss nach Abschluss der Anweisung die Syntax end geschrieben werden.

If kann verwendet werden, um die Skriptausführung basierend auf variablen Werten vorübergehend in zwei mögliche Ergebnisse zu verzweigen.
Beispiel:

if variable != 2 then endResult = 3 else endResult = 4 end
  • Dieses Skript setzt den Wert von endResult auf 3, wenn variable nicht den Wert 2 hat.
  • Wenn der Wert von variable 2 ist, wird endResult auf den Wert 4 gesetzt.

Beachten Sie, dass der else-Anweisungsteil weggelassen werden kann, wenn er nicht benötigt wird.
Beispiel:

if variable != 2 then endResult = 3 end
  • Dieses Skript setzt den Wert 3 nur auf endResult, wenn variable keinen Wert von 2 hat, ansonsten passiert nichts.

Verschachtelung von if-Anweisungen

Es ist möglich, if-Bedingungen in die wahr/falsch-Anweisungsblöcke einzufügen, um eine weitere Verzweigung der Ausführung zu erreichen.
Beispiel:

if variable == 0 then endResult = 1 else if variable == 1 then endResult = 2 end end 
  • Dieses Skript setzt endResult auf 1, wenn variable gleich 0 ist.
  • Wenn variable nicht gleich 0 ist, sondern gleich 1, wird endResult auf 2 gesetzt.

Beispiel:

if variable == 0 then if endResult == 1 then endResult = 2 end else endResult = 1 end
  • Dieses Skript setzt endResult auf 2, wenn variable den Wert 0 hat und endResult gleich 1 ist.
  • Andernfalls wird endResult auf 1 gesetzt.

Beachten Sie, dass es möglicherweise einfacher ist, den Skriptfluss zu planen und zu debuggen, indem Sie das Skript mit verschachtelten if-Anweisungen in ein übersichtlicher eingerückten Form formatieren.

Hinweis: Das Schreiben eines solchen Skripts funktioniert auf dem YOLOL-Chip nicht, aber dies kann beim Debuggen von Skripten hilfreich sein.

Dies ist das zweite formatierte verschachtelte Beispiel:

if variable == 0 then
    if otherVariable == 1 then
        otherVariable = 2
    end
else
    otherVariable = 1
end

Kommentare

Kommentare sind nützlich, wenn Sie Code schreiben welcher von vielen Programmierern verwendet wird.
Beachten Sie, dass Kommentare auch Speicherplatz des festgelegten Zeichenlimits von 70 Zeichen belegen und nicht davon ausgeschlossen werden.

Das Kommentieren wird mit der folgenden Syntax verwendet:

  • // text
    • Text kann ein beliebiger einzeiliger Zeichensatz sein.
// Dies ist ein Kommentar. Es wird erklärt, wie andere Skriptzeilen funktionieren.
  • Ein Beispiel für eine mögliche Kommentarsyntax

Fehler

Es gibt zwei Arten von Fehlern, die mit der Programmiersprache auftreten können.

  1. Syntaxfehler
  2. Laufzeitfehler
  • Syntaxfehler stammen aus einem ungültigen und nicht analysierbaren Skript und führen dazu, dass nicht die gesamte Zeile ausgeführt wird.
  • Laufzeitfehler können nur abgefangen werden, während das Skript ausgeführt wird. Sie führen dazu, dass die Ausführung der Zeile abgebrochen wird, aber alle Auswirkungen, bis der Fehler aufgetreten ist bleiben bestehen.

Video