Sitzung: Jeden Freitag in der Vorlesungszeit ab 16 Uhr c. t. im MAR 0.005. In der vorlesungsfreien Zeit unregelmäßig (Jemensch da?). Macht mit!

Javakurs/Übungsaufgaben/Brainfuck: Unterschied zwischen den Versionen

(Kommentarbereich, Schwierigkeitsgerad entfernt)
Zeile 1: Zeile 1:
'''1.) (Schwierigkeitsgrad: mittel)'''
+
'''1.)  
  
 
In dieser Aufgabe bauen wir uns eine simple Turingmaschine. Die Turingmaschine besitzt dabei nur ein Arbeitsband (workingTape) der Länge 10. Es existiert ein Lese/Schreibe-Kopf (head) der über das workingTape gleiten kann, dort Werte ändern und Werte ausgeben soll. Bewegt sich der Kopf über ein Ende des Arbeitsbandes hinaus, so taucht er auf der anderen Seite wieder auf (wenn also z.B der head auf das 11. Feld zeigt, dann soll er wieder auf das 1. zeigen).
 
In dieser Aufgabe bauen wir uns eine simple Turingmaschine. Die Turingmaschine besitzt dabei nur ein Arbeitsband (workingTape) der Länge 10. Es existiert ein Lese/Schreibe-Kopf (head) der über das workingTape gleiten kann, dort Werte ändern und Werte ausgeben soll. Bewegt sich der Kopf über ein Ende des Arbeitsbandes hinaus, so taucht er auf der anderen Seite wieder auf (wenn also z.B der head auf das 11. Feld zeigt, dann soll er wieder auf das 1. zeigen).
Zeile 18: Zeile 18:
 
Hinweis 2: Zum Testen verwendet einfach diese Initialisierung der Variable Source-Code, wenn ihr alles richtig gemacht habt, dann sollten die Buchstaben a, b  und c ausgegeben werden:
 
Hinweis 2: Zum Testen verwendet einfach diese Initialisierung der Variable Source-Code, wenn ihr alles richtig gemacht habt, dann sollten die Buchstaben a, b  und c ausgegeben werden:
 
  char[] sourceCode = {'+', '#', '+', '+','#', '+', '+', '+', '#'};
 
  char[] sourceCode = {'+', '#', '+', '+','#', '+', '+', '+', '#'};
 +
 +
 +
 +
 +
 +
 +
== Kommentare ==
 +
Wenn du Anmerkungen zur Aufgabe hast oder Lob und Kritik loswerden möchtest ist hier die richtige Stelle dafür. Klicke einfach ganz rechts auf "bearbeiten" und schreibe deinen Kommentar direkt ins Wiki. Keine Scheu, es geht nichts kaputt ;)
 +
 +
<!--
 +
Als kleine Starthilfe folgt ein Beispiel wie so ein Kommentar formatiert sein könnte. Mit "Vorschau zeigen" kannst du dir ansehen was deine Änderung bewirken würde, ohne wirklich etwas zu ändern.
 +
Du musst übrigens außerhalb dieses auskommentieren Bereichs schreiben ;)
 +
 +
==== Robert ====
 +
Na mal schaun ob irgend jemand diese Funktion wirklich benutzt. Ich fände es jedenfalls toll.
 +
-->

Version vom 9. April 2007, 09:34 Uhr

1.)

In dieser Aufgabe bauen wir uns eine simple Turingmaschine. Die Turingmaschine besitzt dabei nur ein Arbeitsband (workingTape) der Länge 10. Es existiert ein Lese/Schreibe-Kopf (head) der über das workingTape gleiten kann, dort Werte ändern und Werte ausgeben soll. Bewegt sich der Kopf über ein Ende des Arbeitsbandes hinaus, so taucht er auf der anderen Seite wieder auf (wenn also z.B der head auf das 11. Feld zeigt, dann soll er wieder auf das 1. zeigen).

Die Maschine selbst wird durch einen einfachen Programmcode gesteuert, der aus 5 Befehlen besteht:

  • > Dieser Befehl bewegt den head ein Feld nach rechts
  • < Dieser Befehl bewegt den head ein Feld nach links
  • + Dieser Befehl erhöht den Wert des aktuellen Feldes um 1
  • - Dieser Befehl verringert den Wert aktuelles Feldes um 1
  • # Dieser Befehl gibt den aktuellen Wert auf der Konsole aus

Der Programmcode der die Turingmaschine steuert, soll in einem Array namens sourceCode stehen, der Code soll Schritt für Schritt durchgegangen und ausgeführt werden. Auf dem Arbeitsband werden Werte vom Typ char gespeichert die anfangs alle den Wert 'a' haben. Der head zeigt am Anfang auf das erste Feld auf dem workingTape.

Hinweis 1: char-Werte werden intern als Zahlenwerte gespeichert, deshalb könnt ihr ohne Probleme sowas wie char example = 'a'+1; schreiben. Wenn ihr wissen wollt durch welche Zahlen, welche Character repräsentiert werden, dann schaut hier auf diese Ascii-Tabelle: Link

Jetzt solltet ihr auch in der Lage sein mit eurer eigenen Turingmaschine ein "Hello World"-Programm zu schreiben. Wenn ihr eure Turingmaschine eigentständig erweitern wollt, dann schaut euch diesen Link an: Brainfuck

Hinweis 2: Zum Testen verwendet einfach diese Initialisierung der Variable Source-Code, wenn ihr alles richtig gemacht habt, dann sollten die Buchstaben a, b und c ausgegeben werden:

char[] sourceCode = {'+', '#', '+', '+','#', '+', '+', '+', '#'};




Kommentare

Wenn du Anmerkungen zur Aufgabe hast oder Lob und Kritik loswerden möchtest ist hier die richtige Stelle dafür. Klicke einfach ganz rechts auf "bearbeiten" und schreibe deinen Kommentar direkt ins Wiki. Keine Scheu, es geht nichts kaputt ;)