DOIF/Operatorenrangfolge: Unterschied zwischen den Versionen
Trelle (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „{{Randnotiz|RNTyp=r|RNText='''Wichtiger Hinweis!'''<br>Dieses Beispiel funktioniert nur mit der aktuellen {{Link2Forum|Topic=58556|Message=499140|LinkText=Beta…“) |
Trelle (Diskussion | Beiträge) |
||
(7 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
{{Randnotiz|RNTyp= | {{Randnotiz|RNTyp=g|RNText=Eine aktuelle DOIF-Version ist erforderlich}}<br> | ||
[[Datei:Operatorenrangfolge.png|mini|455px|right|]] | [[Datei:Operatorenrangfolge.png|mini|455px|right|]] | ||
==Rangfolge von Operatoren in der Bedingung== | ==Rangfolge von Operatoren in der Bedingung== | ||
Zeile 5: | Zeile 5: | ||
===Beschreibung=== | ===Beschreibung=== | ||
{{Randnotiz|RNText=Hinweis | {{Randnotiz|RNText=Hinweis | ||
* Verwendung von $SELF mit Zusatz um ein anderes Gerät zu referenzieren [$SELF'''1''':<Reading>] entspricht [operatorenRang_Labor1'''1''':<Reading>] | * Verwendung von $SELF mit Zusatz, um ein anderes Gerät zu referenzieren [$SELF'''1''':<Reading>] entspricht [operatorenRang_Labor1'''1''':<Reading>] | ||
* triggern auf Status mit $SELF [$SELF:<Reading>]}} | * triggern auf Status mit $SELF [$SELF:<Reading>]}} | ||
Die Rangfolge von [https://wiki.selfhtml.org/wiki/Perl/Operatoren#Operatorenrangfolge Operatoren in Perl] ist festgelegt. Durch Benutzung von Klammern erfolgt die eingeklammerte Berechnung vorrangig.<br> | Die Rangfolge von [https://wiki.selfhtml.org/wiki/Perl/Operatoren#Operatorenrangfolge Operatoren in Perl] ist festgelegt. Durch Benutzung von Klammern erfolgt die eingeklammerte Berechnung vorrangig.<br> | ||
In der Laborgruppe können verschieden Werte für '''A''', '''B''' und '''C''' eingestellt und das Ergebnis der Verknüpfung beobachtet werden. | In der Laborgruppe können verschieden Werte für '''A''', '''B''' und '''C''' eingestellt und das Ergebnis der Verknüpfung beobachtet werden. | ||
Beispiel a) Verwendet die Rangfolge der Perlvogabe ('''and''' vor '''or'''). | |||
Beispiel b) Verwendet die Rangfolge der Perlvogabe ('''||''' vor '''and'''). | Beispiel a) Verwendet die Rangfolge der Perlvogabe ('''and''' vor '''or'''). | ||
Beispiel c) Legt die Rangfolge mit einer Klammer fest '''(A or B)''' vor '''and'''). Das entspricht dem Ergebnis von Beispiel | |||
Beispiel b) Verwendet die Rangfolge der Perlvogabe ('''||''' vor '''and'''). Die Schreibweise '''||''' hat Vorrang vor der Schreibweise '''and'''. | |||
Beispiel c) Legt die Rangfolge mit einer Klammer fest '''(A or B)''' vor '''and'''). Das entspricht dem Ergebnis von Beispiel b). | |||
Beispiel d) mit einem [https://wiki.selfhtml.org/wiki/Perl/Regul%C3%A4re_Ausdr%C3%BCcke regulären Ausdruck]. | Beispiel d) mit einem [https://wiki.selfhtml.org/wiki/Perl/Regul%C3%A4re_Ausdr%C3%BCcke regulären Ausdruck]. | ||
===Definition=== | ===Definition=== | ||
<pre> | <pre> | ||
Zeile 36: | Zeile 41: | ||
attr operatorenRang_Labor1 alias c) (A or B) and C | attr operatorenRang_Labor1 alias c) (A or B) and C | ||
attr operatorenRang_Labor1 cmdState Bedingung wahr|Bedingung falsch | attr operatorenRang_Labor1 cmdState Bedingung wahr|Bedingung falsch | ||
attr operatorenRang_Labor1 group Operatorenrangfolge | attr operatorenRang_Labor1 group Labor: Operatorenrangfolge | ||
attr operatorenRang_Labor1 room DOIF_Labor | attr operatorenRang_Labor1 room DOIF_Labor | ||
Zeile 42: | Zeile 47: | ||
attr operatorenRang_Labor11 alias a) A or B and C | attr operatorenRang_Labor11 alias a) A or B and C | ||
attr operatorenRang_Labor11 cmdState Bedingung wahr|Bedingung falsch | attr operatorenRang_Labor11 cmdState Bedingung wahr|Bedingung falsch | ||
attr operatorenRang_Labor11 group Operatorenrangfolge | attr operatorenRang_Labor11 group Labor: Operatorenrangfolge | ||
attr operatorenRang_Labor11 readingList A B C | attr operatorenRang_Labor11 readingList A B C | ||
attr operatorenRang_Labor11 room DOIF_Labor | attr operatorenRang_Labor11 room DOIF_Labor | ||
Zeile 51: | Zeile 56: | ||
attr operatorenRang_Labor2 alias b) A || B and C | attr operatorenRang_Labor2 alias b) A || B and C | ||
attr operatorenRang_Labor2 cmdState Bedingung wahr|Bedingung falsch | attr operatorenRang_Labor2 cmdState Bedingung wahr|Bedingung falsch | ||
attr operatorenRang_Labor2 group Operatorenrangfolge | attr operatorenRang_Labor2 group Labor: Operatorenrangfolge | ||
attr operatorenRang_Labor2 room DOIF_Labor | attr operatorenRang_Labor2 room DOIF_Labor | ||
Zeile 57: | Zeile 62: | ||
attr operatorenRang_Labor3 alias d) A =~ "ein|1" | attr operatorenRang_Labor3 alias d) A =~ "ein|1" | ||
attr operatorenRang_Labor3 cmdState Bedingung wahr|Bedingung falsch | attr operatorenRang_Labor3 cmdState Bedingung wahr|Bedingung falsch | ||
attr operatorenRang_Labor3 group Operatorenrangfolge | attr operatorenRang_Labor3 group Labor: Operatorenrangfolge | ||
attr operatorenRang_Labor3 room DOIF_Labor | attr operatorenRang_Labor3 room DOIF_Labor | ||
save | |||
</pre> | </pre> | ||
==Links== | ==Links== | ||
* [[DOIF]] | * [[DOIF]] | ||
* [[DOIF/Labor - ausführbare, praxisnahe Beispiele als Problemlösung zum Experimentieren]] | |||
* [https://wiki.selfhtml.org/wiki/Perl/Operatoren#Operatorenrangfolge Perl-Operatorenrangfolge] | * [https://wiki.selfhtml.org/wiki/Perl/Operatoren#Operatorenrangfolge Perl-Operatorenrangfolge] | ||
* [https://wiki.selfhtml.org/wiki/Perl/Regul%C3%A4re_Ausdr%C3%BCcke Reguläre Ausdrücke] | * [https://wiki.selfhtml.org/wiki/Perl/Regul%C3%A4re_Ausdr%C3%BCcke Reguläre Ausdrücke] | ||
[[Kategorie:Code Snippets]] | [[Kategorie:Code Snippets]] |
Aktuelle Version vom 2. April 2017, 09:27 Uhr
Rangfolge von Operatoren in der Bedingung
Die Operatorenrangfolge bestimmt das Ergebnis einer Bedingung mit. Die Nichtbeachtung kann zu unerwarteten Ergebnissen führen. Mit dieser Laborgruppe kann das Verhalten verschiedener Operatoren ausprobiert werden.
Beschreibung
- Verwendung von $SELF mit Zusatz, um ein anderes Gerät zu referenzieren [$SELF1:<Reading>] entspricht [operatorenRang_Labor11:<Reading>]
- triggern auf Status mit $SELF [$SELF:<Reading>]
Die Rangfolge von Operatoren in Perl ist festgelegt. Durch Benutzung von Klammern erfolgt die eingeklammerte Berechnung vorrangig.
In der Laborgruppe können verschieden Werte für A, B und C eingestellt und das Ergebnis der Verknüpfung beobachtet werden.
Beispiel a) Verwendet die Rangfolge der Perlvogabe (and vor or).
Beispiel b) Verwendet die Rangfolge der Perlvogabe (|| vor and). Die Schreibweise || hat Vorrang vor der Schreibweise and.
Beispiel c) Legt die Rangfolge mit einer Klammer fest (A or B) vor and). Das entspricht dem Ergebnis von Beispiel b).
Beispiel d) mit einem regulären Ausdruck.
Definition
define operatorenRang_Labor11 DOIF ([$SELF:A,0] or [$SELF:B,0] and [$SELF:C,0])
define operatorenRang_Labor1 DOIF (([$SELF1:A] or [$SELF1:B]) and [$SELF1:C]) ## $SELF1 referenziert hier operatorenRang_Labor11
([operatorenRang_Labor11:A] || [operatorenRang_Labor11:B] and [operatorenRang_Labor11:C])
([operatorenRang_Labor11:A] =~ "ein|1")
Übungsvorschlag
- Durchspielen der Kombinationen von A, B und C
- Ändern der Bedingungen mit anderen Operatoren
- Nutzung von Readings aus dem Wirkbetrieb
Laborgruppe zum Import mit Raw definition
define operatorenRang_Labor1 DOIF (([$SELF1:A] or [$SELF1:B]) and [$SELF1:C]) ## operatorenRang_Labor2 operatorenRang_Labor11 attr operatorenRang_Labor1 alias c) (A or B) and C attr operatorenRang_Labor1 cmdState Bedingung wahr|Bedingung falsch attr operatorenRang_Labor1 group Labor: Operatorenrangfolge attr operatorenRang_Labor1 room DOIF_Labor define operatorenRang_Labor11 DOIF ([$SELF:A,0] or [$SELF:B,0] and [$SELF:C,0]) ## operatorenRang_Labor1 operatorenRang_Labor2 attr operatorenRang_Labor11 alias a) A or B and C attr operatorenRang_Labor11 cmdState Bedingung wahr|Bedingung falsch attr operatorenRang_Labor11 group Labor: Operatorenrangfolge attr operatorenRang_Labor11 readingList A B C attr operatorenRang_Labor11 room DOIF_Labor attr operatorenRang_Labor11 setList A:0,#,null,1,-1,eins B:0,#,null,1,-1,eins C:0,#,null,1,-1,eins attr operatorenRang_Labor11 webCmd A:B:C define operatorenRang_Labor2 DOIF ([operatorenRang_Labor11:A] || [operatorenRang_Labor11:B] and [operatorenRang_Labor11:C]) ## operatorenRang_Labor1 operatorenRang_Labor3 operatorenRang_Labor11 attr operatorenRang_Labor2 alias b) A || B and C attr operatorenRang_Labor2 cmdState Bedingung wahr|Bedingung falsch attr operatorenRang_Labor2 group Labor: Operatorenrangfolge attr operatorenRang_Labor2 room DOIF_Labor define operatorenRang_Labor3 DOIF ([operatorenRang_Labor11:A] =~ "ein|1") ## operatorenRang_Labor1 operatorenRang_Labor2 operatorenRang_Labor11 attr operatorenRang_Labor3 alias d) A =~ "ein|1" attr operatorenRang_Labor3 cmdState Bedingung wahr|Bedingung falsch attr operatorenRang_Labor3 group Labor: Operatorenrangfolge attr operatorenRang_Labor3 room DOIF_Labor save