『これから始める BASIC』を開く (4027文字)
『これから始めるBASIC』(朝倉いづみ著 技術評論社)は、私がC言語を一応使えるようになりその後Delphi(でるふぁい)を使って業務用アプリケーションを作ったりしていた頃、廃棄予定の古いCUIのパソコンがたくさん職場の倉庫に置いてあるのを見て「BASICマシンとしてならまだ使えるだろうに。なんか勿体(もったい)ない。」と思ったことから、ちょっとBASICの本を読んでみようと思い買ったものです。
この本はかなり古いと思いますが、忙しさにかまけて読むのを中断してかなりの期間が経過しているので、私にとっては初めて読むも同然です。
今までずっと忘れていたのですが、たまたま書棚の奥で見つけたのでちょっと見てみたいと思います。
『これから始める BASIC』(以下『これB』といいます。)の目次では、第1部入門準備編、第2部BASIC基礎編、第3部プログラム応用編に分かれていますが今回は、第2部BASIC基礎編(59ページから245ページ)の中の第7章いろいろな機能の7.2データをまとめて扱う(配列)(163ページから178ページ)だけを見ることにし、他の部の内容は必要に応じて参照します。
163ページにはプログラム7-7(行番号100から180までの9行)が示されています。
⚫プログラム7-7
100 '平均点
110 INPUT "名前=";NAME$
120 INPUT "国語=";KOKUGO
130 INPUT "数学=";SUGAKU
140 INPUT "英語=";EIGO
150 HEIKIN=(KOKUGO+SUGAKU+EIGO)/3
160 PRINT NAME$;"の平均点=";
170 PRINT USING "###.##";HEIKIN
180 END
このプログラム7-7を解釈していきます。
各行の先頭に、100から180の番号が付いていますが、これは行番号といいコンピュータはこの行番号の小さい順にプログラムを実行していきます。
行番号はプログラム実行順序を示しているので、このプログラムの場合1から8と付けてもいいですし、10000から18000と付けてもいいです。
ただ、1から8というようにひと桁の行番号を付けると、行を追加したいときに困るので、少なくてもこのプログラムにように100からはじめて10単位で増やしていくという方がいいでしょう。
このプログラムで行番号100と110の間にいち行挿入したいときは、行番号101とすれば(109でもいいです。)100と110の間に割り込ませることができます。
私の記憶では、BASICには行番号の小さい順にプログラムの各行を並べ替えたり、先頭の行番号を揃えて振り直す(101を110にして以下120、130・・・と行番号を付け直す)機能があるはずなので、すぐ綺麗な行番号とプログラマが想定したとおりのプログラムに直るはずです。
プログラムに使うアルファベットは、半角文字を使います。これは大文字でも小文字でもいいです。スペースも半角で入力します。
BASICの予約語、変数、定数の後には必ず半角スペースが必要です。
上記のプログラムでは、行番号の次にも半角スペースを入れていますが、これは視認性をよくするため(見やすくするため)です。
で、予約語ですが、これはコマンド(コンピュータに画面上から直接命令するときに使います。RUNなどがそうです。)、関数(指定したある値に対して指定した演算を行って結果を得る命令です。数学で使う関数と似ていますがちょっと違います。)、演算子(*は乗算、/は実数の除算、¥は整数の除算、MODは整数の除算のあまり、+は加算、-は減算 の演算子ですが、他にもたくさんあります。)などをいいます。
プログラムの終わりにはEMDと入力します。このEMDにも行番号を付けます。
「=」は、数学で使う等号(イコール)ではありません。これは、「=」の右側のものを「=」の左側に代入するという意味です。だから、変数iについて i=10 とあったら、それは変数iに10を代入するという意味です。結果的に変数iには10の値が格納されますが、iに値は常に10というわけではありません。この行の下の別の行でi=20とあったら、変数iの値は20になります。
コンピュータの入力装置の一つであるキーボードは、英文タイプライターを使っていたため、記号の流用がたくさんあります。現代なら、混乱しないような記号を使うことが可能ですが、コンピュータ初期のころは仕方ありませんでした。その初期の制約が現代でも呪いのように私たちを困らせていますが、「ああそうか」と扱い方に慣れればこの呪いからはすぐ開放されます。
「変数i」が出たので、変数について説明します。
変数というと、数学の「独立変数x」とか「従属変数y」を連想しますが、プログラムでいう変数は「あるデータを格納するメモりの領域」で、数学の場合と似ていると言えます。ただ、プログラムはコンピュータの上で動くので、プログラムで使用する変数もコンピュータのメモり上に存在することになります。メモりは半導体で作られている有限の資源ですから、どの変数がどの程度の大きさのメモり領域を使用するのか予め決めておかないと経済的な使用ができません。この経済性はプログラムの実行速度にも影響するのでここは神経質に考える必要があります。とはいえBASICでの変数管理はおおらかですので、今のうちに慣れておきましょう(とはいえ、今からBASICをやる人などいないでしょうが。)。
そういうわけで、変数とメモりとの関係については、このくらいにします。
$、%、!、#、の四つの記号について説明します。
$は文字型の変数に付けます。仮に変数Aがあるとして、「A$」という感じです。変数Aは文字を入力する変数になります。
A%とすると、変数Aは整数型となります。Aは整数を入力する変数になります。
A!とすると、変数Aは単精度実数型になります。Aは3.1415などの少数を扱う変数になります。一般に「!」は省略されます。
A#とすると、変数Aは倍精度実数型になります。Aは有効桁数の多い少数を扱う変数になります。
ということなんですが、仮にA=1とした場合、つまり変数のデータ型を省略したときは、変数Aは整数を格納するにもかかわらず、単精度実数型として扱われることになります。
また、A%=3.14とすると、変数Aは整数型ですから、Aには3だけが格納されることになります。そうなると、計算結果が大幅に変わってしまいます。
では、プログラム7-7 をいち行ずつ見ていきます。
100 '平均点 「平均点」というプログラムの用途というか名前をコメント文で表しています。「'」(シングルクォーテーション)か、「REM」に続いて記述します。ここでは「'」を使っています。
コメントは意外に重要です。「自分で作ったプログラムならどんな内容なのか覚えているさ。」と思ったら大間違いで、たいてい驚くほどの速さで忘れてしまいます。「なんでこんな風にしたんだっけ?」なんてわからなくなることは日常茶飯事です。
110 INPUT "名前=";NAME$ INPUTは、キーボードから入力されたデータを変数に入力します。変数はNAMEで、$が付いているので文字列型です。
120 INPUT "国語=";KOKUGO これも110と同様ですが、変数KOKUGOには、$などの記号が省略されているので、!がついてえいると見なします。つまり、KOKUGO!ということになります。国語の点数を格納します。
130 INPUT "数学=";SUGAKU は120と同じで、数学の点数を変数SUGAKUに格納します。
140 INPUT "英語=";EIGO は130と同じで、英語の点数を変数EIGOに格納します。
150 HEIKIN=(KOKUGO+SUGAKU+EIGO)/3 は国語と数学と英語の点数の平均点を計算して変数HEIKINに格納します。
160 PRINT NAME$;"の平均点="; は「(110で入力した名前の人の)平均点=」と画面表示します。実際の平均点は150で計算済みですが、次の170の書式で出力します。
170 PRINT USING "###.##";HEIKIN はPRINT USING命令を使っています。PRINT USING命令は文字列や数値を指定した書式で出力します。"###.##"; は書式制御文字列になります。#は数値を出力する桁数を指定します。.(ピリオド)は小数点の位置を指定します。ここでは、整数部が3桁で小数部が2桁の数値になります。
このプログラムの目的はある人の三科目の平均点の計算ですから、三科目とも百点の場合は三百点ですし、端数が付く場合でも少数以下は二桁で十分だろうという考えでこのような書式にしています。
180 END はプログラムの終わりを示しています。
以上BASICプログラムの初歩的な説明です。
実際にBASICを動かすためには、パソコン環境を整える必要がありますし、プログラム知識もこれだけでは全く不足です。
しかし、今からBASICをやろうという人はいないでしょうし、同じやるならWindows上で動く現代のプログラム言語を覚えるべきでしょう。
私は、今回BASICの本を読んでみて、「これをビジネスで使うのは生産性の面でしんどいなぁ。」と思いました。廃棄されつつあるパソコンの廃物利用としてなら何か使えそうですが、そこに人的エネルギーを使うのは、仕事として考えるなら無駄以外のなにものでもありません。趣味としても奨められないと思います。
古いパソコンはやはり廃棄処分が適当なのかも知れません。