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 は使わな いこと。これは、この名前の別のプログラムがあらかじめ準備されていて、そ ちらが実行されてしまうからである。
なお、次回はレポートを出す。