投稿
bigslope bigslope
サブルーチンって、『特定の処理を独立させる事で、プログラムを見やすくする』と言えば聞こえが良いけれど、一方で、『面倒臭い処理は、みんな後回し(サブルーチン呼び出し)にしちゃえばいいじゃん』という、いい加減な思想の為にあるような気もする。そして空のサブルーチンばかりが増え続ける日々。
5そうだね
プレイ済み
返信[1]
親投稿
けい kei0baisoku
細かくて面倒な所は関数化だけしておいて、実装は後回しにして進めるのはよくやります(^O^) いわゆるトップダウン方式ですが、考えやすくてやりやすいです。 あとまわし万歳\(´ω`)/
1そうだね
プレイ済み
返信[2]
親投稿
otta777 otta777a
昔はプログラムに使用できるメモリが少なくて同じような処理を サブルーチン化してメモリを稼いでいました。 プログラムを書いている途中で、「あ、ここサブルーチンに できるじゃん」と思ったらサブルーチン化しちゃいますね。 同じようなプログラムを入力するの面倒くさいですから。
0そうだね
プレイ済み
返信[3]
親投稿
おかっぺ Japanese_WASABI
大きなものを考えるのに小さな事は考えたくないから後回し。個人的には考えやすいので大好きです。 そして後から、大ナタを振るう自分のセンスは・・キライじゃありません。
0そうだね
プレイ済み
返信[4]
親投稿
ようすけ youslzh
先にフロー設計が出来てるわけですからめっちゃイイのではないでしょうか。見習いたいと思います(〃^ー^〃) BASICって明確な仕様書を作らない限り分担作業って向かないと思っていたのですが、bigslopeさんの今回の投稿を見てメイン(フロー)担当と、サブルーチンっていうか関数担当で分ければ案外上手くいけそうな気がしました。
0そうだね
プレイ済み
返信[5]
親投稿
このBASICって関数はメインルーチンの後に付け加えて行くんですか?それとも、別ファイルにして呼び出す事も可能なんでしょうか?。
0そうだね
未プレイ
返信[6]
親投稿
bigslope bigslope
本来は、サブルーチンはメインの先でも後でも良いはずなのですが、現在のバージョンでは、サブルーチンはメインよりも前に置かないと、ローカル変数の定義が出来ない(二重定義エラーになる)という仕様になっています。
0そうだね
プレイ済み
返信[7]
親投稿
bigslope bigslope
別ファイルのサブルーチンを使いたい場合は、 ・サブルーチン側は、関数をCOMMON DEFで定義し、それをメインルーチンとは別のスロットにロードする ・メインルーチン側は、関数が存在するスロットを"USE (スロット番号)"で宣言する という手順で使う事が出来ます。
0そうだね
プレイ済み
返信[8]
親投稿
otta777 otta777a
>bigslopeさん 二重定義エラーになってしまうのはサブルーチンでは無く ユーザー定義命令または関数の場合ですね。 サブルーチン内で使用する変数はグローバル変数なので ローカル変数は使えませんよ。
0そうだね
プレイ済み
返信[9]
親投稿
bigslope bigslope
ああ、ユーザー定義命令(関数)=サブルーチンとして説明してしまいました。 当然、GOSUBではローカル変数の定義は不可です。
0そうだね
プレイ済み
返信[10]
親投稿
さとし SatoshiMcCloud
最初のスクリーンショット拝見しましたが、gosubではなくgotoで分岐させてますね。それはサブルーチンではなく只の条件分岐かと。
0そうだね
プレイ済み
返信[11]
親投稿
bigslope bigslope
とりあえず、画面描画系全般を担うユーザー定義命令を作って、その先頭の部分で処理毎にON~GOTOで分岐させるという形にしています。 メイン側で呼び出す際に、処理モード0だったらカーソル表示、モード1だったらカーソル消去、処理モード2だったら全画面再描画…という具合に(処理が終わったらGOTOでユーザー定義命令の最後に飛ばして終了)。そして、中身は全部後回し後回し。
0そうだね
プレイ済み