Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Dr. Werner Struckmann 19. Oktober 2012 Programmieren I 1. Übungsblatt Die Rechnerübungen beginnen in der zweiten Semesterwoche. Sie können sich vom 19. bis 21. Oktober 2012 auf der Internet-Seite dieser Veranstaltung zu den Rechnerübungen anmelden. Wir bitten Sie dringend, sich in der Rechnerübung Ihrem Tutor vorzustellen. Sie können sich einen Partner/eine Partnerin suchen und sich gemeinsam vorstellen. Hinweis: Zur Arbeit an den Rechnern benötigen Sie eine y-Nummer. Falls Sie noch keine y-Nummer besitzen, besorgen Sie sich bitte umgehend eine im Gauß-IT-Zentrum. Die Aufgaben dieses Übungsblatts sollten während der Rechnerübungen vom 22. bis zum 26. Oktober 2012 bearbeitet werden. Sie brauchen die Einzelheiten der JavaProgramme noch nicht zu verstehen. Aufgabe 1: Melden Sie sich an einem der Rechner an. Ändern Sie Ihr Passwort. Gehen Sie dabei wie folgt vor: Nehmen Sie von einem Satz mit mindestens sechs Wörtern die Anfangsbuchstaben jedes Worts. Fügen Sie die Anzahl der Wörter des Satzes sowie zwei feste Sonderzeichen hinzu. Melden Sie sich anschließend ab und wieder an. Zur Änderung Ihres Passworts sollten Sie das Web-Interface https://www.tu-braunschweig.de/it/service-interaktiv/passwortaendern verwenden. Aufgabe 2: Am Ende dieses Aufgabenblatts finden Sie eine Zusammenstellung wichtiger Unix-Kommandos. Lesen Sie die Manual-Seiten zu den Kommandos und informieren Sie sich über ihre Optionen und Parameter. Die bekanntesten Unix-Shells sind die Programme sh, ksh, bash, zsh, csh und tcsh. Empfehlung: Machen Sie sie sich mit der bash-Shell oder der tcsh-Shell näher vertraut und wählen Sie eines der beiden Programme zu Ihrer Lieblingsshell. Sehen Sie sich in Ihrer Lieblingsshell insbesondere den Befehlspuffer, den Kommandozeileneditor, das Alias-Kommando sowie den Mechanismus zur Vervollständigung von Namen gründlich an. Einzelheiten zu den Kommandos und Shells können Sie auf den Folien zum Vorkurs Informatik nachlesen. Weitere Literaturhinweise erhalten Sie in der Vorlesung und auf der Internet-Seite dieser Veranstaltung. Aufgabe 3: Legen Sie in Ihrem Home-Verzeichnis das Verzeichnis aufgabe03 an. Geben Sie mit einem Editor in diesem Verzeichnis die Datei ProduktUndQuotient.java mit folgendem Inhalt ein. Die Auswahl des Editors bleibt Ihnen überlassen. public class ProduktUndQuotient { public static void main (String[] args) { int i; i = 232 * 67; System.out.println(i); i = 232 / 67; System.out.println(i); } } Übersetzen Sie das Programm mit dem Java-Compiler und führen Sie es anschließend mit dem Java-Interpreter aus: javac ProduktUndQuotient.java java ProduktUndQuotient Aufgabe 4: Was passiert, wenn Sie im Programm aus der vorigen Aufgabe a) ein Semikolon weglassen, b) 67 durch 0 ersetzen oder c) die Zeile int i durch int j austauschen? Lesen Sie sehr genau die Meldungen des Compilers. Aufgabe 5: Erstellen Sie eine Datei mit dem Namen Exp.java und folgendem Inhalt: public class Exp { public static void main(String[] a) { int i = 0, f = 1; double s = 1.0; System.out.printf("%3.8f%n",s); for (i = 1; i <= 12; i++) { f = f * i; s = s + 1.0/f; System.out.printf("%3.8f%n",s); } } } Der Text, den Sie soeben eingegeben haben, ist ein Java-Programm zur näherungsweisen Berechnung der Zahl e = 2,71828 . . . Übersetzen Sie dieses Programm, indem Sie den Befehl javac Exp.java ausführen. Starten Sie das übersetzte Programm durch den Befehl java Exp. Sie erhalten als Ausgabe eine Folge von Näherungswerten für e. Was passiert, wenn die Zeile s = s + 1.0/f; durch die Zeile s = s + 1/f; ersetzt wird? –2– Aufgabe 6: Ganz schön ärgerlich, wenn man einen dringenden Termin hat, am Bahnhof auf den Zug wartet und dann die freundliche Durchsage „Wegen Gleisbauarbeiten hat der gemäß Fahrplan um 13:47 Uhr ankommende Zug 23 Minuten Verspätung“ hört. Wann kommt der Zug schließlich an? Geben Sie einen Algorithmus an, der eine Uhrzeit in der Form „ab:cd Uhr“ und die Verspätung in Minuten als Eingabe erhält und die Ankunftszeit berechnet. Berücksichtigen Sie, dass die Verspätung mehr als eine Stunde betragen und der Zug auch nach Mitternacht eintreffen kann. Zur Formulierung Ihres Algorithmus können Sie zum Beispiel ein Flussdiagramm oder ein Struktogramm (Nassi-Shneiderman-Diagramm) verwenden. Beispiele hierfür finden Sie auf der Vorkurs-Seite in der PDF-Datei Folien 1 (Konzepte der Informatik). Beschreiben Sie Ihren Algorithmus noch nicht als Java-Programm. Wichtige Unix-Kommandos Verzeichnisse Shells ls cd mkdir rmdir sh, ksh, bash, zsh, csh, tcsh, . . . Anzeigen des Inhalts Verzeichniswechsel Anlegen eines Verzeichnisses Löschen eines Verzeichnisses Dateien Editor less cp mv rm diff cat lpr Dateibearbeitung Ansehen einer Datei Kopieren einer Datei Verschieben einer Datei Löschen einer Datei Vergleich von Dateien Konkatenieren von Dateien Drucken einer Datei tcsh (als Beispiel) tcsh exit setenv, unsetenv set, unset alias history Aufruf der Shell Beenden der Shell Umgebungsvariable Shell-Variable Abkürzungen Befehlsliste Umgebungsvariable: HOME, USER, SHELL, PATH, . . . tcsh-Variable: home, user, shell, path, prompt, cwd, . . . Editoren gedit, nedit, vi, emacs, . . . Informationen Pfade man info pwd . .. / Anzeige des aktuellen Pfads aktuelles Verzeichnis übergeordnetes Verzeichnis Wurzelverzeichnis Manual-Seiten Info-Seiten Java javac java –3– Compiler Interpreter