十九歩目 分担作業

〜分担作業〜
     さて 「分担作業とはなんじゃーーー」 と思った人もいるでしょうが
     分担作業とは 作業を分担することだよね
     例えば 夏休みの宿題を 「俺 英語やるから国語やって」
     のようなもんです
     プログラムはとにかく わかりやすく書く が基本でしたね
     まあ ココで習うのは サブルーチン というものです

〜サブルーチン〜
     サブルーチンとは まさに分担作業です
     例えば ココでは 変数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の数値を代入する
     (cntrepeat で繰り返された回数が入るわけだから
         だんだん数字が大きくなってくはな)
     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 でいままで仮想画面に書いていたものを一気に
     ウインドウに書く
     でlooprepeatのとこに戻る
     説明終わり

ハテナワン

〜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へ戻る

戻る コウザへ ホームへ 次へ