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]