Beitragsseiten

Nutzen und Aufbau von Alternativen

Alternativen tauchen in einem Programm immer auf, wenn man an eine Stelle kommt, an der es unterschiedliche Möglichkeiten gibt fortzufahren.
Eine Alternative ist eine Art Weggabelung (Verzweigung), an der man sich entscheiden muss, wo es weiter gehen soll.
In C gibt es zwei Varianten der Alternativen: die if()-Alternativen und die switch()-Alternative


if-Alternativen

Die If-Alternative überprüft eine Bedingung. Ist die Bedingung wahr, dann wird alles in den geschweiften Klammern hinter if(Bedingung) ausgeführt. Sollte die Bedingung nicht wahr sein, macht die Einfach-Alternative nichts.

Die Bedingungen werden mit Hilfe der Vergleichsoperatoren aufgebaut. Benötigt man mehrere Teilbedingungen können diese mit den logischen Operatoren verknüpft werden (siehe auch Operatoren).

 

Beispiel:

/*
Max Mustermann
einfache if-Alternative
23.05.2005
*/

#include <stdio.h>

void main()
{
  int a, b;

  printf("1. Zahl: ");scanf("%d",&a );
  printf("2. Zahl: ");scanf("%d",&b );

  if (a == b) // wenn a gleich b ist, wird das was in den {} Klammern steht ausgeführt
  {                 
    printf("a ist gleich b\n");
  };
}

Mögliche Ausgaben zu diesem Programm:

1. Zahl: 5
2. Zahl: 5
a ist gleich b


oder

1. Zahl: 10
2. Zahl: 5

 


if und else

Mit Hilfe der einfachen if()-Alternative, kann man etwas tun, wenn die Bedingung zutrifft. Wenn sie das nicht tut, wird einfach mit dem Programm fortgefahren. Die If()-Alternative führt also keine Aktion aus.

Mit Hilfe des else kann man festlegen, was geschehen soll, wenn die Bedingung in der IF()-Alternative nicht zutrifft.

 

Beispiel:

/*
Max Mustermann
zweifache if-Alternative
23.05.2005
*/

#include <stdio.h>

void main()
{
  int a, b;

  printf("1. Zahl: ");
  scanf("%d",&a );
  printf("2. Zahl: ");
  scanf("%d",&b );

  if (a==b) // wenn a gleich b ist wird das was in den {} Klammern steht ausgeführt
  {
    printf("a ist gleich b\n");
  }
  else // anderenfalls wird das was hinter else in den {} Klammern steht ausgeführt
  {
     printf("a ist ungleich b\n");
  }
}

 

Mögliche Ausgaben zu diesem Programm:

1. Zahl: 5
2. Zahl: 5
a ist gleich b


oder

1. Zahl: 10
2. Zahl: 5
a ist ungleich b

 


else if - Erweiterung

Mit dem Schlüsselwort else if (Bedingung) können zwischen if- und else-Bereich der Zweifach-Alternativen noch weitere Bereiche mit weiteren Bedingungen formuliert werden. Sollte eine dieser zusätzlichen Bedingungen wahr sein, wird der entsprechende Anweisungsblock ausgeführt. Damit kann aus der Zweifach-Alternative eine Mehrfach-Alternative aufbauen.

 

Beispiel:

/*
Max Mustermann
mehrfache elseif-Alternative
23.05.2005
*/

#include <stdio.h>

void main()
{
  int a, b;

  printf("1. Zahl: ");
  scanf("%d",&a );

  if (a < 5)
  {
     printf("Das ist kleiner als 5!!!\n\n");
  }
  else if (a == 5)
  {
     printf("Das ist gleich 5!!!\n\n");
  }
  else
  {
     printf("Das ist größer 5!!!\n\n");
  }
}

 

Mögliche Ausgaben zu diesem Programm:

1. Zahl: 2
Das ist kleiner als 5!!!


oder

1. Zahl: 5
Das ist gleich 5!!!


oder

1. Zahl: 7
Das ist größer als 5!!!

 


switch-Alternative

Die switch-Alternative untersucht den Inhalt einer Variablen. Aufgrund des Inhaltes verzweigt die Alternative zu einem  entsprechenden case (Bsp: a = 5; switch (a) geht dann zu case 5:). Jeder eigenständige case muss mit einem break abgeschlossen werden. Sollte keine entsprechende Übereinstimmung gefunden werden, wird der default-Bereich ausgeführt.
Die switch-Alternative arbeitet mit allen Integer-Datentypen und mit char zusammen.

 

Beispiel:

/*
Max Mustermann
Mehrfachauswahl mit switch
23.05.2005
*/

#include <stdio.h>

void main()
{
  int a;

  printf("Eingabe von a: ");
  scanf("%d", &a);
 
  switch (a)
  {
     case 1: printf("a = 1");
             break;
     case 2: printf("a = 2");
             break;
     case 3: printf("a = 3");
             break;
     default: printf("a < 1 oder a > 3");
  };
}


Mögliche Ausgaben zu diesem Programm:

Eingabe von a: 1
a = 1 

oder

Eingabe von a: 2
a = 2

oder

Eingabe von a:3
a = 3

oder

Eingabe von a: 100
a < 1 oder a > 3