連載
» 2014年08月21日 11時00分 UPDATE

完全マスター! 組み込みC言語プログラミング(9):【問題8】繰返しと配列は相性がいい (1/2)

C言語を使ったマイコン制御プログラムの“イロハ”を解説する本連載。今回は繰り返しの処理を行う際に便利な「配列」について学びます。

[横田一弘 埼玉県立新座総合技術高等学校 教諭,MONOist]
photo

 本連載では、これから組み込みシステムのプログラミングを学びたい人向けに、C言語を使ったマイコン制御プログラムの“イロハ”を解説していきます。

 毎回少しずつステップアップしていけるよう、本文の最後で問題を出し、次回その解答と解説を紹介していきます。では早速、前回の問題を振り返ってみましょう。


問題8 「後入れ後出し(LIFO)で入力された数を表示する」

前回の宿題(問題8):

負数が入力されるまで繰返し整数を入力し、負数が入力されたならばLIFO(後入れ先出し)の順番で、入力された整数を表示するプログラムを作成して下さい



 問題8は「後入れ後出し(LIFO)で入力された数を表示する」でした。

 それでは解答を発表します。

#include <stdio.h>
 
int main(void)
{
    int n, i, data[100];
    printf("数を入力してください->");
    scanf("%d", &n);
    i = 0;
    while (n >= 0) {
        data[i] = n;
        i++;
        printf("数を入力してください->");
        scanf("%d", &n);
   }
   while (i > 0) {
       i--;
       printf("%d\n", data[i]);
   }
}
問題8の解答「lifo.c」

 lifo.ccを実行すると、次のような結果になります。

photo

配列の使い方

 配列(array)は、「共通の名前を使って、複数のデータを扱うデータ構造」をいいます。

 C言語で配列を使うには、まず変数を宣言します。

int n, i, data[100];

 ここで、nとiは通常の変数ですが、dataは配列と解釈されます。C言語の宣言では、名前の後ろにブラケット([と])を記述することで配列を表します。

 変数はデータを格納する箱のようなものですが、nとiとdataは次のようにイメージできます。

photo 変数n、i、dataのメモリ領域

 C言語の配列は、「同じ型のデータがメモリ上に連続して割り付けられる」約束になっています。

 dataはintで宣言されているので、int型から派生される「intの配列」です。また、ブラケットに囲まれた100は配列の要素数(「配列の大きさ」と呼ぶ)を表しています。つまりdataは100個のintが連続する配列です。

 プログラムで配列にアクセスするときには、data[0]、data[1]、data[2] 〜 data[99]のように、添字を付けます。添字とは配列の各要素を指示するための数値(整数でなければならない)をいいます。

 C言語の配列の添字は0から始まります。dataには100個の要素があるので、添字は0から99までとなります。

 添字に変数を書くこともできます。例えば「dataを0クリアする」プログラムは、

for (i = 0; i < 100; i++) data[i] = 0;

 となります。添字をiとして、for文で0から99までカウントアップしているのです。いずれにしても、配列のアクセス単位は要素だということです。

       1|2 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.