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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.