1 Programmiersprachen

Werbung
1 Programmiersprachen
1.1
1
Meilensteine imperativer Programmiersprachen
(teilweise objektorientiert)
1960
1970
Fortran
Cobol
PL/I
Algol 60
Algol W
Simula 67
Pascal
C
1980
1990
2000
Smalltalk
Modula
Ada
C++
Eiffel
Java
C#
Algol 68
1.1 Grundelemente imperativer Algorithmen
Zur Erinnerung:
Funktionales Programm = Funktionsdefinition f x ... = ..... ,
Variable,
formale Argumente
i.a. abgestützt auf weitere g , h , ...
Programmausführung =
Auswertung eines Ausdrucks f a ...
Werte (Ausdrücke),
tatsächliche Arg.
1.1
3
Imperatives Programm = Folge von Anweisungen A1; A2; ...
(imperare (lat.) = befehlen)
Programmausführung =
Ausführung der Anweisungen,
bewirkt Effekte
durch Änderung von Zuständen
von Variablen (u.a.)
Achtung!
Anderer Variablenbegriff
als bei der funktionalen Programmierung:
Variable = Behälter, enthält einen Wert,
der durch einen anderen Wert ersetzt werden kann
1.1
4
1.1.1 Klassischer Algorithmusbegriff
abstrahiert von Rechner-Hardware und Programmiersprachen,
ist imperativ!
Algorithmus (algorithm) (nach Al-Khwarizmi, arab. Mathematiker, 9. Jhdt.)
ist Verfahren zur Lösung einer Klasse gleichartiger Probleme,
bestehend aus Einzelschritten, mit folgenden Eigenschaften:

Jeder Einzelschritt ist für die ausführende Instanz
unmittelbar verständlich und ausführbar.

Das Verfahren ist endlich beschreibbar.
[ Die Ausführung benötigt eine endliche Zeit („terminiert“).]
(kurz:
1.1
„ein allgemeines, eindeutiges, endliches Verfahren“)
5
genauer:
sequentieller Algorithmus (sequential algorithm):
bei der Ausführung striktes Nacheinander der Einzelschritte
nichtsequentieller Algorithmus (concurrent algorithm):
Ausführungsreihenfolge der Einzelschritte bleibt teilweise offen
deterministischer Algorithmus (deterministic algorithm):
bei der Ausführung ist der jeweils nächste Schritt
und sein Effekt eindeutig festgelegt (ist stets sequentiell)
nichtdeterministischer/stochastischer Algorithmus:
sonst
1.1
6
Klassisches Beispiel:
Euklidischer Algorithmus (nach Euklid, griech. Mathematiker, ******)
zur Bestimmung des größten gemeinsamen Teilers
zweier natürlicher Zahlen
Aber z.B. auch: - Kochrezepte,
- Strickmusteranleitungen,
- u.ä.
☛ Natürlicher Bezug zur Funktionsweise von Rechnern,
die schrittweise Maschinenbefehle (Instruktionen) ausführen.
1.1
7
1.1.2 Einfache und zusammengesetzte Datentypen
Programme operieren auf Daten.
Ein Datenwert - kurz Wert (value) - hat einen bestimmten
Datentyp
- kurz Typ (type) - z.B. „Zahl“, „Zeichenfolge“, ...
Einfache Typen/Werte (simple, unstructured types/values):
Wert ist unteilbar, kann allenfalls als Ganzes kopiert werden.
Beispiele: Zahl, Zeichen.
Zusammengesetzte Typen/Werte (composite, structured types/values):
Wert ist aus mehreren, einzeln manipulierbaren Teilwerten
zusammengesetzt, die wiederum einfach oder zusammengesetzt
sein können: rekursives Bauprinzip, erlaubt beliebig komplexe Typen.
Beispiele: Zahlenpaar, Zahlenmenge, Zeichenfolge.
1.1
8
1.1.3 Einfache und zusammengesetzte Ausdrücke
Zu den Elementen eines Programmtextes gehören u.a.
Wertbezeichner (denotation, literal), z.B. 4711
Variablenname (variable identifier/name), z.B. counter
Konstantenname (constant identifier/name), z.B. PI
... (weitere)
Sammelbegriff für diese ist:
Einfacher Ausdruck (simple expression)
1.1
9
Zusammengesetzter Ausdruck (composite expression) besteht aus
☛ Operator, z.B. + ,
☛ Operanden, das sind einfache oder zusammengesetzte Ausdrücke,
☛ evtl. Klammern.
Beispiele: arithmetischer Ausdruck:
bedingter Zeichenausdruck:
Achtung:
(x+y)·sin(a)
WENN klein
DANN ‘c‘ SONST ‘C‘
Auswertung eines Ausdrucks liefert einen Wert
eines bestimmten Typs (oben „Zahl“ bzw. „Zeichen“).
Auswertung kann zusätzlich Effekt(e) bewirken !
1.1
10
(Zentraler Begriff der imperativen Programmierung:)
Variable (variable)
(1) ist Behälter für einen Wert
(2) ist benannt,
(3) ist getypt;
(4) der enthaltene Wert ist ersetzbar.
( Konstante (constant) desgl. ohne (4) )
Ersetzung des Werts einer Variablen durch einen neuen Wert heißt
Zuweisung (oder „Überschreiben“)
Beispiel: SETZE x AUF pi (alter x-Wert geht verloren)
1.1
11
1.1.4 Einfache und zusammengesetzte Anweisungen
Anweisung (statement)
- wird ausgeführt,
- bewirkt einen Effekt
- (liefert keinen Wert!)
Einfache Anweisungen (simple/primitive statements):
☛
☛
☛
☛
1.1
Zuweisung,
Aufruf,
Sprung,
...
12
Zusammengesetzte Anweisung
besteht aus
(composite statement,
control structure)
[Achtung schlechte Übersetzung:„Kontrollstruktur“]
☛ Ausdrücken,
☛ einfachen oder zusammengesetzten Anweisungen,
☛ Beschreibung der Art der Zusammensetzung.
(z.B. Fallunterscheidung, Wiederholung, ...)
Beispiel Fallunterscheidung: WENN a<0, DANN SETZE sign AUF -1,
WENN a=0, DANN SETZE sign AUF 0,
WENN a>0, DANN SETZE sign AUF +1.
1.1
13
Herunterladen