今日が6月か、9月か、12月か、3月なら「予定月です」と表示する最も短いスクリプトを教えていただけないでしょうか。caseとかを使えばいいものでしょうか。

素人がやると下記のようになってしまいます。
<% If Month(date()) = 6 or Month(date()) = 9 or Month(date()) = 12 or Month(date()) = 3 then %>
予定月です。
<% Else %>
違います。
<% End if %>

#プログミングの初心者のため、初歩的なところを確認したいと思っての質問です。

A 回答 (3件)

最も短いかどうかは解りませんが。


#しかも今ごろですが。
No.1の方の回答どおりだと思います。VBScriptで表記すると

#インデントのため行頭に全角スペース入れてます。
<%
 If (CInt(Month(Date())) Mod 3 = 0 Then
  Response.Write("予定月です。<br>" & vbCrLf)
 Else
  Response.Write("違います。<br>" & vbCrLf)
 End If
%>

かと。
「最も短い」にこだわる理由はわかりませんが。
別に求める結果が同じなら書き方は問わないと思います。
「スマートで解りづらいソース」より「稚拙でも解りやすいソース」の方が
私はありがたいです。

「俺のロジック、クレーバーだろ?!」と自慢したいのなら別ですが。

それと余計なお世話かもしれませんが、s-holmesさん。
「初心者」であるのならこういった場で質問するより基礎をしっかり学ぶ方が
先だと思いますよ。スマートなロジックは基礎の上に成り立ちます。
    • good
    • 0

Case文であれば短くはないですけど、予定月の変更や、別の文字を表示するといった変更などが楽そうですね。



<%
Select Case Month(date())
 Case 3,6,9,12
  Response.Write("予定月です。")
 Case Else
  Response.Write("違います。")
End Select
%>

あと、IF文に「Month(date())」が4つある事で4回の「Month(date())」を実行している気がします。IF文を使うのであれば変数に入れた値に対して判定するほうがいいですね。
    • good
    • 0

ASPの書き方は知らないので、ロジックとしてのアドバイスです。


剰余演算子はありませんか?
つまり、わり算をした時の商ではなくて、「余り」を返してくれる演算子です。
C言語等では%がそれに当たります。
この剰余演算子があるのなら、if文を
「月を3で割って、余りが0ならば真」というのが良いかと。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング

おすすめ情報