Grundlagen der Informatik I (Studiengang

Werbung
Grundlagen der Informatik I
(Studiengang Medieninformatik)
Thema: 3. Datentypen, Datenstrukturen und imperative
Programme
Prof. Dr. S. Kühn
Fachbereich Informatik/Mathematik
Email: [email protected]
Beispiele für Algorithmen
 Algorithmus zur Division von zwei Zahlen. (Ein robuster
Algorithmus muss den Fall der Division durch Null
berücksichtigen).
 Verfahren zur Bestimmung des größten gemeinsamen Teilers
(ggT) zweier natürlicher Zahlen.
 Verfahren zur Auswertung des geklammerten Ausdrucks
(a+b)*c. Hier kann man einen nicht-deterministischen
Algorithmus konstruieren, der bei gleichen Eingabewerten a, b
und c unterschiedlich abläuft, aber dennoch immer das gleiche
Ergebnis liefert. Hinweis: (a+b)*c=a*c+b*c.
05.10.2015
GDI - 3. imperative Programme
2
Beispiele für Algorithmen (2)
 Ein Algorithmus zur Bestimmung der Lösungsmenge der
quadratischen Gleichung ax2 +bx+c=0 muss für alle reellwertigen
Parameter a,b und c korrekt arbeiten, also auch den Fall von
nicht-reellen Lösungen berücksichtigen.
 Ein Algorithmus zur Berechnung von π kann nicht dynamisch finit
sein, die produzierte Darstellung von π besitzt ja unendlich viele
Stellen.
05.10.2015
GDI - 3. imperative Programme
3
Vom Problem zur Berechnung einer Lösung
Problemformulierung
Problem
Problemanalyse,-abstraktion
Problemspezifikation
Algorithmenentwurf
Algorithmus
Verifikation, Komplexitätsanalyse
Algorithmus
Programmkonstruktion
Programm (z.B. C)
Eingabe
Compiler (Übersetzer)
Assembler/ Maschinenprogramm
05.10.2015
Ablauf des Maschinenprogramm
GDI - 3. imperative Programme
4
Algorithmus
 Ein Algorithmus ist unabhängig von der Umsetzung im
Rechner !
Beispiele
 Man formuliere einen Algorithmus zum Durchlaufen des
Studiums
 Ein Algorithmus zum Erstellen eines Apfelkuchens heißt
Backrezept
 Partitur
 Spielanleitung
 Umwandlung von Dezimal- in Dualzahlen
05.10.2015
GDI - 3. imperative Programme
5
3.2 Algorithmus – Darstellung (I)
 Abstraktion und Algorithmenbeschreibungssprachen
 Vom Maschinenprogramm zum Assemblerprogramm (logische
Bezeichner für Operationscode, logische Adressen)
 Abstraktion in höheren Programmiersprachen durch Verzicht auf
Sprungbefehle und Sprungziele  Einführung von
Kontrollstrukturen wie Iteration, Alternative und Sequenz
 Durch Abstraktion gelangt man zu höheren Programmiersprachen
und graphischen Sprachen als Algorithmenbeschreibungssprachen!
 Darstellung eines Algorithmus
 natürlichsprachlich (detailliert und explizit)
 graphisch: Flußdiagramme, Struktogramme, ...
 Pseudo-Code
 Formale Sprache
05.10.2015
GDI - 3. imperative Programme
6
Algorithmus – Darstellung (II)
 Natürlichsprachlich
1
// Berechne den ggT von a und b
2
Weise x den Wert von a zu
3
Weise y den Wert von b zu
4
Ist x ungleich y, weiter bei 5, sonst gehe zu
10
5
Ist x größer oder gleich y, weiter bei 6,
sonst gehe zu 8
6
Weise x den Wert von (x – y) zu
7
Gehe zu 9
8
Weise y den Wert von (y – x) zu
9
Gehe zu 4
10
Weise ggT den Wert von x zu
05.10.2015
GDI - 3. imperative Programme
7
Algorithmus – Darstellung (III)
 Flußdiagramm DIN 66001
Vereinfachung
Elemente
Weise a den Wert von b zu
a := b
Aktion
ja
Bedingung
Eingabe
nein
Ausgabe
Anfang
Ende
05.10.2015
GDI - 3. imperative Programme
8
Algorithmus – Darstellung (IV)
 Struktogramme / Nassi-Shneider-Diagramme
05.10.2015
GDI - 3. imperative Programme
9
Algorithmus – Darstellung (V)
{
Anweisung_1
Anweisung_2
...
Anweisung_n
 Pseudo-Code
Sequenz
}
Iteration
Verzweigung
05.10.2015
while Bedingung {
Anweisung_1
...
Anweisung_n
}
if Bedingung {
Anweisung_1
...
Anweisung_n
}
else {
Anweisung_m
...
Anweisung_k
}
GDI - 3. imperative Programme
10
Algorithmus - Beispiel
Euklidischer Algorithmus für ggT in C
 Finde den größten gemeinsamen Teiler der beiden natürlichen
Zahlen a und b
Euklid {
x = a;
y = b;
while x != y {
if x > y {
x = x – y;
}
else {
y = y – x;
}
}
return x;
}
05.10.2015
GDI - 3. imperative Programme
11
Algorithmus
Imperative Algorithmen
 Berechnung geschieht durch die Veränderung des Speichers
 Variablen (Container/Speicher mit Datentyp) sind Abstraktion des
Speichers
 Veränderung von Variablen
 Auswertung eines Ausdrucks
 Speichern des Ergebnisses
 Zuweisung des Wertes des Ausdrucks an eine Variable
 Verwendung von Kontrollstrukturen
 S.a. Pseudo-Code
 Sequenz
 Alternative
 Iteration
05.10.2015
GDI - 3. imperative Programme
12
3.3 Variablen, Anweisungen und Ausdrücke
05.10.2015
GDI - 3. imperative Programme
13
Variablen
Variablen
-
-
Eine Variable dient zum Speichern von Informationen
Sie wird durch einen einzigartigen Namen gekennzeichnet
Darf nicht mit einer Ziffer beginnen
Darf kein Leerzeichen enthalten
Kann aus Buchstaben, Ziffern und Underscore (_) bestehen
Jede Variable ist von einem bestimmten Typ (Datentyp: Text, ganze
Zahl etc.)
Jede Variable wird am Anfang des Programms (Procedure) deklariert
Beispiele
Modula 2
vs.
C:
int temp;
float x;
05.10.2015
GDI - 3. imperative Programme
14
Ausdruck
 Ausdruck
 Zusammenfassung von mehreren Operationen, Variablen oder
Elementen eines Datentyps
 Def.: Ausdruck
 Ist v eine Variable vom Typ D, so ist v auch ein Ausdruck vom Typ D
 Ist k eine Konstante vom Typ D, so ist k auch ein Ausdruck vom Typ
D
 Sind t1, ..., tn Ausdrücke der Typen D1, ...,Dn und ist f:D1x...xDn  D,
so ist auch f(t1,...,tn) ein Ausdruck vom Typ D
 Wert eines Ausdrucks
 Evaluierung
05.10.2015
GDI - 3. imperative Programme
15
Zuweisungen
 Aufbau einer Zuweisung (Assignement)
 Basisform in EBNF:
Assignment ::= Ident “=“ Expr
 Linke Seite enthält Ziel der Zuweisung - eine Variable (Identifier;
Bezeichner).
 Rechte Seite enthält Wert der Zuweisung (Expression; Ausdruck).
 Zuweisungssymbol in C ist “=“.
 Beispiel:
sum = sum + zähler
 Lies nicht „sum ist …“ sondern „sum wird zu …“ oder „sum ergibt sich
aus …“.
 Regel: Typen müssen zuweisungskompatibel sein
 Linker Typ und rechter Typ sind gleich (z.B. Integer – bzw. int) oder
 Linker Typ schließt rechten Typ ein (Typhierarchie), z.B. long int  int.
05.10.2015
GDI - 3. imperative Programme
16
Beispiel
 Vertauschen der Werte zweier Variablen
05.10.2015
GDI - 3. imperative Programme
17
Herunterladen