4-6 繰り返し処理 (2) -for 文の導入―

【基礎課題 4-13】

何乗の値を計算したいか (ここでは 3 乗) を入力して「計算」ボタンを押すと
その値を計算してくれる、というプログラムを作りましょう。

まずはつぎのようにフォームを作ってください。

コンポーネント Name
左のスピンエディット SpinEditJo
右のスピンエディット SpinEditResult
下のボタン ButtonCalc

注意 SpinEditResult.Value を 1 にしておくのを忘れないようにしましょう。

このプログラムでは、「何回2倍するか」はプログラム実行後にユーザが決めるので、今までのようにプログラム実行前に

procedure TForm1.ButtonDoubleClick(Sender: TObject);
begin
  SpinEdit1.Value := SpinEdit1.Value * 2;
  SpinEdit1.Value := SpinEdit1.Value * 2;
  SpinEdit1.Value := SpinEdit1.Value * 2;
    続く
  SpinEdit1.Value := SpinEdit1.Value * 2;
end;

とあらかじめ決まった回数だけ書いておくことはできません。

そこで、同じ動作を繰り返させる 「for 文」という命令を使います。プログラムを次のように書いてください。

実行して動作を確認しましょう。この for 文は、下のような構造になっています。

for カウント用変数(ここでは i) := 初期値(ここでは 1) to 繰り返し回数 do
        begin
        繰り返し処理1;
        繰り返し処理2;
        ・
        ・
        end;

決まった回数の繰り返しにも使えます。下の2つのプログラムは全く同じ動作をします。

procedure TForm1.ButtonDoubleClick(Sender: TObject);
begin
 SpinEdit1.Value := SpinEdit1.Value * 2;
 SpinEdit1.Value := SpinEdit1.Value * 2;
 SpinEdit1.Value := SpinEdit1.Value * 2;
 SpinEdit1.Value := SpinEdit1.Value * 2;
 SpinEdit1.Value := SpinEdit1.Value * 2;
 SpinEdit1.Value := SpinEdit1.Value * 2;
 SpinEdit1.Value := SpinEdit1.Value * 2;
 SpinEdit1.Value := SpinEdit1.Value * 2;
 SpinEdit1.Value := SpinEdit1.Value * 2;
 SpinEdit1.Value := SpinEdit1.Value * 2;
 SpinEdit1.Value := SpinEdit1.Value * 2;
 SpinEdit1.Value := SpinEdit1.Value * 2;
 SpinEdit1.Value := SpinEdit1.Value * 2;
 SpinEdit1.Value := SpinEdit1.Value * 2;
 SpinEdit1.Value := SpinEdit1.Value * 2;
end;
procedure TForm1.ButtonDoubleClick(Sender: TObject);
var
  i: Integer;
begin
  for i := 1 to 15 do
    begin
      SpinEdit1.Value := SpinEdit1.Value * 2;
    end;
end;

コラム

for カウント用変数 := 初期値 to 繰り返し回数 do
  begin
    繰り返し処理;
  end;       

というように、繰り返し処理が1つしかない for 文は、if 文の場合と同様に、beginend を省略して次のように書くことが出来ます。

for カウント用変数 := 初期値 to 繰り返し回数 do
    繰り返し処理; 

しかし、この書き方は、後で繰り返し処理を増やしたくなった場合に beginendを付け忘れる可能性があり、実際これまでもそのようなエラーは(本演習において)頻繁に見受けられました。そこで、たとえ処理が1つでも常に beginend をつけることを勧めます。

【基礎課題 4-14】

先ほどのプログラムを改変して、

数値を入れたら (この例では 3)
3の累乗が求められるプログラムを作りなさい。

【基礎課題 4-15】

かけ算は、足し算の繰り返しと考えることができます。例えば、2×5は、「2を足す」ということを5回繰り返すことです。

このように考えると、かけ算の記号「*」を使わずに、for文を使ってかけ算の答を求めることができます。

前のページのプログラムを改変して

数値を入れたら (この場合は 6)
4+4+4+…+4 を求めるプログラムを、for 文を使って作って下さい (ただし、プログラムの中でかけ算「*」を使ってはいけません。)。

【基礎課題 4-16】

怒りの度合いを数値で入力し「怒る」ボタンを押すと
その度合いに応じて「こら! こら! …」と表示するプログラムを作りなさい。
  • 度合いが1なら「こら! 」
  • 度合いが2なら「こら! こら! 」
  • 度合いが3なら「こら! こら! こら! 」
    (以下同様)