![見出し画像](https://assets.st-note.com/production/uploads/images/171866759/rectangle_large_type_2_e1abde63e98835e1fb78c64f0980ffe4.png?width=1200)
サルでもわかる「変数」解説【初老のためのプログラミング講座】
「数学が苦手なのでプログラミングができません」という人のほとんどは、数学以前の問題で、「変数の概念」を理解していないということがわかってきた。
小学生の時に「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業界裏話](https://assets.st-note.com/production/uploads/images/166724588/profile_73c6f2bc5c6194530412d7644e7d51b1.png?width=600&crop=1:1,smart)