10.配列

10.配列

  データa1,a2,・・・,anをa[1],a[2],・・・,a[n]と表現すると便利である。そのような
   a=(a[1],a[2],・・・,a[n])
を「1次元配列」ARRAYという。データB11,b12,・・・,bmnに対して、

   b=(b[1,1],・・・,b[1,n]
       ・
       ・
       ・
      b[m,1],・・・,b[m,n])
を「2次元配列」という。
一般に「k次元」の配列が定められる。
  配列の宣言
   文法:配列と配列の要素
      配列  :変数名に準ずる。
      配列要素:配列名(添字1,添字2,・・・,添字n)
           の形の文字列、但し添字1〜nは整数又は整数型変数。
   例)
     VAR a:ARRAY[1..10] OF integer
     意味:VARでa[1],a[2],・・・,a[10]は整数型であることを宣言
  配列上の演算
   文法:配列の要素に対して次の演算が定められている。
    1)代入a(i)=0
    2)四則
    3)添字の変更
例1)配列の利用
  データ 入力:a[1],・・・,a[100]
      出力:sum=a[1]+・・・+a[100]
  アルゴリズム


  プログラム

   PROGRAM prog1(input,output);
    VAR i:integer;
      sum:real;
      a:ARRAY[1..100] OF real;
     BEGIN
      FOR i:=1 TO 100 DO
       BEGIN
        READLN(a[i]);
        sum:=sum+a[i]
       END;
      WRITELN(sum)
     END.

例2)ベクトルの加算
  データ 入力

       a[1],b[1]
         ・
         ・
         ・
       a[10],b[10]
       出力 c=a+bベクトル
  アルゴリズム
  
  プログラム
   PROGRAM prog2(input,output);
    VAR i:integer;
      a,b,c,:ARRAY[1..10] OF real;
     BEGIN
      FOR i:=1 TO 10 DO READLN(a[i],b[i]);
      FOR i:=1 TO 10 DO c[i]:=a[i]+b[i];
      FOR i:=1 TO 10 DO WRITELN(c[i]);
     END.
例3)ベクトルの積
  データ 入力
       a[1],b[1]
         ・
         ・
         ・
       a[10],b[10]
      出力 c=a*bベクトル
  アルゴリズム

  プログラム
   PROGRAM prog3(input,output);
    VAR i:integer;
      a,b,c,:ARRAY[1..10] OF real;
     BEGIN
      FOR i:=1 TO 10 DO READLN(a[i],b[i]);
      FOR i:=1 TO 10 DO c[i]:=a[i]*b[i];
      FOR i:=1 TO 10 DO WRITELN(c[i]);
     END.

練習問題