Informatik II (D-ITET)

Werbung
Informatik II (D-ITET)
Übungsstunde 1
[email protected]
Distributed Systems Group, ETH Zürich
Ablauf
 Überblick + Administratives
 Besprechung der Vorlesung
 Einführungsthemen: Eclipse, JUnit, Serienabgabe
 Übungsbezogene Themen: Exceptions, Javadoc,...
This semester’s menu...
 (Weitere) Grundlagen der Programmierung
 Objektorientierung; Modellbildung, Formalisierung, Abstraktion
 Algorithmen (anhand von Java)
 Suchen, Rekursion, Backtracking
 Komplexität
 Datenstrukturen
 (Spiel)Bäume, Heaps, Listen

Weiteres: Simulation, Testen/Debugging, Parallelität
Administratives
 Abgabe der Übungen (zu zweit!)
 So viel wie möglich per email...
 [aber v.a. theoretische Übungen handschriftlich...]
 Gruppeneinteilung jetzt!
 Abgabe: Mittwoch, 14:00!
 Per Email...
 In der Übungsstunde...
 Per Briefkasten (CNB H Stock)...
Administratives
 Fragen zum Stoff/Vorlesung/Übungen
 Folien online:http://people.inf.ethz.ch/mayersi/
 Fragen:
Per email an mich...
 Skript: Online
 Prüfung
 Sowohl theoretisches Wissen (z.B. Komplexität von Algorithmen)
 ...als auch «praktische» Programmierung (i.e., mit Papier und Kuli)
Testat
 Wöchentliche Aufgabenblätter
 Insgesamt mindestens 75% der Aufgaben bearbeitet
 ...und mindestens 50% der Punkte erreicht
 Punkte = Punkte der Übungen 1 bis 11
 Übung 12: Bonus!
 Keine verspäteten Abgaben
Plagiate
 Schlechte Prüfungsvorbereitung...
 0 Punkte für Aufgabenblatt
Ablauf
 Überblick + Administratives
 Besprechung der Vorlesung
 Einführungsthemen: Eclipse, JUnit, Serienabgabe
 Übungsbezogene Themen: Exceptions, Javadoc,...
Thema: Java Kurzrepetition
package u0a1;
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
Besprechung der Vorlesung
 Java Programmbau und Ausführung (Übung 0)
 Datei Mult.java mit einem Java-Programm als Inhalt...
1. Kompilieren: Sourcecode  Java Bytecode
javac Mult.java
...generiert Datei «Mult.class», die den Bytecode enthält
2. Aufrufen:
java Mult.class
Besprechung der Vorlesung
 Algorithmen
 Altägyptische Multiplikation als Beispiel: Wieviel ist a*b?
a
wenn (b == 1);
a * b =
2a * b/2 wenn (b % 2 == 0);
a + (2a * (b-1)/2)sonst;
Problem wird auf kleinere «Version» desselben Problems reduziert
 Rekursion (Erinnerung an Info I?)
Warum «kleiner»?
 Kann man die Rekursion auch über das «a» verankern?
Ablauf
 Überblick + Administratives
 Besprechung der Vorlesung
 Einführungsthemen: Eclipse, JUnit, Serienabgabe
 Übungsbezogene Themen: Exceptions, Javadoc,...
Thema: Eclipse IDE
 Integrated Development Environment
 Derzeitige Version: Juno
 Menge an hilfreichen Features, z.B. smarte code
completion, Projektverwaltung,...
Thema: JUnit 4
 Bibliothek zum automatisierten Verifizieren und Validieren
von Software
 Wird mit Eclipse mitgeliefert (als Plugin)
 Einbinden in Eclipse Projekt:
1.
Rechtsklick auf Projekt -> Build Path -> Configure Build Path
2. Add Libraries...
3. «JUnit»
4. «Junit 4»
Thema: Übungsabgabe
1. Archiv herunterladen und entpacken
2. Eclipse: Neues Java Projekt
3. Weiter -> «Link additional sources»
4. Bearbeiten/Aufgaben lösen
5. Packen/Zippen + Abschicken
- Überprüfen, ob .java-Files auch tatsächlich enthalten sind!
 Demo?
 Neues Projekt aus Übung 0 + externe Quellen
 Übungsdaten Import/Export
 Programmausführung + Run Configurations
Ablauf
 Überblick + Administratives
 Besprechung der Vorlesung
 Einführungsthemen: Eclipse, JUnit, Serienabgabe
 Übungsbezogene Themen: Exceptions, Javadoc,...
Übung 0
 Aufgabe 1:
HelloWorld.java
public static void main(String[] args) {
System.out.println("Hello World");
}
 Aufgabe 2:
Signum.java + Main.java
public static void main(String[] args) {
System.out.println("signum(-3) = " + Signum.signum(-3));
System.out.println("signum(0) = " + Signum.signum(0));
System.out.println("signum(7) = " + Signum.signum(7));
}
 Aufgabe 3:
Automatisiertes Testen
 Aufgabe 4:
Und ein bisschen «Theorie» und Modellbildung mit Wein
Übung 1
 1. Terminierung & Korrektheit (altägyptische Multiplikation)
 2. Rekursion, Aufwandabschätzung für Algorithmen
 3. Exceptions, Unit-Testing, Dokumentieren von Programmen
Übung 1 - Terminierung & Korrektheit
 Altägyptische Multiplikation
 Induktionsbeweis
 Verankerung (Beweis, dass korrekt für Base Case)
 Schritt (Erweiterung des Beweises für Schritt i auf Schritt i+1
a) Funktioniert Induktion auch über die Variable a?
b) Terminiert der Algorithmus? Beweisen!
c) Veränderter Algorithmus! Base Case ist nun nicht mehr (b = 1) sondern (b =
0)! Neuer Beweis erforderlich...
Übung 1 - Aufwandabschätzung für Algorithmen
 Wieviele Methodenaufrufe erzeugen...
gerade(int x)
verdopple(int x)
halbiere(int x)
f(int a, int b)noch keine Rekursion!
f(int a, int b)nun mit Rekursion!
...Resultat aus b) verwenden!
...Berechnung ist ein bisschen involvierter... Durchbeissen!
Übung 1 – Benutzereingaben / Exceptions
 “An exception is an event that occurs during the execution of a
program that disrupts the normal flow of instructions.”
 Exceptions können geworfen (throw) und abgefangen (catch) werden
 Demo!
Tutorial: http://download.oracle.com/javase/tutorial/essential/exceptions/
Übung 1 – Benutzereingaben / Unit Testing
 Automatisiertes Verfizieren und Validieren von Code
 JUnit4
 Demo (Übung 0)!
Übung 1 – Benutzereingaben / Javadoc
 Semantische Annotationen






@author name
@version version
@since JDK-Version
@param name description
@return description
@exception classname description
 Demo: Methode halbautomatisch annotieren
 Generieren von Javadoc für gesamtes Projekt:
Project -> Generate Javadoc
Tutorial: http://homepages.thm.de/~hg7132/PIS/Uebungen/javadoc_tutorial.html
 Debugging in Eclipse
– Breakpoints
– Variablen beobachten
– Stepping in/out/step
Informatik II (D-ITET)
Übungsstunde 1
[email protected]
Distributed Systems Group, ETH Zürich
Herunterladen