PC初心者でも1から学ぼう

エンジニアの基礎知識を徹底解説

未分類

【エンジニア基礎】変数と配列とは何か?初歩から解説!!

プログラミングをやってみるぞーという方が

最初につまずくポイント、変数と配列です。

私も初めてプログラミングを学習した時に、

全くイメージができずに、挫折しそうになりました。

ここでは、変数と配列とは何か。

そしてコンピュータの中でどのように処理されているかを

解説していきたいと思います。

変数と配列が何かわかればよいという方は、

下の用語を見ればOKです。

【変数】
1つのデータの入れ物です。
変数は、その中に格納される値を変更することができます。
変数の実体は、変数のサイズで確保されたメモリー領域です。
【配列】
変数を複数入れられる箱です。
大量のデータを効率的に処理できます。
配列の実体は、特定のサイズのメモリー領域を連続的に確保したものです。

コンピュータと変数の関係性

コンピュータが取り扱うデータは、

メモリーと呼ばれるICの中に記憶されます。

一般的なコンピュータでは、

メモリーの内部が1バイト(=8ビット)ごとの

データ格納領域で区切られています。

それぞれの領域を区別するための番号がつけられています。
【エンジニア基礎】知っておきたいコンピュータの基礎知識参照)

この番号のことを「アドレス」または「番地」と呼びます。

パソコンがメモリー8Gなら、

0~8Gまでのアドレスがあります。

アドレスを指定してプログラミングするのは非常に面倒です。

そのため、ほとんどのプログラミング言語では、

変数を使ってメモリーにデータを格納し、

メモリーからデータを読み出したりします。

例えば、C言語で、以下のように書いたとします。

char name ;

name = 5;

ここで、「char name」について、

C言語では、「char」を1バイトの整数を格納する

という意味を表します。

ここでは、charのことを「型」と呼びます。

この一行で、「name」という名前で、

メモリー領域を確保するとなります。

そして、次の「name=5」で、

変数nameの中に値「5」を入れるという意味を持ちます。

この時、プログラミングする人は、

変数nameが何番地のメモリー領域を

確保するのかを意識する必要はありません。

OSがプログラムを実行する際に、

使っていないメモリーの一部を

変数nameに割り当ててくれます。

変数はプログラムにおけるデータの最小単位であり、

それが物理的なメモリー領域に対応します。

メモリーの場所を意識しないというのは

非常にありがたいことですね。

私は、上記のことを知らずに・・・

無駄に変数を宣言したり、

無駄にでかい領域を確保する型をつけて

メモリーの無駄遣いをしていました。

配列はコンピュータではどう扱われているのか

実用的なプログラムでは、

大量のデータを取り扱うことが良くあります。

例えば、100個のデータがあった場合、

100個の変数を宣言するよりも

「配列」を使うと効率的になります。

配列は、複数のデータを格納するための

メモリー領域をまとめて確保し、

全体に1つの名前を付けたものです

配列の例は、下のようになります。

char box[4] ;

これは、データ4個分のメモリー領域が確保され、

boxという名前が付けられています。

配列内のメモリー領域は[]の中に

指定された番号で個別に取り出す事ができます。

char box[4]で指定した配列は、

box[0]、box[1]、box[2]、box[3]で指定することで、

個々のメモリー領域に読み書きすることができます。

結果として、変数box[0] 、box[1]、box[2]、box[3]を

使用しているようになりますが、

プログラムを書く手間や、

ループ文に対応する変数を使う時には

非常に強い武器となります。

 

おまけ

構造体とは

構造体は、異なった型の変数を

一つにまとめて名前を付けたものです。

配列との違いは、異なる型を格納できることです。

例えば、人の構造体というものを作り、

中身を、名前、身長、成績、性別等にすることです。

その他

少し進んでオブジェクト指向とか知りたい方へ以下の記事もどうぞ。

オブジェクト指向とは何か?オブジェクト指向のメリットとは

2進数とか知りたい方は、以下の記事をどうぞ。

【エンジニアの基礎】2進数を徹底解説!!コンピュータの基礎知識を理解する

 

-未分類

Copyright© エンジニアの基礎知識を徹底解説 , 2019 All Rights Reserved Powered by AFFINGER5.