初心者のためのゲームプログラミング入門

プログラミングとゲームの杜

初心者のためのプログラミング入門 & ゲームプログラムの作り方入門

文系でもわかるBASIC入門

21.エラーの対処法を覚えよう

プログラミングをしていると必ずエラーと遭遇(?)します。
これは避けて通れないものです。
幸いこのBASIC言語は、エラーの発生箇所や原因が比較的分かり易いです。
エラーの内容を理解して、その解決方法を学びましょう。

 

1. エラーメッセージ一覧(一部)

この講座で使用しているツールのエラーメッセージを一部紹介します。
ここに無いものはツールのヘルプや、ネットで検索しましょう。

なお、エラーメッセージの後ろにある数値は、
エラーが発生している行番号を示している場合が多いです。

 

2. Division by Zero (/0)

ゼロ(0)で割ったときに発生するエラー。

division by zero ゼロで割れない

対処法:
値が0にならないようにする。または
値が0のとき、判断文(IF命令)などで計算を行わない。

 

3. Duplicate Definition

一度宣言した配列を、再度宣言したときに発生するエラー。(これを二重定義という)

duplicate definition error 二重定義

対処法:
二重定義をしない。

 

以下のように、二重定義をしているか見た目に分からない場合があるので注意。

配列変数の二重定義のエラー

原因:
配列変数は、宣言してなくても添字10までなら使用できる。
配列変数を使用すると宣言をしたものとして扱われる。

対処法:
添字10以内の配列変数でも宣言をして使用中であることを明確にする。

 

繰り返し行われる処理の中で宣言をしている場合も注意が必要です。

繰り返し処理の中の配列変数宣言はエラーになる

原因:
繰り返し処理の中で、配列変数が二重定義されてしまう。

対処法:
繰り返し処理の中に、配列変数の宣言を行わない。

 

4. Duplicate label

プログラム中に同じラベル名を2つ以上設定したときに発生するエラー。

同じラベル名を2つ以上設定するとエラー

対処法:
同じラベル名を付けない。

 

5. NEXT without FOR

FOR と NEXT が正しく対応していないときのエラー。

FOR と NEXT は正しく対応させる

対処法:
変数名の付け間違いに注意する。

 

6. Illegal function call

命令や関数の使い方を間違えているときのエラー。

illegal function call 命令や関数の使い方を間違えている

対処法:
マニュアルをよく読んで、正しくパラメータをセットする。

 

7. Out of DATA

DATA行中のデータ数が足りず、READで読むべきデータが無いときのエラー。

out of data 読み込むデータが足りない

対処法:
データの数だけREADが実行されるようにする。

 

例えば次のようにデータがあるだけ読み込みたいとき、単純に読み込むとエラーとなる。

データ管理のテックニック

そこで、データの終わりとして認識する値(エンドデータ)を用意する。

basic エンドデータを用意してデータの終わりを調べる

エンドデータを読み取ったら、それ以降の読み取りを中止する。

 

8. RETURN without gosub

GOSUB と RETURN が正しく対応していないときのエラー。

return without gosub サブルーチンとして呼び出されていないのにリターンしようとした

対処法:
サブルーチンとして使用する箇所をしっかりと区別し、その範囲内でのみ
RETURNを使うようにする。

 

9. Subscript out of range

配列変数の添字の値が宣言したときの範囲から外れているときのエラー。
ちなみに、配列変数の宣言が省略されている場合の添字の範囲は10までとなる。

配列変数の添字オーバーのエラー

対処法:
配列変数の宣言時の添字を確認して、使用時にその範囲を超えないよう注意する。

 

次のように、別の変数を使って添字を管理する場合、オーバーし易いので注意。

配列変数の添字はオーバーさせないように注意

対処法:
宣言したときの範囲をオーバーしないように判断文でチェックする。

 

10. Syntax error

文法のミス、または、スペルミスのときのエラー。

syntax error スペルミスのときのエラー

対処法:
ヘルプやネットで正しいスペル、正しい命令の使い方を確認する。

 

11. Type mismatch

異なる型同士で処理(演算)を行ったときのエラー。

type mismatch 異なる型同士で処理するとエラーになる

対処法:
異なる型同士の処理を行わない。
数値と文字列を合わせて処理しなくてはならない場合、どちらかの型に合わせて行う。
数値を文字列へ変換する関数(または文字列を数値に変換する関数)を使用する。