1
(8 Punkte) Welche Ausgabe produziert das folgende Programm?
exm_expr.cpp
iuww520iuww520iuww520iuww520iuww520iuww520iuww520iuww520
#include
<iostream>
#include
<iomanip>
using namespace
std
;
double
f1
(
int
n,
double
x) {
return
n
*
n
/2+
x
*
x
/2
; }
double
f2
(
int
n,
double
x) {
return
n
/
(n
+1
)
+
x
/
(x
+1
); }
double
f3
(
int
n,
double
x) {
return
n
/2*
x
+
x
/2*
n; }
double
f4
(
int
n,
double
x) {
return
n
++*--
x; }
int
main
() {
cout
<<
setw(
8
)
<<
f1(
3
,
3
)
<<
setw(
8
)
<<
f1(
4
,
4
)
<<
endl
<<
setw(
8
)
<<
f2(
3
,
3
)
<<
setw(
8
)
<<
f2(
4
,
4
)
<<
endl
<<
setw(
8
)
<<
f3(
3
,
3
)
<<
setw(
8
)
<<
f3(
4
,
4
)
<<
endl
<<
setw(
8
)
<<
f4(
3
,
3
)
<<
setw(
8
)
<<
f4(
4
,
4
)
<<
endl;
}
8.5
16
0.75 0.8
7.5
16
6
12
2
(4 Punkte) Formulieren Sie für die folgenden
𝑀
′
-Programme jeweils einen äquivalenten C++-Ausdruck.
D.h. jeweils
einen Ausdruck
welcher zu dem vom
𝑀
′
-Programm ausgegebenen Wert auswertet.
Gehen Sie davon aus, dass die Werte
𝑎
und
𝑏
, die in den
𝑀
′
-Programmen eingelesen werden, in den
Variablen
a
und
b
, jeweils vom Typ
double
, zur Verfügung stehen.
(a)
1
JUMP(4)
2
# a
3
# b
4
READ
5
STORE(2)
6
READ
7
STORE(3)
8
DIV(2)
9
STORE(3)
10
RECALL(2)
11
ADD(2)
12
SUB(3)
13
PRINT
14
STOP
a
+
a
-
b
/
a
(b)
1
JUMP(4)
2
# a
3
# b
4
READ
5
STORE(2)
6
READ
7
STORE(3)
8
RECALL(2)
9
MULT(2)
10
MULT(2)
11
STORE(2)
12
RECALL(3)
13
ADD(3)
14
MULT(2)
15
PRINT
16
STOP
a
*
a
*
a
*
(b
+
b)