- Anweisung (Programmierung)
-
Als Anweisung (engl. statement) bezeichnet man in der Informatik, dort im Bereich der Programmierung, ein zentrales Element vieler imperativer Programmiersprachen. Die Programme derartiger Sprachen setzen sich primär aus einer oder mehreren Anweisungen zusammen. Eine Anweisung stellt eine in der Syntax einer Programmiersprache formulierte einzelne Vorschrift dar, die im Rahmen der Abarbeitung des Programms auszuführen ist. Wie eine Anweisung syntaktisch auszusehen hat, wird durch die jeweilige Programmiersprache bzw. deren Spezifikation festgelegt und ist innerhalb eines Programms nicht änderbar.
In der maschinennahen Programmierung werden Anweisungen häufig auch als Befehl (engl. instruction oder command) bezeichnet.
Anweisungen sind üblicherweise Zuweisungen, Kontrollanweisungen (wie Sprünge, Schleifen und bedingte Anweisungen) und Prozeduraufrufe. Abhängig von der Programmiersprache sind teilweise auch Zusicherungen, Deklarationen, Klassen- und Funktionsdefinitionen Anweisungen.
Im Gegensatz zu Ausdrücken haben Anweisungen nicht immer einen Wert. Einige Anweisungen können jedoch auch Ausdrücke sein, so z. B. Zuweisungen, Inkrementoperatoren oder Funktionsaufrufe. Umgekehrt sind viele Ausdruckstypen wie etwa Vergleiche oder arithmetische Ausdrücke keine syntaktisch vollständigen Anweisungen.
Sequenzen von Anweisungen werden häufig in Blöcken zusammengefasst.
Inhaltsverzeichnis
Beispiele
Assembler-Anweisung MOV AX,BX
Initialisierung TYPE SALARY = INTEGER
Deklaration VAR A:INTEGER
Zuweisung A := A + 1
Block begin WRITE('Number? '); READLN(NUMBER); end
Bedingte Anweisung if A > 3 then WRITELN(A) else WRITELN("NOT YET") end
Switch-Case-Anweisung switch (c) { case 'a': alert(); break; case 'q': quit(); break; }
While-do-Schleife while NOT EOF DO begin READLN end
Do-while-Schleife do {computation(&i); } while (i < 10);
For-Schleife for A:=1 to 10 do WRITELN(A) end
Funktionsaufruf CLEARSCREEN()
Return-Anweisung return 5;
Goto-Anweisung goto 1
Assertion assert(ptr != NULL);
siehe auch Programmiersprachelemente
Syntax
Das Erscheinungsbild eines Programms ist vom Aussehen der Anweisungen geprägt. Daher werden Programmiersprachen oft nach der Art ihrer Anweisungen unterschieden (z.B.: Sprachen mit geschwungenen Klammern). Viele Anweisungen beginnen mit einem Bezeichner wie if, while oder repeat. Oft sind die Schlüsselwörter der Anweisungen reserviert, sodass sie nicht als Name einer Variable oder Funktion verwendet werden können. Imperative Programmiersprachen nützen meist eine spezielle Syntax für ihre Anweisungen, welche sich deutlich von einem Funktionsaufruf unterscheidet. Verbreitete Methoden um die Syntax von Anweisungen zu beschreiben sind Backus-Naur-Form und Syntaxdiagramm.
Semantik
Semantisch differieren viele Anweisungen von Unterprogrammen durch die Behandlung ihrer Parameter. Normalerweise wird ein tatsächlicher Parameter vor dem Aufruf des Unterprogramms ausgewertet. Dies unterscheidet sich von den Parametern vieler Anweisungen, welche mehrmals (z.B. die Bedingung einer while Schleife) oder gar nicht (z.B. der Rumpf einer while Schleife) ausgewertet werden. Technisch gesehen sind solche Anweisungsparameter Closures, welche bei Bedarf ausgeführt werden (siehe auch Lazy Evaluation). Wenn Closure-Parameter für Unterprogramme verfügbar sind, kann das Verhalten einer Anweisung durch Unterprogramme implementiert werden (siehe Lisp). Für Sprachen ohne Closure Parameter geht die semantische Beschreibung einer Schleife oder Bedingten Anweisung über die Fähigkeit der Sprache hinaus. Deswegen benutzen Spezifikationen oft semantische Beschreibungen in natürlicher Sprache.
Literatur
- James Gosling, Bill Joy, Guy Steele, Gilad Bracha: The Java Language Specification, Third Edition. Addison-Wesley, Upper Saddle River 2005, ISBN 0-321-24678-0 (PDF; 6,2 MB)
- Guido van Rossum: Python Reference Manual. 2006
Wikimedia Foundation.