01_hallo.pdf

3
Aufgabenblatt 1 Grundlagen der Informatik, Sommersemester 2015 Abgabe: 4. Mai 2015, 18:00 Allgemeine Hinweise Damit wir Aufgaben sinnvoll korrigieren k¨ onnen m ¨ ussen die Abgaben ¨ ubsersetzbar sein. ¨ Ubersetzt Ihre Abgabe nicht (z.B. weil package-Anweisungen in Ihren Quellen enthalten sind), wird sie mit 0 Punkten bewertet. Sorgen Sie deswegen unbedingt vor der Abgabe daf¨ ur, dass alle Dateien ordnungsgem¨ aß ¨ ubersetzt werden k ¨ onnen (z.B. keine packages verwendet werden). Ihre Abgaben werden automatisch korrigiert. Bei den Downloads der ¨ Ubungsaufgaben finden Sie eine verk ¨ urzte Version dieses Tests zur Kontrolle. Bitte f¨ uhren Sie diesen vor der Abgabe durch um m¨ ogliche Fehler aus- zur ¨ aumen. Werden im Test Fehler angezeigt werden Sie sicher nicht die vollen Punkte auf Ihre Abgabe erhalten. Bewertet werden ausschließlich Abgaben die vor Ablauf der Abgabefrist korrekt ins EST hochgeladen wurden. Bitte pr ¨ ufen Sie nach dem hochladen im EST nochmals nach ob die Dateien ordnungsgem¨ aß ¨ ubertragen wur- den in dem Sie diese nochmals herunterladen und deren Inhalt ¨ uberpr¨ ufen. Die Lesbarkeit von Quellcode h ¨ angt teilweise sehr stark von dessen Formatierung ab. Deswegen bewerten wir in den Abgaben auch die Formatie- rung des Quellcodes anhand der in den ¨ Ubungen vorgestellten Codierrichtlinien und ziehen bei Verst¨ oßen bis zu 4 Punkte ab. Ein weiteres Problem sind Plagiate. Wir testen alle Abgaben automatisch auf Plagiate. Die dabei auffallenden Gruppen werden danach manuell ¨ uberpr¨ uft. Sind wir uns sicher, dass der Code nicht eigenst¨ andig erarbeitet wurde geben wir beiden beteiligten Parteien jeweils 0 Punkte auf die gesamte Aufgabe. Achtung: Die Ab- schreibtests erfolgen nicht immer zeitnah. In begr¨ undeten F ¨ allen werden wir vor Abschluss des Semesters auch r ¨ uckwirkend Plagiate eintragen. Aufgabe 1.1: Hallo Welt 5 Punkte Abzugebende Dateien: HelloWorld.java Das erste Programm, das jeder Informatiker in einer neuen Programmiersprache erstellt, ist Hello World. Auch Sie sollen die GdI-Vorlesung mit diesem einfachen Programm beginnen. 1. Erstellen Sie eine Java-Datei HelloWorld.java (Zum Beispiel mit Eclipse, Notepad oder einem anderen Texteditor ihrer Wahl) 2. Kopieren Sie den folgenden Text in die Datei: public class HelloWorld{ public static void main(String[] args){ System.out.println("Hello World!"); } } 3. F¨ uhren Sie ihr Programm aus und geben dieses im EST ab. 4. Deklarieren Sie in der main-Methode in der Zeile nach der Anweisung System.out.println("Hello World!"); eine Variable mit dem Name hallo und dem Datentypen float. 5. Initialisieren Sie die Variable hallo mit dem Wert 42. 6. Legen Sie eine weitere Variable mit dem Bezeichner welt ur einen ganzzahligen Datentyp an und initia- lisieren Sie diese mit dem Wert 23. 7. Geben Sie (mit System.out.println) die Summe von hallo und welt aus. 8. F¨ uhren Sie ihr Programm erneut aus und geben dieses nochmals im EST ab. Aufgabe 1.2: Runloop 14 Punkte Abzugebende Dateien: Runloop.java In den kommenden ¨ Ubungen werden wir h¨ aufig mit dem GdI-Framework arbeiten und damit Anwendungen F. Bauer, L. H¨ ocker, V. Lange, L. Schmidt https://gdi.cs.fau.de/s15 Seite 1 von 3

Upload: steffen

Post on 08-Jul-2016

213 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 01_Hallo.pdf

Aufgabenblatt 1Grundlagen der Informatik, Sommersemester 2015 Abgabe: 4. Mai 2015, 18:00

Allgemeine HinweiseDamit wir Aufgaben sinnvoll korrigieren konnen mussen die Abgaben ubsersetzbar sein. Ubersetzt Ihre Abgabenicht (z.B. weil package-Anweisungen in Ihren Quellen enthalten sind), wird sie mit 0 Punkten bewertet. SorgenSie deswegen unbedingt vor der Abgabe dafur, dass alle Dateien ordnungsgemaß ubersetzt werden konnen(z.B. keine packages verwendet werden).

Ihre Abgaben werden automatisch korrigiert. Bei den Downloads der Ubungsaufgaben finden Sie eine verkurzteVersion dieses Tests zur Kontrolle. Bitte fuhren Sie diesen vor der Abgabe durch um mogliche Fehler aus-zuraumen. Werden im Test Fehler angezeigt werden Sie sicher nicht die vollen Punkte auf Ihre Abgabeerhalten.

Bewertet werden ausschließlich Abgaben die vor Ablauf der Abgabefrist korrekt ins EST hochgeladen wurden.Bitte prufen Sie nach dem hochladen im EST nochmals nach ob die Dateien ordnungsgemaß ubertragen wur-den in dem Sie diese nochmals herunterladen und deren Inhalt uberprufen. Die Lesbarkeit von Quellcode hangtteilweise sehr stark von dessen Formatierung ab. Deswegen bewerten wir in den Abgaben auch die Formatie-rung des Quellcodes anhand der in den Ubungen vorgestellten Codierrichtlinien und ziehen bei Verstoßen biszu 4 Punkte ab.

Ein weiteres Problem sind Plagiate. Wir testen alle Abgaben automatisch auf Plagiate. Die dabei auffallendenGruppen werden danach manuell uberpruft. Sind wir uns sicher, dass der Code nicht eigenstandig erarbeitetwurde geben wir beiden beteiligten Parteien jeweils 0 Punkte auf die gesamte Aufgabe. Achtung: Die Ab-schreibtests erfolgen nicht immer zeitnah. In begrundeten Fallen werden wir vor Abschluss des Semestersauch ruckwirkend Plagiate eintragen.

Aufgabe 1.1: Hallo Welt 5 PunkteAbzugebende Dateien: HelloWorld.java

Das erste Programm, das jeder Informatiker in einer neuen Programmiersprache erstellt, ist Hello World. AuchSie sollen die GdI-Vorlesung mit diesem einfachen Programm beginnen.

1. Erstellen Sie eine Java-Datei HelloWorld.java (Zum Beispiel mit Eclipse, Notepad oder einem anderenTexteditor ihrer Wahl)

2. Kopieren Sie den folgenden Text in die Datei:

public class HelloWorld{

public static void main(String[] args){

System.out.println("Hello World!");

}

}

3. Fuhren Sie ihr Programm aus und geben dieses im EST ab.

4. Deklarieren Sie in der main-Methode in der Zeile nach der Anweisung System.out.println("Hello

World!"); eine Variable mit dem Name hallo und dem Datentypen float.

5. Initialisieren Sie die Variable hallo mit dem Wert 42.

6. Legen Sie eine weitere Variable mit dem Bezeichner welt fur einen ganzzahligen Datentyp an und initia-lisieren Sie diese mit dem Wert 23.

7. Geben Sie (mit System.out.println) die Summe von hallo und welt aus.

8. Fuhren Sie ihr Programm erneut aus und geben dieses nochmals im EST ab.

Aufgabe 1.2: Runloop 14 PunkteAbzugebende Dateien: Runloop.java

In den kommenden Ubungen werden wir haufig mit dem GdI-Framework arbeiten und damit Anwendungen

F. Bauer, L. Hocker, V. Lange, L. Schmidt • https://gdi.cs.fau.de/s15 Seite 1 von 3

Page 2: 01_Hallo.pdf

Aufgabenblatt 1Grundlagen der Informatik, Sommersemester 2015 Abgabe: 4. Mai 2015, 18:00

schreiben. Der Kern des Frameworks ist ein sogenannter Runloop, dessen Verhalten Sie in dieser Aufgabe im-plementieren sollen. Im Wesentlichen ist ein Runloop eine Endlosschleife, in der periodisch definierte Methodenaufgerufen werden.

1. Laden Sie das GdI-Framework (gdi-01.jar) fur diese Aufgabe von der GdI-Webseite herunter.

2. Binden Sie die .jar-Datei in Ihr Projekt ein (eine Beschreibung fur Eclipse finden Sie im UbungsfoliensatzKlassenbibliotheken auf der GdI-Webseite).

3. Erstellen Sie eine Java-Datei Runloop.java und fugen Sie dort den folgenden Text ein:

import gdi.game.runloop.GdiKit;

public class Runloop extends GdiKit{

public static void main(String[] args){

GdiKit.main(args);

}

protected static void setupWorld() {

}

protected static String update(String inStr, double time) {

return null;

}

protected static void render(String str){

}

}

4. Fuhren Sie Ihr Programm aus. Es sollte nun eine Text der Art Booting World with Version ... ange-zeigt werden.

5. Bevor der Runloop startet, muss das Programm durch einen Aufruf von setupWorld() initialisiert werden.Fugen Sie diesen am Ende der main-Methode ein.

6. Erweitern Sie den Rumpf der setupWorld-Methode so, dass die ZeichenketteStarte Verarbeitung...angezeigt wird. Starten Sie Ihr Programm. In der (Eclipse-)Konsole sollte der obige Text angezeigt werden.

7. Ihr Programm soll ein vorgegebenes Textdokument zeilenweise lesen, jede Zeile verschlusseln und an-schließend in einem vordefinierten Format auf der Konsole ausgeben. In einem Runloop gibt es dazutypischerweise zwei Methoden: update um Werte zu berechnen und render um Werte anzuzeigen.Erweitern Sie die render-Methode so, dass die ubergebene Zeichenkette str auf der Konsole ausgege-ben wird.

8. In der update-Methode soll die Zeichenkette in inStr mit Hilfe der Methode GdiKit.encrypt verschlusseltwerden. Verwenden Sie die Dokumentation (doc-01.zip fur diese Aufgabe auf der Webseite) fur eine ge-nauere Erklarung der Methode.Neben der zu verschlusselnden Zeichenkette muss noch ein Chiffre ubergeben werden. Dieser soll ausder Zeit berechnet werden. Multiplizieren Sie dazu die ubergebene Zeit mit 10 und speichern Sie die-se in einer int-Variable mit der Bezeichnung chiffre. Verwenden Sie den Modulo-Operator, um denso berechneten Wert in das Intervall 1-13 zu transformieren und ubergeben Sie diesen der MethodeGdiKit.encrypt. Eine ubergebene Zeit von 0.2s sollte also den Chiffre 3, die Zeit 1.7s den Chiffre 5erzeugen.

9. Die Methode update soll nicht mehr null zuruckgeben, sondern eine wie folgt formatierte Zeichenkette:[chiffre]:[inStr]:[GdiKit.encrypt(inStr, chiffre)].Fur den Aufruf update("Hallo", 1.7) soll also 5:Hallo:Mfqqt zuruckgegeben werden.

10. Bevor wir den eigentlichen Runloop einfugen konnen, muss noch die zu lesende Textdatei geladen und dieZeit initialisiert werden. Rufen Sie dazu GdiKit.loadTextFromFile und GdiKit.initTime in der MethodesetupWorld auf.

11. Nun kann der eigentliche Runloop am Ende der main-Methode eingefugt werden. Der Runloop soll eineEndlosschleife sein, die pro Durchlauf eine Zeile der geladenen Textdatei liest (GdiKit.getLine). DieseZeichenkette soll in update verschlusselt und das Ergebnis an render ubergeben werden. Wenn keine

F. Bauer, L. Hocker, V. Lange, L. Schmidt • https://gdi.cs.fau.de/s15 Seite 2 von 3

Page 3: 01_Hallo.pdf

Aufgabenblatt 1Grundlagen der Informatik, Sommersemester 2015 Abgabe: 4. Mai 2015, 18:00

weitere Zeile mehr gelesen werden kann, soll die Schleife verlassen werden.

12. Der update-Methode muss als weiterer Parameter die aktuelle Zeit (time in Sekunden) ubergeben wer-den. Verwenden Sie GdiKit.getTime(), um die korrekten Werte zu erzeugen. Starten Sie Ihr Programm.Es sollte in etwa die folgende Ausgabe angezeigt werden:Starte Verarbeitung...

1:We can only see:Xf dbo pomz tff

1:a short distance:b tipsu ejtubodf

1:ahead, but we can:bifbe, cvu xf dbo

1:see plenty there:tff qmfouz uifsf

1:that needs to be:uibu offet up cf

1:done.:epof.

1:(Alan Turing, 1950):(Bmbo Uvsjoh, 2061)

13. Die Ausgabe wird im Moment zu schnell erzeugt. Verwenden Sie die Dokumentation (doc-01.zip fur dieseAufgabe auf der Webseite), um eine Methode zu finden, mit der Sie sicherstellen konnen, dass die Schleifenur zweimal pro Sekunde durchlaufen wird.

14. Wenn Sie sicher sind, dass Ihr Programm korrekt funktioniert, testen Sie Ihre Abgabe mit dem studenti-schen Vorabtest.Dazu konnen Sie entweder die Zeile

GdiKit.main(args);

durch

GdiKit.main(new String[]{"--test"});

ersetzen oder Ihr Programm mit dem Argument --test (siehe Run Configurations→ Arguments→ Pro-gram Arguments in Eclipse) ausfuhren.

F. Bauer, L. Hocker, V. Lange, L. Schmidt • https://gdi.cs.fau.de/s15 Seite 3 von 3