2010年11月1日月曜日

nScript講座 第7回

今回は以前告知したように、また関数についてです。
この間のスクリプトでは、単に処理をわけられるだけで他に
関数を分けて使うメリットがありませんでした。
(実はデバッグがしやすいというメリットもありますが)
しかし、こんだけのメリットのために関数をわけるやつはいないでしょう。きっと。

今回は関数を使うときの、本当のメリットを得られるようにしましょう。


講座は以下からどうぞ


ではサンプルを御覧くださいな。

//////////////////////////////////
Function main() {
a=circle(3);
puts ("rezult=%a%\n");
b=circle(5);
puts ("rezult=%b%\n");
}

Function circle(c) {
d=c*c*3;
return d;
}
//////////////////////////////////
::実行結果::

はい。実行しましたね?
サンプルの関数がなんで2つもあるんだ!?
って思った人、前回のをやりなおしてきなさい!w
これは、円周率を3としたときの、円の面積を求めるスクリプト、、のつもりです。
まあ、大丈夫でしょうから解説いきます。

今回は、関数の「引数」と「返し値」というものについて学んでいきます。
はじめっから説明だとうまくいかないので、まず全体の流れをみましょう。

1:main()開始
2:circle()に3を受け渡して、実行。
3:main()から受け渡された3をcに代入し、処理を行う。
4:return命令より、dの値を実行元のmain()に返す。
5:main()にて、返ってきた値をaに代入する。
6:結果を表示する。
7:2~6までの処理を変数bの場合で行う。
8:main()を抜けるので終了。

どうですか?
わかったようなわかんないようなですよね。
なんとなく、自分の中で推測をたててソースを解析してみてください。

では解説しましょう。
関数には、引数と返し値という2つの要素があることは先程述べました。
この二つはどういうものかというと、、
関数は、数学ではy=ax+bみたいなやつをいうじゃないですか。
あれはつまり、yの値を入れればxの値が出るということになりますよね?
ここがポイントです!
このときに、「入れる値」と「出る値」という二つの値がでてきました。
これがそれぞれ、プログラミングの関数でいう、引数と、返し値にあたります。
引数を受け渡して処理してもらうと、返し値が返ってくるということです。
この「処理」が、関数です。

仕組みがわかったら、ちょっとずつわかってきませんか?
関数を実行するときに、()内に値をいれることでその値を関数
に渡すことができます。これが引数(ひきすう)。
また、引数は渡しても受け取り元がなければいけません。
その受け取り元が、関数定義の際の()内にいれる変数です。

また、関数から返ってきた値は、変数=関数の代入式で変数に
代入することができます。
つまり関数そのものが値になるんですねー。
で、その値を返すにはreturn命令を使います。
return 返す値又は返す値の入った変数;
という風に使います。
return命令は、その関数から抜け出して、その際にパラメーター
に入っている値を返し値として返すという意味を持っています。
これで、return命令とbreak命令の違いわかりましたか?
break命令は単に関数から抜けるだけの命令です。

そして、このときに返す値を、返し値(かえしち)と呼びます。

全体の流れと書き方、意味の説明はこれで終了となります。
以下に上の内容を少し書き換えたサンプルをはります。
意味を考えてみてください。
//////////////////////////////////
Function main() {
circle(3);
circle(5);
}

Function circle(c) {
d=c*c*3;
return d;
puts ("rezult=%d%\n");
}
//////////////////////////////////
このタイプでは返し値を使っておらず、文字表示まで全部circle()に
任せてしまいました。
こっちの方がスクリプトが短くなりますよね。
こういうちょっとしたとこ、考えられるようになってください。
また、
//////////////////////////////////
Function main() {
puts ("rezult=%circle(3)%\n");
puts ("rezult=%circle(5)%\n");
}

Function circle(c) {
d=c*c*3;
return d;
}
//////////////////////////////////
なんていうのもありです。
こっちは、関数そのものが値になることを利用して、putsの中に
全部いれてしまったものです。
どっちのパターンでもありですが、読みやすさとか、自分なりに
工夫していってください。

はいはい。
次回は今日学んだ、関数の2つの要素と、gets()と、あとさらに
もう一個を利用して面白いアプリを作ろうと思います。
みなさんターミナルというものをご存知でしょうか?
それをしらなければコマンドプロンプトは?
そんなものを作っていきますぜい。
では。

0 コメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Walgreens Printable Coupons