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