第5講 メソッド=部下(社員)=子分の学習
第6話 社員専用の箱を他の社員に貸して、その箱で仕事をしてもらう
今話でも事例(具体例のことですよ。)を先に示してから、
内容を説明することにしましょう。
#! ruby -Ks
def g(a)
print a,"\n"
end
a="おはよう!"
g(a)
参考ダウンロード添付ファイル
実行結果
社員gは、画面にaの内容を表示するという仕事をする人です。
社長が社長専用の箱aを社員gに貸すには、
def g(a)
print a,"\n"
end
a="おはよう!"
g(a)
のようにします。
g(a)の括弧の中のaのことを引数(ひきすうと読みます。)といいます。
もちろん、
def g(a)
print a,"\n"
end
g(a)
a="おはよう!"
と変更するとエラーします。
参考ダウンロード添付ファイル
理由はお分かりですよね。
aという箱に何も入れていない段階で、
aという箱の中身を表示せよと命令しているわけですから、
当然エラーします。
さらに、コードを次のように変更して下さい。
#! ruby -Ks
def g(a)
print a,"\n"
end
a="おはよう!"
g(a)
def f(a)
a="今日はよい天気ですね。"
return a
end
a=f(a)
g(a)
参考ダウンロード添付ファイル
実行結果
社員fによって、社長専用の箱の中身が社員fによって書き換えられました。
return a
はaの中身を返すという意味です。
どこに返したかというと、
仕事を依頼した人に返しています。
今回は依頼主は社長ですから、
社長に返したわけです。
返す値のことを『戻り値』といいます。
ただ、このコードのa=とreturn aを削って、
#! ruby -Ks
def g(a)
print a,"\n"
end
a="おはよう!"
g(a)
def f(a)
a="今日はよい天気ですね。"
end
f(a)
g(a)
とすると、実行結果は
となってしまいます。
実は、変数の場合には箱を貸したという表現は誤りです。
貸したのは、箱そのものではなく、箱の中身です。
箱の中身をコピーして渡したのです。
#! ruby -Ks
def g(a)
print a,"\n"
end
a="おはよう!"
g(a)
def f(a)
g(a)
a="今日はよい天気ですね。"
g(a);
end
f(a)
g(a)
参考ダウンロード添付ファイル
実行結果
つまり、変数の場合引数で渡しているものはあくまで値(箱の中身のコピー)です。
そして、
結局、社長の箱aと社員fの箱aは別物なのです。
ですから、社長の箱の中身は変わりらないのです。
ただ、この後配列を学びますが、
配列の場合には、箱そのものを貸したと考えてよいのです。
下は、ざっと眺めるだけで、理解しようとはしないで下さい。
配列を学んだ後であれば、理解できますので、
配列を学習してからこのページに戻って下さい。
#! ruby -Ks
def g(a)
print a[0],"\n"
end
a=[""]
a[0]="おはよう!"
g(a)
def f(a)
a[0]="今日はよい天気ですね。"
end
f(a)
g(a)
参考ダウンロード添付ファイル
実行結果
社長の箱a[0]の内容が書き換わっています。
社長が箱を渡して、社員fが箱の中身を取り替えたからです。
さて、引数と戻り値を利用して
1+2+・・・+100+101+・・・+200
の計算を分業でやることにしましょう。
1+2+・・・+100
までの計算を社員fにさせて、
その結果を社員gに送り、
残りの計算をgにやらせ、
その結果を画面に表示するプログラムを考えて下さい。
eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門
数独のシンプルな解き方・簡単な解法の研究
vc++講義へ
vba 2013 2010 2007 入門へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
専門用語なしの C言語 C++ 入門(Visual C++ 2010で学ぶ C言語 C++ 入門)
専門用語なしの excel vba マクロ 入門 2013 2010 2007 対応講義 第1部
eclipse java 入門へ
excel 2016 vba 入門第1部へ
本サイトトップへ