Upload
achim-neubaum
View
123
Download
7
Embed Size (px)
Citation preview
ProgrammierungSeite 1
Hochschule Harz © Prof. Dr. Sigurd GüntherFachbereich Automatisierung und Informatik © Prof. Dr. Bernhard Zimmermann
Programmierung
Prof. Dr. Sigurd Günther
Prof. Dr. Bernhard Zimmermann
ProgrammierungSeite 2
Hochschule Harz © Prof. Dr. Sigurd GüntherFachbereich Automatisierung und Informatik © Prof. Dr. Bernhard Zimmermann
Teil 1Eine spielerische Einführung in die
Programmierung in Javamit dem Hamster-Modell
Literatur:
Dietrich BolesProgrammieren spielend gelerntTeubner-Verlag
Hamster-Entwicklungsumgebung– http://www.java-hamster-modell.de/
ProgrammierungSeite 3
Hochschule Harz © Prof. Dr. Sigurd GüntherFachbereich Automatisierung und Informatik © Prof. Dr. Bernhard Zimmermann
Programmierung / Terminologie
Informatik– Ingenieurswissenschaft
Ingenieure entwickeln mit wissenschaftlichen Methoden und Werkzeugen
» Produkte und
» Verfahren zur Automatisierung von Prozessen Programmierung
– Erstellung von Computerprogrammen Algorithmus
(benannt nach Al Chwarismi, geb. ca. 780 n. Chr., pers.-arab. Mathematiker und Astronom):
– Arbeitsanleitung zur Lösung eines Problems
ProgrammierungSeite 4
Hochschule Harz © Prof. Dr. Sigurd GüntherFachbereich Automatisierung und Informatik © Prof. Dr. Bernhard Zimmermann
Arbeitsanleitungen
ProgrammierungSeite 5
Hochschule Harz © Prof. Dr. Sigurd GüntherFachbereich Automatisierung und Informatik © Prof. Dr. Bernhard Zimmermann
Programmierung / Algorithmus / Motivation
Arbeitsanleitungen: – Kochrezepte
– Bastelanleitungen
– Partituren
– Spielregeln Aufbau:
– Menge von unterschiedlichen Anweisungen Charakteristika:
– Anweisungssequenzen
– bedingte Anweisungen
– Anweisungsschleifen
– Zutaten / Voraussetzungen
– „schwammige“ Formulierungen
ProgrammierungSeite 6
Hochschule Harz © Prof. Dr. Sigurd GüntherFachbereich Automatisierung und Informatik © Prof. Dr. Bernhard Zimmermann
Arbeitsanleitungen
KochrezepteZwiebel feinhacken;Brötchen einweichen;aus gemischtem Hack, Eiern, feingehackter Zwiebel und eingeweichtem
und gut ausgedrücktem Brötchen einen Fleischteig bereiten; mit Salz und Pfeffer herzhaft würzen;
Anleitung für einen Fußballschiedsrichter:ein Spieler von Mannschaft A wird von einem Spieler von Mannschaft B
gefoult;wenn das Foul im Strafraum von Mannschaft B erfolgt,dann pfeife Strafstoß,ansonsten pfeife Freistoß
Anleitung beim Mensch-Ärgere-Dich-Nicht-Spiel:Solange ein Spieler eine 6 würfelt, darf er nochmal würfeln.
ProgrammierungSeite 7
Hochschule Harz © Prof. Dr. Sigurd GüntherFachbereich Automatisierung und Informatik © Prof. Dr. Bernhard Zimmermann
Arbeitsanleitungen
Zutaten beim Kochen:250g Mett250g gemischtes Hack2 Eier1 Zwiebel1 BrötchenPfefferSalz
Jenga-Spiel:Zubehör:
1 Spielanleitung45 Holzklötzchen
Spielanleitung:solange die Spieler noch Lust haben zu spielen:
Turm aufbauen, dabei jeweils die Klötzchen rechtwinklig zueinander versetzen;
solange der Turm noch nicht eingestürzt ist, müssen die Spieler der Reihe nach folgendes tun:
ein Klötzchen aus dem Turm entnehmen; das Klötzchen oben auf den Turm legen
ProgrammierungSeite 8
Hochschule Harz © Prof. Dr. Sigurd GüntherFachbereich Automatisierung und Informatik © Prof. Dr. Bernhard Zimmermann
Sie müssen erst den Nippel
durch die Lasche zieh'n
und mit der kleinen Kurbel
ganz nach unten dreh'n.
Dann erscheint ein kleiner Pfeil
und da drücken Sie dann drauf
und schon geht die Tube auf.
ProgrammierungSeite 9
Hochschule Harz © Prof. Dr. Sigurd GüntherFachbereich Automatisierung und Informatik © Prof. Dr. Bernhard Zimmermann
Programmierung / Algorithmus / Definition
Definition: – Arbeitsanleitung zum Lösen eines Problems bzw. einer
Aufgabe, die so präzise formuliert ist, daß sie von einem Computer ausgeführt werden kann
Ausführung von Algorithmen:– durch einen Prozessor (Mensch / Computer)
– Computer:» schnell
» zuverlässig
» hohe Speicherfähigkeit
Formulierung von Algorithmen:– umgangssprachlich
– Programmiersprache
– ...
ProgrammierungSeite 10
Hochschule Harz © Prof. Dr. Sigurd GüntherFachbereich Automatisierung und Informatik © Prof. Dr. Bernhard Zimmermann
Programmierung / Programmiersprachen / Programme
Programmiersprache: – computerverständliche Notation zur Formulierung von
Algorithmen Programm (Programmcode, Quellcode, Sourcecode):
– ein in einer Programmiersprache formulierter Algorithmus ausführbares Programm:
– Programm in maschinenverständlicher Form Programmaufruf:
– Ausführung eines ausführbaren Programms Programmieren:
– Erstellen von Programmen
ProgrammierungSeite 11
Hochschule Harz © Prof. Dr. Sigurd GüntherFachbereich Automatisierung und Informatik © Prof. Dr. Bernhard Zimmermann
Programmierung
„Programmieren im Kleinen“: – Lösen kleiner Probleme
„Programmieren im Großen“: – Lösen komplexer Probleme
– Software Engineering
ProgrammierungSeite 12
Hochschule Harz © Prof. Dr. Sigurd GüntherFachbereich Automatisierung und Informatik © Prof. Dr. Bernhard Zimmermann
Programmiersprachen / Klassifikation
Anwender:– Anfänger
– Experten Abstrahierungsgrad:
– maschinennah» sehr effizient, aber abhängig vom speziellen Computertyp
– problemorientiert» für den Menschen verständlicher und leichter handhabbar
ProgrammierungSeite 13
Hochschule Harz © Prof. Dr. Sigurd GüntherFachbereich Automatisierung und Informatik © Prof. Dr. Bernhard Zimmermann
Quellprogramm
in B
ErgebnisInterpreter
Daten
Quellprogramm
in J
Zielprogramm
in BCompiler
Compiler - Interpreter
ProgrammierungSeite 14
Hochschule Harz © Prof. Dr. Sigurd GüntherFachbereich Automatisierung und Informatik © Prof. Dr. Bernhard Zimmermann
Wie verarbeitet ein Computer vorgegebene Programme ?
Interpreter– Eingaben: Programm + Daten
– schrittweise Ausführung der einzelnen Programmteile und Berechnung von Zwischenergebnissen
– Ausgabe: Endergebnis (Letztes Zwischenergebnis) Compiler
– Eingabe: Programm formuliert in der Quellsprache
– Transformation des Eingabeprogramms
– Ausgabe: Semantisch äquivalentes Programm der Zielsprache
ProgrammierungSeite 15
Hochschule Harz © Prof. Dr. Sigurd GüntherFachbereich Automatisierung und Informatik © Prof. Dr. Bernhard Zimmermann
Programmentwicklung / Entwicklungswerkzeuge
Editor: – Eingabe und Manipulation des Programmcodes
Compiler Interpreter Debugger:
– Auffinden von Laufzeitfehlern Laufzeitsystem:
– Hilfsprogramme bei der Programmausführung Programmbibliotheken:
– Sammlungen fertiggestellter Programme
ProgrammierungSeite 16
Hochschule Harz © Prof. Dr. Sigurd GüntherFachbereich Automatisierung und Informatik © Prof. Dr. Bernhard Zimmermann
Programmieren mit dem Java-Hamster-Modell
ProgrammierungSeite 17
Hochschule Harz © Prof. Dr. Sigurd GüntherFachbereich Automatisierung und Informatik © Prof. Dr. Bernhard Zimmermann
Hamster-Modell / GrundlagenLandschaft
Hamster (Blickrichtung Ost)
Hamster (Blickrichtung Süd)
Hamster (Blickrichtung West)
Hamster (Blickrichtung Nord)
blockierte Kachel
Kachel mit Körnern
Auch auf dem „Hamsterfeld“ können beliebig viele Körner liegen.
ProgrammierungSeite 18
Hochschule Harz © Prof. Dr. Sigurd GüntherFachbereich Automatisierung und Informatik © Prof. Dr. Bernhard Zimmermann
Hamster-Modell / Grundlagen
Hamsteraufgabe:– Gegeben sei die folgende Landschaft. Der Hamster soll zwei
beliebige Körner fressen. Landschaft:
Lösung:– ein Hamsterprogramm
ProgrammierungSeite 19
Hochschule Harz © Prof. Dr. Sigurd GüntherFachbereich Automatisierung und Informatik © Prof. Dr. Bernhard Zimmermann
Hamster-Modell / Anweisungen / Befehle vier Grundbefehle (Grundanweisungen):
– vor(); ein Feld nach vorne springen– linksUm(); 90 Grad nach links drehen– nimm(); ein Korn von der aktuellen Kachel
aufnehmen– gib(); ein Korn aus dem Maul auf der aktuellen
Kachel ablegen
vor Befehl linksUm();
vor Befehl vor(); nach Befehl vor();
nach Befehl linksUm();
ProgrammierungSeite 20
Hochschule Harz © Prof. Dr. Sigurd GüntherFachbereich Automatisierung und Informatik © Prof. Dr. Bernhard Zimmermann
Hamster-Modell / Anweisungen / Befehle
Laufzeitfehler:– vor(); ... und Feld vor dem Hamster ist blockiert
– nimm(); ... und kein Korn auf der aktuellen Kachel vorhanden
– gib(); ... und kein Korn im Maul des Hamsters
die Programmausführung wird abgebrochen!
vor Befehl vor(); nach Befehl vor();
Laufzeitfehler!
ProgrammierungSeite 21
Hochschule Harz © Prof. Dr. Sigurd GüntherFachbereich Automatisierung und Informatik © Prof. Dr. Bernhard Zimmermann
Hamster-Modell / Anweisungsfolge / Programm
Programm
void main() { Anweisungsfolge } Kommentare
– wirken sich nicht auf die Steuerung des Hamsters aus, d.h. sie haben für die Programmausführung keine Bedeutung
– dienen dem besseren Verständnis eines Programms– 2 Notationsmöglichkeiten
» Kommentar über mehrere Zeilen
/* Der Hamster soll sich einmal im Kreis drehen*/
» 1-zeiliger Kommentar
// Der Kommentar endet am Zeilenende
– können außer in Namen (fast) überall im Programm auftreten
ProgrammierungSeite 22
Hochschule Harz © Prof. Dr. Sigurd GüntherFachbereich Automatisierung und Informatik © Prof. Dr. Bernhard Zimmermann
Hamster-Modell / Programm / Beispiel Aufgabe (Bsp1):
– Gegeben sei das folgende Hamster-Territorium.
Programmvoid main(){ // nehme erstes Korn
vor(); vor(); nimm(); /* nehme zweites Korn */
linksUm(); vor(); vor(); nimm(); // Korn ablegen
vor(); vor(); gib(); // ein Feld nach vorn springen
vor(); }
Der Hamster soll – zwei Körner einsammeln, – eins an der Stelle
ablegen und – ein Feld nach vorn
springen.
ProgrammierungSeite 23
Hochschule Harz © Prof. Dr. Sigurd GüntherFachbereich Automatisierung und Informatik © Prof. Dr. Bernhard Zimmermann
Die Hamster-Entwicklungsumgebung
Editor für– Programme
– Landschaften Compiler Interpreter
Aktivierung über den Explorer:– In das Verzeichnis „D:\Daten\HamsterV2“ wechseln– hamstersimulator.bat starten
ProgrammierungSeite 24
Hochschule Harz © Prof. Dr. Sigurd GüntherFachbereich Automatisierung und Informatik © Prof. Dr. Bernhard Zimmermann
Die Hamster-Entwicklungsumgebung - Simulator
LandschaftseditorInterpreter-
Steuerung
Aktivitätsprotokoll
ProgrammierungSeite 25
Hochschule Harz © Prof. Dr. Sigurd GüntherFachbereich Automatisierung und Informatik © Prof. Dr. Bernhard Zimmermann
Die Hamster-Entwicklungsumgebung - Editor
Compiler-
Aktivierung
Programm-
Editor
Compiler-
Meldungen
ProgrammierungSeite 26
Hochschule Harz © Prof. Dr. Sigurd GüntherFachbereich Automatisierung und Informatik © Prof. Dr. Bernhard Zimmermann
Programmerstellung mit der Hamster-Entwicklungsumgebung
neue Programm-Datei (Typ „imperatives Programm“) über den Programm-Editor erzeugen und in einer Datei mit dem Dateityp „Programm“ (Datei-Erweiterung .ham nicht angeben) speichern, z. B. in bsp1
Programm compilieren ggf. Syntaxfehler mit dem Programm-Editor entfernen Landschaft mit dem Landschafts-Editor konstruieren und
speichern z.B. bsp1 (Datei-Erweiterung .ter nicht angeben) Hamster-Programm vom Interpreter ausführen lassen
(Programmtest)Es wird automatisch die zur Programm-Datei passende .class-Datei benutzt.
ggf. Fehler mit dem Programm-Editor entfernen
ProgrammierungSeite 27
Hochschule Harz © Prof. Dr. Sigurd GüntherFachbereich Automatisierung und Informatik © Prof. Dr. Bernhard Zimmermann
Programmerstellung mit der Hamster-Entwicklungsumgebung
Syntax von Namen, z. B. Dateinamen:– Folge von Buchstaben, Ziffern und dem Zeichen ‘_‘, die mit
einem Buchstaben beginnen muss.
Sonderzeichen und Leerzeichen dürfen in Namen nicht vorkommen!
ProgrammierungSeite 28
Hochschule Harz © Prof. Dr. Sigurd GüntherFachbereich Automatisierung und Informatik © Prof. Dr. Bernhard Zimmermann
Hamster-Modell / Aufgabe 1 Aufgabe 1:
– Der Hamster stehe vor einem Berg.
Er soll » den Berg erklimmen,
» das Korn einsammeln,
» eine Stufe auf der anderen Seite des Bergs absteigen,
» dort das Korn ablegen und
» eine weitere Stufe absteigen.
ProgrammierungSeite 29
Hochschule Harz © Prof. Dr. Sigurd GüntherFachbereich Automatisierung und Informatik © Prof. Dr. Bernhard Zimmermann
Hamster-Modell / Prozeduren / Motivation Beispielaufgabe:
– Gegeben sei das folgende Hamster-Territorium.
Programmvoid main(){ vor(); vor();
nimm(); linksUm(); linksUm(); linksUm(); vor(); vor(); linksUm(); linksUm(); linksUm(); vor(); vor(); nimm(); vor(); }
Der Hamster soll – zwei Körner
einsammeln– und anschließend ein
Feld nach vorn springen.
rechtsUm();
rechtsUm();
ProgrammierungSeite 30
Hochschule Harz © Prof. Dr. Sigurd GüntherFachbereich Automatisierung und Informatik © Prof. Dr. Bernhard Zimmermann
Hamster-Modell / Prozeduren / Deklaration
Prozedurdeklaration: – Vereinbarung eines neuen Befehls
void Prozedurname() { Anweisungsfolge }
Beispiel:void kehrt() {
linksUm(); linksUm();
}
! Prozedurnamen haben die gleiche Syntax wie Dateinamen.(Sonderzeichen oder Leerzeichen sind nicht erlaubt)
Prozedurkopf Prozedurrumpf
ProgrammierungSeite 31
Hochschule Harz © Prof. Dr. Sigurd GüntherFachbereich Automatisierung und Informatik © Prof. Dr. Bernhard Zimmermann
Hamster-Modell / Prozeduren / Aufruf - Programm
Prozeduraufruf: – Aufruf eines selbstdefinierten Befehls
Prozedurname(); Anweisung
– Grundanweisung (Grundbefehl)
– Prozeduraufruf Programm mit Prozeduren
void main() { Anweisungsfolge }
Prozedurdeklaration ... Prozedurdeklaration
Dabei müssen die folgenden Bedingungen gelten:– Die Prozedurnamen sind paarweise verschieden.– Innerhalb der Prozedurrümpfe werden nur Prozeduren
aufgerufen, die auch deklariert sind.Es spielt keine Rolle, ob die aufgerufene Prozedur vor oder nach dem Aufruf deklariert wird!
– Die Prozedurdeklarationen sind nicht geschachtelt.
ProgrammierungSeite 32
Hochschule Harz © Prof. Dr. Sigurd GüntherFachbereich Automatisierung und Informatik © Prof. Dr. Bernhard Zimmermann
Hamster-Modell / Prozeduren / Beispiel Aufgabe:
– Gegeben sei das folgende Hamster-Territorium.
Programmvoid main()
{ vor(); vor(); nimm(); rechtsUm(); vor(); vor(); rechtsUm(); vor(); vor(); nimm(); vor();
}
Der Hamster soll – zwei Körner
einsammeln– und anschließend ein
Feld nach vorn springen.
void rechtsUm() { kehrt(); linksUm();}
void kehrt() { linksUm(); linksUm();}
ProgrammierungSeite 33
Hochschule Harz © Prof. Dr. Sigurd GüntherFachbereich Automatisierung und Informatik © Prof. Dr. Bernhard Zimmermann
Hamster-Modell / Prozeduren / Vorteile
Vorteile von Prozeduren:– Platzeinsparung
– separate Lösung von Teilproblemen
– bessere Übersichtlichkeit von Programmen
– einfachere Fehlerbeseitigung
– Wiederverwendbarkeit
ProgrammierungSeite 34
Hochschule Harz © Prof. Dr. Sigurd GüntherFachbereich Automatisierung und Informatik © Prof. Dr. Bernhard Zimmermann
Hamster-Modell / Aufgabe 2 Aufgabe 2:
– Wie in Aufgabe 1 steht der Hamster vor einem Berg.
Er soll » den Berg erklimmen,
» das Korn einsammeln,
» eine Stufe auf der anderen Seite des Bergs absteigen,
» dort das Korn ablegen und
» eine weitere Stufe absteigen.
Strukturieren Sie Ihr Programm mit Hilfe von Prozeduren.
ProgrammierungSeite 35
Hochschule Harz © Prof. Dr. Sigurd GüntherFachbereich Automatisierung und Informatik © Prof. Dr. Bernhard Zimmermann
Hamster-Modell / Aufgabe 3 Aufgabe:
– Gegeben sei das linke Hamster-Territorium. Der Hamster soll in allen Feldern der beiden Diagonalen jeweils ein Korn ablegen, so daß nach der Beendigung des Programms das rechte Hamster-Territorium vorliegt. Der Hamster habe anfangs genau 9 Körner im Maul.
Strukturieren Sie Ihr Programm mit Hilfe von Prozeduren!
ProgrammierungSeite 36
Hochschule Harz © Prof. Dr. Sigurd GüntherFachbereich Automatisierung und Informatik © Prof. Dr. Bernhard Zimmermann
Hamster-Modell / Aufgabe 4 Aufgabe:
– Der Hamster hat Schiffbruch erlitten und ist auf einer einsamen Insel gestrandet. Er hat zum Glück noch 100 Körner im Maul. Um Flugzeuge auf sich aufmerksam zu machen, will er aus den Körnern die Buchstaben SOS ablegen. Helfen Sie ihm dabei!
Der Hamster steht anfangs in der linken unteren Ecke des Territoriums mit Blickrichtung Ost.
Strukturieren Sie Ihr Programm mit Hilfe von Prozeduren!
ProgrammierungSeite 37
Hochschule Harz © Prof. Dr. Sigurd GüntherFachbereich Automatisierung und Informatik © Prof. Dr. Bernhard Zimmermann
Hamster-Modell / Ausblick
Auswahlanweisungen Wiederholungsanweisungen Funktionen Hamster, die nicht mehr auf einer fest vorgegebenen
Landschaft operieren, sondern auf allen, die bestimmte Voraussetzungen erfüllen
Vermeidung von Laufzeitfehlern Hamster mit Gedächtnis (Boolesche Variablen) Hamster mit Gedächtnis (Zahlen) Integer-Funktionen Verallgemeinerungen von Daten und Funktionen Prozeduren und Funktionen mit Parametern