• ベストアンサー

メインルーチンとサブルーチンについて。

これについてご教授下さい。例を示していただきたいです。後、以下のURL、はなぜ、メンルーチンしか使っていないのでしょうか?ご教授下さい。 Link: http://codepad.org/Oxfd5gz9

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

  • ベストアンサー
  • OK_WAVE
  • ベストアンサー率17% (22/125)
回答No.8

関数分けが必要な理由は変数の局所化の為です sub_1に渡された変数iはsub_1でしか操作出来ません #include<stdio.h> void sub_1(int i){ printf("%d\n",++i); } int main(void){ int i = 1; printf("%d\n",i); sub_1(i); printf("%d\n",i+2); return 0; } 並列処理は同時に変数をいじられると破綻するので局所化します http://www.ncad.co.jp/~komata/c-kouza28.htm クイックソート関数も局所化しないとできません https://www.codereading.com/algo_and_ds/algo/quick_sort.html 小難しく考えないでも色んなソースを書いてれば関数分け理解できますよ

zasx1098
質問者

補足

#include<stdio.h> void sub_1(int i){ printf("%d\n",++i); } int main(void){ int i = 1; printf("%d\n",i); sub_1(i); printf("%d\n",i+2); return 0; これは、どう言う意味になるのでしょうか?ご教授下さい。すみませんが。

その他の回答 (7)

  • shiren2
  • ベストアンサー率47% (139/295)
回答No.7

これは量がどうのというより、単に説明用に書いたからだと思いますよ。 普通はプログラミングで、こんなコードは書きません(メインルーチンがどうの以前に、GOTO文を使わない)。 コメントを見る限り、恐らくですが、「別の言語で書かれた問題をCで書き直すとこうなるよ」というサンプルではないでしょうか。

zasx1098
質問者

補足

#include<stdio.h> void sub_1(int i){ printf("%d\n",++i); } int main(void){ int i = 1; printf("%d\n",i); sub_1(i); printf("%d\n",i+2); return 0; これは、どう言う意味になるのでしょうか?ご教授下さい。すみませんが。

  • OK_WAVE
  • ベストアンサー率17% (22/125)
回答No.6

ソースの書き方は人それぞれお好みでいいですよ URLはgotoを使いメイン関数で制御分けする方法です メイン関数のみで完結するなら関数分けする必要ありません ただ再帰関数や並列処理はメイン関数のみで作るのは困難です 拡張性を求められるライブラリーもメイン関数だけでは出来ません

zasx1098
質問者

補足

サブルーチンを使った関数分けとは、どう言うことでしょうか?ご教授下さい。すみませんが。

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.5

>メインルーチンだけとはどういうことでしょうか? C言語でいうと、質問者さんが提示された サンプルコードのように、main関数「のみで」 処理が完結しているということです。

zasx1098
質問者

補足

ではなぜ今回のは、メインルーチンだけでも大丈夫なのでしょうか?ご教授下さい。すみませんが。 メインルーチンだけと言える理由は、なんでしょうか?No.1 の方は、たいした量じゃないからと言っていましたが、どのくらいの量だったら、サブルーチンを使うのでしょうか?これについても、 ご教示願います。

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.4

>これをメインルーチンにするとどうなるのでしょうか? 添付図のとおり、メインとサブに分かれています。 前に投稿したソースコードと、今回の図とを 見比べてください。 ところで、C言語の文法についてはどのくらいご存じなのですか?

zasx1098
質問者

補足

メインルーチンだけとはどういうことでしょうか?C言語については、全くの初めてです。ご教授下さい。すみませんが。

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.3

C言語ではメインルーチンやサブルーチンという用語は ほとんど使いません。すべて関数です。 以下の例では、main関数からf0, f1, f2の各関数を 呼び出しています。main関数に何でもゴチャゴチャと押し込むのは あまり適切とはいえない設計です。 呼ばれた側であるf0, f1, f2の各関数では、適当な文字列を 出力しています。 #include <stdio.h> void f0(void) { printf("hello, world!\n"); } void f1(void) { printf("Hello, World!\n"); } void f2(void) { printf("HELLO, WORLD!\n"); } int main(void) { f0(); f1(); f2(); return 0; }

zasx1098
質問者

補足

これをメインルーチンにするとどうなるのでしょうか?ご教授下さい。すみませんが。

  • t_ohta
  • ベストアンサー率38% (5238/13705)
回答No.2

サブルーチンと言うのは、一連の処理の中で同じ処理を繰り返す場合に、繰り返し行う処理を集約したモノです。 繰り返す回数が少なかったり内容が単純ならワザワザ集約しなくても可読性が高いので、無理に集約する必要は無いと言う事ですね。

zasx1098
質問者

補足

例えば、サブルーチンを使う場合はどの様な場合でしょうか?例を出していただけないでしょうか?ご教授下さい。すみませんが。

  • bardfish
  • ベストアンサー率28% (5029/17766)
回答No.1

たいした量じゃないから。

関連するQ&A