• ベストアンサー

サブルーチンってどういうこと?

こんばんわ。最近JSを勉強しだして、for文、whileやif、switchとやっと 書けるようになり。。。楽しくなってきました。 そこで質問なんですが、サブルーチンという言葉をよく耳にするのですが これは何にあたるものなのでしょうか?関数のことなのですか? どう言う時に使用するものなのでしょう・・・ 参考書などを読むと繰り返し使うときにサブルーチンを利用して・・・・ とかいてあるのですが、for文などに似た書き方があるのでしょうか? 言葉の意味すらわかってないかもしれません・・・すみません こんな初歩的な質問で・・・ どなたかこんな私にも教えるのがお上手な方、是非ご解答下さい・・ よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • leaz024
  • ベストアンサー率75% (398/526)
回答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 # メインからの呼びかけに、サブが応える。 のように書けます。 ※これはあくまで抽象的に書いただけで、何かのプログラム言語などではありません。

tariran
質問者

補足

こんばんわ。 ご解答ありがとうございます。例までお書きくださって感謝します。 そうなんです、繰り返し=FORの親戚?と思ってしまってました(笑) 謎が解けたような気がします。 一つ関数を用いてPGを書きその処理を他の関数でも使用したい場合 また同じように書くと能率が悪いのでそれをサブルーチンとして何度も 使用するということですね。なるほど・・・。 で、書き方なんですが、JSで調べてるとはVBとかでよくみる書き方 「sub~」というのは見当たらないのですが、特別な書き方があるのでしょうか? それともその関数のPGを変数にしてしまって、変数を書きこむのでしょうか? すみません。。初歩的な質問で・・・

その他の回答 (4)

  • leaz024
  • ベストアンサー率75% (398/526)
回答No.5

JavaScriptの関数は次のように書きます。  function 関数名(仮引数)  {    関数の処理      :    return 値;  } これを呼び出すには次のようにします。  関数名(実引数); ここで・・・  「仮引数(かりひきすう)」とは関数の中だけで使える変数で、呼びだし側が「実引数(じつひきすう)」として指定した定数または変数の値が入ります。  関数内でreturnに指定された値は、関数を呼び出した側に渡されます。この値は   a = 関数名(実引数); のように変数で受け取るとか、   document.write(関数名(実引数)); のように直接使うとか、計算式の中に値のひとつとして組み込むなどできます。 処理結果を必要としないのであれば、戻値を返す、受け取る必要はありません。

tariran
質問者

お礼

こんばんわ。詳しくご解答頂きました本当に 有難うございました。 とても助かり感謝しております。 有難うございました。

  • ametsuchi
  • ベストアンサー率31% (81/257)
回答No.3

皆さんが言われることは間違いではないですが、仮に一度しか使わないものでも、サブルーチン化します。 人間がパッと見てわかるのはせいぜい50行くらいと言われており、それを目安にサブルーチン分けします。 勿論、いい加減に分けるのではなく、意味のあるキチンとしたまとまり単位に分けるのです。「機能単位」と言っていいでしょう。 そうしないととんでもなく長ったらしいプログラムができてしまいます。 そうすると、 1)障害が多く発生する。 2)作業を分担できない。 3)理解しづらい。 4)開発工数が長くかかる。 のです。

tariran
質問者

お礼

こんばんわ。サブルーチンの利点、何の為に使うのか 良くわかりました。ありがとうございました。 早々のお返事感謝しております。

  • arinko11
  • ベストアンサー率0% (0/4)
回答No.2

こんばんわ サブルーチンについてですが、プログラムを作成する中で繰り返し使う処理を 別プログラムとして登録しておき、プログラム中で呼び出して使うことを サブルーチンと言います。同じ計算式を何度使用する様なときとかです。 まあ、プログラムに処理を全部書き込むとコンパイル(機械語:c言語とかのとこ)にするのが大変になるので別プログラムにします。 例としては、”call”文などで呼び出します(?これは、cobolの場合か・・・)こんなんでいいですか?わかりました?

tariran
質問者

補足

こんばんわ。早々のご解答ありがとうございます。 と言う事は・・、たとえば ある一つの関数を用いてPGをつくり((1)とする)それを、 違う関数の処理で、(1)の関数を書いて呼び出すというわけですね。 その(1)の関数は何回でも他の関数で呼び出す事ができる。。 ということですよね?(笑) あってるかな・・・

  • tomco
  • ベストアンサー率31% (6/19)
回答No.1

今は、やって居ませんのでハッキリした事は言えませんが昔、私がBASICで遊んで居たときには、サブルーチンと言うのは、同じプログラムの中で何度も同じ様な動作をするプログラムを(例えば、X+Y=?)使う時に一々同じプログラムをメインルーチンのそれぞれに書くのは能率的では有りませんし余計なメモリーを使うだけです。そこでサブルーチンとして(”計算”(X+Y))の様な式を書いて、そこに引数としてX,Yを添えて渡し、出された結果を受け取る 要するに何度も繰り返しやるような事は小さい一つのプログラムに任せて仕舞うと言うのがサブルーチンの役目です。

tariran
質問者

お礼

こんばんわ、早速のお返事感謝しております。 謎が解けました。ありがとうございました。