0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Brainf*ckの基本構文

Posted at

Brainf*ckとは

brainfuck
.,

Brainfuckの基本構文
C言語の基本構文と照らし合わせて考える

printf文

printf文はある特定の値を出力するプログラムだ。
まずは"A"を出力するプログラムを考えてみる。
ところで、brainf*ckではもともとの仮想セルに値は入っていないため値を入力する必要がある。
"A"のASCIIコードは65のためセルにまず65を入力するが数値は1ずつしか増やせないため65回インクリメントする。

Brainf*ck
++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ +++++

その後出力する。
指定しているセルは変わっていない(<や>が入力されていない)ため、そのまま出力する。

Brainf*ck
.

これで文字Aを出力するプログラムができた。

scanf文

scanf文は入力された値を読み取るプログラムである。
操作は","のみでできる。
何文字でも","コンマ一文字で可能となる。

echo入力された値をそのまま出力するプログラムは次のようになる。

Brainf*ck
,.

これは"echo"や"echoコマンド"と呼ばれている。

for文

for文ではカウンタセルと処理セルという二つの仮想セルを利用してループ処理を行う。
文字を繰り返し出力するには"."を繰り返し出力するだけなので今回はASCII文字を先頭から合計10文字出力するプログラムを考える
まずはカウンタセルに繰り返し回数を入力し、隣のセルへ移動する。

Brainf*ck
+++++ +++++>

次に値を一つ増やす、出力、値を一つ増やす、カウンタセルへ移動、カウントを一つ減らすという処理を行う

Brainf*ck
+.+<-

最後にfor文のいわゆる括弧{}にあたるかっこ[]で処理内容をまとめる。

Brainf*ck
+++++ +++++[>+.+<-]

これでASCIIコードの1から10文字分を取り出すことができた。

最後に

今回はprintf文、scanf文、for文しかできなかったがほかにもif文なども実装してみたいと思った。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?