記事「初心者からプロまでMQL5をマスターする(第3回):複雑なデータ型とインクルードファイル」についてのディスカッション

 

新しい記事「初心者からプロまでMQL5をマスターする(第3回):複雑なデータ型とインクルードファイル」はパブリッシュされました:

これはMQL5プログラミングの主な側面を説明する連載の第3回目です。この記事では、前回の記事で触れなかった複雑なデータ型について説明します。具体的には、構造体、共用体、クラス、および「関数」データ型を扱います。また、#includeプリプロセッサディレクティブを使ってプログラムにモジュール性を加える方法についても解説します。

この記事では、プログラマーが複雑なデータ型を作成する方法について説明します。

  • 構造体 
  • 共用体
  • クラス(初心者向け)
  • 変数名を関数として使用できるデータ型(この方法により、関数を他の関数にパラメータとして渡すことができます)

さらに、#includeプリプロセッサディレクティブを使用して外部のテキストファイルをインクルードし、プログラムのモジュール性と柔軟性を確保する方法についても触れます。データはさまざまな方法で構成できますが、コンパイラは常にプログラムが必要とするメモリ量を把握しておく必要があり、そのためデータを使用する前に必ずその型を指定して定義する必要があります。

作者: Oleh Fedorov

 

私はプログラミングの 基礎を学んだ初心者です あなたの次の記事を読み、結論を出しました:何の知識もない初心者は、この記事から何も理解できないでしょう。これは私の個人的な意見であり、最終的に真実であると主張するものではありません。

記事の構造 セクションを例にとってみよう。冒頭はよくできていて、十分に明快だ。構造体が何のためにあるのか、どのように作るのかが示されている。そして、新しいコードが出てきた!

IntradayTime dealEnterTime;

dealEnterTime.hours = 8;
dealEnterTime.minutes = 15;
dealEnterTime.timeCodeString = "GMT+2";

私はあえてこの部分を強調しました。知識ゼロの初心者がこの行から何を理解すべきなのか?彼にとってそれは何なのか?私はすでに理解しているが、知識のない初心者にとっては、これもまた理解不能なコードの断片なのだ。だからこそ、各行を記述し、完全に説明することが望ましいのだ。そうでないと、この記事は初心者向けではなく、上級プログラマー向けであることが分かってしまう。

それでは、ウラジミール。

 
MrBrooklin #:

私はプログラミングの 基礎を学んだ初心者です あなたの次の記事を読み、結論を出しました:何の知識もない初心者は、この記事から何も理解できないでしょう。これは私の個人的な意見であり、最終的に真実であると主張するものではありません。

記事の構造 セクションを例にとってみよう。冒頭はよくできていて、十分に明快だ。構造体が何のためにあるのか、どのように作るのかが示されている。そして、新しいコード!

私はあえてこの部分を強調しました。知識ゼロの初心者がこの行から何を理解すべきなのか?彼にとってそれは何なのか?私はすでに理解しているが、まったく知識のない初心者にとっては、これもまた理解不能なコードの断片なのだ。だからこそ、各行を記述し、完全に説明することが望ましいのだ。そうでなければ、この記事は初心者向けではなく、上級プログラマー向けであることが分かってしまう。

それでは、ウラジミール。

3行前に私が作ったのは、まさにこの構造体だと思うのは私だけだろうか?そして2行前に私はそれがデータ型であると説明した?そして、この型は 他の型と同じように使うべきだということでしょうか?(本当に、ここでは論理が関与しているはずだ、そうだ ;-))

あなたの言う通り、少なくとも型についてのコメントは必要だと思いますが・・・。ありがとう。

 
void OnStart()
クラス PrivateAndPudlic
}
private:
int a;
public:
int b;
};
privateAndPudlic myVariable;
//myVariable.a = 5; //コンパイラー・エラー!

myVariable.b = 10; //大丈夫です。

コンパイル中にエラーが出ます。何が間違っているのか、どこがエラーなのか教えてください。

 
AKHMED Asmalov #:
void OnStart()
クラス PrivateAndPudlic
}
プライベートな
int a;
public:
int b;
};
PrivateAndPudlic myVariable;
//myVariable.a = 5; //コンパイラー・エラー!

myVariable.b = 10; //大丈夫です。

コンパイル時にエラーが出ます。何が間違っているのか、どこがエラーなのか教えてください。

返信が遅れて申し訳ありません。

この例のコードは完全ではありません。動作させるには、関数内の どこかでmyVariable変数を使用する 必要があります。例えば

  class PrivateAndPudlic
   {
  private:
     int a;
  public:
     int b;
   }; 

 PrivateAndPudlic myVariable; // グローバル変数

void OnStart(){ // アクションの呼び出し(この場合は代入)は、すべて関数の中だけで行わなければならない。
  //myVariable.a = 5; //コンパイラー・エラー!

   myVariable.b = 10; //大丈夫、大丈夫だから
}

さて、あなたはそれを再プリントするときに括弧の向きを変えました(開口部"{"の代わりに閉口部"}"を入れました) ;-)

 
Oleh Fedorov #:

返信が遅れて申し訳ない。

この例のコードは完全ではありません。これを動作させるには、関数内の どこかでmyVariable変数を使用する 必要があります。例えば

さて、転載するときに括弧の向きを変えましたね(冒頭の"{"の代わりに閉じの"}") ;-)

まあ、あるいは記事にあるように

void OnStart(){

class PrivateAndPudlic
 {
  private:
     int a;
  public:
     int b;
   }; 
 PrivateAndPudlic myVariable;
 
//myVariable.a = 5; //コンパイラー・エラー!

 myVariable.b = 10; //大丈夫、大丈夫だから

}