3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

日本語プログラミング言語Mindの小技 「回数指定」~指定回数くりかえすループ~

Last updated at Posted at 2025-04-26

はじめに

日本語プログラミング言語Mindの小技「回数指定」について説明したいと思います。

対象読者

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

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

この小技に関連するMind言語仕様の記述はMind8プログラミングマニュアルに記載があります。
3 制御構文
└回数指定し~繰り返す

回数があらかじめ分かっている繰り返し処理は、この構文を使用する。

構文=
    nを 回数指定し
        ・・・・・・・・し
        ・・・・・・・・し
    繰り返す

上記が基本的な形式である。回数を指定する 数値 n はスタックからデータとして渡すので、必ずしもこの箇所に記述する必要はない。
 ゼロの回数を与えた場合、何もしないで直ちにループを抜けるようになっている。負の値は非常に大きな正の値とみなされるので注意すること。

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

対応バージョン

■Mind7 ■Mind8 ■Mind9
■Windows版 □Linux版

小技の解説

「回数指定」はMindのループ構文の1つで、反復回数をスタックから拾って内部変数の「回数」を1で初期化し、「回数」が初期値の1から「回数指定」の値までを構文内で書かれた処理を反復実行させる単語です。

他のプログラミング言語での「for」文が近いですが、ローカルカウンタ変数の宣言はなく、最大値の指定のみ明示して組み込みカウンタ変数「回数」を1づつカウントアップして最大値で終了します。

C言語系疑似言語による近似的に等価な構文

    for(int 回数=1;回数=<指定回数;回数++){
        //ToDo
    }

公式マニュアルでも強調されていますが、上記の構文の指定回数に相当する値が変数や定数として明示されていなくても、適切にスタックから値が受け取れれば動作するという点が特徴です。

内部カウンタの「回数」は予約語として定義済となっていますので、上記構文のように変数宣言する必要はありません。

Mindプログラムソース

repeat.src
愛を告白するとは (回数 → ・)
    「愛してるって」と 表示し
    数値表示し
    「回言いました。」と 一行表示すること。
    
指定された回数だけ愛を告白するとは (指定回数 → ・)
    回数指定して
        回数で 愛を告白する
    繰り返すこと。

指定された回数だけ愛を告白するけどマイナス抑止とは (指定回数 → ・)
        指定回数は 変数
    指定回数に 入れ
    指定回数が 0より 小さい ならば 終わり つぎに
    指定回数で 回数指定して
        回数で 愛を告白する
    繰り返すこと。

指定された回数だけここから繰り返しで愛を告白するとは (指定回数 → ・)
        指定回数は 変数
        実行回数は 変数
    指定回数に 入れ
    実行回数に 1を 入れ
    ここから
        実行回数が 指定回数より 大きい ならば 打ち切り つぎに
        実行回数で 愛を告白する
        実行回数を 一つ増加し
    繰り返すこと。

メインとは (・ → ・)
    3回 指定された回数だけ愛を告白し 改行し
    3回 指定された回数だけ愛を告白するけどマイナス抑止 改行し
    -3回 指定された回数だけ愛を告白するけどマイナス抑止 改行し
    3回 指定された回数だけここから繰り返しで愛を告白する 改行し
    -3回 指定された回数だけここから繰り返しで愛を告白すること。

「指定された回数だけ愛を告白する」はオーソドックスな構文定義です。

それに対して「指定された回数だけ愛を告白するマイナス抑止」とは、マイナスの回数が指定されたときは空振りさせる安全な書き方の例です。

公式マニュアルでもちらっと注意勧告されていますが、マイナスの回数を指定すると非常に大きな整数値と認識するので、無限ループに近い状態となります。(Ctrl+Cの打鍵でブレークできます。)

「指定された回数だけここから繰り返しで愛を告白する」は、回数指定のない「ここから~繰り返す」構文で、回数指定構文と同等に定義した例です。

こちらの場合は打ち切り条件に、実行回数が指定回数より大きくなったらと書かれているので、マイナスの指定回数の場合はなにも実行せずに終了します。

コンパイル結果

ではコンパイルしてみます。下位ライブラリはfileを指定します。

Mind9

下図はMind9βです。

C:\developments\vscode\mind9>mind repeat file   

日本語プログラミング言語 Mind Version 8.11 for Windows
          Copyright(C) 1985 Scripts Lab. Inc.
コンパイル中 .. 終了
Coping.. C:\mind9-beta\mind9-beta\bin\mindex.exe --> repeat.exe

Mind8

C:\developments\vscode\mind9>mind repeat file

日本語プログラミング言語 Mind Version 8.07 for Windows
          Copyright(C) 1985 Scripts Lab. Inc.
コンパイル中 .. 終了
Coping.. c:\pmind\bin\mindex.exe --> repeat.exe

Mind7

C:\developments\vscode\mind9>mind repeat file
日本語プログラミング言語 Mind Version 7.5 for Windows
          Copyright(C) 1985-2004 Scripts Lab. Inc.
          Single user license.  Serial No:********
コンパイル中 - 終了
Coping.. C:\mind7\bin\mindexec.exe -> repeat.exe

実行結果

つづいて実行してみます。
Mind7の結果です。記述は割愛していますがMind8/9βも同じです。

C:\developments\vscode\mind9>repeat
愛してるって1回言いました。
愛してるって2回言いました。
愛してるって3回言いました。

愛してるって1回言いました。
愛してるって2回言いました。
愛してるって3回言いました。


愛してるって1回言いました。
愛してるって2回言いました。
愛してるって3回言いました。


C:\developments\vscode\mind9>

参考情報

この小技「回数指定」を使った記述例の記事はたくさんあります。例えば下記の記事が該当します。

おわりに

いかがでしたでしょうか?なにかの参考になれば幸いです。2025年は日本語プログラミング言語Mind生誕40周年です。

本記事シリーズのご紹介

本記事シリーズ「日本語プログラミング言語Mindの小技」は「日本語プログラミング言語Mind生誕40周年プロジェクト」の一環です。

興味を持たれた方は日本語プログラミング言語Mind公式サイトにアクセスすると、Mindコンパイラをダウンロードできますよ。

Mindプログラミングマニュアル(基本文法)ページから気になるお題の構文を選んで、この記事のようにサンプル実装実行してQiitaにアウトプットしてみましょう!

筆者はMind7/8/9βで検証しておりますが、もちろんMind8だけでもじゅうぶんです。またお題が既存記事とかぶるのはまったく問題ありません。同じお題でみなさまの多様斬新なサンプルをお待ちしております:grinning:

面白い!、楽しい、カンタン、難しいのも書ける!みんなでやってみよう:relaxed:

3
2
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
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?