Back to BASIC
歴史と背景
1964年にBASICは誕生した。BASIC (Beginner's All-purpose Symbolic Instruction Code) は、汎用のプログラム言語として設計されたが、特に科学者でも技術者でもなくコンピュータの専門家でない人々を対象に作られた。
1960年代の頃は、コンピューターを使うためには自分たちでコンピューターを動かすためのソフトウェアを自作しなければならなかった。さらにソフトウェアを作るためには、自分たちの目的に合わせたプログラムを書かなければならず、そのためにはプログラムを書くためのプログラミングの技術をマスターする必要があった。
専門家でない一般の人々にもコンピューターを利用できるよう、プログラムを書きやすくするのがBASIC設計の目標であった。
BASIC の準備
BASIC言語の処理系を、PC にインストールするやり方とプログラムを実行するやり方を、(1)古典的な1980年代風のBASIC言語、および(2)やや現代風な言語要素を取り入れたモダンなBAISC言語の両方について例を次にあげておく。プログラムは、どちらもWindows OS に標準の メモ帳をつかって書くことにする。
この練習では、==言語処理系(プロセッサ)とプログラム(コード)は、どちらも == Windows デスクトップに保存するやり方ですすめる。
- メモ帳: コードを書き、編集し、デスクトップにファイルとして名前をつけて保存する。
- 言語プロセッサ: Chipmunk Basic または FreeBASIC
- コードの実行 (つくったアプリを動かす)
クラシカルな BASIC言語
Chipmunk Basicをクリックし、次のリンク先からダウンロードする。
ダウンロード先は、デスクトップにする。
次に、コマンドプロンプトを起動する。
モダンな BASIC言語
数のパズル
コンピュータと人間、どちらが勝つのか。まず、四則演算で10をつくるパズルをやってみる。
「10」 のつくり方
1, 2, 3, 4 の4つの数をつかって、加減乗除だけで 10 をつくる問題を考えてみよう。
例えば、
1 + 2 + 3 + 4
の式は、足し算だけで 10 になる。
では、加減乗除「+, -, *, /」を組み合わせて 10 になる式をつくることができるだろうか?
次のコードは、BASIC言語で書いた、あまりきれいではないけど、とりあえず Chipmunk Basicで動くプログラムである。
2 dim p$(4)
4 p$(1) = "+"
6 p$(2) = "-"
8 p$(3) = "*"
10 p$(4) = "/"
100 s = 0
102 input a,b,c,d
104 for i = 1 to 4
106 x = a
108 y = b
110 on i gosub 300,310,320,330
112 e = z
114 for j = 1 to 4
116 x = e
118 y = c
120 on j gosub 300,310,320,330
122 f = z
124 for k = 1 to 4
126 x = f
128 y = d
130 on k gosub 300,310,320,330
132 if z = 10 then gosub 400
134 next k
136 next j
138 next i
140 if s = 0 then print "Can't find!"
142 goto 100
300 z = x+y : return
310 z = x-y : return
320 z = x*y : return
330 z = x/y : return
400 s = s+1
402 print a;p$(i);b;p$(j);c;p$(k);d
404 return
406 end
メモ帳を起動させて、このコードをコピーし、メモ帳に貼り付けてみる。
このコードを、プログラム(アプリ)として動かすためには、ファイル名を付けてデスクトップに保存する必要がある。
そこで例えば、ファイル名を簡単な「a.bas」として保存する。
コマンドプロンプトからコードを実行するやり方
コンソール画面を開き(cmd.exe)、Chipmunk Basic を動かすやり方
- デスクトップでコマンドプロンプトを動かす。
chipmunkbasic
とタイプしてEnterキーを押す。
次のように Chipmunk Basic のコンソールが開く。
>
の右にBasicに対する命令をタイプする。
- ヘルプ
- 計算と結果
?
は、print と同じ、*
はかけ算だが、けた数が大きいと怪しい結果になってしまうことがある。
- プログラムファイル「a.bas」を Basic に読み込む。
load "a.bas"
- 実行
run
a.bas は、次のように「1 2 3 4」をひとつずつ入力する。
結果は、
1 + 2 + 3 + 4
1 × 2 × 3 + 4
の2通りが出力された。
練習問題 その他の組み合わせを探してみよう。例:4468
練習問題 このコードはまったく不十分で、人間の能力よりも低い。計算に自信がある人は、8884 3379 4416 4478 1349 3569 などで試してみよう。
ヒント:
もう少し改良したコードで実験してみた結果を示す。
この改良したコードでは、さきほどの結果に2つ追加され、合計4通りのパターンが出力された。
さて、その他の結果も示すと、次のようになった。明らかに間違った結果も出力されている。この間違いの原因がどこにあるかを探し、コードを修正しなければいけない。
コードを改良しながら、実験してみると、加減乗除で10をつくる問題はかなり奥が深いことがわかってきた。あまり単純にコードを書いたのでは、行き詰まりギブアップしてしまう。ここでは、これ以上は深入りしないことにする。
ともかく人間の知能を上回るようなコードを書くことは、このような単純な10をつくるという問題でさえかなり困難であることを体験した。
実行を中断するには、Ctrl C
。コントロールキーを押しながら C を押す。キャンセル。
- コードを確認するやり方
list
- 画面消去
cls
- 終了
exit
参考「Windowsのメモ帳を使ってキーボードからコンピュータの中へ入る!」
花びらを数える
1,1,2,3,5,8,13,21,34,55 ...
この数列は、1番目の項が1、2番目の項が1と定義され、3番目以降は、前項と前々項の和となっている。
練習問題 (A)(B)の花びらに数列 1,1,2,3,5,8,13 ... ― の一部 ― を見つけることができるか。
(A)
(B)
練習問題 将来希望する年収が350万円くらいとすれば、それを超えるのは、この数列の何番目か?
フィボナッチ数列
dim f(30)
f(1)=1:f(2)=1
print 1,f(1):print 2,f(2)
for i=3 to 30
f(i)=f(i-1)+f(i-2)
print i,f(i)
next i
end
1から30番目までのフィボナッチ数列
(参考リンク)