5個セット 中華単品 青地パステル牡丹リム7.0丼 [21.5 x 7.8cm] 【中華料理 ラーメン チャーハン 飲食店 業務用】 (内祝い キッチン用品 18-8

HOME

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

広告

目次へ戻る

5個セット 中華単品 青地パステル牡丹リム7.0丼 [21.5 x 7.8cm] 【中華料理 ラーメン チャーハン 飲食店 業務用】 (内祝い キッチン用品 18-8【新品本物】

(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;
}

【正規品】5個セット 中華単品 青地パステル牡丹リム7.0丼 [21.5 x 7.8cm] 【中華料理 ラーメン チャーハン 飲食店 業務用】 (内祝い キッチン用品 18-8

■説明■

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

まずは宣言ですね!

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;
}

【正規品】5個セット 中華単品 青地パステル牡丹リム7.0丼 [21.5 x 7.8cm] 【中華料理 ラーメン チャーハン 飲食店 業務用】 (内祝い キッチン用品 18-8

■説明■

配列と「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;
}

【正規品】5個セット 中華単品 青地パステル牡丹リム7.0丼 [21.5 x 7.8cm] 【中華料理 ラーメン チャーハン 飲食店 業務用】 (内祝い キッチン用品 18-8

■説明■

まず「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;
}

【正規品】5個セット 中華単品 青地パステル牡丹リム7.0丼 [21.5 x 7.8cm] 【中華料理 ラーメン チャーハン 飲食店 業務用】 (内祝い キッチン用品 18-8

■説明■

まず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;
}

【正規品】5個セット 中華単品 青地パステル牡丹リム7.0丼 [21.5 x 7.8cm] 【中華料理 ラーメン チャーハン 飲食店 業務用】 (内祝い キッチン用品 18-8

■説明■

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++){
(ループ中の命令);
}
}

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

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

  • フジマック シェルフ(ベーシック) CBU215464V4 【 メーカー直送/代引不可 】【道具屋】
  • 送料無料 パロマ [PD-N57WV-75G-R(13A)] ビルトインコンロ 13A 都市ガス 右強火力 セレクションシリーズ 水なし両面焼タイプ 温度調節機能付き シルバーフェイス W750クリアガラストップ エレガントブラック,『カード対応OK!』リンナイ ガス業務用機器 オプション部品【R-611-5(A)/81-3670】業務用焼物器補用品バーナー 串焼用
  • ガスウォーマーテーブル 【マルゼン】 丸型×4 MGY-066NC W600×D600mm 【送料無料】【業務用】
  • マルゼン下火式焼物器(炭焼き、赤外線バーナータイプ、自動点火、串焼用)型式:MGKS-102寸法:幅1100mm 奥行180mm 高さ250mm送料:無料 (メーカーより)直送保証:メーカー保証付
  • 5個セット 中華単品 青地パステル牡丹リム7.0丼 [21.5 x 7.8cm] 【中華料理 ラーメン チャーハン 飲食店 業務用】
  • 【業務用/新品】 ヒゴグリラー コンパクト設計電気式焼物器 「単相タイプ」単相200V W630×D310×H290 [TAN-4]【プロ用】
  • ●【送料無料】VitaCraft sicuro(ビタクラフト シクロ) スーパー圧力鍋 6.0L 0710「他の商品と同梱不可」
  • 10個セット 夫婦茶碗 内外シェリーフラワー青大平 [13 x 6.2cm] 料亭 旅館 和食器 飲食店 業務用
  • IKD18-8 ステンレス 抗菌フッ素加工ミキシングボール 39cm,【まとめ買い10個セット品】和食器 アメ釉 小判グラタン 35V502-21 まごころ第35集 【キャンセル/返品不可】【ECJ】
  • 【まとめ買い10個セット品】和食器 市松ラスター なで角高台皿 35K124-16 まごころ第35集 【キャンセル/返品不可】
  • 日本製 有田焼 青白磁凜水唐草紋皿鉢10客揃(和食器)(内祝い 結婚内祝い 出産内祝い 新築祝い 御中元 お中元ギフト 暑中見舞い 残暑見舞い 就職祝い 新生活応援 結婚祝い 引き出物 香典返し お返し)
  • 5個セット 中華単品 青地パステル牡丹リム7.0丼 [21.5 x 7.8cm] 【中華料理 ラーメン チャーハン 飲食店 業務用】
  • 【茶道具 花入 置用】 備前焼き らっきょ 伊勢崎卓作 【smtb-KD】
  • ★杉本刃物 ( SUGIMOTO HAMONO ) 杉本 合金鋼ステンレス ペティーナイフ CM2015 15cm 【(平日のみ出荷)/代引除く】
  • 5個セット 木曽木製品 シチューカップ片手外黒 [ 14 x 12 x 6.9cm ] 料亭 旅館 和食器 飲食店 業務用
  • #10606【正広】ステンレス和包丁■出刃 165mm■マサヒロ:Masahiro■岐阜県関市■業務用包丁,【送料無料】キッチン用品 洋食器 置物 ビンテージデンビコテージ6 vintage denby cottage blue egg cups lovely condition
  • 【まとめ買い10個セット品】和食器 ふるさと千段鍋 黒φ18フッ素加工(中国) 35K513-06 まごころ第35集 【キャンセル/返品不可】【道具屋】
  • クラッド段付鍋 42cm【円付鍋】【段付鍋】【業務用鍋】【ステンレス】【両手鍋】【IH対応】【IH段付鍋】【電磁調理器対応】【業務用】
  • H-CC-SE6OR【税込】 アイリスオーヤマ 【IH対応】セラミックカラーパン6点セット オレンジ(マンゴーオレンジ) IRIS OHYAMA キッチンシェフ [HCCSE6OR]【返品種別A】【送料無料】【RCP】
  • 酔心 イノックス本焼和庖丁 和筋引 24cm 45087 (ASI5801),ブウジャー ステンレス ホテルパン 7400.15 2/1×150mm AHT4606
  • ナロースライサー 260mm (M117-S) ~R~
  • 。。

    その1

    ■■■■■■■■■

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

    その2

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

    後はくり返しですね!

    その3

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

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

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

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

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

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

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

    次回

    十三日目 配列と文章!

    □ページの先頭へ□

    □目次へ戻る□

  • 【送料無料】タイトカップ DT129-320KK TC【約300cc】 1500セット_業務用_使い捨てカップ_フタ付_フルーツ_デザート_惣菜
  • 【500円OFFクーポン 8/9 9:59まで】 【江部松商事】 18-8 ワンタッチ 裏漉セット 36cm 65メッシュ 【キッチン用品:調理用具・器具:キッチンツール・下ごしらえ用品:こしき】【18-8 ワンタッチ 裏漉セット 36cm】
  • 【送料無料】【冷・温蔵庫】【保温・保冷コンテナ】セキスイ フレッシュキーパー FB-18(12ヶ入)(EBM17-1)(907-07) 【送料無料】中古 食器・洋食器・置物ニシンシチューアールデコインテリアシュランベルクheringstopf fischterrine fischtopf artdeco schramberg handbemalt
  • 【ウエッジウッド】フロレンティーン グリーン&ゴールド プレート(ディナー)
  • 5個セット 中華単品 青地パステル牡丹リム7.0丼 [21.5 x 7.8cm] 【中華料理 ラーメン チャーハン 飲食店 業務用】
  • 【送料無料】中古 食器・洋食器・置物ファミーユノワールvase qing dynasty china famille noir porzellan handmade porcelain huge floorvase
  • コックシャツ(男女兼用) BA1208-0 オフホワイト LL 【業務用】【グル-プA】【プロ用】
  • 矢崎化工 ポリテナー ブルー PT-110 ST B10【メーカー直送:代引き不可:沖縄離島不可:北海道送料見積:日時指定不可】 10個セット もだんコントラスト レガロ24.5ミート皿 [ 24.5 x 3cm ] 料亭 旅館 和食器 飲食店 業務用
  • 卓上 電気ウォーマー(湯煎式)TEW-M型 sale【 メーカー直送/代金引換決済不可 】
  • 三栄水栓 Y5075H 立水栓 Y5075H-13
  • 5個セット 中華単品 青地パステル牡丹リム7.0丼 [21.5 x 7.8cm] 【中華料理 ラーメン チャーハン 飲食店 業務用】
  • 10個セット 調味料入 赤白流し 薬味入1号 [8 x 6.8cm 200cc] 料亭 旅館 和食器 飲食店 業務用
  • 【業務用】【 SW V型薬味入大6個入 】 【 調味入れ 】 【 業務用厨房機器 カタログ掲載 プロ仕様 】
  • ● しっかりパックE 3個入 100円均一 100均一 100均 120点セット ☆【万天プラザ 100円ショップ+雑貨】 【業務用】福島工業 フクシマ 冷凍冷蔵庫 内装ステンレス鋼板 幅1790×奥行650×高1950mm URN-182PM6 【 メーカー直送/代引不可 】
  • 【業界初!3年保証付】 業務用 冷凍ストッカー 60-OR 475×595×855mm シェルパ SHERPA 【 業務用冷凍庫 フリーザー 食品ストッカー 】厨房館
  • 食器 ディスペンサー KN KN5245-S6【代引き不可】【トレー】【リフト】【ビュッフェ】【バイキング】【業務用】
  • 【まとめ買い10個セット品】和食器 ゆず天目 ガラ入 35K530-18 まごころ第35集 【キャンセル/返品不可】
  • 【まとめ買い10個セット品】和食器 オ674-716 6.0八角シューマイ 【キャンセル/返品不可】【ECJ】
  • 正広作 中華包丁 M-1 #40806
  • 関兼次 PRO・S 日本製 オールステンレス包丁 骨スキ 145mm 5008【C】
  • 5個セット シリーズ丼 わらく黒マット石目7.0ボール [21.8 x 8.4cm] 【和食器 酒器 料亭 旅館 業務用】 10個セット 刺身 文字入赤濃千代口 [8 x 4cm] 【料亭 旅館 和食器 飲食店 業務用】
  • 【送料無料】キッチン用品 洋食器 置物 ジョンソンプレート4 johnson brothers wild flowers dinner plates
  • [TKG16-0983] ドゥマール フレキシパン 48取 2266プティフール(円)
  • 住友 抗菌 プラスチックまな板 SSOOL ライン2本付(短辺)黄
  • 創燕(SOUEN) いため鍋28cm お玉・竹べら付 SE-53 【RCP】 送料込みで販売!
  • □HOME□

    広告

    {yahoojp}nc02-yyp01-gui-2283