投稿
くろあらまき optimize_key-DS
久しぶりにプチコンを再開したのですが、いろいろ忘れてしまったので改めて質問させて頂きます…数行にまたがる長さのif文は、改行してしまうと条件から外れますよね?でも続けて書くとごちゃごちゃして見辛いし、何か綺麗にまとめることはできないでしょうか?それと、条件の中に条件を入れるにはどのように書けばいいのでしょうか…?(例:ボタンを押すとX=X+1、ただしX>10ならX=10)
0そうだね
プレイ済み
返信[1]
親投稿
始めの質問は僕の活動の最新の記事が、それに関係しているような気がしますので見てみてください〜。 条件の中に条件をいれるのは、通常はその通りに、Bにボタンの内容が入っていたとすると、 IF B!=0 THEN IF X>10 THEN X=10 ELSE X=X+1 とかく感じだと思いますが、工夫すると、 IF B!=0 THEN X=MIN(X+1,10) とか IF B!=0 && X<10 THEN X=X+1 とか書けます。ただし最後のは厳密にはX>10ならX=10ではなくて、Xが10より小さいのを前提にそれ以上にならないようにしてるだけですが。
0そうだね
プレイ済み
返信[2]
親投稿
IFの条件があまりに複雑になるようでしたら 判定するための関数を用意して用いると判りやすくなるかと思われます それと、IF文の条件の中に条件をとの事ですが IF文の中にIF文を書く事で実現できると思います 例) BTN=BUTTON() IF BTN != 0 THEN IF X > 10 THEN X=10 ELSE X=X+1 ENDIF
0そうだね
プレイ済み
返信[3]
親投稿
ゆうたん yu-tan-sama
IF文はもう IF 何か条件 THEN 条件を満たしたときの処理 ELSE 条件を満たさなかった時の処理 ENDIF って感じで複数行前提で覚えちゃっていいと思います 昔ながらの1行に書くしかなかったころのIF文は忘れてしまっても良いかと ちなみにこのパターンなら IF 条件 THEN IF 条件 THEN 処理 ENDIF ENDIF みたいなのもありです
0そうだね
プレイ済み
返信[4]
親投稿
例としてIFの中に書いたIF文ですが やはり10未満なら+1するという条件の方がより良いですね ↑に書いた内容だとボタンを押されない限りXの最大値は11になってしまいますから IF X < 10 THEN X=X+1
0そうだね
プレイ済み
返信[5]
親投稿
今回の例に当てはまるかどうかわかりませんが、条件が複雑になった場合は、分析表や、分析ツリーをノートに書いてみると、条件判定を簡単にする方法が見つかる場合があります。 気が向いたら試して見てください。
0そうだね
プレイ済み
返信[6]
親投稿
ツララ LongIceSword
IFで分岐させて実行する処理が計算式ならば、条件式が偽なら0、真なら1なのを利用して X=!(X>10)×(BUTTON()>0)×(X+1)+!(BUTTON()==0)×X+(X>10)×10 なんて風にも書けますね。
0そうだね
プレイ済み
返信[7]
親投稿
くろあらまき optimize_key-DS
皆様コメントありがとうございます。最初のIF~THEN以降に新たにIFを入れても問題無かったのですね!ELSEやENDIFの存在も忘れていました…これからは複数行前提で字下げしながら書いていこうと思います~。 「+1して10以上は制限」より「10未満は+1」といった細かい条件指定も結構大事なんですね…紙に書いてちゃんと考えていきたいと思います!
0そうだね
プレイ済み