前のプログラムでは、何度もボタンボタンコマンドボタンを押していくとそのうち答えが求まります。でも、ボタンボタンコマンドボタンを1回押すだけで答えが求まるプログラムにしたいですね。
何回もボタンボタンコマンドボタンを押すことは、forforFor 文ででてきた「繰り返し」と呼ばれる操作 (作業) です。ですから、まずは forforFor 文を使ってボタンボタンコマンドボタンを1回押すだけのプログラムを考えてみましょう。プログラムは次のようになります。
procedure TForm1.ButtonCalcClick(Sender: TObject); var i: Integer; begin for i := 1 to do begin SpinEditMinute.Value := SpinEditMinute.Value + 1; SpinEditBact.Value := SpinEditBact.Value * 2; end; end;
Private Sub CommandCalc_Click() Dim i As Integer For i = 1 To TextMinute.Text = TextMinute.Text + 1 TextBact.Text = TextBact.Text * 2 Next End Sub
しかし、困りました。「何回繰り返すか」を指示する下線部に何と書いていのか、わからないのです。
forforFor 文は、回数が決まっている繰り返しにしか使えないのです。回数が決まっていない繰り返しには、「whilewhileWhile 文」を使います。プログラムを次のように変更してください。
procedure TForm1.ButtonCalcClick(Sender: TObject); begin while SpinEditBact.Value < 10000 do begin SpinEditMinute.Value := SpinEditMinute.Value + 1; SpinEditBact.Value := SpinEditBact.Value * 2; end; end;
Private Sub CommandCalc_Click() While TextBact.Text < 10000 TextMinute.Text = TextMinute.Text + 1 TextBact.Text = TextBact.Text * 2 Wend End Sub
whilewhileWhile 文は、「条件が成立している間は処理を繰り返す」という制御を行い、次のように書きます。
while 条件 do begin 繰り返し処理1; 繰り返し処理2; ・ ・ ・ end;
While 条件 繰り返し処理1; 繰り返し処理2; ・ ・ ・ Wend
プログラムを実行して、結果を確かめてみましょう。ちゃんと「14分」という答が出ましたか?
条件によって処理が変わるという点で ififIf 文と whilewhileWhile 文は似ていますが、ififIf 文は条件が成立してもしなくても1回きり、whilewhileWhile 文は条件が成立している間何度でも繰り返す点が違います。
■C++Builder 画像■
while 条件 do begin 繰り返し処理; end;
というように、繰り返し処理が1つしかない while 文は、if 文の場合と同様に、begin と end; を省略して次のように書くことが出来ます。
while 条件 do 繰り返し処理;
しかし、この書き方では、後で繰り返し処理を増やしたくなった場合に begin と end;を付け忘れる可能性があります。これまで同様、たとえ処理が1つでも常に begin と end;をつけることを勧めます。
1+2+3+4+… と足していくと、はじめて 10000
を超えるのはどこまで足したときでしょうか?
プログラムを使って求めて下さい。(数列の和の公式は使わないで下さい。)
■C++Builder 画像■1年間に 5% の利子がつく (つまり預金が 1.05
倍になる) 口座があります。この口座に10000円を預けておくと、何年後に30000円以上になるでしょうか?
左のようなプログラムを作って答を求めて下さい。