Skip to content

Control>repeatのリピート回数が、ScratchとC++コードで異なる #12

Description

@takebozu

内容

Scratchのrepeat部品について、リピート回数の評価方法がScratchとC++コードで異なるため、期待する実行結果にならないことがあります。

  • Scratch: repeat実行前に一度だけ評価する
  • C++コード: ループ中、毎回評価する

その結果、「条件式で使用した変数をループ内で変更する操作をする」と、ループの実行回数がScrachとC++で異なります。

再現方法

targetStr="aaaaa"とし、ループ内でcurrentStrを"a"から"aaaaa"まで一文字ずつ増やしていき、targetStrとcurrentStrが同じ場合に"Yes"を出力するプログラムをScrachで作ります。具体的には下記のような処理になります。
ループ回数の計算にlength of currentStrを使っている点が今回の問題と関係します。

scratch_prog

実行すると、Scratchでは"Yes"が出力されますが、生成されたCのソースファイルでは"No"が出力されます。

期待する動作

生成されるC++コードにおいても、Scratchと同じ評価方法にする。
具体的には、repeatについては、C++のforループの前にループ回数を決定するようなコードを出力する。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions