2. Syntax und Semantik von Programmiersprachen

Werbung
n  1. Der Begriff „Informatik“
n  2. Syntax und Semantik von Programmiersprachen
I.2.
I.2.
Grundlagen
Grundlagen
von
von
Programmiersprachen.
Programmiersprachen - 1 -
1. Der Begriff „Informatik“
n  "Informatik" = Kunstwort aus Information und Mathematik
l  Wissenschaft der Informationsverarbeitung mit großer Nähe zur
Mathematik
n  Hauptaufgabe der Informatik
l  Entwicklung formaler, maschinell ausführbarer Verfahren zur
Lösung von Problemen der Informationsverarbeitung
n  Forderung der Durchführbarkeit mittels einer Maschine:
l  Informationen müssen als maschinell verarbeitbare Daten dargestellt
werden
l  Lösungsverfahren müssen bis ins Detail formal beschrieben werden.
I.2. Grundlagen von Programmiersprachen - 2 -
Algorithmus
n  Ein Algorithmus ist ein Verfahren, welches
l  in einem endlichen Text niedergelegt werden muss
l  effektiv (durch eine Maschine ) ausgeführt werden kann
l  aus (direkt maschinell ausführbaren) Elementaroperationen besteht und
eindeutig festlegt, welche Elementaroperation als nächstes auszuführen ist
(Determinismus)
l  Ein- und Ausgabe ermöglicht, wobei jeder Eingabe genau eine Ausgabe
zugeordnet wird (Determiniertheit)
n  Anzahl und Ausführungszeit der Elementaroperationen sind
beschränkt.
n  Ein Algorithmus (Programm) wird durch eine Maschine
schrittweise ausgeführt
l  Die ausführende Instanz muss die Vorschrift interpretieren und korrekt
ausführen.
l  Ein Algorithmus terminiert, wenn er nach endlich vielen Schritten abbricht.
I.2. Grundlagen von Programmiersprachen - 4 -
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.
I.2. Grundlagen von Programmiersprachen - 5 -
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.
I.2. Grundlagen von Programmiersprachen - 6 -
Fragen
n  Wie kann man aus einer Lösungsidee einen Algorithmus
konstruieren?
l  "schrittweise Programmentwicklung"
n  Wie zeigt man, dass ein Algorithmus tatsächlich das tut,
was er tun soll?
l  Verifikation: partielle Korrektheit
l  Terminierung
n  Wie "gut" ist ein Algorithmus?
l  Speicherverbrauch, benötigte Zeit (Effizienz)
l  Aufwandsabschätzungen
I.2. Grundlagen von Programmiersprachen - 7 -
n  1. Der Begriff „Informatik“
n  2. Syntax und Semantik von Programmiersprachen
I.2.
I.2.
Grundlagen
Grundlagen
von
von
Programmiersprachen.
Programmiersprachen - 8 -
2. 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);
}
}
I.2. Grundlagen von Programmiersprachen - 9 -
Programmiersprachen
n  Die Programmiersprache bildet die Schnittstelle zwischen
Mensch und Rechner
Programmiersprache
Rechner
Beide haben unterschiedliche Anforderungen
l  Mensch
w  Erlernbarkeit
Höhere Programmiersprachen
w  Lesbarkeit
w  Ausdrucksstärke
l  Rechner
w  einfaches Übersetzen in Maschinensprache
w  Generierung von effizientem Code
Maschinensprachen
I.2. Grundlagen von Programmiersprachen - 10 -
Kenntnis verschiedener Sprachen
n  Eigene Ideen bei der Software-Entwicklung
können besser ausgedrückt werden
n  Nötig, um in konkreten Projekten geeignete
Sprache auszuwählen
n  Erleichtert das Erlernen weiterer
Programmiersprachen
n  Nötig für den Entwurf neuer
Programmiersprachen
I.2. Grundlagen von Programmiersprachen - 11 -
Übersicht
Imperative Sprachen
l  Folge von nacheinander
ausgeführten Anweisungen
n  Prozedurale Sprachen
l  Variablen, Zuweisungen,
Kontrollstrukturen
n  Objektorientierte Sprachen
l  Objekte und Klassen
l  ADT und Vererbung
Deklarative Sprachen
l  Spezifikation dessen, was
berechnet werden soll
l  Festlegung, wie Berechnung
verläuft durch Compiler
n  Funktionale Sprachen
l  keine Seiteneffekte
l  Rekursion
n  Logische Sprachen
l  Regeln zur Definition von
Relationen
I.2. Grundlagen von Programmiersprachen - 13 -
Wichtige Programmiersprachen
1950
Fortran
1960
Cobol
Algol 60
PL/1
1970
Lisp
Simula
Algol 68
Pascal
Smalltalk
C
1980
Scheme
Prolog
ML
Ada
C++
Eiffel
Modula-3
1990
Ada-95
Miranda
Java
2000
Python
Haskell
Scala
prozedural
objektorientiert
funktional
logisch
I.2. Grundlagen von Programmiersprachen - 14 -
Populäre Programmiersprachen
Quelle: www.tiobe.com, Oct. 2015
I.2. Grundlagen von Programmiersprachen - 15 -
Programmiersprachen - Definition
n  Programmiersprachen sind Sprachen, deren Syntax und
Semantik genau festgelegt ist.
n  Syntax:
l  Definition aller zulässigen Wörter / Programme, die in einer Sprache
formuliert werden können
n  Semantik:
l  Bedeutung der zulässigen Wörter / Programme
l  Syntaktisch falsche Wörter / Programme haben keine Semantik
I.2. Grundlagen von Programmiersprachen - 16 -
Herunterladen