C++入門/配列

柴田祐樹,東京都立大学,情報科学科

はじめに

ここでは配列について説明する.配列がわかれば,計算機の動作の多くが分かると思っている.また,C言語における文字列の取扱流儀もわかるだろう.

プログラムは同じ規則を繰り返し精確に処理できる.この利点を理解されなければ配列の必要性もわからないだろう.つまり,繰り返し文を用いたプログラムの例題と,その有用性が思いつかない方は今一度配列を用いない繰り返し文でできる解法を復習されたほうが良い.初学者は漸化式の計算にはじまり,テイラー級数の計算や,ニュートン法による解法を復習すると良い.テイラー級数の例はTaylor.ex.pdfに用意したためこちらを参考にされても良い.

記法

まず配列の必要性について述べる.以下のコードを用意した.ここでは4つの変数を使ってそれらの和を計算している.

変数名による複数変数の用意
int main(){
    int x1;
    int x2;
    int x3;
    int x4;

    x1 = 1;
    x2 = 2;
    x3 = 3;
    x4 = 4;

    int S = 0;
    S = S + x1;
    S = S + x2;
    S = S + x3;
    S = S + x4;
    return 0;
}

このような規則的な変数のあつまりは添字を使うことで統一的に表現することができる.例えば,数列をa_1,a_2,...のように,文字列と数値の組み合わせで表現することが可能となる.C++でも同様に,文字列と数値を組み合わせ,具体的に以下のように書ける.

int main(){
    int x[4];

    x[0] = 1;
    x[1] = 2;
    x[2] = 3;
    x[3] = 4;

    int S = 0;
    S = S + x[0];
    S = S + x[1];
    S = S + x[2];
    S = S + x[3];
    return 0;
}

2行目はx[ ]の記法で参照可能な int 型変数を 4 つ用意することを意味する.ただし,添字は 0 から始まることに注意されたい.変数名はプログラム実行時に変更することはできない.しかし,この添字は整数値を指定することができ,さらにそれをプログラムの実行時に決定することができるため,以下のように繰り返し文で参照する事が可能である.

繰り返しと添字を用いた例
int main(){
    int x[4];
    int i = 0;

    while(i < 4){
        x[i] = i + 1;
    }

    int S = 0;
    while(i < 4){
        S = S + x[i];
    }

    return 0;
}

添字と言えば普通はx_1のような下付きの物を言うが,C++では,[ ] を使うことになっている.

の違いは大きい.では要素数を増やすためにはソースコードの行数を増やさなければならないが,では2行目の4と書かれた部分を変更するだけで良い.また,int に限らず,double などあらゆる変数をまとめてこのように定義することが可能である.

ここまで覚えれば,一通りのアルゴリズムが記載できるはずである.

練習課題

問題1

1から10000までの素数の総数を求めるプログラムを作成せよ

練習課題回答

問題1への回答

回答例をprime.cppへ示す. Wikipediaによると,1から10000までの素数は1229あるとされる.prime.cppの実行結果は,1229となっているため,正しいことがわかる.このように,以前計算した値を保持しておくために,またその保持しておくべき値が多量にある場合に配列は有効である.

https://standardtlak.org/cpp/