トピック

サブルーチンってなんぞや(´・ώ・`)

使い方を教えて下さい<(_ _)>
4そうだね
プレイ済み
返信[1]
親投稿
サブルーチンとは、行って戻ってくる処理のことです。 DEF BWAIT 'ボタン待ち サブルーチン REPEAT WAIT 1 UNTIL BUTTON(2) END 'サブルーチン終わり ACLS ?"テスト" BWAIT CLS こんな風に何度も使う処理をサブルーチンに入れておくと、何度も同じ処理を繰り返すときに似たようなことを書かなくて済むので便利です。
5そうだね
プレイ済み
返信[2]
親投稿
だにえる haru2016nen
初心者ならGOSUB@~の方が 取っ付きやすいんじゃないかな。 メインループが長いとプログラムが 見にくくなるので、各処理ごとに分ける ことで、見やすくするって使い方が基本。 画像は十字キーの判定をサブルーチン化 しているやつ。
5そうだね
プレイ済み
返信[3]
親投稿
使い回しのきくGOTOみたいな感じという事ですか?
3そうだね
プレイ済み
返信[4]
親投稿
SEKI22 rcftgrsfrr578
同じ様な処理が続いてそこでエラーが発生した場合に一気に直せるという特徴があります 初心者はGOSUB~RETURNがいいですね DEFで定義してもいいですが別処理の時にもDEFを使う必要があるのでGOSUBの方が良いです。(DEF内でもGOSUB"0:@ラベル名"みたいな感じで無理してできるけど)
0そうだね
プレイ済み
返信[5]
親投稿
と言うより戻ってくるGOTOって感じですね。 GOTOも使い回そうと思えば使い回せるので。(GOTO使わないのでよく分かりませんが)
3そうだね
プレイ済み
返信[6]
親投稿
SEKI22 rcftgrsfrr578
しかし注意。 @A GOSUB @A や DEF A WHILE 1 A WEND END A などの事をするとスタックメモリーオーバーになるので注意。 GOSUBの時はRETURNを忘れずに (自分はマップ描画の時にGOSUB使ってる)
0そうだね
プレイ済み
返信[7]
親投稿
SEKI22 rcftgrsfrr578
(GOTOで使い回すとスパゲッティプログラムになるよ)
0そうだね
プレイ済み
返信[8]
親投稿
だにえる haru2016nen
各処理をまとめられるってのがポイント。 GOSUB @A:GOSUB @B ↓ GOSUB @B:GOSUB @A って簡単に処理の順番を変えられたりするし、 ’GOSUB @A (コメントアウト) みたいに一部の処理を飛ばすことも 出来たり。
3そうだね
プレイ済み
返信[9]
親投稿
みなつ tksm372
私はDEF~END派なので、初心者さんにこそDEFをお勧めします(≧∇≦)b べっ・・・べつに「GOSUB」って打つのが面倒くさいわけじゃないんだからねっ!(*ノノ) まぁ、GOSUBでもDEF~ENDでも、サブルーチンとしての基本的な使い方は同じですので、お好みで良いと思います('ω') PRINT "ボタンを押してね" WAITBTN'←使う時は、名前を書くだけでOK! PRINT "もう一度ボタンを押してね" WAITBTN END DEF WAITBTN'←「WAITBTN」という名前のサブルーチンの定義開始 REPEAT  VSYNC UNTIL BUTTON(2)!=0 END'←ここでサブルーチンの定義終わり
2そうだね
プレイ済み
返信[10]
親投稿
TERA(LL) tera0413
ふーん 最近じゃ、ユーザ定義命令をサブルーチンとして認識するのか・・・ 若いものの感覚はよくわからんのぅ サブルーチンってGOSUB,RETURNで囲まれた小さなプログラムの固まり。 メインルーチンの中で、毎回ではないけど、わりと頻繁に同じ処理を繰り返す部分をメインから切り離してプログラムの流れを分かりやすくする時に使ったりします。 (分岐というより、プログラムの流れの中で、必要に応じて、行ってまた戻ってくる) DEFによる定義呼び出しは、行って戻ると言うより、計算(処理)方法を予め決めておいた作業を都度呼び出して(流れの中で)実施してるという感覚
5そうだね
プレイ済み
返信[11]
親投稿
まぐろ uooooo
余談なのですがサブルーチンを使うのはBASICぐらいなので慣れすぎると他の言語を使うとき混乱します。僕は使うのはおすすめできません。
2そうだね
プレイ済み
返信[12]
親投稿
こりんご koringods
個人的に考えてるとこのサブルーチンっていうのは、メインのプログラムをメインルーチンっていって、それとは別のとこにあるけどいつでも持ってくることができるのがサブルーチンかなぁ…と。 いわゆるメインがテーブルの上の作業場とするなら、サブルーチンはそれと別にしまってある引き出しみたいなもの。使ってはしまって…って使えるので、メインと分けておきたい時にも便利だし、机のどこにいっちゃったかわかんなくなったりしないっていう…。 GOSUB も DEF もサブルーチンの引き出しの種類。GOSUBはメインと同じ変数使うので、引き出しの中でいつのまにか変数の中身変えてしまってて机に戻ってきたときにあわてる事があるけど、DEFはその引き出し内だけで使う変数を作る事ができるので、変な不具合出して慌てる事が少ないかなーと。 先日作った恋愛ゲームではDEF使いまくってます。DEFは便利でふよ~♪
8そうだね
プレイ済み
返信[13]
親投稿
知らぬ間にたくさんのコメが... GOSUB今回の作品で使うかな~どうしよう。 長くなるようだったらつかってみます!ありがとうございました(^_^)
3そうだね
プレイ済み
返信[14]
親投稿
すう SU-KUN
ノベルだと、例えば、文字を表示するサブルーチンを作って、文字の中身だけ渡すようにしておけば、何度も同じ事を書かなくていいので楽ですね。絵の切り替わりエフェクトみたいのを、サブルーチンとして作ってもいいですね。 DEFもGOSUBも、繰り返し使う処理をひとつにして、プログラムを見やすくしたり、修正しやすくしたり、バグが出にくくできますから、効率的に使っていくといいと思いますよ~^^ 文字を渡したり、結果をもらう時は、DEFの方が便利でお勧めです。
4そうだね
プレイ済み
返信[15]
親投稿
サブルーチンの目的としては ・まとまった処理を別にまとめて書ける ・何度も呼ぶ処理をいちいち書かなくてすむ という感じ。 だにえるさんのコードの @SUB は @MAIN の中にそのまま書くこともできるけど、 @MAINの中身が長くなってしまって、@MAINは何をする処理なんだろうってわけわからなくなるので、 それを @SUBで分けると、@MAINがすっきりして見やすくなります。 そして、@SUBはボタンの入力で XとYを変更する処理なので、@MENUみたいな別の処理で使いたい場合、@SUBを呼び出せばまた同じコードを書かなくて済みます。 プログラムを作るときは「主人公の処理」「敵の処理」「メニューの処理」など、目的によって分けることが多いので、そういう処理をサブルーチンで分けると、プログラムが見やすくなって修正しやすくなります。
1そうだね
プレイ済み
返信[16]
親投稿
ちなみに「まとまった処理を呼び出す」というやりかたの呼び方は、いろんなプログラムでいろんな呼ばれ方をしていて、 BASICで GOSUBで呼ぶのを「サブルーチン」ってよく言われます。 プチコンのDEFは「ユーザ定義命令」や「ユーザ定義関数」とよばれたりして、「関数」とよばれることが多いです プチコン以外だとだいたいは「関数」ってよばれていて、クラス系は「メソッド」だったり「コンストラクタ」だったり、呼び方はさまざまなのです。 まとまった処理を呼び出して戻るという「やりかた」はどの世界でも変わらないので、 「この処理まとめられそうだな」って思ったら、サブルーチンなりDEFなりで分けるようにすると、プログラムが読みやすくなって修正しやすくなります。
4そうだね
プレイ済み
返信[17]
親投稿
2日もコメ遅れてスミマセン、やっとGOSUBの使い方が理解出来ました(^_^)(遅れたのは理解まで時間がかかった為) ありがとうございました!〆
2そうだね
プレイ済み