【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回...

21
© 2016 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. 第2回 変数と型シーズン2:プログラミング言語をやさしく覚えよう C++Builderの部

Transcript of 【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回...

Page 1: 【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回 ‟変数と型„

© 2016 Embarcadero Technologies, Inc.

All rights reserved. Proprietary and confidential.

第2回

‟変数と型„

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

C++Builderの部

Page 2: 【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回 ‟変数と型„

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: 【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回 ‟変数と型„

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

第2回「変数と型」

今日のねらい• 変数とは何か、型とは何かを知る• 変数と型の使い方を知る

実施内容• 変数とデータ型の宣言• 変数とデータ型の宣言場所と影響範囲• 変数とデータ型の使用• 演算子とは• キャストと型変換

Page 4: 【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回 ‟変数と型„

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

無料版 C++Builder 10.1 Berlin Starter Edition 入手方法

• シリアルキーを知らせるメール内にも再ダウンロードリンク有

エンバ

Web製品

C++

Builder

Starter

バナー登録 Get

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

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

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

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

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

Page 5: 【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回 ‟変数と型„

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

変数と型

型(データ型)

• どんな種類のデータを入れるかを決めてある形

• 数値なのか、文字なのか。これらの複合である場合もある

変数

• データを記憶・保存(代入)させておく、識別子を持った入れ物

• どんなデータ型を使用するか決めて、名前(識別子)を付けて使用する

C++ はプログラムで使用する変数を任意の場所で宣言できる。

(Delphi は var ブロックで宣言して使用しなければならない)

C++のデータ型の一覧はdocwikiを参照

• http://docwiki.embarcadero.com/RADStudio/Berlin/ja/基本型

Page 6: 【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回 ‟変数と型„

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

データ型(数値向け)

整数型

• 整数(数値)を扱う

• 扱う値の最大値、最小値に合う型を選ぶ

• 符号付きと符号なし(unsigned)で値域が違う

• char (1byte) = -128 ~ 127

• int (4byte) = -2,147,483,648~ 2,147,483,647

• long (4byte) = -2,147,483,648~ 2,147,483,647

• unsigned char (1byte) = 0 ~ 255

• unsigned int (4byte) = 0 ~ 4,294,967,295

• unsigned long (4byte) = 0 ~ 4,294,967,295

• int はコンパイラや実行環境によって値の範

囲が異なる場合があることに注意する

浮動小数点型

• 小数点を含む数値を扱う

• 扱う数値の有効桁数に合う型を選ぶ

• float (4byte, 有効桁数7桁)

• double (8byte, 有効桁数15桁)

• long double(10byte, 有効桁数19桁)

• 浮動小数点型は小数を正確には扱えないこと

に注意する

Page 7: 【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回 ‟変数と型„

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

データ型(文字列やその他のデータ型)

文字列

• UnicodeString または String

論理型

• 論理値(true / false -> 真か偽) を入れる・表す

• bool …

その他のデータ型

• Valiant

• 任意の値を格納できる型だが処理速度が落ちる

• Currency

• 通貨を扱う型

Page 8: 【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回 ‟変数と型„

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

宣言

使う前に変数の名前と型を宣言しておく

• C++の変数宣言は任意の場所で行える(Delphi は関数やプロシジャ先頭の var に書く)

• 宣言しただけでは値が不定なので、初期値を代入しておく

• 変数宣言に const をつけると定数(=値が不変の変数)」として扱える

宣言する場所によって利用可能(参照可能)な範囲が変わる

• 関数の外側で宣言した場合(グローバル変数)

• 同一ファイル内のすべての関数で利用できる。

• 基本的には避けるべき使い方。

• ブロック {} で宣言した場合(ローカル変数)

• 同じ階層のブロックと子ブロックから利用できる。

• 子ブロックで宣言された変数は、親ブロックからは利用できない。

• 親ブロックで宣言した変数と同じ名前を子ブロックで変数宣言した場合は、親ブロックの変数とは別物として扱われる。

Page 9: 【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回 ‟変数と型„

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

宣言の例

グローバル変数の例。極力使わない。どこからでも書き換えができるので様々な問題を引き起こす。

関数内でのローカル変数の宣言と値の代入。この変数は同じ関数内だけで扱える。

子ブロック内でローカル変数を宣言して使用できる。

親ブロックと同名の変数を宣言すると同名の別の変数として扱われる。

Page 10: 【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回 ‟変数と型„

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

代入

変数にデータを入れること

代入演算子 = を用いる(Delphi では := と表記)

[代入先の変数] = [代入したいデータ] の順序で書く

変数の型に合うデータを代入できる

型が全く違う場合(数値型と文字型)では代入できないため型変換が必要

Page 11: 【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回 ‟変数と型„

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

型変換ルーチン

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

IntToStr, FloatToStr 整数値や浮動小数点値を文字列に変換

sizeof 変数が必要とするバイト数を返してくれる

StrToInt, StrToFloat 文字列を数値や浮動小数点値に変換

TryStrToInt, TryStrToFloat 文字列を数値や浮動小数点値にするとともに成否をbool型で返してくれる

参考:http://docwiki.embarcadero.com/RADStudio/Berlin/ja/型変換ルーチン

Page 12: 【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回 ‟変数と型„

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

キャスト 現時点では「数値型を別の数値型に変換する操作」と理解しておく

値域が違う数値型どうしの代入や計算式では、計算誤差の少ない型にキャストして計算する

• 除算を含む計算式では計算結果の小数部分が切り捨てられて計算誤差が出ることがある

• float や double にキャストすることで小数部分を残したままで計算できる

キャストの前後で値域が狭まる場合はデータの棄損に注意

• 実数型から整数型にキャストすると小数部分が捨てられる

• int → char や double → float はキャスト前の値がキャスト後の値域に含まれる場合に限って正常に完了す

とりあえず “static_cast<キャストする型>(元の値や変数)” を覚えておく

[C言語の経験者向け] C 形式のキャストは C++ では極力使わない

• C++には目的にあわせて4種類のキャストがあるが、C形式ではこれを区別しないので危険

Page 13: 【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回 ‟変数と型„

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

キャスト

キャストの有無による結果の違いの例

小数値で割り算する場合は処理内容によって計算結果がおかしくなることも。

int から double への代入はdouble のほうが値域が広いので明示的にキャストしなくてもよい。

型をdoubleにそろえることで正しい計算結果が得られる。

Page 14: 【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回 ‟変数と型„

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

データ型について // 省略します

順序型と数値型

エイリアス整数型

順序型ルーチン(処理)

範囲外演算

bool

文字 char string

Page 15: 【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回 ‟変数と型„

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

式と演算子

式とは値を返す構文

• 変数一つでも式 (変数の保持している値が返る)

• 関数も式(関数の戻り値が返る)

• 算術式 10-5/2も式(計算の結果が返る)

• A = x; A = somefunction(); A = 10-5/2; //式は値を戻すのでこんな感じで代入して使える

• if ( a == z ) ~ : // この a==x も式。比較演算を使ってbool 型の値を返すので if 条件式に使える

• if ( a = x ) ~ : // これは a と x の比較ではない。 a に x を代入した結果を評価する式。

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

• +, -, *, / … などの計算を行うための算術演算子

• If 文などの条件式を複合的に使うための ! (not) , & (and), | (or) , ^ (xor) などの論理演算子

• If 文なの条件比較に使われる ==, !=, <=, >= などの関係演算子

• = は代入演算子

各演算子は優先度があります。詳しくはDocwiki参照

http://docwiki.embarcadero.com/RADStudio/Berlin/ja/演算子の結合規則と優先順位

Page 16: 【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回 ‟変数と型„

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

演算子の一例

算術演算子

比較演算子

演算子 演算 結果の型 例

+ 加算 整数、実数 X + Y

- 減算 整数、実数 Result -1

* 乗算 整数、実数 P * InterestRate

/ 除算 変数の型による X / 2

% 剰余 整数 Y % 6

演算子 演算 結果の型 例

== 等しい bool I == Max

!= 等しくない bool X != Y

< より小さい bool X < Y

> より大きい bool Len > 0

<= 以下 bool Cnt <= I

>= 以上 bool I >= 1

Page 17: 【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回 ‟変数と型„

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

日付と時刻の型

日付、時間を扱う便利な型

• TDateTime

日付、時間操作に便利な関数関数・ルーチン 説明

Now 現在の日付と時刻を返します

Date 現在の日付を返します。

GetTime 現在の時刻を返します。

DateTimeToStr 日付/時刻を表示するローカル設定を使用して、TDateTime 値を文字列に変換します。

DateToStr TDateTime 値の日付を文字列に変換します。

参考Docwiki: http://docwiki.embarcadero.com/RADStudio/Berlin/ja/日付および時刻のサポート

関数・ルーチン 説明

TimeToStr TDateTime 値の時間を表す文字列を返します。

FormatDateTime 指定された書式設定で日付・時刻を文字列で返します。

StrToDateTime 日付時刻情報を含む文字列をDateTimeに変換します。

DayOfWeek Datetimeから曜日に相当する数値を返します

Page 18: 【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回 ‟変数と型„

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

TDateTime の使用例

Page 19: 【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回 ‟変数と型„

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

第2回「変数と型」まとめ

今日のねらい• 変数とは何か、型とは何かを知る• 変数と型の使い方を知る

実施内容• 変数とデータ型の宣言• 変数とデータ型の宣言場所と影響範囲• 変数とデータ型の使用• 演算子とは• キャストと型変換

Page 20: 【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回 ‟変数と型„

24© 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 21: 【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回 ‟変数と型„

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

次回のC++Builderパート

2月6日(月)17:30より

“条件 とループ„