- ゲームプログラム入門 C言語:大量のデータを扱う時に便利な「配列」のご紹介
- 「ゲームプログラミング > C言語入門/基礎」関連ページのご紹介
- シューティングゲーム・関連ページのご紹介
- 歴代名作シューティングゲームのご紹介|まとめ
- 歴代シューティングゲーム全ゲームタイトル一覧のご紹介|まとめ
- シューティングゲームの人気シリーズのご紹介
- シューティングゲーム関連ページのご紹介|まとめ
- シューティングゲーム解説ページのご紹介|まとめ
- シューティングゲーム・ハード関連(周辺機器)のご紹介|まとめ
- シューティングゲーム雑誌/書籍関連のご紹介|まとめ
- 【TPS名作・傑作・まとめ】TPS傑作・名作・全ゲームタイトルのご紹介│まとめ│~トゥームレイダー│バイオハザード│アンチャーテッドなど~
- 【名作RPG】RPGのご紹介│まとめ│
- 【TOP:SLG】おすすめ名作シミュレーションゲームのご紹介
- 【TOP】レースゲーム関連(おすすめ名作・評価ランキン)のご紹介
- TOP【おすすめスポーツゲーム】のご紹介~MLB,NBA,NFL,FIFAなど~
- 【TOP】パズルゲームのご紹介
- 【ゲームランキング】世界・国内で最も売れたゲームランキングのご紹介
- 名作ゲームのご紹介│まとめ│家庭用ゲーム・PC・アーケードなど
- 【機種別ゲームTOP】PC・家庭用・アーケードゲーム・周辺機器のご紹介
- ジャンル別ゲームタイトルのご紹介│まとめ│
- 【ゲームTOP】ゲーム関連ページのご紹介
- 【書籍・雑誌TOP】書籍・雑誌サイトマップ関連ページのご紹介
- 【ホビーTOP】ホビーサイトマップ関連ページのご紹介
ゲームプログラム入門 C言語:大量のデータを扱う時に便利な「配列」のご紹介
ご訪問ありがとうございます。
今回は、ゲームプログラム入門 C言語:大量のデータを扱う時に便利な「配列」をご紹介します。
「ゲームプログラミング > C言語入門/基礎」関連サイトマップのご紹介
「ゲームプログラミング > C言語入門/基礎」関連をご紹介します。
シューティングゲーム | ゲーム | 中古・新品通販の駿河屋
大量のデータを扱う時に便利な「配列」
1つの変数には、1つのデータしか入れることはできません。しかしこれでは、全校生徒の身長や体重の平均を知りたいという時のように、同じ性質や意味を持つ大量のデータを処理するときには困ってしまいます。
全校生徒ぶんの変数宣言も面倒ですし、変数名も全校生徒ぶんを書かなくてはなりません。
100個の変数をすべて宣言する場合
//100個の変数をすべて宣言する場合
int a1;
int a2;
・・・
int a100;
a1 = 10;
a2 = 20;
・・・
a100 = 1000;
配列は、このような時に便利です。配列は、同じ型の変数(箱)が組みになっているようなものです。組になった変数全体に付ける名前を「配列名」といい、個々の変数(箱)は「添字(そえじ)」という番号で区別します。
添字は「0,1,2・・・」という具合に付いていきます。
配列で使う変数(箱)の数「要素数」
また、配列を使うには、組になる変数(箱)をいくつ用意すればよいか、あらかじめ決めておく必要があります。その数のことを、要素数といいます。
配列の形
型 配列名[要素数]
//「int」は、型
//「a」は、配列名
//「100」は、要素数
int a[100]
「配列を利用したサンプル文」のご紹介
それでは、実際にC言語で「配列」を使ってみましょう。
/* MyC11.c */
#include <stdio.h>
int main(void) {
//配列の宣言
int a[3];
//[●]は、添え字です。
//配列の要素に値を代入、添字が「0」であることに注意してください。
a[0] = 1;
//配列の要素に値を代入
a[1] = 2;
//配列の要素に値を代入、添字が「2」であることに注意してください
a[2] = 3;
printf("a[0] = %d\n", a[0]);
printf("a[1] = %d\n", a[1]);
printf("a[2] = %d\n", a[2]);
return 0;
}
作成手順と実行結果
- テキストエディタでソースコードを入力します。
- 「MyC」フォルダにファイル名「MyC11.c」で保存します。
- コマンドプロンプトを起動します。
- 「cd c:\MyC」と入力してください。
- 「gcc MyC11.c -o MyC11」と入力します。
- 「MyC11」と入力します。
実行結果
a[0] = 1
a[1] = 2
a[2] = 3
【注意】添え字は0からはじめないと、バグが発生してしまいます。
解説
注意しなければならないのは、6行目の要素数が「3」であるのに、10行目の添え字が「2」であることです。
//配列の要素に値を代入、添字が「2」であることに注意してください
a[2] = 3;
要素数が「3」でも、8行目の添え字を見ると「0」から始まっているので、10行目の添え字は「2」になるのです。
int a[3];
a[0] = 1;
a[1] = 2;
a[2] = 3;
このことは、組になる変数(箱)を3個用意しても、添え字は、必ず「2」で終わることになる(「3」以上を添え字としては使えない)ということです。
添字が「0」から始めることに注意してください。
【例題】配列と繰り返し
サンプルソースコードの「MyC11c」と、同じ結果を画面に出力するソースコードを配列と繰り返しを使って書いてください。
/* MyC11.c */
#include <stdio.h>
int main(void) {
int a[3];
a[0] = 1;
a[1] = 2;
a[2] = 3;
printf("a[0] = %d\n", a[0]);
printf("a[1] = %d\n", a[1]);
printf("a[2] = %d\n", a[2]);
return 0;
}
解答
/* Exercise13.c */
#include <stdio.h>
int main(void) {
int a[3];
int i;
for(i = 0;i <= 2; i++) {
a[i] = i+1;
printf("a[%d] = %d\n", i, a[i]);
}
return 0;
}
実行結果
a[0] = 1
a[1] = 2
a[2] = 3
解説
解答と、必ずしも同じでなくてもかまいません。ポイントは、9行目の配列の添え字に、for文のカウンタ「i」を使ったらどうだろうと、考えたかどうかです。
for(i = 0;i <= 2; i++) {
a[i] = i+1;
printf("a[%d] = %d\n", i, a[i]);
}
また、このように配列と繰り返しを組み合わせると、カウンタの値が100でも1000でも、8行目から11行目は、for文の条件である「i<=2」の部分が「i<=100」、「i<=1000」と変わるだけで、行数は変わりません。
今回は、配列の要素数が3個と少ないので実感しにくかったかも知れませんが、もしこれが、100個や1000個だったら、ソースコードを書く手間が、繰り返しを使うことで格段に楽になることがわかると思います。
配列を利用した生徒5人の体重を表示するプログラム
ここでは、配列の使い方について、もう少し具体的に考えてみましょう。例えば、次のようなことを考えてみてください。
3年A組の、生徒5人(AOさん、A2さん・・・A5さん)の体重を表示するプログラムを作りたいとします。ソースコードは次のようになります。
/* MyC111.c */
#include <stdio.h>
int main(void) {
int i;
int A[5];
A[0] = 20;
A[1] = 21;
A[2] = 22;
A[3] = 23;
A[4] = 24;
for(i = 0; i<=4 ; i++) {
printf("A[%d]さんの体重は、%dです\n", i, A[i]);
}
return 0;
}
作成手順と実行結果
- テキストエディタでソースコードを入力します。
- 「MyC」フォルダにファイル名「MyC111.c」で保存します。
- コマンドプロンプトを起動します。
- 「cd c:\MyC」と入力してください。
- 「gcc MyC111.c -o MyC111」と入力します。
- 「MyC111」と入力します。
実行結果
生徒5人分の体重が表示されました。
A[0]さんの体重は、20です
A[1]さんの体重は、21です
A[2]さんの体重は、22です
A[3]さんの体重は、23です
A[4]さんの体重は、24です
生徒の体重だけではなく、身長も表示したい
さて、ここで生徒の体重だけではなく、身長も表示したいと考えた時、どうしたらよいでしょうか? a[X]には、体重だけしか代入できそうにありません。
そういう時のために、配列をもっと便利に使う方法があるのです。配列は、同じ型の変数(箱)が組みになっているものだとご紹介したのですが、これまでのものは、箱を横に1列に並べたものでした。
この列を、2列にしたらどうなるでしょう。
2次元配列
そして、この2列目を、身長の表示に使ってやればよいのです。このような配列を2次元配列といいます。ちなみに、いままでの配列は「1次元配列」といいます。
それでは、「2次元配列」を使って、ソースコードを書き直してみましょう。
/* MyC112.c */
#include <stdio.h>
int main(void) {
int i;
int A[5][2];
A[0][0] = 20;
A[0][1] = 120;
A[1][0] = 21;
A[1][1] = 121;
A[2][0] = 22;
A[2][1] = 122;
A[3][0] = 23;
A[3][1] = 123;
A[4][0] = 24;
A[4][1] = 124;
for (i = 0; i <= 4; i++) {
printf("A[%d]さんは、", i);
printf("体重%dkgで身長は、%dcmです。\n", A[i][0], A[i][1]);
}
return 0;
}
作成手順と実行結果
- テキストエディタでソースコードを入力します。
- 「MyC」フォルダにファイル名「MyC112.c」で保存します。
- コマンドプロンプトを起動します。
- 「cd c:\Myc」と入力してください。
- 「gcc MyC112.c -o MyC112」と入力します。
- 「Myc112」と入力します。
実行結果
A[0]さんは、体重20kgで身長は、120cmです。
A[1]さんは、体重21kgで身長は、121cmです。
A[2]さんは、体重22kgで身長は、122cmです。
A[3]さんは、体重23kgで身長は、123cmです。
A[4]さんは、体重24kgで身長は、124cmです。
配列をこのように使えば、体重だけでなく、身長も表示することができるようになります。
多次元配列
ところで、さらに何かを表示しなければならなくなっても、心配はいりません。配列の列を2から3へ、3から4へというように増やしていくことができます。このように、列が1より大きい配列(ここで扱った2次元配列も含めて)を多次元配列といいます。
【例題】多次元配列
次のように画面に表示するソースコードを、int型2次元配列と、2重ループ(繰り返しの中で繰り返しを使うこと)を使って書いてください。
画面表示
a[0][0]:1
a[0][1]:2
a[1][0]:3
a[1][1]:4
解答
/* Exercise141.c */
#include <stdio.h>
int main(void) {
int i;
int j;
int a[2][2];
a[0][0] = 1;
a[0][1] = 2;
a[1][0] = 3;
a[1][1] = 4;
for (i = 0; i < 2; i++) {
for (j = 0; j < 2; j++) {
printf("a[%d][%d]:%d\n", i, j, a[i][j]);
}
}
return 0;
}
実行結果
a[0][0]:1
a[0][1]:2
a[1][0]:3
a[1][1]:4
「ゲームプログラミング > C言語入門/基礎」関連サイトマップのご紹介
「ゲームプログラミング > C言語入門/基礎」関連をご紹介します。
シューティングゲーム | ゲーム | 中古・新品通販の駿河屋
「ゲームプログラミング > C言語入門/基礎」関連ページのご紹介
「ゲームプログラミング > C言語入門/基礎」関連ページをご紹介します。
【STG】シューティングゲーム・サイトマップのご紹介
80年から2000年代のシューティングゲームについてご紹介します。
シューティングゲーム | ゲーム | 中古・新品通販の駿河屋
シューティングゲーム・関連ページのご紹介
シューティングゲーム・関連ページをご紹介します。
歴代名作シューティングゲームのご紹介|まとめ
歴代シューティングゲーム全ゲームタイトル一覧のご紹介|まとめ
シューティングゲームの人気シリーズのご紹介
シューティングゲーム関連ページのご紹介|まとめ
シューティングゲーム解説ページのご紹介|まとめ
シューティングゲーム・ハード関連(周辺機器)のご紹介|まとめ
シューティングゲーム雑誌/書籍関連のご紹介|まとめ
【ゲームジャンル別】サイトマップのご紹介
【ゲームジャンル別】サイトマップをご紹介します。
ゲームジャンル別サイトマップ | ||||
ゲームTOP > ランキング│傑作・名作│機種別│ジャンル別 |
||||
ゲームジャンル別TOP >関連ページ│名作│ランキング | ||||
【ジャンル別関連ページ】 アクション系(プラットフォーム│対戦アクション│FPS│TPS│STG│フライト)|AVG│RPG│SLG│レース│スポーツ│パズル│テーブル |
||||
【アクション】プラットフォーム│対戦アクション│FPS│TPS│STG│フライト 【アドベンチャー】AVG│ 【RPG】RPG│SRPG│ARPG 【SLG】SLG│ストラテジー│ターン制SLG│RTS 【レース】レース 【スポーツ系】スポーツ│プロレス 【パズル】 【テーブル】麻雀 |
||||
【ジャンル別】おすすめ評価ランキング アクション│AVG│RPG│SLG│レース│スポーツ│パズル│テーブル |
||||
【歴代傑作・神ゲー(2021~1996年)】99~94点│93~92点│91点│90点 ■【アクション系ゲーム】■ アクション│プラットフォーム│対戦アクション│FPS│TPS│フライト│ 【対戦アクション】一覧│98~80点│79~70点 【FPS】まとめ│90点以上│89~86点│85~83点│82~80点 【アドベンチャーゲーム】 ■【RPG系】■ RPG│SRPG│ARPG 【RPG】一覧│傑作(96~90点)│89~85点│84~82点│81~80点│ ■【シミュレーション系ゲーム】■ SLG│ストラテジー│ターン制SLG│RTS│街づくりSLG ■【レース】■ ■【スポーツ系ゲーム】■スポーツ│プロレス ■【パズル】 |
||||
シリーズ・テーマ | ||||
■■│コペンギンTOP > ゲーム│ホビー│書籍・マンガ│■■ |
||||
サイトマップ一覧 |
ゲームジャンル別・関連ページのご紹介
ゲームジャンル別・関連ページをご紹介します。
【TPS名作・傑作・まとめ】TPS傑作・名作・全ゲームタイトルのご紹介│まとめ│~トゥームレイダー│バイオハザード│アンチャーテッドなど~
【格ゲー・名作】アーケード・家庭用・格闘ゲームのご紹介~名作(173 本)・全タイトル(1462本)のご紹介
【名作STG】シューティングゲームのご紹介
【AVG】アドベンチャーゲームのご紹介│まとめ│
【名作RPG】RPGのご紹介│まとめ│
【TOP:SLG】おすすめ名作シミュレーションゲームのご紹介
【TOP】レースゲーム関連(おすすめ名作・評価ランキン)のご紹介
TOP【おすすめスポーツゲーム】のご紹介~MLB,NBA,NFL,FIFAなど~
【TOP】パズルゲームのご紹介
ゲームTOPサイトマップ
ゲームTOPのサイトマップをご紹介します。
【ゲームTOP】サイトマップ | ||||
ゲームTOP > ランキング│傑作・名作│機種別│ジャンル別 | ||||
■ランキングTOP > ハード│ソフト(売上(世界│国内)│海外評価) ■傑作・名作ゲームTOP > ■ゲーム機種別TOP > 据置│携帯│AC│PC│周辺機器 ■ジャンル別TOP > アクション系(プラットフォーム│対戦アクション│FPS│TPS│STG│フライト)|AVG│RPG│SLG│レース│スポーツ│パズル│テーブル |
||||
■■│コペンギンTOP > ゲーム│ホビー│書籍・マンガ│■■ |
||||
サイトマップ一覧 |
ゲーム関連ページのご紹介
ゲーム関連ページをご紹介します。
【ゲームランキング】世界・国内で最も売れたゲームランキングのご紹介
名作ゲームのご紹介│まとめ│家庭用ゲーム・PC・アーケードなど
【機種別ゲームTOP】PC・家庭用・アーケードゲーム・周辺機器のご紹介
ジャンル別ゲームタイトルのご紹介│まとめ│
コペンギン・サイトマップ
コペンギンのサイトマップをご紹介します。
【コペンギンTOP】サイトマップ | ||||
コペンギンTOP > ゲーム│ホビー│書籍・マンガ│ | ||||
■■│コペンギンTOP > ゲーム│ホビー│書籍・マンガ│■■ |
||||
サイトマップ一覧 |
懐かしの名作から最新作までの豊富な品揃え!通販ショップの駿河屋
コペンギンサイトマップ関連ページのご紹介
コペンギン関連ページをご紹介します。