13章 関数を使ってみよう!
今回は、「関数」というものを学びます。「かんすう」と呼びます。
関数とは、
- まとまった処理をしてくれる
- なにかを渡すと、なにかをしてくれる
といったような機能をもっています。
今回は、「まとまった処理をしてくれる」というのを見ていきたいと思います。
「まとまった処理」といってもいろいろあります。
今回は、ロボットになにかやらせることを考えましょう。
ロボットにプログラムして人間のかわりに用事をすませてもらえれば、とても便利になります。
それでは、ロボットに買い物にいってもらいましょう。
use strict; print "家から出る\n"; print "道を歩く\n"; print "ショップに着く\n"; print "みかんを買う\n"; print "りんごを買う\n"; print "ショップから出る\n"; print "道を歩く\n"; print "家に着く\n";
これを実行すると、
家から出る 道を歩く ショップに着く みかんを買う りんごを買う ショップから出る 道を歩く 家に着く
こんな感じです。いつか本当にロボットを動かせる日を夢見て、いまはこれで我慢しましょう(残念すぎる)。
それでは、
次の日になったとして、同じものを買ってきてもらいましょう。
プログラムにするとこんな感じです。
use strict; print "家から出る\n"; print "道を歩く\n"; print "ショップに着く\n"; print "みかんを買う\n"; print "りんごを買う\n"; print "ショップから出る\n"; print "道を歩く\n"; print "家に着く\n"; print "\n"; print "-- 次の日 --\n"; print "\n"; print "家から出る\n"; print "道を歩く\n"; print "ショップに着く\n"; print "みかんを買う\n"; print "りんごを買う\n"; print "ショップから出る\n"; print "道を歩く\n"; print "家に着く\n";
実行すると、
家から出る 道を歩く ショップに着く みかんを買う りんごを買う ショップから出る 道を歩く 家に着く -- 次の日 -- 家から出る 道を歩く ショップに着く みかんを買う りんごを買う ショップから出る 道を歩く 家に着く
こうなります。
そしてまた、次の日も、同じものを買ってきてほしくなりました。
プログラムにすると....
use strict; print "家から出る\n"; print "道を歩く\n"; print "ショップに着く\n"; print "みかんを買う\n"; print "りんごを買う\n"; print "ショップから出る\n"; print "道を歩く\n"; print "家に着く\n"; print "\n"; print "-- 次の日 --\n"; print "\n"; print "家から出る\n"; print "道を歩く\n"; print "ショップに着く\n"; print "みかんを買う\n"; print "りんごを買う\n"; print "ショップから出る\n"; print "道を歩く\n"; print "家に着く\n"; print "\n"; print "-- さらに、次の日 --\n"; print "\n"; print "家から出る\n"; print "道を歩く\n"; print "ショップに着く\n"; print "みかんを買う\n"; print "りんごを買う\n"; print "ショップから出る\n"; print "道を歩く\n"; print "家に着く\n";
うわわわわ。なんだか とっても大変なことに!!!!!
ここで、関数! 関数を使いましょう!!
関数ができるのは「まとまった処理」ですよ〜〜〜
そう! まとまった処理!
print "家から出る\n"; print "道を歩く\n"; print "ショップに着く\n"; print "みかんを買う\n"; print "りんごを買う\n"; print "ショップから出る\n"; print "道を歩く\n"; print "家に着く\n";
ここの部分ですね。ここが何回もでてきている!
ここをまとめて、ひとかたまりにして、
ロボットに「買ってきて〜」とこれだけお願いすれば、買ってきてもらえるようにしたい!!
さて、この関数なんですが、関数にも変数と同じように、名前をつけてあげなければいけません。
buy という名前にしましょう。英語で「買う」の意味です。
そうすると、こうなります。
sub buy{ print "家から出る\n"; print "道を歩く\n"; print "ショップに着く\n"; print "みかんを買う\n"; print "りんごを買う\n"; print "ショップから出る\n"; print "道を歩く\n"; print "家に着く\n"; }
これで、まとまった処理の完成です。これで「買ってきて〜」とお願いするときは、
プログラムでは、
buy();
と書けばいいことになりました! とってもラクチン!
ということで、次の日も、その次の日も同じものを買ってきてもらうようにするには、次のようにできますよ〜
use strict; sub buy{ print "家から出る\n"; print "道を歩く\n"; print "ショップに着く\n"; print "みかんを買う\n"; print "りんごを買う\n"; print "ショップから出る\n"; print "道を歩く\n"; print "家に着く\n"; } buy(); # 関数を使った! print "\n"; print "-- 次の日 --\n"; print "\n"; buy(); # 同じ関数を使う! print "\n"; print "-- さらに、次の日 --\n"; print "\n"; buy(); # さらに同じ関数を使う!
実行してみましょう。
家から出る 道を歩く ショップに着く みかんを買う りんごを買う ショップから出る 道を歩く 家に着く -- 次の日 -- 家から出る 道を歩く ショップに着く みかんを買う りんごを買う ショップから出る 道を歩く 家に着く -- さらに、次の日 -- 家から出る 道を歩く ショップに着く みかんを買う りんごを買う ショップから出る 道を歩く 家に着く
やった〜 大成功!! もう同じことを何回も書かなくていいようになりました。
これが関数の、「まとまった処理をしてくれる」パワーです。
このように、なんかうっとうしい、自分ひつこいような気がすると思ったときに「関数」は使えますよ〜
ぜひ使っていけるようにしましょう。