ange1のブログスマートフォン用の表示で見るange1のブログこの広告は、90日以上更新していないブログに表示しています。条件分岐の多段化Brainf**kはじめに前回から条件分岐に入りましたBrainf**k講座、条件分岐にも色々なバリエーションがありますので、今回・次回と分けて説明していきたいと思います。実行環境ideoneオンラインのIDE環境で、bffという処理系が使えます。この講座は基本的にこのbffに対応したものです。[Brainf**kインタープリタ(http://azisava.sakura.ne.jp/js/bf/)あじさんという方が作られたブラウザ上で動くインタプリタです。細かい挙動の調整や、途中のセルの状態のダンプができたり、重宝しています。終端」を「-1」と設定すると、bffと同じ挙動になります。前回はif文とif-else文でした。switch文に相当する処理が必要になることもあります。else用の条件変数が増えることになり、コードが複雑になってしまいます。実は、このような場合、else用の条件変数を共通化して多段の条件分岐にする方法があります。次から実例を挙げてみていきたいと思います。多段化の実例1:one-two-many-counterとある人々は、数を「いち、に、たくさん」と数えるそうですが、それを英語で実装してみましょう。1桁の数字1~9が入力されるとき、1ならば“one”を、2ならば“two”を、3以上ならば“many”を出力する。case文があるので、それで書くこともできるのですが、多段のif-elseで次のようにも書けます。"one"endこれをBrainf**kで書くと次のようになります。“switch”以降がswitch文に相当します。この部分を抜粋すると、次のような形をしています。E]まず、条件変数であるCは、1ずつ減らしながら評価していきます。各Cの値によって次のように挙動が変わります。共通化して、if-elseを入れ子にすることができます。E]の形になっているため、各処理は似たような形になります。コード上の記述としては、defaultの分が最初に来ることに注意してください。音階変換ではもう一例見てみましょう。今度は次のような音階変換の問題です。文字の入力ループがあり、ケースが先ほどの例の3ケースから7ケースに増えていますが、switch部分の構成としてはほとんど同じです。Brainf**kのコードは次のようになります。条件変数はX、else用条件変数はYとしています。先ほどと若干書き方が違うように見えますが、同じパターンのコードが現れることは分かっているのでまとめてしまっています。if-else文の入れ子で実装できる終わりに今回は図で描きにくいので文章のみとなりましたがいかがでしょうか。パターンを掴んでしまえば、同じ形の繰り返しで書けるため、割と分かり易いのではないかと思います。次回は条件分岐の最後の話題になります。2016、10日目の記事です。今回でいよいよ最後になりました。今回で条件分岐の最後の話題になります。)月別アーカイブはてなブログをはじめよう!ange1さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。