BASIC入門


 

BASICというインタープリター型のコンピュータ言語は、  CFORTRANのよう

コンパイル型の言語と違って、  一行ずつコンピュータが命令文を読み取ってプ

ログラムを実行して行きます。 従って、十進BASICのような開発環境では、デバッ

グ時に一行ずつ計算結果を追うことも可能となっています。これは、プログラミング

の初心者にとって大きなメリットになります。  工業高校などで、 まず最初にBASIC

言語を習う理由はこの為です。

 

以下に、十進BASIC を開いたときの画面を示します。 いろいろな機能があり、これ

らをすべて使いこなせるようになるには、 少し時間がかかると思います。ヘルプや

備え付けのサンプル・プログラムなどを見て勉強してください。

 

J-BASIC-GAMEN.GIF - 28,595BYTES

 

では、BASICの基本文法から始めましょう。 当ホームページで使用している十進B

ASICの文法に沿って進めます。

 

BASIC言語では、各行の先頭に行番号を付けます。 十進BASICの場合は、この番

号を省略することもできますが、 初心者の方はなるべく行番号を付けるようにして

ください。 その方がプログラムを整理し見易くできます。 ちなみに、 大文字と小文

は区別されませんので、プログラムを記述するときに注意してください。

 

 

1.INPUT文

 

変数に数値を入力するときに、 この命令文を使います。 記述のし方は以下のよう

になります。入力のための新たなウィンドウが開きますので、  数値をキーボードを

使って入力してください。

 

INPUT PROMPT 文字列式 : 変数名 ,  変数名 , ・・・

 

例) INPUT PROMPT " A , B = " : A , B

 

 

2.LET文

 

変数に数値を直接代入するときや文字式を通して代入するときに、  この命令文を

使います。記述のし方は以下のようになります。

 

LET 変数名 = 数値(または式)

 

例1) LET X = 0

例2) LET D = B^2 − 4*A*C

 

 

3.PRINT文

 

計算結果を画面上に表示させるときに、この命令文を使います。 新たなウィンドウ

が開いて、その中に計算結果が表示されます。 記述のし方は以下のようになりま

す。

 

PRINT 文字列式 ; 数値(または変数名) , 文字列式 

; 数値(または変数名) ・・・

 

例) PRINT " A= " ; A , " B= " ;  B

 

 

4.GOTO文

 

前後の行へ無条件に飛んでプログラムの流れを変えたいときに、この命令文を使

います。他のプログラム言語では、GOTO文の使用は禁止されていますが、BAS

ICの場合は自由に使えます。 20行から30行程度の短いプログラムでは、この命

令文を使うことで、 むしろ プログラム自体をコンパクトにできるメリットがあります。

ただし、あまり使い過ぎると無限ループの原因になり易いので、注意してください。

記述のし方は以下のようになります。

 

GOTO 行番号

 

例) GOTO 100

 

 

5.FOR〜NEXT文

 

指定回数だけ処理を繰り返したいときに、この命令文を使います。  回数は初期値

、終値そしてステップ値で決定されます。ただし、ステップ値が省略された場合は、

増加幅が1に自動的に設定されます。記述のし方は以下のようになります。

 

FOR 制御変数=初期値 TO 終値 STEP 増加幅(減少幅)

・・・・・・・・・・

NEXT 制御変数

 

FOR N=0 TO 100 STEP 2

・・・・・・・・・・

NEXT N

 

上記の例の場合は、初期値が0、終値が100そしてステップ値が2ですから、繰り

返し数は(100−0)/2+1=51となります。 FOR〜NEXT文の場合は、 回数指

定のループですが、DO WHILE〜LOOP文やDO〜LOOP UNTIL文は条件

指定のループです。

 

 

6.IF文

 

条件によってプログラムの流れを変えたいときに、この命令文を使います。IF文に

いろいろなタイプがありますので、 目的に応じて使い分けてください。 基本的な

述のし方は以下のようになります。

 

IF 条件式 THEN 処理

 

条件式を満足していれば、THEN以下の処理を行い。 条件式を満足していなけれ

ば、次行へと処理が移ります。

 

例) IF A>0 THEN GOTO 10

 

 

7.DEF文

 

関数を定義したいときに、この命令文を使います。 記述のし方は以下のようになり

す。

 

DEF 関数の定義式

 

例) DEF F(X,Y)=X^2+Y^2

 

 

8.REM文

 

プログラム内にコメントを挿入したいときに、この命令文を使います。行末までがコ

メントとして見なされます。記述のし方は以下のようになります。

 

REM コメント

 

例) REM 素数を求めるプログラム

 

 

9.END文

 

プログラムの一番最後におきプログラムを終了させるときに、この命令文を使いま

す。記述のし方は以下のようになります。

 

例) END

 

 

以上の命令文がBASIC言語においてよく使われるものですが、 ここからはより複

雑なそして大規模なプログラムを作る上で役に立つ命令文を、 具体的な使用例と

ともに示します。

 

 

10.配列

 

変数を多数使いたいときや行列の要素を表したいときなどに、  この命令文を使い

ます。記述のし方は以下のようになります。

 

一次元の配列の宣言

DIM A(10)

二次元の配列の宣言

DIM B(2,2)

三次元の配列の宣言

DIM C(3,3,3)

 

ここでは、3X3行列の逆行列を求めるプログラムを作ってみます。  その基本は行

列の各要素を二次元の配列を使って表現することです。 まずは、元の行列を読み

込む部分から作成してみます。

 

以下のプログラムにおいて、 行番号30から80までが元の行列Aの入力部分です

。そして、行番号150が行列式Aの値の計算で、行番号210から290までが行列

B(つまり、逆行列)の計算部分です。 これらの計算部分は列挙的に書いています

が、  より一般的なNXN行列への応用を考えたコンパクトな書き方は別な所で説明

します。

 

PROGRAM-GYAKU-GYORETU-KEISAN.GIF - 13,319BYTES

 

上のプログラムにおいて、行番号170から190までは行列式Aの値が0の場合の

処理です。IF文を使って、値が0の場合(逆行列が存在しない場合)はGOTO文経

由で強制終了するようにしています。

 

未知数3の連立方程式を解くプログラム

 

 

11.組み込み関数

 

自ら関数を定義しなくても、十進BASICでは予めソフト上で定義され組み込まれた

関数を使うことができます。 高校の教科書で良く出てくる三角関数や指数・対数関

数、 そして教科書ではあまり出てこない特殊なものまでいろいろ揃っていますので

使ってみてください。

 

ここでは、宝くじでの利用を考えて、 ランダムに数字を選ぶプログラムを作ってみ

ます。使う関数はRND関数とINT関数です。 RND関数は0以上で1より小さい実

数をランダムに自動生成する関数です。 また、INT関数は実数から小数点以下の

数字を取り除いて、整数部分のみを抽出する関数です。

 

以下のプログラムでは、入力する数字を変えるだけでナンバーくじでも、サッカー

くじでも対応できるようにしました。 行番号40で入力する変数Cの値を、 とおくと

サッカーくじになり、とおくとナンバーくじになります。

 

PROGRAM-TAKARA-KUJI.GIF - 5,342BYTES

 

行番号10にあるRANDOMIZE文は、 プログラムを実行するたびに違う数字の

組を選択させる為の命令文です。

 

ナンバーくじとして利用した場合の結果を以下に示します。1から36までの数字か

ら異なる6つの数字を選ぶことになります。

 

CAL-TAKARA-KUJI.GIF - 3,042BYTES

 

サッカーくじとして利用した場合の結果を以下に示します。 0、1、2の数字から5つ

の数字を選ぶことになります(ミニサッカーくじに対応)。

 

CAL-TAKARA-KUJI2.GIF - 2,883BYTES

 

ネット上のセキュリティーを高める上で、 定期的なパスワード変更は今や必須事項

となっています。 とは言え、新たなパスワードを考えるのに煩わしさを覚える方も多

いかと考えます。  そういう方は、以下のパスワード自動生成プログラムを使って

みてください。数字英大小文字を使って、20文字までのパスワードを自動生成

することができます。勿論、プログラムを自分で修正すれば、オリジナルなものに変

えることも可能です。

 

重み付けされたサッカーくじの自動生成プログラム

パスワードを自動生成するプログラム

あみだくじを自動生成するプログラム

迷路パズルを自動生成するプログラム

 

課題(その1)

 

自分が好きでない数字やアルファベットをパスワードから除き、テキスト画面ではな

くグラフィックス画面に、 大きく見易く複数の候補を表示するプログラムを作成して

ください。

 

 

12.外部副プログラム

 

メインプログラムに多くの機能を直接入れようとすると、  メインプログラム自体が

大規模になるだけでなく大変見難くなります。そこで、機能別に外部副プログラム

を作成してメインプログラムの外に置いてやれば、これらの点を一遍に解消できま

す。 また、繰り返し使いたい機能がある場合でも、その都度に外部副プログラムを

呼び出して使えれば、 プログラムの効率化にもなります。 内部副プログラムを利

用するという方法もありますが、 その場合は、メインプログラム自体の大規模化は

避けられません。

 

メインプログラム

DECLARE EXTERNAL SUB 外部副プログラム名

CALL 外部副プログラム名(実引数名、・・・)

END

EXTERNAL SUB 外部副プログラム名(仮引数名、・・・) 

END SUB

 

速読強化の為のプログラム

暗算訓練用のプログラム

 

 

13.ファイル処理

 

十進BASICで計算した結果を他のソフトで利用したい場合は、データをファイルに

一度落としてから使うと便利です。  また、 他のソフトで作成したデータをファイルを

通して読み込み、十進BASICでいろいろと活用したい場合などもあります。テキス

トファイルへの書き込みやテキストファイルからの読み込みは、以下のように行い

ます。

 

<書き込みの場合>

 

OPEN #経路番号: NAME ファイル名

ERASE #経路番号

PRINT #経路番号: 変数名;”文字列”;変数名・・・

CLOSE #経路番号

 

例) LET F$="C:¥Documents and Settings

¥eisai−juku¥デスクトップ¥basic¥data.txt"

OPEN #1: NAME F$

ERASE #1

PRINT #1: X;",";Y

CLOSE #1

 

<読み込みの場合>

 

OPEN #経路番号: NAME ファイル名

INPUT #経路番号: 変数名,変数名・・・

CLOSE #経路番号

 

例) LET F$="C:¥Documents and Settings

¥eisai−juku¥デスクトップ¥basic¥data.txt"

OPEN #2: NAME F$

INPUT #2: A,B

CLOSE #2

 

上記において、経路番号は正の整数で指定します。 ERASEという命令文は、

ァイル内容を消去する命令文です。  書き込むファイル名を間違わないようにしてく

ださい。  そして、 読み込みたいファイルのデータ・フォーマットにも注意が必要で

す。プログラム内の記述と合ってないといけません。

 

表計算ソフトとの連携

数独(簡易版)の画面表示プログラム

 

 

14.アプリケーションの起動

 

十進BASICから他のアプリケーションを直接起動することもできます。その命令文

は以下のようになります。

 

EXECUTE 実行ファイル名 WITH (ファイル名)

 

例えば、マイクロソフトメモ帳を起動する為には、

 

EXECUTE "C:¥WINDOWS¥system32¥notepad.exe"

WITH ("C:¥Documents and Settings¥eisai−juku

¥デスクトップ¥basic¥test.txt")

 

と記述します。ファイル名は絶対パス名で指定してください。

 

ホームページ作成ソフト(簡易版)

 

 

 

 

関連ページへのリンク

 

2Dグラフィックス  3Dグラフィックス  アニメーション

 

 


 

Topへ