1: 2009-12-19 (土) 18:00:35 HOSINO |
2: 2009-12-19 (土) 21:05:09 HOSINO |
- | 内容を考え中 | + | *efg01上で動くプログラムの作り方講座(1) [#ab5c428e] |
- | ページだけ作って、御免なさい。 | + | **この講座について [#jb0faaac] |
- | 今日中に書き出します。 | + | 星野が作ったインタプリタ(ip.g01)の上で動くプログラムを作る事を目標とします。~ |
| + | そのインタプリタはefg01で動くので、結局作ったアプリも(間接的に)efg01の上で動くことになります。~ |
| + | ちゃんとしたチュートリアルはそのうちhideyosiさんが作られるようです。~ |
| + | また、K-tanさんも以前にGUIGUI01/memoシリーズでC言語やアセンブリでのg01アプリの作り方を書かれています。~ |
| + | インタプリタ上で動くプログラムなんか興味無い!という方はぜひそちらをご覧ください。~ |
| + | **開発環境の作り方 [#r4e8d055] |
| + | efg01とip.g01を手に入れてください。~ |
| + | ip.g01はhttp://osask.net/w/513.htmlから入手できます。~ |
| + | 後はip.g01とefg01を同じフォルダに入れておいてください。~ |
| + | **HQ9+でプログラミング [#h9d2d97d] |
| + | まずはじめに、初心者向けのHQ9+という言語でのプログラミングをやってみましょう。~ |
| + | ***Hello, world!プログラムを作る! [#d9f1c40b] |
| + | 古今東西、いかなるプログラミング言語であっても伝統的に入門時はHello, world!と表示するプログラムを書くことになっています。~ |
| + | この講座でもその伝統に従って、最初はHello, world!と表示するプログラムをHQ9+で書きたいと思います。~ |
| + | H |
| + | 上のような内容にしたテキストファイルをhello.txtという名前で保存します。~ |
| + | このプログラムを実行したいときは、コンソールを開いて次のように打ち込みます。~ |
| + | プロンプト>efg01 ip01 file:hello.txt type:10 |
| + | これで無事にHello, world!プログラムを作ることが出来ました。~ |
| + | もし、上のように打ち込んでもHello, world!と表示されなければ、それまでのところで何か失敗をしているはずです。~ |
| + | もうお分かりかもしれませんが、HQ9+でHello, world!と表示するには、Hという命令を実行させます。~ |
| + | このように初心者に非常に分かりやすく、覚えやすい文法を採用しているのがHQ9+の特徴です。~ |
| + | なお、もしHello, world!と二回表示するプログラムを作りたければ、~ |
| + | HH |
| + | という内容のファイルを実行させます。~ |
| + | ***プログラムが書いてあるファイルの中身を表示させる! [#id73c46d] |
| + | Hello, world!と表示するだけでは飽きてしまったと思いますので、今回はファイル出入力の一環としてHQ9+プログラムが書かれたファイルの中身を表示させてみようと思います。~ |
| + | まずは、プログラムを以下に示します。~ |
| + | Q |
| + | これを実行させると、確かにQと表示されます。~ |
| + | HQ9+では、自分自身のファイルをオープンして内容を読み込み、それを表示する命令が用意されています。~ |
| + | これがQという命令で、もし仮に二回HQ9+のプログラムが書かれたファイルの内容を表示させたければ、~ |
| + | QQ |
| + | と書かれたファイルを実行します。~ |
| + | これでは、「QQ」というファイルの中身を二回表示するので、~ |
| + | QQ |
| + | QQ |
| + | と表示されます。~ |
| + | ***英語の歌の歌詞を表示させる! [#s2d221db] |
| + | これまで作ってきたプログラムはどれも実用的とは言えませんでした。~ |
| + | そこで、今回は99 Bottles of Beerという英語の歌の歌詞を表示させるプログラムを作りたいと思います。~ |
| + | これが有れば、何かの機会に99 Bottles of Beerを歌わないといけなくなったときに、すぐに歌詞を思い出すことが出来ます。~ |
| + | では、今回のプログラムです。~ |
| + | 9 |
| + | これを実行すると、かなり長い歌詞が表示されます。~ |
| + | このように、HQ9+では9という命令を実行させることで、99 Bottles of Beerの歌詞を表示させることが出来ます。~ |
| + | ***変数を使ってみる! [#a567093a] |
| + | これまで見てきたように、HQ9+は非常にシンプルで覚えやすいプログラミング言語です。~ |
| + | この言語の特徴は変数、という物の扱いにも現れています。~ |
| + | 変数とは、簡単にいえば色々な物を入れておく箱の事ですが、HQ9+では特に宣言をしなくても変数を使う事が出来ます。~ |
| + | つまり、最初から0で初期化された変数が一つ用意されているわけです。~ |
| + | この変数の値を1増加させるときには、+という命令を使います。~ |
| + | +++ |
| + | 上のようなHQ9+プログラムは、最初から用意されている変数に1を3回足すので、変数の中身が3になります。~ |
| + | ***色々なHQ9+プログラムを書く! [#g7e44970] |
| + | まずは、次のようなプログラムを実行させてみます。~ |
| + | This is HQ9+ program ! |
| + | これを実行すると、~ |
| + | Hello, world! |
| + | This is HQ9+ program ! |
| + | 99 bottles of beer on the wall, 99 bottles of beer. |
| + | Take one down and pass it around, 98 bottles of beer on the wall. |
| + | (中略) |
| + | No more bottles of beer on the wall, no more bottles of beer. |
| + | Go to the store and buy some more, 99 bottles of beer on the wall. |
| + | と表示されます。(もしかしたら長すぎて上のほうがこうンソールからはみ出すかもしれません。)~ |
| + | HQ9+では、H、Q、9、+、以外の全ての文字がコメントとして無視されます。~ |
| + | よって、上のプログラムは~ |
| + | HQ9+ |
| + | という内容とみなされて実行されます。~ |
| + | 勿論、HQ9+でも一つのプログラムの中で複数の種類の命令を使う事が出来るので、上記のような結果となるわけです。~ |
| + | 最後に、もうひとつプログラムを紹介します。~ |
| + | #include<stdio.h> |
| + | void main(void){ |
| + | printf("Hello,world!"); |
| + | return; |
| + | } |
| + | このプログラムも、コメントの部分を無視すると以下のようになります。~ |
| + | H |
| + | よって、このプログラムはHello, world!と表示します。~ |
| + | **HQ9++でプログラミング [#c7c8c817] |
| + | HQ9++とは、C言語に対するC++のように、HQ9+と互換性を保ちながら、オブジェクト指向を取り入れた言語です。~ |
| + | 新たに++という命令が追加されています。~ |
| + | この命令は、変数に2を足し、さらにオブジェクトのインスタンスを生成します。~ |
| + | HQ9++で書かれたプログラムをip01.g01で実行するときは、~ |
| + | プロンプト>efg01 ip01 file:ファイル名 type:11 |
| + | とコマンドプロンプトに打ち込みます。 |
| + | HQ9++ |
| + | というプログラムを実行すると、~ |
| + | Hello, world! |
| + | HQ9++ |
| + | 99 bottles of beer on the wall, 99 bottles of beer. |
| + | Take one down and pass it around, 98 bottles of beer on the wall. |
| + | (中略) |
| + | No more bottles of beer on the wall, no more bottles of beer. |
| + | Go to the store and buy some more, 99 bottles of beer on the wall. |
| + | と表示され、プログラム終了時の変数の値は2で、オブジェクトのインスタンスが生成されています。~ |
| + | ただし、情報隠蔽の原理に従って、このオブジェクトへのアクセスはできない様になっているようです。~ |
| + | **HQ9F+でプログラミング [#ae1e7dc1] |
| + | HQ9F+も、HQ9+と互換性のある言語のひとつです。~ |
| + | HQ9++で書かれたプログラムをip01.g01で実行するときは、~ |
| + | プロンプト>efg01 ip01 file:ファイル名 type:12 |
| + | とコマンドプロンプトに打ち込みます。~ |
| + | 新たにFという命令が加えられています。~ |
| + | この命令は、0から命令が実行された時の変数の値の数まで、一つずつ数を数えていき、その数が3で割れればFizzを、5で割れればBuzzを、3でも5でも割れればFizz Buzzを、3でも5でも割れなければその数自身を表示させます。~ |
| + | 具体的には、~ |
| + | ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ |
| + | ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ |
| + | F |
| + | というプログラムは、~ |
| + | Fizz Buzz |
| + | 1 |
| + | 2 |
| + | Fizz |
| + | 4 |
| + | Buzz |
| + | (中略) |
| + | Fizz |
| + | 97 |
| + | 98 |
| + | Fizz |
| + | Buzz |
| + | と表示されます。~ |
| + | また、お分かりだと思いますが、HQ9F+では、Fもコメントではなく命令として扱われるのでご注意ください。~ |