【DELPHI STARTER チュートリアルシリーズ】 シーズン2 第2回 ‟変数と型„ [JAPAN]

Posted by on in Programming

Delphi Starter Edition チュートリアルシリーズ シーズン2 第2回 「変数と型」

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

 

アジェンダ

  • ねらい
    • 変数とは何か、型とは何かを知る
    • 変数と型の使い方を知る
  • 実施内容
    • 変数とデータ型の宣言
    • 変数とデータ型の宣言場所と影響範囲
    • 変数とデータ型の使用
    • 演算子とは
    • キャストと型変換

 

開発環境インストール

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

 

以下、Delphi Webセミナーの内容

変数と型

  • 型(データ型)
    : どんな種類のデータを入れるかを決めてある形
    数値なのか、文字なのか。これらの複合である場合もある
  • 変数
    : データを記憶・保存(代入)させておく、識別子を持った 入れ物
    どんなデータ型を使用するか決めて、名前(識別子)を付けて使用する

Delphiはプログラム内で使用する変数をvar ブロックで宣言して使用します

 

データ型

主要(よく使う)データ型の一例

  • 整数データ型
    • 整数(数値)を入れる
    • Integer, Uint64 …

       

  • 浮動小数点データ型
    • 小数点を含む数値を入れる
    • Single, Double, Extended …

       

  • 文字列データ型と文字データ型
    • 文字や、文字の集合(文字列)を入れる
    • Char, String …

       

  • 論理データ型
    • 論理値(True / False -> 真か偽) を入れる・表す
    • Boolean …

       

  • その他のデータ型
    • Variant, Currency, Array …

       

より多くの、Delphiのデータ型の一覧はDocwikiを参照してください:
http://docwiki.embarcadero.com/RADStudio/Berlin/ja/Delphi_のデータ型

 

宣言について

プログラム内で使う前に、変数(入れ物)として識別子を付けて使用する型を指定します。

  • 指定する場所は、プログラム内の var 宣言のブロック内に記述します。
  • 定数はプログラム内のconst 宣言ブのロック内に記述します。

宣言する場所で利用可能(参照可能)な範囲が異なります。

  • interface部内varブロック内で変数の宣言をした場合
    • 外部ユニットからも参照可能なグローバル変数となる
  • implementation 部直下のvarブロック内で変数の宣言をした場合
    • ユニット内で使用可能なグローバル変数
  • procedure / function内のvarブロック内で変数の宣言をした場合
    • 手続き、関数内でのみ有効な変数

宣言の例
image

 

代入について

変数にデータを入れることを代入といいます

  • := (代入演算子)を使用して変数に代入します。
  • [代入される変数] := [代入したいデータ] の順序で書きます。
  • 変数の型に合うデータが代入可能です。

image

myString := myInteger.ToString  {ヘルパーで整数を文字列変換して代入。これはOK。
ヘルパーは下記にて説明します。}

 

ヘルパー

変数を扱う上で便利な機能 (数値を文字列化する等)

  • Integer 型ヘルパー / 浮動小数点型ヘルパーなどがあります。

image

参考DocWiki:

http://docwiki.embarcadero.com/Libraries/Berlin/ja/System.SysUtils.TIntegerHelper_Methods
http://docwiki.embarcadero.com/Libraries/Berlin/ja/System.SysUtils.TSingleHelper_Methods

 

ルーチン

ヘルパー以外にも変数を扱う上で便利な関数があります

image

参考 docwiki その他の標準ルーチンについてはこちらをご参照ください:
https://goo.gl/PZRP5x

 

ユーザー定義データ型

自分好みのデータ型を作るには、Typeブロックの宣言後に定義します

  • ある連続した範囲を入れられるデータ型を作れる「部分範囲」
    Type TOomoji = ‘A’ .. ‘Z’; //大文字AからZだけを代入できる型を定義
    TSuuji = 0..9; //0から9だけを代入できる型を定義
    THyakuketa = 100..999 //100から999までの三桁だけを代入できる型を定義

  • 特定の任意の値を保持するデータ型を作れる「列挙型」
    TColor = (Red, Yellow, Green, Cyan, Blue, Violet); //列挙している文字列(色)だけを保持できる型
    TFontStyle = (fsBold, fsNarrow, fsItalic, fsUnderline); //列挙しているフォントスタイルを保持できる型

  • さらに、データ型を複数同時に保持できるようになる「集合型」 “Set of”
    TFontStyleSuite = set of TFontStyle; //複数のフォントスタイル (太文字 +イタリック)を同時保持

ユーザーデータ型はvar ブロックで識別子を付け型指定して使用します

var 
  myColor : TColor;            //Typeブロックで定義したTColor の変数識別子を指定
  myFontstyles : TFontStyleSuite;    //集合型として定義したTFontStyleSuite を使用

代入する際に、集合型 は複数のデータを保持可能で、集合演算子を使用して組み合わせ可能です

 MyFontStyles := [TFontStyle.fsBold];
 MyFontStyles := MyFontStyles + [TFontStyle.fsItalic, TFontStyle.fsUnderline] - [TFontStyle.fsBold];
  • Include / Exclude で代入する方法もあります : Include(MyfontStyles, TFontStyle.fsBold);

image

 

式と演算子

式とは値を返す構文こと

  • 変数一つでも式 (変数の保持している値が返る)
  • 関数も式 (関数の戻り値が返る)
  • 算術式 10-5/2 も式 (計算の結果が返る)
  • A := X; A := somefunction(); A := 10-5/2; //式は値を戻すのでこんな感じで代入して使える
  • If A = X then~ : //この A=X も式。比較演算を使ってBoolean 型の値を返すので if 条件式に使える

演算子は下記のような計算・演算、比較を行うための記号や記述のこと

  • +, -, *, / … などの計算を行うための算術演算子
  • if 文などの条件式を複合的につかうための not, and, or, xor などの論理演算子
  • if 文なの条件比較に使われる =, <>, <=, >= などの関係演算子
  • := も代入演算子

各演算子は優先度があります。詳しくはDocwiki参照
参考 docwiki :http://docwiki.embarcadero.com/RADStudio/Berlin/ja/式(Delphi)

演算子の一例

  • 算術演算子
    image

  • 比較演算子
    image

 

日付 と 時刻 の型

日付、時間を扱う便利な型があります

  • TDateTime

*日付、時間操作に便利な関数があります*
image
image
参考Docwiki: http://docwiki.embarcadero.com/RADStudio/Berlin/ja/日付および時刻のサポート

image

 

型のキャスト と 型変換

異なる型には代入できないが、あえて代入する際に使う方法です

  • 数値型においてより大きな入れ物に入れる場合や、整数値を実数型(浮動小数点型)に入れる場合には、型キャストは必要なく安全に代入可能

    • Int64型 (整数) := Integer (整数);
    • Single型 (実数) := Integer (整数);
  • 異なる型に物理的にデータをコピーする方法がキャスト

  • 異なる型に関数やルーチンを使って戻される値を使うのが型変換

キャスト :どの型に変化するか型名を書き、カッコでくくる
image
コンパイラによる型のエラーチェックが行われない弊害があり、エラー箇所の発見が行いにくくなります

型変換 : 関数、ルーチン、ヘルパーを使って変換
image

参考Docwiki :
http://docwiki.embarcadero.com/RADStudio/Berlin/ja/型変換ルーチン
http://docwiki.embarcadero.com/RADStudio/Berlin/ja/Delphi_組み込みルーチン

 

おわりに

第2回、1月30日分の Delphiパート「image」について以上です。

[セミナー動画] 

 

チュートリアルセミナー視聴ページの下のほうで過去実施分を見れるようになりました。チュートリアルシリーズにすでにお申し込みの方々は、チュートリアルシリーズ視聴ページにてご覧ください。まだ申し込んでいない方は下記アドレスよりお申込みいただくと視聴できます。

http://forms.embarcadero.com/starter-tutorial-webinar

■次回のDelphiパートは2月6日(月) 17:00より、“条件とループ„をお送りします。

それではまた来週!

<<シーズン2 第1回 ‟シューティングゲームのプログラム„

シーズン2 第3回 ‟条件とループ„>>

 

 

 


About
Gold User, No rank,
Sales consultant - Embarcadero Technologies , at Japan Twitter : @kazaiso

Comments

Check out more tips and tricks in this development video: