Freitag, 30. April 2010
Robocup Junior 2010
Montag, 26. April 2010
ANT - encoding von Source
Sollte der Sourcecode anders codiert sein als
build.xml
, so sollte man sicherheitshalber beim <javac>
-Task das Encoding angeben:<javac srcdir="${src.dir}" destdir="${bin.dir}" encoding="ISO-8859-1"> <classpath refid="project.classpath" /> </javac>Besser ist es jedoch, grundsätzlich utf-8 zu verwenden: für Sourcecode und für das ANT-Script
build.xml
. Für den Sourcecode muss man den Text-Editor entsprechend einstellen, beim Ant-Script muss man zusätzlich das Encoding definieren:<?xml version="1.0" encoding="UTF-8"?>Sollte utf-8 nicht die Standard-Codierung des Betriebssystems sein, auf dem man entwickelt, so muss man beim direkten Übersetzen mit
javac
das Encoding angeben:javac -encoding UTF-8 *.java
Mittwoch, 21. April 2010
Xref (Cross Referenz)
Erstellen Sie ein Java-Program, welches für jedes gelesene Wort bestimmt, in welchen Zeilen es vorkommt.
Gegeben sei folgende Eingabe:
Das Programm soll dann diese Ausgabe liefern.
Es erzeugt also eine Liste von Worten (in der zuerst vorkommenden Schreibweise), mit der Anzahl der Vorkommnisse in Klammern und dann einer Liste von Zeilennummern.
Verwenden Sie dazu einen binären Baum für die Wörter und Listen für die Zeilennummern. Das bedeutet, dass wir einen Baum haben bei dem jeder Knoten eine Liste von Zeilennummern "enthält".
Das Programm soll von der Standardeingabe oder von beliebig vielen Dateien lesen.
Zur Erkennung von Wörtern lesen Sie hier: Wörter in der Eingabe erkennen
Nennen Sie das Projekt
Gegeben sei folgende Eingabe:
Das ist die erste Zeile und das ist die zweite Zeile und hier folgt die dritte Zeile. Satzzeichen gelten als Trenner. Folgendes ist kein W0rt und das 4uch nicht.
Das Programm soll dann diese Ausgabe liefern.
als (1): 4 Das (3): 1, 2, 5 die (3): 1, 2, 3 dritte (1): 3 erste (1): 1 Folgendes (1): 5 folgt (1): 3 gelten (1): 4 hier (1): 3 ist (3): 1, 2, 5 kein (1): 5 nicht (1): 6 Satzzeichen (1): 4 Trenner (1): 4 und (3): 1, 2, 5 Zeile (3): 1, 2, 3 zweite (1): 2
Es erzeugt also eine Liste von Worten (in der zuerst vorkommenden Schreibweise), mit der Anzahl der Vorkommnisse in Klammern und dann einer Liste von Zeilennummern.
Verwenden Sie dazu einen binären Baum für die Wörter und Listen für die Zeilennummern. Das bedeutet, dass wir einen Baum haben bei dem jeder Knoten eine Liste von Zeilennummern "enthält".
Das Programm soll von der Standardeingabe oder von beliebig vielen Dateien lesen.
Zur Erkennung von Wörtern lesen Sie hier: Wörter in der Eingabe erkennen
Nennen Sie das Projekt
xref
(also z.B. 2ad-maierhofer-java-xref
) und geben Sie am CVS ab.Binäre Bäume - Suchen von Namen und/oder Telefonnummern
Immer wieder will man nicht nur die Telefonnummer zu einem Namen suchen sondern auch umgekehrt zu einer Telefonnummer den Namen. Folgendes Programm hilft:
Erstellen Sie ein Programm
Telefonsuche.java
, welches aus einer (oder mehreren) Datei(en) Telefondaten einliest (Name, Vorname, Telefonnummer - entsprechende Klasse) und in zwei Bäume einträgt. Ein Baum sortiert nach Name, der zweite sortiert nach Telefonnummer. Dabei gibt es grundsätzlich zwei Möglichkeiten:- die Klasse hat jeweils zwei Paare von Nachfolgern, für jede Sortierung
- die Klasse hat nur ein Paar von Nachfolgern, eine Kopie wird im zweiten Baum eingetragen
Das Programm soll dann einfach einen String einlesen und zunächst im
Namenbaumsuchen. Kommt der String nicht vor, so ist dann im
Nummernbaumzu suchen.
Wie kann man nur nach Teilen des Namens bzw. der Nummer suchen?
Nennen Sie das Projekt
telefonsuche
, also z.B. 2ad-maierhofer-java-telefonsuche
.
Worthäufigkeiten mit binärem Baum ermitteln
Erstellen Sie ein Java-Programm welches für jedes gelesene Wort bestimmt, wie oft es vorkommt. Nach dem Ende der Eingabe (
Ein Beispiel, gegeben sei folgende Eingabe:
Das Programm soll dann diese Ausgabe liefern.
Es erzeugt also eine Liste von Worten (in der zuerst vorkommenden Schreibweise), mit der Anzahl der Vorkommnisse.
Das Programm soll von der Standardeingabe oder von beliebig vielen Dateien lesen.
Zur Erkennung von Wörtern lesen Sie hier: Wörter in der Eingabe erkennen
EOF
) ist eine Liste von Worten und deren Häufigkeiten auszugeben.Ein Beispiel, gegeben sei folgende Eingabe:
Das ist die erste Zeile und das ist die zweite Zeile und hier folgt die dritte Zeile. Satzzeichen gelten als Trenner. Folgendes ist kein W0rt und das 4uch nicht.
Das Programm soll dann diese Ausgabe liefern.
als 1 Das 3 die 3 dritte 1 erste 1 Folgendes 1 folgt 1 gelten 1 hier 1 ist 3 kein 1 nicht 1 Satzzeichen 1 Trenner 1 und 3 Zeile 3 zweite 1
Es erzeugt also eine Liste von Worten (in der zuerst vorkommenden Schreibweise), mit der Anzahl der Vorkommnisse.
Das Programm soll von der Standardeingabe oder von beliebig vielen Dateien lesen.
Zur Erkennung von Wörtern lesen Sie hier: Wörter in der Eingabe erkennen
Verwenden Sie dazu einen binären Baum für die Wörter.
Nennen Sie das Projekt
hauf
(also z.B. 2ad-maierhofer-java-hauf
) und geben Sie am CVS ab.Sonntag, 11. April 2010
ANT - ein Beispiel build.xml
AntDemo sei ein Projekt, das etwa so wie in dem Bild aussieht. Es enthält neben dem Sourcecode auch eine externe Library, im Verzeichnis vendor gespeichert.
Die Datei
Das Beispiel enthält nur eine einfache Datumsklasse und die entsprechenden Unit-Tests.
Den Sourcecode zum
Der Aufruf
Im
Weitere Informationen gibt es unter CRISP, ANT und JAR.
Quickreference für Ant: AntCoreRef.pdf
Die Datei
build.xml
enthält die Konfiguration für ANT zum Übersetzen, Testen und Erzeugen der fertigen Anwendung.Das Beispiel enthält nur eine einfache Datumsklasse und die entsprechenden Unit-Tests.
Den Sourcecode zum
build.xml
finden Sie hier: build.xmlDer Aufruf
ant
ohne Parameter (wenn die Datei build.xml
heißt, sonst müsste man etwa ant -buildfile build_1_1.xml
angeben) übersetzt alles und erzeugt im build
-Verzeichnis die ausführbare Datei antdemo.jar
.ant test
führt die Unit-Tests aus.ant clean
löscht alle erzeugbaren Dateien/Verzeichnisse.Im
build.xml
werden Ziele (targets) mit entsprechenden Abhänggkeiten definiert. Ant kann verschiedene Aufgaben ausführen, so ruft <javac>
den Java-Compiler auf.Weitere Informationen gibt es unter CRISP, ANT und JAR.
Quickreference für Ant: AntCoreRef.pdf
Mittwoch, 7. April 2010
Aufgabe Verkettete Listen - Partner finden für Tanzkurs
Teilnehmerinnen und Teilnehmer melden sich zu einem Tanzkurs an. Der Tanzlehrer stellt die Paare zusammen, indem er immer eine Frau aus der Liste der Teilnehmerinnen und einen Mann aus der Liste der Teilnehmer nimmt (und streicht).
Eine Liste wird immer vollständig leer werden, die zweite kann noch TeilnehmerInnen enthalten.
Erstellen Sie ein Programm, welches zwei Dateien, in denen die Namen sind, liest und die Namen in die entsprechende Liste (alphabetisch sortiert) einfügt.
Die Zusammenstellung der Paare erfolgt dann so, dass jeweils ein (zufälliges) Element aus der ersten Liste und ein (zufälliges) Element aus der zweiten Liste entfernt. Im einfacheren Fall wird das Paar einfach ausgegeben und die beiden Listenelemente freigegeben (alle Referenzen auf die Listenelemente auf
Für Paare wird es eine eigene Datenstruktur (Klasse) geben:
Aufrufbeispiel bei zufälliger Auswahl der Tanzpartner:
Dabei enthält die Datei
Nach dem Einlesen der Dateien sollten zwei Listen, etwa wie im Bild skizziert, enstehen:
Die Zuordnung der Paare erzeugt eine Liste wie folgt. Eine Dame bleibt bei in der Liste
Eine Liste wird immer vollständig leer werden, die zweite kann noch TeilnehmerInnen enthalten.
Aufgabenstellung mit verketteten Listen
Erstellen Sie ein Programm, welches zwei Dateien, in denen die Namen sind, liest und die Namen in die entsprechende Liste (alphabetisch sortiert) einfügt.
Die Zusammenstellung der Paare erfolgt dann so, dass jeweils ein (zufälliges) Element aus der ersten Liste und ein (zufälliges) Element aus der zweiten Liste entfernt. Im einfacheren Fall wird das Paar einfach ausgegeben und die beiden Listenelemente freigegeben (alle Referenzen auf die Listenelemente auf
null
setzen, sodass der Garbage Collector den Speicher freigeben kann). In der fortgeschrittenen Lösung wird das Paar in eine spezielle Liste übernommen, deren Elemente jeweils Referenzen auf die beiden Teilnehmer enthält. Zum Schluss wird diese Liste ausgegeben.Mögliche Datenstrukturen
class Teilnehmer { Teilnehmer next; String name; }An geeigneter Stelle sollte es etwas wie folgt geben:
Teilnehmer frauen = null; Teilnehmer maenner = null;
Für Paare wird es eine eigene Datenstruktur (Klasse) geben:
class Paar { Paar next; Teilnehmer frau; Teilnehmer mann; }An geeigneter Stelle sollte es etwas wie folgt geben:
Paar paare = null;
Gesamtprogramm und Tests
Aufrufbeispiel bei zufälliger Auswahl der Tanzpartner:
hp@l211 $ java TanzkursListe male female 6 Paare ======== Felix <-> Petra Franz <-> Sonja Harald <-> Elke Martin <-> Gabi Peter <-> Karin Reinhold <-> Brigitte Übriggebliebene =============== Andrea
Dabei enthält die Datei
male
die Namen der Männer und female
die Namen der Frauen:male
Harald Franz Martin Felix Peter Reinhold
female
Gabi Elke Sonja Brigitte Karin Petra Andrea
Nach dem Einlesen der Dateien sollten zwei Listen, etwa wie im Bild skizziert, enstehen:
Die Zuordnung der Paare erzeugt eine Liste wie folgt. Eine Dame bleibt bei in der Liste
frauen
:Samstag, 3. April 2010
Android - Robotik
Was hat Android mit Robotik zu tun? Alleine die Definition von Android im Wiktionary gibt schon einen schönen Bezug: "Roboter in menschenähnlicher (meist männlicher) Gestalt und mit menschenähnlichem Verhalten"
Das ist eine Seite. Eine weitere Verwendung von Android ist die der Plattform für mobile Geräte (Handys), die den Ursprung in Linux hat.
Aber ich habe heute eine weitere Verbindung im Netz gefunden: Ein Android-Handy steuert einen Roboter:
Hier ein Video in Aktion:
Nähere Informationen zu den Cellbots gibt es unter: http://www.cellbots.com und http://code.google.com/p/cellbots/
Zu Scripting für Android (wird bei den Robotern verwendet): http://code.google.com/p/android-scripting/
Da tun sich ja interessante Möglichkeiten auf, Scripting von Android-Handys und neue Roboter!
Das ist eine Seite. Eine weitere Verwendung von Android ist die der Plattform für mobile Geräte (Handys), die den Ursprung in Linux hat.
Aber ich habe heute eine weitere Verbindung im Netz gefunden: Ein Android-Handy steuert einen Roboter:
Hier ein Video in Aktion:
Nähere Informationen zu den Cellbots gibt es unter: http://www.cellbots.com und http://code.google.com/p/cellbots/
Zu Scripting für Android (wird bei den Robotern verwendet): http://code.google.com/p/android-scripting/
Da tun sich ja interessante Möglichkeiten auf, Scripting von Android-Handys und neue Roboter!
Abonnieren Posts [Atom]