ページ 11

関数について

Posted: 2007年1月20日(土) 21:39
by きよてる
はじめまして。質問させてください。
大学でC言語を習っているのですが、
ただ漠然と教えられた事(structとかforとか)を教えられたとおりに使って、
課題を解いていただけでした。
ところが、この前、「関数とその役割について実例を用いて説明せよ」という問に
つまずいてしまいました。
習った事は使えても、意味をあまり理解していなかったのです。
僕は「main関数の行数を減らす役割」
と答えたのですが、全くもって見当違いですよね。
教えてください。

Re:関数について

Posted: 2007年1月20日(土) 22:36
by バグ
物凄く極論ではありますが、ある意味正しい解釈かもしれません(;^_^A

私が個人的に考える関数の存在意義というか、関数化の利点は…

1:同じコーディングを繰り返さなくてもよい。

2:エラーや変更があった場合に、その関数の中身だけを直せばよい。

などがありますね。ようするに、プログラムをする人が分かりやすくなるというのが、関数化の最大の目的ではないかと思っています。

Re:関数について

Posted: 2007年1月20日(土) 23:29
by Justy
 加えて捕捉するなら関数を使うことで

3: 複雑さの軽減
 使う側は内部で何をしているか気にしなくても良く、ただ何を渡すと何が戻ってきて何をしてくれるのかだけ知っていればいい。

4: 処理内容を明確にできる
 一連の処理に名前がついていると判りやすいし、(適切な名前が付いていれば)目的を明確にできるのでコードが読みやすくなる。

 ということが期待できます。

Re:関数について

Posted: 2007年1月20日(土) 23:40
by box
大規模なソフトウェアを開発する場合、一人ですべてを開発するよりも
複数人のチームで開発する方がコストや時間の点で有利になることがあります。

そういう場合、ソフトウェア全体で満たすべき機能を適切に関数分割しておくと、
・関数aとbの作成と単体テストは、鈴木さんに任せる
・関数cとdとeの作成と単体テストは、小林さんに任せる
・関数fとgの作成と単体テストは、田中さんに任せる
・全体の管理は、自分が行なう
という具合に、仕事の分割ができます。

他の人が担当する関数を使うときは、その中身のロジックを知らなくても、
Justyさんが書かれたように「何を渡せば何が返ってくるかを知っていさえすればよい」
ことになります。

Re:関数について

Posted: 2007年1月21日(日) 00:51
by きよてる
なるほど、関数を使うとそのような利点があるのですね。
皆さんありがとうございます。
何となくですが、理解できました。

Re:関数について

Posted: 2007年1月21日(日) 00:58
by 管理人
実例はいいのでしょうか?

どんなものかを教えてもらうより、自分で色々関数作って実行してみたほうが
よい文章が書けると思いますよ。

入門のサイトは沢山ありますから、その辺をながめて、自分で色々作ってみてください。