見出し画像

ハジメの一歩会① 変数編

「ハジメの一歩会」記念すべき、第一回です。
初回は変数について。
まずは、会の趣旨などの説明です。

続いて、変数をまずは実感してもらうためのテスト。
「67+38」を暗算で解いてみる。

まずは一の位の計算 → 結果を記憶①
つぎに十の位の計算 → 結果を記憶②
①+②=105
となる。
この「結果を記憶①」「結果を記憶②」が変数に該当する。
「結果を記憶」なんて名前だと、なんの結果を記憶するのかわからないので、変数名を付けて、なんの記憶領域か識別できるようにしておく。

ちょっと横道にそれてアセンブラの話。
アセンブラとは、CPUの命令(マシン語)を人がわかりやすいような命令に置き換えた言語。のことだけど、とても分かりやすいとは言い切れない。
ただ、昔は8bitCPUが当たり前の時代だったので、命令数も多くなく、高速で動くアセンブラは比較的手軽な言語だった。
なぜアセンブラの話をしたかというと、アセンブラの中には変数という概念はなく、値はメモリに直接保存していた。保存先はメモリの番地で管理するので、わかりやすい名前なんてなく、0x1C91とか0xF0A3とか管理していたんだけど、BASICでは変数があって便利でした、という回顧話でした。
そして、同世代には懐かしい言語(フォートランも、PL/1も!)

計算問題に戻って、自分としては、上記のような解き方が一般的かな、と思ったのですが、いくつか他のご意見も頂きましたので、ご紹介です。

つづいて、変数型の話。
数値型には数値だけ、文字列型には文字列だけが入りますよ、という話。ちなみに、文字列をプログラム内で指定する場合は「"」で囲みます(もしくは「'」で囲みます)。
話は、各言語系の変数型の話へ…。VBAではlongを使うけど、.net系ではIntegerを使う等の話。両者の比較はYuzunokiさんがツィートしてくださったので、拝借しちゃいますw

もう1つ、参照渡しと値渡しの話。ここはCでいうところのポインタにも関わってくるので、会では今回は深追いはせず。セカンドシーズン?(二歩目の一歩会?)で取り上げるか検討。

つづいて、型変換の話。
数値型と文字列型は計算できませんよ、という話(言語系によっては計算してくれちゃう言語もありますがー)。

実際にコードを動かして試してみよう!
ということで、paiza.ioをつかってみました。

で、実際にコードを実行してみると、こんな感じに。
下部の出力のところに正解が出力されます。
今みたら、同時編集とかもできるっぽいので、生徒さんのロジックをみんなで共有して不明点を解決する、なんて使い方もできるかも。

最後は変数のスコープですね。会の中では言えなかったですが、有効範囲のことですね。有効範囲は宣言されたブロック配下のみ使える、というものです。下記の例では、A/Bブロック内では宣言された変数以外を利用しておりエラーがかえってきていますが、Cブロックは変数bはBブロックで、変数cはCブロック内で宣言されており、Cブロック内のb+cは正しく計算されるため、エラーにはなりません。

まとめ

  • 変数は、プログラムの記憶領域

  • 変数には型があり、型を宣言して使う

  • 同じ型同士でなければ、計算できない

まとめからの、おまけ(笑)
自分が過去に変数宣言をしなかったためにドツボにハマった事例から…
下記ですね。わかりますか??
「AI = Al +1 」となっていますが、実際には「AI=Al+1」(えーあい=えーえる+いち)となっていました。変数Al(えーえる)は初出の変数なので0で初期化され、+1となっているため、答えは1となりました。
ここで言いたかったのは、変数宣言は大事ですよ!ということですw

次週は条件判断について。
次週のZoom会は30日(金)ではなく、29日(木)に開催します!

資料共有

次回は、条件分岐編です。

この記事が気に入ったらサポートをしてみませんか?