Brainfuck

Aus ProgrammingWiki

Brainfuck ist eine ganz einfache Programmiersprache (von Urban Müller, Schweiz, 1993). Müllers Ziel war es, eine einfache Turing-Vollständige Sprache zu entwerfen, welche mit einem möglichst kleinen Compiler übersetzt werden kann. Ein Brainfuck-Programm ähnelt dabei stark der formalen Definition einer Turingmaschine.

Abb114demcomputerinshirngeschaut.jpg

Brainfuck besitzt acht Befehle, jeweils bestehend aus einem einzigen Zeichen:

ZeichenC-ÄquivalentSemantik
>++ptr;inkrementiert den Zeiger
<--ptr;dekrementiert den Zeiger
+++*ptr;inkrementiert den aktuellen Zellenwert
---*ptr;dekrementiert den aktuellen Zellenwert
.putchar(*ptr);Gibt den aktuellen Zellenwert als ASCII-Zeichen auf der Standardausgabe aus
,
  • ptr = getchar();
Liest ein Zeichen von der Standardeingabe und speichert dessen ASCII-Wert in der aktuellen Zelle
[while (*ptr) {Springt nach vorne, hinter den passenden ]-Befehl, wenn der aktuelle Zellenwert 0 ist
]}Springt zurück, hinter den passenden [-Befehl, wenn der aktuelle Zellenwert nicht 0 ist


Zur besseren Vorstellung wird hier der Speicher am Ende der Verarbeitung gezeigt.

Hier ein Hallo World! Programm in Brainfuck:

Zur Hilfestellung die ASCII-Tabelle:

DezASCII
0NUL
1SOH
2STX
3ETX
4EOT
5ENQ
6ACK
7BEL
8BS
9HT
10LF
11VT
12FF
13CR
14SO
15SI
16DLE
17DC1
18DC2
19DC3
20DC4
21NAK
22SYN
23ETB
24CAN
25EM
26SUB
27ESC
28FS
29GS
30RS
31US
DezASCII
32SP
33!
34"
35
36$
37%
38&
39'
40( 
41 )
42
43+
44,
45-
46.
47/
480
491
502
513
524
535
546
557
568
579
58
59
60<
61=
62>
63?
DezASCII
64@
65A
66B
67C
68D
69E
70F
71G
72H
73I
74J
75K
76L
77M
78N
79O
80P
81Q
82R
83S
84T
85U
86V
87W
88X
89Y
90Z
91[
92\
93]
94^
95_
DezASCII
96`
97a
98b
99c
100d
101e
102f
103g
104h
105i
106j
107k
108l
109m
110n
111o
112p
113q
114r
115s
116t
117u
118v
119w
120x
121y
122z
123{
124|
125}
126~
127DEL

Viele Ideen und Aufgaben rund um Brainfuck gibt es auch auf Swisseduc