Informatik II (D-ITET)
Übungsstunde 1
simon.mayer@inf.ethz.ch
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:
Fragen:
http://people.inf.ethz.ch/mayersi/
Per email an mich...
Skript
Online, i2/i22012
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
a * b =
a
2a * b/2
a + (2a * (b-1)/2)
wenn (b == 1);
wenn (b % 2 == 0);
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: Indigo
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!
Ü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
Generieren von Javadoc für gesamtes Projekt:
Project -> Generate Javadoc
Tutorial: http://homepages.thm.de/~hg7132/PIS/Uebungen/javadoc_tutorial.html
Informatik II (D-ITET)
Übungsstunde 1
simon.mayer@inf.ethz.ch
Distributed Systems Group, ETH Zürich