program calculate_sum(input, output);
var n : integer;
data: array[1..100] of integer;
i,sum: integer;
begin
write('How many numbers you want to input?');
readln(n);
for i := 1 to n do readln(data[i]);
sum := 0;
for i := 1 to n do begin
sum := sum + data[i];
writeln('data[', i:2, ']=', data[i]:5, ', sum = ', sum);
end;
readln;
end.
このプログラムでは、配列というものを使う。
var data: array[1..100] of integer;と変数宣言のところに書くと、100個の整数型変数ができ、それぞれが data[1] から data[100] までといった風に、番号で指定して操作 できる。この番号のことを、「専門用語」で「添字」(index)という。
配列の便利なところは、まず、変数宣言で var data1,data2,data3, .... data100:integer と書くよりずっと短くて済む(100万個変数が欲しかったら 大きな違いである)ということ、それから実行部も簡潔な繰り返しで書けると いうことである。特に大事なのは、番号(添字)に変数が使えるということで ある。このことのために、上のように、ループの中で配列の要素を順番に見る とか値をいれるとかいったことができる。
計算機が人間よりも得意なことは、「同じ処理を繰り返し大量のデータに対して 適用する」ということである。例えば
How many numbers you want to input?5 2 3 4 5 6 data[ 1]= 2, sum = 2 data[ 2]= 3, sum = 5 data[ 3]= 4, sum = 9 data[ 4]= 5, sum = 14 data[ 5]= 6, sum = 20
program sort_data_from_file(input, output);
var n : integer;
data: array[1..100] of real;
i,j : integer;
work: real;
begin
n := 0;
while not eof(input) do begin
n := n +1;
readln(input, data[n]);
end;
writeln('Input data');
for i := 1 to n do write(' ',data[i]:5:2); writeln;
for i := 1 to n - 1 do begin
for j := i + 1 to n do begin
if data[i] > data[j] then begin
work := data[i];
data[i]:= data[j];
data[j]:= work;
end;
end;
end;
writeln('Sorted data');
for i := 1 to n do write(' ',data[i]:5:2); writeln;
end.
このプログラムは、入力した数を小さい順に並べ変えて出力する。並べ変える
原理は、以下のようなものである。
simple_sort < sample.datとシェルウインドウで入力すれば結果が得られるはずである。
注意 コンパイルして作るプログラムの名前には sort は使わな いこと。これは、この名前の別のプログラムがあらかじめ準備されていて、そ ちらが実行されてしまうからである。
なお、次回はレポートを出す。