Brainfuck

Aus ProgrammingWiki

Wechseln zu: Navigation, Suche

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:

Zeichen C-Äquivalent Semantik
> ++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:

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

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

Persönliche Werkzeuge