条件判断

「もし状況がAだったら処理Xを実行し、もし状況がBだったら処理Yを実行する」
このように、状況に応じて処理を選択する手法を条件分岐と呼びます。

if…then…else

もっともよく使われる条件判断です。次の点に注意します。

  • elseの前の文末にはセミコロンをつけない
  • 条件が満たされたときに実行される処理を、begin..end ブロックで囲む
  • ifの後の式(論理式)が複数の場合は、カッコ()でくくる

【構文】

if <式> then <文1> else <文2>

【例】

if 論理式 then begin
  文
  文
 ...
end;

【サンプルプログラム】

implementation

{$R *.dfm}
  var
    intFlg : Integer;//ユニット内変数の宣言

procedure TForm1.Button1Click(Sender: TObject);

begin
  if intFlg = 0 then          //変数intFlgが0のとき
    begin
      Form1.Color := ClBlack;//フォームが黒色
      intFlg := 1;           //intFlgに1を代入
    end                      //elseの直前なのでセミコロンはつけない
  else                       //intFlgが0以外のとき
    begin
      Form1.Color := ClWhite;//フォームが白色
      intFlg := 0;           //intFlgに0を代入
    end;

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
    intFlg := 0;  //変数の初期化
end;

end.

【実行結果】 ボタンをクリックするごとに色が切り替わります

ren15ren16

 

case文

  • 複数の条件を指定する場合、if文でも分岐することはできますが、case文を使うほうがプログラムが読みやすくなります。
  • 条件が満たされたときに実行する処理を、begin…endブロックで囲みます。
    ※ブロック内の処理が1文だけのときにはbegin…endブロックで囲む必要はありません。
  • case文を使う場合は、elseの直前の文にもセミコロンが必要です。

【書式】

case <式> of
   値1: ...文1;
   値2: ...文2;
   ...
   else ...それ以外の処理;
end;

【サンプル】

  //性別をチェックする
     case RadioGroup1.ItemIndex of
      0 : sex := male;
      1 : sex := female;
      else
        ShowMessage('性別を入力してください');
     end;

【サンプル】

procedure TForm1.Button1Click(Sender: TObject);
var
  intNo  : integer;   //Editコンポーネントに入力された値
  strMsg : String[10];//メッセージボックスに表示する文字
begin
  intNo := StrToint(Edit1.Text);//Editコンポーネントの値を代入(整数に変換)
  case intNo of
    3..5  : begin
            strMsg :='春';
            ShowMessage(strMsg);
            end;
    6..8  : begin
            strMsg :='夏';
            ShowMessage(strMsg);
            end;
    9..11 : begin
            strMsg :='秋';
            ShowMessage(strMsg);
            end;
    12,1,2 :begin//12..2のように指定すると下限が上限を超えるのでエラーになる
            strMsg :='冬';
            ShowMessage(strMsg);
            end;
    else
      begin
        strMsg :='エラー';
        ShowMessage(strMsg);
      end;
  end;
end;

【実行結果】 月を入力しボタンをクリックします

ren17

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です