Übung 1 - ETH Zürich

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:
 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
[email protected]
Distributed Systems Group, ETH Zürich
Herunterladen