4-5 繰り返し処理 (1) ―累乗―

スーパーファミコンは 16 ビット、PlayStation は 32 ビット、NINTENDO 64 は 64 ビット、さらにはこのコンピュータのメモリは 64 MB あるいは 128 MB 等々、コンピュータ関係のもので出てくる数には決まった数が多いですね。これらの数は、2×2×2×…×2の形で求められる、コンピュータにとって“きりのいい”数なのです。

【練習問題】

下の表を埋めましょう。

    2の個数 答 (計算結果)
21 2 1 2
22 2×2 2 4
23 2×2×2 3  
24 2×2×2×2 4  
25 2×2×2×2×2 5  
26 2×2×2×2×2×2 6  
27 2×2×2×2×2×2×2 7  
28 2×2×2×2×2×2×2×2 8  
29 2×2×2×2×2×2×2×2×2 9  
210 2×2×2×2×2×2×2×2×2×2 10  

2×2×2×2×2 のように、ある数 a を b 個かけることを累乗といいます。

2×2×2×2×2 のことを、2を5個書く代わりに「25」と書いて「2の5乗」と読みます。

【基礎課題 4-11】

「2倍」ボタンを押したら
左の値が2倍になり、さらにもう1度「2倍」ボタンを押したら
さらに2倍になり、ボタンを押すごとに値がどんどん2倍になっていく、というプログラムを作りましょう。

まずは、フォーム上にコンポーネントを次のように配置してください。

コンポーネント Name
左のスピンエディット SpinEditNumber
右のボタン ButtonDouble

注意 SpinEditNumber.Value の初期値を 1 にしてください。

次の空欄を埋めてプログラムを完成させて下さい。

procedure TForm1.ButtonDoubleClick(Sender: TObject);
begin
  SpinEditNumber.Value :=              ;
end;

【練習問題】

このプログラムを使えば、25 の値を調べたいときも「2倍」ボタンを5回押すだけで求められます。では、このプログラムをもっと改良して、ボタンを1度押すだけで 25が求められるようにできないでしょうか。

これはそれほど難しくありません。ボタンを押したときに今までの5回分の動作をすればよいのですから、

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;
end;

となります。実行して動作を確認してみましょう。

【基礎課題 4-12】

ボタンを1度押すだけで 215 が求められるよう、プログラムを改変して下さい。

procedure TForm1.ButtonDoubleClick(Sender: TObject);
begin

end;