だぶるばいせっぷす 新館

ホワイトカラーではないブルーカラーからの視点

【プログラミング】 python奮闘記 その3 ~変数と代入

前回は、プログラミングを使うと計算ができますよ。ということについて書き、その後、代入の重要性に少し触れたところまで書きました。
kimniy8.hatenablog.com
今回は、その続きを書いていきます。

プログラミングでは、自分で勝手に作った『変数』と呼ばれるものに、様々なモノを代入することが出来ます。
代入によって数値がコロコロ変わるので、代入される側は『変数』と呼ばれています。
そしてプログラミングとは、大雑把に言ってしまえば、『変数』に『代入』するという行為の連続ともいえるかもしれません。

他の例で考えてみると、学問の分野に『経済学』と呼ばれる分野があります。
複雑な計算式などを使って様々な指標を生み出し、その指標を読み解くことで経済を読み解いていこうという分野で、素人目に観ると、複雑そうで難しそうな印象を受けてしまいます。
しかし、経済学を基本レベルまで分解してみていくと、小中学生で習う『需要』と『供給』というところに行き着きます。

例えばパンを製造販売している店が有って、パンを買いたいと思っている消費者がいる。
この場合、店側が供給サイドで、消費者側は需要サイドと言うことになります。
店側は、同じ手間暇をかけて作ったパンなら、『出来るだけ高く売りたい』と思うその一方で、消費者側は『できるだけ安く買いたい』と思っている。

ただ、供給サイドは『売れなければ売上にならないし収入も増えない』為に、妥協して売れる値段で販売しなければならない。
一方、需要サイドは、食品を買って食べなければ、いずれ餓死してしまう。
両者ともに、『売らなければならない理由』と『買わなければならない理由』があり、妥協した末に、両者が納得できる価格を見つけ出す。それが、現在の価格ということになります。

経済学の理論や計算式は複雑に見えるかも知れませんが、経済の基本を突き詰めていくと、最終的には『需要』と『供給』というところまで行き着きます。

プログラムも同じようなものらしく、どんなに大きなプログラムであったとしても、突き詰めていくと、ユーザーが起こしたアクションを『変数』に『代入』して数値を加工するというところに突き当たります。
プログラムは、ユーザーが数値を打ち込んだり、何らかの選択肢を選ぶ事で元となる数値が入力され、その数値を計算によって加工して、目的となる答えを導き出します。

つまり、プログラムが進むことで、変数がどのように変化しているのか、そして、変化させる為にどの様な方法が使われているのかという事が完璧に理解できるのであれば、プログラムは読み解けるし、応用すれば書くことも出来るというわけです。
前回、変数を制するものはプログラミングを制すると書いたのは、この理由からです。

では具体的に、『変数』にどのようなものを代入できるのでしょうか。
私の様にプログラミングの知識がゼロの初心者では、代入と聞くと、単純に数値を当てはめることぐらいしか思いつきません。
例えば
a=3
b=7
と数値を代入した場合は、a+cを実行すると『10』という答えが返ってくる。でも、これだけであれば、わざわざ代入する必要もなく、普通に3+7とすれば良いだけですよね。
何故、わざわざ代入するのかというと、この変数は、素人が考えるよりも多くのものを代入できるからなんです。

例えば、複数の数値や計算式その物を代入することが出来ます。
x=200, 300, 400 といった具合に、一つの変数に複数の値を代入することも出来ますし、 x=x+1 といった計算式も代入することが出来ます。
ここで、x=x+1 という計算式に違和感を持たれる方も多いかも知れません。 『=』を、普通の算数と同じ様に『右辺と左辺が同じ値(イコール)』だと思っている場合、計算式自体が成り立ちませんよね。
ただ、プログラミングでいうところの『=』は、前回も書きましたが、『右辺の数値を左辺に代入する』という意味しか無く、算数的な意味合いのイコールを使いたい場合は、『==』とイコールを2個続けて表記する必要があります。
この辺りをしっかりと認識しておかないと、プログラムを読む際にも書く際にも面倒な事が起こりがちなので、注意が必要ですね。

その他には、比較的理解もしやすく重要な代入の使い方として、『数値のわからないものを仮定する』という使い方も出来ます。
先程も書きましたが、プログラムとは、基本的にはユーザーに何らかのアクションを起こして貰って、それをキッカケにして計算結果を出すものです。
例えば、3つ程の数字を記入する欄があり、その欄に数字を記入して『開始』ボタンを押すことで、何らかの計算結果を出してくれるプログラムが有るとします。
このプログラムは、ユーザーに3つの数字を入力してもらい、その数値を元に計算を行うわけですが…

プログラムを書いている時点では、ユーザーがどの様な数値を入れるのかは分かりません。
ですが、ユーザーが入力する数字を変数に代入するという作業を行い、その変数を利用して計算式を書くという方法であれば、入力欄にはどの様な数字を入力されたとしても、計算が行えることになります。

例えば
入力欄A【  】 入力欄B【  】 入力欄C【  】
という入力欄を作り、入力された数字の合計値を出したい場合、それぞれの入力欄にA.B.Cという名前をつけて代入し、その変数を元に計算式を書けばよいということになります。
A=入力欄A
B=入力欄B
C=入力欄C
answer=A+B+C
こうすれば、入力欄にどんな数字が入力されたとしても、簡単に計算することが可能です。
ちなみにですが、この場合はA+B+Cの合計値を『answer』という変数に代入しているだけなので、この変数を使って別の計算式を作ることも可能です。
また、前回から書いている作業は重ねがけが可能です。

例えば、入力欄A.B.Cで得られた値がstrという『文字列』属性を持っている場合は、answerに代入される答えば、自分が思っているような答えになりません。
『整数の数字』で足し算をしたいのであれば、A=入力欄A を A=int(入力欄A)、小数点以下も扱いたいのであれば、A=float(入力欄A) という風に属性指定する必要も出てくる場合があります。

この代入に関しては、かなり奥が深い様なので、私自身もまだまだ表層的な部分しか理解できていませんが、代入に関しては一旦ここまでにしておいて、次回は、プログラムでより複雑な計算ができるようになる、条件分枝をやっていきたいと思います。
kimniy8.hatenablog.com