Folien zur Vorlesung - Hochschule Magdeburg-Stendal
Folien zur Vorlesung - Hochschule Magdeburg-Stendal
Folien zur Vorlesung - Hochschule Magdeburg-Stendal
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Programmieren<br />
Praktische Informatik II<br />
Prof. Dr. Erwin J.G. Albers<br />
HS <strong>Magdeburg</strong>/<strong>Stendal</strong><br />
Praktische Inform atik II<br />
PI- 1<br />
© 2001 by Prof. Dr. Erw in J. G. Albers<br />
HS <strong>Magdeburg</strong>/<strong>Stendal</strong>, Tel. +49 391 886 4382
Programmieren mit dem Hamster<br />
Einführung<br />
l Algorithmen<br />
u Arbeitsanleitung<br />
n umgangssprachliche Formulierung<br />
n Programmablaufplan<br />
n Struktogramm<br />
u Eigenschaften<br />
n Eindeutigkeit, Parametrisierbarkeit, Finitheit, Ausführbarkeit,<br />
Terminierung, Determiniertheit, Determinismus<br />
n Effizienz, Speicherbedarf, Erweiterbarkeit, Wiederverwendbarkeit,<br />
Portabilität, Zuverlässigkeit<br />
Praktische Inform atik II<br />
PI- 2<br />
© 2001 by Prof. Dr. Erw in J. G. Albers<br />
HS <strong>Magdeburg</strong>/<strong>Stendal</strong>, Tel. +49 391 886 4382
Programmieren mit dem Hamster<br />
Einführung<br />
l Programmiersprachen<br />
u Klassifikation<br />
n Maschinenorientierte Sprachen<br />
n Imperative Sprachen<br />
n Deskriptive Sprachen<br />
n Objektorientierte Sprachen<br />
u Definition<br />
n Lexikalik<br />
n Syntax<br />
n Semantik<br />
n Pragmatik<br />
u Syntaxdiagramme<br />
Praktische Inform atik II<br />
PI- 3<br />
© 2001 by Prof. Dr. Erw in J. G. Albers<br />
HS <strong>Magdeburg</strong>/<strong>Stendal</strong>, Tel. +49 391 886 4382
Programmieren mit dem Hamster<br />
Syntaxdiagramm „Menü“<br />
Menü<br />
Vorspeise<br />
Hauptgang<br />
Dessert<br />
Hauptgang<br />
Fleischgang<br />
Fischgang<br />
Praktische Inform atik II<br />
PI- 4<br />
© 2001 by Prof. Dr. Erw in J. G. Albers<br />
HS <strong>Magdeburg</strong>/<strong>Stendal</strong>, Tel. +49 391 886 4382
Übung Syntaxdiagramme<br />
Praktische Inform atik II<br />
PI- 5<br />
Kraftausdruck<br />
so'n<br />
Mist<br />
verdammter<br />
und<br />
auch<br />
Kraftausdruck<br />
Kraftausdruck<br />
Kraftausdruck<br />
Kraftausdruck<br />
l Welche der folgenden<br />
Ausdrücke sind syntaktisch<br />
korrekt?<br />
u verdammter Mist<br />
u so'n Mist<br />
u Mist und Mist<br />
u Mist verdammter<br />
u so'n verdammter Mist<br />
u Mist und Mist und so'n<br />
verdammter Mist auch<br />
u Mist und verdammter Mist<br />
auch<br />
u verdammter verdammter Mist<br />
und Mist<br />
© 2001 by Prof. Dr. Erw in J. G. Albers<br />
HS <strong>Magdeburg</strong>/<strong>Stendal</strong>, Tel. +49 391 886 4382
Programmieren mit dem Hamster<br />
Einführung<br />
l Programmentwicklung<br />
u Entwicklungsphasen<br />
n Analyse (Konzept)<br />
n Design (Entwurf)<br />
n Realisierung (Programmierung, Test)<br />
u Entwicklungswerkzeuge<br />
n Editor<br />
n Compiler (Übersetzer)<br />
n Linker (Binder)<br />
n Interpreter<br />
n Debugger<br />
n Integrierte Entwicklungsumgebung (IDE = integrated development<br />
environment)<br />
Praktische Inform atik II<br />
PI- 6<br />
© 2001 by Prof. Dr. Erw in J. G. Albers<br />
HS <strong>Magdeburg</strong>/<strong>Stendal</strong>, Tel. +49 391 886 4382
Programmieren mit dem Hamster<br />
Einführung<br />
l Aussagenlogik<br />
u Aussagen<br />
u Operatoren<br />
n Negation<br />
n Konjunktion<br />
n Disjunktion<br />
u Syntax<br />
u Äquivalenz von Aussagen<br />
u Gesetze<br />
n Assoziativgesetz<br />
n Kommutativgesetz<br />
n Distributivgesetz<br />
n Priorität<br />
n Tautologie<br />
Praktische Inform atik II<br />
PI- 7<br />
© 2001 by Prof. Dr. Erw in J. G. Albers<br />
HS <strong>Magdeburg</strong>/<strong>Stendal</strong>, Tel. +49 391 886 4382
Programmieren mit dem Hamster<br />
Syntaxdiagramm „boolscher Ausdruck“<br />
boolscher Ausdruck<br />
„Aussage“<br />
(<br />
<br />
boolscher<br />
Ausdruck<br />
boolscher<br />
Ausdruck<br />
)<br />
boolscher<br />
Ausdruck<br />
boolscher<br />
Ausdruck<br />
<br />
<br />
boolscher<br />
Ausdruck<br />
boolscher<br />
Ausdruck<br />
Praktische Inform atik II<br />
PI- 8<br />
© 2001 by Prof. Dr. Erw in J. G. Albers<br />
HS <strong>Magdeburg</strong>/<strong>Stendal</strong>, Tel. +49 391 886 4382
Programmieren mit dem Hamster<br />
Das Hamster-Modell<br />
l Komponenten<br />
u Feld *.feld<br />
n Mauer, Korn, Hamsterposition und -richtung<br />
u Hamster *.class<br />
n Laden, Start/Stop, Tod?<br />
u Editor *.ham<br />
n Editieren, Compilieren, Ausführen<br />
n Token, Trennzeichen = „white space“<br />
n Bezeichner<br />
n Schlüsselwörter: abstract, boolean, break, byte, case, catch, char,<br />
class,<br />
const, continue, default, do, double, else, extends, final, finally, float,<br />
for, goto, if, implements, import, instanceof, int, interface, long, native,<br />
new, null, package, private, protected, public, return, short, static,<br />
super, switch, synchronized, this, throw, throws, transient, try, void,<br />
volatile, while<br />
Praktische Inform atik II<br />
PI- 9<br />
© 2001 by Prof. Dr. Erw in J. G. Albers<br />
HS <strong>Magdeburg</strong>/<strong>Stendal</strong>, Tel. +49 391 886 4382
Programmieren mit dem Hamster<br />
Syntaxdiagramm „Grundbefehl“<br />
Grundbefehl<br />
vor ( ) ;<br />
linksUm<br />
nimm<br />
gib<br />
Praktische Inform atik II<br />
PI- 10<br />
© 2001 by Prof. Dr. Erw in J. G. Albers<br />
HS <strong>Magdeburg</strong>/<strong>Stendal</strong>, Tel. +49 391 886 4382
Programmieren mit dem Hamster<br />
Syntaxdiagramme „Programm I“<br />
Anweisung (1)<br />
Grundbefehl<br />
Anweisungssequenz<br />
Anweisung<br />
Programm (1)<br />
void<br />
main<br />
(<br />
)<br />
{<br />
Anweisungssequenz<br />
}<br />
Praktische Inform atik II<br />
PI- 11<br />
© 2001 by Prof. Dr. Erw in J. G. Albers<br />
HS <strong>Magdeburg</strong>/<strong>Stendal</strong>, Tel. +49 391 886 4382
Programmieren mit dem Hamster<br />
Kommentare<br />
l Bereichskommentare<br />
u Beginn mit /*, Ende mit */<br />
u mehrzeilig, freier Inhalt, keine Schachtelung<br />
l Zeilenkommentare<br />
u Beginn mit //, Ende mit Zeilenende<br />
u einzeilig, freier Inhalt<br />
l Dokumentation<br />
u Kommentar vor jedem Programm<br />
n Pragmatik, Autor, Datum, Version<br />
u Kommentar im Programm<br />
n Semantik, Algorithmen<br />
Praktische Inform atik II<br />
PI- 12<br />
© 2001 by Prof. Dr. Erw in J. G. Albers<br />
HS <strong>Magdeburg</strong>/<strong>Stendal</strong>, Tel. +49 391 886 4382
Programmieren mit dem Hamster<br />
Syntaxdiagramme „Prozeduren“<br />
Prozedurdefinition<br />
Prozedurkopf<br />
Prozedurrumpf<br />
Prozedurkopf<br />
void<br />
Prozedurname<br />
(<br />
)<br />
Prozedurname<br />
Bezeichner<br />
Prozedurrumpf<br />
{<br />
Anweisungssequenz<br />
}<br />
Praktische Inform atik II<br />
PI- 13<br />
© 2001 by Prof. Dr. Erw in J. G. Albers<br />
HS <strong>Magdeburg</strong>/<strong>Stendal</strong>, Tel. +49 391 886 4382
Programmieren mit dem Hamster<br />
Syntaxdiagramme „Prozeduraufruf“<br />
Prozeduraufruf<br />
Prozedurname ( ) ;<br />
Anweisung (2)<br />
Grundbefehl<br />
Prozeduraufruf<br />
Praktische Inform atik II<br />
PI- 14<br />
© 2001 by Prof. Dr. Erw in J. G. Albers<br />
HS <strong>Magdeburg</strong>/<strong>Stendal</strong>, Tel. +49 391 886 4382
Programmieren mit dem Hamster<br />
Syntaxdiagramme „Programm II“<br />
Programm (2)<br />
Definitionen<br />
main-Prozedur<br />
Definitionen<br />
Definitionen (1)<br />
Prozedurdefinition<br />
main-Prozedur<br />
void<br />
main<br />
(<br />
)<br />
Prozedurrumpf<br />
Praktische Inform atik II<br />
PI- 15<br />
© 2001 by Prof. Dr. Erw in J. G. Albers<br />
HS <strong>Magdeburg</strong>/<strong>Stendal</strong>, Tel. +49 391 886 4382
Programmieren mit dem Hamster<br />
Prozeduren<br />
l Vorteile von Prozeduren<br />
u Übersichtlichkeit<br />
u Modularisierung<br />
u Platzeinsparung<br />
u Fehlerbeseitigung<br />
u Flexibilität<br />
u Wiederverwendbarkeit<br />
l Konventionen<br />
u Name in Kleinbuchstaben bzw. Großbuchstaben statt Trennzeichen<br />
u Definition = Deklaration des Namens (Kopf) +<br />
Festlegung des Inhalts =Algorithmus (Rumpf)<br />
Praktische Inform atik II<br />
PI- 16<br />
© 2001 by Prof. Dr. Erw in J. G. Albers<br />
HS <strong>Magdeburg</strong>/<strong>Stendal</strong>, Tel. +49 391 886 4382
Programmieren mit dem Hamster<br />
Syntaxdiagramm „Testbefehl“<br />
Testbefehl<br />
vornFrei<br />
maulLeer<br />
kornDa<br />
boolsches Literal<br />
true<br />
false<br />
(<br />
)<br />
Praktische Inform atik II<br />
PI- 17<br />
© 2001 by Prof. Dr. Erw in J. G. Albers<br />
HS <strong>Magdeburg</strong>/<strong>Stendal</strong>, Tel. +49 391 886 4382
Programmieren mit dem Hamster<br />
Syntaxdiagramm „boolscher Ausdruck“<br />
boolscher Ausdruck<br />
Testbefehl<br />
(<br />
boolscher Ausdruck<br />
)<br />
<br />
boolscher Ausdruck<br />
boolscher Ausdruck<br />
<br />
boolscher Ausdruck<br />
boolscher Ausdruck<br />
boolsches Literal<br />
<br />
boolscher Ausdruck<br />
Praktische Inform atik II<br />
PI- 18<br />
© 2001 by Prof. Dr. Erw in J. G. Albers<br />
HS <strong>Magdeburg</strong>/<strong>Stendal</strong>, Tel. +49 391 886 4382
Programmieren mit dem Hamster<br />
Boolsche Ausdrücke<br />
l Eigenschaften<br />
u Priorität: ! vor && vor ||<br />
u Assoziativität: links<br />
u Auswertungsreihenfolge<br />
n a && b: b wird nur ausgewertet falls a wahr<br />
n a|| b: b wird nur ausgewertet falls a falsch<br />
Praktische Inform atik II<br />
PI- 19<br />
© 2001 by Prof. Dr. Erw in J. G. Albers<br />
HS <strong>Magdeburg</strong>/<strong>Stendal</strong>, Tel. +49 391 886 4382
Programmieren mit dem Hamster<br />
Diagramme „Block- und Leeranweisung“<br />
Blockanweisung<br />
{<br />
Anweisungssequenz<br />
}<br />
Leeranweisung<br />
;<br />
Anweisung (3)<br />
Grundbefehl<br />
Prozeduraufruf<br />
Blockanweisung<br />
Leeranweisung<br />
Praktische Inform atik II<br />
PI- 20<br />
© 2001 by Prof. Dr. Erw in J. G. Albers<br />
HS <strong>Magdeburg</strong>/<strong>Stendal</strong>, Tel. +49 391 886 4382
Programmieren mit dem Hamster<br />
Diagramme „Auswahlanweisung“<br />
bedingte Anweisung<br />
if (<br />
boolscher<br />
Ausdruck<br />
) Anweisung<br />
Alternativanweisung<br />
bedingte Anweisung else Anweisung<br />
Auswahlanweisung<br />
bedingte Anweisung<br />
Alternativanweisung<br />
Praktische Inform atik II<br />
PI- 21<br />
© 2001 by Prof. Dr. Erw in J. G. Albers<br />
HS <strong>Magdeburg</strong>/<strong>Stendal</strong>, Tel. +49 391 886 4382
Programmieren mit dem Hamster<br />
Syntaxdiagramm „Anweisung (4)“<br />
Anweisung (4)<br />
Grundbefehl<br />
Prozeduraufruf<br />
Blockanweisung<br />
Leeranweisung<br />
Alternativanweisung<br />
Praktische Inform atik II<br />
PI- 22<br />
© 2001 by Prof. Dr. Erw in J. G. Albers<br />
HS <strong>Magdeburg</strong>/<strong>Stendal</strong>, Tel. +49 391 886 4382
Programmieren mit dem Hamster<br />
Auswahlanweisungen<br />
l Absichern der Grundbefehle<br />
u if (vornFrei()) vor();<br />
u if (kornDa()) nimm();<br />
u if (!maulLeer()) gib();<br />
l Ausführen mehrerer bedingter Anweisungen<br />
u Blockanweisung versus if .. if<br />
u if .. else versus if .. if (!)<br />
u geschachtelte Anweisungen<br />
u else-if-Anweisung<br />
Praktische Inform atik II<br />
PI- 23<br />
© 2001 by Prof. Dr. Erw in J. G. Albers<br />
HS <strong>Magdeburg</strong>/<strong>Stendal</strong>, Tel. +49 391 886 4382
Programmieren mit dem Hamster<br />
Diagramme „Wiederholanweisung“<br />
while-Anweisung<br />
while (<br />
boolscher<br />
Ausdruck<br />
)<br />
Anweisung<br />
do-Anweisung<br />
boolscher<br />
do Anweisung while ( )<br />
Ausdruck<br />
;<br />
Wiederholanweisung<br />
while-Anweisung<br />
do-Anweisung<br />
Praktische Inform atik II<br />
PI- 24<br />
© 2001 by Prof. Dr. Erw in J. G. Albers<br />
HS <strong>Magdeburg</strong>/<strong>Stendal</strong>, Tel. +49 391 886 4382
Programmieren mit dem Hamster<br />
Wiederholanweisungen<br />
l Wiederholen der Grundbefehle<br />
u while (vornFrei()) vor();<br />
u while (kornDa()) nimm();<br />
u while (!maulLeer()) gib();<br />
l Wiederholen mehrerer Anweisungen<br />
u Blockanweisung<br />
u Übersichtlichkeit durch Einrückung<br />
n { am Ende der Zeile<br />
n } in derselben Spalte wie erstes Zeichen in Zeile mit zugehörigem {<br />
n dazwischen alle Zeilen um eine Tab-Position einrücken<br />
u geschachtelte Schleifen<br />
u Endlosschleifen<br />
u do-Anweisung durch while-Anweisung ersetzbar<br />
Praktische Inform atik II<br />
PI- 25<br />
© 2001 by Prof. Dr. Erw in J. G. Albers<br />
HS <strong>Magdeburg</strong>/<strong>Stendal</strong>, Tel. +49 391 886 4382
Programmieren mit dem Hamster<br />
Diagramme „Boolsche Funktionen“<br />
boolsche return-Anweisung<br />
return<br />
boolscher<br />
Ausdruck<br />
;<br />
boolsche Funktionsdefinition<br />
boolscher<br />
Funktionskopf<br />
boolscher<br />
Funktionsrumpf<br />
Anweisung (4)<br />
Grundbefehl<br />
Prozeduraufruf<br />
boolscher Funktionskopf<br />
boolean<br />
Bezeichner<br />
(<br />
)<br />
Blockanweisung<br />
Leeranweisung<br />
boolscher Funktionsrumpf<br />
{<br />
Anweisungssequenz<br />
}<br />
Alternativanweisung<br />
Definitionen (2)<br />
Wiederholanweisung<br />
boolsche<br />
return-Anweisung<br />
Prozedurdefinition<br />
boolsche<br />
Funktionsdefinition<br />
Praktische Inform atik II<br />
PI- 26<br />
© 2001 by Prof. Dr. Erw in J. G. Albers<br />
HS <strong>Magdeburg</strong>/<strong>Stendal</strong>, Tel. +49 391 886 4382
Programmieren mit dem Hamster<br />
Boolsche Funktionen<br />
l Unterschiede Funktion – Prozedur<br />
u Funktionstyp boolean statt void<br />
u mindestens eine return-Anweisung im Rumpf<br />
u Aufruf wie Testbefehl statt wie Grundbefehl<br />
l Auswertungsreihenfolge<br />
l Seiteneffekte<br />
l Systemanalyse (Programmentwurf)<br />
u Analyse<br />
u Design<br />
u Implementierung<br />
u Test<br />
u Dokumentation<br />
Praktische Inform atik II<br />
PI- 27<br />
© 2001 by Prof. Dr. Erw in J. G. Albers<br />
HS <strong>Magdeburg</strong>/<strong>Stendal</strong>, Tel. +49 391 886 4382
Programmieren mit dem Hamster<br />
Boolsche Variablen<br />
Praktische Inform atik II<br />
PI- 28<br />
boolsche Variablendefinition<br />
boolean Bezeichner =<br />
l Definition<br />
u mit oder ohne Anfangswert (Initialwert)<br />
n Fehlwert ist false<br />
u Gültigkeitsbereich<br />
n lokal (wie Anweisungen): ab nächste Anweisung bis Blockende<br />
n global (wie Funktionen): überall außer in eigenen und vorherigen<br />
Initialausdrücken<br />
u Lebensdauer: dynamisch bei lokalen Variablen<br />
l Verwendung<br />
u lesend: überall wo boolsche Ausdrücke stehen können<br />
u schreibend: links bei boolscher Wertzuweisung<br />
,<br />
boolscher<br />
Ausdruck<br />
;<br />
© 2001 by Prof. Dr. Erw in J. G. Albers<br />
HS <strong>Magdeburg</strong>/<strong>Stendal</strong>, Tel. +49 391 886 4382
Programmieren mit dem Hamster<br />
Ganzzahlige Variablen<br />
Integer-Variablendefinition<br />
int Bezeichner =<br />
,<br />
arithmetischer<br />
Ausdruck<br />
;<br />
l Definition<br />
u mit oder ohne Anfangswert (Initialwert)<br />
n Fehlwert ist 0<br />
u Gültigkeitsbereich und Lebensdauer<br />
n wie boolsche Variablen<br />
Praktische Inform atik II<br />
PI- 29<br />
© 2001 by Prof. Dr. Erw in J. G. Albers<br />
HS <strong>Magdeburg</strong>/<strong>Stendal</strong>, Tel. +49 391 886 4382
Programmieren mit dem Hamster<br />
Diagramme „Variablen“<br />
Variablendefinition<br />
Datentyp<br />
Variablenname = Ausdruck ;<br />
,<br />
Ausdruck<br />
Variablenname<br />
Funktionsaufruf<br />
Datentyp<br />
boolean<br />
int<br />
Testbefehl<br />
unärer<br />
Operator<br />
Ausdruck<br />
binärer<br />
Operator<br />
Ausdruck<br />
Ausdruck<br />
( Ausdruck )<br />
Zuweisungsausdruck<br />
double<br />
Zuweisungsausdruck<br />
Variablenname = Ausdruck<br />
Praktische Inform atik II<br />
PI- 30<br />
© 2001 by Prof. Dr. Erw in J. G. Albers<br />
HS <strong>Magdeburg</strong>/<strong>Stendal</strong>, Tel. +49 391 886 4382
Programmieren mit dem Hamster<br />
Operatoren<br />
Priorität Operation Operand(en) Typ Assoziativität Funktionalität<br />
1 + int/double int/double rechts unäres plus<br />
1 - int/double int/double rechts unäres minus<br />
1 ! boolean boolean rechts logische Negation<br />
2 * int/double int/double links Multiplikation<br />
2 / int/double int/double links Division<br />
2 % int int links Modulo (Rest)<br />
3 + int/double int/double links Addition<br />
3 - int/double int/double links Subtraktion<br />
4 < int/double boolean links kleiner<br />
4 int/double boolean links größer<br />
4 >= int/double boolean links größer gleich<br />
5 == int/double boolean links gleich<br />
5 != int/double boolean links ungleich<br />
6 && boolean boolean links logische Konjunktion<br />
7 || boolean boolean links logische Disjunktion<br />
8 = int/double int/double rechts numerische Zuweisung<br />
8 = boolean boolean rechts logische Zuweisung<br />
Praktische Inform atik II<br />
PI- 31<br />
© 2001 by Prof. Dr. Erw in J. G. Albers<br />
HS <strong>Magdeburg</strong>/<strong>Stendal</strong>, Tel. +49 391 886 4382
Programmieren mit dem Hamster<br />
Übung Ausdrücke<br />
l Welches Ergebnis liefern die folgenden Java-Ausdrücke?<br />
u +5-2*3<br />
u 2+3/2<br />
u 8/2%3<br />
u 1= 3 || 0 < 1 && 1 != 3<br />
u !(2