[データ構造]データ設計と実装



✨𝐃𝐚𝐭𝐚 𝐃𝐞𝐬𝐢𝐠𝐧 𝐚𝐧𝐝 𝐈𝐦𝐩𝐥𝐞𝐦𝐞𝐧𝐭𝐚𝐭𝐢𝐨𝐧✨


ははは、、、いつ授業が始まりましたか.😥 入学記念の授業で、私は真剣に勉強の資料の構造内容を整理して、、~~~新入生でしょう.実は毎週クイズを見ていると言われているので毎週つらいです~😫
カリキュラムの内容を整理する略図については面白くありませんが、統一感を与えるために教材を決めました.😟 第1章は整理したくないので、通過します.あ、ハハハ
本章では,資料構造の全体的な説明と資料構造における配列を学習した.

💡 Data


📌 データとは?
データは名詞です.
  • オブジェクト向けプログラミングオブジェクトを
  • と表す.
  • プロセス向けプログラミング使用情報表示
  • データは複雑な形式であるため、データを分類する必要がある.
    ▶データ抽象化とデータパッケージ

    💡 Data Encapsulation


    アプリケーションと論理レベルでデータを考える
    📌 パッケージC++データ型int

    int型は、64ビットの論理レベルで実行プロセスを理解する必要があることを示しますが、アプリケーションレベルで使用する場合は、実行プロセスを理解する必要はありません.
    💡 Abstract Data Type (ADT)
    私が作成した資料構造は、実際に使用している人が実施過程を理解せずに簡単な説明だけを使用できるようにする資料型です!
    📌 アプリケーションレベルと実装レベルのコミュニケーションに必要なADT

    では、データ構造は何ですか.

    💡 Data Structure


    📌 資料構造とは何ですか.
    これは
  • データ要素の集合です.
  • ADTは、データの実行を実現する.
  • データ構造を実現するためには、次のようにADT演算子が必要です.
  • Constructor
    新しいオブジェクトの作成時演算子
  • Transformer
    データ構造のデータ値を変更する演算子
  • Observer
  • 演算子データ構造のデータ値を変更せずに参照
  • Iterator
  • 演算子.データ構造の次のデータ値にアクセスします.

    📒 Abstraction and Built-in Types


    抽象資料型はintやfloatなどの機械言語級演算子の簡単な内蔵資料型があり,プログラミング言語が提供する複合資料型もある.
    📌 Composite Data Type
  • 単一データセットは変数として
  • 記憶する.
  • 個別データアクセスを許可する
  • 乙を目的とした資料型です.
    例えば、int a;float b; すなわち、変数ABの名義で各データにアクセスすることができる.
    Componentosite資料の種類は2種類に分けられます.
    C++のBuilt-InとComposite🔽下図🔽と表示できます.

    💡 異なるレベルのRecordsについて


    📗 Records at the Logical Level


    RecordはC++の構造体またはクラスと同義である.
    ビットのようなレコードでは、各メンバーは、異なるデータ型を有するデータセットから構成される.
    struct CarType
    {
    	int year;
        	char maker[10];
            float price;
    };
    CarType thisCar; //Cartype형 변수
    CarType myCar;
    前述したように、メンバー選択オペレータ(period)は、構造体のメンバーにアクセスするために使用されます.演算子を使用します.各変数(オブジェクト)のメンバーには、myCar.yearまたはthisCar.maker[4]のようにアクセスできます.
    📌 構造体タイプ変数の演算子
  • 同一データ型に割り当てる構造体変数
  • CarType thisCar;
    CarType myCar;
    thisCar = myCar;
  • 関数でのパラメータ転送
    (pass-by-valueまたはpass-by-reference)
  • void f(CarType a) //void f(CarType &a)
    {
    .
    .
    .
    }
    
    f(thisCar);
  • 関数は、構造体変数値
  • を返す.

    📒 Records at the Application Level


    アプリケーション・レベルでは、レコードはオブジェクトを意味します.
  • オブジェクトに対して異なるタイプのデータを収集する
  • フルネームリファレンスオブジェクト
  • 参照オブジェクト
  • の複数のメンバー
  • 📕 Records at the Implementation Level


    これまで使用してきたデータ構造は、アプリケーション・レベルで使用されています.では、これらのRecordsがどのように実装されているのか、すなわちメモリにどのように割り当てられているのかを考慮する必要があります.
  • Base address
    レコードに第1の要素を格納する位置
  • メンバー-length-offestテーブル
    各レコードメンバーに必要な場所
  • 構造体の各メンバー変数が持つメモリサイズを考慮して、前のCarType構造体の表に記入してみてください.
    メンバー変数メモリ位置year 0 maker 4 price 14
    int型変数は年4 Byte,後のchar型変数makerは1 Byte,大きさ10の配列で合計10 byte,float型変数が続く.
    Baseaddressが8000の場合、各メンバー変数のメモリ割り当て位置は8000、8004、8014です.

    💡 異なるレベルの1 Dアレイについて


    📗 One-Dimensional Array at the Logical Level


    1次元配列は同じ資料型の集合であり,限られた固定サイズ(コンパイル時に知るべき)の資料構造である.
    📚 配列に代入演算子は存在しません.int a[4]]; b = a;.
    .
    したがって、配列自体は返されません.配列変数が返される場合は、開始アドレスが返される場合です.
    📚 配列はコンパイル時に決定されますint a = 4; int b[a];配列はコンパイル時に決定する必要があるため、配列が大きいと判断した場合に変数を含めることはできません.
  • すべての要素には相対的な位置があり、直接アクセスできます.
  • 配列演算:インデックス値に近い
    値の作成、保存、検索
  • 📚 配列が関数のパラメータとして渡される場合pass-by-referenceとして渡されます.
    void f(int array[]) 
    //void f(int *array)로 표현할 수 있음.
    {
    .
    .
    .
    }

    📒 One-Dimensional Array at the Application Level


    アプリケーション・レベルでは、最初の配列がデータ内の要素のリストとして格納されます.
    配列例
  • 食品リスト
  • 価格表
  • 電話リスト
  • 文字リスト(文字列)
  • 📕 One-Dimensional Array at the Implementation Level


    絵を見て理解して~
    ひっくり返すぞハハ
    .
    .
    .
    アレイには、1 Dアレイではなく、2 D、3 Dなどの多次元アレイも存在します.演算は1次元配列と同じです.2 Dの場合、row、columnインデックス値があります.
  • の2次元配列は、通常、テーブル形式の表現に使用されます.
    これは画像を見ても分かりやすいです.😆 教授はこの机の絵が心の中にあると言って、、、本当に“心”という言叶が好きなようで、^
  • 📌 2 D配列のメモリを格納
    の2次元配列では、まず行のメモリ位置を保存し、次に列の行に移動し、メモリ位置を順次保存します.
    (ほとんどの言語はrow-order方式で格納されています.)
    上の内容を画像にまとめる.🔽下🔽に等しい
    行と列が定義されているため、実際の実行時にすぐに計算できます.