Part11: 条件分岐

ダイヤ「・・・というわけで、浦の星女学院の募集枠は100名。今年の志願者がこれに満たなければ沼津の高校と統合ですわ」
果南「・・・昨年の志願者数は?」
ダイヤ「・・・志願者14名、合格者12名ですわ」
果南「・・・7倍に増やせと?」
ダイヤ「・・・鞠莉さんからはそう聞いていますわ」
花丸「沼津ずら!大都会ずら!」
ダイヤ「ええいお黙りなさい!だいたい沼津を大都会呼ばわりしているようでは、貴女秋葉原へ行ったらショック死しますわよ!」


ダイヤ「このような状況をSchemeで表現するための仕組みが条件分岐ですわ」
花丸「Schemeで秋葉原へ」
ダイヤ「行かれません」
花丸「つまんないずら・・・」
ダイヤ「つまりは、志願者の数によって未来が分岐するのです」

ダイヤ「条件分岐の基本はifですわ。(if test-expression then-branch else-branch)の形で、test-expression#tになればthen-branchが、#fになればelse-branchが評価されます」
果南「(>= 14 100)#fだから廃校、と」
花丸「(define applicant 100)にしたら存続になったずら」
ダイヤ「このようにして、何かの条件に基づいて異なる処理を行いたい場合にifを用いますわ」


ダイヤ「ifでは2択しか表現できませんでした。もちろん、入れ子にすることで3択以上も表現できるのですが、楽に書く方法が用意されていますわ」

ダイヤ「condは任意の数の分岐を表現するものです。条件と対応する処理をペアで書いていきますわ」
果南「なんでしいたけが」
ダイヤ「そのelseはどの条件にも当てはまらなかった場合に適用されるものです」
花丸「(define b 71)にしたらしいたけになったずら」
ダイヤ「にこにーの悪口はそこまでですわ」


ダイヤ「逆に、2択にする必要すらない場合もありますわね」

ダイヤ「条件を満たしたときだけ処理するのがwhenです。逆に」

ダイヤ「条件を満たさないときだけ処理するのがunlessですわ」
果南「これ全部、書こうと思えばifで書けるよね?」
ダイヤ「ええ。ですから、if以外は単に利便性のために用意されているもので、極論ifだけ知っていればプログラムは書けますわ」
花丸「そんな縛りプレイはやりたくないずら・・・」


ダイヤ「ここまでほとんど1行プログラムを扱ってきましたが、実際には複数行にわたるプログラムを書くことになりますわ」
花丸「1行でもすごくたくさん処理が書けそうな気がするずら」
果南「そこはそこ、世の中にはステップ単価とか」
ダイヤ「果南さん、花丸さんにSIerの闇を教え込むのはおやめなさい。・・・ともかく、次回は複数の処理を1つにまとめる直列化について見てみたいと思います」


LINEで送る
Pocket


返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です