Friedrich-Schiller-Universität Jena Fakultät für Mathematik und Informatik Institut für Informatik Prof. Dr. E.-G. Schukat-Talamazzini Prof. Dr. P. Dittrich http://users.minet.uni-jena.de/~dittrich/, R3430 http://www.minet.uni-jena.de/fakultaet/schukat/ Übung zur Vorlesung Strukturiertes Programmieren WS 2016/17 Übungsblatt 1: JAVA - Erste Schritte Abgabe: 24.10.2016 Besprechung: 25.10.2016 1. Wiederholung (1h / 1P) Arbeiten Sie das Skript (Folien) zur laufenden Vorlesung durch. Schauen Sie sich auch ein paar Seiten zur kommenden Woche an. (a) Wie sehr interessieren Sie die kommenden Vorlesungsinhalte? links: gar nicht, rechts: sehr Grundlagen der Programmierung ———— ———— ———— ———— Symbol- und Informationsverarbeitung Aufbau eines Digitalrechners Daten- und Kontrollstrukturen Syntax und Semantik von Programmiersprachen Programmieren in Java ———— Ausdrücke, Deklarationen und Anweisungen ———— Klassen und komplexe Datenstrukturen ———— Objektorientiertes Programmieren Systematische Programmentwicklung ———— Algorithmen, Terminierung und Effizienz ———— Rekursion und Iteration ———— Programmverifikation (b) Haben sie die Vorlesung soweit verstanden, oder ist etwas unklar? 2. Praktische Übung - Linux und JAVA (3h / 7P) Machen Sie sich mit Ihrer Rechnerumgebung vertraut, geben Sie ein JAVA-Program ein, übersetzen Sie es und führen Sie es aus. Siehe Anhang für weitere Details. 1 Nach der praktischen Übung müssten Sie folgende Fragen beantworten können: 1. Wie heißen die passenden Terminal-Befehle? : : : : : : : : : : : an interface to the on-line reference manuals print name of current/working directory change file mode bits display a line of text concatenate files and print on the standard output report a snapshot of the current processes send a signal to a process display Linux processes list directory contents make directories remove empty directories 2. Welche Rechte werden mit chmod 0755 vergeben? lesen, schreiben und ausführen für alle lesen, schreiben und ausführen für den Nutzer lesen und ausführen für die Gruppe lesen und ausführen für andere Benutzer bg: 3. Was passiert, wenn man ls fsu-jena ausführt, aber es weder einen Ordner, noch eine Datei mit diesem Namen gibt? nichts ein Ordner mit dem Namen fsu-jena wird erzeugt eine Ausgabe erscheint mit dem Text: ls: cannot access ’fsu-jena’: No such file or directory eine Ausgabe erscheint mit dem Text: ls: action failed: No such file or directory das Terminal schließt sich und der Dateibrowser geht auf 4. Welches Kommando startet keinen Texteditor (vorausgesetzt, diese sind installiert) vim nano emacs cat gedit 5. Gibt es einen Unterschied, wenn man im Javaprogramm MyCode.java aus Aufgabe III.1 Zeile 6 system.out.println(); weglässt? ja, das Programm funktoniert nicht mehr ja, eine andere Ausgabe erscheint nein 3. Echo ”Hello World!” (1h / 2P) Schreiben Sie ein Programm, das Hello World! zehn mal ausgibt. Hinweis: nutzen Sie den Code auf den Anhang III.1 (Für besonders Schlaue: Ja, das geht tatsächlich mit dem soweit gelernten!) Wenn Sie fertig sind, wenden Sie sich an eine_n Tutor_in oder Drucken Sie den Code aus. 4. Bitte notieren Sie die Zeit, die Sie für die Übung benötigt haben! Viel Spaß und Erfolg! 2 A. Anhang zu Übungsblatt 1: JAVA - Erste Schritte Tipp von P. Dittrich: Besorgen Sie sich zur Vorbereitung des praktischen Teils mindestens ein gutes JAVA Buch. (mit Fokus auf Programmierung; nicht zu dick; keine Referenz, denn die gibt es besser im Web). Die Übung stützt sich auf folgendes Buch: [1] R. Sedgewick und K. Wayne, Einführung in die Programmierung mit Java, Pearson, München, 2011 Damit lernt man ruckzuck Programmieren und auch etwas JAVA. Es wird durch sehr nützliche Informationen im Netz ergänzt. Aus meiner Sicht, sehr empfehlenswert. I. Wählen Sie Ihre favorisierte Computerumgebung. Für Studierende der *-Informatik empfiehlt sich hier Linux; bspw. In Form unseres Linux-Pools oder einer eigenen Linux-Installation wie Debian oder Ubuntu LTS (falls keine Partition frei, unter Windows: VirtualBox + Ubuntu). Falls Sie unbedingt ein anderes OS als Linux nutzen wollen, sollte dies kein sonderliches Problem darstellen. Technische Fragen können wir in in anderen OS leider kaum beantworten. Im Folgenden, gehen wir von einer Linux-Umgebung aus. II. Erste Schritte mit dem Betriebssystem a) Loggen Sie sich ein und ändern Ihr Passwort b) Erzeugen Sie Verzeichnisse und editieren Sie Textdateien. c) Drucken Sie eine Textdatei aus. Probieren Sie folgende Kommandos und finden Sie heraus, was sie bedeuten: 21 22 23 24 25 26 27 Listing 1: Tutorial für Shell Befehle 1 echo " Hello , world ! " 2 ls 3 ls -l 4 ls - la 5 mkdir test 6 ls 7 cd test 8 ls - la 9 cd .. 10 chmod 0700 test 11 ls -l test 12 chmod 0000 test 13 cd test 14 chmod 0755 test 15 ls -l test 16 rmdir test 17 pwd 18 mkdir uebung 19 cd uebung 20 man echo 28 29 30 31 32 33 3 echo bla > text . txt ls cat text . txt less text . txt grep bla text . txt cat text . txt | grep bl emacs text . txt # das sollte einen Editor starten # Jetzt zum Terminal wechseln und Strg + z druecken : das stoppt den laufenden Prozess bg # und in den Hintergrund mit ihm ps # was laeuft kill -9 <pid > # beendet einen Prozess top # mit q verlassen man man Sie können nun über die Kommandozeile: Verzeichnisse anlegen und löschen. Sich in Verzeichnisstrukturen bewegen. Textdateien editieren und ausdrucken. Wildgewordene Programme killen (ps, kill -9). Sehen was so läuft (top, ps, who). III. Erste Schritte mit JAVA Wir wollen zunächst lernen, JAVA ohne eine integrierte Entwicklungsumgebung zu nutzen. Falls JAVA nicht bereits installiert ist finden Sie bspw. hier Informationen, die Sie bei der Installation unterstützen (aber auch anderes Nützliches): www.cs.princeton.edu/IntroProgramming III.1. Programm erzeugen Editieren Sie eine Textdatei (% bedeutet, dass es sich um ein eine Kommandozeile im Terminal handelt): % emacs MyCode.java Und tippen das folgende JAVA Programm ein: 1 public class HelloWorld 2 { 3 public static void main ( String [] args ) 4 { 5 System . out . print ( " Hello World ! " ) ; 6 System . out . println () ; 7 } 8 } Speichern und prüfen, ob alles ok ist: % cat MyCode.java Dies ist ein vollständiges JAVA-Programm. Es besteht aus einer Klasse namens HelloWorld mit nur einer Methode namens main. Innerhalb dieser Methode stehen zwei Anweisungen, die ausgeführt werden, wenn wir das Programm starten (s. unten). Diese Anweisungen geben dem Computer den Befehl Hello World ! auszugeben und den Cursor in die nächste Zeile zu bewegen. (JAVA erlaubt leider nicht einfach nur eine Anweisung zu geben. Es muss mindestens eine Klasse mit einer Methode main definiert werden, in der sich dann die Anweisungen befinden. Was eine Klasse und Methoden sind, lernen wir später.) III.2. Programm übersetzen (kompilieren, engl. compile) % javac HelloWorld.java Der Übersetzer javac erzeugt aus der Textdatei HelloWorld.java eine Computersprachenversion (hier: Bytecode) des Programms, nämlich HelloWorld.class. 4 III.3. Programm ausführen % java HelloWorld.class java ist ein Bytecode-Interpreter. Diesen benötigen wir, da unser Prozessor den JAVA-Bytecode nicht direkt ausführen kann. Weitere Erläuterungen, siehe Ref. [1], S. 26 – 35 Zusammenfassung: Sie können nun JAVA-Programme eintippen, übersetzen und ausführen. IV. Weitere Übungen Probieren Sie, was passiert wenn Sie folgende Wörter in HelloWorld.java weglassen bzw. fehlerhaft schreiben: a) public b) static c) void d) args B. Für die Abgabe der Übung • Wenden Sie sich an eine_n Tutor_in • Beantworten Sie die Fragen aus Aufgabe 2 • Zeigen Sie die Lösung zu Aufgabe 3 Wenn sie noch nicht so weit sind, dann: • Drucken Sie Ihre Lösung (Quellcode) zu Aufgabe 3 (Ausgabe von 10 x Hello World) und einen Beispiellauf aus. • Geben Sie den Ausdruck und Aufgabe 2 in der Übung ab. • Schicken Sie bitte mindestens den Code auch per E-Mail an die Tutoren. Die Tutoren bitten bei allen Abgaben um: • schön formatierten Code (hübsch eingerückt) – wir wollen ungern Code korrigieren, der in Word rein-kopiert wurde – keine Screenshots – Was dann? auch Texteditoren können drucken! – nutzt Funktionen wie print to file, exportieren, speichern als oder LATEX um ein PDF für die Abgabe zu generieren. • eine E-Mail mit Quellcode und Abgabe(.java, .pdf), eventuell in einem komprimierten Ordner (.zip) • mailto:[email protected] und mailto:[email protected] • Betreff: Struk-Prog: Abgabe Blatt 1 • Zusammenarbeit ist bei manchen Code-Aufgaben geduldet, aber gebt Bescheid, damit nicht die gleichen seltsamen Fehler zwei Mal korrigiert werden müssen! 5