こんばんわ。最近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で質問しましょう!
似たような質問が見つかりました
- 日本語 複合名詞(造語)について教えて欲しいです 2 2022/05/22 17:14
- 日本語 「〜たり〜たり」の使い方 1 2022/06/05 16:25
- 日本語 「〜たり〜たり」の使い方 2 2022/06/08 21:30
- その他(プログラミング・Web制作) Pythonでこのプログラミングを作成するには 2 2022/10/25 21:19
- その他(プログラミング・Web制作) Pythonでこのプログラミングを作りたいのですが 1 2022/10/24 18:56
- 英語 Is to play soccer fun for you? は、正しい英文ですか? 1 2023/05/08 12:37
- 英語 thick sidewalks の thick とはどういう意味か? 16 2022/10/30 11:59
- 教えて!goo 質問サイトで読解力がない奴と話すとイライラします。こういう人の対処法を教えてください。 22 2022/09/12 08:44
- TOEFL・TOEIC・英語検定 紙の辞書とネットの辞書、どちらが正しいですか? 2 2022/11/13 12:12
- 大学受験 本気で困ってます! 大学受験/現代文の参考書ルートについて質問です! 現代文の参考書ルートについてで 2 2023/08/13 20:07
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
画面系イベントの優先度を上げたい
-
Javaでのデバッグコード削除
-
tryの終了
-
doGetとdoPostの違い
-
java(swing)で、登録ボタンを押...
-
Javaアプリケーション実行の返...
-
onBlurとonFocusの処理順序につ...
-
PHPでDB処理中にプログレスバー...
-
C# PostMessage BeginInvok
-
重い処理を行っているとGIFアニ...
-
JAVAからJAVASCRIPT関数を呼び出し
-
「UIスレッド」「マルチスレッ...
-
C#で別スレッドの終了を知りたい
-
WPF C#でF10のイベント取得方法...
-
巡回バッファを使用した生産者-...
-
重たい処理のタイムアウト強制終了
-
MediaPlayerコントロールのイベ...
-
ラジオボタンの選択判定
-
Linux上でのTomcatのServletプ...
-
javaのプログラムが止まる
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
tryの終了
-
Tomcat高負荷時の設定について
-
onBlurとonFocusの処理順序につ...
-
Javaでのデバッグコード削除
-
ラジオボタンの選択判定
-
WPF C#でF10のイベント取得方法...
-
doGetとdoPostの違い
-
SwingUtilities.invokeLater(ne...
-
アコーディオンメニューをアン...
-
数値の定数を付ける時
-
switch文の中に、throws new Ex...
-
JAVAからJAVASCRIPT関数を呼び出し
-
再度、スレッドが実行中かどう...
-
ラベルの表示までが異常に遅い...
-
JavaScriptからJAVAクラスを呼...
-
javaのプログラムが止まる
-
Javaプログラムからポップアッ...
-
C#で別スレッドの終了を知りたい
-
vba Sleep関数について教えてく...
-
Tomcatのスレッドを破棄する方法
おすすめ情報