こんばんわ。最近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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C#で別スレッドの終了を知りたい
-
tryの終了
-
onBlurとonFocusの処理順序につ...
-
Javaでのデバッグコード削除
-
数値の定数を付ける時
-
Javaアプリケーション実行の返...
-
javascriptの繰り返し処理が終...
-
Tomcat高負荷時の設定について
-
ラベルの表示までが異常に遅い...
-
演算子について
-
JAVAにおける画像のJPEG保存の...
-
VBScriptでPing
-
アコーディオンメニューをアン...
-
ラジオボタンの選択判定
-
XMLHttpRequestのsendメソッド
-
Javaで四則演算をしたい
-
ftp 同時複数接続の負荷テスト...
-
Windowsサービスの処理
-
「タイプ初期化子が例外をスロ...
-
エクセルVBAで、条件に一致する...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
tryの終了
-
Javaでのデバッグコード削除
-
Tomcat高負荷時の設定について
-
JavaでVBのDOEVENTSと同様の処...
-
[Java] while(true)の意味
-
ExcelVBA で文字列の特定の文字...
-
JavaScriptからJAVAクラスを呼...
-
アコーディオンメニューをアン...
-
SwingUtilities.invokeLater(ne...
-
重い処理を行っているとGIFアニ...
-
ftp 同時複数接続の負荷テスト...
-
数値の定数を付ける時
-
ラベルの表示までが異常に遅い...
-
特定のforwardパス以外をはじき...
-
C#で別スレッドの終了を知りたい
-
JDBCでテーブルUPDATE後の再検...
-
WPF C#でF10のイベント取得方法...
-
doGetとdoPostの違い
-
Mac上でWindowsのファイルパス...
-
PHPでDB処理中にプログレスバー...
おすすめ情報