◆◇◆ Tips! ◆◇◆

コンソールアプリケーションを作ろう

[Japanese Pocket C User's Page]-[Tips!]


まずは、GUIなどを利用しない簡単なコンソールアプリケーションの作り方を紹介します。
前提条件としまして、PocketC ヘルプの言語の章は目を通しておいてください。

1.コンソールアプリケーションとは?

コンソールアプリケーションとは、ウィンドウやボタンを使わずに、
テキスト表示のみのアプリケーションをさします。
ウィンドウを使ったプログラムは慣れるまで難しいので、
まずはコンソールアプリケーションを使って、

・データ型の扱い
・if文などの条件分岐の使い方
などをしっかり身につけましょう。

2.サンプルプログラム

早速、コンソールに関する関数を利用したサンプルプログラムを
紹介します。


(プログラム名:console.pc)
// コンソールアプリケーションのサンプル
// written by まつし 2000/3/27 通勤中に作成

main()	// 1)本体はmain関数

{
string ans;// 2)main関数内のローカル変数ansを定義
puts("改行をしていません。");
puts("エスケープシーケンスをつけました。\r\n");// 3)-aエスケープシーケンスで改行
puts("charの13,10をつけました。"+(char)13+(char)10);// 3)-b コードで改行

putsl("putslを使いました");
puts("putsを使いました");
putsl("putslを使いました");
graph_off();// 4)コンソール画面を表示
putsl("コンソールを表示しました");
ans=gets("メッセージを入力してください");// 5)文字の入力
putsl(ans);	
ans=gets("コンソールをクリアしますか?(yでクリア)");
if (ans=="y") // 6)if文による条件分岐
	{
	clear(); // 7)clear関数で画面をクリア
	puts("コンソールをクリアしました");
	}
else
	{
	puts("コンソールのクリアを取りやめました");
	}
}

3.解説

プログラム上のポイントをいくつかあげます。

1)本体はmain関数

プログラムの初めにmain続いて { }で囲まれた部分があります。
これがmain関数で、プログラムが実行されたときに呼び出される箇所です。
ヘルプにも説明がありましたね。

2)main関数内のローカル変数 ansを定義

main関数の初めで、ansという文字列型の変数を定義しています。
関数の内部で定義されていますので、この変数はmain関数内でのみ有効な
ローカル変数です。

3)コンソールに表示を行う命令 putsとputsl

コンソールに表示をする関数として、putsputslを利用しています。
putsは改行をしないので、次にコンソールへ表示する命令が出たら、
続いて表示されます。これに対し、putslは改行を行うため、
次にコンソールへ表示する命令が出た場合は改行されて表示されます。

なお、putsを使った場合でも、改行をあらわすCR+LFを直接書き込めば、
putslと同じ効果を得ることができます。
サンプルでは、次の2つの方法で試しています。

a:特殊文字に対するエスケープシーケンスを使う方法
b:キャラクターコードを直接指定する方法

サンプルにある(char)13のようにデータ型を括弧で囲むと、
その後ろの値を括弧で囲まれたデータ型にしてくれます。

ansi C ではprintfとかを使うのですが、
残念ながらPocketCでは使えないようです。

4)コンソールを画面に表示するには?・・・graph_off関数を使う

putlなどを実行しただけでは、画面に表示されません。
コンソール画面を表示するためには、[File]-[Show Console]を選択するか、
graph_off関数を呼び出す必要があります。

5)文字の入力・・・gets関数

文字の入力にgets関数を利用しています。gets関数によってインプットダイアログが表示され、
その結果の文字列を先ほど定義した文字列ansに代入しています。

6)if文による条件分岐

if文により、文字列ansの値が"y"かどうかにより条件分岐を行っています。
正しければはじめの{ }で囲まれた中を、ことなれば、else の後の{ }で囲まれた部分を実行しています。

7)clear関数で画面をクリア

if文の条件分岐の中で、文字列ansの値が"y"の場合、 clearという関数により
コンソール画面をクリアするため、画面上にはその次のputs関数で表示される

「コンソールをクリアしました」

しか表示されていません。

ちょっと説明がくどすぎたかも知れません。

4.おさらい

ここでは、次の事を確認しました。

・コンソールに関する関数の使い方(入力、出力、クリア、コンソール画面の表示方法)
・if文の使い方
・データ型を明示した代入

まだまだ簡単ですね。

 

5.あらら・・・うまくいかない

このサンプルを実行したときに、console上に正しく表示されないことがあるようです(E-55にて確認)。
原因は不明ですが、処理速度がおいついていないためと思われます。

putsとgetsの間にsleepをいれることによって回避することが出来るようです。

<修正例>

ans=gets("メッセージを入力してください");// 5)文字の入力
putsl(ans);

sleep(0); //この行を追加しました
ans=gets("コンソールをクリアしますか?(yでクリア)");


[Japanese Pocket C User's Page]-[Tips!]