ものづくりBLOG blog page

第3章 何もしない(2):変数−型−

2011-01-01 (Sat) 03:01
H8+C言語入門:第3章 何もしない(2):変数−型−
−文法(概要)−
 
 「変数」について、次のことについて説明します。
  ・変数の役割
  ・予約語
  ・型の宣言
  ・変数の初期化
  ・複数の変数の同時宣言
 
 
 ■変数の役割
  変数の役割は、簡単に言うと「数値を保存するもの」ということができます。
  変数は、ASCIIコードの文字で表され、任意の文字の組合せとすることができます。
 
  例 lower →下限値として使う変数
    upper →上限値として使う変数
 
  プログラミングをする時、変数の命名規則を定めておくとよいです。それは、合同でプ
  ログラムをしていく時に特に役立ちます。プログラマが各自バラバラに変数名を付けて
  プログラムを作成すると、同じ意味なのに命名が異なるので、それを覚える必要が出て
  きます。かなり面倒くさそうでしょ?
  そこで、一つの英単語となる様に命名していきますが、先頭文字の扱い方、一つの変数
  名を複数の英単語で組み立てる時の英単語の繋げ方などを共通化しておくといいと思い
  ます。
 
  例 lowerLimit →下限値として使う変数
    二つ以上の単語で構成する時は、最初の単語は全て小文字とし、以降の単語の先頭
    文字は、大文字とする。
 
  例 iUpper →上限値として使う変数
    先頭文字は、その型を表し(上記例では、整数として「i」を先頭にしている)、次に
    続く単語の先頭文字は、大文字とする。
 
  また、次の様な制約もありますので、ご注意ください。
 
   名前には、予約語を使うことはできません。
   最初の文字は、英文字、または、アンダーバー「_」でなければなりません。
   2文字以降は、英文字、数字、アンダーバー「_」が使えます。
   名前は、31文字まで識別されます。
   !英文字は、大文字と小文字は識別されます。
 
 
 ■予約語
  予約語を次に示します。
  これらを見られると分かりますね。C言語で使うものばかりですよ。
  もし、変数として万が一使ったとして・・コンパイラが予約語を使っていますぞ!と注
  意してくれます。
 
   auto/break/case/char/const/continue/default/do
   double/else/enum/extern/float/for/goto/if
   int/long/register/short/signed/sizeof/static
   struct/switch/typedef/union/unsigned/void/volatile/while
   !/は、単語(予約語)を分ける為の記号として使っています。
 
 
 ■型の宣言
  すべての変数は、一般的に使う前に、普通は関数のはじめの実行分の前のところで宣言
  しておく必要があります。
 
  例 int i; //変数:型の宣言
    i = 0; //変数の初期化
    i = i + 1; //文:算術式
 
  「宣言」は、変数の性質を告げるためのものです。
  変数の宣言は、次の様な文で表します。これが基本形です。
 
   型 変数名;
 
  H8のCコンパイラでは、宣言の「型」は、次のようなものがあります。
 
   文字 char
   整数 int
   実数 float
   実数 double
 
  そして、型修飾というものがあり、それぞれの変数の長さを決めることができます。
  それによって、取り扱うことができる数値の範囲が自ずと決まる、ということになりま
  す。
  H8の様な小型のCPU+メモリの構成の場合、できるだけプログラムをコンパクトにする
  ことも要求されます。ですから、変数の型の宣言では、できるだけ小さな型を用いて処
  理を組み上げる必要がでてくるでしょう。変数の数そのものを制限する様なこともある
  かもしれません。H8のようなCPUでは、この様な「工夫」が求められます。
 
   2バイト short
   4バイト long
   符号付き signed
   符号なし unsigned →符号を解除する
 
  これら型修飾と定義型が組み合わさると次の様になります。
 
   [型名]→[別名]→[値の範囲]
   char → signed char → -128~+127
   int → signed int → -32,768~+32,767
   short → short int → -32,768~+32,767
   long → long int → -2,147,483,648~+2,147,483,647
   unsigned char → (なし) → 0~255
   unsigned → unsigned int → 0~65,535
   unsigned short → unsigned short → 0~65,535
   unsigned long → unsigned long → 0~4,294,967,295
   float → (なし) → ±3.3E38(7桁)
   double → (なし) → ±1.7E308(15桁)
   long double → (なし) → ±1.7E308(15桁)
 
 
 ■変数の初期化
  変数の初期化は、C言語では必須です。
  変数の宣言だけをしただけでは、その変数にどんな値が入っているかは、保証されませ
  ん。宣言をした後なので、0になっているだろうとか・・思っていませんか?それは、
  誰も保証していないので、自分で0にするという処理をする必要があるのです。
  変数の初期化には、次の二通りの方法があります。
  一つ目は、次の様に変数の宣言の後に、明示的に値を代入するというものです。
 
   例 float f;
     int i;
     f = 1.234;
     i = 0;
 
  もう一つは、次の様に変数の宣言の時に同時に初期化するやり方です。
 
   例 float f = 1.234;
     int i = 0;
 
  予め初期値が決まっているのであれば、変数の宣言の時に初期値をセットするのがいい
  かもしれませんね。プログラムがすっきりして、見栄えもいいと思います。
 
 
 ■複数の変数の同時宣言
  型が同じ変数がある時は、同時に宣言することができます。
  例えば、for文のカウンタとしてよく使うi、j、kなんかは次の様な書き方ができます。
 
   例 int i, j, k;
 
  型の後に宣言したい幾つかの変数をカンマで区切って並べます。
  とすると、前述の型の宣言の時の初期値の設定を複数の宣言の同時宣言の時にどうすれ
  ばいいのか、思いますよね。それは、次の様に書けるのです。
  先の例で、iとjを0に初期化する、kを宣言のみというのをしてみましょう。
 
   例 int i = 0, j = 0, k;
 
  どうですか?分かりましたか?
  只、変数の説明書きを一つひとつに書きたい時は、このまとめて同時宣言というのは、
  コメントが付けにくいですね。プログラムの書き方というところでは、意見が分かれる
  ところです。でも、こんなことができるということを覚えておくといいでしょう。
 

ものづくりBLOG

Blog Category

Blog Calendar

RSS 2.0