ist folgende Anweisung möglich ? if (bedingung) { anweisung; } else { if(bedingung1) { andere_Anweiseung; } else { noch_ne_andere_Anweisung; } }
Wenn deine Struktur genau so ist, dann kann man das ganze optisch auch so schreiben
1 | if (bedingung) |
2 | { |
3 | anweisung; |
4 | } |
5 | |
6 | else if (bedingung1) |
7 | { |
8 | andere_Anweiseung; |
9 | } |
10 | |
11 | else |
12 | { |
13 | noch_ne_andere_Anweisung; |
14 | } |
dann vermeidet man die großen Schachtelungstiefen von ineinander geschachtelten Blöcken, die ansonsten den Code ganz schnell an den rechten Bildschirmrand treiben. Für viele ist diese Schreibweise auch etwas logischer und durchsichtiger. Da steht schön untereinander: Es gibt 3 Fälle. Wenn A vorliegt, dann mach das. Wenn B vorliegt, dann mach dieses. In allen anderen Fällen mach ganz was anderes. Syntaktisch und semantisch (also bedeutungsmässig) ist es aber 100% gleichwertig zu deiner Schachtelung, wie man sich ganz leicht durch überlegen, ob die Klammerung beim ersten else notwendig ist und etwas umformatieren überzeugen kann.
Karl Heinz Buchegger schrieb: > Syntaktisch und semantisch (also bedeutungsmässig) ist es aber 100% > gleichwertig zu deiner Schachtelung. Im Original folgt dem ersten else ein Anweisungsblock. In deiner Variante nur eine einfache Anweisung.
Karl Heinz Buchegger schrieb: > Da steht schön untereinander: > Es gibt 3 Fälle. Wenn A vorliegt, dann mach das. Wenn B vorliegt, dann > mach dieses. In allen anderen Fällen mach ganz was anderes. Ob es 3 Faelle sind oder 2 Faelle von denen sich einer nochmal aufteilt, kommt auf die jeweilige Situation an. Und je nachdem ist die eine oder andere Variante logischer, so pauschal kann man das nicht sagen.
Peter Stegemann schrieb: > Karl Heinz Buchegger schrieb: > >> Da steht schön untereinander: >> Es gibt 3 Fälle. Wenn A vorliegt, dann mach das. Wenn B vorliegt, dann >> mach dieses. In allen anderen Fällen mach ganz was anderes. > > Ob es 3 Faelle sind oder 2 Faelle von denen sich einer nochmal aufteilt, > kommt auf die jeweilige Situation an. Und je nachdem ist die eine oder > andere Variante logischer, so pauschal kann man das nicht sagen. Hast recht. Da hab ich nicht gut genug drüber nachgedacht. So pauschal sollte ich das tatsächlich nicht behaupten.
Ich finde ja das case-select-Statement viel übersichtlicher. Je nach Programmierspreche ist die Syntax im Detail etwas anders, in Realbasic ist sie so: select case x (z.B. ein Integer) case 1 ... (wenn x=1 ist) case 2 ... (wenn x=2 ist) case 76 ... usw. else (für alle nicht aufgeführten Fälle) end select Geht auch mit anderen Datentypen, z.B. Strings.
Frank schrieb: > Ich finde ja das case-select-Statement viel übersichtlicher. Das ist aber nicht vergleichbar.
switch schrieb: > Frank schrieb: >> Ich finde ja das case-select-Statement viel übersichtlicher. > Das ist aber nicht vergleichbar. Beides sind Fallunterscheidungen. Dass die in C technisch betrachtet voellig unterschiedlich sind, braucht den Basic-Entwickler nicht zu kuemmern.
??? Bei case habe ich nur ein Ergebnis und verzweige je nach Wert. Bei jedem if erhalte ich ein neues völlig unabhängiges Ergebnis.
switch schrieb: > ??? Ja, so geht es mir auch gerade. Koenntest du mal ein Beispiel machen, was du meinst?
switch (a * b) case 1: ... case 5: ... else ... if ((a*b) = 5) ... else if ((i+t) < k) ... else ...
ist möglich. So wie du die Anweisungen gesetzt hast ist die Variante von KHB ein gleichwertiger Ersatz. In deiner Variante hast du aber noch zusätzliche Möglichkeiten Anweisungen zu verwenden. z.B.:
1 | struct Person ich; |
2 | ...
|
3 | if (ich.betrunken) |
4 | {
|
5 | falleUnternTisch (ich); |
6 | }
|
7 | else
|
8 | {
|
9 | rufe (Bedienung); //bei dir keine Anweisung an dieser stelle |
10 | |
11 | if (ich.Biertrinker) |
12 | {
|
13 | bestelle (Stiegl); |
14 | }
|
15 | else
|
16 | {
|
17 | bestelle (Wieselburger); |
18 | }
|
19 | |
20 | aufGetränkFreuen (ich); //und auch hier nicht |
21 | }
|
22 | ...
|
horst schrieb: > So wie du die Anweisungen gesetzt hast ist die Variante von KHB ein > gleichwertiger Ersatz. Das liegt schon weiter hinter uns. KHB hat den Beitrag ja editiert. Das Bsp. bezieht sich auf die Nachfrage von Peter S. und soll ihm den Unterschied zu case verdeutlichen: keep it simple!
switch schrieb: > Das Bsp. bezieht sich auf die Nachfrage von Peter S. und soll ihm den > Unterschied zu case verdeutlichen: keep it simple! Ich kenne den Unterschied zwischen case und if in verschiedenen Sprachen. Natuerlich sind die unterschiedlich, aber die Anwendungsbereiche ueberschneiden sich je nach Sprache mehr oder weniger stark. Deswegen sind beide aber immer noch Fallunterscheidungen und daher durchaus vergleichbar - und eigentlich tust du gerade genau das, du vergleichst beide Konstrukte.
fette Logik, natürlich ist alles vergleichbar, Äpfel mit Birnen, ... Es muss bei einem Vergelich ja auch keine Gemeinsammkeiten geben, lass das noch einmal sacken. lg Denker
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.