第5講 メソッド=部下(社員)=子分の学習
第3話 変数のききめのおよぶ広さ(有効範囲)

#! ruby -Ks
a=5
b=8
def f
 print a,"\n"
end
def g
 print b,"\n"
end
f
g

参考ダウンロード添付ファイル


エラーしてしましました。
どうしてでしょうか。
Rubyは、変数=箱に何も入っていない状態で、
 print a,"\n"
箱の中身を表示させようとするとエラーするわけですが、
a=5
によって、aという箱にはちゃんと5が入っていたはずではないのでしょうか。

ところが、違うですよ。
変数のききめの広さ、すなわち変数の有効範囲は、
会社全体ではなく、
個人=社員に限られているのです。
初心者、特に小学生は『何言っての?意味が分からない!』ですよね。
小学生にも分かるように詳しく説明しましょう。
#! ruby -Ks
a=5
b=8
def f
 print a,"\n"
end
def g
 print b,"\n"
end
f
g
今回のプログラムに登場している社員(社長を含む)は何人ですか。
#! ruby -Ks
a=5
b=8

def f
 print a,"\n"
end

def g
 print b,"\n"
end
f
g

ですから、3人です。
青色の社長、
薄茶の社員f、
ピンクの社員gの人です。
同じaでも、aは社長専用の箱、aは社員f専用の箱なのです。
同じ名前aでも、この会社には2つの箱があるのです。
社長専用の箱aと社員f専用の箱aです。
社長といえど、社員f専用の箱aを勝手に使うことは出来ないのです。
逆に、社員fの勝手に社長のa箱を使うことも出来ないのです。
(2つの文に「勝手に」という言葉がついていることに注意して下さい。
社長側や社員側が使って良いよと、いっている場合には、
社長専用の箱や社員専用の箱も使うことも出来るのです。
社長(または社員)側が使って良いよ、
というより、社長(または社員)専用の箱を使って仕事をするように依頼する仕方は、
第6話で学びます。)
用意される変数は、すべてその人専用の箱なのです。
では、会社全体で共有される箱はないんでしょうか。
あります。
ただし、その箱の名前は大文字で始まる名前
(といっても、本講義は箱の名前は原則3文字以内、基本1文字ですから、
Aのように1文字ですが、名前ですから最初が大文字であれば、
もちろん自由につけられます。例えば、Kaisyanohakoなです。
自由といっても、使える文字はすべて半角で、
アルファベット、数字、アンダーバー_に限定されますし、
数字を一番前にもってきてはいけないきまりになっています。)
でなければなりません。
ですから、
#! ruby -Ks
A=5
B=8
def f
 print A,"\n"
end
def g
 print B,"\n"
end
f
g
参考ダウンロード添付ファイル

に変更すると、

とエラーしません。
大文字で始まる変数は、会社全体で使える箱で、
小文字で始まる変数は、その社員専用の箱なのです。
会社全体=プログラム全体で使える箱=変数をグローバル変数、
その社員専用の箱=変数をローカル変数といいます。
グローバルは世界的なとか全体的なという意味ですし、
ローカルは地方的なとか地域的なという意味です。
ちまり、1つの地域・地方でしか使えない変数をローカル変数といい、
全体で使える変数をグローバル変数というのです。
専門用語が出てきましたので、
ついでに説明しておきますと、
変数の有効な範囲(ききめの広さ)をスコープといいます。
それぞれ変数のスコープは
#! ruby -Ks
a=5
b=8

def f
 print a,"\n"
end

def g
 print b,"\n"
end
f
g
色のついている範囲に限定されます。
ですから、エラーの原因が分かります。
def f
 print a,"\n"
end

aのスコープ(有効範囲)外です。
それに対して、
#! ruby -Ks
A=5
B=8
def f
 print A,"\n"
end
def g
 print B,"\n"
end
f
g
の方は、Aのスコープは全体におよびますから、

def f
 print A,"\n"
end
においても有効なのです。

まとめ
小文字で始まる変数はローカル変数といってその社員専用の箱
大文字で始まる変数はグローバル変数といって会社全体で共有される箱
変数の有効な範囲(ききめの広さ)をスコープという。

第2話へ 第4話へ
004


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部へ
本サイトトップへ