DOIF/Operatorenrangfolge: Unterschied zwischen den Versionen
Trelle (Diskussion | Beiträge) |
Trelle (Diskussion | Beiträge) |
||
(5 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 10: | Zeile 10: | ||
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 64: | Zeile 69: | ||
==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