verschalchtelung mit else if

#2248952
Lesenswert?

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.
Gast #2248964
Lesenswert?

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.
#2248974
Lesenswert?

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.
Gast #2248999
Lesenswert?

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.
Gast #2249143
Lesenswert?

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
...
Gast #2249150
Lesenswert?

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!
Gast #2249154
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren