コミュニティアイコン プチコン 非公式コミュニティ プレイ日記

アバター
bはかせ ◆fgfPl6qLuzIU
2018/1/23 22:34
IF文ってこんな書き方できたんですね...
今までいちいちひとつひとつ書いてたのに
時間の無駄だったなぁ

コメント

アバター
say 2018/1/23 22:51 ◆1nbKtD/tFu04
うん?
a=0の時、どっち?
a=1の時、どっち?
アバター
moi 2018/1/23 22:59 ◆hL/XpFV8MD2F
aが0か1のどっちかでないない時に BEEP 0を鳴らして
aが0だけど1の時にBEEP 3を鳴らすという意味です。…って必ずBEEP 0しか鳴りませんけどねw
あとよーく見るとスマホで撮っているのがわかりますね。
以上
アバター
moi 2018/1/23 23:09 ◆hL/XpFV8MD2F
図で表すと

(A)<(私は0だけど1じゃありません)→成立!BEEP 0
(A)<(私は0でも1でもありません)→成立!BEEP 0
(A)<(私は0でも1でもあります)→不成立…BEEP 3
↑これは矛盾。
よって「不成立?ナニソレオイシイノ?」状態になる。
アバター
bはかせ 2018/1/23 23:27 ◆fgfPl6qLuzIU
おかしいことに今さっき気付いたのですね。
うーん、かなしい
アバター
bはかせ 2018/1/23 23:57 ◆fgfPl6qLuzIU
なんかそもそもが間違えてたみたいですねこれ
発見したと思った喜びの勢いで
ウッキウキでプログラムに組み込んでたら
うまく動かなくて残念です

なんでこんな変な条件がエラーにならないんでしょうか
アバター
say 2018/1/24 2:35 ◆1nbKtD/tFu04
>なんでこんな変な条件がエラーにならないんでしょうか

TRUEとFALSEの定義から考えてみれば簡単
FALSEとは0のこと
TRUEとはFALSE以外のこと

ってことは、
A!=(0||1) は
A!=(FALSE||TRUE) と、なり、
(FALSE||TRUE)を論理演算したら(TRUE)になり、
A!=TRUE
と書いているのと同じこととなります

A==(1||3||5)も同じで
A==(TRUE||TRUE||TRUE)と言う意味になり
単に
A==TRUE
と書いてるのと同じになります

「論理演算した時点で数値情報は無効」になり、「0(FALSE)かそれ以外(TRUE)」の情報しか持たなくなります


参考になれば幸いです
アバター
キルル2 2018/1/24 10:50 ◆rGE712Ruejv7
最初にカッコの中身が計算されて、そのあとで!=の計算がされます
カッコの中は0||1なので結果は1
つまり、A!=1と同じってことです
アバター
Clifford榊 2018/1/24 17:32 ◆Ox7rmcMvNHL8
Beepの効果音番号を指定する(あるいは単に数値計算に使用する)だけなら、論理式としてただの式まで落とし込めますね

A=0
BEEP (A != 0 || A != 1) * 3

A != 0 のような比較式の値が数値としてみたときに真なら1、偽なら0であることの応用です。
アバター
おちゃめ 2018/1/26 13:14 ◆jH1opV6FnGyx
複数の数値のうちいずれかと等しいかどうかを判定するのは文字列化してINSTRを使って判定すると楽です。

IF INSTR("/1/3/5/7/11/13/17/19/","/"*STR$+"/")+1 THEN BEEP ELSE BEEP 3

この例では区切りコードとして"/"を使用していますが、数字の前後に"/"を入れることで簡単かつ正常に判定が行えます。
この書式を毎回記述するのが面倒ならば自作関数化すれば良いですね。

Aが0〜10の範囲の整数で1、3、5のいずれかと等しいかどうかと判断したいならばこんな記述もできます。

IF 315MOD(A+4) THEN BEEP 3 ELSE BEEP

汎用性は全くありませんが、プチコンmkIIの頃はMODが"%"の1文字で記述できていたためこのような譲与を使った判定は1画面プログラム等の文字数制限プログラムでは必須のテクニックでした。
アバター
bはかせ 2018/1/30 23:23 ◆fgfPl6qLuzIU
コメントありがとうございます。
論理演算した時点で数値情報は無効になり 0(FALSE)かそれ以外(TRUE)の情報しか持たなくなります...
知りませんでした。根本的に違ってたんですねこれ。
いろいろな方法も紹介してもらいありがとうございます。
FORを使ったり式にしてみたり文字列化してみたり
同じ事をしたくても本当にいろんな手段があって
面白いです。
これからも使うと思うのでかなり役立ちます。

コメントを書く

この投稿にはコメントできません。

- WEB PATIO -