新しく発言する EXIT インデックスへ
INPUT-DEFで関数を定義する

  INPUT-DEFで関数を定義する Takuji 2005/07/06 03:07:35 
  FullBASICは,プログラムは実行開始時点で翻... 白石 和夫 2005/07/06 08:57:59 
  掲示板での御回答有難う御座います。 Takuji 2005/07/06 23:08:00 

  INPUT-DEFで関数を定義する Takuji 2005/07/06 03:07:35  ツリーへ

INPUT-DEFで関数を定義する 返事を書く
Takuji 2005/07/06 03:07:35
!INPUT文で取り込んだ関数をDEFで定義する方法が分かりません。
!
!例えば Ubasicでは、
!
!X=_X: ------
!strinput "F(x,t)=";F:if F="" then cls:end ;F ← x^2+t^2
! .
! .
! .
!Y0=fnF(X0,T0) ;実引数での関数値が得られる
! .
! .
! .
!==================
!def fnF(X,T)=val(F) ;fnF(X,T)=x^2+t^2 が定義される
!
!といったことを十進BASICで実現する手順を御教授願いたいのですが。
!HELPから色々探しているのですが解決できません。
!よろしくお願い致します。
!現在手元にあるのは、(仮称)十進BASIC Version 5.0.8です。

  FullBASICは,プログラムは実行開始時点で翻... 白石 和夫 2005/07/06 08:57:59  ツリーへ

Re: INPUT-DEFで関数を定義する 返事を書く
白石 和夫 2005/07/06 08:57:59
 Full BASICは,プログラムは実行開始時点で翻訳が終了していることが前提となっているので,実行中のプログラムが自分自身を書き換えて実行することは不可能です。
(仮称)十進BASICでは,プログラムをファイルとして書き出し,EXECUTE文で実行することで,この束縛から逃れることができます。

関数f(x)をBASICの文法で入力すると,そのグラフを描く
100 DATA "SET WINDOW -4,4,-4,4"
110 DATA "FOR x=-4 TO 4 STEP 0.01"
120 DATA " PLOT LINES:x,f(x);"
130 DATA "NEXT x"
140 DATA "PAUSE " ! 終了の指示を待つために必要
150 DATA "END"
160 INPUT PROMPT "f(x)=":s$
170 OPEN #1:NAME "temp.bas" ! ファイル名には,拡張子.BASを付加する
180 ERASE #1
190 PRINT #1:"DEF f(x)=";s$
200 DO
210 READ IF MISSING THEN EXIT DO: s$
220 PRINT #1:s$
230 LOOP
240 CLOSE #1
250 EXECUTE "temp" ! ファイル名は,拡張子を省いて指定する
260 FILE DELETE "temp.bas" ! 後始末
270 END

詳細は
http://hp.vector.co.jp/authors/VA008683/ExtProg.htm

  掲示板での御回答有難う御座います。 Takuji 2005/07/06 23:08:00  ツリーへ

Re: INPUT-DEFで関数を定義する 返事を書く
Takuji 2005/07/06 23:08:00
掲示板での御回答有難う御座います。
EXECUTEと外部プログラムと云った考え方には至りませんでした。
どうもBASICとInterpreterということに固執していたようです。
Basic508.exeに収められたPDFやHelpファイルには一応目を通して
(仮称)十進BASICがNative Code Compilerではないという知識は
頭の片隅に残っていたのですが。
http://hp.vector.co.jp/authors/VA008683/ExtProg.htmの説明は
非常に参考になりました。
(仮称)という冠のとれた(新・?)十進BASICがあるらしことも分かり
ましたので最新のVersionを手に入れたいと思っています。
ただ当方の環境がブロードバンドでも常時接続でもないのでゆったりと
したbrowsができないのが悩みですが。


インデックスへ EXIT
新規発言を反映させるにはブラウザの更新ボタンを押してください。