投稿
SEVENSEA SEVENSEA
初歩的すぎる質問で申し訳ないですが、サンプルプログラムの中にWHILEの後に比較式を省いて変数だけ書いてあるものがたくさんあったのですが、どのような意味があるのでしょうか? とりあえず INPUT A WHILE A PRINT A WEND というプログラムを実行してみたのですが、Aの値が無限に表示されるだけでした… ヘルプを見ても式を省いていいとは書いてないですし… 詳しい方教えてください…
0そうだね
プレイ済み
返信[1]
親投稿
おちゃめ ochame_nako
WHILEやIFなどにおいて条件式が成立しているときはtrue(=1)、不成立の時はfalse(=0)になるのですが、実は0以外の値ならばtrue、0ならばfalseとなります。 WHILE 1ならば「1は0以外の値」なので常にtrueであるため無限ループになります。WHILE Aとした場合にはAが0ならば不成立となりWHILE A~WENDは無視されますが0以外だと無限ループになります。
0そうだね
プレイ済み
返信[2]
親投稿
おかっぺ Japanese_WASABI
条件式は最終的に論理評価して、TRUEかFALSEか判断されます。 数値であれば、0はFALSE、非0はTRUEと論理評価されるので、 WHILE 1~WENDは常に条件式が成立して無限ループとなります。(逆にWHILE 0~WENDだと実行されません。)
0そうだね
プレイ済み
返信[3]
親投稿
Godot orz_127
条件式のところは、結果が真か偽で判断されます。 計算式のようになっていなくても構いません。 偽は値0の事です。 真は値が0以外の事です。 条件式がなく変数だけならその値が0か0ではないかで判断されます。 0を入力してみてください。 WHILEの中は実行されない筈です。 Aの値は表示されず終了すると思います。
0そうだね
プレイ済み
返信[4]
親投稿
変数だけ書いてあるのなら、みんなの言われているようにその変数が1以上ならループと言うことになるので、WHILE〜WENDの間のどこかでその変数の値を変えているところって無いですか? あれはその時に値を0にしていたらループを抜けるように組んでいる事になると思います。もし値を変更してないのだとしたら無限ループと言うことになるので、1と指定する代わりに指定しているのか、それとも何らかの条件でWHILEに入らない(その前に0にしている)ような事をしているのかなと推測されますが、その辺は見てみないとわからないですね…。 ということで、僕はそろそろさよならです(^^; また〜!
0そうだね
プレイ済み
返信[5]
親投稿
ASA fusuian
INPUT Aで0を入れるとまたちょっと違いますよ。
0そうだね
プレイ済み
返信[6]
親投稿
SEVENSEA SEVENSEA
皆様有り難う御座います! 無限ループさせたり値を0にして無限ループを抜けたりできる訳ですね…
0そうだね
プレイ済み
返信[7]
親投稿
おちゃめ ochame_nako
比較演算を省略している場合が分かりにくいのであれば省略する前の形に戻してやるのが一番です。 WHILE AというのはWHILE A!=0から「!=0」を省略したものです。 それが分かればAの値でループさせたり、ループを抜けたりできるのは一目瞭然だと思います。 慣れないうちは「比較演算は省略をしない」という選択肢もあります。(IFでは省略することで判定が変わる場合もある)
0そうだね
プレイ済み
返信[8]
親投稿
SEVENSEA SEVENSEA
何から何まで…有り難う御座います! 省略って便利に見えて覚えること多いですね…精進します…
0そうだね
プレイ済み