質問<2958>2006/2/14
from=ゆう
「pascalのプログラム」


次のプログラムで最後に出力される、u、vを数式(総和記号とnを用いる)で表せ。
program test(input,output);
var  i,n,s,t:integer;
     u,v:real;
begin
  read(n);
  s:=0;
  t:=0;
  i:=0;
  while i<=n do
    begin
       s:=s+i;
       t:=t+i*i;
       i:=i+1
    end;
  u:=s/n;
  v:=t/n;
  writeln('n=',n,'のときu=',u);
  writeln('n=',n,'のときv=',v)
  end.

という問題です。
どうもpascalができなくわかりません。
どうか教えてください。よろしくお願いします。

★希望★完全解答★

お便り2006/2/17
from=naoya


久しぶりに来てみてみました・・・。

PASCALですが、特に難しい部分はないはずです。
とりあえず簡単に説明します。
・var
  変数宣言。integerは整数型、realは実数型。
・read(dest)
  inputから変数destに入力を読み込む。
・while [条件] do begin ... end;
  [条件]が満たされている間は、begin...end間を実行し続ける。
・x:=y
  代入です。xという変数に値yを代入します。
・writeln(...)
  outputに1行書き出します。

さて、問題のプログラムですが、
iが0からnまでwhile doのbegin...endを繰り返してます。
sはもともと0のところにiを足していっているので、
                         n
 s = 0 + 1 + 2 +…+ n = Σi
                        i=0
tはもともと0のところにi*iつまりi^2を足していっているので、
                                 n
 t = 0^2 + 1^2 + 2^2 +…+ n^2 = Σi^2
                                i=0
そして、whileループを抜けたあとで、
u,vはそれぞれs,tをnで割ったものになっているので、
      n
 u = Σi/n
     i=0

      n
 v = Σ(i^2)/n
     i=0 

となります。