GeoCities home page

プログラミング A home page

1998年4月20日分

"さん"づけしよう (文字列の足し算)

上の欄の内容がそのまま下の欄にコピーされるだけではつまらないですから、"さん"づけするプログラムを作ってみましょう。つまり、例えば上の欄に「山田」と入力してボタンを押すと下の欄に「山田さん」と現れる、というプログラムです。

前回のプログラムをそのまま改造します。前回のプログラムが画面に現れていない場合、「ファイル→プロジェクトを開く」で前回のプログラムを開いてください。

ボタンや入力欄の配置はそのままでいいです。コードウィンドウの中のプログラムを次のように変更してください。(実際に変更する部分は下線部のみです。)

void __fastcall TForm1::Button1Click(TObject *Sender)

{

EditTo->Text = EditFrom->Text + "さん";

}

では、実行してみましょう。うまく動作しましたか?

簡単すぎるプログラムなので、プログラムの解説はしません。

課題:上の欄に「山田」と入力してボタンを押したら下の欄に「ようこそ山田さん」と表示するプログラムを書きなさい。

場合分けしよう (if文)

さて、このプログラムはまだ賢くないので、上の欄が空っぽのときにボタンを押しても、下の欄に「さん」と表示してしまいます。これは変ですね。そこで、上の欄が空であるときは警告を表示するようにしましょう。

まずは、警告欄を作ります。「入力欄を作ろう」でやったように、入力欄をもう1つ作り、それを警告欄としましょう。

警告欄が「Edit1」ではわかりにくいですから、この欄の名前(Name)を「EditWarning」にし、表示内容(Text)を空にしましょう。

次にプログラムを書き換えます。次のように入力してください。(実際に入力するのは下線部だけです。)

void __fastcall TForm1::Button1Click(TObject *Sender)

{

if (EditFrom->Text == "") {

EditWarning->Text = "ちゃんと入力して!";

}

EditTo->Text = EditFrom->Text + "さん";

}

うまく動きましたか。

このプログラムを解説します。今回書き足した3行は if 文とか条件分岐とか呼ばれるもので、基本的に次の形をしています。

if (条件) {

処理; (何行でもよい)

}

もっと具体的な例で示しましょう。「もし天気が雨なら傘を持っていく」という行動をプログラムで表すと、次のようになります。

if (天気 == ) {

傘を持っていく;

}

また、「=」ではなく「==」と2つ続けていることも不思議に見えるかも知れません。C言語では、「=」は右の値を左に代入することを表し、「==」は左右の値を比較することを表します。そのため、if 文では「==」を用います。

else 文

しかし、このプログラムでは、上の欄が空欄だと下の欄には相変わらず「さん」だけが表示されます。上の欄が空欄なら下の欄には何も表示しないようにしたいですね。つまり、上の欄が空欄でない場合だけ"さん"づけを行うようにしましょう。

プログラムを次のように書き換えてください。(実際に書きかえる部分は下線部だけです。)

void __fastcall TForm1::Button1Click(TObject *Sender)

{

if (EditFrom->Text == "") {

EditWarning->Text = "ちゃんと入力して!";

} else {

EditTo->Text = EditFrom->Text + "さん";

}

}

if 文の最後の閉じ中括弧の後に「else」と続いている点がこれまでと違いますね。if 文の条件が満たされなかった場合、else 文が実行されます。

つまり、このプログラムでは、上の欄が空欄である場合は"さん"づけされません。

課題:上の欄に「佐藤」と入力されたら下の欄に「佐藤様」と表示し、それ以外の人が入力されたらこれまでと同様に「○○さん」と表示するプログラムを作りなさい。

足し算プログラム

足し算をするプログラムを作ってみましょう。

これまでのプログラムは「ファイル→すべて閉じる」で閉じ、「ファイル→アプリケーションの新規作成」で新しくプログラムを作りましょう。

コンポーネント(部品)を配置したら、「ファイル→すべて保存」ですぐに保存しましょう。「CALCUNI」と「CALCPRO」など、どんな名前でも構いません。

プログラムをわかりやすくするため、コンポーネント(部品)に名前をつけましょう。「Edit3」の名前は「EditResult」に、「Button1」の名前は「ButtonAdd」にするものとします。また、ボタンは「足す」と表示し、それぞれの入力欄は空欄にしてください。

次に、ボタンを押したときの動作をプログラミングします。「ButtonAdd」の「OnClick」のプログラムを書きましょう。(「OnClick」が何なのか忘れてしまった場合は、先週のプリントの「プログラムを書こう」を参照してください。)次のように入力してください。

void __fastcall TForm1::ButtonAddClick(TObject *Sender)

{

EditResult->Text = Edit1->Text + Edit2->Text;

}

実行してみましょう。上の欄に12、下の欄に34と入力し、ボタンを押してください。

結果はどうなりましたか? おそらく46にはならず、1234になったと思います。これは、プログラムが12や34を数値と考えずに文字と考えているからです。

入力欄の内容をプログラムに数値として扱わせるには、「.ToInt()」と書きます。プログラムを以下のように書き換えてください。(実際に書きかえる部分は下線部のみです。)

void __fastcall TForm1::ButtonAddClick(TObject *Sender)

{

EditResult->Text = Edit1->Text.ToInt() + (左下に続く)

Edit2->Text.ToInt();

}

(この「.ToInt()」は、実はメンバ関数という少々難しい概念なのですが、ここでは、入力欄の値を数値として扱うときにつける記号と覚えておけば十分です。)

課題:足し算のボタンだけではなく、引き算、掛け算、割り算のボタンを作り、簡単な電卓を作りなさい。

ここまで学んだ内容だけでも、様々なプログラムを作ることができます。興味があれば、あなたの斬新なアイデアで面白いプログラムを作ってください。