スーパーファミコンは 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乗」と読みます。
![]() |
「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;
となります。実行して動作を確認してみましょう。
ボタンを1度押すだけで 215 が求められるよう、プログラムを改変して下さい。
procedure TForm1.ButtonDoubleClick(Sender: TObject); begin end;