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

Posted by on in Programming


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

C++Builder 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++の基礎を学ぶオンラインセッションです。

https://community.embarcadero.com/blogs/entry/2-japan

 

サマリ

アジェンダ

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

スライド資料

http://www.slideshare.net/ssuser8bd3f7/cbuilder-starter-2-cbuilder-2

開発環境のインストール

開発環境のインストールについては、[Delphi / C++Builder Starter チュートリアルシリーズ] 第1回 ‟無料で始めよう アプリ作成„ にて丁寧な説明がありますので、そちらをご視聴の上でインストールを進めてください。
https://community.embarcadero.com/blogs?view=entry&id=9038

実施内容

変数と型

型(データ型)

  • どんな種類のデータを入れるかを決めてある形
  • 数値、文字、それらの複合の場合もある

変数

  • データを記憶・保存(代入)させておく、識別子を持った 入れ物
  • どんなデータ型を使用するか決めて、名前(識別子)を付けて使用する

C++ はプログラムで使用する変数を任意の場所で宣言できる。(Delphi は var ブロックで宣言して使用しなければならない)

C++のデータ型の一覧はdocwikiを参照
http://docwiki.embarcadero.com/RADStudio/Berlin/ja/基本型

データ型

整数型

  • 整数を扱う
  • 扱う値の最大値、最小値に合う型を選ぶ
  • 符号付きと符号なし(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

浮動小数点型

  • 小数点を含む数値を扱う
  • 扱う数値の有効桁数に合う型を選ぶ
    • float (4byte, 有効桁数7桁)
    • double (8byte, 有効桁数15桁)
    • long double(10byte, 有効桁数19桁)
  • 浮動小数点型は小数を正確には扱えないことに注意する

第2回以降では、これについてもうすこし掘り下げたご案内を進めてまいります。

文字列

  • UnicodeString または String

論理型

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

その他のデータ型

  • Valiant
    • 任意の値を格納できる型だが処理速度が落ちる
  • Currency
    • 通貨を扱う型

宣言

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

  • C++の変数宣言は任意の場所で行える(Delphi は関数やプロシジャ先頭の var に書く)
  • 宣言しただけでは値が不定なので、初期値を代入しておく
  • 変数宣言に const をつけると定数(=値が不変の変数)」として扱える

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

  • 関数の外側で宣言した場合(グローバル変数)
    • 同一ファイル内のすべての関数で利用できる。
    • 基本的には避けるべき使い方。
  • ブロック {} で宣言した場合(ローカル変数)
    • 同じ階層のブロックと子ブロックから利用できる。
    • 子ブロックで宣言された変数は、親ブロックからは利用できない。
    • 親ブロックで宣言した変数と同じ名前を子ブロックで変数宣言した場合は、親ブロックの変数とは別物として扱われる。

宣言の例

代入

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

  • 代入演算子 = を用いる(Delphi では := と表記)
  • [代入先の変数] = [代入したいデータ] の順序で書く
  • 変数の型に合うデータを代入できる
  • 型が全く違う場合(数値型と文字型)では代入できないため型変換が必要

型変換ルーチン

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

キャスト

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

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

    • 除算を含む計算式では計算結果の小数部分が切り捨てられて計算誤差が出ることがある
    • float や double にキャストすることで小数部分を残したままで計算できる
  • キャストの前後で値域が狭まる場合はデータの棄損に注意

    • 実数型から整数型にキャストすると小数部分が捨てられる
    • int → char や double → float はキャスト前の値がキャスト後の値域に含まれる場合に限って正常に完了する
  • とりあえず “static_cast<キャストする型>(元の値や変数)” を覚えておく

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

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

式と演算子

式とは値を返す構文

  • 変数一つでも式 (変数の保持している値が返る)
  • 関数も式 (関数の戻り値が返る)
  • 算術式 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/演算子の結合規則と優先順位

演算子の例

算術演算子

演算子 演算 結果の型
+ 加算 整数、実数 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

日付と時刻の型

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

TDateTime

日付、時間操作に便利な関数

関数 ・ ルーチン 説明
Now 現在の日付と時刻を返します
Date 現在の日付を返します。
GetTime 現在の時刻を返します。
DateTimeToStr 日付/時刻を表示するローカル設定を使用して、TDateTime 値を文字列に変換します。
DateToStr TDateTime 値の日付を文字列に変換します。
TimeToStr TDateTime 値の時間を表す文字列を返します。
FormatDateTime 指定された書式設定で日付・時刻を文字列で返します。
StrToDateTime 日付時刻情報を含む文字列をDateTimeに変換します。
DayOfWeek Datetimeから曜日に相当する数値を返します

セミナー動画

チュートリアルセミナー視聴ページにて、シーズン2の放送分を視聴できるようにしています。チュートリアルシリーズに申し込み済みの方はメールにてご案内済みの視聴ページよりご視聴ください。まだ申し込んでいない方は下記アドレスよりお申込みいただくと視聴できます。

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

また、シーズン1の放送分は youtube の下記ページよりご視聴いただけます。

https://www.youtube.com/playlist?list=PLoQxxVNY10oEmNSjiPdYPV_E9IL9ipico

シーズン1のまとめ記事もございますので、こちらも併せてお読みください。

https://community.embarcadero.com/blogs/entry/delphi-c-builder-starter-japan

■次回のC++Builderパートは2月6日(月) 17:30頃より、“条件とループ„をお送りいたします。。

 


About
Gold User, No rank,
Sales Consultant at Embarcadero Technologies, in Japan.

Comments

Check out more tips and tricks in this development video: