見出し画像

サルでもわかる「変数」解説【初老のためのプログラミング講座】

「数学が苦手なのでプログラミングができません」という人のほとんどは、数学以前の問題で、「変数の概念」を理解していないということがわかってきた。

小学生の時に「x,yを使わないのは面倒だな」という場面に出くわすことがあるが、それは「変数の概念が難しい」ということを先生方がわかっているからである。

変数は隠語のようなものである。だから変数がわからない人は隠語が通じない。スパイはまず無理だ。

例えば、「最近さ、お台場が燃えてるじゃん。そのうちに赤坂にも飛び火するよ」というような会話ができない。

逆に変数がわかっていると、国語力だけでプログラミングは突破できる。物事の「言い換えスキル」はその人の人生を逞しくする。

では、変数をどうやって学べば良いか?
プログラミングをやるのが一番だ。
人間がタンパク質でできているように、プログラミングは変数でできている。
だからコードを書いて解説してみる。

コードはnoteでは実行できないので、
コラボラトリーにコピペして実行してみてほしい。

apple = '毒りんご'
print(apple)

apple = 1
print(apple)

上記のappleが変数である。プログラムコードにおいて、
「=」の左にあるものはほとんど「変数」といっていいだろう

変数を英訳すると「variable」である。
要するに変えることができるものである。
この派生語が「variety」である。
カタカナにすると「バラエティ」。いま渦中にあるアレだ。

上のコードでは、appleに一度は「毒りんご」が入れられたが、
数字の「1」が再代入されている。
つまり、変数は上書き可能であり、女の恋のようなものである。

次に変数を足し算してみよう。

x = 1
y = 2
print(x + y)


name1 = 'まつもと'
name2 = 'なかい'

print(name1 + name2)

上記のように数字同士、文字列同士なら足すことができる。

では、「まつもとなかいで2名です。」と表示するにはどうしたら良いか?

print(name1 + name2 + 'で' + str(y) + '名です')

上記のように、「y」を「str変換」すれば良い。
このように、変数には、どんな値がどんな「データ型」で入っているのか気にしなくてはならない。

文字列であれば「string型」、数字であれば「int型」である。
他にも「True,False」の「Boolean型」などがある。
初老の諸君はこの3つで十分だ。
浮動小数点型とかを気にしてたら脳卒中になってしまうからだ。

他にも、変数には複数のデータを格納することができる。
これを「コレクション型」というのであるが、
初老の諸君は、「リスト型」と「辞書型」の2つで十分だ。
頭が悪いやつほど欲張りなものである。
些末なことを覚えても使えなければ意味がない。

garbage = ['NHK','日テレ','TBS','フジテレビ','テレ朝','テレ東']
print(garbage[3])

rubbish = {'お台場':'フジテレビ','六本木':'テレ朝', 'TBS':'赤坂'}
print(rubbish['お台場'])

上のゴミは「リスト型」で「インデックス番号」で参照できるのに対して、
下のゴミは「辞書型」で「キー」で参照することができる。

とにかく変数に[]がついてきたら、何かのデータを取り出してきているということだ。
ちなみに、変数に()がついてきたら、それは変数ではなく「関数」である。要するにprint()は関数であるということである。

あと、変数のウルトラCとして、オブジェクト型というのがある。

# クラスの定義
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def greet(self):
        return f"こんにちは、私の名前は{self.name}です。{self.age}歳です。"

# オブジェクトの作成
person1 = Person("まつもと", 61)
person2 = Person("なかい", 52)

# オブジェクト型変数の使用
print(person1.greet())  # => こんにちは、私の名前は太郎です。25歳です。
print(person2.greet())  # => こんにちは、私の名前は花子です。30歳です。

print(person1.name)
print(person2.name)

上記のように、右に「.」(ドット)をつけて、さらにに右に関数(メソッド)を足したり、「peson1.name」といった感じでデータを引き出すことができる。
初老の諸君は、深い理解は不要だ。お漏らししてしまわぬように気をつけよう。
変数の横に「.」があれば「インスタンスを疑え」ということである。

さて、このように、変数には、いろいろなデータが入っていることがわかった。なのに初老の諸君がこじらせるのは、そのデータの中身が連想できないからである。

変数はバケツ、プログラミングは情報のバケツリレーのようなものである。
情報は同じでも、バケツの名称が変わったり、同じ名称でも型が変わったりすることもある。

変数には必ず用途がある。
初老の諸君はコメント文でいちいち付箋を貼っておこう。
コードを見ていて思うことは、頭の悪い子ほど、メモが残っていない。
自分を過信しすぎだ。あなたよりも賢い人ほど、
ちゃんと変数の用途や具体例もコメント文で残しているのである。
そもそも、プログラミングは暗記ではない。
記憶媒体から情報を引き出すルールブックである。

新しい変数を作れば、その直後にその変数を使った処理が足される。
こんな風にいつのまにか、どこで何やっているのかわからなくなってしまう。まるで賄賂の金のようである。
でも、コードはロンダリングをしているわけではない。
自分の脳がロンダリングされて、記憶ごと洗浄されただけである。

そんな時、変数にあらためて、具体的なデータをつっこめばいい。
そうすれば、その関数がどういう処理をしているのかがわかる。

def f(x):
  return 2 * x + 1

x = 1
y = f(x)
print(y)

例えば、x の値をころころと変えて、実行するのだ。

だんだん、サルでもわからなくなってきそうなので、
筆者はここで筆を措くことにする。


いいなと思ったら応援しよう!

テックジム創業者:藤永端(みんなのグラさん)のIT業界裏話
よろしければサポートお願いします。その際はご依頼に答えた執筆をいたします。サポートの際にご依頼文を添えていただけますと幸いです。