ロイヤルクラウンダービー/Royal Crown Derby トラディショナル・イマリ/Traditional Imari ティーカップ&ソーサー 2451【陶器】【アンティーク】【ブランド洋食器】【観賞】【RCP】【中古】 【業務用】 x WPV2903

HOME

[C言語 入門 小学生でもわかるC言語]
十二日目 配列(はいれつ)!

広告

目次へ戻る

ロイヤルクラウンダービー/Royal Crown Derby トラディショナル・イマリ/Traditional Imari ティーカップ&ソーサー 2451【陶器】【アンティーク】【ブランド洋食器】【観賞】【RCP】【中古】 【業務用】 x WPV2903価格は安く

(1)上から順番に
(2)条件で分かれ道
(3)くり返し

基本的なプログラムの仕組みは学びました。次にそれを使いこなす上で便利な機能「配列(はいれつ)」を紹介します。

たくさんの変数

今までは簡単なプログラムばかりだったので、変数も1つか2つぐらいしか使いませんでした 。

でも変数が100個や200個に増えた時に全て別々に名前を付けるのは、けっこう大変ですよね!

そんな時に使うのが「配列」です!

使ってみよう!

/*十二日目 プログラム1*/
#include <stdio.h>
int main(){
int hairetu[5] = {2,4,1,0,3};
printf("hairetu[0] = %d\n",hairetu[0]);
printf("hairetu[1] = %d\n",hairetu[1]);
printf("hairetu[2] = %d\n",hairetu[2]);
printf("hairetu[3] = %d\n",hairetu[3]);
printf("hairetu[4] = %d\n",hairetu[4]);
return 0;
}

海外最新ロイヤルクラウンダービー/Royal Crown Derby トラディショナル・イマリ/Traditional Imari ティーカップ&ソーサー 2451【陶器】【アンティーク】【ブランド洋食器】【観賞】【RCP】【中古】 【業務用】 x WPV2903

■説明■

配列は変数に番号をつけて使いやすくしたものです。

まずは宣言ですね!

int hairetu[5] = {2,4,1,0,3};

「int」タイプの変数「hairetu」を5個使います!という事で「hairetu[5]」とします。

初期化は{}カッコの中に「,」コンマで区切って書くことができます。

この{}カッコを使ってまとめて初期化するやり方は最初の宣言と一緒に初期化する時だけ使えます。

使う時は

hairetu[0]

このように[ ]カッコの中に番号を書いて使います。この番号の事を添え字(そえじ)といいます。

たとえばprintf命令で表示したい時は「%d」でお尻に「hairetu[0]」というようにすれば大丈夫です。

もちろん一つずつ初期化したり内容を変更する事もできます。

int hairetu[5];
hairetu[0] = 2;
hairetu[1] = 4;
hairetu[2] = 1;
hairetu[3] = 0;
hairetu[4] = 3;

のように初期化したり、

hairetu[2] = 152;

のように一つだけ内容を変更する事もできます。

ただ数が多くて初期化忘れが多いので数が少ない時は最初に紹介した{}カッコを使ってまとめて初期化か、「for」命令などを使ってまとめて初期化か、全て「0」で大丈夫なら

int hairetu[5] = {0};

のように書けばすべて「0」で初期化できます。

注意

あらためて添え字(そえじ)に注目してください。番号が「hairetu[0]」から始まってます。

そうです!

配列の番号は「0」から始まります!なので最後は「hairetu[4]」となりますのでご注意ください。

ここで鋭い方は気づいたかもしれませんがこの「hairetu[4]」の隣の「hairetu[5]」の内容も実は調べたり変更したりする事ができます。

が!これは

バッファオーバーフロー

というもっともやってはいけないエラーが発生するので絶対にやめましょう!

これはコンピューターは限られたメモリをムダにしないように再利用しながら動いております。

なのでプログラム上でコンピューターに「このメモリ使いますよ!」と宣言した場所以外のメモリはコンピューターを動かす上で超大事な数字が保存されていたりするのです!

やりようによってはコンピューターが壊れてしまうかもしれませんので絶対にやめておきましょう。

上手に使ってみよう!

配列にする事によってさきほどの「添え字」を変数にする事ができます。

さきほどのプログラムをもっと簡単に書いてみましょう!

/*十二日目 プログラム2*/
#include <stdio.h>
int main(){
int hairetu[5] = {2,4,1,0,3};
int suji;
for(suji = 0;suji < 5;suji++){
printf("hairetu[%d] = %d\n",suji,hairetu[suji]);
}
return 0;
}

海外最新ロイヤルクラウンダービー/Royal Crown Derby トラディショナル・イマリ/Traditional Imari ティーカップ&ソーサー 2451【陶器】【アンティーク】【ブランド洋食器】【観賞】【RCP】【中古】 【業務用】 x WPV2903

■説明■

配列と「for」命令のよく使われるカタチです!

for(suji = 0;suji < 5;suji++){
printf("hairetu[%d] = %d\n",suji,hairetu[suji]);
}

「hairetu[suji]」で添え字を変数にして一気に配列の内容を表示してます!

こうすれば一度に100個、200個あるたくさんのデータを使えますね!

続けていくつか配列を使ったテクニックをご紹介します。

配列のテクニック!番兵(ばんぺい)

たくさんのデータの中から目的のデータを探し出したい時ってありますよね!

でもそこにデータがあるかどうかはわからない。

しかもすごいたくさんのデータなので全部調べるのは大変。

そこで登場!番兵!

これはわざと目的のデータを途中に入れておく事によって、プログラムのムダをなくすテクニックです。

/*十二日目 プログラム3*/
#include <stdio.h>
int main(){
int hairetu[10] = {2,5,1,8,3,0,7,6,9,4};
int suji = 0;
while(hairetu[suji]){
printf("hairetu[%d] = %d\n",suji,hairetu[suji]);
suji++;
}
return 0;
}

海外最新ロイヤルクラウンダービー/Royal Crown Derby トラディショナル・イマリ/Traditional Imari ティーカップ&ソーサー 2451【陶器】【アンティーク】【ブランド洋食器】【観賞】【RCP】【中古】 【業務用】 x WPV2903

■説明■

まず「while」命令の条件に注目ですね!

while(hairetu[suji])

これも「if」命令の時に学んだ条件「1」合っている。「0」合っていない。のカタチの一つですね。

「「0」合っていない」がくればくり返しが終わる事を利用してます。もちろんそれ以外はくり返します。

なれないウチは変に感じるかと思いますが、そのまま覚えましょう!

もちろん

while(hairetu[suji] != 9)

のように普通に条件を指定する事もできます。

前回学んだ「if~break」でカッコ{}を抜ける方法などとも合わせて覚えておきましょう。

2次元配列(にじげんはいれつ)

続けてちょっとパワーアップさせた2次元配列を学んでいきたいと思います。

「にじげん!」って聞いただけでいっきにレベルアップしそうな感じですが、ご安心ください。ただ配列が束(たば)になっただけの話です。

2次元のイメージ

オセロのマスとか将棋のマスのような平面を想像してください。

int hairetu[6][4];

例えば「hairetu[6][4]」という2次元配列だとすると「縦6マス×横4マス」のような平面を想像します。

こんな感じですね。このそれぞれのマスに数字とかを入れていくイメージで考えるとわかりやすいかと思います。

2次元の場合も配列番号の最初は[0][0]から始まりますので、この場合の終わりは[5][3]になります。

ではプログラムを作ってみましょう!

/*十二日目 プログラム4*/
#include <stdio.h>
int main(){
int hairetu[3][2];
hairetu[0][0] = 1;
hairetu[0][1] = 2;
hairetu[1][0] = 3;
hairetu[1][1] = 4;
hairetu[2][0] = 5;
hairetu[2][1] = 6;
printf("[0][0] = %d:[0][1] = %d\n",hairetu[0][0],hairetu[0][1]);
printf("[1][0] = %d:[1][1] = %d\n",hairetu[1][0],hairetu[1][1]);
printf("[2][0] = %d:[2][1] = %d\n",hairetu[2][0],hairetu[2][1]);
return 0;
}

海外最新ロイヤルクラウンダービー/Royal Crown Derby トラディショナル・イマリ/Traditional Imari ティーカップ&ソーサー 2451【陶器】【アンティーク】【ブランド洋食器】【観賞】【RCP】【中古】 【業務用】 x WPV2903

■説明■

まず2次元配列の宣言ですが、

int hairetu[3][2];

このようになります。配列[縦]×[横]のようなイメージで作りましょう。

次に初期化ですが、ちょっとめんどくさいやり方をしてます。

hairetu[0][1] = 2;

このように場所を一つ一つ選んで数を入れる事ができます。

まとめて初期化する方法もありますので次のプログラムで説明いたします!

どの番号がどのマス目になるのかみたいに「printf」命令などでいろいろな場所を表示してみて2次元配列をイメージできるようにしてみてください。

配列と「for」命令でプログラムをパワーアップ!

最初の方にやったクリスマスツリーを書くプログラムを配列と「for」命令を使って書き直しましょう!

/*十二日目 プログラム5*/
#include <stdio.h>
int main(){
int tree[9][9] = {
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,1,0,0,0,0},
{0,0,0,9,9,9,0,0,0},
{0,0,9,9,9,9,9,0,0},
{0,9,9,9,9,9,9,9,0},
{0,0,0,0,9,0,0,0,0},
{0,0,9,9,9,9,9,0,0},
{0,0,0,9,9,9,0,0,0},
{0,0,0,0,0,0,0,0,0}
};
int suji1,suji2;
for(suji1=0;suji1<9;suji1++){
for(suji2=0;suji2<9;suji2++){
if(tree[suji1][suji2] == 9)printf("□");
else if(tree[suji1][suji2] == 1)printf("☆");
else printf("■");
}
printf("\n");
}
return 0;
}

海外最新ロイヤルクラウンダービー/Royal Crown Derby トラディショナル・イマリ/Traditional Imari ティーカップ&ソーサー 2451【陶器】【アンティーク】【ブランド洋食器】【観賞】【RCP】【中古】 【業務用】 x WPV2903

■説明■

2次元配列をまとめて初期化してます。

int tree[9][9] = {
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,1,0,0,0,0},
{0,0,0,9,9,9,0,0,0},
{0,0,9,9,9,9,9,0,0},
{0,9,9,9,9,9,9,9,0},
{0,0,0,0,9,0,0,0,0},
{0,0,9,9,9,9,9,0,0},
{0,0,0,9,9,9,0,0,0},
{0,0,0,0,0,0,0,0,0}
};

このように一列一列を{}カッコで囲む事によって平面のように2次元配列を初期化できます。

初期化の時だけこの書き方はできます!

{}カッコの間を「,」コンマで区切っているのと、最後の列だけは{}カッコの後「,」コンマが付かないので注意してください。

2重ループ

次に2重ループが使われてます。これもなれないと最初はややこしいと思います。

for(suji1=0;suji1<9;suji1++){
for(suji2=0;suji2<9;suji2++){
(ループ中の命令);
}
}

ループのイメージですがこのプログラムで言うと

まず外側のループを通りこして先に内側のループで横一列のラインを作ります

  • 5個セット おろし器 RCおろし器/長型 [15 x 8.5 x 3cm] 【料亭 旅館 和食器 飲食店 業務用】
  • ヒートランプウォーマー HLW-500PT,調理台 片面引違戸 AC-1500H
  • 【送料無料】キッチン用品 洋食器 置物 rare small 7inch multi glaze flower majolica platerare small 7 inch multi glaze flower majolica plate
  • 【IH対応】KITCHEN CHEF ダイヤモンドコートパン 3点セット IS-SE3 アイリスオーヤマ
  • ロイヤルクラウンダービー/Royal Crown Derby トラディショナル・イマリ/Traditional Imari ティーカップ&ソーサー 2451【陶器】【アンティーク】【ブランド洋食器】【観賞】【RCP】【中古】
  • トースターパン テフロン 葛恵子のトースタークッキング専用 スクエア ブラウン
  • CP-9315 コレール スウィートストロベリー ミニプレート J405-SWT 10枚セット【C】
  • 【まとめ買い10個セット品】和食器 ツ095-196 渕グリーン角皿 【キャンセル/返品不可】【厨房館】
  • オークス ウチクック スチームグリル ガラスカバー UCS16,【まとめ買い10個セット品】和食器 ヤ417-116 立花灰釉6.0スリ鉢 【キャンセル/返品不可】【ECJ】
  • パインボトル (パイナップル、 メロン、 スイカのボトル 抜き用) L【パインカッター】【業務用厨房機器厨房用品専門店】
  • レビュー投稿で次回使える2000円クーポン全員にプレゼント 三栄水栓製作所 シングルワンホール混合栓 節水水栓 キッチン用 泡沫吐水 ベロアメッキ仕様 寒冷地用 Kiwitap K87710JK-MC 【生活家電\他】
  • ロイヤルクラウンダービー/Royal Crown Derby トラディショナル・イマリ/Traditional Imari ティーカップ&ソーサー 2451【陶器】【アンティーク】【ブランド洋食器】【観賞】【RCP】【中古】
  • アズワン 標準ふるい 普及型 蓋・受器 IDφ150mm(深さ45mm) (5-5391-34) 1個
  • 【クーポン配布中】 (ポイント10倍) 【送料無料】ノリタケ アルマンド ティーポット (J) (プレゼント/ギフト/GIFT)のし 包装 ラッピング メッセージカード 無料
  • ☆ 蓋物 ☆ 緑彩雲流 菓子碗 [ 12 x 8.2cm 400g ] 【 料亭 旅館 和食器 飲食店 業務用 】
  • パール金属 H-5317 里味 本蓚酸アルミ両手鍋36cm/キッチン用品 食器 調理器具 鍋 フライパン 両手鍋,外輪鍋 パワー・デンジ 蓋無 24cm IH 【20P05Dec15】 メイチョー
  • SAスーパーデンジ フライパン 27cm【ステンレスフライパン】【電磁調理器対応】【IH対応】【業務用フライパン】【SUPERDENJI】【業務用】
  • 三宝(UK) UK18-8パイプ柄パンチング スパゲッティてぼ9253067 M 1個
  • 大皿 飾り皿 ガラス製津軽びいどろ 大川薫工房津軽海峡楕円大皿 送料無料
  • 【送料無料】中古 食器・洋食器・置物セラミックバニーエーマンマイセンzwei keramik hschen um 1930 ehmann stadt meissen nr2,10個セット 向付 織部4.8小鉢 [ 14.7 x 5.7cm ] 料亭 旅館 和食器 飲食店 業務用
  • 【送料無料】中古 食器・洋食器・置物ダブルヘッドカップルバイエルwandmaske doppelkopf trachtenpaar bayerlein 1940
  • 。。

    その1

    ■■■■■■■■■

    一列作った所で一度内側のループを抜けて縦のラインを一つだけ進めてから、再び内側のループに入ります。

    その2

    ■■■■■■■■■
    ■■■■☆■・・・

    後はくり返しですね!

    その3

    ■■■■■■■■■
    ■■■■☆■■■■
    ■■■□□□■■■
    ■■□□□・・・

    内側のループが終わったら外側のループを一つ進めるというのを想像しましょう!

    「if」命令で条件に合う所を置きかえる

    そしてループの最中に条件に合う所の数字を絵柄に置きかえます。

    if(tree[suji1][suji2] == 9)printf("□");
    else if(tree[suji1][suji2] == 1)printf("☆");
    else printf("■");
    

    2次元配列の全ての内容を2重ループで調べる。その内容の条件が合えば置きかえる。これがポイントですね!

    配列はプログラムを組む上でスゴイ大事なテクニックです。。。何回も練習して身につけましょう!

    次回

    十三日目 配列と文章!

    □ページの先頭へ□

    □目次へ戻る□

  • [4時間限定P10倍]送料無料 アルミ鍋のなべ 二槽式フッ素加工(蓋付)24cm QNB3304【TC】【en】
  • 送料込!英国アンティーク ブリキ バケツ ジャンク イギリス/L2602-648-2
  • 【名入れ焼酎サーバー】国産 焼酎サーバー 1.3L【_名入れ】 マイセット M1シリーズ コンロ台 <間口:70cm> M1-70G
  • エムケー精工(MK精工) 餅カッター まんまる名人 ホワイト RMC-03W
  • ロイヤルクラウンダービー/Royal Crown Derby トラディショナル・イマリ/Traditional Imari ティーカップ&ソーサー 2451【陶器】【アンティーク】【ブランド洋食器】【観賞】【RCP】【中古】
  • [TKG16-0981] ゼリーフレックスモルドSG04  半丸(24ヶ取)
  • サーモンボード飾台 特大 鳳凰 18ー8 UK 【業務用】【送料無料】
  • 【まとめ買い10個セット品】和食器 テ323-046 赤ネジ梅反5.5種丼 【キャンセル/返品不可】【開業プロ】 【送料無料】キッチン用品 洋食器 置物 アールデコジャグバスケットヴィンテージ
  • 【400円OFFクーポン 8/9 9:59まで】 19-0 電磁対応 半寸胴鍋(目盛付) 33cm (蓋無) 【本間製作所: キッチン用品 調理用具・器具 寸胴鍋】【HONMA SEISAKUJO】
  • ブウジャー ステンレス ホテルパン 7440.20 1/3×200mm AHT4638
  • ロイヤルクラウンダービー/Royal Crown Derby トラディショナル・イマリ/Traditional Imari ティーカップ&ソーサー 2451【陶器】【アンティーク】【ブランド洋食器】【観賞】【RCP】【中古】
  • 3個セット 大皿 (強)伊賀白吹 11.0小判皿 [33.5 x 25 x 2.5Hcm]【料亭 旅館 和食器 飲食店 業務用】
  • 3個セット 中華単品 荒刷毛三彩6.8反高台丼 [21 x 8.5cm] 【中華料理 ラーメン チャーハン 飲食店 業務用】
  • スフレ カラー PC700-31【ROYALE】【ロイヤル】【オーブン皿】【耐熱磁器】【オーブンウェア】【皿】【業務用】 【送料無料】中古 食器・洋食器・置物デュークエスプレッソサービスespressoservice von frstenberg herzog ferdinand
  • 【送料無料】中古 食器・洋食器・置物エンバイロンメントニュースサービスサイトwunderschne blumenfrau blumenmdchen ens und kmmer porzellan ca 22cm
  • 泉州留河 日本製 桐の米びつ 焼桐5kg用  【ys-1071475】【送料無料】
  • 冷酒盃(続鷹羽・つづきたかのは)(1個セット)(プレゼント 家飲み 日本酒 冷酒キリコ クリスタル ハンドメイド)【】【】【送料無料】★ホームライフポイントアップキャンペーン★[10P03Dec16]
  • 10個セット 煮物椀 [A]6寸大名椀溜つば金 [18 x 12.4cm] 【料亭 旅館 和食器 飲食店 業務用】
  • MLV グラス フラッシュ アイスバケット 3.7L S071 [RJBC301]
  • 【まとめ買い10個セット品】和食器 朱巻交趾唐草 菓子碗(強化) 35K261-14 まごころ第35集 【キャンセル/返品不可】【開業プロ】
  • 【まとめ買い10個セット品】和食器 ミ194-086 手造り粉引朱巻フルーツ皿 【キャンセル/返品不可】【開業プロ】 【まとめ買い10個セット品】和食器 ト519-066 コリーン11cm角皿 【キャンセル/返品不可】【ECJ】
  • 【工事費込み】ノーリツ ビルトインコンロ PROGREプログレシリーズ N3S01PWASMSTEC プロパンガス 取付工事標準工事込【東京23区・横浜市・川崎市限定地区取替工事対応】02P07Feb16P20Feb16
  • 【業務用】タニコー tanico 三槽シンク TX-3S-180A 【 メーカー直送/代引不可 】
  • 【清水焼・京焼】陶あん作・IH対応・プレート式 8号京鍋 (2~4人用) <緑釉>・結婚祝・出産祝・結婚内祝い・母の日・敬老の日・お返し・法要10P03Dec16
  • 【◆◇4時間限定!最大P10倍!◇◆限定期間注意!】KVK アルミ複合管チューブ MXL-13-2025-S [A150502]
  • 前澤化成工業 FRP製グリーストラップ GT-PL・GT-SL用かさ上げ GKAPL30・50-100
  • □HOME□

    広告

    {yahoojp}nc02-yyp01-gui-2283