サイトトップへ
OSASK.NET
  サイトトップへ       新掲示板(閉鎖済)   Wiki(凍結済)   旧掲示板(廃止済)   ニュース(廃止済)  
2: 2009-12-19 (土) 21:05:09 HOSINO ソース 3: 2009-12-20 (日) 06:47:31 HOSINO ソース
Line 101: Line 101:
**HQ9F+でプログラミング [#ae1e7dc1] **HQ9F+でプログラミング [#ae1e7dc1]
HQ9F+も、HQ9+と互換性のある言語のひとつです。~ HQ9F+も、HQ9+と互換性のある言語のひとつです。~
-HQ9++で書かれたプログラムをip01.g01で実行するときは、~+HQ9F+で書かれたプログラムをip01.g01で実行するときは、~
 プロンプト>efg01 ip01 file:ファイル名 type:12  プロンプト>efg01 ip01 file:ファイル名 type:12
とコマンドプロンプトに打ち込みます。~ とコマンドプロンプトに打ち込みます。~
Line 125: Line 125:
と表示されます。~ と表示されます。~
また、お分かりだと思いますが、HQ9F+では、Fもコメントではなく命令として扱われるのでご注意ください。~ また、お分かりだと思いますが、HQ9F+では、Fもコメントではなく命令として扱われるのでご注意ください。~
 +*efg01上で動くプログラムの作り方講座(2) [#qed0b097]
 +前回はHQ9+系統のプログラミング言語を使ってプログラムを作りました。~
 +しかし、HQ9+は初心者用の言語なので、コンピュータが本来処理できる計算の、ほんの一部しか実行できません。~
 +これに対して、今回扱うBrainf*ck系統のプログラミング言語はコンピュータが行える全ての計算が可能である、とされています。~
 +最初のうちはちょっと難しく感じるかもしれませんが、頑張ってください。~
 +**Brainf*ckでプログラミング [#uf970460]
 +Brainf*ckのプログラムをip02.g01で実行する際は、~
 + プロンプト>efg01 ip02.g01 file:ファイル名 type:0
 +と打ち込みます。~
 +HQ9+よりも早くインタプリタを製作していたため、typeの番号がHQ9+よりも小さいですが、ip01.g01ではBrainf*ckの派生言語は対応していません。~
 +なるべくip02.g01をお使いになる事をお勧めします。~
 +***まずはHello, world! [#j45975eb]
 +伝統は大切にするべきなので、いきなりですがHello, world!と表示するプログラムを以下に示します。~
 + ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++
 + ++++++++++ ++++++++++ ++.        ++++++++++ ++++++++++
 + +++++++++. +++++++.  .          +++.      ----------
 + ---------- ---------- ---------- ---------- ----------
 + -------.  ---------- --.        ++++++++++ ++++++++++
 + ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++
 + ++++++++++ +++++++.  --------.  +++.      ------.
 + --------.  ---------- ---------- ---------- ----------
 + ---------- ---------- -------.
 +かなり意味不明だと思いますが、これから少しずつ説明しますのでご安心を。~
 +***Brainf*ckの基本仕様を知る! [#a51535fc]
 +Brainf*ckは仮想的なコンピュータの機械語、ととらえることが出来ます。~
 +しかも、機械語としては非常に高い可読性を持っています。~
 +その仮想機械は一つのレジスタと、1024バイトのメモリを持っています。~
 +(この1024という数字は星野が勝手に決めた物であり、処理系によって変化します。)~
 +レジスタもメモリも最初は0で初期化されています。~
 +機械語は全部で8種類あります。~
 + +  レジスタが指しているメモリのアドレスにある値を1増加させます。
 + -  レジスタが指しているメモリのアドレスにある値を1減少させます。
 + >  レジスタの値を1増加させます。
 + <  レジスタの値を1減少させます。
 + [  レジスタが指しているメモリのアドレスにある値が0なら、対応する]の直後にジャンプします。
 + ]  レジスタが指しているメモリのアドレスにある値が0以外なら、対応する[にジャンプします。
 + .  レジスタが指しているメモリのアドレスにある値を、文字コードとみなして出力します。
 + ,  レジスタが指しているメモリのアドレスに、入力された文字のコードを代入します。
 +上記以外の文字はコメントとみなされて全て無視されます。~
 +***Hello, world!を読み解く! [#hff35431]
 +まず、先にあげたソースの解説をしようと思います。~
 + ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++
 + ++++++++++ ++++++++++ ++.        ++++++++++ ++++++++++
 + +++++++++. +++++++.  .          +++.      ----------
 + ---------- ---------- ---------- ---------- ----------
 + -------.  ---------- --.        ++++++++++ ++++++++++
 + ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++
 + ++++++++++ +++++++.  --------.  +++.      ------.
 + --------.  ---------- ---------- ---------- ----------
 + ---------- ---------- -------.
 +1~2行目の3番目のブロックまででメモリの0番地の値を72にして、出力させています。~
 +この72はHの文字コードです。~
 +3行目の1番目のブロックまでで、メモリの0番地の値にさらに29を足して、eの文字コードである101を作り、出力しています。~
 +(中略)~
 +9行目の3番目のブロックまでで、メモリの0番地の値から67を引いて!の文字コードである33を作り、出力しています。~
 +ただ、このやり方はかなりカッコ悪いので、もう少し短いソースでHello, world!と表示させてみます。~
 + ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++
 + ++++++++++ ++++++++++ ++.        ++++++++++ ++++++++++
 + +++++++++. +++++++.  .          +++.>      ++++++++++
 + ++++++++++ ++++++++++ ++++++++++ ++++.      ----------
 + --.<      ++++++++.  --------.  +++.      ------.
 + --------.> +.
 +~

トップ   差分 バックアップ 複製 名前変更 リロード印刷に適した表示   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ
新着

目次
メンバー一覧


最新の20件
2016-10-01 2016-09-08
  • @MenuBar.
2016-09-07 2016-09-04 2016-08-15 2015-09-23 2014-07-30 2014-07-04 2014-02-04 2013-10-26 2013-06-21 2013-06-17 2013-06-15 2013-04-02 2013-02-09 2013-02-04 2012-12-25 2012-12-01 2012-05-28 2012-03-31

トピック一覧
一般用コメント最新
新掲示板lina
2016/9/5 20:58
SandBoxゲスト
2016/9/4 12:01
RecentDeletedlina
2015/6/2 19:29
Old-OSASK-MLlina
2014/6/29 9:14
hideyosi/メールhideyosi
2014/1/6 20:17
hideyosi/募集中lina
2013/11/8 19:56

このサイトは川合秀実から委託を受けて、OSASKコミュニティによって管理・運営されています。