質問<1085>2003/1/20
次のプログラムの意味を教えてください。 program test(input,output); var i,j,n,s:integer; begin read(n); s:=0; i:=1; j:=1; while i<=n do begin s:=s+J; i:=i+1; j:=j*(-1) end; writeIn('n=',n:3,'のときs=',s:5) end
お便り2003/1/21
from=phaos
これは Pascal の program ですね。 program test(input, output) これは program の名前が test で, 入出力を行うものであることの宣言です。 var i,j, n, s: integer これは整数の変数として i, j, n, s を使うということを宣言しています。 begin program 本体の開始。 read(n) 端末から一つ読んで来て, 変数 n に格納します。 s := 0 s に 0 を入れます。 i := 1 i に 1 を入れます。 j := 1 j にも 1 を入れます。 while i <= n do begin end i が n 以下の時に begin と end の間を実行します。 ここの中で i が一つずつ大きくなっている (i := i + 1) ので n 回 loop を回っていることになります。 j := j*(-1) ですから j は 最初 1, 次に -1 という具合に, 1 と -1 を行き来します。 従って s は最初 1, 次に 0, 次に 1, 次に 0 というように, n が 1 ならば 1, n が 2 ならば 0, n が 3 ならば 1, ... となりますが n が 0 以下なら何もしないので s が 0 のままです。 writeln('n=',n:3,'のときs=',s:5) これは 「n=」 と書いたあと, n の値を 3 ます使って書き, 「のときs=」 と書いたあと, s の値を 5 ます使って書き, 改行して終了します。 program 自体は実質的には n が 0 以下の場合は 0, それ以外は n を 2 で割った余りを 出していることになります。 ※これは数学の質問<1021>の問1の答でもあります。