Programmiertechnische Kuriositäten

Hmm wenn man so gar keinen Ahnung hat, kommt das tatsächlich super nerdig rüber.

Aber ich finds unschön jetzt jemanden als Nerd zu bezeichnen ohne das man ihn kennt. Ist halt ne Wissenschaft für sich.... ob es hier im Forum so sinnvoll ist, sei mal dahingestellt.
 
Ach Sam...
Der "Witz" bei der If-Schleife ist folgender:
Es gibt keine If-Schleifen.

If ist einfach ausgedrückt eine Anweisung:

if (1 Ei = 1 Apfel) {
Mache Pflaumenkuchen
} else {
Bring den Müll raus
}

Sprachlich:
Wenn 1 Ei gleich 1 Apfel ist, dann "Mache Pflaumenkuchen".
Ansonsten "Bring den Müll raus".

Abgesehen von den verschiedenen Arten ist eine Schleife eine immer wiederkehrende Operation:
for (1 Ei, 1 Ei < 11 Ei, 1 Ei + 1 Ei) {
Jetzt habe ich x Eier
}

Sprachlich:
Starte mit 1 Ei, füge immer 1 Ei hinzu, bis die Aussage "1 < 11" unwahr wird - also bis 10 Eier erreicht sind. Beim Ausführen kommt dann das heraus:
Jetzt hab ich 1 Eier
Jetzt hab ich 2 Eier
...
Jetzt hab ich 10 Euer
- Schluss -

----

If-Schleife heißt nun so viel, dass man eine If-Anweisung dazu missbraucht, sich selbst wieder und wieder auszuführen, bis das gewünschte Ergebnis erreicht ist.
Was schlicht weg sinnfrei ist, da es zum einen viel zu kompliziert ist (wie man ja sieht^^) und zum anderen die Schleifen dafür verantwortlich sind.
Kurz gesagt: Es gibt keine If-Schleifen.
Trotzdem sagen viele (besonders Anfänger) "If-Schleife".
Würde man diese Personen wörtlich nehmen, würde der oben stehende Code rauskommen.
Sprachlich siehts dann so aus:


Definiere Funktion mit dem Namen "if_loop". Nehme dabei die Werte "Startwert, Zielwert, Schrittweite" entgegen.
(In dieser Funktion)
Überprüfe, ob Startwert (1) dem Zielwert (10) entspricht...
... NEIN... dann zähle den Startwert (1) um Schrittweite hoch (1+1) und setze dieses Ergebnis als neuen Startwert (2) und führe die funktion "if_loop" mit diesen Werten aus..
Überprüfe, ob Startwert (2) dem Zielwert (10) entspricht...
... NEIN... dann zähle den Startwert (2) um Schrittweite hoch (2+1) und setze dieses Ergebnis als neuen Startwert (3) und führe die funktion "if_loop" mit diesen Werten aus..
.........usw..........
Überprüfe, ob Startwert (10) dem Zielwert (10) entspricht...
... JA... dann gebe das Ergebnis aus

Mit einer "normalen" Schleife sieht das so aus:
Zähle "Startwert" (1) so lange mit der "Schrittweite" (1) hoch, bis der "Startwert" dem "Zielwert" (10) entspricht
Ausgabe: 10 Durchgänge

@Konov:
Ist es nicht. ich habe aber auch hauptsächlich Klos und Zam angesprochen
 
Zuletzt bearbeitet von einem Moderator:
Naaajaaa - so abwegig sind IF-Schleifen nicht.

In modernen Hochsprachen hat es heute freilich ueberall For-, While-, Sonstwas-Schleifen. Geht man aber z.B. zurueck zu Assembler, dann hat man nur CMP (compare - vergleichbar mit dem IF) und verschiedene Jump-Anweisungen (JZ, JNZ, JMP) und wuerde sich dann etwas bauen, was Deinem Beispiel recht aehnlich waere (nur halt mit Sprungmarken statt Funktionen):

Code:
; s = start value
; t = target value

  ; stuff done earlier

  MOVE s, 1	; set start value
  MOVE t, 10	; set target value

START:
  CMP s, t		; compare values
  JZ END		; if equal jump to END

NEXT:
  INC s		; add 1 to s
  ; stuff done within loop
  JMP Start	; jump back to START

END:
  ; stuff done after loop


Und ja - wahrscheinlich hat es keine Register s und t - aber das haengt eh vom Zielsystem ab und soll hier einfach der Anschaulichkeit dienen
 
http://if-schleife.de/


Mir fallen aber kein Kuriositäten ein. Nur Fehler aller Art.


Bsp.:

Code:
ok = true

while(ok){
 //mach was
}

oder

Code:
float x = 2.5;
float y = 2.5;
int ergebnis;

Code:
if(x=1){}

Code:
int pi = 3,1415; //Beim Schreibtischtest wird so aus PI genau 3!



Gruß
 
Die sind ja schon alt (und immer wieder gesehen).

while (1) ist übrigens auch ok, wenn drin ein "break" an sinniger Stelle kommt.
Kommt auf die Programmiersprache an.

Mittlerweile sind die meisten while() eh foreach().
 
Code:
ok = true

while(ok){
 //mach was
}

So Kurios ist das gar nicht. ^^
Bsp.: Streaming ... Irgendwie willst du die Schleife bei bestimmten Bedinungen (bspw. shutdown-command) ja auch beenden (ok = false). Ja, du kannst auch direkt ein break setzen, aber das passt nicht immer. :ugly: Innerhalb eines function calls bspw., sofern 'ok' global definiert ist.
 
Zuletzt bearbeitet von einem Moderator:
Zam myZam = new Zam("Forendiktator");
while(true)
{
bool bZamGeplatzt = myZam.BeißInKeyboard();
if(bZamGeplatzt)
break;
}
 
Zurück