Upload
-
View
140
Download
0
Embed Size (px)
Citation preview
© 2016 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential.
第 3 回‟ 条件とループ„
シーズン 2 :プログラミング言語をやさしく覚えよう
DELPHI の部
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
3© 2016 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. #embtwebi_jp
第 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 アカウントでダウンロード可
登録完了後、自動でインストーラーのダウンロード開始
インストール時にシリアルキーを入力
登録時のメールアドレスにシリアルキーが配信される
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;
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/ 偽の時に実行される処理 ;
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;
意味 比較演算子
等しい =
等しくない <>
左辺が小さい <
以下 <=
左辺がより大きい >
以上 >=
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;
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;
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;
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;
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;
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 ループで実行される処理 ;
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 に戻る )
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);
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);
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/
「エンバカデロ」で検索
18© 2016 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. #embtwebi_jp
第 3 回 「条件とループ」まとめ
今日のねらい• 条件によって行う処理を変える方法を知る• 一定条件のもと繰り返し処理を行う方法を知る
実施内容• 一般的な文の基本• 条件文の使い方を学ぶ• ループ分の使い方を学ぶ• ループ文の制御を学ぶ
19© 2016 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. #embtwebi_jp
次回の Delphi パートは2 月 13 日(月) 17:00 よ
り
“function と procedure ( 関数と手続き )„
このあと• リアルタイム放送限定 特別コンテンツ
• C++ パート
20© 2016 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential.