5: 2009-12-20 (日) 13:20:59 HOSINO[6] [7] | 6: 2009-12-26 (土) 16:40:36 HOSINO[6] [8] | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | *efg01上で動くプログラムの作り方講座(1) [#ab5c428e] | ||
**この講座について [#jb0faaac] | **この講座について [#jb0faaac] | ||
星野が作ったインタプリタ(ip.g01)の上で動くプログラムを作る事を目標とします。~ | 星野が作ったインタプリタ(ip.g01)の上で動くプログラムを作る事を目標とします。~ | ||
Line 10: | Line 9: | ||
ip.g01はhttp://osask.net/w/513.htmlから入手できます。~ | ip.g01はhttp://osask.net/w/513.htmlから入手できます。~ | ||
後はip.g01とefg01を同じフォルダに入れておいてください。~ | 後はip.g01とefg01を同じフォルダに入れておいてください。~ | ||
+ | *efg01上で動くプログラムの作り方講座(1) [#ab5c428e] | ||
**HQ9+でプログラミング [#h9d2d97d] | **HQ9+でプログラミング [#h9d2d97d] | ||
まずはじめに、初心者向けのHQ9+という言語でのプログラミングをやってみましょう。~ | まずはじめに、初心者向けのHQ9+という言語でのプログラミングをやってみましょう。~ | ||
Line 18: | Line 18: | ||
上のような内容にしたテキストファイルをhello.txtという名前で保存します。~ | 上のような内容にしたテキストファイルをhello.txtという名前で保存します。~ | ||
このプログラムを実行したいときは、コンソールを開いて次のように打ち込みます。~ | このプログラムを実行したいときは、コンソールを開いて次のように打ち込みます。~ | ||
- | プロンプト>efg01 ip01 file:hello.txt type:10 | + | プロンプト>efg01 ip02 file:hello.txt type:10 |
これで無事にHello, world!プログラムを作ることが出来ました。~ | これで無事にHello, world!プログラムを作ることが出来ました。~ | ||
もし、上のように打ち込んでもHello, world!と表示されなければ、それまでのところで何か失敗をしているはずです。~ | もし、上のように打ち込んでもHello, world!と表示されなければ、それまでのところで何か失敗をしているはずです。~ | ||
Line 26: | Line 26: | ||
HH | HH | ||
という内容のファイルを実行させます。~ | という内容のファイルを実行させます。~ | ||
+ | |||
***プログラムが書いてあるファイルの中身を表示させる! [#id73c46d] | ***プログラムが書いてあるファイルの中身を表示させる! [#id73c46d] | ||
Hello, world!と表示するだけでは飽きてしまったと思いますので、今回はファイル出入力の一環としてHQ9+プログラムが書かれたファイルの中身を表示させてみようと思います。~ | Hello, world!と表示するだけでは飽きてしまったと思いますので、今回はファイル出入力の一環としてHQ9+プログラムが書かれたファイルの中身を表示させてみようと思います。~ | ||
Line 86: | Line 87: | ||
この命令は、変数に2を足し、さらにオブジェクトのインスタンスを生成します。~ | この命令は、変数に2を足し、さらにオブジェクトのインスタンスを生成します。~ | ||
HQ9++で書かれたプログラムをip01.g01で実行するときは、~ | HQ9++で書かれたプログラムをip01.g01で実行するときは、~ | ||
- | プロンプト>efg01 ip01 file:ファイル名 type:11 | + | プロンプト>efg01 ip02 file:ファイル名 type:11 |
とコマンドプロンプトに打ち込みます。 | とコマンドプロンプトに打ち込みます。 | ||
HQ9++ | HQ9++ | ||
Line 99: | Line 100: | ||
と表示され、プログラム終了時の変数の値は2で、オブジェクトのインスタンスが生成されています。~ | と表示され、プログラム終了時の変数の値は2で、オブジェクトのインスタンスが生成されています。~ | ||
ただし、情報隠蔽の原理に従って、このオブジェクトへのアクセスはできない様になっているようです。~ | ただし、情報隠蔽の原理に従って、このオブジェクトへのアクセスはできない様になっているようです。~ | ||
+ | |||
**HQ9F+でプログラミング [#ae1e7dc1] | **HQ9F+でプログラミング [#ae1e7dc1] | ||
HQ9F+も、HQ9+と互換性のある言語のひとつです。~ | HQ9F+も、HQ9+と互換性のある言語のひとつです。~ | ||
- | HQ9F+で書かれたプログラムをip01.g01で実行するときは、~ | + | HQ9F+で書かれたプログラムをip02.g01で実行するときは、~ |
- | プロンプト>efg01 ip01 file:ファイル名 type:12 | + | プロンプト>efg01 ip02 file:ファイル名 type:12 |
とコマンドプロンプトに打ち込みます。~ | とコマンドプロンプトに打ち込みます。~ | ||
新たにFという命令が加えられています。~ | 新たにFという命令が加えられています。~ | ||
Line 125: | Line 127: | ||
と表示されます。~ | と表示されます。~ | ||
また、お分かりだと思いますが、HQ9F+では、Fもコメントではなく命令として扱われるのでご注意ください。~ | また、お分かりだと思いますが、HQ9F+では、Fもコメントではなく命令として扱われるのでご注意ください。~ | ||
+ | |||
*efg01上で動くプログラムの作り方講座(2) [#qed0b097] | *efg01上で動くプログラムの作り方講座(2) [#qed0b097] | ||
前回はHQ9+系統のプログラミング言語を使ってプログラムを作りました。~ | 前回はHQ9+系統のプログラミング言語を使ってプログラムを作りました。~ | ||
Line 132: | Line 135: | ||
**Brainf*ckでプログラミング [#uf970460] | **Brainf*ckでプログラミング [#uf970460] | ||
Brainf*ckのプログラムをip02.g01で実行する際は、~ | Brainf*ckのプログラムをip02.g01で実行する際は、~ | ||
- | プロンプト>efg01 ip02.g01 file:ファイル名 type:0 | + | プロンプト>efg01 ip02 file:ファイル名 type:0 |
と打ち込みます。~ | と打ち込みます。~ | ||
- | HQ9+よりも早くインタプリタを製作していたため、typeの番号がHQ9+よりも小さいですが、ip01.g01ではBrainf*ckの派生言語は対応していません。~ | + | |
- | なるべくip02.g01をお使いになる事をお勧めします。~ | + | |
***まずはHello, world! [#j45975eb] | ***まずはHello, world! [#j45975eb] | ||
伝統は大切にするべきなので、いきなりですがHello, world!と表示するプログラムを以下に示します。~ | 伝統は大切にするべきなので、いきなりですがHello, world!と表示するプログラムを以下に示します。~ | ||
Line 301: | Line 303: | ||
?を.に変えると音が鳴るのは今回も変わりません。~ | ?を.に変えると音が鳴るのは今回も変わりません。~ | ||
このレベルのプログラムが問題なく読めて、作れるようであれば、十分%%変人%%だと思います。~ | このレベルのプログラムが問題なく読めて、作れるようであれば、十分%%変人%%だと思います。~ | ||
+ | **MONAmonaでプログラミング [#j9bcfdcd] | ||
+ | MONAmonaはBrainf*ck系統の言語です。~ | ||
+ | ip02.g01でMONAmonaで書かれたプログラムを実行するには、~ | ||
+ | プロンプト>efg01 ip02 file:ファイル名 type:1 | ||
+ | と入力します。~ | ||
+ | MONAmonaでは>、<、+、-、,、.、[、]、がそれぞれM、O、N、A、m、o、n、a、に置き換えられます。~ | ||
+ | つまり、~ | ||
+ | M ポインタを1進める | ||
+ | O ポインタを1戻す | ||
+ | N ポインタの指す所の値を1増やす | ||
+ | A ポインタの指す所の値を1減らす | ||
+ | m ポインタの指す所へ値を入力 | ||
+ | o ポインタの指す所の値を出力 | ||
+ | n ポインタの指す所の値が0だったら対応するaまでジャンプ | ||
+ | a ポインタの指す所の値が0でなかったら対応するnまでジャンプ | ||
+ | となります。~ | ||
+ | MONAmonaでは、M、O、N、A、m、o、n、a、以外の文字は全てコメントとして無視されます。~ | ||
+ | 以下に、MONAmonaでのHello, world!を示します。~ | ||
+ | NNNNNNNNN +++++++++ | ||
+ | nMNNNNNNNNMNNNNNNNNNNNMNNNNNOOOAa [>++++++++>+++++++++++>+++++<<<-] | ||
+ | Mo >. | ||
+ | MNNoNNNNNNNooNNNo >++.+++++++..+++. | ||
+ | MAoAAAAAAAAAAAAo >-.------------. | ||
+ | ONNNNNNNNoAAAAAAAAoNNNoAAAAAAoAAAAAAAAo <++++++++.--------.+++.------.--------. | ||
+ | MNo >+. | ||
+ | 勿論右側は無視されます。~ | ||
+ | |||
+ | **BrainCrashでプログラミング [#i3b6f609] |
(This host) = http://osask.net