Aussage (Informatik)
Im Computerprogrammierung, a Aussage ist ein syntaktisch Einheit von an Imperative Programmiersprache Das drückt einige Maßnahmen aus, die ausgeführt werden müssen.[1] A Programm In einer solchen Sprache geschrieben wird durch eine Sequenz einer oder mehrerer Aussagen gebildet. Eine Anweisung kann interne Komponenten haben (z. B.,, Ausdrücke).
Viele Programmiersprachen (z. Ada, Algol 60, C, Java, Pascal) Unterscheidung zwischen Aussagen und Definitionen/Deklarationen. Eine Definition oder Erklärung gibt die Daten an, für die ein Programm arbeiten soll, während eine Anweisung die mit diesen Daten ergriffenen Maßnahmen angibt.
Aussagen, die keine anderen Aussagen enthalten können, sind einfach; Diejenigen, die andere Aussagen enthalten können, sind Verbindung.[2]
Das Erscheinen einer Aussage (und in der Tat eines Programms) wird durch ihre bestimmt Syntax oder Grammatik. Die Bedeutung einer Aussage wird durch ihre bestimmt Semantik.
Einfache Aussagen
Einfache Aussagen sind in sich selbst vollständig; Dazu gehören Zuweisungen, Unterroutineaufrufe und einige Aussagen, die den Programmfluss des Kontrolls erheblich beeinflussen können (z. gehe zu, Rückkehr, stoppen/anhalten). In einigen Sprachen werden Eingaben und Ausgabe, Behauptungen und Ausgänge von speziellen Aussagen behandelt, während andere Sprachen Aufrufe zu vordefinierten Unterprogrammen verwenden.
- Abtretung
- Forran:
Variable = Ausdruck
- Pascal, Algol 60, ADA:
Variable: = Ausdruck;
- C, C#, C ++, PHP, Java:
variable = Ausdruck;
- Forran:
- Anruf
- Forran:
Rufen Sie den Unterroutine -Namen (Parameter) auf
- C, C ++, Java, PHP, Pascal, ADA:
Unterroutine Name (Parameter);
- Forran:
- Behauptung
- C, C ++, PHP:
Assert (relationaler Ausdruck);
- Java:
den relationalen Ausdruck behaupten;
- C, C ++, PHP:
- gehe zu
- Forran:
Goto nummeriertes Label
- Algol 60:
Goto Label;
- C, C ++, PHP, Pascal:
Goto Label;
- Forran:
- Rückkehr
- Forran:
Rückgabewert
- C, C ++, Java, PHP:
Rückgabewert;
- Forran:
- Stoppen/Stoppen/Ausgang
- Forran:
Stoppnummer
- C, C ++:
Ausgang (Ausdruck)
- PHP:
Ausgangsnummer;
- Forran:
Zusammengesetzte Aussagen
Zusammengesetzte Aussagen können (Sequenzen von) Aussagen enthalten, die zu einer angemessenen Tiefe nisten, und umfassen im Allgemeinen Tests, um zu entscheiden, ob diese enthaltenen Aussagen gehorchen oder wiederholt werden.
- Notation für die folgenden Beispiele:
is any single statement (could be simple or compound). is any sequence of zero or more
- Einige Programmiersprachen bieten eine allgemeine Methode zur Gruppierung von Aussagen, sodass jede einzelne <Stures> durch eine Gruppe ersetzt werden kann:
- Notation für die folgenden Beispiele:
- Algol 60:
Start
Ende - Pascal:
Start
Ende - C, Php, Java:
{
}
- Algol 60:
- Andere Programmiersprachen haben einen anderen speziellen Terminator für jede Art von zusammengesetzter Anweisung, so dass eine oder mehrere Aussagen automatisch als Gruppe behandelt werden:
- ADA:
Wenn Sie testen
Ende wenn;
- ADA:
- Andere Programmiersprachen haben einen anderen speziellen Terminator für jede Art von zusammengesetzter Anweisung, so dass eine oder mehrere Aussagen automatisch als Gruppe behandelt werden:
Viele zusammengesetzte Aussagen sind Schleifenbefehle oder Auswahlbefehle. In der Theorie ist nur einer dieser Arten von Befehlen erforderlich. In der Praxis gibt es verschiedene Sonderfälle, die ziemlich oft auftreten; Dies kann ein Programm erleichtert, das das Verständnis erleichtert, das Programmieren erleichtert und oft viel effizienter implementiert werden kann. Hier gibt es viele Feinheiten; Weitere Informationen finden Sie in den verknüpften Artikeln.
- count-kontrollierte Schleife:
- Algol 60:
Für Index: = 1 Schritt 1 bis zur Grenze tun
; - Pascal:
Für Index: = 1 zu begrenzen
; - C, Java:
für (index = 1; index <= limit; index += 1)
; - ADA:
Für Index in 1..limit Loop
Endschleife - FORTRAN 90:
TUN Index = 1,Grenze <Reihenfolge> Ende tun
- Algol 60:
- kontrollierte Schleife mit Test zu Beginn der Schleife:
- Algol 60:
Für Index: = Ausdruck während des Tests
; - Pascal:
Während der Prüfung tun
; - C, Java:
während (Test)
; - ADA:
während der Testschleife
Endschleife - FORTRAN 90:
Tu während (Prüfung) <Reihenfolge> Ende tun
- Algol 60:
- kontrollierte Schleife mit Test am Ende der Schleife:
- Pascal:
wiederholen
bis Test; {Hinweis umgekehrter Test} - C, Java:
tun {
} während (Test); - ADA:
Schleife
beim Test beenden; Endschleife;
- Pascal:
- Bedingungsgesteuerte Schleife mit Test in der Mitte der Schleife:
- C:
tun {
Wenn (Test) Break; } while (wahr); - ADA:
Schleife
beim Test beenden; Endschleife;
- C:
- Wenn Sie sich befinden Einfache Situation:
- Algol 60:
Wenn Sie testen
; - Pascal:
Wenn Sie testen
; - C, Java:
if (Test)
; - ADA:
Wenn Sie testen
Ende wenn; - FORTRAN 77+:
WENN (Prüfung) DANN <Reihenfolge> Ende wenn
- Algol 60:
- Wenn Sie sich befinden Zwei-Wege-Wahl:
- Algol 60:
Wenn Sie testen
anders ; - Pascal:
Wenn Sie testen
anders ; - C, Java:
es (Test)
anders ; - ADA:
Wenn Sie testen
anders Ende wenn; - FORTRAN 77+:
WENN (Prüfung) DANN <Reihenfolge> ANDERS <Reihenfolge> Ende wenn
- Algol 60:
- Fall/Switch -Anweisung Mehrwegauswahl:
- Pascal:
case c of 'a': alert(); 'q': quit(); end;
- ADA:
case c is when 'a' => alert(); when 'q' => quit(); end case;
- C, Java:
switch (c) { case 'a': alert(); break; case 'q': quit(); break; }
- Pascal:
- Ausnahmebehandlung:
- ADA:
Beginnen Sie den geschützten Code, außer wenn Ausnahmespezifikation => Ausnahmebehandler
- Java:
Versuchen Sie {Protected Code} catch (Ausnahmespezifikation) {Ausnahmehandler} endlich {Reinigung}
- Python:
Versuchen Sie: geschützter Code außer Ausnahmespezifikation: Ausnahmebehandler sonst: Keine Ausnahmen endlich: Reinigung
- ADA:
Syntax
Abgesehen von Zuweisungen und Unterroutineaufrufen starten die meisten Sprachen jede Aussage mit einem speziellen Wort (z. B. Goto, wenn, während usw.), wie in den obigen Beispielen gezeigt. Es wurden verschiedene Methoden verwendet, um die Form von Aussagen in verschiedenen Sprachen zu beschreiben. Die formaleren Methoden sind in der Regel genauer:
- Algol 60 verwendet Backus -Naur -Form (BNF), die eine neue Ebene für die Sprachgrammatikspezifikation festlegen.[3]
- Bis zur Abtran 77 wurde die Sprache in englischer Prosa mit Beispielen beschrieben.[4] Ab Forran 90 wurde die Sprache unter Verwendung einer Variante von BNF beschrieben.[5]
- COBOL verwendete eine zweidimensionale Metallgruppe.[6]
- Pascal verwendete beide Syntaxdiagramme und gleichwertiger BNF.[7]
BNF verwendet Rekursion, um Wiederholungen auszudrücken, also verschiedene Erweiterungen wurden vorgeschlagen, um einen direkten Hinweis auf Wiederholung zu ermöglichen.
Aussagen und Schlüsselwörter
Einige Programmiersprachengrammatiken Schlüsselwörter reservieren oder Markieren Sie sie speziellund erlauben sie nicht, als verwendet zu werden als Kennungen. Dies führt oft zu Grammatiken die einfacher sind analysierenweniger Schau voraus.
Keine ausgezeichneten Schlüsselwörter
FORTRAN und PL/1 haben keine reservierten Keywords, sodass Aussagen wie:
- in PL/1:
-
If if = dann dann ...
(der ZweiteWENN
und der ersteDANN
sind Variablen).
-
- in Forran:
-
If (a) x = 10 ...
bedingte Aussage (mit anderen Varianten) -
If (a) = 2
Zuordnung zu einer abonnierten Variablen benanntWENN
-
-
- Da die Leerzeichen bis zu Fortran 95 optional waren, konnte ein Tippfehler die Bedeutung einer Aussage vollständig ändern:
-
Do 10 i = 1,5
Beginnen Sie eine Schleife mit I, die von 1 auf 5 laufe -
Do 10 i = 1,5
Zuordnung des Wertes 1.5 zur VariablenDo10i
Markierte Wörter
In Algol 60 und Algol 68 wurden spezielle Token explizit unterschieden: zur Veröffentlichung, fett, z. Start
; Für die Programmierung mit einer besonderen Markierung, z. B. einer Flagge (Flagge ('Start
), Anführungszeichen ('Start'
) oder unterstrichen (Start
auf der Elliott 503). Dies nennt man "Stropping".
Token, die Teil der Sprachsyntax sind, stehen daher nicht mit dem Programmierer definierten Namen.
Reservierte Schlüsselwörter
Bestimmte Namen sind als Teil der Programmiersprache reserviert und können nicht als Programmierer definiert werden. Die Mehrheit der beliebtesten Programmiersprachen verwendet reservierte Schlüsselwörter. Frühe Beispiele sind Fließen matisch (1953) und Cobol (1959). Seit 1970 sind ADA, C, C ++, Java und Pascal. Die Anzahl der reservierten Wörter hängt von der Sprache ab: C hat ungefähr 30, während COBOL ungefähr 400 hat.
Semantik
Die Semantik befasst sich mit der Bedeutung eines Programms. Die Standarddokumente für viele Programmiersprachen verwenden BNF oder ein Äquivalent, um die Syntax/Grammatik auf ziemlich formale und präzise Weise auszudrücken, aber die Semantik/Bedeutung des Programms wird allgemein anhand von Beispielen und englischer Prosa beschrieben. Dies kann zu Unklarheiten führen.[8] In einigen Sprachbeschreibungen wird die Bedeutung von zusammengesetzten Aussagen durch die Verwendung von „einfacheren“ Konstruktionen definiert, z. Eine Weile kann durch eine Kombination von Tests, Sprüngen und Etiketten definiert werden, die verwendet werden wenn
und gehe zu
.
Das Semantik Artikel beschreibt mehrere mathematische/logische Formalismen, mit denen die Semantik auf genaue Weise festgelegt wurde. Diese sind im Allgemeinen komplizierter als BNF, und es wird kein einzelner Ansatz als der Weg angenommen. Einige Ansätze definieren effektiv einen Dolmetscher für die Sprache. Einige verwenden formale Logik, um ein Programm zu begründen, einige befinden sich an syntaktische Entitäten, um Konsistenz zu gewährleisten, usw.
Ausdrücke
Es wird häufig zwischen Aussagen durchgeführt, die ausgeführt werden, und Ausdrücke, die bewertet werden. Der von einem Ausdruck erhaltene Wert wird häufig als Teil einer Aussage verwendet, z. Abtretung Variable: = Ausdruck;
Einige Programmiersprachen (z. B. C, C ++) ermöglichen es einigen Aussagen, ein Ergebnis zu liefern (technisch gesehen liefern alle Aussagen ein Ergebnis, dieses Ergebnis ist jedoch häufig vom Typ 'void' und kann nicht für irgendetwas verwendet werden). Die nützlichste Anweisung, die ein Ergebnis liefert, ist eine Zuordnung, das Ergebnis ist der gerade zugewiesene Wert.
Dies kann für die Mehrfachinitialisierung nützlich sein:
-
i = j = 0;
das wird als behandelti = (j = 0);
Es kann auch zu einfachen Fingerproblemen führen, die die Bedeutung eines Code vollständig ändern:
-
if (i == j) {. . . };
Tests, um zu sehen, obi
ist gleichj
-
if (i = j) {. . . };
weist den Wert von zuj
zui
Und dann testen Sie, ob dieser Wert ungleich Null ist.
Einige Sprachen ermöglichen eine Mehrfachzuordnung (Algol 60), erlauben jedoch keine Zuordnungen in Ausdrücken (Algol 60, Pascal).
Erweiterbarkeit
Die meisten Sprachen haben einen festen Satz von Aussagen, die von der Sprache definiert wurden, es wurden jedoch Experimente mit gegeben Erweiterbare Sprachen Dadurch kann der Programmierer neue Aussagen definieren.
Siehe auch
Verweise
- ^ "Aussage". Webopedia. Abgerufen 2015-03-03.
- ^ Überarbeiteter Algol 60 -Bericht. 4.1. "Algol 60". Abgerufen 23. Januar, 2021.
- ^ Überarbeiteter Algol 60 Bericht Abschnitt 1.1. "Algol 60". Abgerufen 23. Januar, 2021.
- ^ ANSI FORTRAN 66 Standard "Forran 66" (PDF). Abgerufen 19. Februar, 2021.
- ^ ANSI FORTRAN 95 Standard "Fortran95" (PDF). Abgerufen 19. Februar, 2021.
- ^ COBOL -Handbuch. "COBOL" (PDF). Abgerufen 23. Januar, 2021.
- ^ Pascal -Benutzerhandbuch und Bericht Anhang D. "Pascal" (PDF). Abgerufen 19. Februar, 2021.
- ^ Ärgerflecken in Algol 60 "Problemstellen" (PDF). Abgerufen 24. Februar, 2021.