
こんばんわ。最近JSを勉強しだして、for文、whileやif、switchとやっと
書けるようになり。。。楽しくなってきました。
そこで質問なんですが、サブルーチンという言葉をよく耳にするのですが
これは何にあたるものなのでしょうか?関数のことなのですか?
どう言う時に使用するものなのでしょう・・・
参考書などを読むと繰り返し使うときにサブルーチンを利用して・・・・
とかいてあるのですが、for文などに似た書き方があるのでしょうか?
言葉の意味すらわかってないかもしれません・・・すみません
こんな初歩的な質問で・・・
どなたかこんな私にも教えるのがお上手な方、是非ご解答下さい・・
よろしくお願い致します。
No.4ベストアンサー
- 回答日時:
これは何もJavaScriptに限った話ではありませんが。
。。まず、プログラムの起動時に実行され始め、分岐やループなどの構文に従って流れていくプログラムの本流ともいえる部分を「メインルーチン」と呼びます。
さて、プログラムの中のあちこちに同じような処理をする部分があった場合、これを何度も記述するのは面倒ですので、次のようなことができます。
この同じような処理をメインルーチンから抜き出して別の場所に置き、この処理が必要になる度ここに飛んできて、処理が終わったら元の場所へ流れを戻す。
この抜き出された処理をメインルーチンに対して「サブルーチン」と呼ぶのです。
(「繰り返し使われる処理」などの記述から、forの親戚か?と思ったわけですよね。そうではないということです。)
JavaScriptやCではサブルーチンの動作に汎用性を持たせるため、オプション的な要素「引数(ひきすう)」を与えることができ、また処理の結果を「戻値(もどりち)」として受け取ることができます。(機能的な面より、サブルーチンではなく関数と呼ばれます。)
例えば、円の面積をいくつも求めるプログラムにおいて
r = 3
call MENSEKI
print s
:
sub MENSEKI
s = r * r * 3.14
end MENSEKI
# サブルーチンの仕様に、メインが合わせなければならない。
と書く代わりに、
s = MENSEKI( 3 )
print s
:
function MENSEKI( r )
return( r * r * 3.14 )
end MENSEKI
# メインからの呼びかけに、サブが応える。
のように書けます。
※これはあくまで抽象的に書いただけで、何かのプログラム言語などではありません。
この回答への補足
こんばんわ。
ご解答ありがとうございます。例までお書きくださって感謝します。
そうなんです、繰り返し=FORの親戚?と思ってしまってました(笑)
謎が解けたような気がします。
一つ関数を用いてPGを書きその処理を他の関数でも使用したい場合
また同じように書くと能率が悪いのでそれをサブルーチンとして何度も
使用するということですね。なるほど・・・。
で、書き方なんですが、JSで調べてるとはVBとかでよくみる書き方
「sub~」というのは見当たらないのですが、特別な書き方があるのでしょうか?
それともその関数のPGを変数にしてしまって、変数を書きこむのでしょうか?
すみません。。初歩的な質問で・・・
No.5
- 回答日時:
JavaScriptの関数は次のように書きます。
function 関数名(仮引数)
{
関数の処理
:
return 値;
}
これを呼び出すには次のようにします。
関数名(実引数);
ここで・・・
「仮引数(かりひきすう)」とは関数の中だけで使える変数で、呼びだし側が「実引数(じつひきすう)」として指定した定数または変数の値が入ります。
関数内でreturnに指定された値は、関数を呼び出した側に渡されます。この値は
a = 関数名(実引数);
のように変数で受け取るとか、
document.write(関数名(実引数));
のように直接使うとか、計算式の中に値のひとつとして組み込むなどできます。
処理結果を必要としないのであれば、戻値を返す、受け取る必要はありません。
No.3
- 回答日時:
皆さんが言われることは間違いではないですが、仮に一度しか使わないものでも、サブルーチン化します。
人間がパッと見てわかるのはせいぜい50行くらいと言われており、それを目安にサブルーチン分けします。
勿論、いい加減に分けるのではなく、意味のあるキチンとしたまとまり単位に分けるのです。「機能単位」と言っていいでしょう。
そうしないととんでもなく長ったらしいプログラムができてしまいます。
そうすると、
1)障害が多く発生する。
2)作業を分担できない。
3)理解しづらい。
4)開発工数が長くかかる。
のです。
No.2
- 回答日時:
こんばんわ
サブルーチンについてですが、プログラムを作成する中で繰り返し使う処理を
別プログラムとして登録しておき、プログラム中で呼び出して使うことを
サブルーチンと言います。同じ計算式を何度使用する様なときとかです。
まあ、プログラムに処理を全部書き込むとコンパイル(機械語:c言語とかのとこ)にするのが大変になるので別プログラムにします。
例としては、”call”文などで呼び出します(?これは、cobolの場合か・・・)こんなんでいいですか?わかりました?
この回答への補足
こんばんわ。早々のご解答ありがとうございます。
と言う事は・・、たとえば
ある一つの関数を用いてPGをつくり((1)とする)それを、
違う関数の処理で、(1)の関数を書いて呼び出すというわけですね。
その(1)の関数は何回でも他の関数で呼び出す事ができる。。
ということですよね?(笑)
あってるかな・・・
No.1
- 回答日時:
今は、やって居ませんのでハッキリした事は言えませんが昔、私がBASICで遊んで居たときには、サブルーチンと言うのは、同じプログラムの中で何度も同じ様な動作をするプログラムを(例えば、X+Y=?)使う時に一々同じプログラムをメインルーチンのそれぞれに書くのは能率的では有りませんし余計なメモリーを使うだけです。
そこでサブルーチンとして(”計算”(X+Y))の様な式を書いて、そこに引数としてX,Yを添えて渡し、出された結果を受け取る 要するに何度も繰り返しやるような事は小さい一つのプログラムに任せて仕舞うと言うのがサブルーチンの役目です。お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Javaプログラムからポップアッ...
-
tryの終了
-
ファイルの排他
-
BLOB型の画像データを表示したい
-
VBScriptでPing
-
数値の定数を付ける時
-
Tomcat高負荷時の設定について
-
重たい処理のタイムアウト強制終了
-
重い処理中のアニメーションgif...
-
JSP、サーブレットの初期処理
-
C# PostMessage BeginInvok
-
MediaPlayerコントロールのイベ...
-
[Java] while(true)の意味
-
C#で別スレッドの終了を知りたい
-
ラベルの表示までが異常に遅い...
-
C#でバックグラウンド処理から...
-
VBScriptでのWord印刷
-
重い処理を行っているとGIFアニ...
-
「タイプ初期化子が例外をスロ...
-
エクセルVBAで、条件に一致する...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ラジオボタンの選択判定
-
Javaプログラムからポップアッ...
-
[Java] while(true)の意味
-
Javaでのデバッグコード削除
-
tryの終了
-
doGetとdoPostの違い
-
数値の定数を付ける時
-
onBlurとonFocusの処理順序につ...
-
BLOB型の画像データを表示したい
-
1日の始まりを合図する
-
ラベルの表示までが異常に遅い...
-
C#で別スレッドの終了を知りたい
-
javaのプログラムが止まる
-
Tomcat高負荷時の設定について
-
表示待ち時間に「処理中...」の...
-
どうコーディングしたらよいの...
-
マルチスレッドのデバッグ
-
ExcelVBA で文字列の特定の文字...
-
スレッド1とスレッド2を交互に...
-
C#の処理をリアルタイムに表示...
おすすめ情報