エネルギーのプログラミングでよく使われるいくつかのデータ構造


データ構造は多種多様で、それぞれが使用する場合がある.キュー、スタック、チェーンテーブル、図など、最も基本的なデータ構造を理解する必要があります.また、配列だけでなく、構造体を使用してデータをカプセル化し、列挙変数を使用していくつかの値を限定することもできます.以下に私の理解を述べます:1、構造体でデータをカプセル化する場合は2つの場合が構造体を使用するのに適しています.第一に、特定のモジュールを操作するときに、構造体を使用して必要なすべてのデータ要素をカプセル化することができます.例えば、PLCに関するすべての操作は、以下に示すように1つの構造体にカプセル化することができる.
    /// 
    ///   PLC        
    /// 
    public struct PLC
    {
        public bool connectIsOk = false;//  PLC          
        public string address;//PLC   
        public string readPlc = "";// PLC        
        public string setPlc = "";//  PLC        
        ...
    }

第二:数据采集过程中使用。
比如:实验进行过程中,需要采集温度,压力,风速等值,可以将这些数据封装在一个结构体中进行处理,如下所示:

    /// 
    ///                   
    /// 
    public struct collectData
    {
        public double thermotubeTemp;//    
        public double windSpeed;//  
        public double channelPressure;//      
    }

当然,也可以采用类似JavaBean的做法,将相关数据封装在一个类中,并提供访问器。这种做法也很好,但是,容易出现的情况就是,有些人会将所有需要处理的数据都封装在一个类中,命名为Param。这样子处理其实是很容易造成混乱的。

2、用链表或队列进行求平均值
在数据的实际采集过程中,可能由于环境因素或设备的原因,使得采集的数据中存在轻微的波动,这时,需要加一个求平均值的过程,使得数据更有可信度。
使用ArrayList求平均值的核心代码如下:

        //   :    10       ,      
        ArrayList windSpeedList = new ArrayList(10);

        //   :           ,                 
        windSpeedList.RemoveAt(0);//           ,          
        windSpeedList.Add(10.1);//             

        //   :        
        double windSpeedAverage = 0;
        foreach(double temp in windSpeedList)
        {
            windSpeedAverage += temp;
        }
        windSpeedAverage = windSpeedAverage / windSpeedList.Count;

Queenを使用して平均値を求めるコアコードは次のとおりです.
        //   :      ,      
        Queue windSpeedQueen = new Queue();

        //   :           ,       
        windSpeedQueen.Enqueue(10.1);//         
        windSpeedQueen.Dequeue();//       

        //   :    
        double windSpeedAverage = 0;
        foreach(double temp in windSpeedQueen)
        {
            windSpeedAverage += temp;
        }
        windSpeedAverage = windSpeedAverage / windSpeedQueen.Count;

3、HashTableで高速なデータ検索操作プログラミングを行う場合、これはネットワークプログラミングの過程であり、データの伝送速度を高めるために、共通の方法は各機械、各オペレータなどに一意の識別子、すなわちIDを割り当てることである.ローカル表示の場合、操作者の名前が表示されますが、関連操作を行う場合、転送されるデータはIDであり、転送速度を効果的に向上させることができます.クライアントでは、IDに対応する名前のテーブルを作成する必要があり、これにより、IDがわかる場合、オペレータの名前などの情報を容易に得ることができる.この場合、HashTableを採用するのが最も効率的な方法です.次に、HashTableの一般的な方法を以下に挙げます.
        //    hashtable,          
        Hashtable operatorTable = new Hashtable();
        operatorTable.Add(1, "wang");
        operatorTable.Add(2, "zhang");

        //1、  key  , key   value
        string name=(string)operatorTable[2];

        //2、  value  ,          key 
        foreach(int key in operatorTable.Keys)
        {
            if(key==1)
            {
                Console.WriteLine(operatorTable[key]);
                break;
            }
        }

        //3、    value  
        foreach(string value in operatorTable.Values)
        {
            if(value=="zhang")
            {
                Console.WriteLine(value);
            }
        }

未完待续..