Klausur im WS 95/96 - public.fh

Werbung
Prof. Dr. R. Rüdiger
Name:
Fachhochschule Braunschweig/Wolfenbüttel
Fachbereich Informatik
Vorname:
Matrikelnummer:
Punkte:
/24 =
FP erstmalig:
% Note:
1./2. Wiederholung:
Klausur im WS 95/96
zur
Informatik I
am 11. Januar 1996
Hinweise:
• Bitte jedes Blatt einzeln mit Ihrem Namen und der Nummer der bearbeiteten Aufgabe bezeichnen.
• Es sind beliebige schriftliche Unterlagen zugelassen, jedoch keine Rechner. Klausurabgabetermin ist 1230 Uhr.
• Sie können farbige Stifte verwenden, jedoch kein Rot.
• Die vorgedruckten Tabellen in einigen der Aufgaben, in die Ausgabewerte einzutragen sind, geben nicht unbedingt die
richtige Anzahl an Werten wieder. Diese herauszufinden bleibt Ihnen überlassen.
• Maßgeblich für die Beantwortung der Fragen ist die Sprachbeschreibung von Oberon bzw. Oberon-2 auf der Basis der
Vorlesung und des Buches: M. Reiser, N. Wirth Programmieren in Oberon. Das neue Pascal.
Aufgabe 1
(Punktzahl: 4/24)
Entscheiden Sie von den folgenden Zuweisungsanweisungen, ob diese syntaktisch falsch oder richtig
sind, und geben Sie gegebenenfalls, falls diese richtig sind, den Ergebniswert (FALSE oder TRUE) an.
Die Variablen i bzw. b seien vom Typ INTEGER bzw. BOOLEAN.
Anweisung
b
b
b
b
b
b
b
b
:=
:=
:=
:=
:=
:=
:=
:=
entweder ד für
”
syntaktisch falsche Anweisung
oder sonst TRUE/FALSE
3 + 4;
TRUE OR TRUE;
ODD(i) & ODD(INC(i));
i < (i + 3);
b # b;
b := ~b;
"a" <= "c";
Math.sin(Math.pi) < -0.5;
Aufgabe 2
(Punktzahl: 3/24)
Schreiben Sie eine Funktionsprozedur mit dem Prozedurkopf
PROCEDURE IsInteger(i: LONGINT): BOOLEAN;
die entscheidet, ob die Zahl i im Bereich liegt, der durch den Datentyp INTEGER festgelegt ist. Das
Ergebnis sei TRUE, wenn das der Fall ist, andernfalls FALSE. Es sollen dabei keine (implementierungsabhängigen) konstanten Werte verwendet werden!
Bitte wenden . . . . . .
Aufgabe 3
(Punktzahl: 3/24)
a) Kreuzen Sie in der folgenden Tabelle an, ob die aufgeführten Zahlen gemäß der Sprachdefinition
von Oberon richtig gebildet sind.
Zahl
Bildung der Zahl ist
richtig nicht richtig
0.31415
1E+2
123ABCH
456EFGH
b) Ist die folgende Aussage richtig? Begründen Sie Ihre Antwort in einem kurzen Satz.
In der Syntax für die Zahlenbildung kommen negative Zahlen nicht vor. Negative Zahlen können daher in Oberon-Programmen nicht verwendet werden; eine Zuweisung der
Form
x := -3.1415;
ist nicht möglich.
Aufgabe 4
(Punktzahl: 3/24)
MODULE KlausurAufgabe;
IMPORT Out;
PROCEDURE Start*;
VAR M: SET; i, n: INTEGER;
BEGIN n := 2; M := {};
WHILE M # {1 .. n} DO
FOR i := 1 TO n DO
IF i IN M THEN Out.Int(n+i, 5) ELSE Out.Int(n-i, 5) END
END;
Out.Ln; i := n;
WHILE (i > 1) & (i IN M) DO M := M - {i}; DEC(i) END;
M := M + {i}
END
END Start;
Tragen Sie die Werte in die vorgedruckte Tabelle ein, die das
nebenstehend abgedruckte Programm ausgibt.
...
...
BEGIN END KlausurAufgabe.
Aufgabe 5
MODULE KlausurAufgabe;
IMPORT Out;
PROCEDURE g(j, k: INTEGER): LONGINT;
BEGIN
IF k > 0 THEN RETURN (g(j, k - 1)*(j - k + 1)) DIV k
ELSE RETURN 1
END
END g;
PROCEDURE Start*;
VAR N, n: INTEGER;
BEGIN N := 6;
FOR n := 0 TO N DIV 2 DO Out.Int(g(N, n), 5) END
END Start;
BEGIN END KlausurAufgabe.
(Punktzahl: 2/24)
Welche Werte werden durch das
nebenstehende Programm nach
dem Aufruf des Kommandos
KlausurAufgabe.Start ausgegeben?
...
Aufgabe 6
(Punktzahl: 4/24)
Gegeben sei das folgende Programm:
MODULE KlausurAufgabe;
IMPORT Out;
VAR i: INTEGER;
PROCEDURE P(i: INTEGER);
PROCEDURE Q(i: INTEGER);
BEGIN Out.Int(i-1, 5)
END Q;
BEGIN Q(2*i)
END P;
a) Zeichnen Sie unter Verwendung geschachtelter
Blöcke — analog zur Vorlesung — die Gültigkeitsbereiche der diversen Variablen i, die durch das
abgedruckte Programm festgelegt sind.
b) Was wird durch das Programm ausgegeben?
...
PROCEDURE Q(i: INTEGER);
BEGIN P(3*i)
END Q;
PROCEDURE Start*;
BEGIN i := 2; P(i); Q(2*i); Out.Ln
END Start;
BEGIN END KlausurAufgabe.
Aufgabe 7
MODULE K;
IMPORT In, Out;
VAR N, n: INTEGER;
PROCEDURE P*;
BEGIN In.Open; In.Int(N)
END P;
PROCEDURE Q*;
BEGIN Out.Ln
END Q;
PROCEDURE R*;
VAR i: INTEGER;
BEGIN
FOR i := N TO N + n -1 DO
Out.Char(CHR(i))
END
END R;
PROCEDURE S*;
BEGIN In.Open; In.Int(n)
END S;
BEGIN END K.
(Punktzahl: 5/24)
Gegeben sei der folgende Text:
ABCDEFGHIJ
KLMNOPQRST
UVWXYZ
Geben Sie unter ausschließlicher Verwendung von
Prozeduren aus dem nebenstehenden Modul K eine Folge von Kommandos an — eventuell mit Parameter, falls erforderlich —, welche diesen Text
erzeugt. Die Folge soll so kurz wie möglich sein.
Hinweis: Der Großbuchstabe A hat den dezimalen
ASCII-Code 65.
Herunterladen