BuK/IIm10/BuK-Übung01 G1
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
= Indirekter Beweis =
== Aufgabenstellung ==
Zeigen Sie indirekt, dass x eine gerade Zahl ist, wenn x^2 gerade ist.
== Lösung ==
<math>
\begin{array}{ccc}
A & \rightarrow & x^2\ gerade\\
Z & \rightarrow & x\ gerade\\
\overline{Z} & x\ ungerade
\end{array}
</math>
Wenn x ungerade dann gilt, <math>x = \pm2k-1</math>.
<math>
\begin{array}{ccc}
x^2 & = & x \cdot x \\
\end{array}
</math>
Weil x ungerade:
<math>
\begin{array}{ccc}
x & = & 2k-1 \\
& = & (2k-1)^2\\
& = & 4k^2-4k+1\\
& = & 2\underbrace{(2k^2-2k)}_{m}+1\\
& = & 2m+1
\end{array}
</math>
<math>\overline{Z}</math> gilt nicht <math>\rightarrow\ Z</math> gilt.
= Idealisierter Rechner =
== Aufgabenstellung ==
# Entwickeln Sie einen Interpreter für den in der Vorlesung angegebenen idealisierten Computer. Verwenden Sie AtoCC.
# Testen Sie das Programm zur Bestimmung der Lösungen quadratischer Gleichungen.
# Entwerfen und testen Sie ein Programm, dass die folgende Funktion <math>f : N \longmapsto N</math> berechnet:
:<math>
f(n) = \begin{cases}
n, & \text{wenn }n<4\\
n.d., & \text{sonst}
\end{cases}
</math>
== Lösung ==
=== Aufgabe 1 ===
Für die Sprache wurden folgende Befehle definiert:
{|
|-
|'''Befehle'''
|-
|lies ein in R(n)
|-
|R(n) <- k
|-
|R(n) <- R(m) + R(j)
|-
|R(n) <- R(m) - R(j)
|-
|R(n) <- R(m) * R(j)
|-
|R(n) <- R(m) / R(j)
|-
|R(n) <- Quadratwurzel(m)
|-
|Falls R(n)=0, dann Zeile j
|-
|Falls R(n)<=R(m), dann Zeile j
|-
|Gehe in Zeile j
|-
|Ausgabe(R(j))
|-
|Ausgabe(„Text“)
|-
|End
|}
Jeder Befehl wird mit einer Zeilenummer eingeleitet.
Beispiel: (1) lies ein in R(5)
==== Grammatik ====
[[Bild:Datei_Grammatik.PNG]]
== Aufgabe 2 und 3 ==
[http://www.michael-hielscher.de/compilerwiki/index.php/Compiler_37822_Demo Interpreter]
[http://www.michael-hielscher.de/compilerwiki/index.php/Compiler_38150_Demo Compiler]