Ist der Befehl "else if" unnötig?
Mann könnte doch statt else if (bzw. in anderen Sprachen z.B. python "elif") einfach nochmal if schreiben oder sehe ich das falsch? da spart man sich ein ganzes wort :D
9 Antworten
Kannst du, ist aber langsamer und die Semantik ist nicht mehr die gleiche.
Wenn bei else if ein vorhergehendes if zutrifft, werden die anderen übersprungen wodurch du die nachfolgenden Vergleiche sparst. Bei zehn else if entsprechend 10 Vergleiche wenn das erste if zutrifft -> 10x schneller.
Weiterhin bzgl. Semantik. Wenn du z.B. mehrere if's in else if's überführst, musst du darauf achten, dass die Statusveränderungen die gleichen sind. Also lapidar gesagt, dass dein Code am Ende das gleiche macht z.B. Variablen in gleicher Reihenfolge verändert, wenn das für den Algorithmus eine Bedeutung hat.
Nein, das wäre etwas Anderes. Beispiel:
a = 5
if (a = 5) {
print "A"
} else if (a < 10) {
print "B"
}
Die Ausgabe ist in diesem Fall:
A
Nun ohne else if und nur mit if, wie du vorschlägst:
a = 5
if (a = 5) {
print "A"
}
if (a < 10) {
print "B"
}
Ausgabe:
A
B
Ein else if könnte man auch umschreiben zu:
a = 5
if (a = 5) {
print "A"
} else {
if (a < 10) {
print "B"
}
}
FAZIT: Ein else if ist erforderlich, wenn der Block nur ausgeführt werden soll, wenn die vorangehende if- oder else if-Bedingung nicht erfüllt ist.
Gerne. Du musst einfach auf das Symbol "</>" klicken. Dazu musst du oben rechts im Editor bei den drei Punkten ggf. die Optionen aufklappen, wenn du das nicht schon gemacht hast. Dort findest du auch weitere Funktionen wie Zitieren. Das Syntax-Highlighting geschieht hier auf gutefrage automatisch.
"unnötig" ? "manchmal Ja" : "manchmal Nicht";
In China sagt man aber "Wahr", "Nicht Wahr" und "Alles Andere".
Also hat man hier auch Exception erfunden.
-------------
Das ist aber nicht ganz korrekt.
Warum?
Es gibt auch "verschwommene Logik" - Fuzzi-Logig
https://de.wikipedia.org/wiki/Fuzzylogik
Also in dieser Logik, kann ich Deine "if-else" Fragen leider nicht ganz genau beantworten.
Mit "if-else" kann man auch die Dilemma um die arme Schrödinger Katze auch nicht beantworten:
https://de.wikipedia.org/wiki/Schr%C3%B6dingers_Katze
Also baue bitte neue Syntax, zB (if "verschwommene Frage halb-else verschwommene Antwort" teilweise-elseif "Rest" ;
Ich helfe immer nur teilweise.
und jetzt habe ich Dir sicher vollständig geholfen. Ne Wa?
Nein, das siehst Du schon generell richtig, allerdings müßtest Du die Vorbedingunng in allen weiteren If-Abfragen ggf. mitschleppen, bzw. die Bedingungen umformulieren.
Dies ist eigentlich immer möglich, verkompliziert aber entsprechende Ausdrücke und erhöht dadurch oft auch die fehleranfälligkeit. Insofern ist else if ein Stilmittel, welches Formulierungen vereinfacht, ähnlich wie zum Beispiel auch switch/case.
Genauso braucht es maximal einen Schleifenkonstrukt, oder alternativ Sprungbefehle, die Schleifentypen sind jederzeit ineinander überführbar. Allerdings machen verschiedene Schleifenformen es einfacher bestimmte Dinge auszudrücken, was dann umgekehrt auch den Code lesbarer/verständlicher macht.
Ja, du siehst was falsch.
"else if" bedeutet:
Wenn das Vorangegangenen nicht zutrifft und das Folgende zutrifft, dann...
während "if" bedeutet:
Wenn das Folgende zutrifft, dann...
Es gibt Konstrukte, da ist das egal (etwa: if a = 1 ... else if a = 2 ...), daraus zu schließen, das wäre immer so, ist falsch.
Ich denke aber, dass diese Vermutung eher aufkommt, wenn man ein Programm liest, als wenn man es schreibt.
Ok danke :) Wie hast du denn disen Code mit den passenden farben hier rein bekommen?