Makro mit oder funktion

Programmierung der FHZ-Zentralen mit contronics homeputer Standard / homeputer Studio & WEB-Server

Moderator: Co-Administratoren

buempi
Ehrenmitglied
Beiträge: 12194
Registriert: 29.07.2006, 15:58
Wohnort: Schweiz
Danksagung erhalten: 5 Mal

Re: Makro mit oder funktion

Beitrag von buempi » 29.10.2009, 05:28

Hallo zusammen

Das Rätsel ist gelöst! Dragonius hat fast, Mikewolf und Karli ganz die richtige Lösung gefunden.

Das kleine Beispiel hat wohl gezeigt, wie schwierig es sein kann, rein logisch zu denken und die Vernunft auszuschalten. Papi kommt tatsächlich nur zur Ruhe, wenn das Baby schreit und Mami zu Hause ist.

So steht es doch ganz genau in der WENN-Bedingung! Der Rechner ist ein Vollidiot. Er tut aber genau das, was man ihm sagt. Ist die Bedingung nicht 100% erfüllt, führt er das SONST aus, weckt den Papi also auch, wenn das Baby nicht schreit und die Mami anwesenden ist. Auch wenn das Baby nicht schreit und die Mami abwesend ist, ist die WENN-Bedingung nicht 100% erfüllt, wird er also geweckt.

Glücklicherweise wird Papi aber auch dann geweckt, wenn das Baby schreit und die Mami abwesend ist, wozu die Bedingung ja wohl auch gedacht war... Der kleine Schreihals braucht also nie lange warten.

Wo lag nun der Fehler? - Wir haben dem Rechner nur eine Alternative gegeben. Er muss also entweder das ausführen, was unter dem WENN steht oder das unter dem SONST. Statt

Code: Alles auswählen

wenn Baby = "schreit" und Mami = "anwesend" dann
   Mami aufwecken
sonst
   Papi aufwecken
endewenn
formulieren wir so:

Code: Alles auswählen

wenn Baby = "schreit" dann
   wenn Mami = "anwesend" dann
      Mami aufwecken
   sonst
      Papi aufwecken
   endewenn
endewenn
und schon läuft's richtig.

Weil's so spannend war, hier gleich noch ein Rätsel:

Code: Alles auswählen

wenn Mami = "anwesend" oder Papi = "anwesend" und Uhrzeit = "20:00:00" dann
   TVSteckdose einschalten
endewenn
Wann läuft der Flimmerkasten? - Kleiner Tipp: Hier geht's nicht um Logik sondern um boolesche Algebra.

Viele Grüsse
Bümpi

leknilk0815
Beiträge: 6693
Registriert: 19.03.2007, 08:21
Danksagung erhalten: 2 Mal

Re: Makro mit oder funktion

Beitrag von leknilk0815 » 29.10.2009, 08:07

Servus,
bei oder führt jede 1 zur 1, bei und jede 0 zur 0.
Wenn also einer von beiden oder beide da sind, startet der Fernseher um 20:00.
Allerdings gibts da dann die Regel "und vor oder"...
Daher müsste die Kiste laufen, wenn Mami da ist, egal welche Zeit,
wenn Mami weg ist und Papi da, läuft die Kiste erst ab 20:00
Gruß - Toni

KS300 + Sonnendauer + Windrichtung, KS888, HM-CC-TC/HM-CC-VD, FHT80b, und etwas FS20-xx, Keymatic, EM1000, CCU2 und FHZ2000 sowie HP Studio, HPCL + Upgrade für FHZ

buempi
Ehrenmitglied
Beiträge: 12194
Registriert: 29.07.2006, 15:58
Wohnort: Schweiz
Danksagung erhalten: 5 Mal

Re: Makro mit oder funktion

Beitrag von buempi » 29.10.2009, 09:04

Genau richtig! Gratuliere Toni!

Ähnlich der mathematischen Regel zur Auswertung von Formeln:
Strich (plus und minus) trennt stärker als Punkt (mal und dividiert durch); auch "Punkt vor Strich"
gibt es eine Regel zur Auswertung von UND/ODER; nämlich:
UND bindet stärker als ODER
Und an diese Regel hält sich der Rechner, wenn wir in einer WENN-Bedingung beides verwenden.

Sowohl bei Formeln als auch bei Bedingungen kann man diese Regeln durch Setzen von Klammern aufheben:

Code: Alles auswählen

3 *  2 + 4  = 10
3 * (2 + 4) = 18
In unserem Beispiel:

Code: Alles auswählen

wenn Mami = "anwesend" oder Papi = "anwesend" und Uhrzeit = "20:00:00" dann
   TVSteckdose einschalten
endewenn
haben wir keine Klammern. Weil UND stärker bindet, ist die Bedingung erfüllt, wenn Mami anwesend ist oder, wenn Papi anwesend ist und es 20 Uhr ist. Natürlich auch, wenn beide anwesend sind. Vielleicht ist das ja so gewollt? Wenn Mami zu Hause ist, läuft die Flimmerkiste den ganzen Tag. Papi interessiert sich nur für die Tagesschau.

Mit Klammern könnte man aber erreichen, dass beide nur die Tagesschau sehen dürfen:

Code: Alles auswählen

wenn (Mami = "anwesend" oder Papi = "anwesend") und Uhrzeit = "20:00:00" dann
   TVSteckdose einschalten
endewenn
Homeputer akzeptiert aber keine Klammern in WENN-Bedingungen. Deshalb müssen wir verschachteln:

Code: Alles auswählen

wenn Mami = "anwesend" oder Papi = "anwesend" dann
   wenn Uhrzeit = "20:00:00" dann
      TVSteckdose einschalten
   endewenn
endewenn
Aus den beiden Beispielen kann man folgende Merksätze ableiten:
- Bei mit UND verknüpften Bedingungen besonders vorsichtig sein mit dem SONST

- Bei UND und ODER in einer Bedingung auf die Auswertungs-Regel achten

In beiden Fällen: Besser verschachteln!
Viele Grüsse
Bümpi

dragonius
Beiträge: 50
Registriert: 27.09.2009, 09:14

Re: Makro mit oder funktion

Beitrag von dragonius » 29.10.2009, 10:08

Herlich! Das bringt die grauen Zellen wieder auf Vordermann. Mehr davon! :D

pookylg
Beiträge: 78
Registriert: 08.01.2007, 15:01
Wohnort: bei Giessen

Re: Makro mit oder funktion

Beitrag von pookylg » 29.10.2009, 10:22

KLASSE !!!
so kann man wenigstens verstehn warum manche sachen dei man macht nicht fuktionieren.

Vorschlag von mir
einfach mal einen bereich machen wo genau solche programmier beispiele drin sind angefangen von einfach bis schwierig
denn das mit der oder funktion ist nicht wirklich verständlich erklärt in der hilfe.
Gruß Raphael

Benutzeravatar
jczarnetzki
Beiträge: 744
Registriert: 06.01.2007, 19:35
Wohnort: 20 Min. westlich von Hannover

Re: Makro mit oder funktion

Beitrag von jczarnetzki » 29.10.2009, 19:10

Finde diesen Beitag super mit den Fragen.
Hoffe das es weiter geht.
Mit freundlichen Grüßen
jörg

171 Kanäle in 66 Geräten:
2x HM-LC-Sw1-PB-FM, 3x HM-LC-Sw1-Pl, 2x HM-LC-Sw4-SM, 3x HM-LC-Sw1-FM, 2x HM-WDS10-TH-O, 6x HM-Sec-SD, 2x HM-Sen-MDIR-SM, 3x HM-Sec-MDIR, 1x HM-PB-4Dis-WM, 1x HM-LC-Dim1L-Pl, 1x HM-PB-4-WM, 1x HM-LC-Sw2-PB-FM, 1x HM-RC-12-B, 2x HM-RC-19-B, 1x HM-PBI-4-FM, 1x HM-Sec-SD-Team, 1x HM-Sec-RHS, 6x HM-Sec-SC, 3x HM-LC-Sw4-PCB, 2x HM-Sec-TiS, 1x HM-OU-CF-Pl, 1x HM-CCU-1, 1x HMW-IO-4-FM, 2x HM-LC-Sw2-FM, 5x HM-CC-VD, 2x HM-WDS40-TH-I, 1x HM-WDS30-T-O, 4x HM-CC-TC, 2x HM-Sec-WDS, 2x HM-RC-Key3-B, 1x HM-Sec-Key
--------------------------------------------

Benutzeravatar
jczarnetzki
Beiträge: 744
Registriert: 06.01.2007, 19:35
Wohnort: 20 Min. westlich von Hannover

Re: Makro mit oder funktion

Beitrag von jczarnetzki » 29.10.2009, 19:31

Beitrag von pookylg » 29.10.2009, 10:22
KLASSE !!!
so kann man wenigstens verstehn warum manche sachen dei man macht nicht fuktionieren.

Vorschlag von mir
einfach mal einen bereich machen wo genau solche programmier beispiele drin sind angefangen von einfach bis schwierig
denn das mit der oder funktion ist nicht wirklich verständlich erklärt in der hilfe.
Das war für mich als Freizeit-Programmierer schon mal zwei gute Ansätze wie man es nicht Programmieren sollte.
Ich glaube das es von meinen kleinen Grundlagen(Basic) noch mehr User gibt, und bei den beiden Fragen von Brümpi auf die Nase gefallen sind.
Mit freundlichen Grüßen
jörg

171 Kanäle in 66 Geräten:
2x HM-LC-Sw1-PB-FM, 3x HM-LC-Sw1-Pl, 2x HM-LC-Sw4-SM, 3x HM-LC-Sw1-FM, 2x HM-WDS10-TH-O, 6x HM-Sec-SD, 2x HM-Sen-MDIR-SM, 3x HM-Sec-MDIR, 1x HM-PB-4Dis-WM, 1x HM-LC-Dim1L-Pl, 1x HM-PB-4-WM, 1x HM-LC-Sw2-PB-FM, 1x HM-RC-12-B, 2x HM-RC-19-B, 1x HM-PBI-4-FM, 1x HM-Sec-SD-Team, 1x HM-Sec-RHS, 6x HM-Sec-SC, 3x HM-LC-Sw4-PCB, 2x HM-Sec-TiS, 1x HM-OU-CF-Pl, 1x HM-CCU-1, 1x HMW-IO-4-FM, 2x HM-LC-Sw2-FM, 5x HM-CC-VD, 2x HM-WDS40-TH-I, 1x HM-WDS30-T-O, 4x HM-CC-TC, 2x HM-Sec-WDS, 2x HM-RC-Key3-B, 1x HM-Sec-Key
--------------------------------------------

Lueghi
Beiträge: 630
Registriert: 01.11.2007, 21:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Siebengebirge (bei Bonn)
Hat sich bedankt: 18 Mal
Danksagung erhalten: 2 Mal

Re: Makro mit oder funktion

Beitrag von Lueghi » 30.10.2009, 12:32

buempi hat geschrieben: Was passiert?
Also bei mir gäbe das einfach nur Ärger ... der WAF ist zu schlecht :mrgreen: :mrgreen: :mrgreen: :mrgreen:
Gruß Stefan

Texas
Beiträge: 115
Registriert: 03.10.2015, 10:10

Re: Makro mit oder funktion

Beitrag von Texas » 14.11.2015, 16:27

Danke an Bümpi, für diesen Link.
Ich denke ich hatte einen kleinen Lichtblick und das ganze wirkt nun wieder ein wenig vertrauter.
Vielen Dank!!!
So in der Art hätte man auch die Anleitung für Homematic schreiben sollen, dann könnte ich schon um einiges weiter sein :wink:
Gruß Alex.

Antworten

Zurück zu „homeputer Studio / Standard: Programmierbeispiele“