Sitzung: Jeden Freitag in der Vorlesungszeit ab 16 Uhr c. t. im MAR 0.005. In der vorlesungsfreien Zeit unregelmäßig (Jemensch da?). Macht mit!

Eclipsekurs 2006/Tag 1: Unterschied zwischen den Versionen

(Aufgaben)
 
(60 dazwischenliegende Versionen von 12 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
== Aufgaben ==
+
== Erste Schritte ==
#Starte die Eclipse-Umgebung mit dem Kommando '''/home/pub/lib/eclipse/eclipse'''
+
* Starte die Eclipse-Umgebung mit dem Kommando '''/home/pub/lib/eclipse/eclipse'''
#Projekt anlegen
 
#*Erstelle ein Java-Projekt "eclipseTutorial" mit getrennten Ordnern für den Quellcode (''src'') und kompilierte class-Dateien (''bin'').
 
#*Lege in diesem Projekt eine neue Klasse "Spielwiese" an, die eine ''main''-Methode enthält.
 
#*Erweitere die Klasse zu einem "Hello World"-Programm und führe dieses in Eclipse aus.
 
#:''Tipp:'' Mit syso[Strg+Leerzeichen] erzeugt die Eclipse-Autocompletion ein System.out.println();
 
#*Verändere das Programm so, dass es einen beim Start übergebenden Parameter auf dem Bildschirm ausgibt.
 
#:''Tipp 1:'' Die Funktion main bekommt ihre Parameter als Array von Strings. Der Name des ersten übergebenen Parameters ist also args[0] .
 
#:''Tipp 2:'' Die Parameter des Programms kannst du in der Run-Configuration einstellen.
 
#*Baue Fehler in dein Programm ein (Semikolon löschen, Klammer löschen, Tippfehler) und sieh dir an, welche Korrekturvorschläge Eclipse anbietet. Spiele mit diesem Feature ein wenig herum. Du kannst Änderungen [Strg+Z] (Undo) jederzeit rückgängig machen.
 
#: ''Tipp:'' Beachte die "Problems"-Ansicht, sowie die Markierungen links und rechts vom Editorfenster. Manchmal muss man Änderungen allerdings erst speichern, damit die Anzeigen aktualisiert werden.
 
#Lege eine neue Klasse "tinyObject" an, welche '''keine''' main Methode enthält.
 
#*"tinyObject" soll drei Klassenvariablen enthalten. Wenn ein Objekt dieser Art erzeugt wird, weden diese mit einem beliebigen Wert initialisiert.
 
#*Erweitere "tinyObject" um eine Methode "void printYouselfAndThis(String text)", die den übergebenen Text sowie den Inhalt der Klassenvariablen auf der Konsole ausgibt.
 
#*''Hinweis:'' Sieh dir an, was passiert, wenn du in dieser Funktion "this." schreibst und anschließend kurz wartest oder die Autocomplition mit [Str+Space] aktivierst.
 
#*Zum Testen dieser Methode kannst du in der Klasse "Spielwiese" ein "tinyObject" erzeugen und darauf die Methode aufrufen.
 
#*Lege eine Methode "void keepLooping()" an welche eine Endlosschleife mit einer Consolenausgabe (z.B. "still looping") enthält. Führe diese Methode aus und brich die Ausführung mit einem der roten Stopbuttons ab.
 
  
==Aufgabe: Glücksspiel==
 
  
Bei diesem Spiel gibt es 37 Felder, auf die der Spieler 200 Euro (in Einheiten von 1 Euro) verteilt. Danach wird eine Zufallszahl n ermittelt und an den Spieler wird der Gewinn ausgezahlt. Die Gewinnsumme errechnet sich wie folgt:
+
=== Projekt anlegen ===
 +
* Erstelle ein Java-Projekt "eclipseTutorial" mit getrennten Ordnern für den Quellcode (''src'') und kompilierte class-Dateien (''bin'').
 +
** Konfiguriere dabei Eclipse so, das es ab jetzt diese Einstellung als Standardwert verwendet.
  
Summe( von i=0, bis 36,(board[i]*(6 − | i − n |)))
+
* Lege in diesem Projekt eine neue Klasse "Spielwiese" an, die eine ''main''-Methode enthält.
 +
* Erweitere die Klasse zu einem "Hello World"-Programm und führe dieses in Eclipse aus.
 +
''Tipp:'' Mit sysout [Strg+Leerzeichen] erzeugt die Eclipse-Autocompletion ein System.out.println();
  
wobei board[i] den Wert der Belegung des Feldes i darstellt.
+
=== Aufruf mit Parametern ===
Allerdings sollen nur positive Summanden in die Summe eingehen.
+
* Verändere das Programm so, dass es einen beim Start übergebenden Parameter auf dem Bildschirm ausgibt.
 +
''Tipp 1:'' Die Funktion main bekommt ihre Parameter als Array von Strings. Der Name des ersten übergebenen Parameters ist also args[0] .
 +
''Tipp 2:'' Die Parameter des Programms kannst du in der Run-Configuration einstellen.
  
===Berechnung der Gewinnsumme===
 
Vervollständige die ''play''-Funktion, welche bei der Eingabe
 
eines ''boards'' die Gewinnsumme errechnet. Die Funktion soll also die Aufgabe eines Spielleiters
 
bei einem Roulettespiel einnehmen.
 
  
''Tipp:'' Es wird sinnvoll sein, eine Methoden '''static int abs(int x)''' und eine Methode
+
=== Autocompletion ===
'''static int max(int x, int y)''' zu implementieren. '''abs()''' liefert dabei den Betrag
+
* Lege eine neue Klasse "TinyObject" an, welche '''keine''' main Methode enthält.
der übergebenen Zahl zurück, während '''max()''' den größeren der beiden übergebenen
+
* "TinyObject" soll drei Instanzvariablen enthalten. Wenn ein Objekt dieser Art erzeugt wird, sollen diese mit einem beliebigen Wert initialisiert werden.
Werte zurückliefert.
+
* Erweitere "TinyObject" um eine Methode "void printYourselfAndThis(String text)", die den übergebenen Text sowie den Inhalt der Instanzvariablen auf der Konsole ausgibt.
 +
* Sieh dir an, was passiert, wenn du in dieser Funktion "this." schreibst und anschließend kurz wartest oder die Autocompletion mit [Strg+Leerzeichen] aktivierst.
 +
* Lege eine Instanzvariable "diesIstEinLangerName" an. Schreibe irgendwo in der Klasse "diesIst" und drücke [Strg+Leerzeichen].
 +
* Erzeuge in der "Spielwiese" ein "TinyObject" und teste deine Methode.
  
 +
=== Autokorrektur ===
 +
* Baue Fehler in dein Programm ein (Semikolon löschen, Klammer löschen, Tippfehler) und sieh dir an, welche Korrekturvorschläge Eclipse anbietet. Spiele mit diesem Feature ein wenig herum. Du kannst Änderungen jederzeit rückgängig ([Strg+Z], Undo) machen.
 +
''Tipp:'' Beachte die "Problems"-Ansicht, sowie die Markierungen links und rechts vom Editorfenster. Manchmal muss man Änderungen allerdings erst speichern, damit die Anzeigen aktualisiert werden.
  
===Ideale Boardbelegungen===
 
Erstelle ein paar Board-Belegungen und versuche Deinen Gewinn
 
zu maximieren. Hierbei ist es n¨utzlich, die Gewinnfunktion zu verstehen. Mache Dir also klar
 
unter welchen Umst¨anden man wieviel gewinnt.
 
  
*Gibt es Zahlen die g¨unstiger sind als andere?
+
=== Templates ===
*Lohnt es sich auf einzelne Felder besonders viel zu setzen?
+
*Unter "windows -> preferences -> java -> editor -> templates" findest du die Schlüsselwörter für alle Templates, die du in Eclipse mit [Schlüsselwort][Strg+Leerzeichen] einsetzen kannst. Probiere einige Schlüsselwörter, die dir bekannt vorkommen aus.
*Ist es besser den Einsatz gleichm¨aßig zu verteilen?
 
  
Versuche eine m¨oglichst ideale Board-Belegung zu finden, indem du viele (z.B. 100 000) Spiele
+
=== Programmabbruch ===
mit Deiner festen Belegung simulierst. Falls Du magst, kannst Du auch andere Gewinnfunktionen
+
* Lege eine Methode "void keepLooping()" an, welche eine Endlosschleife mit einer Konsolenausgabe (z.B. "still looping") enthält. Führe diese Methode aus und brich die Ausführung mit dem roten Stop-Button ab.
ausprobieren. z.B. ∗36 bei einem Volltreffer und ∗6 falls eines der acht benachbarten Felder
+
 
getroffen wurde. Die Praktikabilit¨at einer neuen Gewinnfunktion kannst Du mit der L¨osung aus
+
=== Navigieren im Projekt ===
Aufgabe 3.1 ¨uberpr¨ufen. Der durchschnittliche Gewinn sollte den Einsatz nicht ¨uberschreiten!
+
* Sieh dir die "Outline"-Ansicht an und probiere aus, wie du mit ihr in deinen Klassen navigieren kannst.
 +
* Halte die [Strg] Taste gedrückt und gehe mit der Maus über einen Funktionsaufruf. Klicke ihn an. Was ist passiert?
 +
''Tip:'' Am oberen Rand des Fensters gibt es gelbe Vorwärts- und Rückwärts-Knöpfe - mit ihnen kannst du wie in einem Web-Browser die Plätze, die du mit [Strg]-Klick angesprungen hast, wieder besuchen.
 +
 
 +
=== Javadoc ===
 +
* Kommentiere deinen beiden Funktionen mit Javadoc.
 +
''Tipp:'' /**[Enter] in der Zeile vor einer Methode oder Klasse legt automatisch einen Javadoc-Rumpf mit allen benutzten Parametern an.
 +
* Bewege den Cursor in deinem Hauptprogramm auf eine Stelle, an der du eine der kommentierten Funktionen verwendest, und sieh dir die Javadoc-Ansicht an.
 +
 
 +
== Übungsaufgaben ==
 +
 
 +
Du hast jetzt einige der kleinen Helfer kennengelernt, mit denen Eclipse dich beim Programmieren unterstützt. Übung im Umgang mit Eclipse bekommst du allerdings erst, wenn du es verwendest, wofür wir euch im Folgenden zwei Übungsaufgaben gebastelt haben.
 +
Die Zeit hier im Tutorium wird vermutlich nicht ausreichen, um die Aufgeben fertig zu stellen, sie sollen nur eine Substanz bilden, an der ihr Eclipse ausprobieren könnt.
 +
 
 +
Aufgabe 1 führt euch langsam durch ein kleines Projekt, bei dem ihr Gelegenheit habt, alle Features, die ihr eben kennengelernt habt, auszuprobieren.
 +
 
 +
Aufgabe 2 ist ausschließlich für diejenigen, die schon einiges an Erfahrung in Java mitbringen und einfach nur ein wenig mit Eclipse programmieren wollen.
 +
 
 +
Viel Spaß!
 +
 
 +
 
 +
=== Aufgabe1 (für alle) ===
 +
 
 +
Für alle, die sie noch nicht kennen und alle, die sie noch einmal ordentlich schreiben wollen:
 +
 
 +
''' [[Javakurs2006/Rennschnecke| Die Rennschnecken]] '''
 +
 
 +
=== Aufgabe 2 (für Experten) ===
 +
 
 +
'''Cäsar-Chiffre'''
 +
 
 +
Im Folgenden soll ein Programm weitgehend selbstständig entwickelt werden. Lies dir das nötige Wissen zur [http://de.wikipedia.org/wiki/Caesar-Chiffre#Sicherheit Cäsar-Chiffre] im Web an und überleg dir selbst eine Struktur für dein Programm.
 +
 
 +
Mache dir auch Gedanken darüber, wie du die einzelnen Teile frühzeitig testen kannst.
 +
 
 +
 
 +
#Erstelle ein Programm, das einen Text aus einer Datei einliest, mit einem Schlüssel (einer Zahl zwischen 1 und 25) durch eine [http://de.wikipedia.org/wiki/Caesar-Chiffre#Sicherheit Cäsar-Chiffre] verschlüsselt und in einer neuen Datei (z.B. mit anderer Endung) speichert.
 +
#* Für mehr Komfort, aber nicht notwendig: Sowohl der Dateiname als auch der Schlüssel sollen über die Konsole eingegeben werden können.
 +
#* '''Tipp:''' Das Programm wird einfacher, wenn man als erstes den Text in Kleinschreibung umwandelt. Sonderzeichen, Leerzeichen und Zahlen können unverändert übernommen werden.
 +
#Erweitere dein Programm so, dass es einen Text entschlüsseln kann, der mit demselben Chiffrierverfahren verschlüsselt wurde. Der Schlüssel wird hierfür übergeben und der lesbare Text soll in einer separaten Datei gespeichert werden.
 +
#Erweitere dein Programm so, dass es in der Lage ist, einen beliebigen mit einer [http://de.wikipedia.org/wiki/Caesar-Chiffre#Sicherheit Cäsar-Chiffre] verschlüsselten Text mit Hilfe von [http://de.wikipedia.org/wiki/H%C3%A4ufigkeitsanalyse Häufigkeitsanalyse] zu entschlüsseln, ohne den Schlüssel zu kennen. Gib auch den gefundenen Schlüssel aus.
 +
 
 +
 
 +
'''Hinweis:''' Unsere Tutoren können dir bei allen auftretenden Javaproblemen helfen, wir können allerdings nicht garantieren, dass sie sich in ihrer Freizeit auch mit Kryptographie beschäftigen.
 +
 
 +
 
 +
'''Verschlüsseln / Entschlüsseln'''
 +
 
 +
#Trage einen von dir verschlüsselten Text mit mind. 50 Zeichen hier im Wiki ein und verlinke ihn auf dieser Seite unter deinem Namen. Entschlüssle andere Texte, die hier verlinkt sind.
 +
 
 +
Wenn du willst, kannst du deinen Chiffrieralgorithmus auch verändern oder einen anderen implementieren. Du solltest das aber im Link zu deinem verschlüsselten Texten aber auch kenntlich machen. Denke daran, dass du selbst in der Lage sein solltest, deine Texte bei gegebenem Schlüssel zu entschlüsseln ;)
 +
 
 +
----
 +
 
 +
[[Eclipsekurs 2006|Zurück zu Eclipse 2006]]

Aktuelle Version vom 5. November 2007, 10:04 Uhr

Erste Schritte

  • Starte die Eclipse-Umgebung mit dem Kommando /home/pub/lib/eclipse/eclipse


Projekt anlegen

  • Erstelle ein Java-Projekt "eclipseTutorial" mit getrennten Ordnern für den Quellcode (src) und kompilierte class-Dateien (bin).
    • Konfiguriere dabei Eclipse so, das es ab jetzt diese Einstellung als Standardwert verwendet.
  • Lege in diesem Projekt eine neue Klasse "Spielwiese" an, die eine main-Methode enthält.
  • Erweitere die Klasse zu einem "Hello World"-Programm und führe dieses in Eclipse aus.

Tipp: Mit sysout [Strg+Leerzeichen] erzeugt die Eclipse-Autocompletion ein System.out.println();

Aufruf mit Parametern

  • Verändere das Programm so, dass es einen beim Start übergebenden Parameter auf dem Bildschirm ausgibt.

Tipp 1: Die Funktion main bekommt ihre Parameter als Array von Strings. Der Name des ersten übergebenen Parameters ist also args[0] . Tipp 2: Die Parameter des Programms kannst du in der Run-Configuration einstellen.


Autocompletion

  • Lege eine neue Klasse "TinyObject" an, welche keine main Methode enthält.
  • "TinyObject" soll drei Instanzvariablen enthalten. Wenn ein Objekt dieser Art erzeugt wird, sollen diese mit einem beliebigen Wert initialisiert werden.
  • Erweitere "TinyObject" um eine Methode "void printYourselfAndThis(String text)", die den übergebenen Text sowie den Inhalt der Instanzvariablen auf der Konsole ausgibt.
  • Sieh dir an, was passiert, wenn du in dieser Funktion "this." schreibst und anschließend kurz wartest oder die Autocompletion mit [Strg+Leerzeichen] aktivierst.
  • Lege eine Instanzvariable "diesIstEinLangerName" an. Schreibe irgendwo in der Klasse "diesIst" und drücke [Strg+Leerzeichen].
  • Erzeuge in der "Spielwiese" ein "TinyObject" und teste deine Methode.

Autokorrektur

  • Baue Fehler in dein Programm ein (Semikolon löschen, Klammer löschen, Tippfehler) und sieh dir an, welche Korrekturvorschläge Eclipse anbietet. Spiele mit diesem Feature ein wenig herum. Du kannst Änderungen jederzeit rückgängig ([Strg+Z], Undo) machen.

Tipp: Beachte die "Problems"-Ansicht, sowie die Markierungen links und rechts vom Editorfenster. Manchmal muss man Änderungen allerdings erst speichern, damit die Anzeigen aktualisiert werden.


Templates

  • Unter "windows -> preferences -> java -> editor -> templates" findest du die Schlüsselwörter für alle Templates, die du in Eclipse mit [Schlüsselwort][Strg+Leerzeichen] einsetzen kannst. Probiere einige Schlüsselwörter, die dir bekannt vorkommen aus.

Programmabbruch

  • Lege eine Methode "void keepLooping()" an, welche eine Endlosschleife mit einer Konsolenausgabe (z.B. "still looping") enthält. Führe diese Methode aus und brich die Ausführung mit dem roten Stop-Button ab.

Navigieren im Projekt

  • Sieh dir die "Outline"-Ansicht an und probiere aus, wie du mit ihr in deinen Klassen navigieren kannst.
  • Halte die [Strg] Taste gedrückt und gehe mit der Maus über einen Funktionsaufruf. Klicke ihn an. Was ist passiert?

Tip: Am oberen Rand des Fensters gibt es gelbe Vorwärts- und Rückwärts-Knöpfe - mit ihnen kannst du wie in einem Web-Browser die Plätze, die du mit [Strg]-Klick angesprungen hast, wieder besuchen.

Javadoc

  • Kommentiere deinen beiden Funktionen mit Javadoc.

Tipp: /**[Enter] in der Zeile vor einer Methode oder Klasse legt automatisch einen Javadoc-Rumpf mit allen benutzten Parametern an.

  • Bewege den Cursor in deinem Hauptprogramm auf eine Stelle, an der du eine der kommentierten Funktionen verwendest, und sieh dir die Javadoc-Ansicht an.

Übungsaufgaben

Du hast jetzt einige der kleinen Helfer kennengelernt, mit denen Eclipse dich beim Programmieren unterstützt. Übung im Umgang mit Eclipse bekommst du allerdings erst, wenn du es verwendest, wofür wir euch im Folgenden zwei Übungsaufgaben gebastelt haben. Die Zeit hier im Tutorium wird vermutlich nicht ausreichen, um die Aufgeben fertig zu stellen, sie sollen nur eine Substanz bilden, an der ihr Eclipse ausprobieren könnt.

Aufgabe 1 führt euch langsam durch ein kleines Projekt, bei dem ihr Gelegenheit habt, alle Features, die ihr eben kennengelernt habt, auszuprobieren.

Aufgabe 2 ist ausschließlich für diejenigen, die schon einiges an Erfahrung in Java mitbringen und einfach nur ein wenig mit Eclipse programmieren wollen.

Viel Spaß!


Aufgabe1 (für alle)

Für alle, die sie noch nicht kennen und alle, die sie noch einmal ordentlich schreiben wollen:

Die Rennschnecken

Aufgabe 2 (für Experten)

Cäsar-Chiffre

Im Folgenden soll ein Programm weitgehend selbstständig entwickelt werden. Lies dir das nötige Wissen zur Cäsar-Chiffre im Web an und überleg dir selbst eine Struktur für dein Programm.

Mache dir auch Gedanken darüber, wie du die einzelnen Teile frühzeitig testen kannst.


  1. Erstelle ein Programm, das einen Text aus einer Datei einliest, mit einem Schlüssel (einer Zahl zwischen 1 und 25) durch eine Cäsar-Chiffre verschlüsselt und in einer neuen Datei (z.B. mit anderer Endung) speichert.
    • Für mehr Komfort, aber nicht notwendig: Sowohl der Dateiname als auch der Schlüssel sollen über die Konsole eingegeben werden können.
    • Tipp: Das Programm wird einfacher, wenn man als erstes den Text in Kleinschreibung umwandelt. Sonderzeichen, Leerzeichen und Zahlen können unverändert übernommen werden.
  2. Erweitere dein Programm so, dass es einen Text entschlüsseln kann, der mit demselben Chiffrierverfahren verschlüsselt wurde. Der Schlüssel wird hierfür übergeben und der lesbare Text soll in einer separaten Datei gespeichert werden.
  3. Erweitere dein Programm so, dass es in der Lage ist, einen beliebigen mit einer Cäsar-Chiffre verschlüsselten Text mit Hilfe von Häufigkeitsanalyse zu entschlüsseln, ohne den Schlüssel zu kennen. Gib auch den gefundenen Schlüssel aus.


Hinweis: Unsere Tutoren können dir bei allen auftretenden Javaproblemen helfen, wir können allerdings nicht garantieren, dass sie sich in ihrer Freizeit auch mit Kryptographie beschäftigen.


Verschlüsseln / Entschlüsseln

  1. Trage einen von dir verschlüsselten Text mit mind. 50 Zeichen hier im Wiki ein und verlinke ihn auf dieser Seite unter deinem Namen. Entschlüssle andere Texte, die hier verlinkt sind.

Wenn du willst, kannst du deinen Chiffrieralgorithmus auch verändern oder einen anderen implementieren. Du solltest das aber im Link zu deinem verschlüsselten Texten aber auch kenntlich machen. Denke daran, dass du selbst in der Lage sein solltest, deine Texte bei gegebenem Schlüssel zu entschlüsseln ;)


Zurück zu Eclipse 2006