• Keine Ergebnisse gefunden

Syntax von Programmiersprachen

N/A
N/A
Protected

Academic year: 2022

Aktie "Syntax von Programmiersprachen"

Copied!
8
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Prof. Dr. A. Christidis • SS 2015

Syntax von Programmiersprachen

Information:

ist „Rohstoff“ der Informatik, hat eigenständige Dimension

(vgl. Länge, Zeit, elektrische Ladung

– ist jedoch nicht im SI-System enthalten)

läßt sich nicht messen,

sie wird berechnet

wird durch Nachrichten übertragen

Eine

Nachricht ist eine Folge diskreter Zeichen oder

Zustände, die zur Übertragung von Information dienen

können (nicht: müssen – vgl. Photopapier)

(2)

Prof. Dr. A. Christidis • SS 2015

Syntax von Programmiersprachen

Bei der Codierung von Algorithmen in Programmiersprachen werden drei Aufgabenbereiche unterschieden:

Die Syntax (Form)

Regelwerk zur Beschreibung der zulässigen Zeichenketten in einem Programm

(„Wie sage ich es meinem Rechner?“ „Was sagte der Lehrer?“)

Die Semantik (Bedeutung)

Lehre der korrekten Interpretation

(„Der Lehrer sagte der Bürgermeister ist ein Esel.“)

Die Pragmatik (Wirkung)

Lehre vom Auslösen von Handlungen und Ereignissen, von der Effektivität von Information – der schwierigste Aufgabenbereich („Die Tür ist hinter Ihnen.“)

(3)

Prof. Dr. A. Christidis • SS 2015

Syntax von Programmiersprachen

Beispiel: Programmierung eines Weckers / einer doppelten Lichtschranke zur Erfassung nur eintretender Besucher / …

Syntax

maschinen- / compilertaugliche Codierung:

clock_t zeit; zeit=clock(); /*Rechenzeit*/

time_t zeit; time(&zeit); /*Wartezeit*/

Semantik

korrekt interpretierbare Codierung:

while(zeit1 = zeit2) vs. while(zeit1 == zeit2) /* Wert-Setzen vs. Wert-Abfragen*/

Pragmatik

sinnvolle, wirksame Codierung:

if (zeit1 == zeit2) return; /*nie erfuellt!*/

(4)

Prof. Dr. A. Christidis • SS 2015

Syntax von Programmiersprachen

 Die Pragmatik wird meist durch Erfahrung erlernt; es gibt auch einschlägige Literatur.

 Die Semantik wird meist als Text vermittelt; es gibt auch Ansätze zur formalisierten Darstellung.

 Die Syntax wird meist formal spezifiziert; zu ihrer Beschreibung dient seit den 1960ern als Metasprache (Notation) die Backus- Naur-Form (BNF):

Sprachkonstrukte (auch: metalinguistische Variablen, Metavariablen, syntaktische Einheiten) werden definiert durch Zuweisung von Zeichen oder Zeichenketten, die i. d. gegebenen (Programmier-) Sprache zulässig sind (sog. Terminalzeichen).

Zur Unterscheidung von den zugewiesenen Werten wird die Konstrukt-Bezeichnung in spitzen Klammern (< >) geschrieben.

Wertzuweisungen werden durch das Zeichen ::= angezeigt.

Alternativen werden durch den senkrechten Strich (|) getrennt.

– z.B.: <Ziffer> ::= 0|1|2|3|4|5|6|7|8|9.

(5)

Prof. Dr. A. Christidis • SS 2015

Syntax von Programmiersprachen

In der BNF können Definitionen rekursiv erfolgen

z.B.: Variablen-Name in C, beginnend mit einem Buchstaben oder Unterstrich und bestehend aus Buchstaben, Unterstrichen oder Ziffern – nach Def. von <Buchstabe>:

<Name> ::= (<Buchstabe> | _) | <Name> <Buchstabe>

| <Name> _ | <Name> <Ziffer>

Die erweiterte BNF (extended BNF, EBNF)

- schließt nicht die Metavariablen (in spitzen Klammern < >), sondern die Terminalsymbole (in Anführungsstrichen " ") ein

- vereinfacht die Notation durch Verwendung unterschiedlicher Klammerarten.

Mit der EBNF werden Programmiersprachen durch eine Sammlung von Regeln, sog. Produktionen, spezifiziert.

Die Gesamtheit aller Produktionen einer Sprache wird als ihre Grammatik bezeichnet.

(6)

Prof. Dr. A. Christidis • SS 2015

Syntax von Programmiersprachen

In der BNF können Definitionen rekursiv erfolgen, z.B.: Variablen- Name in C, beginnend mit einem Buchstaben oder Unterstrich und bestehend aus Buchstaben, Unterstrichen oder Ziffern – z.B. (nach Def. von <Buchstabe>):

<Name> ::= (<Buchstabe> | _) | <Name> <Buchstabe>

| <Name> _ | <Name> <Ziffer>

Die erweiterte BNF (extended BNF, EBNF)

- schließt nicht die Metavariablen (in spitzen Klammern < >), sondern die Terminalsymbole (in Anführungsstrichen " ") ein

- vereinfacht die Notation durch Verwendung unterschiedlicher Klammerarten .

Mit der EBNF werden Programmiersprachen durch eine Sammlung von Regeln, sog. Produktionen, spezifiziert.

Die Gesamtheit aller Produktionen einer Sprache wird als ihre Grammatik bezeichnet.

(7)

Prof. Dr. A. Christidis • SS 2015

Syntax von Programmiersprachen

In der EBNF verwendete Zeichen und Ihre Bedeutung:

Beispiel: Variablen-Name in C (s.o.) in der EBNF:

Name ::= (Buchstabe|"_"){Buchstabe |"_"| Ziffer}.

Zeichen Bedeutung

::= (auch =) ist definiert als

| oder (alternativ)

. Ende der Produktion

[X] 0 oder 1 Instanz von X

{X} 0 oder mehrere Instanzen von X (X|Y) Gruppierung: X oder Y

"XY" Terminalzeichen XY

MetaVariable Nichtterminalzeichen MetaVariable

(8)

Prof. Dr. A. Christidis • SS 2015

Syntax von Programmiersprachen

Wichtige Elemente zur grafischen Syntaxdarstellung in EBNF:

Beispiel: Variablen-Name in C

Name ::= (Buchstabe|"_"){Buchstabe |"_"| Ziffer}.

Definition

:

Terminalzeichen

Nichtterminalzeichen

Name :

Alternativen

Buchstabe

"_"

Buchstabe Ziffer

"_" railroad diagram

Referenzen

ÄHNLICHE DOKUMENTE

Die Nutzung ist nur für den genannten Zweck gestattet, nicht jedoch für einen weiteren kommerziellen Gebrauch, für die Weiterleitung an Dritte oder für die Veröffentlichung

[r]

[r]

Dem Kind werden die Wörter langsam vorgelesen und es muss sagen, welchen Buchstaben es vor einem bestimmten Buchstaben gehört hat?. Welchen Buchstaben hörst du vor

Wenn ich im Winter ohne Schuhe draußen spiele ist es mir noch Wenn ich im Winter nur in Badebekleidung draußen spiele ist es mir?. Das Gegenteil von kalt

© Jennifer Fell Arbeitsblatt AS Welcher Buchstabe

Zu jedem Buchstaben und zu jeder Zahl gibt es aus der Welt der Kinder eine passende spannende fantasiereiche Geschichte (von Barbara Berger) und eine kreative originelle Zeichen-

Rückenschreiben: mit dem Finger auf dem Rücken des Kindes Buchstaben oder kurze Wörter schreiben, es soll raten was es war. Buchstaben oder Wörter mit kleinen