MQL4ブック MT4

関数の説明と演算子 'return'

スポンサードリンク

Contents

関数の説明と演算子 'return'

 

プログラム内に関数を指定する必要性については、プログラムに記述されていない関数と、プログラムに記述しなければならない関数の2つのグループに分けられます。 標準機能はプログラムには記載されていません。 ユーザー定義関数は、任意のプログラムで記述する必要があります。 特別な機能があれば、それもプログラムに記述する必要があります。

関数の記述形式

 

関数の説明は、関数ヘッダーと関数本体という2つの基本部分で構成されています。

関数ヘッダーには、戻り値の型、関数名、および仮引数のリストが括弧で囲まれています。 関数が値を返す必要がない場合、その型の名前はvoidでなければなりません。

関数本体は、単純演算子や複合演算子、および他の関数への呼び出しで構成され、かっこで囲まれています。

  Return_value_type Function_name 仮パラメータのリスト //ヘッダ 
  { //オープニングブレース 
 プログラムコード//関数本体は次のようになります。 
 オペレータの関数を作成する// .. 
  body // ..他の関数への呼び出し 
  } //中括弧を閉じる

リストのパラメータはカンマで区切って指定します。 関数に渡されるパラメーターの量は制限されており、64を超えることはできません。関数ヘッダーの仮パラメーターとしては、変数のみを指定できます(ただし、定数、その他の関数呼び出しまたは式は指定できません)。 関数呼び出しで渡されたパラメータの量、型および順序は、関数の説明で指定されている仮パラメータのものと同じでなければなりません(唯一の例外は、デフォルト値のパラメータを持つ関数への呼び出しです)。

  int My_function  int a  double b  //関数の記述例 
  { 
  int c = a * b + 3 ;  //関数本体演算子 
  return  c  ;  //関数の終了演算子 
  } 
  //ここで(ヘッダの左から右へ): 
  int //戻り値の型 
  My_function //関数名 
  int a // int型の最初の仮パラメータa 
  double b // double型の第2形式パラメータb

関数に渡されるパラメータは、対応する型の定数で定義されるデフォルト値を持つことができます。

 int My_function  int a  bool b = true  int c = 1  double d = 0.5  // 関数の記述例 
  { 
  a = a + b * c + d   2 ;  // 関数本体演算子  
  int k = a * 3 ;  // 関数本体演算子  
  return  k  ;  // 関数の終了演算子 
  } 
  // ここで(ヘッダの左から右へ)  
  int // 戻り値の型 
  My_function // 関数名 
  int a // int型の最初の仮パラメータa 
  bool b // double型の第2形式パラメータb 
  true // bのデフォルト値である定数 
  int c // int型の 3番目の 仮引数c 
  1 // 定数、 cの デフォルト値 
  double d // double型の 第4の 仮引数d 
  0.5 // dの デフォルト値である定数 

  a  b  c  d  k //ローカル変数

デフォルト値を持つ関数の呼び出しで実際のパラメータが指定されている場合、実際のパラメータの値は関数で計算されます。 デフォルト値を持つ関数の呼び出しで実際のパラメータが指定されていない場合、対応するデフォルト値が計算されます。

特別な関数もパラメータを持つことができます。 しかし、クライアント端末は、これらの関数を呼び出すときに外部からパラメータを渡すことはなく、デフォルト値を使用するだけです。 特別な関数は、他の関数と同じように、一般的な規則に従ってモジュールの任意の場所から呼び出すことができます。

関数の実行規則

 

プログラム内の関数記述の場所:

関数の説明は、他の関数の外で別々にプログラムに配置する必要があります(つまり、別の関数に配置してはいけません)。

関数の実行:

関数本体を構成するコードに従って、実行のために呼び出される関数が実行されます。

 

演算子 'return'の形式

 

関数が返す値は、演算子 'return'のカッコで指定されたパラメータの値です。 演算子 'return'は、キーワード 'return'、カッコで囲まれた式、および「;」の文字で終了します。 (セミコロン)。 フルフォーマットの演算子 'return':

  return();        //演算子return

かっこ内の式は、定数、変数、または関数呼び出しです。 演算子 'return'を使用して返される値の型は、関数ヘッダーで指定された関数戻り値の型と同じでなければなりません。 これが当てはまらない場合、演算子 'return'で指定された式の値は、関数の説明のヘッダーで指定された戻り値の型にキャストする必要があります。 型キャスティングが不可能な場合、MetaEditorはプログラムのコンパイル時にエラーメッセージを表示します。

演算子 'return'の実行ルール

 

演算子 'return'は、最も近い外部関数の実行を停止し、関数呼び出しのために定義された規則に従って呼び出しプログラムに制御を渡します。 関数が返す値は、演算子 'return'で指定された式の値です。 演算子 'return'で指定されたパラメータ値の型が、関数ヘッダで指定された戻り値の型以外である場合、値はヘッダで指定された戻り値の型にキャストされなければなりません。

値を返す演算子 'return'を使用する方法の例:

  bool My_function  int Alpha  //ユーザ定義関数の説明 
  { //関数本体の開始 
      if  Alpha > 0  //演算子 'if' 
      { //演算子の開始 - 'if '本文 
          Alert  " 値は正の値です "  ;  //標準の関数呼び出し 
          return  true  ;  //関数からの最初の終了 
      } //演算子の最後 - 'if '本文 
      return  false  ;  //関数からの2番目の終了 
  } //関数本体の終わり

関数の戻り値がvoid型であれば、式なしで演算子 'return'を使うべきです:

  return;        //かっこ内の式のない演算子 'return'

戻り値なしの演算子 'return'の使用例:

  void My_function  double Price_Sell  //ユーザー定義関数の説明 
  { //関数本体の開始 
  if  Price_Sell - > 100 * Point  //演算子 'if' 
  アラート  " この注文の利益は100,000を超えます "  ;  //標準の関数呼び出し 
  return ;  // Exit関数 
  } //関数本体の終わり

関数の説明に演算子 'return'を含めることはできません。 この場合、関数は最後の演算子が関数本体で実行されると(実行アルゴリズムに従って)自動的に演算を終了します。 演算子 'return'のない関数の記述例:

  void My_function  int Alpha  // ユーザ定義関数の説明 
  { // 関数本体の開始  
  for  int i = 1 ; i <= Alpha ; i ++  //サイクル演算子 
  { //サイクル本体の開始 
  int a = 2 * i + 3 ;  //代入演算子 
  アラート  " a = "  a  ;  //標準の関数呼び出し演算子 
  } //サイクルボディの終わり 
  } //関数本体の終わり

この場合、関数forは、サイクル演算子forが実行を終了した時点で演算を完了します。 関数実行時の最後の動作は、サイクル演算子の条件テストになります。 サイクル演算子 'for'のヘッダーのConditionがfalseになるとすぐに、コントロールはサイクル演算子の外に渡されます。 しかし、サイクル演算子がMy_function()という名前の関数の本体で実行可能な最後の演算子であるため、ユーザー定義関数はその演算を終了しますが、制御は関数の外に渡されます。この関数は実行のために呼び出されました。

スポンサードリンク

-MQL4ブック, MT4
-,

© 2024 FX・ビットコイン・オプションのシステムトレード開発と取引録 Powered by AFFINGER5