Prof. Dr. Bernhard Zimmermann

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

der Universität Oldenburg
Fast Fourier Transformation
Algebraische Zahlen: Exaktes Rechnen mit Wurzeln
Mathematik hat Geschichte
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

Programmierausbildung
Imperative Programmierung -Entwicklungswerkzeuge
Objektorientierte Programmierung
Imperative Programmierung
der Universität Oldenburg
der Universität Oldenburg
Scratch Der Einstieg in das Programmieren. Scatch: Entwicklungsumgebung Prof. Dr. Haftendorn, Leuphana Universität Lüneburg,
Java: Objektorientierte Programmierung
Java: Grundlagen der Objektorientierung
Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei.
Dynamischer Speicher. In einer Funktion wird z.B. mit der Deklaration int i; Speicher auf dem sogenannten Stack reserviert. Wenn die Funktion verlassen.
WS Algorithmentheorie 02 - Polynomprodukt und Fast Fourier Transformation Prof. Dr. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Kapitel 6 Differenzierbarkeit. Kapitel 6: Differenzierbarkeit © Beutelspacher Juni 2005 Seite 2 Inhalt 6.1 Die Definition 6.2 Die Eigenschaften 6.3 Extremwerte.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Imperative Programmierung Funktionen und Parameter
Imperative Programmierung
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
Praxis-Repetitorium JAVA zusätzliche, ergänzende Lehrveranstaltung
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Programm besteht aus mehreren Bestandteilen: Schlüsselwörter Sonderzeichen Bezeichner Kommentare Texte.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
PKJ 2005/1 Stefan Dissmann Zusammenfassung der Vorwoche Variable stehen für (einen) Wert, der sich im Programmablauf ändern kann. Variablen besitzen einen.
Zusammenfassung Vorwoche
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Methoden sind mit einem Namen versehene Programmabschnitte besitzen Rückgabetyp, Namen, Parameterliste.
Thema des Informatikkurses der Klasse 8
Das Java-Hamstermodell
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
Marcus Haller & René Schulze
Heute: Scherenzange zeichnen


Bild 1.1 Copyright © Alfred Mertins | Signaltheorie, 2. Auflage Vieweg+Teubner PLUS Zusatzmaterialien Vieweg+Teubner Verlag | Wiesbaden.
Programmieren mit MS Small Basic
Prof. Dr. med. Stefan Schulz
Einführung in die Programmierung Wintersemester 2013/14 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Herzlich Willkommen zu „Einführung in die Programmierung mit Java“
Druckerinstallation HP1050C
University of Applied Sciences Übung Objektorientierte Programmierung II Dipl.-Inf. (FH) Markus Vogler.
Simple Programmierung
Materialien zum Informatikunterricht (Pohlig-Häberle)
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03.
Präsentation C Tutorium von Daniel J. Nowak Folie 1 C Tutorium.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Programmierung Wintersemester 2013/14 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung Wintersemester 2012/13 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Analyse von Ablaufdiagrammen
HORIZONT 1 XINFO ® Das IT - Informationssystem PL/1 Scanner HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 / 540.
Programmierung 1. Einführung Seite 1
Analyseprodukte numerischer Modelle
Starten der Entwicklungsumgebung (IDE)
Agenda für heute, 20. April, 2006 Wiederholte ProgrammausführungWiederholte Programmausführung Algorithmische Grundlagen Bedingungen zum Abbruch von Programmschleifen.
Agenda für heute, 14. April, 2005 Wiederholte ProgrammausführungWiederholte Programmausführung Algorithmische Grundlagen Bedingungen zum Abbruch von Programmschleifen.
Kommandozeile und Batch-Dateien Molekulare Phylogenetik – Praktikum
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Das Java-Hamster-Modell
Programmierkurs JavaUE 4 Anweisungen und ProgrammeDietrich BolesSeite 1 Programmierkurs Java Dr. Dietrich Boles Teil Imperative Programmierung Unterrichtseinheit.
 Präsentation transkript:

Prof. Dr. Bernhard Zimmermann Programmierung Prof. Dr. Sigurd Günther Prof. Dr. Bernhard Zimmermann

Teil 1 Eine spielerische Einführung in die Programmierung in Java mit dem Hamster-Modell Literatur: Dietrich Boles Programmieren spielend gelernt Teubner-Verlag Hamster-Entwicklungsumgebung http://www.java-hamster-modell.de/

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

Arbeitsanleitungen

Programmierung / Algorithmus / Motivation Arbeitsanleitungen: Kochrezepte Bastelanleitungen Partituren Spielregeln Aufbau: Menge von unterschiedlichen Anweisungen Charakteristika: Anweisungssequenzen bedingte Anweisungen Anweisungsschleifen Zutaten / Voraussetzungen „schwammige“ Formulierungen Beispiel für eine schwammige Formulierung: mit Salz und Pfeffer herzhaft würzen

Arbeitsanleitungen Kochrezepte Zwiebel 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.

Arbeitsanleitungen Zutaten beim Kochen: Jenga-Spiel: 250g Mett 250g gemischtes Hack 2 Eier 1 Zwiebel 1 Brötchen Pfeffer Salz Jenga-Spiel: Zubehör: 1 Spielanleitung 45 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

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.

Programmierung / Algorithmus / 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 ...

Programmierung / Programmiersprachen / Programme 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 computerverständliche Notation: das Programm kann in dieser Notation prinziell von jedem Computer ausgeführt werden maschinenverständlicher Form: das Programm kann in dieser Notation von der akuell betrachteten Maschine ausgeführt werden

Programmierung „Programmieren im Kleinen“: „Programmieren im Großen“: Lösen kleiner Probleme „Programmieren im Großen“: Lösen komplexer Probleme Software Engineering computerverständliche Notation: das Programm kann in dieser Notation prinziell von jedem Computer ausgeführt werden maschinenverständlicher Form: das Programm kann in dieser Notation von der akuell betrachteten Maschine ausgeführt werden

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 Für den Anfänger: sehr einfach gehalten, mit geringem Sprachumfang

Compiler - Interpreter Zielprogramm in B Compiler Quellprogramm in J Quellprogramm in B Ergebnis Interpreter Daten

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 1. Auf dem Computer gibt es ein Programm, genannt Interpreter, das als Eingaben ... 2. Auf dem Computer gibt es keinen Interpreter, der Programme der betrachteten Programmiersprache ausführen kann. Wir benötigen dann einen Compiler, der ...

Programmentwicklung / Entwicklungswerkzeuge Editor: Eingabe und Manipulation des Programmcodes Compiler Interpreter Debugger: Auffinden von Laufzeitfehlern Laufzeitsystem: Hilfsprogramme bei der Programmausführung Programmbibliotheken: Sammlungen fertiggestellter Programme

Programmieren mit dem Java-Hamster-Modell

Hamster-Modell / Grundlagen Landschaft 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.

Hamster-Modell / Grundlagen Hamsteraufgabe: Gegeben sei die folgende Landschaft. Der Hamster soll zwei beliebige Körner fressen. Landschaft: Lösung: ein Hamsterprogramm

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 vor(); nach Befehl vor(); vor Befehl linksUm(); nach Befehl linksUm();

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!

Hamster-Modell / Anweisungsfolge / 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

Hamster-Modell / Programm / Beispiel Aufgabe (Bsp1): Gegeben sei das folgende Hamster-Territorium. Programm void 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.

Die Hamster-Entwicklungsumgebung Editor für Programme Landschaften Compiler Interpreter Aktivierung über den Explorer: In das Verzeichnis „D:\Daten\HamsterV2“ wechseln hamstersimulator.bat starten

Die Hamster-Entwicklungsumgebung - Simulator Interpreter- Steuerung Landschaftseditor Aktivitätsprotokoll ?: Info-Fenster, das u. a. die aktuelle Körneranzahl im Maul anzeigt +1/-1: inkrementieren bzw. dekrementieren der Körneranzahl im Maul

Die Hamster-Entwicklungsumgebung - Editor Compiler- Aktivierung Programm- Editor Compiler- Meldungen

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

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!

Hamster-Modell / 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.

Hamster-Modell / Prozeduren / Motivation Beispielaufgabe: Gegeben sei das folgende Hamster-Territorium. Programm void main() { vor(); vor(); nimm(); linksUm(); linksUm(); linksUm(); vor(); vor(); vor(); } Der Hamster soll zwei Körner einsammeln und anschließend ein Feld nach vorn springen. rechtsUm(); rechtsUm();

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

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.

Hamster-Modell / Prozeduren / Beispiel Aufgabe: Gegeben sei das folgende Hamster-Territorium. Programm void main() { vor(); vor(); nimm(); rechtsUm(); vor(); vor(); vor(); } Der Hamster soll zwei Körner einsammeln und anschließend ein Feld nach vorn springen. void rechtsUm() { kehrt(); linksUm(); } void kehrt() linksUm(); linksUm();

Hamster-Modell / Prozeduren / Vorteile Vorteile von Prozeduren: Platzeinsparung separate Lösung von Teilproblemen bessere Übersichtlichkeit von Programmen einfachere Fehlerbeseitigung Wiederverwendbarkeit

Hamster-Modell / 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.

Hamster-Modell / Aufgabe 3 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!

Hamster-Modell / Aufgabe 4 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!

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