●定形の郵便料金は25gまで80円、50gまで90円で、それ以上は定形外料金となります。重さを入力してもらい料金を表示するプログラムを作るとします。
SET ECHO "OFF" LET limit1 = 25 LET ryokin1 = 80 LET limit2 = 50 LET ryokin2 = 90 INPUT PROMPT "重さは?":omosa IF omosa > limit2 THEN PRINT "定形外料金です" ELSE IF omosa > limit1 THEN LET ikura = ryokin2 ELSE LET ikura = ryokin1 END IF PRINT "料金は";ikura;"円です" END IF END
●最初のIF文で条件が成立しないときだけ、次のIF文が実行されます。最初のIFでは定形外かどうかを判断し、次のIF文では25gより重いかどうかを判断します。
●最初の部分で数字を変数に入れているのは、郵便料金の変更があったときにどこを直せばよいかすぐわかるようにするためです。
●2重のIF文の使い方はわかったと思いますが、どうもわかりにくい表現です。25gまで80円つまり、limit1 まで ryokin1 というのが見えればよりよくなるでしょう。
SET ECHO "OFF" LET limit1 = 25 LET ryokin1 = 80 LET limit2 = 50 LET ryokin2 = 90 INPUT PROMPT "重さは?":omosa IF omosa =< limit1 THEN PRINT "料金は";ryokin1;"円です" ELSE IF omosa =< limit2 THEN PRINT "料金は";ryokin2;"円です" ELSE PRINT "定形外料金です" END IF END IF END
●=< は≦の意味です。<= という書き方も許されます。= が入るかどうかは条件によります。この例では25のときにどう判断して欲しいかということです。
●前のプログラムの内容は次のように書くこともできます。
SET ECHO "OFF" LET limit1 = 25 LET ryokin1 = 80 LET limit2 = 50 LET ryokin2 = 90 INPUT PROMPT "重さは?":omosa IF omosa =< limit1 THEN PRINT "料金は";ryokin1;"円です" ELSEIF omosa =< limit2 THEN PRINT "料金は";ryokin2;"円です" ELSE PRINT "定形外料金です" END IF END
●limit1 まで ryokin1 というのがよりわかりやすい形になっています。このほうが間違いがなく、プログラムの修正もしやすいはずです。
●たとえば、75gまで100円というようになったときは ELSEIF を増やせばよいのです。
●ある商品は普通1個100円だが10個以上買うと1個90円に、100個以上買うと1個80円になるなるという。個数を入れると1個の値段と全部の金額が出るプログラムをつくりなさい。
IF kosuu < 10 THEN LET tanka = 100 LET soukei = tanka * kosuu ELSEIF … …?? PRINT "単価";tanka;"円 全部で";soukei;"円"
結果は、
単価90円 全部で990円
●aとbとが等しくないこと(a≠b)は,a<>b または、a><b と書きます。
●数学では 25 < x ≦ 50 という書き方をしますが、BASICでは 25 < x と、x =< 50 に分けて書かなければなりません。
●AND,OR,NOTと括弧を用いて複雑な条件を記述することができます。 たとえば,「p かつ q」という条件をBASICでは p AND q と書きます。また,「p またはq」をBASICでは p OR qと書きます。 これを使えば 25 < x ≦ 50 も 25 < x AND x =< 50 と書いて一つの式にできます。AND よりも < の判断を先にしますからこのままでもいいのですが、( 25 < x ) AND ( x =< 50 ) の方がわかりやすいでしょう。