次のコードをHelloPascal4のウィンドウに貼り付けて、プルダウンメニューの操作から実行して見ましょう。
program rei080(input,output);
var
x, y, i:integer;
begin
y := 0;
readln(x);
for i := 1 to x do
y := y + i;
writeln('1から', x, 'までのすべての整数の合計は', y);
end.
これまでの例より少しだけプログラムっぽくなりました。
1~xで読み込んだ数までの全ての整数の合計を計算しています。
y := 0;
は変数の初期化と呼ばれる操作です。変数の初期値は定義されませんので、何らかの前提を考慮してプログラムを作る事は出来ません(何もしていなければ0が入っているというような事を期待してはいけないと言うことです。)。そのためここで明示的に0を代入しています。
x, iに変数の初期化が必要ないのかと言えば、上記プログラムではxにもiにも必ず値が入力されるロジックになっているため必要有りません。
for i := 1 to x do
y := y + i;
この部分が繰り返しのfor文になります。
この文の動作は日本語で記述すると概ね次のような物になります。
「まず変数iに1を代入し、一回実行するごとにiに1ずつ加算しながらxの値に到達するまでdoの後の文を実行せよ」
即ち、xに3が与えられている場合は次のような動作になります。
1回目:iには1が入ります。xは3なので(i<=3なので)doの後ろの文を実行します。
→yにははじめ0が入って居ます。iにはこの時点では1が入って居ます。従ってyには0+1=1がコピーされます。
2回目:iには2が入ります。xは3なので(i<=3なので)doの後ろの文を実行します。
→yにはこの時1が入って居ます。iにはこの時点では2が入って居ます。従ってyには1+2=3がコピーされます。
3回目:iには3が入ります。xは3なので(i<=3なので)doの後ろの文を実行します。
→yにはこの時3が入って居ます。iにはこの時点では3が入って居ます。従ってyには3+3=6がコピーされます。
4回目:iには4が入ります。xは3なのでi<=3が成立しません。従ってdoの後ろの文を実行せず繰り返し処理を終了します。この例で実際のメリットを感じる事はなかなか困難ですが、繰り返し処理によって、同じ操作を何度も実行するような作業の高速・効率化を行える事がコンピュータを使用する重要な効果の一つです。