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

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

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

文系でもわかるBASIC入門

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

 

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

 

 

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

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

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

 

 

Division by Zero (/0)

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

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

対処法:
値が0にならないようにする。または
値が0のとき、判断文(IF)などを使って計算しないようにする。

 

 

Duplicate Definition

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

宣言した配列を再度宣言したときに発生するエラー

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

 

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

配列変数を使った後で宣言した場合

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

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

 

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

繰り返し処理の中で配列変数宣言をした場合

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

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

 

 

Duplicate label

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

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

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

 

 

NEXT without FOR

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

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

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

 

 

Illegal function call

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

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

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

 

 

Out of DATA

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

READで読むべきデータが無いときのエラー

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

 

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

READで読むべきデータが無いときのエラー

このようなとき、データの終わりにエンドデータを用意する。

エンドデータを用意する

エンドデータを読み取ったら、それ以降の読み取りを中止する。
エンドデータは、処理中に使わない数を使用すること。

 

 

RETURN without gosub

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

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

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

 

 

Subscript out of range

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

配列変数の宣言を超えた添字を使った時のエラー

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

 

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

配列変数の添字に変数を使う場合は注意

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

 

 

Syntax error

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

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

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

 

 

Type mismatch

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

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

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