2 Punkte Matrikelnummer: _______________________
Klausur zur Vorlesung „Einführung in die Informatik“, SS 2001 Teil 2 ab Aufgabe 4
Aufgabe 4)
Formulieren Sie die WENN-Funktion für die Zelle D3 eines EXCEL-Arbeitsblattes, damit a) der Text "Spezialfall: Ein Quadrat" ausgegeben wird, wenn die Länge und Breite gleich
sind und
b) sonst der Text "Rechteck" ausgegeben wird.
Hinweis: Allgemeine Syntax der WENN-Funktion:
WENN(Prüfung;Dann_Wert;Sonst_Wert)
A B C D
1
Fächenberechnung von Rechtecken
2 Länge [in
cm] Breite
[in cm] Fläche [in cm2]
3 =A3*B3
1
Klausur „Einführung in die Informatik“, SS 2001
Eingabe der Länge durch den Anwender
Eingabe der Breite
durch den Anwender Formulieren Sie hier die WENN-Funktion für die Zelle D3:
=WENN(A3=B3;"Spezialfall: Ein Quadrat";"Rechteck")
Matrikelnummer: _______________________
Aufgabe 5)
Nachfolgend ist die VBA-Prozedur test1() aufgeführt.
Führen Sie die Prozedur aus, erhalten Sie folgende Fehlermeldung:
Sub test1()
Dim DM_Betrag As Double
Dim Fremdwaehrungsbetrag As Double Dim Devisenkurs As Double
DM_Betrag = 10 Devisenkurs = 0.83
Fremdwaehrungsbetrag = DM_Betrag / Kurs
MsgBox ("Fremdwährungsbetrag: " & Fremdwaehrungsbetrag) End Sub
Teilaufgabe a) Markieren Sie in dem oben aufgeführten Prozedur-Code die fehlerhafte Zuweisungsanweisung.
Teilaufgabe b) Wie muß diese oben genannte fehlerhafte Zuweisungsanweisung korrekt lauten?
Fremdwaehrungsbetrag = DM_Betrag / Devisenkurs
Teilaufgabe c) Erläutern Sie den Begriff "Datentypen" am Beispiel der o.g. Prozedur.
Ein Datentyp legt eine Menge von Werten (vgl. z.B. zulässige Zahlen bei Datentyp Integer oder Long oder Double) und darauf zulässigen Operationen fest. So ist z.B. beim Datentyp String keine Rechenoperation (z.B. Division) möglich.
"Handfestere" Beschreibungen müssen wir wahrscheinlich auch zulassen. Z.B. kann ich mir vorstellen, daß folgendermaßen geantwortet wird: Der Datentyp legt fest, welcher
Speicherplatz für die betreffende Variable zur Verfügung steht und "ob es sich z.B. um eine Zahl -> vgl. Double (Gleitkommazahl) oder um einen Text -> String handelt".
2
Klausur „Einführung in die Informatik“, SS 2001
2 Punkte
2 Punkte
2 Punkte
Matrikelnummer: _______________________
Aufgabe 6)
Nachfolgend sehen Sie zwei VBA-Prozeduren {test2() und berechnung()}. Es soll die Länge und Breite eines Rechtecks eingegeben und der Rechtecksumfang ausgegeben werden.
Sub test2()
Dim int_Laenge As Integer Dim int_Breite As Integer Dim int_Umfang As Integer
int_Laenge = CInt(InputBox("Geben Sie die Seitenlänge des Rechtecks ein")) int_Breite = CInt(InputBox("Geben Sie den Seitebreite des Rechtecks ein")) call berechnung (int_Laenge, int_Breite, int_Umfang)
MsgBox ("Der Umfang beträgt: " & int_Umfang) End Sub
Sub berechnung(Byval int_l as integer, Byval int_b as integer, Byval int_u as integer) int_u = 2 * int_l + 2 * int_b
End Sub
Teilaufgabe a) Wird von der Sub-Prozedur berechnung() der Wert für den Umfang des Rechtecks richtig an die aufrufende Prozedur test2() zurückgegeben? Begründen Sie Ihre Antwort und korrigieren Sie gegebenenfalls die Prozedur.
Problem: Die Variable int_u muß als Referenzparameter (1 Punkt) in der Sub-Prozedur
"berechnung" definiert sein, damit der berechnete Umfang der aufrufenden Prozedur zur Verfügung steht. Tatsächlich jedoch "Wertparameter" (1 Punkt) -> In der MsgBox wird der Umfang mit 0 ausgegeben (1 Punkt).
Durch Wertparameter: Kopie des Wertes der Variablen int_Umfang an die Speicherstelle der Variablen int_u (0,5 Punkte).
Durch Referenzparameter: int_u und int_Umfang greifen auf den gleichen Speicherplatz zu (0,5 Punkte).
Sub berechnung(Byval int_l as integer, Byval int_b as integer, ByRef int_u as integer) (1 Punkt)
3
Klausur „Einführung in die Informatik“, SS 2001
5 Punkte
"ByRef" kann natürlich auch direkt ausgebessert sein
Matrikelnummer: _______________________
Teilaufgabe b) Ergänzen Sie die nachfolgende VBA-Prozedur test3() und die Funktion umfangsberechnung(...) so, daß die Prozedur test3()
a) die Eingabe von Länge und Breite von Rechtecken und b) falls Länge größer Null und Breite größer Null
c) die korrekte Ausgabe des berechneten Rechtecksumfangs ermöglicht.
Sub test3()
Dim int_Laenge As Integer Dim int_Breite As Integer Dim int_Umfang As Integer Do
int_Laenge = CInt(InputBox("Geben Sie die Seitenlänge des Rechtecks ein")) int_Breite = CInt(InputBox("Geben Sie die Seitenbreite des Rechtecks ein"))
if int_Laenge > 0 and int_Breite > 0 then
int_Umfang = umfangsberechnung (int_Laenge, int_Breite) MsgBox ("Der Umfang beträgt: " & int_Umfang)
else
MsgBox("Fehler. Bitte Wert neu eingeben") end if
Loop Until int_Laenge > 0 and int_Breite > 0 End Sub
Function umfangsberechnung(ByVal int_l as Integer, ByVal int_b as Integer) as integer umfangsberechnung = 2 * int_l + 2 * int_b
End Sub
Hinweis zur allgemeinen Syntax:
If Bedingung Then [Anweisungen]
[ElseIf Bedingung-n Then [elseifAnweisungen] ...
[Else
[elseAnweisungen]]
End If
Aufgabe 7)
Teilaufgabe a) Wozu dienen in HTML "Tags"? Was bedeutet in diesem Zusammenhang der Unterschied von Start- und Ende-Tag?
Tags dienen in HTML zur Auszeichnung (=Befehle zum Markieren von Elementen) eines Textes/Dokuments [z.B. wo beginnt (Start-Tag) bzw. endet (Ende-Tag) ein Textabsatz, Tabelle, ...]
Teilaufgabe b) Muß in HTML jedem Start-Tag auch ein Ende-Tag zugeordnet sein?
Begründen Sie Ihre Antwort mit einem Beispiel.
Nicht jedem Start-Tag muß (kann überhaupt) ein Ende-Tag zugeordnet werden -> dies gilt z.B. für das Tag für "Zeilenvorschub". Durch <br> wird der Zeilenvorschub bei der Anzeige ausgelöst. Eine explizite Beendigung ist gar nicht möglich (1 Punkt).
1 Sonderpunkt: Damit sind (anders als z.B. bei XML) wohlgeformte HTML-Dokumente nicht immer möglich.
4
Klausur „Einführung in die Informatik“, SS 2001
5 Punkte
1 Punkte
1 Punkte Korrektur zu "End Function": 0,5
Sonderpunkte
wichtig ist, daß hier nur int_l und int_b als Parameter auftauchen (wichtig: ByVal); "erscheint" noch der Umfang in irgendeiner Form (womöglich noch als Referenzparameter): "nix kapiert";
In der obigen Form -> 1 Punkt
wichtig ist, daß der berechnete Umfang dem Namen der Funktion zugewiesen wird (1 Punkt);
jede andere Zuweisung: "nix kapiert".
nur diese 2 Parameter dürfen hier erscheinen -> 1 Punkt
If-Abfrage -> 1 Punkt; nur dann richtig, wenn der Aufruf der Funktion
"umfangsberechnung" und die MsgBox für die Umfangsausgabe richtig "plaziert sind".
Der von der Funktion "umfangsberechnung" ausgerechnete Wert ist der Variablen int_Umfang zuzuweisen -> 1 Punkt;
jede andere Lösung: "nix kapiert".
1 Sonderpunkt für die Do ... Loop Until-Schleife (war nicht
erforderlich); möglich auch Do ... Loop While (hier Abfrage auf int_laenge <=
0 und int_Breite <= 0)