Zuweisungen
Zustände bzw. Werte von Objekten oder Variablen können durch Zuweisungen geändert werden.
Die grundsätzliche Form einer Zuweisung im Programm ist
Ziel := Quelle
wobei Ziel ein Objekt oder eine Variable sein kann. Quelle kann ein Objekt, eine Variable oder eine Konstante sein kann.
Bei Zuweisungen von Werten unterschiedlichen Typs wird soweit möglich automatisch eine Konvertierung entsprechend des Typs des Ziels vorgenommen, d.h. das Ergebnis hat den Typ der Zielvariable- Wenn die Zielvariable z.B. eine Uhrzeit ist und es werden zwei Zeichen-Variablen mit Werten im Zeitformat addiert ist das Ergebnis die Summe der Zeiten, ist die Zielvariable aber eine Zeichenvariable werden nur die Texte aneinandergehängt.
Beispiele
ZeichenVariable1 := "14:00:00"
Zeitvariable1 := "03:10:00"
Bei einer Zeichenvariablen als Zielvariable:
ZeichenvariableX := ZeichenVariable1 + Zeitvariable1 ist das Ergebnis "14:00:0003:10:00"
Bei einer Variable vom Typ Uhrzeit als Zielvariable: ZeitvariableX := ZeichenVariable1 + Zeitvariable1 ist das Ergebnis "17:10:00"
Bitte beachten Sie, dass Zahlen mit bzw. ohne Kommastellen intern in unterschiedlichen Formaten dargestellt werden und es daher zu Problemen kommen kann wenn diese unterschiedlichen Zahlentypen einander zugewiesen werden. Bei Zuweisungen von Konstanten an Zahlenvariablen mit Nachkommastellen sollte die Konstante immer ein Komma beinhalten damit diese als Gleitkommazahl gespeichert wird, dabei können hinter dem Komma natürlich auch eine Null stehen.
Es wird zwar bei der Ausführung versucht solche Probleme automatisch auszuschalten, wenn bestimmte Grössen überschritten werden funktioniert das aber nicht mehr (wenn eine Integer-Zahl grösser als 2147483647 einer Gleitkommavariablen zugewiesen wird, wird diese Zahl als negative Zahl interpretiert).
Bei Zuweisungen zwischen nicht gleichen selbstdefinierten Typen erfolgt die Zuweisung entsprechend der Reihenfolge der für diesen Typ definierten Zustände, unabhängig von der Bezeichnung des Zustands. Zum Beispiel muss bei der Definition neuer Typen mit den Zuständen AUS/AN darauf geachtet werden, dass der Zustand AUS immer zuerst definiert wird, damit bei Zuweisung an andere AUS/AN-Objekte der richtige Zustand übertragen wird.
Bei der Zuweisung von Zuständen können die Zustandstexte in Hochkomma oder der Index eines Zustands verwendet werden, wobei der erste Zustand den Index 0 hat. Bei Verwendung von Zustandstexten muss das Wort exakt so geschrieben werden wie der definierte Zustand in der Typdefinition, auch Gross/Kleinschreibung muss berücksichtigt werden. Wenn eine Lampe also den Objektytp Licht mit den Zuständen "aus" und "an" hat kann folgende Anweisung zum Ausschalten verwendet werden:
Lampe:="aus"
oder auch
Lampe:=0
Für bestimmte Objektypen können auch umgangssprachliche Begriffe als Schlüsselwörter verwendet werden.
Bei der Verwendung von Schlüsselwörtern wie einschalten bei Zuweisungen oder ausgeschaltet in wenn-Bedingungen ist es erforderlich, dass AUS immer als erster Zustand definiert wird, da intern mit der numerischen Reihenfolge der Zustände gearbeitet wird. Durch diese Verfahrensweise ist es möglich, auch Zuweisungen zwischen Typen mit unterschiedlicher Bezeichnung für gleiche Zustände durchführen zu können. Bei der Definition der Zustände von Fenstern und Türen muss offen als erster Zustand und zu als zweiter Zustand definiert werden, damit die entsprechenden Schlüsselwörter bei Zuweisungen und Bedingungen benutzt werden können.
Beispiele für Zuweisungen:
LichtBad:=SchalterBad
hat die gleiche Wirkung wie
LichtBad wie SchalterBad
Gartenlicht einschalten
hat die gleiche Wirkung wie
GartenLicht:=1
Wird einem Objekt ein Zustand als Text zugewiesen, so muss dieser in Hochkommas gesetzt werden und genau der Schreibweise der Typdefinition entsprechen, auch Gross/Kleinschreibung muss berücksichtigt werden. Beispiel:
Anstatt
Gartenlicht einschalten
könnte man auch die Anweisung
Gartenlicht:=“an“
verwenden, das Wort an muss genau wie in der Typdefinition geschrieben sein und in Hochkommas gesetzt werden.
Eine besondere Anweisung zum Einschalten Schaltaktoren ist die Anweisung
Objekt einschalten für Zeitdauer
als Zeitdauer kann die Zeit in Hochkommas oder als Variable angegeben werden.
Beispiel:
Stehlampe einschalten für "00:30:00"
oder
Dauer1:="00:10:00"
Gartenlicht einschalten für Dauer1
wobei Dauer1 eine Variable vom Typ Uhr oder Zeichen sein muss.
Ein weiteres wichtiges Schlüsselwort ist ausschalten um einen Schaltaktor auszusachelten.
Die Art der Rechenoperation bei Zuweisungen wird durch den Typ der Zielvariablen bestimmt.
Wenn der Zieltyp vom Typ Zeichen ist, werden die Zeichen in der Zuweisung als Zeichenkette aneinander gereiht.
Wenn die Zielvariable vom Typ Zahl ist, wird eine normale Rechenoperation vorgenommen falls dies mit den angegebenen Operanden und Operatoren möglich ist, dabei können auch Klammenr gemäss den üblichen Rechenregeln verwendet werden.
Rechenfunktionen für Zahlen
Es können die vier Grunrechenarten benutzt werden und die Modulo-Operation. Der Operator für die Modulo-Operation ist das Prozentzeichen %. Das Ergebnis der Modulo-Operation ist der ganzzahlige Rest einer Division, wenn einer der Operanden eine Zahl mit Nachkommastellen ist werden diese abgeschnitten.
Weiterhin werden folgende mathematischen Funktionen unterstützt:
LN = natürlicher Logarithmus
EXP = Exponentialfunktion (Umkehrfunktion von LN)
LOG = dekadischer Logarithums (zur Basis 10)
SIN = Sinus
ASIN = Arcus Sinus
COS = Cosinus
ACOS = Arcus Cosinus
TAN = Tangens
ATAN = Arcus Tangens
SQRT = Quadratwurzel
ABS = Absolutwert
Beispiel:
Durchschnitt:=Summe / Anzahl
Var1:=Wert1 * (Wert2 + Wert3)
QW:=SQRT(Var1)
Bitte unbedingt beachten: Innerhalb der Klammer einer Funktion dürfen keine Rechenoperatioenn stehen, nur eine Konstante oder eine Variable.
Rechenfunktion bei Zuweisungen von Uhrzeiten
Uhrzeiten können mit Hilfe der Operatoren + und - addiert bzw. subtrahiert werden.
Dabei ist unbedingt zu beachten, dass sie Zielvariable den Typ Uhrzeit haben muss, siehe auch Erläuterung oben im zweiten Abschnitt.
Beispiel:
AktuelleWeckzeit:=Weckzeit + "00:30:00"
Anstatt von Uhrzeiten in Hochkommas kann auch die Zeit in Sekunden angegeben werden.
Diese Anweisung addiert 2 Minuten zu einer Uhrzeit:
ZeitLicht1:=ZeitLicht1 + 120
Rechenfunktion bei Zuweisungen von Datumswerten
Es ist auch möglich ein Datum durch eine Rechenoperation zu ermitteln. Dabei ist zu beachten, dass die Zielvariable den Typ Datum haben muss.
Das Datum 11 Tage nach dem aktuellen Tag kann man z.B. einfach ermitteln mit der Anweisung:
Zukunft:=Datum+11
wobei die Zielvariable Zukunft vom Typ Datum sein muss damit die Berechnung korrekt erfolgt.
Verknüpfungsfunktion bei Zuweisungen von Texten
Mit Hilfe von Zuweisungen können zwei oder mehr Zeichenketten verbunden werden. Wenn in der Anweisung Operanden eines anderen Typs als Zeichenkette benutzt wird, werden diese soweit möglich automatisch konvertiert.
Beispiel:
AnzeigeKueche:="Garage ist "+Garagentor
Wenn das Objekt Garagentor die Typen auf und zuhat, und das Garagentor auf ist erscheint in der Anzeige "Garage ist auf".
AnzeigeBad:=Uhrzeit+" Uhr"
Der Text in der Anzeige sieht dann so aus: 22:30:00 Uhr
Bitte beachten: Wenn das Ziel der Wert oder Zustand eines Hardwaregeräts ist, muss der zugewiesene Wert im Wertebereich und Format sein, der für das Hardwaregerät gültig ist. Dies zu prüfen liegt in der Verantwortung des Benutzers, da eine solche Prüfung weder im Editor noch im Compiler vorgenommen werden kann weil die Werte vom jeweiligen Gerät und bei demselben Gerät teilweise von der im Gerät installierten Firmware abhängig sein kann.
|