(仮称)十進 basic が目指すもの

39
仮仮仮 仮仮 () 仮仮仮 仮仮 () BASIC BASIC 仮仮仮仮仮仮 仮仮仮仮仮仮 仮仮仮仮仮仮仮仮 仮仮仮仮仮仮仮仮 仮仮 仮仮 仮仮 仮仮

Upload: pomona

Post on 05-Jan-2016

80 views

Category:

Documents


0 download

DESCRIPTION

(仮称)十進 BASIC が目指すもの. 文教大学教育学部 白石 和夫. アルゴリズムを習得する数学教育から アルゴリズムを作り,使う数学教育へ 自律思考の育成 数学的活動の道具   数学的事実の探究   数学理論の実地検証   数学の探訪( DO MATH を楽しむ). アルゴリズムの概念の習得. 人間が使う言葉としてのアルゴリズムの記述 コンピュータの学習をコンピュータ言語への翻訳技術の習得にしてはいけない しかし,アルゴリズムを実行してみることは必要. 自律思考を育てる. 論理性の育成 論理的な文書の作成 証明の記述を自律的に行えない学習者多い - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: (仮称)十進 BASIC が目指すもの

(仮称)十進(仮称)十進 BASICBASIC が目指すが目指すものもの

文教大学教育学部文教大学教育学部

白石 和夫白石 和夫

Page 2: (仮称)十進 BASIC が目指すもの

アルゴリズムを習得する数学教育かアルゴリズムを習得する数学教育かららアルゴリズムを作り,使う数学教育アルゴリズムを作り,使う数学教育へへ

自律思考の育成自律思考の育成 数学的活動の道具数学的活動の道具

  数学的事実の探究  数学的事実の探究  数学理論の実地検証  数学理論の実地検証  数学の探訪(  数学の探訪( DO MATHDO MATH を楽しを楽しむ)む)

Page 3: (仮称)十進 BASIC が目指すもの

アルゴリズムの概念の習得アルゴリズムの概念の習得

人間が使う言葉としてのアルゴリズムの人間が使う言葉としてのアルゴリズムの記述記述

コンピュータの学習をコンピュータ言語コンピュータの学習をコンピュータ言語への翻訳技術の習得にしてはいけないへの翻訳技術の習得にしてはいけない

しかし,アルゴリズムを実行してみるこしかし,アルゴリズムを実行してみることは必要とは必要

Page 4: (仮称)十進 BASIC が目指すもの

自律思考を育てる自律思考を育てる

論理性の育成論理性の育成 論理的な文書の作成論理的な文書の作成 証明の記述を自律的に行えない学習者多証明の記述を自律的に行えない学習者多

いい プログラミングを通して,自律思考を育プログラミングを通して,自律思考を育

てたいてたい

Page 5: (仮称)十進 BASIC が目指すもの

数学的活動の道具数学的活動の道具

数理的現象から構造を見抜く数理的現象から構造を見抜く  新しい理論を作る  新しい理論を作る

数学理論の適用数学理論の適用  数学のよさを感じ取る  数学のよさを感じ取る

Page 6: (仮称)十進 BASIC が目指すもの

既存既存 BASICBASIC の問題点の問題点N88BASIC etc.N88BASIC etc.

Page 7: (仮称)十進 BASIC が目指すもの

論理的表現論理的表現 A=A+1A=A+1 代入と相等の区別が身に付かない代入と相等の区別が身に付かない

Page 8: (仮称)十進 BASIC が目指すもの

文法のむずかしさ文法のむずかしさ

10 A=510 A=5

20 IF 1<A<3 THEN PRINT “Y” ELSE PRINT 20 IF 1<A<3 THEN PRINT “Y” ELSE PRINT ”N"”N"

Page 9: (仮称)十進 BASIC が目指すもの

文法のむずかしさ文法のむずかしさ

10 IF A=1 THEN B=0 : IF A=2 THEN 10 IF A=1 THEN B=0 : IF A=2 THEN B=10B=10

Page 10: (仮称)十進 BASIC が目指すもの

アルゴリズムの記述アルゴリズムの記述

10 INPUT A,B,C10 INPUT A,B,C 20 D=B^2-4*A*C20 D=B^2-4*A*C 30 IF D<0 THEN 6030 IF D<0 THEN 60 40 PRINT (-B+SQR(D))/(2*A), 40 PRINT (-B+SQR(D))/(2*A), ・・・・・・ 50 GOTO 7050 GOTO 70 60 PRINT "kai nashi"60 PRINT "kai nashi" 70 END 70 END

Page 11: (仮称)十進 BASIC が目指すもの

アルゴリズムの記述アルゴリズムの記述 10 INPUT N10 INPUT N 20 F=220 F=2 30 IF N=1 THEN GOTO 9030 IF N=1 THEN GOTO 90 40 IF N MOD F=0 THEN PRINT F; ELSE GOTO 7040 IF N MOD F=0 THEN PRINT F; ELSE GOTO 70 50 N=N/F50 N=N/F 60 GOTO 3060 GOTO 30 70 F=F+170 F=F+1 80 GOTO 4080 GOTO 40 90 END90 END

Page 12: (仮称)十進 BASIC が目指すもの

計算計算

10 X=010 X=0 20 PRINT X,SQR(X)20 PRINT X,SQR(X) 30 X=X+0.130 X=X+0.1 40 IF X<>10 THEN GOTO 2040 IF X<>10 THEN GOTO 20

論理性?

Page 13: (仮称)十進 BASIC が目指すもの

計算計算 10 FOR x=1 TO 100 10 FOR x=1 TO 100 20 FOR y=x TO 100 20 FOR y=x TO 100 30 LET z=SQR(x^2+y^2) 30 LET z=SQR(x^2+y^2) 40 IF INT(z)=z THEN PRINT x,y,z 40 IF INT(z)=z THEN PRINT x,y,z 50 NEXT y 50 NEXT y 60 NEXT x 60 NEXT x 70 END 70 END N88BASIC だと正しい答えが出ない

数学的論理よりもコンピュータ理解が重要?

Page 14: (仮称)十進 BASIC が目指すもの

グラフィックスグラフィックス

(0,0)(0,0)

                                                 

   (639,399)(639,399)

Page 15: (仮称)十進 BASIC が目指すもの

エラー処理のむずかしさエラー処理のむずかしさ

100 ON ERROR GOTO 1000100 ON ERROR GOTO 1000 110 DEF FNF(X)=1/X110 DEF FNF(X)=1/X 120 FOR X=-10 TO 10120 FOR X=-10 TO 10 130 PSET (X,FNF(X))130 PSET (X,FNF(X)) 140 NEXT X140 NEXT X 150 END150 END 1000 RESUME NEXT1000 RESUME NEXT

Page 16: (仮称)十進 BASIC が目指すもの

SYNTAX ERRORSYNTAX ERROR

文法誤りが実行してみないとわからない文法誤りが実行してみないとわからない10 FOR I=10 TO 10 FOR I=10 TO 11 OOOOOO20 20 ・・・・・・・・30 NEXT 30 NEXT 40 PLINT A40 PLINT A

Page 17: (仮称)十進 BASIC が目指すもの

解決するには?解決するには?

独自言語   ひとつに絞るのは難しい独自言語   ひとつに絞るのは難しい          (百花繚乱)          (百花繚乱)          仕様かバグか不明確          仕様かバグか不明確

         (利用者泣かせ)         (利用者泣かせ)

Page 18: (仮称)十進 BASIC が目指すもの

ISO Full BASICISO Full BASIC

BASICBASIC 言語の国際規格(日本では言語の国際規格(日本では JISJIS )) J.G.Kemeny J.G.Kemeny と と T.E.KurtzT.E.Kurtz のの True BASICTrue BASIC がが

土台土台

Page 19: (仮称)十進 BASIC が目指すもの

Full BASICFull BASIC の特徴の特徴 数値は浮動小数点数値は浮動小数点 1010 進数進数 演算結果の正確さに関する規定を持つ演算結果の正確さに関する規定を持つ 構造化言語構造化言語 再帰呼び出し可能な副プログラム,関数定義再帰呼び出し可能な副プログラム,関数定義 構造化例外状態処理構造化例外状態処理 問題座標系によるグラフィックス問題座標系によるグラフィックス 文法誤りは実行前に検出される文法誤りは実行前に検出される

(文法より論理の構築に集中できる)(文法より論理の構築に集中できる)

Page 20: (仮称)十進 BASIC が目指すもの

処理系の都合でなく,処理系の都合でなく,使う側の都合に合わせた文法使う側の都合に合わせた文法

マイクロソフトマイクロソフト BASICBASIC 大小比較,論理演算は数値演算の一部大小比較,論理演算は数値演算の一部

   (真は‐   (真は‐ 11 ,偽は,偽は 00 ,非負を真と解釈),非負を真と解釈)   だから,1<   だから,1< AA<3の値は<3の値は -1(-1(真真 )) Full BASICFull BASIC   大小比較,論理演算は数値演算と非互換   大小比較,論理演算は数値演算と非互換   だから,1<   だから,1< AA<3は文法誤り<3は文法誤り

  (翻訳時に検出される)  (翻訳時に検出される)

Page 21: (仮称)十進 BASIC が目指すもの

Full BASICFull BASIC の特徴(弱点?)の特徴(弱点?)

作るのが面倒作るのが面倒  文法を拡張したほうが作成が容易。  文法を拡張したほうが作成が容易。  しかし,それは,機械と人間とで意味  しかし,それは,機械と人間とで意味

の解釈の相違を生み出す原因になる。の解釈の相違を生み出す原因になる。 厳格な文法のよさが知られていない厳格な文法のよさが知られていない  「文法が拡張されている」と聞くと  「文法が拡張されている」と聞くと「よさそう」と思ってしまう人が多い「よさそう」と思ってしまう人が多い(実際は誤り)。(実際は誤り)。

Page 22: (仮称)十進 BASIC が目指すもの

アルゴリズムの記述アルゴリズムの記述

人間の使うアルゴリズム記述言語でプロ人間の使うアルゴリズム記述言語でプログラムを書くべきである。グラムを書くべきである。

プログラミング言語への翻訳がプログラプログラミング言語への翻訳がプログラミングの作業であってはならない。ミングの作業であってはならない。 プログラミングは,論理を組み立てる作 プログラミングは,論理を組み立てる作業であるべき。業であるべき。

Page 23: (仮称)十進 BASIC が目指すもの

22次方程式の解次方程式の解

10 INPUT a,b,c10 INPUT a,b,c20 LET20 LET    D=b^2-4*a*cD=b^2-4*a*c30 IF D>=0 THEN30 IF D>=0 THEN40 PRINT (-b+SQR(D))/(2*a),40 PRINT (-b+SQR(D))/(2*a), ・・・・・・50 ELSE50 ELSE60 PRINT "kai nashi"60 PRINT "kai nashi"70 END IF70 END IF80 END80 END

Page 24: (仮称)十進 BASIC が目指すもの

素因数分解素因数分解100 INPUT N100 INPUT N

110 LET F=2110 LET F=2

120 DO UNTIL N=1120 DO UNTIL N=1

130 DO UNTIL MOD(N,F)<>0 130 DO UNTIL MOD(N,F)<>0

140 PRINT F;140 PRINT F;

150 LET N=N/F150 LET N=N/F

160 LOOP160 LOOP

170 LET F=F+1170 LET F=F+1

180 LOOP180 LOOP

190 END190 END

Page 25: (仮称)十進 BASIC が目指すもの

計算計算

数値は浮動小数点数値は浮動小数点 1010 進数進数(整数型,単精度,倍精度などの別がな(整数型,単精度,倍精度などの別がない)い)

組込関数の正確さが規格で定められてい組込関数の正確さが規格で定められている。る。(数学的に正しい値が整数になる演算の(数学的に正しい値が整数になる演算の結果は整数になることが保証される)結果は整数になることが保証される)

Page 26: (仮称)十進 BASIC が目指すもの

計算(実用性)計算(実用性) ASINASIN ,, ACOS,ANGLEACOS,ANGLE ,, LOG10LOG10 などの関数などの関数 OPTION ANGLE DEGREESOPTION ANGLE DEGREES MODMOD (( x,y)x,y) は,は, x-y*INT(x/y) x-y*INT(x/y) で定義されるで定義される

MOD(-2,10)MOD(-2,10) は は 88 MOD(4.71, 3.14) MOD(4.71, 3.14) は は 1.571.57

(( MicrosoftMicrosoft のの MODMOD 演算子と定義が異な演算子と定義が異なる)る) (-2) MOD 10 (-2) MOD 10 は は -2-2

Page 27: (仮称)十進 BASIC が目指すもの

グラフィックスグラフィックス

計算結果を図示する計算結果を図示する GUIGUI が目的ではないが目的ではない

Page 28: (仮称)十進 BASIC が目指すもの

Full BASICFull BASIC のグラフィックスのグラフィックス

問題座標系問題座標系 描画領域の初期値は正方形描画領域の初期値は正方形 xyプロッタを想定した描画命令xyプロッタを想定した描画命令 4×44×4 のの 22次元配列(行列)を利用して次元配列(行列)を利用して

アフィン変換,射影変換が可能アフィン変換,射影変換が可能

Page 29: (仮称)十進 BASIC が目指すもの

関数のグラフ関数のグラフ 10 DEF f(x)=x^3-4*x10 DEF f(x)=x^3-4*x 20 SET WINDOW -4,4,-4,420 SET WINDOW -4,4,-4,4 30 FOR x=-4 TO 4 STEP 0.130 FOR x=-4 TO 4 STEP 0.1 40 PLOT LINES: x,f(x);40 PLOT LINES: x,f(x); 50 NEXT x50 NEXT x 60 END60 END

Page 30: (仮称)十進 BASIC が目指すもの

例外状態処理例外状態処理100 DEF f(x)=1/x100 DEF f(x)=1/x110 SET WINDOW -4,4,-4,4110 SET WINDOW -4,4,-4,4120 FOR x=-4 TO 4 STEP 0.1120 FOR x=-4 TO 4 STEP 0.1130 WHEN EXCEPTION IN130 WHEN EXCEPTION IN140 PLOT LINES: x,f(x);140 PLOT LINES: x,f(x);150 USE150 USE160 PLOT LINES160 PLOT LINES170 END WHEN170 END WHEN180 NEXT x180 NEXT x190 END190 END

Page 31: (仮称)十進 BASIC が目指すもの

(仮称)十進(仮称)十進 BASICBASIC

WindowsWindows 版と版と Linux(x86)Linux(x86)版がある。版がある。 JIS Full BASICJIS Full BASIC のうちのうち

  中核機能単位・図形機能単位  中核機能単位・図形機能単位 付属書のモジュールおよび単文字入力 付属書のモジュールおよび単文字入力 に対応(若干の非互換あり) に対応(若干の非互換あり)

フリーソフト(再配布も可)フリーソフト(再配布も可)

Page 32: (仮称)十進 BASIC が目指すもの

(仮称)十進(仮称)十進 BASIC Win32BASIC Win32 版版

テキスト出力はテキスト出力は 11メガバイト超でも表示メガバイト超でも表示できるできる (( 結果はスクロールして見ること結果はスクロールして見ることができ,ができ, 保存したり,クリップボードにコピーし 保存したり,クリップボードにコピーしたり,たり, 印刷したりできる。) 印刷したりできる。)

グラフィックスは,ビットマップのほか,グラフィックスは,ビットマップのほか,メタファイルの作成にも対応。メタファイルの作成にも対応。

Page 33: (仮称)十進 BASIC が目指すもの

文法文法

行番号はなくてもよい行番号はなくてもよい 処理系を簡略化するための拡張文法は採処理系を簡略化するための拡張文法は採

用していない。用していない。(意味があいまいになるかもしれない構(意味があいまいになるかもしれない構文が文法的に禁止される)文が文法的に禁止される)

Page 34: (仮称)十進 BASIC が目指すもの

計算計算 正確さのために,一般的なライブラリに頼らず,正確さのために,一般的なライブラリに頼らず,

独自の計算ルーチンを使用独自の計算ルーチンを使用 たとえば,たとえば, LOG10(1000)LOG10(1000) は正確には正確に 33 になるになる例例10 PRINT LOG10(1000)-310 PRINT LOG10(1000)-3

20 END20 END

を実行すると,答えはを実行すると,答えは 00

Page 35: (仮称)十進 BASIC が目指すもの

再帰呼び出し可能な絵定義再帰呼び出し可能な絵定義

絵定義は描画用の手続き定義で,副プロ絵定義は描画用の手続き定義で,副プログラムの機能の他,実行時に図形変形のグラムの機能の他,実行時に図形変形の指定が可能。指定が可能。

図形変形は組込みの変形(拡大,平行移図形変形は組込みの変形(拡大,平行移動,回転,剪断のほか,動,回転,剪断のほか, 44 行行 44列の行列列の行列による射影変換も可能で,それらの積をによる射影変換も可能で,それらの積を書くこともできる。)書くこともできる。)

絵定義の再帰呼び出しを利用すると,自絵定義の再帰呼び出しを利用すると,自己相似図形が簡単に描ける。己相似図形が簡単に描ける。

Page 36: (仮称)十進 BASIC が目指すもの
Page 37: (仮称)十進 BASIC が目指すもの

PICTURE D(n) IF n=20 THEN PLOT POINTS: 0,0 ELSE DRAW D(n+1) WITH ROTATE(PI/4)*SCALE(r) DRAW D(n+1) WITH SHIFT(-1,0)*ROTATE(PI/4)*SCALE(1/SQR(2))*SHIFT(1,0) END IFEND PICTURESET WINDOW -1/2,3/2,-1,1DRAW axesSET POINT STYLE 1DRAW D(1)END

Page 38: (仮称)十進 BASIC が目指すもの

独自拡張独自拡張

複素数モード複素数モード 十進十進 10001000桁モード桁モード 有理数モード(多倍長)有理数モード(多倍長)

Page 39: (仮称)十進 BASIC が目指すもの

できないことできないこと

数式処理(コンピュータ代数)数式処理(コンピュータ代数) 多倍長整数の高速計算多倍長整数の高速計算

構造型の変数構造型の変数 動的変数動的変数 オブジェクト指向オブジェクト指向