1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

Ähnliche Dokumente
1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen.

7. Formale Sprachen und Grammatiken

Kapitel 2. Methoden zur Beschreibung von Syntax

Formale Sprachen und Grammatiken

Grundlagen der Informatik II. Teil I: Formale Modelle der Informatik

Programmiersprachen. Organisation und Einführung. Berthold Hoffmann. Studiengang Informatik Universität Bremen

SWE1 / Übung 2 ( )

Programmierkurs II. C und Assembler

Modellierung und Programmierung 1

1. Einführung Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi

Java für Anfänger Teil 2: Java-Syntax. Programmierkurs Manfred Jackel

Kapitel 2: Formale Sprachen Gliederung. 0. Grundbegriffe 1. Endliche Automaten 2. Formale Sprachen 3. Berechnungstheorie 4. Komplexitätstheorie

Objektorientierte Programmierung. Kapitel 3: Syntaxdiagramme und Grammatikregeln

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 1. Einführung und Grundbegriffe

II.1.1. Erste Schritte - 1 -

2 Grundlagen der Programmierung

Programmieren I. Formale Sprachen. Institut für Angewandte Informatik

Java für Anfänger Teil 2: Java-Syntax. Programmierkurs Manfred Jackel

Grundlagen der Informatik für Ingenieure I

Syntax (= Satzgefüge), vgl. auch Grammatik

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008

Ein erstes Java-Programm

JAVA als erste Programmiersprache Semesterkurs

Compiler, Übersetzer. Allgemeine Erklärung / Definition

Einführung in die Programmierung WS 2014/ Algorithmus, Berechenbarkeit und Programmiersprachen 2-1

Sprachbeschreibung und Erweiterung

Formale Sprachen, reguläre und kontextfreie Grammatiken

Was ist ein Compiler?

Softwaretechnik. Wesentliche Inhalte der Vorlesung

Stichworte zur Ideengeschichte der Programmiersprachen

Compiler. Die unsichtbaren Diener Der Compiler und seine Artgenossen. Laszlo Böszörmenyi Compiler 1/ 22

Einleitung und Begriffliches. Einleitung. Programmiersprachen. Software-Komplexität ist inhärent und hat vor allem folgende Ursachen

1 Syntax von Programmiersprachen

Java Schulung. Objektorientierte Programmierung in Java. Prof. Dr. Nikolaus Wulff

Einführung in die Programmierung mit Java

Syntaxanalyse Ausgangspunkt und Ziel

4. 4. Algorithmen und Datenstrukturen in deskriptiven Programmiersprachen

4 Ausklang. ALP 2, Hannes Federrath, Sommersemester 2001

Funktionale Programmierung (in Clojure)

Formale Sprachen und Automaten

Grundlagen der Programmierung UE

Formale Sprachen. Eine Einführung. Tim Lethen Düsseldorf Version II (04-06)

1. Formale Sprachen 1.2 Grammatiken formaler Sprachen

Grundlagen der Programmierung UE

In den weiterführenden Vorlesungen

6 Kontextfreie Grammatiken

Die Programmiersprache C Eine Einführung

Informatik Java-Programmierkurs im Rahmen der Berufs- u. Studienorientierung für Schüler. Joliot-Curie-Gymnasium GR 2010 Nico Steinbach

Kapitel 5: Abstrakte Algorithmen und Sprachkonzepte. Elementare Schritte

12. Rekursion Grundlagen der Programmierung 1 (Java)

Programmiersprachen und Übersetzer

JAVA - Methoden

Grundbegriffe der Informatik

Einführung in die Programmierung mit Java

Semantik von Programmiersprachen

Einführung in die Informatik Grammars & Parsers

Rekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Einführung in die Informatik 1

Der Begriff Informatik

Programmierkurs Python I

Grammatiken in Prolog

ARBEITSBLATT ZU FORMALEN SPRACHEN

Einführung in die Programmierung mit Java

Programmieren für Fortgeschrittene

Einführung in die Programmiertechnik

Theoretische Grundlagen der Informatik

Einführung in die Programmierung mit Java

Grundlagen der Informatik I (Studiengang Medieninformatik)

Theoretische Informatik 2 (WS 2006/07) Automatentheorie und Formale Sprachen 19

Informatik I WS 07/08 Tutorium 24

Satz 90 Sei A = (Q, Σ, δ, q 0, F ) ein DFA. Der Zeitaufwand des obigen Minimalisierungsalgorithmus ist O( Q 2 Σ ).

Theorie der Informatik

Ein Ausflug in den Compilerbau

Java I Vorlesung 1 Einführung in Java

Programmiersprachen und Programmierkonzepte

Vorkurs Informatik WiSe 15/16

EINI WiMa/LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12

Grundlagen der Informatik Grundlagen der Programmierung

Informatik ist viel mehr als Delphi-Programmierung!

Einführung in die Programmierung mit Java

Kapitel 11: Wiederholung und Zusammenfassung

Grundbegriffe der Informatik

Objektorientierte Programmierung

Programmieren was ist das genau?

Pragmatik von Programmiersprachen

Grundlagen der Informatik

Prof. Dr.-Ing. Dietrich Schröder GIS und Programmiersprachen: Wohin geht die Reise?

Repetitorium Informatik (Java)

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays)

FORMALE SYSTEME. Sprachen beschreiben. Wiederholung. Wie kann man Sprachen beschreiben? 2. Vorlesung: Grammatiken und die Chomsky-Hierarchie

Automaten und Formale Sprachen

Ausgewählte unentscheidbare Sprachen

Einführung in die Programmierung

Probeklausur: Programmierung WS04/05

Informatik Programmiersprachen eine kurze Übersicht

Java Einführung Programmcode

Abstrakte Algorithmen und Sprachkonzepte

Einführung in die Programmierung

Notation um Grammatik G hervorzuheben: Eine kontextfreie Grammatik erzeugt eine kontextfreie Sprache. Informatik I -1- WS 2005/2006

Einführung in die Informatik

Transkript:

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 -

1. Der Begriff Informatik "Informatik" = Kunstwort aus Information und Mathematik Wissenschaft der Informationsverarbeitung mit großer Nähe zur Mathematik Hauptaufgabe der Informatik Entwicklung formaler, maschinell ausführbarer Verfahren zur Lösung von Problemen der Informationsverarbeitung Forderung der Durchführbarkeit mittels einer Maschine: Informationen müssen als maschinell verarbeitbare Daten dargestellt werden Lösungsverfahren müssen bis ins Detail formal beschrieben werden. - 2 -

Deterministischer Algorithmus Berechnung von x-y 1. Lies Eingaben x und y. 2. Falls x y: Weiter mit Schritt 3. Falls x > y: Weiter mit Schritt 4. 3. Berechne a = y - x. Weiter mit Schritt 5. 4. Berechne a = x - y. 5. Gib a aus. - 4 -

Indeterministischer Algorithmus Berechnung von x-y 1. Lies Eingaben x und y. Weiter mit Schritt 2 oder Schritt 3. 2. Berechne a = x - y. Weiter mit Schritt 4. 3. Berechne a = y - x. 4. Falls a 0: Gib a aus. Falls a < 0: Gib -a aus. - 5 -

Fragen Wie kann man aus einer Lösungsidee einen Algorithmus konstruieren? "schrittweise Programmentwicklung" Wie zeigt man, dass ein Algorithmus tatsächlich das tut, was er tun soll? Verifikation: partielle Korrektheit Terminierung Wie "gut" ist ein Algorithmus? Speicherverbrauch, benötigte Zeit (Effizienz) Aufwandsabschätzungen - 6 -

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 7 -

. Syntax & Semantik von Programmiersprachen Ein erstes Java-Programm: public class Rechnung { } public static void main (String [] arguments) { } int x, y; x = 10; y = 23 * 33 + 3 * 7 * (5 + 6); System.out.print ("Das Resultat ist "); System.out.println (x + y); - 8 -

Programmiersprachen Die Programmiersprache bildet die Schnittstelle zwischen Mensch und Rechner Programmiersprache Rechner Beide haben unterschiedliche Anforderungen Mensch Erlernbarkeit Lesbarkeit Ausdrucksstärke Rechner einfaches Übersetzen in Maschinensprache Generierung von effizientem Code Höhere Programmiersprachen Maschinensprachen - 9 -

Kenntnis verschiedener Sprachen Eigene Ideen bei der Software-Entwicklung können besser ausgedrückt werden Nötig, um in konkreten Projekten geeignete Sprache auszuwählen Erleichtert das Erlernen weiterer Programmiersprachen Nötig für den Entwurf neuer Programmiersprachen - 10 -

Übersicht Imperative Sprachen Deklarative Sprachen Folge von nacheinander ausgeführten Anweisungen Spezifikation dessen, was berechnet werden soll Festlegung, wie Berechnung verläuft durch Compiler Prozedurale Sprachen Variablen, Zuweisungen, Kontrollstrukturen Funktionale Sprachen keine Seiteneffekte Rekursion Objektorientierte Sprachen Objekte und Klassen ADT und Vererbung Logische Sprachen Regeln zur Definition von Relationen - 11 -

Wichtige Programmiersprachen 1950 1960 Fortran Cobol Algol 60 Lisp 1970 1980 1990 PL/1 Pascal Ada Algol 68 C Modula-3 Simula Smalltalk C++ Ada-95 Java Eiffel Python Scheme ML Miranda Haskell Prolog 2000 Scala prozedural objektorientiert funktional logisch - 12 -

Programmiersprachen - Definition Programmiersprachen sind Sprachen, deren Syntax und Semantik genau festgelegt ist. Syntax: Definition aller zulässigen Wörter / Programme, die in einer Sprache formuliert werden können Semantik: Bedeutung der zulässigen Wörter / Programme Syntaktisch falsche Wörter / Programme haben keine Semantik - 13 -

Alphabet Alphabet, formale Sprache nichtleere endliche Menge von Zeichen ( Buchstaben, Symbole) Wort über einem Alphabet endliche Folge von Buchstaben, die auch leer sein kann ( leeres Wort) A* bezeichnet die Menge aller Wörter über dem Alphabet A (inkl. dem leeren Wort) Formale Sprache Sei A ein Alphabet. Eine (formale) Sprache (über A) ist eine beliebige Teilmenge von A*. Endliche Beschreibungsvorschrift für unendliche Sprachen Grammatik, die Sprache erzeugt, oder Automat, der Sprache erkennt - 14 -

Grammatik - informell Definiert Regeln, die festlegen, welche Wörter über einem Alphabet zur Sprache gehören und welche nicht. Beispiel: Grammatik für "Hund-Katze-Sätze" 1 Satz Subjekt Prädikat Objekt 2 Subjekt Artikel Attribut Substantiv 3 Artikel 4 Artikel der 5 Artikel die 6 Artikel das 7 Attribut 8 Attribut Adjektiv 9 Attribut Adjektiv Attribut 10 Adjektiv kleine 11 Adjektiv bissige 12 Adjektiv große 13 Substantiv Hund 14 Substantiv Katze 15 Prädikat jagt 16 Objekt Artikel Attribut Substantiv - 16 -

Kontextfreie Grammatik / Sprache Produktionsregeln: A y A N, y V* d.h.: Links steht genau ein Nichtterminalsymbol Wichtigste Klasse zur formalen Beschreibung der Syntax von Programmiersprachen. Es ist möglich, Automaten zu bauen, die Wörter einer kontextfreien Sprache erkennen (Wortproblem) und ihre syntaktische Struktur analysieren (Compilerbau) Notationen zur Darstellung kontextfreier Grammatiken Syntaxdiagramme Extended Backus-Naur-Form (EBNF) - 21 -

Sei G = (N, T, P, S) mit N = {A, B} Grammatik - Beispiel T = {a, b, c, d} P = { A abbc, B abb, abb d } S = A n n L(G) = { a d b c n 0} G ist keine kontextfreie Grammatik, da die dritte Produktionsregel auf der linken Seite mehr als nur das Nichtterminalsymbol B enthält. Ersetzt man in G die Produktionen P durch P', dann ist G' kontextfrei. Es gilt L(G) = L(G'). P' = { A Bc, B abb, B d } - 22 -

EBNF EBNF (Extended Backus-Naur-Form) kompaktere Repräsentation kontextfreier Grammatiken BNF erstmals benutzt zur Definition der Sprache Algol-60 EBNF-Notation = definiert als (......) genau eine Alternative aus der Klammer muss kommen [... ] Inhalt der Klammer kann kommen oder nicht {... } Inhalt der Klammer kann n-fach kommen, n 0 Terminalsymbole werden in " " eingeschlossen - 23 -

Beispiel - Grammatik 1 Satz Subjekt Prädikat Objekt 2 Subjekt Artikel Attribut Substantiv 3 Artikel 4 Artikel der 5 Artikel die 6 Artikel das 7 Attribut 8 Attribut Adjektiv 9 Attribut Adjektiv Attribut 10 Adjektiv kleine 11 Adjektiv bissige 12 Adjektiv große 13 Substantiv Hund 14 Substantiv Katze 15 Prädikat jagt 16 Objekt Artikel Attribut Substantiv - 24 -

Syntaxdiagramme - 1 Syntaxdiagramme (beschreiben Produktionen grafisch) Nichtterminalsymbole sind Rechtecke Terminalsymbole sind rund / oval Subjekt Artikel Attribut Substantiv Artikel der die das Attribut Adjektiv - 26 -

Syntaxdiagramme - 2 Attribut Adjektiv Alternative: Rekursives Syntaxdiagramm Attribut Adjektiv Attribut - 27 -