LoginSignup
2
0

More than 5 years have passed since last update.

無料の開発環境 Delphi Starter Edition で Object Pascal言語を優しく学ぶ 第3回 「条件とループ」

Last updated at Posted at 2017-02-06

Delphi Starter Edition チュートリアルシリーズ シーズン2 第3回 「条件とループ」

image

2017年1月23日より 「Delphi / C++Builder Starter チュートリアルシリーズ」 シーズン2、全9回、3月27日まで、毎週月曜日、Delphiパートが 17時00分~17時20分、 リアルタイム放送スペシャルコンテンツが5分~10分、C++Builderパートが 17時30分~17時50分の時間割でお送りしています。

無料でダウンロード & 利用できる開発環境のDelphi / C++Builder Starter エディションを使用して、プログラミング言語のDelphi (Object Pascal ), C++の基礎を学ぶオンラインセッションです。

使用したスライドなどの情報を掲載します。

Webセミナースライド

当セミナーのスライドは下記アドレスよりご参照いただけます。
http://www.slideshare.net/ssuser194f49/delphi-cbuilder-starter-2-delphi-2-71796636

アジェンダ

  • ねらい
    • 条件によって行う処理を変える方法を知る
    • 一定条件のもと繰り返し処理を行う方法を知る
  • 実施内容
    • 一般的な文の基本
    • 条件文の使い方を学ぶ
    • ループ文の使い方を学ぶ
    • ループ文の制御を学ぶ

開発環境インストール

Delphi / C++Builder Starter チュートリアルシリーズ シーズン1 第1回 ‟無料で始めよう アプリ作成„をご参考になり、開発環境をインストールしてください。

以下、Delphi Webセミナーの本筋

一般的な文 (Statements)

  • 左から右に読んで、上から下に進む
  • 複数行をまとめる場合、begin で始まり end; で終わる
  • 文はセミコロン[ ; ] により次の文へと分けられる
  • 条件文やループ文により、分岐、繰り返し処理を行う
// 一般的な object Pascal の文 (Statements)の例
procedure TForm1.Button1Click(Sender: TObject);
var
  iA, iB: Integer;
begin
  iA := 1;
  iB := iA * 2;
end;

if 条件文

  • 条件・判定により、実行する/しない処理を変えることができる
  • 値が True/真であればthen以降を処理
  • 値が False/偽であればthen以降は処理しない。 elseがあればelse以降を処理
  • else を使う場合にはelseの前にセミコロンは付けない(文の終わりとしない)
//if構文
if 条件判定式 then
    値がTrue/真の時に実行される処理
  else
    値がFalse/偽の時に実行される処理;
//if 文の例
procedure TForm1.CheckBox1Change(Sender: TObject);
begin
  if CheckBox1.isChecked then //チェックボックスの"isChecked"プロパティを判定
    ShowMessage('チェックボックスON') // IsChecked プロパティの値が True. セミコロンなし
  else
    ShowMessage('チェックボックスOFF'); // IsChecked プロパティの値が False
end;

if 条件の比較、複合条件 、複合文

  • 条件の判定に比較演算子を使用 : '= , <> , < , <=, > , >= , !'
  • 複数の条件を合わせて判定する場合、論理演算子を使用: and , or , xor
  • 否定(反転)の場合も論理演算子: not 例 : if not(CheckBox1.isChecked) then // Trueではなければ
  • 複数の文をまとめて実行するには beginend でくくる
  • 条件判定後False/偽ののち、さらに条件判定を行うときは else if がある
意味 比較演算子
等しい =
等しくない <>
左辺が小さい <
以下 <_=
左辺がより大きい >
以上 >=
//if 複合文、比較演算子使用の例
begin
  if RadioButton1.isChecked and CheckBox1.isChecked then // and で複数条件確認
  begin // begin - endで複数文をまとめる
    i := i + 1; // begin – end でまとめた文のそれぞれは ; (セミコロン) を付けて一文を区切る
    ShowMessage('チェックボックスON');
  end  //else前に、複数分をまとめるために使ったbegin-endの endの後ろには、セミコロンを付けない
  else if i <= 10 then // else ifでさらに条件判定
    ShowMessage('チェックボックスOFFでiが10以下')
  else
    ShowMessage('チェックボックスOFFでiが10より大きい');
end;

case ~ of …文

  • より多くの選択肢があるような場合、変数の値によって処理内容を選択
    • 変数のデータ型は順序型であること
  • 整数値 Integer, 文字 Char, 論理型 Boolean,
  • 列挙型や部分範囲型 type typeName=(red, blue,…)
  • 処理条件に当てはまらない場合の処理として elseを使用可能 (省略も可能)
  • case 文の終わりは end; で閉じる
//case文の構文
 case 評価される変数 of
   1: 評価される変数が値1と等しいときに実行される処理; //セミコロン必要
   2: 評価される変数が値2と等しいときに実行される処理; //セミコロン必要
   3: ;
 else //elseとその処理は省略可能
   変数がいずれの値にも合致しないときに実行される処理;
 end;

case ~ of … 列挙型の使用例

評価される変数として列挙型の変数も使用可能


//case~of 列挙型変数の使用例
type
  TColor = (Red, Green, Blue); //列挙型の定義
var
  myColor: TColor = Red;  //列挙型の変数宣言
procedure TForm1.Button1Click(Sender: TObject);
var
  strColor: string;
begin
  case myColor of     //列挙型変数の値による case of
    Red: strColor := 'Red'; //変数myColorの値がRedなら実行
    Green: strColor := 'Green'; //変数myColorの値がGreenなら実行
    Blue: strColor := 'Blue'; //変数myColorの値がBlueなら実行
  end;
  if strColor <> '' then
    ShowMessage(strColor);
end;

case ~ of … 値の使用例と複合文

  • 値は定数のほか、部分範囲も指定可能
  • 複数の文をまとめて実行するには beginend; でくくる
//値に部分範囲を使用した例、およびbigin end; で複数処理をまとめた例
 case aChar of     //Char型の変数によるCase文
    '+': str := 'プラス記号';   //定数一文字の値
    '-': str := 'マイナス記号'; //定数一文字の値
    '0'..'9': str := '数字'; //値指定として部分範囲。数値の0~9
    'A'..'X': str := '英語大文字'; //値指定として部分範囲。数値の0~9
    'a'..'x':
      begin //複数の処理を行う場合begin endでくくる
        str := '英語小文字';
        i := i+1;
      end; //case内で複数分をまとめる場合にbegin-end;を使用。endの後ろには;(セミコロン)
  else //いずれの値にも当てはまらない場合の処理
    str := 'それ以外の文字';
  end;

for ループ 文

  • カウンタ(変数)の値が任意の初期値から一定の値になるまでループ
    • カウンタは1づつ増加(もしくは減少)
    • カウンタは整数型Integerだけではなく、文字型Charや列挙型も使用可能
    • for ~ to ~ do //カウンタを1ずつ増加
    • for ~ downto ~ do //downtoの場合、カウンタは1ずつ減少
//forの構文
 for カウンタ(変数) := 初期値 to この値に達した後ループ終了 do
  ループで実行される処理;
//for文の例
var
  I, iTotal : Integer; 
begin
  iTotal := 0;
  for I := 1 to 10 do
  begin 
     iTotal := iTotal + I;
  end;

for ループ 文 (使用例)

//Char型の使用例
var
  aChar : Char; 
begin
  for aChar := 'a' to 'z' do
    ShowMessage(aChar);
//列挙型の使用例
type
  TColor = (Red, Blue, Green, Yellow, Black);

var
  aColor : TColor; 
begin
  for aColor := Low(TColor) to High(TColor) do
    begin 
     //省略
    end;

for ~ in ~ do ループ 文

  • 文字列、配列、リスト、レコードなどに代入されている内容分ループ
    • 順に要素にアクセスしていき、データの最後で終了
      • 配列、リスト、レコードは後日のセミナーで紹介
//for in do 構文
 for 現在の要素(変数) in 集合や文字列の変数 do
  ループで実行される処理;
//for in do 使用例
var
  Str : String;
  Ch : Char; 
begin
  Str := 'Hello Delphi World';
  for Ch in Str do 
    ShowMessage(Ch); 

参考DocWiki: for 文を使用するコンテナの繰り返し

while と repeat ループ

  • 設定した条件によりループを繰り返す
    • while ~ do は ループ冒頭で判定。判定がTrueの間ループ
    • repeat ~ until はループ終端で判定。判定がTrueになるまでループ
//while構文
 while 条件式 do //条件が満たされている間、ループ(do以下のブロックを実行)
 begin
   I := I + 1;  //ループしたい処理
 end;
//repeat構文
 repeat
    I := I + 1;  //ループしたい処理
 until 条件式; //条件が満たされるまでの間、ループ(repeatに戻る)

while と repeat ループ 使用例

  • 以下の例では、どちらも表示されるShowMessageは 101
  • repeat文の場合、少なくとも1回は処理が実行される
//while使用例
 I := 0;
 while I <= 100 do //条件が満たされている間ループ(do以下のブロックを実行)
 begin
   I := I + 1;
 end;
 ShowMessage(I.ToString);
//repeat 使用例
 I := 0;
 repeat
    I := I + 1;
 until I > 100; //条件が満たされるまでの間ループ(repeatに戻る)
 ShowMessage(I.ToString);

Break, Continue,によるループ制御

  • Break;
    • ループを中断し、ループを抜ける(ループの直後の文に移行)
  • Continue;
    • ループの条件判定(forカウンタ, while条件判定, until条件判定)までジャンプ
    • ループを抜けるかどうかは、カウンタ達成か、条件判定に依る
//break使用例
  for aChar := Low(Char) to High(Char) do
  begin
    if aChar = 'A' then
    begin
      ShowMessage('見つけた! ');
      Break; //ループから抜ける
    end;
  end;
  ShowMessage(aChar);

おわりに

第3回、2月6日分の Delphiパート 「条件とループ」は以上です。

<<シーズン2 第2回の記事はこちら

シーズン2 第4回の記事はこちら>>

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0