Anweisungen und Kontrollstrukturen

Damit einem Computer beigebracht werden kann, was er zu tun hat, müssen ihm Befehle erteilt werden. In den Sprachen C und C++ werden solche Befehle Anweisungen (auf Englisch statements) genannt. Eine Anweisung besteht grundsätzlich aus einem Ausdruck, welcher mit einem Semikolon ; abgeschlossen wird. Anweisungen werden während der Laufzeit sequentiell hintereinander abgearbeitet. Um in die Abarbeitung einzugreifen, werden in C und C++ die Kontrollstrukturen benötigt.





Set a to 5.
Set b to 3.
Set c to the sum of a and b.
Repeat as long as c smaller than 10
  Print the content of c
  Add 1 to c
  
Exit the program
#include <stdio.h>

int main(){
  int a, b, c;
  a = 2;
  b = 3;
  c = a + b;
  while(c < 10){
    printf("%d\n",  c);
    c++;
  }
  return 0;
}

Details

Der Begriff Anweisung ist eine Übersetzung des englischen Instruction ins Deutsche. Obschon C als sogenannte Befehls-Sprache gilt (siehe Die Sprachen C und C++), ist der Terminus Befehl oder Instruktion heutzutage verpönt. Eine Instruktion ist im Deutschen der korrekte Terminus für einen Assembler-Befehl: Ein eindeutiger Code, was der Prozessor ausführen soll. Eine Anweisung in C wird jedoch häufig in sehr viele Instruktionen in Assembler übersetzt. Allerdings wird aufgrund der Eindeutschung des englischen instruction dieser Begriff manchmal auch für C gebraucht, wie beispielsweise bei simplen Anweisungen oder Funktionen (meist ohne Rückgabewert und nur wenigen Parametern). In C sollte jedoch der Begriff Anweisung der Instruktion vorgezogen werden.

Eine einzelne Anweisung besteht stets aus einem Ausdruck, also aus mehreren ineinander verschachtelten Werten und Operatoren. Die Reihenfolge, in der die einzlenen Operatoren abgearbeitet werden, ist genau spezifiziert, was bei der Abarbeitungsreihenfolge nachgelesen werden kann. Jeder einzelne Operator gibt einen Wert zurück, der als Input für den nächsten Operator des Ausdrucks aufgefasst wird. Der Wert des letzten Operators der Anweisung wird schlicht ignoriert. Somit ist es sogar möglich, dass eine Anweisung nur aus einem Wert oder sogar aus überhaupt nichts besteht, allerdings hat eine solche Anweisung dementsprechend auch keinerlei Wirkung. Oftmals gibt in diesem Falle ein Compiler eine Warnung aus wie Statement has no effect.

Mehrere Anweisungen werden sequentiell hintereinander abgearbeitet. Bei der Abarbeitung von Kontrollstrukturen hingegen wird diese sequentielle Abarbeitung unterbrochen. Mit ihnen werden beispielsweise Programmteile mehrfach oder nur unter gegebenen Bedingungen aufgeführt. Kontrollstrukturen weisen den Computer an, das Programm gegebenfalls an einer anderen Stelle fortzuführen. Einige, jedoch nicht alle Kontrollstrukturen erwarten genauso wie Anweisungen ein Semikolon ; als Abschluss. Die Kontrollstrukturen, die kein Semikolon ; als Abschluss benötigen, erwarten stattdessen als Abschluss eine eigenständige Anweisung oder einen ganzen Codeblock, der mittels geschweifter Klammern {} umrahmt wird. Siehe dazu Anweisungsblöcke.

Das Vergessen des Semikolons ; am Ende der Anweisung ist für Einsteiger in die C-Syntax ein sehr häufiger Fehler, der jedoch in den allermeisten Fällen einfach zu beheben ist, insbesondere, da heutige Compiler fast immer erkennen, wo ein Semikolon stehen sollte. Das Semikolon trennt sequentiell aufeinanderfolgende Anweisungen voneinander ab, wodurch sich der Programmtext (im Gegensatz beispielsweise zu sogenannt funktionalen Sprachen) in einzelne, kleinere Anweisungen gliedert.

Funktions-Prototypen sowie Deklarationen, Definitionen und Initialisierungen von Variablen werden ebenfalls mit einem Semikolon ; abgeschlossen. Sie werden jedoch vom Compiler je nach Situation unabhängig der Ausführung von Anweisungen bearbeitet und gelten NICHT als Anweisungen.

Nächstes Kapitel: Bereiche und Dateien