MQL4の中には、2つの繰り返し関数が収録されています。
①for( )と②while( )です。
まず、 ①for()関数の説明です。
よく、【for(i=0;i<=100;i++)】というコードを見ると思います。
これは、この後に続くコードをi=0からiが100以下の間繰り返すことを意味します。
※i++とは繰り返しが終わるごとにiに1を足していくことを意味します。
コードを書き換えるならば、『i=i+1』となります。
サンプル for(i=5;i>0;i--) { k=k+i } サンプルの答えは、『K=5+4+3+2+1=15』となります。
for()の( )の中身は、決まり事があります。
それは、(;;)セミコロンを2つ入れなければならないことです。
例) for(;;) { K=K+1 } と書くことができます。
しかし、このコードを使用すると、無限ループが起こります。
終了条件がないからです。
たとえば、 if(K==5)break; という文を追加します。
この分の意味は、kが5になったら繰り返すことをやめてくれというものです。
ちなみに、繰り返し関数の中によく使われるコードとして、以下の3種類があり、よく混乱しますので覚えていた方がいいものです。
break: (繰り返しなどから)脱出する。
continue;(繰り返しなどを) スキップする。
return(); (自作関数などを)終了し( )内の数値を返す。
(0)の場合は、そのまま終了という意味です。
例) for(i=0;i<=10;i++) { if(i==3)continue; K=K+i if(K==6)break; }
答えは、K=0+1+2+スキップ+4+5+6+7+8+9+10=52になります。
※kが6になることがなかったために途中で脱出しませんでした。
(例題か?) これが、for()の繰り返し関数の基本です。
次に・・・・・・ ②while( )繰り返し関数です。
この繰り返し関数は、( )内に書かれた条件が真(true)の間繰り返しを実行するというものです。
例) int i=0; while(i<5) { k=k+i; i++; }
答えは、K=0+1+2+3+4=10です。
よくやってしまうのが、『i++;』を忘れてしまい無限ループになってしまう事と、while( )の( )内の条件がはじめから偽(false)になっていることで、処理されないことです。
※上記の条件で間違いがあっても、コンパイル時にエラーが出ません。
そのため、無限ループに陥るか、処理しないコードになります。
後は、for()繰り返し関数と同じです。
では、なぜこの2つが収録されているのでしょうか?
※これは私の経験からこのように納得しています。 繰り返し関数の中に繰り返し関数を入れる場合、for()関数の中にfor()関数を入れても処理されません。
そのため、while()関数の中にfor()関数を入れるようなことを行うためにあるのだと理解しています。 (ごめんなさいこの内容には自信がありません) 今日は、ここまでです。
0 件のコメント :
コメントを投稿