動かして学ぶC言語「変数」について、正しく学ぶならC言語が一番

C言語:変数についてC言語
スポンサーリンク

プログラムを実行していく中で、内部のデータは条件や演算結果によって常に変動しています。
この変動するデータを格納しておくための方法として「変数」というものを使用します。

「変数」とは、データを入れておく箱のようなもので、一時的にデータを入れておいて、必要な時に取り出して使用したり、取り出して加工(演算等)してから戻して、また必要な時に使用したりします。

「python」や「JavaScript」では特に気にすることがない「変数」の宣言ですが「C言語」ではそうはいきません、今回は本当の変数について詳しく紹介したいと思います。

1.「変数」の宣言

「変数」を使用するには、あらかじめ宣言しておく必要があります。
「変数」の宣言は以下のように行ないます。

・「変数」の宣言方法
 型名  変数名  =  初期値;
型名:扱うデータの「型」を指定します。主に使用される「型」の種類は以下のようになります。
 ・文字型:char
 ・整数型:int
 ・単精度浮動小数点型:float
 ・倍精度浮動小数点型:double
変数名:変数名は自由に決めることができますが、以下の①~⑤のような制限があります。
 ①変数名は下線( _ )、英大文字小文字、数字で構成する。
 ②先頭の1文字目は数字以外。
 ③大文字小文字は区別されますが、一般的に変数名には小文字が使われます。
 ④「プログラム言語」の文法で使用されているコマンド(if や for等)は使用できません。
 ⑤文字数に制限はありません。
初期値:初期値については宣言時に必ずしも指定しないといけないわけではありませんので「 = 初期値」は省略可能です。
しかし、省略して宣言した時点では格納されているデータは不定(何が入っているかわからない)のため、この後のプログラム内で初期値を指定して使用されない変数は宣言時に初期値を指定しておきましょう。

2.「C言語」ではどうして型の宣言が必要なの?

 「C言語」では「変数」に「型」を指定して宣言しますが、「Python」や「JavaScript」では特に指定しない限り自動的に扱うデータに合ったサイズの「変数」が用意されるため「型」の指定は必要ありません。
それでは何故わざわざ型を指定するのでしょう?めんどくさいですよね?しなくていいならしたくない。当然です。

 実際は「型の指定は必要ありません」という表現だけでは間違っており、「人間が型の指定をする必要はありません」が正しい表現でしょうか。

 実際にはプログラミング言語側で自動的に「型」の判別が行われているだけで「型の自動判別」の分だけ処理速度が遅くなっています。
このため「C言語」のように「変数」の「型」を前もって指定するプログラムの方が高速処理に向いています。

 また、大規模なプログラムで複数人で作業する場合、この「変数」がどういう意図で使われているものなのかが明確でないと意図した動作にならない場合があります。

 ここで紹介する小規模なプログラムであれば全く問題ありませんが、大規模なプログラムでは変数の型を明確にしておいた方が理解しやすく、間違いも少なくなります。

この先どの言語を使用しても最終的にはこの型を意識することになると思いますので、とりあえずは「なんかめんどくさいけどC言語では型の指定が必要なのね」程度でいいので意識して少しづつ覚えていきましょう。

3.「変数」の使用方法

「変数」には「値」を代入して使用します。
「値」を代入するとは「変数」という箱の中に「値」を入れるようなものです。

・「変数」への「値」の代入方法
 変数  =  ;

変数」へ「」を代入する記号として「」を使用します。「」右側の「」を、左側の「変数」へ代入します。
数学の「」とは意味合いが異なりますので注意しましょう。
あくまでここでの「」は代入することをプログラムに知らせるための記号です。


・実際の使用例
  int  i;             //「 i 」という「変数」を宣言
  i  =  0;           //「 i 」の初期値として0を代入
  i  =  i  +  1;   //「 i 」に 1 を足して i に代入

i  =  i  +  1」が実行されるたびに「 i 」の値は1づつ増えていきます。
※「 = 」の右側の「i  +  1」を実行して、その結果を左側の「 i 」に代入しています。

4.「Lチカ」プログラムで動作確認してみよう

別記事の「C言語 演算子(条件式)について」で実際に、マイコンボード「ATOM LITE」を使用して、「変数」で本体のボタンを押した回数をカウントするプログラムを以下リンクで紹介してますので確認してみましょう。

ATOM LITE本体

動かして学ぶC言語「演算子(条件式)」(関係・等価演算子、論理演算子)について
「if文」等で条件分岐を行うための「条件式」を作るときに使用する「演算子」について紹介します。 「演算子」にはたくさんの種類がありますがこれらの使い方を「Lチカ」プログラムで動かしながら学びましょう♪

5.「変数」の「型」いろいろ

「C言語」の型名には扱えるデータサイズ(データ範囲)によってたくさんの種類があります。
今全てを覚える必要はありませんので紹介程度に一覧表にまとめました。
今後必要に応じて確認してみてください。

型の説明データサイズ扱えるデータ範囲
unsigned char文字型1byte 0~255
char文字型1byte-128~127
unsigned short符号なし単整数型2byte0~65,535
short単整数型2byte-32,768~32,677
unsigned int符号なし整数型4byte0~4,294,967,295
int整数型 4byte-2,147,483,648~
2,147,483,647
unsigned long符号なし長整数 4byte (8byte)0~4,294,967,295
long長整数 4byte (8byte) -2,147,483,648~
2,147,483,647
float単精度浮動小数点4byte最小の正の数:3.4e-38
最大値:3.4e+38
double倍精度浮動小数点8byte最小の正の数:1.7e-308
最大値:1.7e+308

6.データサイズについて(bit(ビット)とbyte(バイト))

「1bit」は「0」か「1」を表すデータです。「1byte」は「1bit」のデータが「10101010」のように8個集まったものを表します。「byte」と「bit」の関係は以下のようになります。

1byte = 8bit
2byte = 16bit
4byte = 32bit
8byte = 64bit

7.「int型」について

「int型」はもともと使用するパソコンが持っている自然のサイズとして定義されていました。
ここで紹介したint型のサイズは4byte(32bit)ですが、最近のパソコンは64bitが主流です。
しかし「int型」は定義通りの8byte(64bit)にはならず4byte(32bit)になっています。
「long型」については使用するパソコンや開発環境、OSによって異なることがあるため注意が必要です。
このためint型は以下のようにサイズを明確に指定して宣言することもできます。

int8_t   : 1byte(8bit)
int16_t : 2byte(16bit)
int32_t : 4byte(32bit)
int64_t : 8byte(64bit)
※基本は符号付です。
 符号なしは「uint_8t」のように先頭に「unsigned」の頭文字の「u」を付けます。

8.ブラウザ上で動作確認するなら

ちょっとした動作確認をしたい時は、ブラウザ上でプログラムを作成して実行できる「paiza.IO」が便利なので以下にリンクを貼っておきます。
無料で使用できて「C言語」だけでなく「python」や「JavaScript」「PHP」等たくさんの言語にも対応しています。

ブラウザでプログラミング・実行ができる「オンライン実行環境」| paiza.IO
paiza.IOはオンラインですぐにプログラミングが始められる、オンライン実行環境です。Java,Ruby,Python,PHP,Perlなど主要24言語に対応。プログラミング学習にも。

プログラミングの上達には学ぶことも大切ですが、自分で書いて実行して、どんな動きになるか、間違っててもいいのでこれをひたすら繰り返すことが一番の近道と思います。たくさん書いて実行してみましょう。

9.まとめ

「C言語」の「変数」について紹介しました。

「変数」とは、データを入れておく箱のようなもので、一時的にデータを入れておいて、必要な時に取り出して使用したり、取り出して加工(演算等)してから戻して、また必要な時に使用したりします。

変数を使用する時「python」や「JavaScript」では特に気にすることはありませんが「C言語」では「型」を意識する必要があり、あらかじめ宣言しておく必要があります。

「型」の宣言はわずらわしく感じるかもしれませんが、「型」を前もって指定しておくことでプログラムの処理速度は速くなります。
「python」や「JavaScript」では自動的に「型」の判別が行われているため「型の自動判別」の分だけ処理速度は遅くなります。

また「型」を指定することで、その「変数」がどういう意図で使われているものなのかが明確になり、大規模なプログラムでも理解しやすく、間違いも少なくなります。

「型」の宣言時に初期値を設定する「初期化」を行いますが省略することも可能です。
しかし、省略して宣言した時点では格納されているデータは不定(何が入っているかわからない)のため、この後のプログラム内で初期値を指定して使用されない変数は宣言時に初期値を指定しておきましょう。

「型」には扱えるデータサイズ(データ範囲)によってたくさんの種類があります。
いきなり全てを覚える必要はありませんので使いながら少しづつ覚えていきましょう。

「変数」の理解にはブラウザ上で動作確認できる「paiza.IO」もいいですが、実際に作成したプログラムを動かして、目で見て確認すると理解が早いです。
これには安価で高機能なマイコンボード「ATOM LITE」が手軽でおすすめです。

本体内蔵のボタンとフルカラーLEDでいろいろな動作プログラムを作成して、理解を深めましょう。


動かして学ぶ「C言語」については、他にも以下のリンクで基礎からサンプルプログラムを使って詳しく紹介しています。

C言語プログラミングの記事一覧
C言語のプログラミング記事一覧です。安価なマイコンボードを使用して動かしながら学んでみましょう♪ プログラム例も用意してあります。まずはコピペで書き込み、動作確認しながら少しづつ理解を深めましょう。

10.独学に限界を感じたら

最後に、独学に限界を感じている方へ、私のように無駄な時間を過ごさないように、C言語の基礎から学べるオンラインスクールの紹介です。

私は学生の頃、独学で「C言語」を始めましたが、かなり時間をかけて結局一度挫折しました(汗)
仕事で少しプログラミングに触れる機会もあり、今となっては小規模なプログラムなら組めますが、どれだけ時間をかけたでしょう・・・

短期間で基本からポインタ、構造体まで学べて質問もできる、そんな環境が当時あったらと思うと・・・今はとても羨ましい時代になりました。

C言語は他のプログラムを学ぶための知識のベースにもなります。
C言語ではないと理解が難しいコンピュータ内でのデータの動きも理解できます。
これが理解できれば、他の言語への移行や多言語の習得も苦にはならないと思います。
人気の言語「python」も中身は「C言語」で出来ています。

以下のリンクで「C言語」のコースを短期間のカリキュラムにまとめて、安価で提供されています。
2ヶ月の期間中はオンライン授業が見放題、質問は専用アプリを使用してチャットまたは電話で対応してくれます。
準備されたカリキュラムを自分のペースで学習して、わからなくなったらチャットや電話で相談しながら進められるのでおすすめです。
「JAVA」や「VBA」「PHP」「Web製作」のプランもあります。

以下のリンクから「コース紹介」や「受講の流れ」だけでも確認してみてください。

コメント

タイトルとURLをコピーしました