今回は前回に引き続き
If文の複数の条件分岐について説明します。
前回よりも難しいと思いますが、少しずつ理解して行けばそこまで難しくはないので、頑張って下さい。
では、前回と同じように
MetaEditorを起動して下さい。
Nameは
ifbunn2にして置いて下さい。
まず前回と同じように、int
start()の真上に、下のコードを書いてください。
int a =
0;
前回と同じく、真上ですので間違えないで下さい。
次に、int
start()の中のreturn(0);の上辺りに次のコードを書いてください。
今回は、分けると逆にややこしくなるので、一度に全部書きます。
if(a
< 10 || a >20 && a <30)
{
Print("a=0~9 or a=21~29
a=",a);
}
else if(a >= 10 && a <=
20)
{
Print("a=10~20 a=",a);
}
else
{
Print("a=30
a=",a);
a=0;
}
a++;
意味が分からないと思いますが、とりあえずこの通りに書いてください。
書けましたか?
では、少しずつ説明して行きます。
まず、if(a < 10 || a >20 && a <30)ですが、基本的には前回やった
If文と同じです。
ただ、
条件分岐が複数になっただけです。
||がorで、&&がandです。
日本語で訳すと次のようになります。
もし、aが10未満、もしくはaが21以上(20は含まないので)で30未満の場合。
こういう意味になります。
この複数の条件分岐を使うことによって、
より細かく条件を指定出来るようになります。
また、もっと細かく条件分岐をする場合は、||と&&がどれとどれを示しているのかややこしくなりますので、()で纏めると良いです。
先程のやつを纏めると次のようになります。
if(( a < 10 || a >20 ) && a <30 )
こうすると余計なミスがかなり減ります。
Print()は、分かり易いように内容を書いてます。
次に、else if(a >= 10 && a <= 20)です。
一度、Ifを使った後にelseを使うと、前に使ったIf以外という意味を付ける事が出来ます。
日本語にすると次のような意味になります。
前のIf以外で、もしaが10以上で、20以下だった場合。
このような意味になります。
最後のelseですが、単体で書くと今までのIf以外の条件という意味になります。
今回は、aが30以上の場合という意味です。
aが30以上だった場合、Print()をした後、aを0にしています。
その後、If文の後で、時間足が変わるたびにaに+1しています。
今回のプログラミングはこれで終了です。
今回は使いませんでしたが、If文は他に入り子式に使うことも出来ます。
if(a >= 10)
{
if(a <=
20)
{
}
}
これで、aが10以上で20以下の場合という条件が出来ます。
if(a
>= 10 && a <=
20)でも意味は同じですが、入り子式にすると10以上の場合に何か処理をしてから、10以上で20以下の場合の処理もすることが出来ます。
よく分からない人は、使って行く内になんとなく使い方が分かってきますので、こういうやり方もあると覚えて置いてください。
では、最後にまとめて書きます。
int a=0;
int start()
{
if(a <
10 || a >20 && a <30)
{
Print("a=0~9 or a=21~29
a=",a);
}
else if(a >= 10 && a <=
20)
{
Print("a=10~20 a=",a);
}
else
{
Print("a=30
a=",a);
a=0;
}
a++;
return(0);
}
今回のプログラムは、aの値によってコメントを変えて行き、時間足が更新する度にaに+1をして、aが30以上になったら0に戻すというものです。
では、いつもと同じように
コンパイルをするために
compileのボタンを押してください。
エラーが出てきた場合は、半角になっているか、;を付け忘れていないか、{}を付け忘れていないか、{}の数は合っているかを確認して下さい。
特に、今回はIf文を多く使ったので、{}をよくチェックして下さい。
一応エラーが出た場合は、下のほうの
Descriptionの所にエラー内容が書いてます。
かなり分かり辛いので、あまり使いやすくはないですが……。
エラーが出なかったら、
MetaTrader4のバックテストで
ifbunn2を選んで、スタートして下さい。
終わったら、操作履歴をみて下さい。
メッセージの一番右端に、条件分岐によってaのコメントが書かれていて、その後にaの値が書いてますね。
今回はこれで終了です。
多分、プログラム初心者の方には分かり辛かったと思います。
If文が難しいと思った方は、紙にフローチャートを作ると良いと思います。
条件1 Yes→
No→
こんな感じのものです。
作業量は増えますが、途中で分からなくなることは少なくなります。
次回は、
for文というものを説明して行きます。
----------------------注意----------------------
このサイトは半角のスペースが認識されない為、コードを見易くするために全角で書いている場合があります。
実際にプログラムにコードを書くときは、コピー&ペーストせずに半角で書いて行って下さい。