Tag 6 Repetitorium Informatik (Java)

Ähnliche Dokumente
Tag 4 Repetitorium Informatik (Java)

Eclipse Tutorial.doc

Programmieren I. Entwicklungsumgebungen Eclipse, NetBeans und IntelliJ IDEA. Institut für Angewandte Informatik

Technische Informatik für Ingenieure WS 2010/2011 Übungsblatt Nr. 3

Tag 4 Repetitorium Informatik (Java)

Programmieren I. Entwicklungsumgebungen Eclipse, NetBeans und IntelliJ IDEA. Institut für Angewandte Informatik

Informatik II - Übung 01

Technische Informatik für Ingenieure Winter 2005/2006 Übungsblatt Nr. 3

Kurzanleitung Eclipse

Tag 3 Repetitorium Informatik (Java)

Technische Informatik für Ingenieure WS 2010/2011 Musterlösung Übungsblatt Nr. 3

Informatik II Übung 1

Erste Schritte mit Eclipse

C/C++ Debugging mit CDT unter Eclipse

Informatik II - Übung 01

Java-Tutorium WS 09/10

Benutzung von Microsoft Visual Studio 2017

Kurze Bedienungsanleitung für den Java-Editor

Vom Testkonzept zu JUnit

Programmieren I. Entwicklungsumgebungen Eclipse und NetBeans. Institut für Angewandte Informatik

Einrichten einer Debug- Umgebung in Eclipse

Informatik für Elektrotechnik und Informationstechnik

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2017/18. Vorbereitende Aufgaben

Im Mathe-Pool startet man Eclipse am besten aus einer Shell heraus, und zwar indem man im Home- Verzeichnis den Befehl

Tag 7 Repetitorium Informatik (Java)

Programmieren in Haskell Debugging

IBM Software Demos Rational Systems Developer Introduction

Tag 3 Repetitorium Informatik (Java)

1.3.1 Java-Compiler installieren

Installation & Anwendung Xdebug für Eclipse

Für die Erstellung von Javaprogrammen sind eventuell zwei Komponenten nötig. 1. Das Java-Develepment-Kit (JDK) und die 2. Java Runtime Engine (JRE)

Übungsblatt 1. Java Vorkurs (WS 2017)

Java: Eine kurze Einführung an Beispielen

Praktikum zur Vorlesung Einführung in die Programmierung WS 17/18 Blatt 4

Aufgabenblatt 1: - Präsenzübung für die Übungen Do Mi Ausgabe Mi

SAP -Schnelleinstieg: ABAP-Entwicklung in Eclipse. Christoph Lordieck

2 Eine einfache Programmiersprache

Visual Basic Editor CATIA V5

Kurzanleitung zur Verwendung der Java-IDE NetBeans (1)

Java-Einführungskurs Informatik II (D-ITET) Vincent Becker,

Repetitorium Informatik (Java)

7. Einführung in C++ Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt

Tag 2 Repetitorium Informatik (Java)

Hinweise zu Eclise. Überblick: 1. Vorbermerkungen. 2. Einstieg in Eclipse. 3. Importieren des Praktikumsprojekts

Programmieren mit Edipse 3

(1)Einführung in Eclipse

II.1.1. Erste Schritte - 1 -

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben

Vorkurs Informatik WiSe 16/17

Darüber hinaus bietet SQuirreL eine Vielzahl von Plug-ins, mit denen der Funktionsumfang des Programms erheblich erweitert werden kann.

Java-Einführungskurs Informatik II (D-ITET) Vincent Becker,

Beispiel: Schriftliche Addition

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Tutorial 7 TEIL 1/2. Untersuchung von ebusiness Anwendungen auf der Basis des IBM WebSphere Developer V 7.0

2 Eine einfache Programmiersprache. Variablen. Operationen Zuweisung. Variablen

2 Eine einfache Programmiersprache

LEHRSTUHL FÜR DATENBANKEN

Grundlagen der OO- Programmierung in C#

Einführung in Eclipse und Java

Hello World! Eine Einführung in das Programmieren Das erste Programm

Desktop Schultz Informatik 1

Informatik I - Übung 2 Programmieren in Eclipse

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

Institut für Programmierung und Reaktive Systeme. Java 1. Markus Reschke

Informatik I. Übung 2 : Programmieren in Eclipse. 5. März Daniel Hentzen

II.1.1. Erste Schritte - 1 -

Microsoft Visual Studio Code mit RPG und IceBreak

2 Eine einfache Programmiersprache

Aufgabe 1. Universität Duisburg-Essen Fachbereich Mathematik Dr. O. Rheinbach

Eclipse und Java Einheit 01: Einführung in Eclipse

Java und Eclipse Installation, erstes Beispielprogramm

Dies ist der zweite Artikel einer Serie über Electron.

Informatik II Übung 1 Gruppe 7. Leyna Sadamori

Eclipse kann kostenlos unter dem folgenden Link herunter geladen werden:

Installation von NetBeans inkl. Glassfish Anwendungs-Server

Programmiertechnik Kontrollstrukturen

Einführung in das Programmieren

B) Klassenbibliotheken Turtle und Util (GPanel, Console) installieren Ein Unterverzeichnis classes auf der Festplatte erstellen, z.b.

B) Klassenbibliotheken Turtle und Util (GPanel, Console) installieren Ein Unterverzeichnis classes auf der Festplatte erstellen, z.b.

Transkript:

Tag 6 Repetitorium Informatik (Java) Dozent: Norbert Oster Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2016/2017

Willkommen zum Informatik-Repetitorium! auf Grund der hohen Teilnehmerzahlen: bitte zusammenrücken und keine Plätze in der Mitte freilassen Videoübertragung in mehrere Hörsäle: mit eigenem Notebook laut eigener Angabe im EST: Nachname A R Hörsaal H5 Nachname S Z Hörsaal H6 ohne eigenes Notebook laut eigener Angabe im EST: Nachname A J Hörsaal H15 Nachname K Sch Hörsaal H16 Nachname Sd Z Hörsaal H6 bei Bild- oder Tonausfall bitte im Hörsaal H15 melden für Zwischenfragen liegt auf dem Pult ein Mikrofon bereit Informatik-Repetitorium Tag 6 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 2 / 29

Übersicht Was bisher geschah... Einfache Text-Editoren Kommandozeile IDE: Eclipse Erste Schritte Programmieren Ausführen Debuggen Informatik-Repetitorium Tag 6 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 3 / 29

Was bisher geschah...

Bisher: Erweiterte Text-Editoren + überall verfügbar, einfach zu bedienen, bestenfalls mit Syntax-Highlighting keinerlei Unterstützung bei komplexeren Aufgaben oder Fehler gedit kwrite Programm getippt... und was jetzt? Informatik-Repetitorium Tag 6 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 5 / 29

Bisher: Erweiterte Text-Editoren + überall verfügbar, einfach zu bedienen, bestenfalls mit Syntax-Highlighting keinerlei Unterstützung bei komplexeren Aufgaben oder Fehler gedit kwrite Programm getippt... und was jetzt? Informatik-Repetitorium Tag 6 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 5 / 29

Bisher: Übersetzen und Ausführen auf der Kommandozeile + überall verfügbar, einfach zu bedienen keinerlei Unterstützung bei komplexeren Aufgaben oder Fehler So kann es einem dann schon mal auch so ergehen... : 1 Programm mühsam im Text-Editor getippt. 2 Wechsel zur Kommandozeile und Übersetzen mittels javac. 3 Feststellen, dass Code nicht übersetzbar ist... und was jetzt? 4 Wechsel zum Text-Editor Fehler suchen und suchen und suchen... Informatik-Repetitorium Tag 6 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 6 / 29

Bisher: Übersetzen und Ausführen auf der Kommandozeile + überall verfügbar, einfach zu bedienen keinerlei Unterstützung bei komplexeren Aufgaben oder Fehler So kann es einem dann schon mal auch so ergehen... : 1 Programm mühsam im Text-Editor getippt. 2 Wechsel zur Kommandozeile und Übersetzen mittels javac. 3 Feststellen, dass Code nicht übersetzbar ist... und was jetzt? 4 Wechsel zum Text-Editor Fehler suchen und suchen und suchen... Informatik-Repetitorium Tag 6 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 6 / 29

Bisher: Übersetzen und Ausführen auf der Kommandozeile + überall verfügbar, einfach zu bedienen keinerlei Unterstützung bei komplexeren Aufgaben oder Fehler So kann es einem dann schon mal auch so ergehen... : 1 Programm mühsam im Text-Editor getippt. 2 Wechsel zur Kommandozeile und Übersetzen mittels javac. 3 Feststellen, dass Code nicht übersetzbar ist... und was jetzt? 4 Wechsel zum Text-Editor Fehler suchen und suchen und suchen... Informatik-Repetitorium Tag 6 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 6 / 29

Bisher: Übersetzen und Ausführen auf der Kommandozeile + überall verfügbar, einfach zu bedienen keinerlei Unterstützung bei komplexeren Aufgaben oder Fehler So kann es einem dann schon mal auch so ergehen... : 1 Programm mühsam im Text-Editor getippt. 2 Wechsel zur Kommandozeile und Übersetzen mittels javac. 3 Feststellen, dass Code nicht übersetzbar ist... und was jetzt? 4 Wechsel zum Text-Editor Fehler suchen und suchen und suchen... javac - Versuch... benutzer@faui06a: /ordner$ javac Volumen.java Informatik-Repetitorium Tag 6 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 6 / 29

Bisher: Übersetzen und Ausführen auf der Kommandozeile + überall verfügbar, einfach zu bedienen keinerlei Unterstützung bei komplexeren Aufgaben oder Fehler So kann es einem dann schon mal auch so ergehen... : 1 Programm mühsam im Text-Editor getippt. 2 Wechsel zur Kommandozeile und Übersetzen mittels javac. 3 Feststellen, dass Code nicht übersetzbar ist... und was jetzt? 4 Wechsel zum Text-Editor Fehler suchen und suchen und suchen... javac - Versuch gescheitert benutzer@faui06a: /ordner$ javac Volumen.java Volumen.java:9: reached end of file while parsing } ^ Informatik-Repetitorium Tag 6 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 6 / 29

Bisher: Übersetzen und Ausführen auf der Kommandozeile + überall verfügbar, einfach zu bedienen keinerlei Unterstützung bei komplexeren Aufgaben oder Fehler So kann es einem dann schon mal auch so ergehen... : 1 Programm mühsam im Text-Editor getippt. 2 Wechsel zur Kommandozeile und Übersetzen mittels javac. 3 Feststellen, dass Code nicht übersetzbar ist... und was jetzt? 4 Wechsel zum Text-Editor Fehler suchen und suchen und suchen... Informatik-Repetitorium Tag 6 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 6 / 29

Bisher: Übersetzen und Ausführen auf der Kommandozeile + überall verfügbar, einfach zu bedienen keinerlei Unterstützung bei komplexeren Aufgaben oder Fehler So kann es einem dann schon mal auch so ergehen... : 1 Programm mühsam im Text-Editor getippt. 2 Wechsel zur Kommandozeile und Übersetzen mittels javac. 3 Feststellen, dass Code nicht übersetzbar ist... und was jetzt? 4 Wechsel zum Text-Editor Fehler suchen und suchen und suchen... 5 Gehe zu Schritt 1. Nicht vergessen... Nach einer Änderung der Quelltext-Datei muss das Programm vor der Ausführung erneut übersetzt werden. Informatik-Repetitorium Tag 6 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 6 / 29

IDE: Eclipse

Bisher: Jetzt: Eclipse Integrated Development Environment (IDE): Syntax-Highlighting und automatische Formatierung automatische Code-Vervollständigung beim Tippen automatische Anzeige von Fehlern direkt im Quellcode automatisches Übersetzen (javac) im Hintergrund Ausführung von Programmen mit nur einem Klick Integrierte Werkzeuge zum Testen und Debuggen von Programmen kann auch andere Sprachen außer Java (z.b. C/C++, Scala, PHP,... ) beherrscht auch andere Tätigkeiten (z.b. UML, Android-Apps, Web-Apps) u.v.m.... Informatik-Repetitorium Tag 6 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 8 / 29

Eclipse starten und einrichten: Je nach Betriebssystem und Installation: aus dem Programm-Menü aus dem Datei-Manager (evtl. Doppelklick) auf der Kommandozeile ($> eclipse &) 1 Startbild 2 Arbeitsverzeichnis wählen ggf. Pfad anpassen Haken setzen Entscheidung merken (je nach Version unterschiedlich) Informatik-Repetitorium Tag 6 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 9 / 29

Eclipse starten und einrichten: Je nach Betriebssystem und Installation: aus dem Programm-Menü aus dem Datei-Manager (evtl. Doppelklick) auf der Kommandozeile ($> eclipse &) 3 Willkommen zu Eclipse Hier geht es weiter! Manchmal steht hier noch mehr... Informatik-Repetitorium Tag 6 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 9 / 29

Erklärung der Bestandteile: WICHTIG: Hier muss J oder Java stehen! Der eigentliche Text-Editor... (kommt später) Projekte, Pakete, Dateien (kommt später) Allerlei Meldungen... Informatik-Repetitorium Tag 6 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 10 / 29

Was tun, wenn da andere Dinge stehen? 1 Falls hier nicht J oder Java steht... 2... dann bitte so die Perspektive... 3... auf Java ändern! Informatik-Repetitorium Tag 6 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 11 / 29

Neues Java-Projekt anlegen: über das Menü File oder Rechtsklick im Package Explorer und dann New Java Project 1 Projektname eingeben 2 Fertigstellen Informatik-Repetitorium Tag 6 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 12 / 29

Neue Klasse anlegen: über das Menü File oder Rechtsklick auf src und dann New Class 1 Klassenname eingeben 2 main-methode automatisch generieren! 3 Fertigstellen Informatik-Repetitorium Tag 6 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 13 / 29

Jetzt kann es richtig losgehen... 1 Hier wartet Arbeit... 2 Falls man die Stelle nicht gleich findet, kommt man mit einem Doppelklick hier zum Ziel. Informatik-Repetitorium Tag 6 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 14 / 29

Jetzt kann es richtig losgehen... 3 Falls man mal ein Fenster (z.b. Tasks) vermisst... 1 Hier wartet Arbeit... 2 Falls man die Stelle nicht gleich findet, kommt man mit einem Doppelklick hier zum Ziel. Informatik-Repetitorium Tag 6 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 14 / 29

Programmieren mit Eclipse Syntax-Highlighting im Editor automatische Prüfung auf Anomalien und Tipps zur Verbesserung kontinuierliche Fehlerprüfung mit Hinweisen zur Korrektur Automatische Formatierung mittels Umschalt+Strg+F do it! 1 Java-Schlüsselwörter (lila) 2b zum Cursor korrespondierende Klammer hervorgehoben 2a akt. Cursor-Position 3 Text-Konstante (blau) 4 Kommentar (grün) Informatik-Repetitorium Tag 6 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 15 / 29

Programmieren mit Eclipse Syntax-Highlighting im Editor automatische Prüfung auf Anomalien und Tipps zur Verbesserung kontinuierliche Fehlerprüfung mit Hinweisen zur Korrektur Automatische Formatierung mittels Umschalt+Strg+F do it! 1 Anomalie: Nicht unbedingt falsch, aber vermutlich sinnlos... 2 Mauszeiger auf unterringelten Bereich bewegen 3 Korrekturvorschläge mit einem Klick automatisch anwenden (Vorschläge nicht immer sinnvoll Programmierer muss mitdenken!) Nur Warnings: Programm kann i.d.r. trotzdem übersetzt und ausgeführt werden. Informatik-Repetitorium Tag 6 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 15 / 29

Programmieren mit Eclipse Syntax-Highlighting im Editor automatische Prüfung auf Anomalien und Tipps zur Verbesserung kontinuierliche Fehlerprüfung mit Hinweisen zur Korrektur Automatische Formatierung mittels Umschalt+Strg+F do it! Fehler! Fehler! Lösung! Fehler! Fehler! Lösung! Auch Errors: Programm kann erst gar nicht übersetzt werden! Informatik-Repetitorium Tag 6 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 15 / 29

Programmieren mit Eclipse Syntax-Highlighting im Editor automatische Prüfung auf Anomalien und Tipps zur Verbesserung kontinuierliche Fehlerprüfung mit Hinweisen zur Korrektur Automatische Formatierung mittels Umschalt+Strg+F do it! vorher: hä? Shift-Ctrl+F nachher: aha! Informatik-Repetitorium Tag 6 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 15 / 29

Automatische Code-Vervollständigung: Strg+Leertaste auf Basis der Java-Bibliothek (API) mittels Abkürzungen (vordefinierte oder eigene) durch Kenntnis des restlichen Programms 1 Nach automatisch oder mit Ctrl+Space 3 Kurze Erklärung zur links ausgewählten Methode. 2 Vorschläge für mögliche Methoden. Informatik-Repetitorium Tag 6 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 16 / 29

Automatische Code-Vervollständigung: Strg+Leertaste auf Basis der Java-Bibliothek (API) mittels Abkürzungen (vordefinierte oder eigene) durch Kenntnis des restlichen Programms Ctrl+Space 1 Abkürzung sysout wird... 2... zu System.out.println(); Informatik-Repetitorium Tag 6 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 16 / 29

Automatische Code-Vervollständigung: Strg+Leertaste auf Basis der Java-Bibliothek (API) mittels Abkürzungen (vordefinierte oder eigene) durch Kenntnis des restlichen Programms Informatik-Repetitorium Tag 6 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 16 / 29

Unterstützung bei der Navigation: Strg+Mausklick markiert Deklaration und Verwendungen der gleichen Variable, Methode,... springt an die Stelle der Deklaration wie im Browser: Strg+Mausklick 1a Deklaration der Variablen jahr 1b Verwendungen der Variablen jahr 2 Strg+Mausklick : springt zu Deklaration/Implementierung (Hyperlink). Informatik-Repetitorium Tag 6 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 17 / 29

Umfangreiche Unterstützung beim Refactoring! hier exemplarisch: Umbenennen aller Vorkommen der gleichen Variablen 1 Variable markieren (Cursorposition). 2a Im Menü Refactor Rename aufrufen... 2b... oder gleich Shift+Alt+R drücken Informatik-Repetitorium Tag 6 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 18 / 29

Umfangreiche Unterstützung beim Refactoring! hier exemplarisch: Umbenennen aller Vorkommen der gleichen Variablen hier hier hier hier 3 Neuen Bezeichner eintippen und Enter drücken. Informatik-Repetitorium Tag 6 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 18 / 29

Programme ausführen mit Eclipse 1 Speichern! 2 Run-Taste drücken... 3 Ausgabe hier in der Console (vormals Kommandozeile ) beobachten! Informatik-Repetitorium Tag 6 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 19 / 29

Programm startet nicht richtig - was tun? 3 Fehler beheben: auf neben Run drücken... 2 Fehler verstehen: Keine Argumente angegeben... 1 Fehlermeldung lesen und draufklicken! Informatik-Repetitorium Tag 6 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 20 / 29

Programm startet nicht richtig - was tun? 3 Fehler beheben: auf neben Run drücken... 2 Fehler verstehen: Keine Argumente angegeben... 1 Fehlermeldung lesen und draufklicken! Informatik-Repetitorium Tag 6 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 20 / 29

Programm startet nicht richtig - was tun? 1 Register Arguments aufrufen. 2 Argumente wie auf Kommandozeile eingeben... 3 Und gleich nochmal versuchen... Informatik-Repetitorium Tag 6 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 20 / 29

Programm startet nicht richtig - was tun? Input - //////// Caput - Output Informatik-Repetitorium Tag 6 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 20 / 29

Debugging Fehler finden mit Eclipse First actual case of bug being found. [Grace Hopper, 09.09.1947] Quelle: Wikipedia Bug heute: Programmfehler (verursacht Fehlverhalten des Programms) Debugging = Bug 1. Diagnostizieren 2. Lokalisieren 3. Eliminieren Informatik-Repetitorium Tag 6 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 21 / 29

Debugging Fehler finden mit Eclipse First actual case of bug being found. [Grace Hopper, 09.09.1947] Quelle: Wikipedia Bug heute: Programmfehler (verursacht Fehlverhalten des Programms) Debugging = Bug 1. Diagnostizieren 2. Lokalisieren 3. Eliminieren Informatik-Repetitorium Tag 6 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 21 / 29

Debugging Fehler 0. Programmieren Spezifikation zu Höchste Fakultät : Schreiben Sie ein Programm MaxFactorial.java, das von einer Ganzzahl (int i) die höchste Fakultätszahl n! i berechnet. Geben Sie n, n! und i auf der Kommandozeile aus. Hinweis: Gehen Sie bei der Aufgabe so vor, dass Sie (wie im Beispiel auf den Folien) die Fakultätszahlen solange aufsteigend berechnen, bis Sie auf eine stoßen, die i überschreiten würde. Für i = 7 berechnen Sie also 1! = 1, 2! = 2 sowie 3! = 6 und hören dann auf, da die nächste Fakultät (4! = 24) größer als 7 wäre. Informatik-Repetitorium Tag 6 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 22 / 29

Debugging Fehler 1. Diagnostizieren Erster Implementierungsversuch zu Höchste Fakultät Testfall mit i = 7 wie im Beispiel. STOPP! Testausführung hier abbrechen. Fehler diagnostiziert: Da kommt nix raus... Informatik-Repetitorium Tag 6 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 23 / 29

Debugging Fehler 2. Lokalisieren Mit Doppelklick hier einen Haltepunkt (Breakpoint) setzen! Informatik-Repetitorium Tag 6 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 24 / 29

Debugging Fehler 2. Lokalisieren Programm im Debug-Modus starten! Informatik-Repetitorium Tag 6 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 24 / 29

Debugging Fehler 2. Lokalisieren Eclipse-Fenster in den Debug-Modus wechseln lassen. Informatik-Repetitorium Tag 6 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 24 / 29

Debugging Fehler 2. Lokalisieren Steuerung der weiteren Programmausführung. Bislang deklarierte Variablen ggf. samt aktuellem Wert. Programmausführung unmittelbar vor dieser Zeile (Haltepunkt) angehalten. Informatik-Repetitorium Tag 6 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 24 / 29

Debugging Fehler 2. Lokalisieren Wird durch einen Breakpoint die Programmausführung unterbrochen, kann der Entwickler angeben, wie die Ausführung fortgesetzt werden soll: Resume (F8): Ausführung wird bis zum Erreichen des nächsten Breakpoints fortgesetzt. Step Into (F5): Führt die aktuelle Zeile aus und springt zur nächsten. Enthält die aktuelle Zeile einen Methodenaufruf, wird zur ersten Anweisung dieser Methode gesprungen. Step Over (F6): Führt die aktuelle Zeile aus und springt zur nächsten. Methodenaufrufe werden, anders als bei F5, nicht verfolgt (es wird nicht in die Methode gesprungen). Step Return (F7): Kehrt zurück zum Aufrufer. Wird innerhalb einer Methode F7 gedrückt, wird die aktuelle Methode ausgeführt und nach der Rückkehr zum Aufrufer der Methode die Ausführung wieder unterbrochen. Resume (F8) Step Into (F5) Step Over (F6) Step Return (F7) Terminate (Ctrl+F2) Informatik-Repetitorium Tag 6 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 24 / 29

Debugging Fehler 2. Lokalisieren Der Wert von n hat sich in der letzten Zeile geändert! Nach 5 Step Over (F6) erreichen wir diese Zeile. Informatik-Repetitorium Tag 6 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 24 / 29

Debugging Fehler 2. Lokalisieren Der Wert von nfak hat sich in der letzten Zeile nicht geändert! Nach 6 Step Over (F6) erreichen wir wieder den Schleifenkopf. Informatik-Repetitorium Tag 6 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 24 / 29

Debugging Fehler 2. Lokalisieren Nach insgesamt 41 Step Over (F6)...... hat sich nur der Wert von n (Schleifenzähler) geändert! So wird die Schleifenbedingung (nfak * n < i) ja nie false. Fehler (vermutlich) gefunden: nfak darf nicht bei 0 beginnen! Informatik-Repetitorium Tag 6 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 24 / 29

Debugging Fehler 3. Eliminieren Bug debugged!? Sieht doch ganz gut aus... Informatik-Repetitorium Tag 6 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 25 / 29

Kleiner Exkurs in große Gebiete: Testen Testen ist eine Kunst für Generationen von Software-Ingenieuren Vorlesung Testen von Softwaresystemen (https://pswt.cs.fau.de/tsws) Tipps für eigene Programme: gründlich testen dabei auch Sonderfälle und Grenzwerte verwenden Beispiel Höchste Fakultät : Sonderfälle: negative Eingabe für i Testfall 1: i = 42 sehr große Eingabe (MAX_VALUE) für i Testfall 2: i = 2147483647 Grenzwerte: 0, null,,... Testfall 3: i = 0 i unmittelbar vor einer Fakultät (z.b. 5! = 120) Testfall 4: i = 119 i ist genau eine Fakultät Testfall 5: i = 120 i unmittelbar nach einer Fakultät Testfall 6: i = 121 Informatik-Repetitorium Tag 6 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 26 / 29

Ausblick: Testen mit JUnit Testfälle getrennt von der Lösung (eigene Klasse/Methoden). Roter Balken: einige Testfälle nicht bestanden! Testfall 4 nicht bestanden! Testfall 2 abgebrochen (Timeout)! Erwartetes vs. tatsächliches Ergebnis! Informatik-Repetitorium Tag 6 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 27 / 29

Ausblick: Testen mit JUnit Vermutlich nur noch nicht genug getestet... Informatik-Repetitorium Tag 6 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 27 / 29

Fragen? Fragen! (hilft auch den anderen)

Jetzt: Praktische Übungen mit eigenem Notebook: Nachname A R Hörsaal H5 Nachname S Z Hörsaal H6 bitte erstmal sitzen bleiben! ohne eigenes Notebook in den Rechnerräumen: Tutoren verteilen Gruppenzettel am Ausgang die Einteilung ist zunächst fest für das gesamte Repetitorium Informatik-Repetitorium Tag 6 WS 2016/2017 Lehrstuhl für Informatik 2 (Programmiersysteme) 29 / 29