FOM Essen / FH Bochum Fachbereich { Mechatronik und Maschinenbau Prof. Dr. M. Eikelberg SS 2009 Fachprufung Informatik 06.07.2009 Name: Vorname: Matrikelnr.: Nummer des USB-Sticks: Abgabezeit: Unterschrift: Hinweise fur die Aufsicht: 1. Zugelassene Hilfsmittel sind in den Anmerkungen zur Klausur erlautert. 2. Dauer der Klausur: 180 Minuten. Bemerkungen zum Ablauf der Klausurbearbeitung: Bewertung in Punkten: Aufgabe 1 2 3 Punkte Benotung: (in Worten: ) Datum: Unterschrift 1. Prufer: Datum: Unterschrift 2. Prufer: Klausureinsicht am: um Student/Studentin: : Uhr, bestatigt durch Prufer/Prufungsamt: 1 Aufgabe 1: a) Fuhren Sie schriftlich und im Dualsystem folgende Rechnung durch: 110111011B 10101B b) Bestimmen Sie fur den nachfolgenden Ausdruck die kanonische alternative Normalform (KANF): (A # B) (B C ) Hinweis 1: Das Zeichen steht fur die Antivalenz (exklusives ODER). Hinweis 2: Fur Ihre Losungen zu Aufgaben 1 enthalt diese Aufgabenstellung am Ende separate Blatter. Notieren Sie Ihre Losungen bitte auf diesen Blattern. 7 Punkte Aufgabe 2: Das folgende Struktogramm beschreibt ein Programm, das die Umrechnung einer ganzen Zahl in eine Dual-, Octal- oder Hexadezimalzahl durchfuhrt Legen Sie fur die Bearbeitung der Programmieraufgaben ein Eclipse Basisverzeichnis ebvklausur an sowie in diesem Verzeichnis zu dieser Aufgabe ein Java-Basisverzeichnis kljpr002. Programmieren Sie in diesem Java-Basisverzeichnis ein Java-Programm klaufg02.Codierung das die im Struktogramm beschriebene Verarbeitung durchfuhrt. In diesem Programm soll eine Methode private static char weiterPruefung() aufgerufen werden. Den Programmcode zu dieser Methode nden Sie in einer Datei mit Namen weiterpruefung.java. Sie nden diese Datei auf dem Ihnen im Rahmen der Klausurbearbeitung zur Verfugung gestellten Stick oder aber unter der URL ftp://PC132W.bsnw.fb4.fh-bochum.de/eikelberg/javakurs/download/klausur/weiterpruefung.java Laden Sie die Datei weiterpruefung.java herunter und ordnen Sie die in dieser Datei enthaltene Methode an einer geeigneten Stelle in Ihrer Quelldatei klaufg02.Codierung an. Erstellen Sie Ihr Programm entsprechend dem nachfolgenden Struktogramm, compilieren Sie das Programm und lassen Sie das Programm mindestens einmal laufen. Sie konnen Ihr Programm testen, in dem Sie ganze Zahlen eingeben und die Umwandlung in andere Zahlensysteme mit Hilfe des Windows-Programms "Rechner" (Ordner Zubehor) uberprufen. Achtung - das Struktogramm folgt auf der nachsten Seite ... 21 Punkte 2 3 Aufgabe 3: Erstellen Sie in einem Java-Basisverzeichnis kljpr003 ein Programm klaufg03.Fahrtenbuch das Eintragungen in ein Fahrtenbuch einliest und in einer Ausgabedatei speichert. Zu jeder der Fahrten sollen Start-Ort, Ziel-Ort, Start-Zeit, Ziel-Zeit und die gefahrenen Kilometer eingelesen werden. Aus diesen Daten soll dann jeweils die Durchschnittsgeschwindigkeit berechnet werden. Beginnen Sie die Bearbeitung der Aufgabe damit, dass sie in Ihrem Eclipse Basisverzeichnis ebvklausur ein Java-Projekt kljpr003 anlegen und dort in einem Paketverzeichnis klaufg03 eine Klasse klaufg03.Fahrtenbuch mit einer main-Methode anlegen. Codieren Sie in dieser main-Methode die folgende Verarbeitung: 1. Beginnen Sie Ihr Programm mit einer Startmeldung, in der Ihr Nachname, Vorname und Ihre Matrikelnummer erscheinen sollten. 2. Legen Sie einen 2-dimensionalen String-Array mit Namen fahrtenBuch aus 100 Zeilen und 6 Spalten an. 3. Deklarieren Sie eine int-Variable anzahlFahrten und initialisieren Sie diese Variable mit dem Wert Null. 4. Legen Sie einen eindimensionalen String-Array mit Namen eintragArten an, der die folgenden Zeichenketten enthalt: "Start-Ort", "Ziel-Ort", "Start-Zeit", "Ziel-Zeit", "gefahrene km" und "Durchschnittsgeschwindigkeit". 5. Solange weniger als 101 Fahrten eingegeben wurden und solange eine weitere Fahrt eingegeben werden soll, sollen wie folgt Daten zu einer neuen Fahrt eingelesen werden: Fur eine Fahrt mit Index anzahlFahrten sollen die Daten in der Zeile des Arrays fahrtenBuch mit Index anzahlFahrten gespeichert werden. In den ersten beiden Spalten des Arrays sollen dabei der Start-Ort und der Ziel-Ort gespeichert werden. Die dritte und vierte Spalte sollen die Start-Zeit und die Ziel-Zeit aufnehmen, wobei diese Daten im Format "hh:mm" eingegeben werden sollen sowie im Datentyp String gespeichert werden sollen. Die funfte Spalte soll die gefahrenen Kilometer aufnehmen, die ebenfalls zunachst im String-Format eingelesen und gespeichert werden sollen. Verwenden Sie fur die Eingabeauorderung den oben angelegten String-Array eintragArten. Dies ermoglicht Ihnen, den Eingabevorgang in Form einer for-Schleife zu codieren. Fragen Sie nach der Durchfuhrung des Einlesevorgangs ab, ob ein weiterer Fahrtenbucheintrag eingelesen werden soll und fuhren Sie einen erneuten Einlesevorgang fur einen Fahrtenbucheintrag durch, sofern weniger als 101 Fahrten eingegeben wurden und solange eine weitere Fahrt eingegeben werden soll. 6. Berechnen Sie in einer Schleife fur jede Fahrt die Durchschnittsgeschwindigkeit und speichern Sie die Durchschnittsgeschwindigkeit im String-Format fur jede Fahrt in der sechsten Spalte des Arrays fahrtenBuch. Hierzu mussen Sie zunachst die in der funften Spalte gespeicherte km-Angabe in den Datentyp double umwandeln. Anschlieend sollten Sie analog zu nachfolgendem Programmcode die Zeitangaben in der dritten und vierten Spalte in ein Datumsformat umrechnen und die Zeitdierenz im Datentyp double, angegeben in Stunden mit Nachkommastellen berechnen. Aus der so bestimmten Zeitdierenz und der km-Angabe konnen Sie dann die Durchschnittsgeschwindigkeit berechnen. 4 Die Umwandlung der Zeitangaben in der in der dritten und vierten Spalte in ein Datumsformat und die Berechnung der Zeitdierenz im Datentyp double sollte analog zu nachfolgendem Programmcode geschehen: // import-Anweisungen fuer die Umwandlung der Zeitangaben import java.text.DateFormat import java.text.ParseException import java.util.Locale ... ... ... String startZeitString = "13:00" String endZeitString = "14:30" // Zeitangaben in msec umrechnen Locale german = Locale.GERMAN DateFormat startZeit = DateFormat.getTimeInstance(DateFormat.SHORT,german) try f startZeit.parse(startZeitString) g catch (ParseException e) f System.out.println("Fehlerhafte Start-Zeit: "+startZeitString) g DateFormat endZeit = DateFormat.getTimeInstance(DateFormat.SHORT,german) try f endZeit.parse(endZeitString) f catch (ParseException e) f System.out.println("Fehlerhafte End-Zeit: "+endZeitString) f // Zeitdifferenz berechnen long startZeitMsec = startZeit.getCalendar().getTimeInMillis() long endZeitMsec = endZeit.getCalendar().getTimeInMillis() long fahrtZeitMSec = endZeitMsec - startZeitMsec double fahrtZeit = (double)fahrtZeitMSec / 3600000 ... ... ... 5 Sie nden diesen Programmcode in einer Datei zeitangaben-umrechnung.java, die auf dem Ihnen im Rahmen der Klausurbearbeitung zur Verfugung gestellten Stick oder aber unter der URL ftp://PC132W.bsnw.fb4.fh-bochum.de/eikelberg/javakurs/download/klausur/weiterpruefung.java gespeichert ist. 7. Geben Sie die im Array fahrtenBuch gespeicherten Datensatze in eine Ausgabedatei daten/fahrtenbuch.txt aus. Die Ausgabe sollte dabei wie in folgemdem Beispiel gestaltet werden: Fahrt 1: Start-Ort: Essen Ziel-Ort: Bochum Start-Zeit: 9:15 Ziel-Zeit: 9:35 gefahrene km: 20 Durchschnittsgeschwindigkeit: 60.0 km/h Fahrt 2: Start-Ort: Bochum Ziel-Ort: Essen Start-Zeit: 10:07 Ziel-Zeit: 10:22 gefahrene km: 15 Durchschnittsgeschwindigkeit: 60.0 km/h 6 32 Punkte Anmerkungen: Allgemeine Hinweise 1. Die Bearbeitungszeit betragt 180 Minuten. 2. Tragen Sie auf dem Aufgabenbogen deutlich lesbar Ihren Namen und Ihre Matrikelnummer ein. 3. Die Aufgaben zu den Grundlagen mussen schiftlich und nachvollziehbar gelost werden, das heit fur diese Aufgaben muss unbedingt der Losungsweg vorgelegt werden. 4. Losen Sie die Aufgaben zu den Grundlagen auf den an diese Aufgabenstellung angehefteten leeren Blattern. 5. Notieren Sie auf dem Aufgabenbogen unbedingt die Nummer des Ihnen im Rahmen der Klausur uberlassenen USB-Sticks. Fehlt die Nummer, so kann Ihnen im Rahmen der Klausurkorrektur kein Stick zugeordnet werden. 6. Als Losung geben Sie die um Ihre schriftliche Losung zu Aufgabe 1 erganzte Aufgabenstellung, Ihre schriich erstellten Losungen sowie Ihren USB-Stick ab. Im Rahmen der Korrektur wird aus den Daten auf Ihrem USB-Stick ein Ausdruck erstellt, der als Grundlage der Beurteilung der entsprechenden Aufgaben dient. 7. Zum Bestehen der Klausur sind mindestens 24 Punkte erforderlich. 8. Auch die Beihilfe zum Tauschungsversuch wird mit entsprechenden Manahmen geahndet. Besondere Hinweise zur Arbeit mit dem Rechner 9. Achten Sie unbedingt darauf, dass Sie zum Abschluss der Arbeit mit Eclipse die Java{Quelldateien abspeichern. Bei Fehlen einerer Quelldatei kann keine Wertung der entsprechenden Leistung erfolgen! 10. Bearbeiten Sie zur Vermeidung von Fehlern die Programmieraufgaben zunachst im Verzeichnis C:ndaten Ihres Rechners. Ubertragen Sie zum Abschluss der Klausur Ihre Losungen aus dem Verzeichnis C:ndaten in das Stammverzeichnis des Ihnen zur Verfugung gestellten USB-Sticks. 11. Prufen Sie sorgfaltig, ob Ihre Losungen vollstandig auf den USB-Stick ubertragen wurden. Losungsbestandteile, die nicht auf dem Stick zu nden sind, gelten als nicht vorhanden und werden nicht bewertet! 12. Melden Sie Probleme bei der Arbeit mit Ihrem Rechner sofort der Aufsicht. Unerwartete oder merkwurdige Fehlermeldungen konnen Sie ebenfalls der Aufsicht zeigen. Es besteht die Moglichkeit, derartige Probleme auf der Titelseite der Aufgabenstellung im Kasten "Bemerkungen zum Ablauf der Klausurbearbeitung" durch die Aufsicht protokollieren zu lassen. Vom Pruing dort eingetragene Bemerkungen gelten als nicht geschrieben. Falls die Aufsicht die entsprechende Fehlermeldung als Fehler Ihrerseits beurteilt, beachten Sie bitte den Punkt 13: 13. Sollten Sie Schwierigkeiten bei der Bearbeitung von Aufgaben mit dem Rechner haben, so konnen Sie die von Ihnen vorgenommenen Arbeitsschritte auch schriftlich festhalten. Schreiben Sie jeweils das Resultat Ihrer Bemuhungen am Rechner auf, beschreiben Sie die Probleme und nennen Sie die Fehlermeldungen, die Sie erhalten. 7 14. Der Aufbau von Netzverbindungen (Einbinden von Netzlaufwerken, Versenden von Nachrichten uber TCP/IP etc.) wird als schwerer Tauschungsversuch gewertet, wenn der Netzzugri nicht in der Aufgabenstellung gefordert wird oder automatisch erfolgt. Ein Zugri auf den Server PC132W.bsnw.fb4.fh-bochum.de ist jedoch stets erlaubt! 15. Das Hinterlassen von Klausurdaten auf dem Arbeitsplatzrechner nach Abschluss der Klausur wird ebenfalls als schwerer Tauschungsversuch gewertet. Sie sind auf jeden Fall verpichtet, auf Ihrem Rechner den Inhalt des Verzeichnisses c:ndaten am Ende der Klausur zu loschen. Erlaubte Hilfsmittel: Skripten "Grundlagen der Programmierung" und "Programmierung in Java", Vorlesungsmitschriften, U bungs- und Praktikumsaufgaben mit Losungen. Die Verwendung eines eigenen Taschenrechners ist nicht erlaubt, dagegen kann der im Betriebssystem vorhandene Rechner (Anwendung Rechner im Ordner Zubehor) verwendet werden. 8 Blatter fur die Losungen zu Aufgabe 1: 9 10 11 12