条件分岐は,ある状態や変数の値などによって,次に行う処理を変えることができる制御文です。
ここでは,( if )を使った条件分岐の方法を紹介します。基本的な使い方は以下の通りです。
これは,(式)が真ならば(処理)を行い,(式)が偽ならば(処理)を行わない,という意味です。
(式)が偽のとき,別の処理を行いたいときは,以下のように記述します。
これは,(式)が真ならば (処理A) を行い,式が偽ならば(処理B)を行う,という意味になります。
これを実際に試してみたいと思います。
まず,フォームにボタンコンポーネントを貼り付け,[OnClick]イベントを呼び出してください。呼び出したらその中に次のように記述してください。
これは,もし[form1]の色が赤なら[form1]の色を白にして,[form1]の色が赤でないなら[form1]の色を赤にする,という意味になります。これを一行に書くとわかりにくいので,改行して次のように書くのが一般的です。
ここで,「=」と「:=」の記号の違いについて確認しておきます。「=」は左右のものが同じかどうかを比較するときに使い,「:=」は左の変数などに右の数値などを代入するときに使います。
「Visual Basic」では,数値を代入するときにも「=」を使っていたと思いますが,Pascal言語では,比較と代入のときの記号を区別しています。
今までの書式は,それぞれの場合で処理できるのは1つだけでしたが,場合によっては複数の処理をしたいことがあります。その場合は下のような書式を使います。
上の書式では,「then」と「else」の間に,「begin 〜 end」というものがあります。この「begin 〜 end」の間はいくつでも処理をかくことができます。
ここで,「;」について説明します。この「;」は文の終わりを宣言する記号です。もともと「if」の構文は1つの文なので,それまでの文例では,文の最後に1つだけ「;」がついています。上の文例でも基本的に1つの文なので,一つ目の「begin 〜 end」の「end」のあとには「;」はつきません。しかし下の「begin 〜 end」の「end」は「if」構文の終わりを宣言するために「;」がついています。
「begin 〜 end」の中には複数の文が入りますが,ここに入るのは文なので,それぞれの文の終了を宣言するために「;」をつけます。
上の書式を使って,ソースコードを書いてみます。
今度はフォームのボタンを押すことで,フォームの色を緑→黄色→赤→緑…と順番に変わるようにしたいと思います。準備としてフォームにボタンコンポーネントとラベルコンポーネントを貼り付け,ボタンコンポーネントの[OnClick]イベントを呼び出してください。次に[OnClick]イベントの中に次のように記述してください。
上の記述のように,「begin 〜 end」の間にはどんな文章を書いてもよいので,「if」構文を重ねて使うこともできます。
また上の記述を見ていると,「begin」に対応する「end」がどこにあるかわかりにくくなることがあります。そこで,「begin」を記述したらすぐに「end」を記述する習慣を付けてください。そして「begin 〜 end」の間の文は,「begin」より字下げして記述するようにしてください。
以前,対戦型のゲームで,コンピュータの次の一手のソースコードを書いているときには,「if」構文を6回以上重ねて使うこともありました。そのとき,上のように記述すると,どの階層なのかわかりずらくなるので,下のように書いていました。
この形式で,上の記述を書いてみると,
このように書くと階層がわかりやすくなり,迷うことが少なくなりました。これは自己流ですが,このサイトの中でも無意識に記述することがあると思います。そのときはご了承ください。