Forum: PC-Programmierung Bedingungen in X/Y Matrix abbilden


von Thorsten S. (flocke)


Lesenswert?

Ich habe mal vor über 25 Jahren ein Programm in Clipper geschrieben und 
bin an einer Stelle nicht mehr weiter gekommen. Nach sehr langer 
Programmierabstinenz versuche ich mich heute mal wieder an einem kleinen 
Programm :-)
Es geht darum z.B. folgende Abfragen zu erstellen:
WENN Land=Deutschland UND es ist kein Wochenende UND die Uhrzeit ist 
18Uhr OR später DANN rufe Funktion yxz auf.
...
...

Diese Mehrfachabfrage von Bedingungen hatte mich damals zum verzweifeln 
gebracht und ich bat einen Kollegen um Hilfe. Der hat kurz überlegt und 
gemeint da gebe es was was er mal im BBL Studium gelernt hat, und 
zeichnet eine Matrix (x/y Diagramm) auf ein Blatt Papier und bildet da 
die ganzen Abfragen ab und ruck zuck konnte man damit die 
IF/THEN/ELSE/AND/OR Abfragen programmiertechnisch definieren und alles 
lief sauber durch.

Weiß jemand wie man diese Matrix erstellt bzw. wie diese "Technik" 
heist?

von xerxes (Gast)


Lesenswert?

Thorsten S. schrieb:

>
> Weiß jemand wie man diese Matrix erstellt bzw. wie diese "Technik"
> heist?

Eventuell Karnaugh-Veitch-Diagramm ?

von foobar (Gast)


Lesenswert?

Solche Diagramme kann man einsetzen, wenn man das Regelsystem 
vereinfachen will (z.B. auf minimale Anzahl Vergleiche).  Dazu muss es 
aber erstmal vereinfachbar sein.  Dein Beispiel ist es nicht - dazu 
bräuchtest du viele solcher Bedingungen, die sich teilweise überlappen 
(z.B. mehrere Länder mit gleicher Uhrzeit).  Man könnte sagen: dein 
Beispiel ist, durch das Trennen des Zeitpunkts in Wochentag und Uhrzeit, 
bereits die optimierte Version.

Dein Beispiel schreibt man einfach runter:
1
  if (land == DEUTSCHLAND && wochentag < SAMSTAG && zeit >= 18*60)
2
    xyz()

Ich persönlich habe solche Diagramme in meinem Leben nie gebraucht - mit 
etwas Überlegen kommt man meist auf gute Lösungen (wie deine oben). 
Dazu kommt, dass die optimalen oft ohne diese Diagramme nicht mehr 
nachvollziehbar oder erweiterbar sind.  Wo es (automatisiert) genutzt 
wird, ist in Optimierern zur Codegenerierung 
(PAL/FPGA/Programmiersprachen).  Dann schreibt man aber das 
verständliche Regelwerk und überlässt dem Compiler die Optimierung.

von Clemens S. (zoggl)


Lesenswert?

Google mal nach konjunktive disjunktive Normalform verienfachen oder 
Wahrheitstabelle

https://de.m.wikipedia.org/wiki/Konjunktive_Normalform

Sg

von Egon D. (Gast)


Lesenswert?

Thorsten S. schrieb:

> Weiß jemand wie man diese Matrix erstellt bzw. wie
> diese "Technik" heist?

"Entscheidungstabellentechnik"?

von Jim M. (turboj)


Lesenswert?

Früher hiess das mal Wahrheitswertetabelle.

Brauchen aber nur Anfänger und das ist Schulstoff in Mathematik. D.h. 
man sollte sich das aus einem guten Schulbuch rauslesen können, 
inklusive Fingerübungen.

Die Klammersetzung ist nicht-trivial sobald mehrere AND und OR 
Verknüpfungen in der Bedigung aufrtreten.

von WIRO (Gast)


Lesenswert?

Suchst Du evtl. nach dem Begriff "Nassi-Shneiderman-Diagramm"?
Gruß
WIRO

von Thorsten S. (flocke)


Lesenswert?

Ich danke euch vielmals.
Ich bin jetzt auf dem richtigen Weg :-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.