十九歩目 分担作業
〜分担作業〜
さて 「分担作業とはなんじゃーーー」 と思った人もいるでしょうが
分担作業とは 作業を分担することだよね
例えば 夏休みの宿題を 「俺 英語やるから国語やって」
のようなもんです
プログラムはとにかく わかりやすく書く が基本でしたね
まあ ココで習うのは サブルーチン というものです
〜サブルーチン〜
サブルーチンとは まさに分担作業です
例えば ココでは 変数AにB+C を足した数字を入力するとか
ココでは 絵を呼び出して仮想画面に描く とか
そういう風に分けて行うのです
repeat redraw 2 color 255,255,255:boxf gosub*dainyuu gosub*keisann color 0,0,0 pos 0,0 print "a+bは"+mozi redraw 1 wait 5 loop *dainyuu a=100 b=cnt return *keisann mozi=a+b return |
今年(2001ねん)の夏は暑かったな・・・(関係無いな・・・)
新しい命令が2つあったな gosub と return だ
gosub はほとんど goto と同じで
gosub*??? と指定したラベルに飛ぶが どこが違うかというと
goto は指定したラベルに行ったらまた戻るには gotoを使う必要があったが
gosub は指定したラベルにとんで return 命令でまた gosub にもどれる!
つまり上のプログラムだと gosub*dainyuu で*dainyuu へ行って
return でまた戻ってくるのだ 戻ってきたときには
gosub*dainyuu は実行されず
(実行されたら無限に繰り返されることになるな)
その下の行の gosub*keisann が実行されるということだ
(ちなみにプログラムの中に gosubだけとか
returnだけがあるとエラーになります)
さて説明にはいろう
まず repeat で繰り返しの始めだな
でredraw 2でウインドウへの書きこみをとめ 仮想画面にこれからは書きこむ
(表示される文字がぶれるのを防止するためである)
でcolor 255,255,255:boxf で白で画面を塗りつぶすと
gosub*dainyuu でラベル *dainyuuへ飛ぶ
で a=100 で aという変数に100を代入(入力)する
b=cnt でbという変数に システム変数のcntの数値を代入する
(cntはrepeat
で繰り返された回数が入るわけだから
だんだん数字が大きくなってくはな)
return で gosub のところへ戻ると
でgosub*keisann でラベル *keisann へ行くと
ほんでmozi=a+b でaという変数の中の数字(100)と
bという変数の中の数字(cnt)が足されmozi という変数の中に入る
でreturn でもどって
color
0,0,0 で白色指定(次の歩目で説明する)
pos 0,0 でX座標0 Y座標0の位置に
print
"a+bは"+mozi でa+bは という文字と
moziという変数の中の数字が表示される
(ハテナワンに詳しくのってる)
でredraw 1
でいままで仮想画面に書いていたものを一気に
ウインドウに書く
でloopでrepeatのとこに戻る
説明終わり
ハテナワン 〜print "a+bは"+mozi〜 これははじめてやる方式だが print "a+bは"+mozi の "a+bは"+mozi はa+bは という文と moziの中の数値を 足したものを表示するということです 例えば moziが 103だったら a+bは103 と表示されるはずだ 他にも print "aは"+a+" bは"+b+" a+bは"+mozi とすれば bは3で moziが 103だとすると aは100 bは3 a+bは103 と表示される |
まとめーーーー gosub*???・・・指定したラベルへとんで return命令があれば戻る return・・・gosubへ戻る |