1: 2011-02-15 (火) 07:35:23 k-tan[6] [7] | 2: 2011-02-15 (火) 08:51:14 k-tan[6] [8] | ||
---|---|---|---|
Line 3: | Line 3: | ||
*** C言語版 [#oc93dcec] | *** C言語版 [#oc93dcec] | ||
-printf | -printf | ||
- | --複雑なフォーマット指定はできないかもしれない。 | + | --非常に複雑なフォーマット指定はできないかもしれない。 |
//--機種非依存のvsnprintfを提供するので、移植の際にはフォーマット記述子のことは気にしなくてよい。 | //--機種非依存のvsnprintfを提供するので、移植の際にはフォーマット記述子のことは気にしなくてよい。 | ||
//--printf自身も機種非依存で書かれている。 | //--printf自身も機種非依存で書かれている。 | ||
- | -putc | + | -inptInt |
- | -puts | + | -inptFloat |
- | -bl_puts | + | -color |
- | --bl_putsは自動改行をしない | + | -locate |
+ | -wait | ||
+ | -fillRect | ||
+ | -drawLine | ||
-setCol | -setCol | ||
-setBCol | -setBCol | ||
-rgb | -rgb | ||
- | -flshWin | + | -inkey |
- | -setPix | + | |
- | -fillRect | + | |
- | -drawLine | + | |
-rnd | -rnd | ||
- | -wait | + | -openWin |
- | -color | + | -setPix |
- | -locate | + | |
-getPix | -getPix | ||
+ | -getChar | ||
+ | -getCol | ||
+ | -getBCol | ||
+ | -cls | ||
+ | -sin, cos, sqrt | ||
+ | -putc | ||
+ | -puts | ||
+ | -bl_puts | ||
+ | --bl_putsは自動改行をしない。 | ||
+ | -scanf | ||
+ | --scanf("%d", &i); 程度しかできない。 | ||
+ | -flshWin | ||
-waitNF | -waitNF | ||
- | -inkey | + | --普通のwaitは全画面のflshWinを伴う。waitNFはflshWinをしないwait。 |
+ | -malloc | ||
+ | --デフォルトではNULLを返さないことを保証(エラーメッセージを出力して wait(-1); )。setModeすればNULLを返すようにもできる。 | ||
-setMode | -setMode | ||
+ | --文字コードの設定、locate指定のhalfheight/fullheight、グラフィック描画のラスタオペレーション、mallocのエラー時の対応などを設定できる。 | ||
+ | -多分もう少し増やす | ||
-ファイル関係をどうするかは現在検討中 | -ファイル関係をどうするかは現在検討中 | ||
+ | -そのほかの仕様 | ||
+ | --intは必ず32bit、shortは必ず16bit、charは必ず8bit。blikeではこれらを環境によらず保証する。 | ||
+ | ---- | ||
+ | -移植の際は、以上の関数を実装しなおす必要はない。ドライバと呼ばれる以下の関数を用意すればよい。 | ||
+ | --スタートアップ関数 | ||
+ | --bld_openWin : ウィンドウを作る関数 | ||
+ | --bld_flshWin : ウィンドウを部分再描画する関数 | ||
+ | --bld_waitNF : 時間待ちする関数 | ||
+ | --bld_eixt : 終了関数 | ||
+ | --他にもある予定 | ||
+ | ---フォントのロード | ||
+ | ---キー入力 | ||
+ | ---マウス入力 | ||
+ | ---乱数の種の取得 | ||
---- | ---- | ||
- | -移植の際は、これらの関数を実装しなおす必要はない。ドライバと呼ばれる以下の関数を用意すればよい。 | + | -いくつかの関数についての説明 |
- | -スタートアップ関数 | + | --printf |
- | -bld_openWin : ウィンドウを作る関数 | + | ---他のC言語の入門書でも最初はprintfが出てくると思う。その知識をむだにさせないためにも、printfはサポートすることにする。 |
- | -bld_flshWin : ウィンドウを部分再描画する関数 | + | --scanf |
- | -bld_waitNF : 時間待ちする関数 | + | ---上記と同じ理由でサポート。しかし利用は推奨しない。理由は [[blike/intro/p0003]] を参照のこと。 |
- | -bld_eixt : 終了関数 | + | --getPix |
- | -他にもある予定 | + | ---画面上の画素の色を取得する関数。ゲームを作る際の衝突判定などで使える。これがないと表示内容を二次元配列に控えておくなどのプログラミングを強いられる。配列を理解しなくても簡単なゲームくらいは作れるようにしたいという意図でこの関数を用意した。 |
- | --フォントのロード | + | --getChar, getCol, getBCol |
- | --キー入力 | + | ---上記のキャラクター版。これを標準関数に加えた意図もgetPixと同様。 |
- | --マウス入力 | + | -雑談 |
- | --乱数の種の取得 | + | --僕がBASICでプログラミングを覚えたころは、ポインタ(やそれに類する概念)も配列も理解しないうちから、かなりいろいろ遊べた。遊んでいるうちに変数の概念を十分に理解することができたし、制御の挙動もよく理解できた。そのあとで配列変数などを学べたので、概念の必要性も含めてよく理解できた。 |
+ | --しかしblikeではないC言語では、ただ数値を入力させるだけでもポインタがでてくるし(scanfのことを言っている)、ゲームで衝突判定やスクロールがしたくなると配列などが必要になる。これじゃあ消化不足のまま次々に知識を詰め込むことになり、多くの学生がプログラミングの理解をあきらめてしまう。もちろん「オマジナイ」などと称してごまかすことはできるが、そういうものを受け入れることができるのはすでに何かひとつの言語を十分に理解している場合で、初学者にとっては「わからない」という印象を強くするだけである。 | ||
+ | --また標準的なC言語の出力関係の貧弱さも致命的だ。printfだけで勉強していったい何が面白いだろう。ファイルに出力できても達成感は少ない。・・・colorやlocateに相当することすら簡単にはできない。グラフィックもだ。こんなのはBASICなら簡単にできたことなのに。入門者用のメジャーなプログラミング言語がBASICからCに変わったことで、明らかにプログラミング教育環境は後退した。僕はそう思う。もっとどう教えるべきかを見直すべきだ。・・・これに対する僕の解答がblikeである。 | ||
+ | --問題はC言語そのものにあるのではない。C言語の基本的な文法はBASICよりも理解しにくいということはない。標準関数が教育向けでなさ過ぎること、最初に main() や #include などのオマジナイが必要になることだけが致命的なのだ(いや、開発環境を整えるのも初心者にとっては大変だが)。逆にそれさえ克服できれば、BASICよりも発展性がある分だけいいと思う。だからblikeはいいと僕は思う。 |
(This host) = http://osask.net