2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

日本語プログラミング言語ドリトルの小技「反復の打ち切り」について説明したいと思います。

対象読者

日本語プログラミング言語ドリトルのユーザー、または日本語プログラミング言語に興味のある方

対応バージョン

本機能(本記事)は、下記のバージョンに対応しています。他のバージョンも対応していると思いますが、本記事では特に検証を行っておりません。

■V3 □V4 
■Windows版 □Linux版 □Mac版 □オンライン版

この小技に関連するドリトル言語マニュアル

マニュアル(インストール版Ver.3.31)の基本的なオブジェクトの「ブロック」に基本的な制御構文が解説されていて、反復構文は

繰り返す : ブロックの中をn回繰り返して実行します。
の間 : 条件が成り立つ間、後のブロックを繰り返し実行します。

の2種となっています。

無条件反復(脱出条件が内部にない場合は無限ループ)は小中学生への教育的配慮から対応がオミットされているようです(筆者の憶測です)。本記事では条件反復(「の間」)を使って疑似的に反復の中断を実装してみます。

小技の解説

「反復の打ち切り」はループの処理を途中で中断・脱出させる処理です。他のプログラミング言語での「break」文に相当します。

「break」には、「破損」「休憩」「中断」といった意味がありますが、プログラミング言語によってはループから脱出以外でもいくかの条件分岐構文からの脱出につかわれます。「break」は仕事や勉強などの合間に作業を中断して休憩する場合に使うことができますので、恐らくこの文脈での意味と推察されます。

ドリトルにはこの構文は現時点で非対応のため、仮に「打ち切り」と表現させていただいております。

ドリトルプログラムソース

breakloop.dtl
改行コード = (0x0d!コード文字) + (0x0a!コード文字)。

表示エリア=テキストエリア!("")作る 900 500 大きさ 16 文字サイズ 。
表示エリア:改行してから表示する=「|s1 s2|
 s1=s1+""。
「(s1!長さ? ) ==1」!
	なら 「自分!(改行コード+s2+s1+s2) 書く。」
	そうでなければ 「自分!(改行コード+s1+s2) 書く。」実行。
」。

表示する前にループを途中で脱出する=「| 
        ; 打ち切り 打ち切り条件 |

    打ち切り条件 = 0。
    打ち切り = 0。
    「打ち切り != 1」!の間
    「
        「打ち切り条件 >= 10」!
        なら 「打ち切り = 1」
        そうでなければ 
             「
                表示エリア!(打ち切り条件) "" 改行してから表示する。
                打ち切り条件 = 打ち切り条件 + 1
              」実行。
    」実行。//繰り返す
」。

表示した後にループを途中で脱出する=「| 
        ; 打ち切り 打ち切り条件 |

    打ち切り条件 = 0。
    打ち切り = 0。
    「打ち切り != 1」!の間
    「
        表示エリア!(打ち切り条件) "" 改行してから表示する。
        「打ち切り条件 >= 10」!
        なら 「打ち切り = 1」
        そうでなければ 
             「打ち切り条件 = 打ち切り条件 + 1」実行。
    」実行。//繰り返す
」。

表示エリア!"表示する前にループを途中で脱出" "" 改行してから表示する。
ルート!表示する前にループを途中で脱出する。
表示エリア!"表示した後にループを途中で脱出"  "" 改行してから表示する。
ルート!表示した後にループを途中で脱出する。

打ち切りに相当する構文が処理の手前に来るか後に来るかの違いのサンプルです。
「表示する前にループを途中で脱出する」は打ち切り構文が処理の手前。
「表示した後にループを途中で脱出する」は打ち切り構文が処理の後。

実行結果

では、コンパイル・実行してみます。実行環境はドリトル編集実行画面です。テキストエリアに出力しています。

表示する前にループを途中で脱出
0
1
2
3
4
5
6
7
8
9
表示した後にループを途中で脱出
0
1
2
3
4
5
6
7
8
9
10

「表示する前にループを途中で脱出する」(打ち切り構文が処理の手前)は10を表示する前に打ち切られていることがわかります。
「表示した後にループを途中で脱出する」(打ち切り構文が処理の後)は10を表示した後に打ち切られていることがわかります。

参考情報

この小技「反復の打ち切り」を使った記述例の記事は下記が該当します。

おわりに

いかがでしたでしょうか?なにかの参考になれば幸いです。

2
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?