#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 …
- Variant, Currency, Array …
より多くの、Delphiのデータ型の一覧はDocwikiを参照してください:
http://docwiki.embarcadero.com/RADStudio/Berlin/ja/Delphi_のデータ型
###宣言について
プログラム内で使う前に、変数(入れ物)として識別子を付けて使用する型を指定します。
- 指定する場所は、プログラム内の var 宣言のブロック内に記述します。
- 定数はプログラム内のconst 宣言ブのロック内に記述します。
宣言する場所で利用可能(参照可能)な範囲が異なります。
- interface部内varブロック内で変数の宣言をした場合
- 外部ユニットからも参照可能なグローバル変数となる
- implementation 部直下のvarブロック内で変数の宣言をした場合
- ユニット内で使用可能なグローバル変数
- procedure / function内のvarブロック内で変数の宣言をした場合
- 手続き、関数内でのみ有効な変数
###代入について
変数にデータを入れることを代入といいます
-
:=
(代入演算子)を使用して変数に代入します。 -
[代入される変数] := [代入したいデータ]
の順序で書きます。 - 変数の型に合うデータが代入可能です。
myString := myInteger.ToString {ヘルパーで整数を文字列変換して代入。これはOK。
ヘルパーは下記にて説明します。}
###ヘルパー
変数を扱う上で便利な機能 (数値を文字列化する等)
- Integer 型ヘルパー / 浮動小数点型ヘルパーなどがあります。
参考DocWiki:
http://docwiki.embarcadero.com/Libraries/Berlin/ja/System.SysUtils.TIntegerHelper_Methods
http://docwiki.embarcadero.com/Libraries/Berlin/ja/System.SysUtils.TSingleHelper_Methods
###ルーチン
ヘルパー以外にも変数を扱う上で便利な関数があります
参考 docwiki その他の標準ルーチンについてはこちらをご参照ください:
https://goo.gl/PZRP5x
###ユーザー定義データ型
自分好みのデータ型を作るには、Type
ブロックの宣言後に定義します
-
ある連続した範囲を入れられるデータ型を作れる「部分範囲」
TypeTOomoji = ‘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);
###式と演算子
式とは値を返す構文のこと
- 変数一つでも式 (変数の保持している値が返る)
- 関数も式 (関数の戻り値が返る)
- 算術式 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)
演算子の一例
###日付 と 時刻 の型
日付、時間を扱う便利な型があります
TDateTime
**日付、時間操作に便利な関数があります
参考Docwiki: http://docwiki.embarcadero.com/RADStudio/Berlin/ja/日付および時刻のサポート
###型のキャスト と 型変換
異なる型には代入できないが、あえて代入する際に使う方法です
-
数値型においてより大きな入れ物に入れる場合や、整数値を実数型(浮動小数点型)に入れる場合には、型キャストは必要なく安全に代入可能
- Int64型 (整数) := Integer (整数);
- Single型 (実数) := Integer (整数);
-
異なる型に物理的にデータをコピーする方法がキャスト
-
異なる型に関数やルーチンを使って戻される値を使うのが型変換
キャスト :どの型に変化するか型名を書き、カッコでくくる
コンパイラによる型のエラーチェックが行われない弊害があり、エラー箇所の発見が行いにくくなります
参考Docwiki :
http://docwiki.embarcadero.com/RADStudio/Berlin/ja/型変換ルーチン
http://docwiki.embarcadero.com/RADStudio/Berlin/ja/Delphi_組み込みルーチン
##おわりに
第2回、1月30日分の Delphiパート「」について以上です。
エンバカデロブログ:https://community.embarcadero.com/blogs/blog-menu?view=tags&layout=tag&id=1894