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 -