JIS Full BASIC への移行にあたって

JIS Full BASIC への移行にあたって
情報技術検定試験2・3級で選択される BASIC 言語に関しては、平成27年度前期「第 54 回」
検定試験より、旧 BASIC 言語による出題は終了して JIS Full BASIC のみの出題となります。
JIS Full BASIC 言語による受検と指導に向けて、移行に伴い注意すべき事柄を整理しました。
1.行番号について
JIS Full BASIC 上での行番号の扱いは、旧 BASIC に対して大きく変更された。
・行番号は、GOTO 文の飛び先として使用されることが多かったが、構造化により GOTO
文が使われなくなったため、不要となった。(本問題集でも GOTO 文は使用してない。)
・行番号を使用したプログラム編集機能は無くなった。
・行番号を付けないで直接命令を実行する機能(ダイレクトコマンド)は削除された。
※ しかし JIS 上では行番号が残されているため、本問題集では付けることとした。
2.代入文に付けられる“LET”について
JIS では、変数に値を代入する場合先頭に“LET”を付けるように定めている。プログラミン
グ初心者に、代入記号“=”を意識させるために定めていると思われるが、実際にプログラムを
組む時は省略できる場合が多い。
3.注釈(コメント)
行末までの注釈は、「‘」記号から「!」に変更された。
4.入力を促す文字を表示する場合
従来の「INPUT “表示する文字”;変数」は「INPUT PROMPT “表示する文字”:
:変数」
と変更されている。(「 PROMPT 」と、“表示する文字”の後の記号「:」コロンに注意)
5.PRINT USING 文について
出力書式の後に書く記号が、“;”(セミコロン)から“:”(コロン)に変更された。
使用例:
PRINT USING “#.####”:A
6.剰余の演算について
MOD 演算子が無くなったため、「MOD 関数」を使用する。使用例:
LET X = MOD ( A,B )
7.END 文について
END 文は、主プログラムの最後を意味するようになった。(旧 BASIC では実行の終了を意味した)
したがって、END 文以降に書かれるのは、外部関数の定義(EXTERNAL FUNCTION ~
END FUNCTION)などで、DATA 文は END 文の前に書く必要がある。
8.マルチステートメントについて
1行に複数の文(命令)を記述するマルチステートメントは使用できなくなった。
代わりにブロック構造が使用できるようになった。
9.構造化プログラミングと制御構造
JIS Full BASIC の大きな変更点として、構造化プログラミングに対応した事による制御
構造の変化が上げられる。
9-1 時代的な背景
1960年頃までは流れ図(フローチャート)を用いたプログラム設計が行われ、GOTO 文
も広く使用されていた。その後、大規模なプログラムが作られる機会が多くなると、プログラム
の「書きやすさ」、「誤りの入り難さ」、「理解しやすさ」が追及されるようになり、その対策
として構造化プログラミングが提唱された。
9-2 構造化プログラミングについて
構造化プログラミングでは、プログラムの好ましい構造として、手続き呼び出し(外部関数)
の他に、順次・分岐・反復の3つの制御構造が上げられている。
(1)順次
プログラムに記された文(命令)の順に、処理を行なう。
(2)分岐
ある条件が成立する場合 処理 A を、それ以外は処理 B を行なう場合に使用する。
旧 BASIC では
IF 条件不成立 THEN 飛び先 行番号①
条件が成立した時の処理
・・・
GOTO 行番号②
行番号① 条件不成立の時の処理
行番号② 次の処理
と記述してきたが、JIS Full BASIC では GOTO 文を使用せずに簡潔に表現される。
IF 条件 THEN
条件が成立した時の処理
・・・
ELSE
条件不成立の時の処理
・・・
END IF
次の処理
(3)反復
一定の条件のもとで、処理を繰返す時に使用する。
回数指定の繰返し、判断を繰返しの最初の部分で行う「前判定繰返し」、判断を繰返しの
最後の部分で行う「後判定繰返し」が該当する。
①回数指定の繰返し
決められた回数だけ処理を繰返す FOR ~ NEXT 文 は、旧 BASIC からの変更点はない。
②前判定繰返し
旧 BASIC では IF 文を使用して
行番号① IF 繰返し条件外 THEN 行番号②
繰返し処理
・・・
GOTO 行番号①
行番号②
次の処理
と記述していたが、
JIS Full BASIC では次のようになる。
DO WHILE 繰返し条件
繰返し処理
・・・
LOOP
③後判定繰返し
旧 BASIC では IF 文を使用して
行番号① 繰返し処理
・・・
IF 繰返し条件 THEN 行番号①
次の処理
と記述していたが、
JIS Full BASIC では次のようになる。
DO
繰返し処理
・・・
LOOP WHILE 繰返し条件
次の処理
これらの制御構造は、今日使用されているプログラミング言語には広く取り入れられており、
大きなプログラムを作る時だけでなく、
プログラムを学習するにあたって非常に重要な要素とな
っている。
(4)字下げ(インデント)
繰返しの範囲や、IF 文における条件が成立(又は不成立)した時の処理のように、制御構
造の内側にある文(命令)に対しては、書き始めを右側に寄せてプログラムの構造を見やすく表
記する。(字下げは、プログラムの実行とは関係ない)
10.関数について
情報技術検定試験2級の出題範囲として扱われてきた「サブルーチン」に代わり、C言語の
関数と同等の機能を持つ「外部関数」を使用する。
JIS Full BASIC での外部関数の働きを次に示す
主プログラム
DECLARE EXTERNAL FUNCTION 関数名
・・・
関数の呼び出し
・・・
END
外部関数
EXTERNAL FUNCTION 関数(引数 1、引数 2、・・)
・・・
LET 関数名 = 値
END FUNCTON
・主プログラムの先頭に DECLARE EXTERNAL FUNCTION 文を書き、外部関数の使用を宣言する。
・主プログラムの中から外部関数を呼び出す。主プログラムから関数に対して、「引数」として
値または値を入れた変数を渡し、関数からは「戻り値」を受け取る。
・主プログラムは、END 文で終る。
・主プログラムの次に、EXTERNAL FUNCTION 文で始まる外部関数を書く。
・外部関数の戻り値は、関数と同じ名前の変数に、値を代入することで決まる。
・外部関数は、END FUNCTON 文で終わる。
関数の使用例を次に示す。
主プログラム
100 DECLARE EXTERNAL FUNCTION TOTAL
・・・
150 LET GOKEI = TOTAL(1,10)
・・・
190 END
外部関数 TOTAL
500 EXTERNAL FUNCTION TOTAL( STA, STP )
510
LET WA = 0
520
FOR CNT = STA TO STP STEP 1
530
LET WA = WA + CNT
540
NEXT CNT
550
LET TOTAL = WA
560 END FUNCTION
100:主プログラム内で使用する外部関数 TOTAL を、使用に先立ち「宣言」する。
150:関数 TOTAL に、引数1と10を渡して処理結果を得る。結果は変数 GOKEI に格納。
190:END で主プログラムは終る。
500:外部関数の先頭の記述。外部関数は EXTERNAL FUNCTION で始まる。関数名と、関数側で
値を受け取る変数(「仮引数」)STA、STP を記述する。
510~540:関数内部の処理。関数内部で使用する変数は、関数外のプログラムに影響を及ばさな
い。(主プログラムや他の関数で同じ名前の変数が使われても、値は書き換えられない)
550:関数内部での処理結果を、関数名と同じ名前の変数 TOTAL に代入することで、主プログラ
ムに返す値(関数の値、「戻り値」)が定まる。
560:外部関数は END FUNCTION で終る。
11.3級問題集に関して
3級問題集については、平成26年度版において JIS Full BASIC 言語に関して変更された内容
を示している。なお、旧 BASIC に関する部分は、全国工業高等学校長協会 HP 上に載せてある。
47頁:(2)変数と変数名
変数への代入文は、先頭に“LET”を付ける。
48頁:(4)算術演算
剰余の演算は、MOD 演算子が使用できなくなったため「MOD 関数」を使用する。
49頁:(5)データの入出力
データの入力で、入力を促す文字を表示する場合、
従来の「INPUT “表示する文字”;変数」は「INPUT PROMPT “表示する文字”:
:変数」
となる。
56頁:5.2制御文
IF 文や繰返しに関する「制御文」は、JIS Full BASIC が構造化プログラミングに対応したため、
大きく変更されている。(「構造化プログラミングと制御構造」参照)
12.2級問題集に関して
2級問題集については、平成27年度版以降の問題集で、JIS Full BASIC 言語に関連して変更
される内容を示す。
H26年度現在、全国工業高等学校長協会 HP 上に載せてある JIS Full BASIC 版とは「関数」
の部分が異なる。
86頁:(4)算術演算
表7-1
剰余の演算は、MOD 演算子が使用できなくなったため、「MOD 関数」を使用する。
代入文の先頭に LET を付ける。
86頁:(6)データの入出力
入力を促す文字を表示する場合、「INPUT PROMPT “表示する文字”:変数」 となる。
90頁:繰返し処理
繰返しに関する「制御文」は、JIS Full BASIC が構造化プログラミングに対応したため、大き
く変更されている。(「構造化プログラミングと制御構造」参照)
92頁:問題2
構造化に伴い、IF 条件 THEN ~ ELSE ~ END IF の形式に変更されている。そのために、IF
文の判断条件が逆になる。
PRINT USING に関して、書式の後に書く記号が“;”から“:”に変更されている。
PRINT USING“##°”; X は、PRINT USING“##°”: X ( X の前は「コロン」記号)
93頁、94頁:「前判定繰返し」、「後判定繰返し」
「構造化プログラミングと制御構造」の「前判定繰返し」、「後判定繰返し」を参照。
94頁:練習問題26
110 行:構造化に伴い、IF 文の使用から DO ~ LOOP WHILE(後判定)に変更されている。
後判定の場合、IF 文の使用から判断条件の変更はない。
160 行:構造化に伴い、IF 文の使用から DO WHILE ~ LOOP(前判定)に変更。それに伴い、
判断条件が逆になっている。
95頁:練習問題27
120 行:構造化に伴い、IF 文の使用から DO WHILE ~ LOOP(前判定)に変更されている。
それに伴い、判断条件が逆になっている。
MOD 演算子が使用できないため、②の解答が、MOD(A,N)<>0 に変更されている。
流れ図の表示形式も、DO WHILE ~ LOOP 文に合わせ変更されている。
150 行:構造化に伴い、IF 条件 THEN ~ ELSE ~ END IF の形式に変更されている。
それに伴い、IF 文の判断条件が逆になっている。
97頁:練習問題28
160 行:構造化に伴い、IF 文の使用から DO WHILE ~ LOOP(前判定)に変更されている。
180 行:EXIT DO は、繰返しを中断して、ループの外に制御を移す命令である。
220 行:構造化に伴い、IF 条件 THEN ~ ELSE ~ END IF の形式に変更されている。
98頁:7.4 関数
「サブルーチン」から「関数」に変更となる。 3頁 「関数について」参照