22
© 2016 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. 第3第 ‟ 第第第第第第„ 第第第第 2 ププププププププププププププププププ DELPHI 第第

【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第3回 「条件とループ」

  • Upload
    -

  • View
    140

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第3回 「条件とループ」

© 2016 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential.

第 3 回‟ 条件とループ„

シーズン 2 :プログラミング言語をやさしく覚えよう

DELPHI の部

Page 2: 【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第3回 「条件とループ」

2© 2016 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. #embtwebi_jp

Delphi / C++Builder Starter チュートリアルシリーズ

シーズン 2 : 2017 年 1 月 23 日 ~ 3 月 27 日 全 9 回

時間 :毎週 月曜 17 時 00 分 ~17 時 50 分 Delphi 17 時 00 分 ~17 時 20 分 / C++Builder 17 時 30 分 ~17 時 50 分

ねらい :プログラミング言語をやさしく覚えようシーズン 2

第 1 回2017 年 1 月 23

日 シューティングゲームのプログラム第 2 回 1 月 30 日 変数と 型第 3 回 2 月 6 日 条件 とループ第 4 回 2 月 13 日 function と procedure ( 関数と手続き)第 5 回 2 月 20 日 配列 と レコード第 6 回 2 月 27 日 文字列 と オブジェクト第 7 回 3 月 6 日 オブジェクト指向第 8 回 3 月 13 日 作ってみよう(仮)第 9 回 3 月 27 日 コミュニティ と 勉強会

セミナー情報 : 下記の Web サイトhttp://forms.embarcadero.com/starter-tutorial-webinar

Page 3: 【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第3回 「条件とループ」

3© 2016 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. #embtwebi_jp

第 3 回 「条件とループ」

今日のねらい• 条件によって行う処理を変える方法を知る• 一定条件のもと繰り返し処理を行う方法を知る

実施内容• 一般的な文の基本• 条件文の使い方を学ぶ• ループ文の使い方を学ぶ• ループ文の制御を学ぶ

Page 4: 【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第3回 「条件とループ」

4© 2016 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. #embtwebi_jp

無料版 Delphi 10.1 Berlin Starter Edition 入手方法

• シリアルキーを知らせるメール内にも再ダウンロードリンク有• ダウンロード、インストール参考ブログ: https://goo.gl/CCBNdx

エンバWeb 製品 Delphi Starter

バナー 登録 Get

無料で使える開発環境をダウンロード

EDN* に登録済の方は EDN アカウントでダウンロード可

登録完了後、自動でインストーラーのダウンロード開始

インストール時にシリアルキーを入力

登録時のメールアドレスにシリアルキーが配信される

Page 5: 【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第3回 「条件とループ」

5© 2016 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. #embtwebi_jp

一般的な文 (Statements) 左から右に読んで、上から下に進む

複数行をまとめる場合、 begin で始まり end; で終わる

文はセミコロン [ ; ] により次の文へと分けられる

条件文やループ文により、分岐、繰り返し処理を行う

procedure TForm1.Button1Click(Sender: TObject);var iA, iB: Integer;begin iA := 1; iB := iA * 2;end;

Page 6: 【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第3回 「条件とループ」

6© 2016 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. #embtwebi_jp

if 文 条件・判定により、実行する / しない処理を変えることができる

値が True/ 真であれば then 以降を処理

値が False/ 偽であれば then 以降は処理しない。 else があれば else 以降を処理

else を使う場合には else の前にセミコロンは付けない(文の終わりとしない)

procedure TForm1.CheckBox1Change(Sender: TObject);begin if CheckBox1.isChecked then // チェックボックスの "isChecked" プロパティを判定 ShowMessage(‘ チェックボックス ON’) // IsChecked プロパティの値が True. セミコロンなし else ShowMessage(‘ チェックボックス OFF’); // IsChecked プロパティの値が Falseend;

if 条件判定式 then 値が True/ 真の時に実行される処理 else 値が False/ 偽の時に実行される処理 ;

Page 7: 【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第3回 「条件とループ」

7© 2016 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. #embtwebi_jp

if 条件の比較、複合条件 、複合文 条件の判定に比較演算子を使用 : = , <> , < , <=, > , >= , ! 複数の条件を合わせて判定する場合、論理演算子を使用 : and , or , xor 否定(反転)の場合も論理演算子: not

例 : if not(CheckBox1.isChecked) then // True ではなければ

複数の文をまとめて実行するには begin と end でくくる

条件判定後 False/ 偽ののち、さらに条件判定を行うときは else 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;

意味 比較演算子

等しい =

等しくない <>

左辺が小さい <

以下 <=

左辺がより大きい >

以上 >=

Page 8: 【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第3回 「条件とループ」

8© 2016 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. #embtwebi_jp

case ~ of … 文 より多くの選択肢があるような場合、変数の値によって処理内容を選択

変数のデータ型は順序型であること• 整数値 (Integer), 文字 (Char), 論理型 (Boolean), • 列挙型や部分範囲型 type typeName=(red, blue,…)

処理条件に当てはまらない場合の処理として elseを使用可能 ( 省略も可能)

case 文の終わりは end ; で閉じる

case 評価される変数 of 値 1: 評価される変数が値 1 と等しいときに実行される処理 ; // セミコロン必要 値 2: 評価される変数が値 2 と等しいときに実行される処理 ; // セミコロン必要 値 3: …; else //else とその処理は省略可能 変数がいずれの値にも合致しないときに実行される処理 ; end;

Page 9: 【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第3回 「条件とループ」

9© 2016 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. #embtwebi_jp

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;

Page 10: 【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第3回 「条件とループ」

10© 2016 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. #embtwebi_jp

case ~ of … 値の使用例と複合文 値は定数のほか、部分範囲も指定可能

複数の文をまとめて実行するには begin と 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;

Page 11: 【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第3回 「条件とループ」

11© 2016 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. #embtwebi_jp

for ループ 文 カウンタ(変数)の値が任意の初期値から一定の値になるまでループ

カウンタは 1づつ増加(もしくは減少)

カウンタは整数型 (Integer)だけではなく、文字型 (Char) や列挙型も使用可能

• for ~ to ~ do // カウンタを 1 ずつ増加

• for ~ downto ~ do //downto の場合、カウンタは 1 ずつ減少

for カウンタ ( 変数 ) := 初期値 to この値に達した後ループ終了 do ループで実行される処理 ;

var I, iTotal : Integer; begin iTotal := 0; for I := 1 to 10 do begin iTotal := iTotal + I; end;

Page 12: 【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第3回 「条件とループ」

12© 2016 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. #embtwebi_jp

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;

Page 13: 【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第3回 「条件とループ」

13© 2016 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. #embtwebi_jp

for ~ in ~ do ループ 文 文字列、配列、リスト、レコードなどに代入されている内容分ループ

順に要素にアクセスしていき、データの最後で終了• 配列、リスト、レコードは後日のセミナーで紹介

var Str : String; Ch : Char; begin Str := ‘Hello Delphi World’; for Ch in Str do ShowMessage(Ch);

参考 DocWiki: for 文を使用するコンテナの繰り返し : https://goo.gl/bC95M5

for 現在の要素(変数) in 集合や文字列の変数 do ループで実行される処理 ;

Page 14: 【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第3回 「条件とループ」

14© 2016 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. #embtwebi_jp

while と repeat ループ

設定した条件によりループを繰り返す• while ~ do は ループ冒頭で判定。判定が True の間ループ

• repeat ~ until はループ終端で判定。判定が True になるまでループ

while 条件式 do // 条件が満たされている間、ループ( do 以下のブロックを実行) begin I := I + 1;  // ループしたい処理 end;

repeat I := I + 1;  // ループしたい処理 until 条件式 ; // 条件が満たされるまでの間、ループ( repeat に戻る )

Page 15: 【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第3回 「条件とループ」

15© 2016 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. #embtwebi_jp

while と repeat ループ 例

以下の例では、どちらも表示される ShowMessage は 101 repeat 文の場合、少なくとも 1 回は処理が実行される

I := 0; while I <= 100 do // 条件が満たされている間ループ( do 以下のブロックを実行) begin I := I + 1; end; ShowMessage(I.ToString);

I := 0; repeat I := I + 1; until I > 100; // 条件が満たされるまでの間ループ( repeat に戻る ) ShowMessage(I.ToString);

Page 16: 【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第3回 「条件とループ」

16© 2016 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. #embtwebi_jp

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

• ループを中断し、ループを抜ける(ループの直後の文に移行)

Continue; • ループの条件判定( for カウンタ , while 条件判定 , until 条件判定)までジャンプ

• ループを抜けるかどうかは、カウンタ達成か、条件判定に依る

for aChar := Low(Char) to High(Char) do begin if aChar = 'A' then begin ShowMessage('見つけた ! '); Break; // ループから抜ける end; end; ShowMessage(aChar);

Page 17: 【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第3回 「条件とループ」

17© 2016 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. #embtwebi_jp

本日のセミナー内容は弊社ブログに掲載予定

[ コミュニティ ] ↓

[ 日本人ブログ ]

実施内容の再視聴 皆さんが見ているWebページの下に、順次アップロード

エンバカデロWebサイト : http://forms.embarcadero.com/starter-tutorial-webinar [リソース ] – [イベント ]の「Delphi / C++Builder Starter チュートリアルシリーズ」ページ

実施内容サマリー

• Community embarcadero ( コミュニティ エンバカデロ )に Webリンク、サンプルコード情報等

http://community.embarcadero.com/

「エンバカデロ」で検索

Page 18: 【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第3回 「条件とループ」

18© 2016 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. #embtwebi_jp

第 3 回 「条件とループ」まとめ

今日のねらい• 条件によって行う処理を変える方法を知る• 一定条件のもと繰り返し処理を行う方法を知る

実施内容• 一般的な文の基本• 条件文の使い方を学ぶ• ループ分の使い方を学ぶ• ループ文の制御を学ぶ

Page 19: 【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第3回 「条件とループ」

19© 2016 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. #embtwebi_jp

次回の Delphi パートは2 月 13 日(月) 17:00 よ

“function と procedure ( 関数と手続き )„

このあと• リアルタイム放送限定 特別コンテンツ

• C++ パート

Page 20: 【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第3回 「条件とループ」

20© 2016 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential.

Page 21: 【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第3回 「条件とループ」
Page 22: 【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第3回 「条件とループ」