と宣言すると v は v[1],v[2],v[3] の3つの実数からなる配列となる。
type vector=array[1..3] of real;
var v,w:vector;
と宣言すると v,w は添え字1~3を持つ実数の配列となる。 このとき v と w は型が一致しているので w:=v; という代入が可能である (成分ごとに代入する必要がない)。 この代入は次のような宣言をした場合には不可能になる。
var
v:array[1..3] of real;
w:array[1..3] of real;
整数変数 := seed(整数変数);
と書く。
program sample2;
const size=2;
type
vector=array[1..size] of real;
matrix=array[1..size] of vector;
var
a:matrix;
u,v:vector;
i,j,k,x:integer;
y,z:real;
begin
x:=seed(wallclock); { 乱数発生ルーチンの初期化 }
writeln('A = ');
for i:=1 to size do
begin
for j:=1 to size do
begin
a[i,j]:=round(5*random(1)); { 整数乱数 }
write(a[i,j]:2:0)
end;
writeln
end;
writeln;
z:=0;
for i:=1 to size do
begin
u[i]:=random(1); { 実数乱数 }
z:=z+sqr(u[i])
end;
z:=sqrt(z);
writeln('u = ');
for i:=1 to size do
begin
u[i]:=u[i]/z;
writeln(u[i]:10:5)
end;
for k:=1 to 20 do
begin
for i:=1 to size do
begin
y:=0;
for j:=1 to size do y:=y+a[i,j]*u[j];
v[i]:=y
end;
u:=v; { 同じ型を持つ変数の代入 }
z:=0;
for i:=1 to size do z:=z+sqr(u[i]);
z:=sqrt(z);
writeln('u = ');
for i:=1 to size do
begin
u[i]:=u[i]/z;
writeln(u[i]:10:5)
end;
writeln
end
end.