17.11.2013 Aufrufe

Folien zur Vorlesung - Hochschule Magdeburg-Stendal

Folien zur Vorlesung - Hochschule Magdeburg-Stendal

Folien zur Vorlesung - Hochschule Magdeburg-Stendal

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!