入門編『算術演算子』
<script
>
alert
(
"ボクはわるい魔導書じゃないよ"
)
;
alert
(
"へんじがない、ただの魔導書のようだ"
)
;
</script
>
エイダはしばらく忌々《いまいま》しげにスクリプトを観察していたが、気を取り直して魔導書に問いかけた。
「scriptとalertと『へんじがない、ただの魔導書のようだ』はそのままだけど、間には空白や改行は入れられないの?」
待ってましたとばかりに、魔導書は説明を開始する。
「例えば、alertを途中で切ってal ertに分けるとすると『alで何かないか?』『ertの関数はないか?』と魔導書が頑張って処理しようとする。しかしalもertも変数や関数では無いので、思った通りに処理されない」
「HTMLタグ名のscriptも同じ理由で切れない。また魔導書は『<』にアルファベットが続くとタグの始まりとして処理を開始するので、『<script』はひとかたまりにしないといけない。分けてしまうとタグと認識されず、普通に表示されるだけになってしまう。一旦タグだと処理されると、空白や改行を入れてもいい為、『>』は別の行でも大丈夫」
「ダブルクォーテーション『"』またはシングルクォーテーション『'』で囲まれた文字は『文字列』と呼ばれ、魔導書にただの文字の羅列ですよ、命令文とかでは無いですよと宣言してる感じ。改行を入れると、対になるクォーテーションが見つからないと文句を言ってくる。因みにスペースは入れても、文字列にスペースが追加されるだけなので問題ない」
長い説明を捲し立てられ少し唖然とするが、エイダは自分が理解した事を要約する。
「書いてある事が理解できなくなっちゃうから、空白や改行は入れられないって事?」
「うん、それ」
何故回りくどい説明をしたかったのかエイダには理解できなかったが、何か理由があるのだろうと、気を利かせてスルーした。おおかた面倒な伝えなければならない事を、全ていっぺんに済ませておきたかったのであろう。
「さて、エイダは算数は母親にどこまで教えてもらった?」
「足し算、引き算、掛け算、割り算はできるよ。後パーセントとか」
エイダの返答に、安心して魔道書は説明を続ける。
「足し算『+』、引き算『-』、掛け算『*』、割り算『/』は算術演算子と呼ばれ、魔道書の術式でも頻繁に使われている。まぁ、実際に見た方が早いか。では質問。この術式はどう表示されるでしょうか?」
<script>
alert(1+1);//足し算
alert(1-1);//引き算
alert(2*3);//掛け算『×』ではない
alert(4/2);//割り算『÷』ではない
</script>
入力領域に文字が綴られる。エイダは新しい文字に気が付き、質問する。
「alertの命令文の後ろに『//』があるけど、これは何?」
「これは解釈と言って、術者が伝えたい事や覚え書きを書く時に使う。『//』以降は行の終わりまで無視され、命令文として扱われない。コメントを無視するので、実際に処理されるのはこんな感じ」
<script>
alert(1+1);
alert(1-1);
alert(2*3);
alert(6/2);
</script>
「なんで解釈を書いたの?」
「『×』と『÷』の記号は、javascriptでは『*』と『/』と違うから、エイダに気づいて欲しいと思って。実際に分かり易かっただろ?」
「うん」
頷くエイダ。しかし疑問はまだある。
「何で『*』と『/』の記号が術式では使われるの?」
これには魔導書も、少し困ったように答える。
「プログラム言語の伝統かな?『FORTRAN』と呼ばれる古いのプログラム言語で扱える文字が極端に少なかった為、『*』と『/』が代用されたとか言われている。まぁ他には、アルファベットの『x』と掛け算の『×』と見分けが付かないとか、かな?」
javascriptの他にもプログラム言語があるのに驚いたエイダだが、魔導書も全ての答えを知っているわけではない事にも少し驚いた。
「で、どう表示されると思う?」
魔導書の催促に、エイダは自信を持って答える。
「『2』『0』『6』『3』が警告文で順番に表示される」
「正解」
術式が実行され、次々にエイダが答えた数が表示された。
「では質問、この答えは何だと思う?」
<script>
alert(1+2*3);
</script>
「あっ、これお母さんに教えてもらった。掛け算と割り算は、足し算と引き算より先に行うのが規則だから、まず2x3の掛け算を先にして『6』。それに『1』を足すから、答えは『7』!」
「その通り。ちゃんと勉強してるみたいだな」
警告文で『7』が表示される。
「因みに足し算を先に行いたい場合は、算数と同じように『()』を使う」
<script>
alert((1+2)*3);
</script>
術式が入力され、警告文で『9』が表示された。
母から教わった所が出てきて問題なく理解できたので、エイダも少し自慢げだ。そんなエイダに、魔道書はまた意地悪な質問を投げかける。
「それでは、これはどう表示されると思う?」
<script>
alert("こんにちは、エイダ"+3);
</script>
「えっ?」
エイダの拍子抜けした声が響いた。
ーーーーーーーー ログ ーーーーーーーーーー
エイダは『"』による文字列を理解した。
エイダは『'』による文字列を理解した。
『文字列』スキルがLV1になった。
エイダはコメント『//』を理解した。
『コメント』スキルがLV1になった。
エイダは加算『+』を理解した。
エイダは減算『-』を理解した。
エイダは乗算『*』を理解した。
エイダは除算『/』を理解した。
エイダは演算子の処理順を理解した。
エイダはグループ化演算子『()』を理解した。
『算術演算子』スキルがLV1になった。
ーーーーーーーーーーーーーーーーーーーーーー
登場人物
エイダ・ラブレス
冒険者に憧れている9歳の普通の女の子。
日本の小学生と同じくらいの学力?
職業:術者 LV1
称号:初心者
スキル:『関数 LV1』『構文 LV1』『文字列 LV1 new』『コメント LV1 new』『算術演算子 LV1 new』
関数:『alert()』
HTMLタグ:『<script>』
喋る魔導書
エイダが森の奥で出会った喋る魔導書。
流石にFORTRANは書けない模様。
作者より
活動報告に、一ヶ月の執筆活動のまとめらしきものを書きました。興味ある方はどうぞ。
小説の方、明日も更新できるかな?
参考にしたページ
なぜ『*』が『x』の代わりに使われたか?
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q139458303
四則演算の順序。 念の為。
https://keisan.otona-juku.com/01017four-arithmetic-operations/
JSfiddleサンプル
算術演算子
https://jsfiddle.net/AkiraMeru/kkxtnjkd/
算術演算子の順番
https://jsfiddle.net/AkiraMeru/kkxtnjkd/1/
算術演算子の順番2
https://jsfiddle.net/AkiraMeru/kkxtnjkd/2/
文字列演算子
https://jsfiddle.net/AkiraMeru/kkxtnjkd/3/