BomberDeluxe schrieb:
Nach diesem Prinzip hab ich mir das Vorgestellt.
"Solange Hans kein rotes Hemd und kein weißes Hemd und kein schwarzes Hemd hat
kaufe ein Hemd"
Dieser Gedanke ist durchaus richtig (auch wenn es nicht ganz zum Fall passt).
Formulieren wir es so um:
"Solange Hans kein rotes Hemd, keine schwarze Hose und keine braunen Schuhe trägt, probiere Kleider an."
Wenn Du das jetzt in Code übertragen willst, musst Du natürlich die dortige Semantik beachten. Die while-Schleife läuft so lange, wie der Schleifen-Ausdruck wahr ist. Du muss die Bedingungen also so formulieren, dass die Schleife erst dann abbricht, wenn Hans rotes Hemd, schwarze Hose und braune Schuhe trägt.
Wenn Du jetzt formulierst
while (hemd != rot
and hose != schwarz
and schuhe != braun)
ist der Schleifenausdruck nur dann wahr, wenn das Hemd NICHT rot und die Hose NICHT schwarz und die Schuhe NICHT braun sind. Also genau das Gegenteil von dem, was Du erreichen möchtest. Sobald Hans ein rotes Hemd anprobiert oder eine schwarze Hose oder braune Schuhe, kann der Ausdruck nicht wahr sein (und die Schleife bricht ab).
BomberDeluxe schrieb:
Und mit dem Or Prinzip sähe das ja dann so aus:
"Solange Hans kein rotes Hemd oder kein weißes Hemd oder kein schwarzes Hemd hat
kaufe ein Hemd"
Das wäre ja dann irgendwie sinnlos, da die Schleife hier nur auftritt, wenn alles stimmt.
Nein. Die Schleife läuft solange, wie mindestens eine der Bedingungen nicht erfüllt ist. Im Umkehrschluss: wenn alle Bedingungen erfüllt sind, bricht sie ab. Dein Beispiel ist schlecht gewählt, weil es bei Deinem Code-Problem drei verschiedene Kriterien sind, die geprüft werden sollen.
"Wenn Hans kein rotes Hemd oder keine schwarze Hose oder keine braunen Schuhe trägt, probiere Kleiner an."
Du musst Dir klar machen, wie das Programm abläuft. Zuerst wird die erste Bedingung geprüft. Ist diese erfüllt (Hans hat kein rotes Hemd an), gibt es eine neue Runde. Solange bis die Bedingung nicht mehr erfüllt ist (Hans
hat ein rotes Hemd an). Erst dann wird die zweite Bedingung überhaupt geprüft! Und so geht das mit jeder Bedingung weiter. Bis er ein rotes Hemd, eine schwarze Hose und braune Schuhe trägt.