はじめに
ここではif文を書くような場面でのコマンドを紹介します。
メモリについて
説明をする前にメモリについて解説します。前のページでs xとl xについて紹介しましたが、このxがメモリです。前のページでは変数と書きましたね。この後でxを実行すると表現しますが、これはxというコマンドを実行するという意味ではなくxに入っている内容を実行するという意味です。xには数値や文字列を入れることが出来ますが、xを実行するとそれがコード内に書かれていたときのように動きます。メモリは0で初期化されているのでメモリに何かを入れるような操作をしていない場合は0をスタックに積むことになります。このページではこの0を積む操作をする問題だけを扱います。
>x
スタックから2つの値を取り出し、一番上の数値が二番目の数値より大きい場合にxを実行します。
1 2>0
ややこしいのですが、この場合一番上は2になっているのでこうなります。
0というメモリには何も入れる操作をしていないので0が入っています。
2 2>0
不等号が成り立たない場合は何もしません。
!>x
他の大抵の言語と同様、「!」を前に付けると否定の意味になります。
スタックから2つの値を取り出し、一番上の数値が二番目の数値より大きい場合にxを実行します。
1 2!>0
2 2!>0
<x
面倒なのでここから説明は省きます。
2 1<0
1 2<0
!<x
2 1!<0
1 2!<0
=x
2 2=0
2 1=0
!=x
2 2!=0
2 1!=0
実際の問題
[NO][YES]?%0=0rp
入力 | 1 1 |
---|
出力 | YES |
---|
入力 | 2 29 |
---|
出力 | NO |
---|
このように不等号が成り立つかで、スタックの数に差を付けて出力を操作します。
おわりに
ここまでの知識で解ける問題があるのでこちらの「単純なif」の箇所にある問題を解いてみましょう。
次回はもう少し複雑なif文を使うような場合の操作を勉強します。