12.04.2007Javakurs 20071 Daniel Käs Robert Lubkoll Von der Aufgabe zum Code.

Slides:



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

der Universität Oldenburg
der Universität Oldenburg
DVG Dateien Dateien. DVG Dateien 2 Die Klasse File Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem.
Einführung in die Programmierung Zusammenfassung
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
(kleine!) Java Einführung Mittwoch, Heute Ziel: erstes Java-Programm erstellen Von der Aufgabenstellung bis zur Lösung Grundlagen Einfache.
Java: Dynamische Datentypen
Indirekte Adressierung
Java: Referenzen und Zeichenketten
FH-Hof Fehlerbehandlung Richard Göbel. FH-Hof Konzept Fehler können mit dem Operator throw einer übergeordneten Funktion signalisiert werden. Parameter.
Klassenvariable. Da man für jede Kuh bzw. jede Henne auf dem Markt den gleichen Preis für ein Liter Milch, bzw. den gleichen Preis für ein Ei bekommt,
Konstruktoren.
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.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 2 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (05 – Elementare Datenstrukturen) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 6 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Imperative Programmierung Funktionen und Parameter
Automatisches Testen und Bewerten von Java-Klassen
Praxis-Repetitorium JAVA zusätzliche, ergänzende Lehrveranstaltung
PKJ 2005/1 Stefan Dissmann Methoden (Motivation) Idee: Identische Programmabschnitte zusammenfassen und mit einem Namen versehen Vorteile: Übersichtlichkeit.
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
Zusammenfassung Vorwoche
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Methoden sind mit einem Namen versehene Programmabschnitte besitzen Rückgabetyp, Namen, Parameterliste.
SWTPRA 2000 Programm Robots.
Modulare Programmierung
DVG Methoden 1 Methoden. 2 int dezi = Integer.parseInt(args[0]); boolean vz = (dezi>=0); dezi = Math.abs(dezi); String Bin = ""; do { } while.
Planung einfache Dateibehandlung (externe Dateien, Öffnen, Lesen/Schreiben, Schließen). Diskussion des Problems, die Wörter in einem gegebenen Text.
Struktogramme IF-ELSE FOR – Schleife
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Rekursive Funktionen (Fakultät)
INHALT INHALT Inhalt Delphi IDE ObjectPascal Hello World! Delphi IDE
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03.
Telecooperation/RBG Technische Universität Darmstadt Copyrighted material; for TUD student use only Grundlagen der Informatik I Thema 16: Ausnahmebehandlung.
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
Meine Lernziele.
Algorithmen und Datenstrukturen SS 2005
Starten der Entwicklungsumgebung (IDE)
Programmiervorkurs WS 2014/15 Methoden
Übung Informatik I exercise01. 2 Inhaltsübersicht Nachbesprechung Übung 1 Individuelle Fragen/Bemerkungen.
© 2004 Pohlig Informatik Kurse © 2004 Pohlig Informatik Kurse Der Tramp tanzt die Rekursion zünderUntersuchen(…) Basisfall Rückmeldung:
Ausnahmen Vorlesung besteht aus zwei Teilen Programmierung (4 SWS)
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/ Übungsaufgabe vom Logische Ausdrücke 1.true & false | true 2.(10>2)
Unterprogramme / Methoden
Java Programme nur ein bisschen objektorientiert.
Schwarz, Lubkoll : Javakurs LE Organisatorisches ● Wer sind wir? ● Was machen wir hier? ● Was haben wir davon? ● Was habt ihr davon?
Das Entwurfsmuster Model-View-Controller
Konstruktoren.
Objektorientierung Gliederung von Daten und Funktionen zu Objekten
Hello World! Javakurs 2013 Arne Kappen
Aufgaben zu Rückgabewerten
Durchschnitt (verbal)
Felder in Java.
How to make simple statements and how to ask questions
Raphael Fischer Informatik II - Übung 03 Raphael Fischer
Cäsar-Verschlüsselung
SS 04 Christiane Rauh Christian Hellinger
Grundkurs Informatik mit Java
Es gibt Klassen, die mit der Entwicklungsumgebung ausgeliefert werden
Schleifen mit der Turtle
Cäsar-Verschlüsselung
Objects first mit BlueJ und Greenfoot
Informatik Kurse
«Delegierter» Methoden Schablone Funktionszeiger
Implementieren von Klassen
 Präsentation transkript:

Javakurs Daniel Käs Robert Lubkoll Von der Aufgabe zum Code

Javakurs Von der Aufgabe zum Code ● Im großen Rahmen: siehe Softwaretechnik ● Im kleinen Rahmen: Erfahrungssache es folgt ein wenig Erfahrung

Javakurs Beispielaufgabe ● Schreibe das Spiel Hangman für die Konsole. ● Es soll von einem Spieler beliebig oft spielbar sein. ● In jedem Spielschritt soll angezeigt werden: – die verbleibede Menge an Rateversuchen – die bereits erratenen Buchstaben des Lösungswortes _AN_MA N

Javakurs Übersicht verschaffen ● Spielregeln Hangman – Ein Wort wird gewählt – Spieler muss Buchstaben des Wortes erraten – Position erratener Buchstaben wird angezeigt – falscher Rateversuch führt zu Hangman-Strich – gewonnen wenn Wort erraten – verloren wenn Hangman komplett _AN_MA N

Javakurs Ablauf skizzieren ● Braindump ● soll Gedanken ordnen ● Aufgabe in Teilprobleme zerlegen ● Viele Probleme in einer erdachten Lösung entdeckt man erst wenn man sie aufschreibt

Javakurs Beispiel einer Ablaufskizze

Javakurs Ablaufskizzen sind individuell

Javakurs Ablauf ordentlich aufschreiben ● wenn der Platz in der Skizze für die Korrekturen nicht mehr ausreicht – Neues Diagramm – Erfahrungen aus der Skizze umsetzen – Aufgabe in möglichst viele Teilprobleme zerlegen

Javakurs Beispiel eines Ablaufdiagramms

Javakurs Ablauf nochmal durchdenken

Javakurs Methoden extrahieren ● Jedes Teilproblem stellt eine Methode da – sinnvoll benennen (sprechende Namen) – Übergabeparameter festlegen ● was braucht die Methode zum Arbeiten ? – Rückgabeparameter festlegen ● was liefert die Methode als Ergebnis ?

Javakurs Beispiel für extrahierte Methoden ● boolean menue () ● boolean isGameWanted() ● String chooseWord () ● char askForCharacter () ● boolean IsCharacterInWord (char character, String word) ● void updateGame (char guessedCharacter) ● void displayGame () ● boolean isGameOver ()

Javakurs Teilprobleme zerlegen ● Schritt 1 bis 5 für jedes Teilproblem wiederholen – erst aufhören wenn Teilprobleme trivial sind ● Am Ende ist die Gesamtlösung klar, wir müssen nur noch den Code schreiben

Javakurs Code schreiben

Javakurs Code schreiben ● Debugging is twice as hard as writing the code in the first place. ● Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it. Brian Kernighan

Javakurs Ablauf durch Kommentare andeuten public static void main(String args[]) { // -Menueschleife- // neues Spiel ? wenn nein, dann Ende // Wort wählen // -Spielschleife- // Spielstand ausgeben // Buchstaben erfragen // Eingabe bewerten // Spielstand aktualisieren // Spielende prüfen // -ende- }

Javakurs Schrittweise Code erzeugen ● Niemand schreibt korrekten Code ! ● Code muss getestet werden – so früh wie möglich – so oft wie möglich – so gründlich wie möglich ● Mit Teilproblemen beginnen die sich leicht testen lassen

Javakurs Testbarkeit herstellen ● Durch Testausgaben // TODO: delete testoutput System.out.println(„Zählerstand: “+counter); ● Durch Dummymethoden public static char readChar(){ // TODO: implement readChar return 'j'; }

Javakurs Flexibel sein ● Kein Plan überlebt den ersten Feindkontakt ● Probleme sind meist komplizierter als man denkt – Entwurf kann stetig angepasst werden ● Fehler in Lösungen entdeckt man wenn man sie präzise niederschreibt

Javakurs Code lesbar halten ● Kapazität Kurzzeitgedächtnis: 3 – 7 Items – zwischen 3 und 7 Codezeilen können maximal gleichzeitig überblickt werden – größere Codeblöcke übersichtlich strukturieren – besser: in Methoden zerlegen – Fehlersuche schwer -> Code besser strukturieren

Javakurs Verschachtelte Blöcke if (isShip(row, column)) { int ship = getShip(row, column); if (getShipStatus(ship) == 0) { if (getFleetStatus() == 0) { gameLost = true; this.notify(); return “Lost“; } return „Sunk“; } return „Hit“; }else{ this.notify(); return „Water“; }

Javakurs Ein wenig Hilfe fürs Gehirn if (isShip(row, column)) { // Schiff wurde getroffen int ship = getShip(row, column); if (getShipStatus(ship) == 0) { // Schiff wurde zerstört if (getFleetStatus() == 0) { // Flotte wurde zerstört gameLost = true; this.notify(); return „Lost“; } return „Sunk“; } return „Hit“; }else{ // Schiff wurde verfehlt this.notify(); return „Water“; }

Javakurs Lesbar // Schuss auf Spielfeld bei row/column if (isShip(row, column)) { return processHit(row, column); }else{ return processMiss(); }

Javakurs An unserem Beispiel public static void main(String args[]) { // -Menueschleife- // neues Spiel ? wenn nein, dann Ende // Wort wählen // -Spielschleife- // Spielstand ausgeben // Buchstaben erfragen // Eingabe bewerten // Spielstand aktualisieren // Spielende prüfen // -ende-

Javakurs An unserem Beispiel public static void main(String args[]) { // -Menueschleife- // neues Spiel ? wenn nein, dann Ende // Wort wählen // -Spielschleife- // Spielrunde durchführen // -ende-

Javakurs Ein Wort zur Performance ● First make it run, then make it run fast. ● Compiler optimiert Performance des Codes ● Erst über Performance nachdenken wenn das Programm zu langsam ist Brian Kernighan

Javakurs Zusammenfassung ● Analysephase – Überblick verschaffen – Teilprobleme identifizieren – Ordnung in das Chaos bringen ● Entwurfsphase – Ablaufplan erstellen – Teilprobleme zerlegen – Methoden extrahieren ● Implementierungsphase

Javakurs Happy coding