Zum Inhalt springen

Kurs:Einführung in die mathematische Logik (Osnabrück 2018)/Arbeitsblatt 18

Aus Wikiversity



Übungsaufgaben

Entwerfe ein Programm für eine Registermaschine, das nach und nach alle Quadratzahlen ausdruckt.



Erstelle ein Programm für eine Registermaschine, das abwechselnd 1 und 0 ausdruckt, das mit sechs Befehlszeilen auskommt und lediglich einen Sprungbefehl verwendet.



Erstelle ein Programm für eine Registermaschine, das abwechselnd 1 und 0 ausdruckt, das mit sechs Befehlszeilen auskommt und lediglich einen Druckbefehl verwendet.



Schreibe einen Programmabschnitt C(i,j,k) für eine Registermaschine, das zum Befehl j wechselt, wenn im i-ten Register der Wert k steht, und ansonsten weiterläuft. Man verwende nur die Grundbefehle.



Entwerfe ein Programm für eine Registermaschine, die für rirj die Differenz rirj von zwei Registerinhalten berechnet.



Entwerfe ein Programm für eine Registermaschine, das entscheidet, ob der Registerinhalt ri des Registers Ri die echte Potenz einer natürlichen Zahl ist.



Es sei  b+.  Entwerfe ein Programm für eine Registermaschine, das bei der Eingabe von (r1,,rk) in den ersten k Registern die Zahl i=1kribi berechnet, ausdruckt und anhält.



Es sei b2. Entwerfe ein Programm für eine Registermaschine, das bei Eingabe von z im ersten Register die b-adische Ziffernentwicklung z=i=0ksibi (mit 0rib1) berechnet, nach und nach die Ziffern si (beginnend mit i=0) ausdruckt und schließlich anhält.



Es sei b2. Entwerfe ein Programm für eine Registermaschine, das zur Eingabe von z im ersten Register die b-adische Ziffernentwicklung z=i=1ksibi (mit 0rib1) berechnet, nach und nach die Exponenten i und die zugehörigen Ziffern si (beginnend mit k und sk) ausdruckt und schließlich anhält.



Entwerfe ein möglichst kurzes (also mit möglichst wenigen Befehlszeilen) Programm für eine Registermaschine, das bei leerer Startbelegung anhält und zum Schluss die Zahl 20 im ersten Register hat.



Entwerfe ein Programm für eine Registermaschine, das bei Eingabe einer natürlichen Zahlen n im Register R1 die Fakultät n! in R1 ausgibt.



Entwerfe ein Programm für eine Registermaschine, das bei Eingabe von zwei natürlichen Zahlen n und k in den Registern R2,R3 den Binomialkoeffizienten (nk) in R1 ausgibt.



Entwerfe ein Programm für eine Registermaschine, das bei Eingabe von zwei natürlichen Zahlen a und b in den Registern R2,R3 den euklidischen Algorithmus durchführt und das Ergebnis, also den größten gemeinsamen Teiler von a und b, in R1 ausgibt.



Es sei P ein Programm für eine Registermaschine, es sei eine feste Anfangsbelegung gegeben und es sei vorausgesetzt, dass das Programm, angesetzt auf diese Anfangsbelegung, irgendwann anhält. Zeige, dass man den Ablauf des Programms, also die schrittweise Abfolge der Veränderungen der Registerinhalte, auch durch ein Programm realisieren kann, bei dem der Sprungbefehl nicht verwendet wird. Wozu braucht es dann eigentlich den Sprungbefehl?



Zeige, dass es kein Programm für eine Registermaschine gibt, das bei jeder Anfangsbelegung sämtliche Register leert.



Beschreibe ein Verfahren, das alle prädikatenlogischen Ausdrücke ausgibt (dabei sei vorausgesetzt, dass die Variablen, die Konstanten, die Relationssymbole und die Funktionssymbole in einer aufgezählten Form vorliegen).



Entwerfe ein Programm für eine Registermaschine, das bei Eingabe einer natürlichen Zahlen n im Register R1 den Collatz-Algorithmus durchführt, dabei die sukzessiven Werte ausdruckt und insbesondere anhält, wenn der Wert 1 erreicht wird.



Im Aufbau der Registermaschine wurde der Druckbefehl durch einen Musiktonbefehl ersetzt, der den Inhalt von R1 in einen Ton umsetzt, damit man mit der Registermaschine auch komponieren bzw. Lieder kodieren kann. Für ein Lied wurden schon Programmabschnitte P1,P2,P3,P4 geschrieben, die die folgende Bedeutung haben: P1 ist das Vorspiel (V), P2 ist die Strophe (S), P3 ist der Refrain (R) und P4 ist das Gitarrensolo (G). Es soll nun aus den Programmabschnitten ein (anhaltendes) Programm zusammengesetzt werden, derart, dass beim Abspielen des Programms ein Lied der Form

VSRSRGSRR

erklingt. Dabei darf jeder der Programmabschnitte P1,P2,P3,P4 nur einmal im Programmcode auftauchen. Verwende ausschließlich die Grundbefehle.



Welches Bildungsgesetz liegt der Folge

1,11,21,1211,111221,312211,...
zugrunde?

(Es wird behauptet, dass diese Aufgabe für Grundschulkinder sehr einfach und für Mathematiker sehr schwierig ist.)



Aufgaben zum Abgeben

Aufgabe (3 Punkte)

Entwerfe ein Programm für eine Registermaschine, das nach und nach alle Primzahlen ausdruckt.



Aufgabe (5 Punkte)

Entwerfe ein Programm für eine Registermaschine, das nach und nach alle Glieder der in Aufgabe 18.19 beschriebenen Folge ausdruckt.



Aufgabe (3 Punkte)

Entwerfe ein Programm für eine Registermaschine, das die Potenz rirj berechnet (und ausgibt), wobei ri bzw. rj die Registerinhalte der Register Ri,Rj, ij, sind.



Aufgabe (3 Punkte)

Entwerfe ein Programm für eine Registermaschine, das nach und nach alle Mersenne-Primzahlen ausdruckt.



Aufgabe (4 Punkte)

Entwerfe ein möglichst kurzes (also mit möglichst wenigen Befehlszeilen) Programm für eine Registermaschine, das bei leerer Startbelegung anhält und zum Schluss die Zahl 100 im ersten Register hat.

Punkte gibt es nur für ziemlich kurze Programme. Für den Kurs-Rekord gibt es drei Extrapunkte.


<< | Kurs:Einführung in die mathematische Logik (Osnabrück 2018) | >>

PDF-Version dieses Arbeitsblattes

Zur Vorlesung (PDF)