第53回北海道算数数学教育研究大会
高等学校第5分科会教育工学

Windows上で動くBASIC言語について

-BASIC を 見 直 そ う−

北海道札幌西陵高等学校  瀬戸 知比呂

1.はじめに

 BASICというと昔良く使われた懐かしい言語。それなくしてパソコンは語れないが、今となっては古臭くほとんど利用価値のない言語だと思っていた。しかしながら、ウインドウズ上でも動くBASICがかなりある。
 去年から今年にかけて北数教の実践研究会に参加して知ったのが、N88互換BASICと十進BASICである。また、パソコン雑誌の広告で見つけたのがF−BASICとBASIC98である。インタ−ネットの検索ペ-ジでBASICを探すとまだまだあるのである。ウィンドウズ上でのプログラムというとVisual Basicを始めとして、C、C++、JAVAなど、とにかくその手の解説書を読むとかなり難しく理解困難である。
 ところが、そのBASICを使うと、教科書に載っているBASICプログラムがウィンドウズ上でいとも簡単に動くのであるからこれは利用できそうだと思った。今年度は3年の数学C2単位と文系数学3単位を受け持つこととなった。人数も30人前後でコンピューターを利用するにはちょうど良い。さそっくBASICを使ってみることにした。
 とはいえ、コンピュータ−室は一部の先生とパソコン部がたまに使っているだけであった。調べてみると何台か動かないものがあった。再インスト−ル調整するのに4、5日がかかった。大変なことかも知れないと思いつつ、準備に時間をかけたくなかったので、できるだけ身近にある材料を使うことにした。たとえば、1年生の時使った問題集など。また、学期末の余った時間に視聴覚教室やLL教室でビデオを見せるような気軽な授業ができればと思った。
 1学期から始めたのでまだ2回しか授業をしていない。まだどうのこうのと云える段階ではないが、経過報告をしたい。また、同じBASICといっても少しずつあるいは、かなり異なる点がある。それら言語ソフトの違いも調べてみた。今後のパソコン利用の参考にしていただければ幸いである。

2.学校と生徒の概要

 本校は昭和52年4月に発足し、今年で創立21年を経過しようとしている。眼前にそびえる手稲山麓の豊かな自然環境に囲まれた西区平和の住宅街の一角に位置する。
 全日制普通科10学級、生徒数約1200名、教員数70名。教員の平均年齢は、44歳である。
 入学者のほとんどが市内西区、手稲区、中央区の各中学校出身者で占められる。学力は中程度であるが、入学後進路によってずいぶん差が開く。本年度より新しい試みとして4期制を始めた。まだ途中の段階であるが、要は運用の仕方を工夫することにありそうだ。進学講座は年間計画に沿って進められているが、継続した参加者の確保に苦労することもある。
 平成9年度の進路状況は、国公立大6名、私立大95名、短大105名、その他専門学校103名、就職20名となっている。ほとんどが道内の学校に進学、就職していく。また、最近の3年生の進路志望調査によると、第一希望国公立大30名、私立大150名、短大75名その他専門学校100名、就職その他45名となっている。
 数学のカリキュラムは、1年で数学TとA(6単位)、2年では文型が数学UとA(4単位)、理系が数学UとAとB(5単位)、3年では文型が数学T(3単位)選択、文理系数学TとU(5単位)、数学A(2単位)選択、理系が数学VとB(5単位)、数学C(2単位)選択、数学A(2単位)選択となっている。理系が受験中心、文系が基本中心の授業となる。2、3年生の中で理系は4割、文系は6割を占めている。

3.各BASIC言語の比較

1)一覧表

 機  能WIN95WIN3.1DOS価   格速 度
N88日本語BASIC
(DOS版)
インタプリタNEC
17000円
Visual Basicコンパイラ
Ver2.0
×マイクロソフト ラーニング版
23800円
F-BASIC Ver.6コンパイラ
Ver3.1
×富士通
35000円
BAISC/98
for Windows
インタプリタ××電脳組
30000円
十進BASICインタプリタ××フリーソフト
N88互換 BASIC
for Windows
インタプリタ×フリーソフト

Windows98でも動作確認
(ただし、N88日本語BASIC(DOS版)はPC98DOS窓)

2)動作例

@ N88日本語BASIC
10  SCREEN 3:CLS 320  WX=10:WY=WX*400/640
30  WINDOW(-WX,-WY)-(WX,WY)
40  LINE(-WX,0)-(WX,0):LINE(0,-WY)-(0,WY)
50  DEF FNF(X)=A*X*X+B*X+C
60  INPUT "ケイスウ a,b,c";A,B,C
70  FOR X=-WX TO WX STEP .01
80     Y=FNF(X)
90     PSET(X,-Y)
100  NEXT X
110  END
 高等学校新編数学C(数研出版)60頁 関数のグラフに記載の例です。

A F-BASIC

10   WX=10:WY=WX*400/640
20   WINDOW(-WX,-WY)-(WX,WY)
30   LINE(-WX,0)-(WX,0):LINE(0,-WY)-(0,WY)
40   DEF FNF(X)=A*X*X+B*X+C
50   INPUT "ケイスウ a,b,c";A,B,C
60   FOR X=-WX TO WX STEP .01
70     Y=FNF(X)
80     PSET(X,-Y)
90  NEXT X
100  STOP
B Visual Basic
Private Sub Form_Click()
  Cls
  w = 8
  l = 320 / w
  Line (0, 200)-(639, 200)
  Line (320, 0)-(320, 399)
  For x = -w To w Step 0.01
    y = x * x - 4
    m = l * x + 320: n = -l * y + 200
    PSet (m, n)
  Next x
End Sub
CBASIC/98 for Windows
10  CLS 3:SCREEN 3
20  WX=10:WY=WX*400/640
30  WINDOW(-WX,-WY)-(WX,WY)
40  LINE(-WX,0)-(WX,0):LINE(0,-WY)-(0,WY)
50  DEF FNF(X)=A*X*X+B*X+C
60  INPUT "ケイスウ a,b,c";A,B,C
70  FOR X=-WX TO WX STEP .01
80     Y=FNF(X)
90     PSET(X,-Y)
100  NEXT X
110  END
D N88互換BASIC
10  CLS 3
20  W=10:L=320/W
30  LINE(0,200)-(639,200):LINE(320,0)-(320,399)
40  DEF FNF(X)=A*X*X+B*X+C
50  INPUT "ケイスウ a,b,c";A,B,C
60  FOR X=-W TO W STEP .01
70    Y=FNF(X)
80    M=L*X+320:N=-L*Y+200
90    PSET (M,N)
100  NEXT X
110  END
E 十進BASIC
WX=10:WY=10
SET WINDOW  -WX,WX,-WY,WY
REM SET AXIS COLOR 1
REM DRAW axes
PLOT LINES:-10 ,0 ;10,0
PLOT LINES:0 ,10 ;0,-10
DEF F(X)=A*X*X+B*X+C
INPUT "ケイスウ a,b,c";A,B,C
FOR X=-WX TO WX STEP .01
    Y=F(X)
    PLOT  X,Y
NEXT X
END
3)主な命令、関数

教科書数学A、B、Cに利用されている関数、命令です。

命  令F-
BASIC
V-
BASIC
BASIC
98
N88
互換
十進
BASIC
NEW××××
AUTO××××
LIST××××
FILES××××
RUN××
SAVE××××
LOAD××××
      
PRINT
LPRINT××
INPUT×
REM
LET
GOTO
IF...THEN...
ELSE
FOR...TO...
STEP...NEXT
GOSUB...
RETURN
DEF FN×
READ... DATA×
DIM
DEFDBL
LOCATE×
RANDOMIZE
RND
STOP
END
CLS
SCREEN××
WINDOW××
VIEW×××
LINE
PSET
CIRCLE×
PAINT××
ラベル*AAAAAAAA:*AAAA*AAAAなし
行番号

関  数F-
BASIC
V-
BASIC
BASIC
98
N88
互換
十進
BASIC
LOG(X)
EXP(X)
ABS(X)
SQR(X)
SGN(X)
SIN(X)
COS(X)
TAN(X)
INT(X)
XMODY
X\Y


4.数学Cでの指導例

クラスの特徴 3年生の数学C選択2単位33名のクラス。
主に理系大学を目指す生徒中心のクラスである。
全員初めてBASICを習う。

使 用 教 材 新編数学C (数研出版)

目    標 前出のプログラムを理解する。曲線のグラフを描く。

総授業時数 年間5から6時間くらい実施する予定。

使 用 機 器 教師用:NEC PC-9801CE 1台   生徒用:NEC PC-9801CE 20台

ソ  フ  ト OS:Windows3.1 DOS−BASIC
授 業 内 容

0)準 備
使用ソフトのインストールおよび設定。(春休み中)
簡単なコンピュータの成り立ちなどを話しておく。2進数の話など。
マウスの使い方、キーボードの使い方は必要なときに教える。
1)1回目 ダイレクトモードでキータイプの練習
電源を入れてからウィンドウズ3.1を立ち上げる。
そしてウィンドウズ3. 1を終了させる練習。BASICソフト立ち上げ。

例題 (1) (20+25)2×15÷6  (2) SIN45° (3) PRINT INT(-7/2)
1. (5+10)/6+4
2.PRINT (8-SQR(196))^2
3. SIN220°
4. PRINT(20/(8-2))^3
5. プログラム例)三角形の面積

10  REM SANKAKUKEI20  INPUT  A30  INPUT  B40  LET  S=A*B/250  PRINT S70  END
2) 2回目 簡単なプログラムを入力してみよう1. 球の体積と表面積
10 REM KYUU
20  INPUT  R
30  V= 4/3*3.14*R^3
40  S=4*3.14*R^2
50  PRINT V
60  PRINT S
70  END
2.三角形の対辺を求める。
10  REM TAIHEN NO NAGASA
20  INPUT  "KAKU" ;A
30  M=12;N=15
40  X=A*3.14159/180
50  Y=M^2+N^2-2*M*NCOS(X)
60  PRINT  "BC=";SQR(Y)
70  END
3)3回目 IF...THEN 1.自然数を並べる
10 REM  1,2,3... 
20 N=0
30 N=N+1
40 PRINT N
50 IF  N<50  THEN GOTO 30
60 END
2.1から100までの和を求める
10  REM 1から100までの和
20  S=0
30  N=0
40  N=N+1
50  S=S+N
60  IF  N<100  THEN  GOTO 40
70  PRINT S
80  END
4)4回目 FOR...NEXT 1. 1から100までの和
10  REM 1から100までの和
20  S=0 
30   FOR  N=1  TO  100  STEP  1
40   S=S+N                     
50   NEXT  N
60   PRINT  S
70  END
2. 1から300までの和を求めよ
3. 100から200までの偶数の和
4. 1から10までのそれぞれの整数の3乗の和

5)5回目 2次関数を描いてみよう

1. 前出4.2)Aの2次関数を描くプログラム
2. 練習14  (1) Y=2X2-4X-1 (2) Y=-2X2-8X-3 (3) Y=2X2+4X+2
3.問8    (1) Y=AX+B (2) Y=AX+A+1
4.  Y=(X2+1)/Xのグラフ

6)6回目 いろいろな曲線(曲線の媒介変数表示)を描いてみよう。

1.サイクロイド
10〜40省略 前出
50 PAI=3,14159
60 DEF FNF(T) = T-SIN(T)
70 DEF FNG(T)=1-COS(T)
80 FOR T-2*PAI TO 2*PAI STEP .01
90 X=FNF(T):Y=FNG(T)

100 PSET(X,-Y)
110 NEXT T
120 END
2.練習28(1) X=COST,Y=SIN2T
(2) X=SIN2T,Y=SIN2T
(3) X=SINT-COST,Y=SINT+COST
(4) X=COS(T+1),Y=SINT

5.RS232Cインタ−フェイスの使用例

本校ではカ−ドリ−ダ-を利用して定期試験やアンケ−トの集計に役立てている。
パソコンはPC9801VM(NEC)、読み込みソフトは以前在籍された先生がBASICで自作したものである。10年以上利用されている非常に優秀なソフトだが、機械などすべてが古くなっているので、そろそろシステムを切り換えなければならない。
 そこで、パソコンPC9801(NEC)、OSはWINDOWS3.1 、ソフトは前出のF-BASICで読み込む部分だけ自作してみた。カ−ドリ−ダ−はSEKONICのSR-305S、RS223Cポ−トでつながれている。以下のプログラムはマニアル掲載の見本例に少し手を加えただけである。

  プログラム カ−ドリ−ド

1.  #include "f1a0Lww3.bi"  ‘WINDOWS3.1用のライブラリ−
2.    "カ−ド枚数の最大値を入力して下さい";NZ
3.  open  "(1)a:\fbwin\testbin\vcard.dat" for as #2  ‘出力ファイルのopen
4.  field #2,1 as  
5.  dim A$(64)
6.  for J=1 to NZ  ‘この繰り返しでカ−ドをNZ枚または空になるまで読み込む。
7.  *MAIN      ‘カ−ドを1枚読み込む処理
8.      open "com0:" as #1     ‘RS232CのOPEN
9.      print #1,chr$(63),chr$(13);    ‘カード1枚読み込み
10.     A$(1)=input$(1,#1)            ‘1文字読み込み
11.     if A$(1)  < >  "0" then goto *ERR ‘エラ−処理へ
12.     print #1,chr$(16);chr$(65);chr$(13); ‘Aモ−ド
13.     print #1,chr$(54);chr$(13);'*****60欄対応
14.    locate 5,2
15.    KEN =KEN+1             ‘カ−ド枚数カウント
16.    print KEN"件"          ‘カ−ド枚数をディスプレイに出力 
17.    for I=1 to 60      ‘1枚のカ−ド60文字分をA$(60)へ読み込む
18.       A$(I)=input$(1,#1)
19.    next I
20.  '
21.    for K=1 to 64         ‘A$(60)-->MOJI$(64)へ
22.       rset MOJI$=A$(K)
23.       put #2        ‘1枚のデ−タをディスクファイルへ出力
24.    next K
25.    close #1         ‘RS232CのCLOSE 
26.  next J
27.  close #2
28.  stop
29.  end       ‘正常終了
30.  *ERR
31.  close #1
32.  if A$(1) < "0"  then goto *OWARI 
33.  if A$(1) > "5"  then goto *OWARI 
34.  If (A$(1) = "5") or(A$(1)= "2") then
35.      input "カ−ドをいれて継続は Y 終了は Xを入力して下さい";K$
36.      if (K$="Y")or(K$="y")or(K$="ノ") then
37.        erase A$ : dim A$(64) : goto *MAIN ‘さらに継続するときはMAINへ
38.      endif
39.  endif
40.  *OWARI   ‘異常終了
41.  print "STATAS CODE = ",A$(1)
42.  print "dec",asc (A$(1))
43.  print "HEX",hex$(asc(A$(1)))
44.  close #2
45.  stop
46 end
 この他に環境ファイルの設定がある。マニアルに従ってボ−レ−ト9600BPS、デ−タ長7bit、パリティなし、ストップビット2bit、バッファビジィ制御無効コ−ド系JIS7としやると良い。1枚の処理に1秒ぐらいかかる。
 また、VISUALBASIC以外のBASICではOPEN “COM0“命令を利用できるので概ね上記のようなプログラムが可能だと思われる。


「参考図書」

「参考ホ−ムペ−ジ」