009
03.05.2005, 09:12 Uhr
ao
(Operator)
|
Zitat von ~flashbrain: |
Informieren Sie den Rater, falls er die richtige Zahl erraten hat. Setzen Sie in diesem Fall die Variable versuche auf Null, um den Schleifendurchlauf abzubrechen.
|
Bloß mal so ne Anmerkung: Solche Ideen wie Schleifenabbrüche durch die Hintertür finde ich extrem krank.
C++: |
versuche = 100; for (i = 1; i <= versuche; i++) { // ganz viel Code
if (irgendwas) versuche = 0; // bei nächster Gelegenheit raus aus der Schleife
// womöglich noch mehr Code }
|
Meinst du, das schnallst du noch, wenn du das in sechs Monaten noch mal liest? Wenn ich die ersten beiden Zeilen sehe, denke ich, ganz klar, 100 Schleifendurchläufe. Dass es auch viel weniger sein können, merkt man erst weiter unten, und je nachdem, wieviel Code dazwischen steckt, übersieht man es auch ganz und wundert sich dann zur Laufzeit.
Nur, um eine popelige bool-Variable zu sparen, wird Code produziert, der ein hohes Risiko hat, missverstanden zu werden.
Das klingt vielleicht nach Haarespalten, aber wenn du mal ein bisschen weiter fortgeschritten bist und Programmieren als Werkzeug einsetzt, um ganz andere Aufgaben zu lösen, dann kannst du hausgemachte Probleme auf Code-Ebene absolut nicht gebrauchen, und dann wirst du verstehen, wie wichtig es ist, klar formulierten und leicht verständlichen Programmcode zu haben.
Ich finde es schlimm, dass euer Lehrer euch durch solche unsinnigen Vorgaben dazu bringt, Kuddelmuddel-Code zu produzieren.
Ich finde, das ist überhaupt keine Anwendung für eine for-Schleife. Die "primäre" Abbruchbedingung ist, dass der Benutzer die Zahl errät, also wäre das meiner Ansicht nach ein typischer Fall für do-while:
C++: |
int max_versuche = 100; bool found; do { // hier geratene Zahl abfragen und mit der gesuchten vergleichen
versuche++; found = (zahl == gesuchte_zahl); } while (!found && (versuche < max_versuche));
|
ao |