したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |

■■■20レス以内で済むF-BASICの質問はこちらへ■■■

392F橋:2006/04/24(月) 03:29:57
>>389
>プログラムの流れとしては、こんな感じで理解してよろしいでしょうか?
その通りです

>ただ一点の疑問は、F1_Aは数値ゼロ?
その通りです

>210 A=A+2           '変数Aに2を足す(A=10ではなくゼロ?)よってA=2
問題なく理解されてますよ。「A=10ではなくゼロ?」←これもその通りです

>10 declare functionn F1(A) 'F1(A)のプロシージャ宣言 行200へジャンプ
>200 function F1(P)       'F1(A)のAをPへ内部変換
>210 A=A+2           '変数Aに2を足す(A=10ではなくゼロ?)よってA=2
>220 F1=A*P           '変数F1にA=2とP=10(なぜ10?)をかける よってF1=20
>
>行10から行200 へジャンプするときはA=10と認知してないから
>行210ではA=0としているんだと考えているのですが、それでは行220ではなぜ?
>P=10と認知しているのか?理解できないのです。
>くだらない疑問ですが、またご教授願います。

>行10から行200 へジャンプするときはA=10と認知してないから
認知していません。ここは「F1という関数がこういうルール」という宣言だけでありジャンプはしません。

10 declare functionn F1(A)
10 declare functionn F1(B)
10 declare functionn F1(XXX)
10 declare functionn F1(HENSUU)
10 declare functionn F1(SEISUUGATA)

↑全部同じ意味です。(10行のみを↑に入れ替えてもプログラムは同じです)

F1(A) のAは整数型の1つの変数が必要と宣言するだけです
()内に整数型1つの変数が入るのを指示するだけです
関数を定義する(作る)事が出来ますがその関数にはどの変数が必要というのも定義する必要があります
今回は F1(x) ですが。xが無いと F1(x$) なのか F1(x,y)なのか分かりませんよね?
1つの変数がいるのを指示(定義)するだけです

例えば線を描く関数。PSET(X,Y)の様に定義されています。されていますが
PSET(AX,AY)やPSET(A,B)、PSET(10,10)と書いたりしますよね?
定義されている変数と実際に使う変数は違います
declare funcion PSET(X,Y) は PSET(数値型の変数,数値型の変数) と定義していると同じですね

>10 declare functionn F1(A) 'F1(A)のプロシージャ宣言 行200へジャンプ
変数Aを必要とする関数の定義。ではありません。変数Aの型を必要とする関数の定義です
Aは型を指示する為だけに使われこれ以外の処理の変数Aとは全く関係ありません

↓10行を function F1(B) の様に ()内をBに変えました。意味は同じです

>10 declare functionn F1(B) 'F1という関数を宣言。F1はBと同じ型の変数を引数とする
>200 function F1(P)       'F1() の ()内の変数の値を Pに代入
>210 A=A+2           '
>220 F1=A*P           '

210行のAは内部で F1_A と扱われると思って下さい。F1関数以外での変数Aとは違う変数で扱われます
F1_Aは初めて使われる変数になるので初期値が0になっています
プログラムをRUNすると全ての変数が初期化(数値の場合は0)になりますが
関数の場合は呼び出された時にRUNと同様初期化されるので210行は A=A+2 は必ず 2になります
(この関数を2回呼んだから以前の内容を覚えている。という訳ではありません)

う〜ん…うまく説明できない…
私もそうだったんですがこの辺りは旧BASICユーザーが分かりにくい部分の1つだと思うんですよね
関数のスコープとか関数の定義とかで検索してみてもっと分かりやすく説明しているサイトを探してみます


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板