====== Bedingungen in C formulieren ======
Kommen wir nochmal zu Basic:
IF A=7 THEN PRINT "A ist 7"
würde in C heißen:
if(a==7) printf("a ist 7\n");
Der Vergleichsoperator ist nicht '=' sondern '=='!
Welche Operatoren gibt es?
^C ^ Basic ^ Bedeutung ^
| == | = | ist gleich (gilt nicht für Strings!) |
| != | <> | ist ungleich |
| > | > | ist größer |
| < | < | ist kleiner |
| >= | >= | ist größer oder gleich |
| <= | <= | ist kleiner oder gleich |
Macht man eine Aussage wie ''a==7'' ist diese entweder richtig oder falsch. Ist Sie richtig, also a ist gleich ''7'', wird der Befehl oder das Befehlspaket nach der ''if''-Anweisung ausgeführt. Danach läuft das Programm normal weiter.
int main(void)
{
long a=7;
printf("Hallo\n");
if(a==7)
printf("a ist 7\n");
printf("Nochmal Hallo\n");
return 0;
}
Auf dem Bildschirm würde also
Hallo
a ist 7
Nochmal Hallo
erscheinen. Wird die Zeile
long a=7;
in
long a=8;
geändert, erscheint wenn man das Programm kompiliert hat und startet nur noch
Hallo
Nochmal Hallo
weil die Variable a nun nicht mehr den geforderten Wert ''7'' besitzt.
Das printf hinter dem if() wird nur ausgeführt, wenn die in den runden Klammen geschriebene Bedingung erfüllt ist. Hier besitzt a den Wert 8 und nicht den geforderten Wert 7, die Anweisung hinter if() wird daher nicht ausgeführt.
Man kann das Programm nun 'erweitern'. Zum Beispiel so:
int main(void)
{
long a = 8;
printf("Hallo\n");
if( a == 7 )
printf("a ist 7\n");
if( a != 7 )
{
printf( "a ist ungleich 7\n" );
printf( "Schade eigentlich...\n" );
}
printf( "Nochmal Hallo\n" );
return 0;
}
Einfacher, schneller (weil nur ein Vergleich durchgeführt wird) und viel elegenter ist folgendes:
int main(void)
{
long a = 8;
printf( "Hallo\n" );
if( a == 7 )
printf( "a ist 7\n" );
else
{
printf( "a ist ungleich 7\n" );
printf( "Schade eigentlich...\n" );
}
printf( "Nochmal Hallo\n" );
return 0;
}
Die Befehle, die nach dem Befehl ''else'' (zu deutsch "sonst") eingeklammert sind, werden ausgeführt, wenn die Bedingung der vorherigen ''if''-Anweisung nicht erfüllt wurde: Wenn ''a'' gleich ''7'', dann ''printf("a ist 7\n")'', sonst ''printf("a ist ungleich 7\n")''
Man kann diese beiden Befehle auch kombinieren. Zum Beispiel so:
int main(void)
{
long a = 8;
printf( "Hallo\n" );
if( a == 7 )
printf( "a ist 7\n" );
else if (a == 8)
printf ("a ist 8\n");
else
{
printf( "a ist ungleich 7 und ungleich 8\n" );
printf( "Schade eigentlich...\n" );
}
printf( "Nochmal Hallo\n" );
return 0;
}
Hier wird zuerst geprüft, ob a den Wert 7 hat. Ist dies nicht der Fall, wird auf 8 geprüft. Ist a auch nicht 8, wird der else Zweig ausgeführt.