Klausur_A_DVSS_2009
Transcription
Klausur_A_DVSS_2009
Datenverarbeitung – Klausur Gruppe A 14.07.2009 Nachname: Vorname: Mat.-Nr.: Anrede: Frau Herr Studiengang: Fahrzeugbau (Bachelor) Flugzeugbau (Bachelor) Fahrzeugbau (Diplom) Flugzeugbau (Diplom) Die Bearbeitungszeit beträgt 120 Minuten. Die Klausur umfasst 7 Aufgaben. Aufgabe: 1 2 3 4 5 6 7 Σ Max. Punkte 10 10 15 20 15 20 30 120 Erreichte Punkte 100 Punkte entsprechen einer Leistung von 100%. Um die Klausur zu bestehen, müssen Sie mindestens 50 Punkte erreichen. HAW Hamburg/Dept. F+F/J. Abulawi Klausur_A_DVSS_2009.doc 1/11 A Vorname und Nachname: ___________________________________ Aufgabe 1 – Grundlagen der Datenverarbeitung Max. 10 Pkte. Bitte beantworten Sie die nachfolgenden Fragen in Stichworten auf diesem Blatt! a) Wie heißt die Rechnerarchitektur, die in heutigen Windows-PCs realisiert ist? (1P) Warum ist diese Architektur so anfällig für Viren und andere bösartige Software? (3P) Erreichbare Punktzahl: 4 b) Warum gibt es heute keine Analogrechner mehr im produktiven Einsatz? (Nennen Sie zwei Gründe - in Stichworten) Erreichbare Punktzahl: 3 c) Erreichte Punktzahl: Erreichte Punktzahl: Warum ist die maximal nutzbare Größe eines Arbeitsspeichers unter anderem davon abhängig, wie viel bit das Betriebssystem als Maschinenwortlänge vorsieht (z.B. 32 bit oder 64 bit)? Erreichbare Punktzahl: 3 HAW Hamburg/Dept. F+F/J. Abulawi Erreichte Punktzahl: Klausur_A_DVSS_2009.doc 2/11 A Vorname und Nachname: ___________________________________ Aufgabe 2 – Repräsentation von Daten in Digitalrechnern Max. 10 Pkte. Bitte beantworten Sie die nachfolgenden Fragen in Stichworten auf diesem Blatt! # a) Wie viel Bit benötigt man, um siebenstellige Matrikelnummern zu kodieren, für die gilt: Jede Ziffer der Matrikelnummer soll beliebige Werte annehmen können, mit Ausnahme der ersten Ziffer, die immer eine 1 sein soll. (Bitte Rechenweg angeben – sonst gibt es keine Punkte) Erreichbare Punktzahl: 3 b) Erreichte Punktzahl: Stellen Sie bitte den Anfangsbuchstaben Ihres Nachnamens als 8-bit Maschinenwort dar. Geben Sie die dem Maschinenwort entsprechende Hexadezimalzahl an. Anfangsbuchstabe (als Großbuchstabe) Entsprechendes 8-bit Maschinenwort Platz für Notizen/Nebenrechnungen (ohne Nebenrechnung gibt es keine Punkte): Erreichbare Punktzahl: 7 HAW Hamburg/Dept. F+F/J. Abulawi Erreichte Punktzahl: Klausur_A_DVSS_2009.doc 3/11 A Vorname und Nachname: ___________________________________ Aufgabe 3 – Grundlagen der Programmiersprachen & Softwareentwicklung Max. 15 Pkte. Bitte die nachfolgenden Fragen in Stichworten auf diesem Blatt beantworten! a) Warum kann man JAVA nicht als hybride Programmiersprache bezeichnen? (2 P) Welchen Vorteil bietet JAVA für die Verbreitung von Programmen im Internet? 2 P) Nennen Sie einen Nachteil, den JAVA gegenüber C++ und FORTRAN hat. (2 P) Erreichbare Punktzahl: 6 b) Warum muss man beim Kauf von Programmen immer das Betriebssystem des Rechners kennen, auf dem das Programm ausgeführt werden soll? Erreichbare Punktzahl: 4 c) Erreichte Punktzahl: Erreichte Punktzahl: Was ist der Unterschied zwischen einer bedingungsgesteuerten und einer zählergesteuerten Schleife? (2 P) Welchen Schleifentyp würden Sie verwenden, um den Wert eines Integrals numerisch zu berechnen? Begründen Sie Ihre Antwort! (3 P) Erreichbare Punktzahl: 5 HAW Hamburg/Dept. F+F/J. Abulawi Erreichte Punktzahl: Klausur_A_DVSS_2009.doc 4/11 A Vorname und Nachname: ___________________________________ Aufgabe 4 – Visualisierung von Programmabläufen Max. 20 Pkte Gegeben ist die folgende Prozedur: Sub Farbtabelle() Dim i As Integer, z As Integer, s As Integer If ActiveSheet.Name <> "Tabelle1" Then Sheets.Add For z = 1 To 8 For s = 1 To 6 Cells(z, s).Interior.ColorIndex = i i = i + 1 Next Next Else Exit Sub End If End Sub a) Erstellen Sie hier ein Pseudocode-Struktogramm für die gegebene Prozedur. Erreichbare Punktzahl: 16 HAW Hamburg/Dept. F+F/J. Abulawi Erreichte Punktzahl: Klausur_A_DVSS_2009.doc 5/11 A Vorname und Nachname: ___________________________________ b) Welche beiden Anweisungen in der Prozedur sind überflüssig? Begründen Sie Ihre Antwort. Erreichbare Punktzahl: 4 HAW Hamburg/Dept. F+F/J. Abulawi Erreichte Punktzahl: Klausur_A_DVSS_2009.doc 6/11 A Vorname und Nachname: ___________________________________ Aufgabe 5 – Algorithmen und ihre Umsetzung in VBA Max. 15 Pkte. Bitte beantworten Sie die nachfolgenden Fragen auf diesem Blatt! Es soll in Visual Basic eine Funktion zur Berechnung einer Gesamtkraft erstellt werden: Fges 2 ⎞ ⎞ ⎛ ⎛ = ⎜ ∑ Fxi ⎟ + ⎜ ∑ Fyi ⎟ ⎠ ⎝ i =1 ⎠ ⎝ i =1 n m 2 Mit Fges : Resultierende Kraft im zweidimensionalen Raum Fxi , Fyi : Kraftkomponenten in X- bzw. Y-Richtung n, m : Anzahl der Kraftkomponenten in X- bzw. Y-Richtung a) Legen Sie einen geeigneten Datentyp für den Rückgabewert der Funktion fest, und tragen Sie den Datentyp in die Kopfzeile der Function-Prozedur Fges ein. (1 Pkt.) b) Die Werte für die Kraftkomponenten sollen als Datenfelder mit den Namen FX und FY an die Funktion übergeben werden. Ergänzen Sie die Kopfzeile der Funktion entsprechend. (2 Punkte) c) Tragen Sie in die Function-Prozedur Fges die Anweisungen zur Berechnung der resultierenden Kraft Fges gemäß der obigen Formel ein. Hinweis: Die Werte für n und m sind innerhalb der Function-Prozedur aus der Anzahl der Elemente des jeweiligen Datenfelds zu ermitteln. Sie dürfen voraussetzen, dass beide Datenfelder mit der Elementnummer 1 beginnen. (12 Punkte) Option Explicit Function Fges(FX() As Double, FY() As Double) End Function Erreichbare Punktzahl: 15 HAW Hamburg/Dept. F+F/J. Abulawi Erreichte Punktzahl: Klausur_A_DVSS_2009.doc 7/11 A Vorname und Nachname: ___________________________________ Aufgabe 6 – Programmiergrundlagen in VBA Max. 20 Pkte. Bitte beantworten Sie diese Fragen auf diesem bzw. dem folgenden Blatt! a) Gegeben ist folgender Prozedurentwurf: Sub Kreisflaechenberechnung() '--- Variablendeklaration Dim Radius As Double Dim Text(2) As String Dim dPi As Double Dim Kreisflaeche As Double '--- Variableninitialisierung dPi = WorksheetFunction.Pi Text(0) = "Bitte geben Sie den Kreisdurchmesser in mm ein:" Text(1) = "Die Kreisfläche beträgt in mm²:" Text(2) = "Kreisflächenberechnung" '--- Eingabe Radius = CDbl(InputBox(Text(0), Text(2), 20)) '--- Berechnung Kreisflaeche = dPi * Radius ^ 2 '--- Ausgabe MsgBox "Ergebnis = " & Kreisflaeche End Sub Warum ist diese Sub-Prozedur für den Gebrauch untauglich (also unbrauchbar)? (4 P) . Wie nennt man diese Art von Programmfehler? (1 P) Die Prozedur ist nicht fehlertolerant. Welche Anweisung könnte einen Laufzeitfehler erzeugen? (1 P) Warum? (3 P) Erreichbare Punktzahl: 9 HAW Hamburg/Dept. F+F/J. Abulawi Erreichte Punktzahl: Klausur_A_DVSS_2009.doc 8/11 A Vorname und Nachname: ___________________________________ b) Eine Arbeitsmappe enthält im Codefenster von "Tabelle1" folgende Prozedur: Option Explicit Private Sub CommandButton1_Click() Call Kreisdefinition End Sub Welche Konsequenz hätte es, wenn der Name der Sub-Prozedur geändert würde? (2 P) Wie nennt man diese Art von Prozedur, deren Name vorgegeben ist? (1 P) Warum steht die Prozedur nicht in einem Standardmodul, z.B. Modul1? (2 P) Erreichbare Punktzahl: 5 c) Erreichte Punktzahl: Welchen Wert haben die Variablen beim Erreichen des Haltepunkts? Counter = ___ LineIndex = ____ Erreichbare Punktzahl: 6 HAW Hamburg/Dept. F+F/J. Abulawi Anzahl = ___ Blattnr = _________ Erreichte Punktzahl: Klausur_A_DVSS_2009.doc 9/11 A Vorname und Nachname: ___________________________________ Aufgabe 7 – Programmieraufgabe Max. 30 Pkte. Bitte tragen Sie Ihren Quellcode in die vorbereitete Prozedur auf dem nächsten Blatt ein! Aufgabenstellung zu Aufgabe 7 – Programmieraufgabe Das Projekt "Matrizenrechnung_mit_VBA.xls" sollen Sie durch eine Prozedur mit dem Namen Matrix_transponieren erweitern, die 1. eine Matrix aus dem in Zellbezug(1) gespeicherten Zellbereich des aktiven Arbeitsblatts einliest 2. von dieser Matrix durch Vertauschen der Zeilen und Spalten eine Transponierte T erstellt (Die 1. Zeile der Matrix wird zur 1. Spalte von T, die 2. Zeile wird zur 2. Spalte von T usw.) 3. die Transponierte Matrix in den Zellbereich des aktiven Arbeitsblatts einträgt, der mit der in Zellbezug(2) gespeicherten Zelle beginnt. Voraussetzung: Die im Projekt vorhandenen Prozeduren Matrix_lesen und Matrix_schreiben können aus der neu zu erstellenden Prozedur aufgerufen werden und müssen also nicht neu codiert werden. Gehen Sie außerdem davon aus, dass in das Projekt wurde die nebenan gezeigte UserForm eingefügt wurde. Diese UserForm enthält u.a. eine Schaltfläche mit dem Namen "CommandButton1" und der Aufschrift "Berechnung starten". Für diese Schaltfläche wurde die unten abgedruckte Prozedur codiert. Diese Prozedur enthält den Aufruf der von Ihnen neu zu erstellenden Prozedur Matrix_transponieren (fett gedruckt). Private Sub CommandButton1_Click() '---Deklaration interner Variablen Dim Zellbezug(1 To 2) As Range '--- Laufzeitfehlerbehandlung einschalten On Error GoTo errorhandler1 Set Zellbezug(1) = Range(RefEdit1.Value) Set Zellbezug(2) = Range(RefEdit2.Value) '--- Berechnungsprozedur im separaten Modul aufrufen Call Matrix_transponieren(Zellbezug) '--- Ordungsgemäßes Prozedurende Exit Sub errorhandler1: MsgBox "Bitte geben Sie die " _ "Zellbereiche erneut ein", _ vbCritical, "Eingabefehler" End Sub Erreichbare Punktzahl: 30 HAW Hamburg/Dept. F+F/J. Abulawi Erreichte Punktzahl: Klausur_A_DVSS_2009.doc 10/11 A Vorname und Nachname: ___________________________________ Option Explicit Sub Matrix_transponieren(ZBereich() As Range) '--- Überprüfung der übergebenen Zellbereichsobjekte If LBound(ZBereich) <> 1 Or UBound(ZBereich) <> 2 Then '--- Ausgabe einer Fehlermeldung MsgBox "Abbruch wegen fehlerhafter Übergabe der " _ & " Zellbezüge.", vbCritical, "Fehler" '--- vorzeitiges Prozedurende Exit Sub End If '--- Deklaration interner Variablen Dim A() As Double ' Matrix A als dynamisches Datenfeld Dim T() As Double ' Transponierte T als dyn. Datenfeld Dim SA As Integer ' Spaltenzahl Matrix A Dim Z A As Integer ' Zeilenzahl Matrix A Dim i As Integer ' Indexvariable für die Zeilen von T Dim j As Integer ' Indexvariable für d. Spalten von T '--- Matrix A aus aktivem Excel-Tabellenblatt einlesen Call Matrix_lesen(Zellbereich(1), A) '--- Zeilen- und Spaltenzahl von Matrix A ermitteln ZA = UBound(A, 1) '--- Zeilenzahl von Matrix A SA = UBound(A, 2) '--- Spaltenzahl von Matrix A '--- Datenfeld für die Transponierte T redimensionieren ReDim T(1 To ZA, 1 To SA) '--- 1. Schleife für alle Zeilen der Transponierten T For i = 1 To ZA '--- 2. Schleife für alle Spalten der Transponierten T For j = 1 To SA T(i, j) = A(j, i) Next Next '--- Ergebnisausgabe im aktiven Excel-Tabellenblatt Call Matrix_schreiben(Zellbereich(2), T) End Sub HAW Hamburg/Dept. F+F/J. Abulawi Klausur_A_DVSS_2009.doc 11/11