C言語入門 第1回 タートルグラフィックス




2014年10月より個人の方を対象に、Study C無料提供を開始しました。
C言語を勉強中の方は、学習・教育に最適なC言語インタープリタのStudy Cを使ってみてください(個人の方は無料です)。
大学・高専・高校などの教育機関での採用実績も多数あるロングセラー商品Study Cが、個人向けに無料提供を始めました。
インタープリタの手軽さに加え、ゲームや3Dタートルグラフィックで楽しく勉強したりと、C言語の学習を強力にサポートします。
ブロック崩しゲーム 3Dツリー クリスマスツリー
また、このようなボタンの用意されているページでは、掲載しているプログラムをStudy Cに直接ロードし実行したりすることができます。
Study Cにロードする Study Cにロードし編集する Study Cにロードし実行する
Study C無料利用についての詳細は、このページを参照してください。



1.タートルグラフィックス

 StudyCにはコンピュータ画面に絵を描く方法としてタートル(亀)グラフィックス機能が用意されています。 タートルグラフィックスはプログラマが画面上の亀に「右を向け、前へ進め、...」などと指示を与えると亀が這い回ったあとに線が描かれるという機能です。 原理がやさしいためか子供たちのコンピュータ教育にも使われているとのことです。


2.四角形

 タートルグラフィックスは通常プログラム中から呼び出す機能ですが、StudyCではタートルグラフィックスの動作を確認するためにコマンドラインから入力することも可能です。 コマンドラインでは"tg ..."のような形式でタートルグラフィックスコマンドを実行します。

 タートルグラフィックスを使用するにはタートルが動き回るための砂場(ウィンドウ)を用意する必用があります。 タートル用のウィンドウをオープンするには次のように行います。

C:\StudyC\MyProg>tg openwin(500, 400)
StudyCでコマンドを入力しているところ

"C:\StudyC\MyProg>"はプロンプトと呼ばれるもので、コマンドの入力場所を指示するためのメッセージです。 このメッセージは現在作業中のディレクトリの場所(カレントディレクトリ)を表示する機能を兼ねています(これ以降は、コマンド入力でのプロンプト表示は省略します)。 openwinがタートル用のウィンドウを表示するための命令で500,400はウィンドウの横、縦のドット数を指定しています。入力しEnterキーを押すとウィンドウが表示されます。 ウィンドウが表示されると入力フォーカスがタートルウィンドウに移動してしまうので、マウスの左ボタンでStudyCのウィンドウをクリックしてStudyCへのキーボードが可能になるようにしてください。 この時タートルウィンドウが隠れてしまうようなら両ウィンドウが重ならないように移動してください。
オープン時のタートルグラフィックスウィンドウ

 中央に表示されている三角形がタートル(だと思ってください)です。このタートルを移動させ四角形を描かせます。手順は次のようになります。

(1)タートルを前方に100進ませる。
(2)タートルを右へ90度回転させる。
(3)タートルを前方に100進ませる。
(4)タートルを右へ90度回転させる。
(5)タートルを前方に100進ませる。
(6)タートルを右へ90度回転させる。
(7)タートルを前方に100進ませる。

これと同じタートルコマンドは次のようになります。

(1)tg fd(100)
(2)tg rt(90)
(3)tg fd(100)
(4)tg rt(90)
(5)tg fd(100)
(6)tg rt(90)
(7)tg fd(100)

StudyCでコマンドを入力しているところ
タートルグラフィックスウィンドウに四角が描かれているところ

fd(前進)で指定する値100を大きくすれば四角形は大きくなります。 描いた絵を消すにはinitコマンドを実行するか

tg init()

closewinコマンドでウィンドウをクローズします(この場合はopenwinからはじめる必用があります)。

tg closewin()


3.プログラムで四角形

 「それでは、絵を消して同じ図形を10回ほど描いて見ましょう」といったら、ちょっとやる気がおきないと思います。 このような繰り返し同じ作業をさせるにはプログラムを作ってしまうのが最適な方法です。 タートルグラフィックスのコマンドは少し形式を変えるだけでプログラムから呼び出すことができます。

(1)tgとコマンドの間の空白を1文字のアンダーライン"_"に置き換えます。
(2)タートルの移動量や回転角などの数字に".0"を加え少数点を含んだ数字にします。
(3)最後にセミコロン";"を加えます。

例)
tg fd(100) -> tg_fd(100.0);
tg openwin(500,400) -> tg_openwin(500, 400); 移動量や角度ではないので(ドット数)".0"は加えない。

形式を修正したものを次の...の部分に記述するとプログラムが完成します。

main()
{
        .
        .
        .
}

 プログラムを作成して実行されるにはエディタと呼ばれるソフトウェアを使用します。 エディタとはプログラムを作成するためのワードプロセッサ(ワープロ)のようなソフトウェアで、ワープロは文章を入力することを主な目的としていますが、エディタはプログラムを入力することが主な目的のソフトウェアです(もちろんワープロでもプログラムを作成することは可能です)。Study Cにはエディタが内蔵されており、F12キーか画面右上のボタンを押すと起動されます。 エディタが起動したら、画面最上行が緑色から水色に変化したことを確認して下さい。

 エディタを使って四角形を表示するプログラムを作成してみましょう。

main()
{
        tg_openwin(500, 400);
        tg_fd(100.0);
        tg_rt(90.0);
        tg_fd(100.0);
        tg_rt(90.0);
        tg_fd(100.0);
        tg_rt(90.0);
        tg_fd(100.0);
        tg_refresh();
}

StudyCのエディタでプログラムを入力しているところ

改行時にはEnterキーを押してください。
(1)main()と入力します。
(2)Enterキーを押しカーソルが次の行に移し{を入力します。
(3)tg_openwinの前の空白はTABキーを1回だけ押します。これで8文字分カーソルが右に移動するのでtg_open(500, 400);を入力します。
(4)(3)と同様の手順でtg_fd(100.0);...と入力していきます。
(5)最後にタートルグラフィックスの軌跡を画面に表示させるためにtg_refresh()を呼び出します(次バージョンからはこの関数は省略可能にする予定です)。 (6)}を入力します。

入力し終わったら全体を見直して間違った所があればカーソルキーでカーソルを移動して訂正します。 不要な文字の削除にはDeleteキーを使います(カーソル位置の文字が削除されます)。
うまくいかない場合は次のボタンをクリックしてください。

Study Cにロードし編集する ブラウザとの連携機能が使用可能なStudy Cのバージョンなどについて...


4.プログラムの実行

 入力したプログラムを実行してみましょう。今までのようにリターンキーを押しただけでは プログラムは実行されません。F12キーか画面右上のボタンでエディタを抜けてコマンドモードに戻ります(画面の最上行が水色から緑色に戻ることを確認してください)。 プロンプトが表示されたら画面右中央のRUNと書かれたボタンかrunと入力しEnterキーを押します。

run

次のボタンでも実行できます。

Study Cにロードし実行する ブラウザとの連携機能が使用可能なStudy Cのバージョンなどについて...

プログラムが正しければ、タートル用のウィンドウに四角形が表示されます。

タートルグラフィックスを使えばこんな絵も描け、さらに回転させるようなこともできます。 3Dのツリーイメージイメージを拡大して見たい方はこちらをクリックしてください。
少し回転させたところ。




5.エラー発生時の修正方法

 プログラムを作成する場合、タイプミスで文字や数値を間違って入力してしまうことがよくあります。 短いプログラムならば人間が目で確かめても良いでしょうが、プログラムが大きくなってくると簡単にはチェックできません。 しかし、インタープリタやコンパイラはある程度の誤りを発見して知らせてくれます。たとえばいま、入力したプログラムのtg_fdを間違えてtg_dfと入力してしまって実行すると、次のようにエラーが表示されます。

エラー番号 : 406
シンボルtg_dfが未定義です
    4行 : tg_df(100.0);

 エラーが発生したときはエディタを使ってプログラムを修正します。F12か画面右上のボタンでエディタを起動すると、エラーが発生した行にカーソルが移動して赤で反転表示されます。 カーソルを左右に移動してtg_dfをtg_fdに修正します。修正したらF12か画面右上のボタンでコマンドに戻り、画面右中央のRUNと書かれたボタンかrunでプログラムを実行します。

 誤りがある行はStudy Cが知らせたエラー行の直前の行の場合があります。たとえば、
プログラムの3行目の最後にあるセミコロン";"をエディタで削除して、次のようなプログラムに変更してください。

main()
{
        tg_openwin(500, 400)
        tg_fd(100.0);
        tg_rt(90.0);
        tg_fd(100.0);
        tg_rt(90.0);
        tg_fd(100.0);
        tg_rt(90.0);
        tg_fd(100.0);
        tg_refresh();
}

このプログラムを実行すると、次のようなエラーが発生します。

ERROR(2195) この場所には;が必要です.

次のボタンでも実行できます。

Study Cにロードし実行する ブラウザとの連携機能が使用可能なStudy Cのバージョンなどについて...

ここで再びエディタを起動すると、赤で反転表示されている行(エラー行)が4行目のtg_fd(100.0);の行になります。 実際のエラー行は3行目のtg_openwin(500, 400)がある行ですが、この例のようにエラーの原因が行の最後にある場合、Study Cはエラー行が次の行であるように表示することがあります。

エディタでエラー行が表示されているところ


6.プログラムのセーブ

 エディタで入力したプログラムはStudy Cを終了させたり電源を切ってしまうと、コンピュータ内部から消えてしまいます。入力したプログラムを再度利用したい場合プログラムをハードディスクにセーブ(格納)しておく必要があります。 ハードディスクへのセーブはコマンドモードで次のように行います。

save samp1.c

これで、先ほど入力したプログラムがsamp1.cというファイル名でセーブされました。 このファイル名は自分で好きな名前をつけることができます。また、ファイル名の後ろには、ピリオド、拡張子と続きます。拡張子はファイルの種類を分類するために使用されます。 Cのプログラムを格納するファイルは普通Cという拡張子を使います。

ハードディスクへのセーブが正しく行われると、画面最上行に
    「ファイルをセーブしました」
と表示されます。


7.プログラムの消去

 新たに別のプログラムを入力する場合、エディタに残っている内容を次のプログラムを入力する前に消去しておきます。

 F12か画面右上のボタンでエディタを起動すると、先ほど入力したプログラムが表示されます。ここで、再度F12か画面右上のボタンでコマンドモードに戻り、次のように入力します。

new

これで入力したプログラムは消去されます。再びF12か画面右上のボタンでエディタを起動しても、入力したプログラムは消去されています。


8.プログラムのロード

 ハードディスクにセーブしてあるプログラムは、次の操作(ロード)によって再度実行したり変更を加えたりすることができます。

load samp1.c

 ロードコマンド実行後にF12か画面右上のボタンでエディタを起動するとロードしたプログラムが表示され、修正したりすることができます。


[an error occurred while processing this directive]