ぼくのデジタルライフ

ダラダラ書いてる備忘録的な何か

そうだ、BASICでプログラムを作ろう。

※本ページには、プロモーション(広告)が含まれています。

f:id:computer-life:20150620164944j:plain

最近IchigoJamなどで「BASIC」は再び人気になってきてます。

今回は、昔つくったBASICのプログラムの中からいくつか紹介していこうと思います。なんとなくつけた解説もあるので良かったら参考にしてください。

BASICについてのおさらい

BASICの名前は「Beginner's All-purpose Symbolic Instruction Code」(和訳:初心者向け汎用記号命令コード)からきています。

詳しく知りたい方は、Wikipediaが参考になります。

BASIC - Wikipedia

BASICの歴史は、誕生から50年以上立っているらしいです。

歴史あるプログラミング言語ですね。

gigazine.net

まずは準備から

PC上でBASICを実行するには、実行環境が必要になります。

今回、BASICを実行するのに使ったソフトは、「N88互換BASIC for Windows95」です。Windows95時代から使っているので、個人的にこれが一番使いやすいです。古めのソフトですが、Windows10でもきちんと作動してくれます。

追記 2018/4/8

MBASIC」で動作確認しました。こちらもおすすめです。

MS Small BasicやTBasicでは、プログラムの一部が動作しませんでした。

BASICのサンプルプログラム

僕が、昔作ったプログラムを交えながらサンプルを載せておきます。僕が分かる範囲で、簡単に解説を入れておきます。間違っていたらごめんなさい。

ここで紹介するプログラムは、「N88互換BASIC for Windows95」で作動確認済みのものです。

Hello Worldを表示させてみる

f:id:computer-life:20180408161900p:plain

まずは、定番のやつから。

10 PRINT "Hello World"
20 END

  • PRINTは、画面に文字を表示するときに使います。
  • ENDは、プログラムの終了を宣言するときに使います。プログラムの最後の行に記述します。

行番号について

行番号はプログラムの実行順序を示すもので、左端に10とか20とか書いてある数字のことです。基本的に1から始めても、100から始めても動作します。この記事では広く使われてきた10刻みの行番号で表記しています。これは命令と命令の間に新たに命令を加えたくなったとき中間の数の行番号(15など)が使えるためです。

名前を尋ねてくるプログラム

f:id:computer-life:20180408161913p:plain

名前をたずねて、ようこそ◯◯さんと表示するプログラムです。

10 INPUT "お名前は";NAMAE$
20 PRINT "ようこそ ";NAMAE$;"さん"
30 END

  • INPUTは、入力を求めるときに使います。このプログラムでは、変数NAMAE$に入力した文字列を記憶させます。
  • PRINTは、画面に文字を表示するときに使います。先程記憶した変数NAMAE$を呼び出して表示させています。

ラインアート

f:id:computer-life:20180408161926p:plain

青と緑色のラインアート的なやつです。

10 SCREEN 3
20 CLS 3
30 FOR A=0 TO 639 STEP 10
40 LINE(0,0)-(A,399),1
50 NEXT A
60 FOR A=0 TO 399 STEP -10
70 LINE(0,399)-(639,A),2
80 NEXT A
90 FOR A=639 TO 0 STEP -10
100 LINE(639,399)-(A,0),4
110 NEXT A
120 END

  • LINEは、線を引く時に使います。色の指定については次のプログラムで触れます。例:LINE(座標)-(座標),色
  • CLS 3は、画面上にある文字と絵を消すときに使います。
  • FORNEXTは、FORからNEXTまで指定された回数繰り返すときに使います。

FOR、NEXTの使い方

「FOR A=0 TO 639」「NEXT A」、この2つの文字列は選択した範囲のプログラムを指定した回数繰り返し実行するものです。セットで覚えておくと良いでしょう。

簡単に説明するとこんな感じ。

FOR A=0 TO 639」は、Aが0から639になるまで繰り返す。
NEXT A」は「A」に1を加算して先程の「FOR」に戻る。

文字が下にダーッって流れてくるやつ

f:id:computer-life:20180408161937p:plain

文字が下にダーッって流れていくやつです。

10 CONSOLE ,,,1
20 CLS
30 X=INT(RND(1)*70)
40 Y=INT(RND(1)*22)
50 C=INT(RNT(1)*6) +5
70 LOCATE X
80 COLOR 5
90 PRINT " 好きな文字 "
100 GOTO 30
110 END

  • CONSOLEは、画面の初期設定(表示モード等)をするときに使います。
  • GOTOは、指定された行までジャンプするときに使います。
  • COLORはディスプレイに表示される文字色を指定するときに使います。ここでは、「COLOR 5」と宣言しているので水色で文字が出力されます。数字を他のものに変更することで他の色にできます。

 COLORの使い方

ここでは、はじめに「CONSOLE ,,,1」と宣言しているのでカラーモードで利用できます。指定できるカラーはこんな感じです。

  • 0(黒色)
  • 1(青色)
  • 2(赤色)
  • 3(紫色)
  • 4(緑色)
  • 5(水色)
  • 6(黄色)
  • 7(白色)

割り算プログラム

f:id:computer-life:20180408161947p:plain

割り算をするプログラムです。

10 INPUT "割り算をします。割られる数を入力してください";APPLE
20 INPUT "割る数を入力してください。";ORANGE
30 WARI=APPLE/ORANGE
40 SHOU=APPLE\ORANGE
50 AMARI=APPLE MOD ORANGE
60 PRINT"割り算の答えは";WARI
70 PRINT"整数で表すと";SHOU;"あまり";AMARI
80 GOTO 10
90 LEST
100 END

  • INPUTは、入力を求めるときに使います。プログラムの二行目では、INPUTで入力した文字を変数ORANGEに記憶させています。
  • APPLEORANGEWARISHOUAMARIはそれぞれ入力したデータを記憶している変数名です。他のものに変更してもOKです。
  • PRINTは、画面に文字を表示するときに使います。プログラムでは変数WARISHOUAMARIに記憶されたデータを読み出して表示させています。

三角形の面積計算プログラム

f:id:computer-life:20180408162000p:plain

三角形の面積を計算するプログラムです。

10 CLS
20 LOCATE 0,0
30 PRINT "三角形の面積を計算します"
40 LOCATE 35,9
50 INPUT"底辺は";TEHEN
60 LOCATE 35,11
70 INPUT"高さは";TAKASA
80 LOCATE 25,15
90 PRINT"その三角形の面積は";TEHEN*TAKASA/2;"です"
100 END

  • INPUTは、入力を求めるときに使います。TEHENやTAKASAは変数で入力した値を記憶させています
  • LOCATEは、PRINT文の位置を指定するときに使います。わかりやすいように作ったので、なくてもOKです。例: LOCATE (X座標),(Y座標)
  • PRINTは、画面に文字を表示するときに使います。プログラムでは変数TEHENやTAKASAに記憶された値を呼び出して表示しています。

最後に

BASICは初心者向けの言語なのでできることが少ない反面、直感的にプログラムが打てます。最近、小中学生はScratchなどでプログラミングを学習するようですが、その次のステップとしてBASICのようなプログラミング言語を取り入れてみてもいいのではないかと思いました。BASICはいまこそ再注目されるべき存在なのかもしれませんね。

もし、他のBASIC実行環境で「これ動いたよ!」ってプログラムがあったらコメントで教えてください。