SlideShare a Scribd company logo
1 of 27
Лекц №5


   Санах ойн динамик
хуваарилалт ба өгөгдлийн
      хийсвэрлэлт    LOGO
Хичээлийн агуулга




Багш: Т.Гантөр
Санах ойн динамик хуваарилалт
 Статик хувьсагчид нь програмыг ажиллаж
  эхлэхэд санах ойд хуваарилагдан, тогтмол
  зайн эзлэн байрлах бөгөөд програмыг
  ажиллаж     дуусахад     санах    ойгоос
  чөлөөлөгддөг.
 Програмын биелэлтийн явцад хувьсагчид
  зориулан санах ой хуваарилж болдог.




Багш: Т.Гантөр
Санах ойн динамик хуваарилалт
 Програмын биелэлтийн явцад санах ойн мужид
  хувьсагчдад зориулан шинээр зай нөөцөлж, мөн
  чөлөөлж болдог.
 Ийм хувьсагчдыг динамик хувьсагч, үүссэн
  санах ойн мужийг динамик муж гэж
  нэрлэдэг.
 C++ хэлэнд динамик хувьсагчийг санах ойд
  хуваарилах       болон     санах  ойгоос
  чөлөөлөхдөө        new      болон   delete
  операторуудыг харгалзан ашиглана.


Багш: Т.Гантөр
Санах ойн динамик хуваарилалт - new
 New оператор нь аргументаараа авсан төрлийн
  өгөгдийг хадгалахад хүрэлцэхүйц зайг динамик
  санах ойгоос нөөцлөн, түүний хаягийг буцаадаг.

 New оператороор хуваарилагдсан хувьсагчид нь
  санах ойн heap мужид байрлана.

 Динамикаар хуваарилагдсан хувьсагч нь нэргүй
  байдаг бөгөөд шууд хаяглагдаж чаддаггүй.
  Тиймээс new оператороос буцаасан заагч
  төрлийн утгаар шууд бусаар хаягладаг.

Багш: Т.Гантөр
Санах ойн динамик хуваарилалт - new
 Жишээ:
  intPointer=new int;




Багш: Т.Гантөр
Санах ойн динамик хуваарилалт - new
 Заагч хувьсагч нь ямар нэг зүйл заахгүйгаар
  хоосон утгыг заах шаардлага гардаг. Энэ
  тохиолдолд stdlib.h санд агуулагдах NULL
  тогтмол утгыг ашиглана.
 Жишээ:
         bool* truth = NULL;
         float* money = NULL;




Багш: Т.Гантөр
Санах ойн динамик хуваарилалт - new
 Жишээ:
 truth = new bool;
 *truth = true;
 money = new float;
 *money = 33.46;
 float* myMoney=new float;




Багш: Т.Гантөр
Санах ойн динамик хуваарилалт - new
 Жишээ:
   *myMoney = *money;




Багш: Т.Гантөр
Санах ойн динамик хуваарилалт - new
 Жишээ:
   myMoney = money;




Багш: Т.Гантөр
Санах ойн динамик хуваарилалт - delete
 Delete оператор нь нөөцөлсөн зайг чөлөөлдөг ба
  уг санах ойн байрлалыг дахин ашиглах
  боломжтой болгоно.

 Санах ойн ашиглалтыг сайжруулах, програмын
  найдвартай ажиллагааг хангах үүднээс new
  оператороор нөөцөлсөн санах ойн хэсгийг
  ашиглаж дууссаны дараа delete оператороор
  чөлөөлж байх хэрэгтэй.




Багш: Т.Гантөр
Санах ойн динамик хуваарилалт - new
 Жишээ:
   delete myMoney;




Багш: Т.Гантөр
Динамик массив
 Массивыг санах ойд хүссэн хэмжээтэйгээр
  хуваарилж, санах ойгоос чөлөөлж, дахин өөр
  хэмжээтэйгээр санах ойд хуваарилах зэргээр
  ашиглаж болно. Ийм массивыг динамик массив
  гэнэ.

 Програмд динамик массив ашиглах нь санах ойг
  зүй зохистой ашиглах давуу талтай




Багш: Т.Гантөр
Динамик массив
 Динамик массивыг зарлахдаа:
   Заагчийн_нэр= new заагчийн_төрөл[хэмжээ];
 Жишээ:
     int maxStack=5;
     int * items;
     items = new ItemType[maxStack];




Багш: Т.Гантөр
Динамик массив
 Динамик массивыг зарлахдаа:
   Заагчийн нэр= new заагчийн төрөл [хэмжээ]
 Жишээ:
     int maxStack=5;
     int * items;
     items = new ItemType[maxStack];




Багш: Т.Гантөр
Динамик массив
 Динамик массивыг санах ойгоос чөлөөлөхдөө:
   delete [] Заагчийн_нэр;
 Жишээ:
     delete [] items;




Багш: Т.Гантөр
Өгөгдлийн хийсвэр төрөл
 Програм бичих гэдэг нь бодит амьдрал дахь
  ямар нэг асуудлыг загварчлах ажил юм.

 Гэвч аливаа асуудал нь маш ерөнхий бүрхэг
  байдаг учраас юуны өмнө уг асуудалд
  шаардлагатай ба шаардлагагүй зүйлсийг ялган
  тодорхойлох, улмаар асуудлын хийсвэр ойлголт
  буюу загварыг гарган авна.

 Загварчлалын энэ процессыг хийсвэрлэлт гэж
  нэрлэнэ

Багш: Т.Гантөр
Өгөгдлийн хийсвэр төрөл
 Загвар нь
      • Уг асуудалд шаардлагатай өгөгдөлүүд
      • Уг өгөгдөлд хийгдэх үйлдлүүдээс тогтоно.

 Өөрөөр хэлбэл хийсвэрлэлт гэдэг нь аливаа
  тавигдсан   асуудлыг    түүний   өгөгдлүүдийг
  үйлдлүүдийн хамтаар загварчлахыг хэлнэ




Багш: Т.Гантөр
Өгөгдлийн хийсвэр төрөл
 Өгөгдөлүүдэд      зөвхөн    тэдгээрт    хийгдэх
  үйлдлүүдээр хандана. Ийм шинж чанар бүхий
  загварчлалыг өгөгдлийн хийсвэр төрөл гэнэ.
 Өгөгдлийн хийсвэр төрөл нь өгөгдлийг гадны
  орчноос далдалдаг ба зөвхөн үйлдэл нь гадна
  орчинтой холбогдон өгөгдөл хандах гүүр болж
  өгдөг.
 Өгөгдлийн хийсвэр төрөл нь өгөгдөл болон
  тэдгээрт хийгдэх багц үйлдлүүдийг агуулдаг.




Багш: Т.Гантөр
Өгөгдлийн хийсвэр төрөл


 Өгөгдлийн бүтэц нь өгөгдөл, тэдгээрийн зохион
  байгуулалтаас гадна уг өгөгдлүүдэд хийгдэх
  үйлдлүүдээр тодорхойлогддог.

 Өгөгдлийн бүтэц болон тэдгээрт хийгдэх
  үйлдлүүдийг загварчлах үйл явц нь ерөөсөө
  өгөгдлийн хийсвэр төрөл тодорхойлох үйл явц
  юм.



Багш: Т.Гантөр
Өгөгдлийн хийсвэр төрөл
 Өгөгдлийн хийсвэр төрлийг С++ програмчлалын
  хэлэнд классаар илэрхийлдэг.
 Класс гэдэг нь нууцлагдсан өгөгдөл ба
  функцуудыг багцлан агуулсан өгөгдлийн нийлэл
  төрөл юм.
 Классыг class нөөц үгээр тодорхойлно. Класст
  зарлагдсан хувьсагчдыг классын гишүүн өгөгдөл,
  класст зарлагдсан функцуудыг классын гишүүн
  функц гэнэ




Багш: Т.Гантөр
DynArray хийсвэр төрөл
class DynArray{
    int *a, len;
public:
    DynArray(int length);
    ~DynArray();
    int& operator[](int n);
    int size();
    void resize(int length);
    void print();
};



Багш: Т.Гантөр
DynArray хийсвэр төрөл
DynArray::DynArray(int length){
    len=length;
    a=new int[len];
    for(int i=0;i<len;i++) a[i]=0;
}

DynArray::~DynArray(){
    delete []a;
}




Багш: Т.Гантөр
DynArray хийсвэр төрөл
int& DynArray::operator[](int i){
    if ( i<0 || i>=len){
         cout<<"Aldaa: "<<i<<" hemjee
                          heterlee.n";
         exit(0);
         }
    return a[i];
}

int DynArray::size(){
    return len;
}

Багш: Т.Гантөр
DynArray хийсвэр төрөл
void DynArray::resize(int length){
    if (len==length) return;
    int newlen=length;
    int *newa= new int[newlen];
    int min=(newlen<len)? newlen:len;
    for(int i=0;i<min; i++)
         newa[i]=a[i];
    for(i=min; i<newlen;i++)
         newa[i]=0;
    len=newlen;
    a=newa;
    }

Багш: Т.Гантөр
DynArray хийсвэр төрөл
void DynArray::print(){
    for(int i=0; i<len;i++)
         cout<<a[i]<<",";
    cout<<endl;

}




Багш: Т.Гантөр
DynArray хийсвэр төрөл
void main(){
          DynArray my(3);
          for(int i=0; i<3; i++)my[i]=i;
          my.print();
          cout<<"hemjee: "<<my.size()<<endl;
          my.resize(5);
          cout<<"hemjee: "<<my.size()<<endl;
          my.print();
          my[3]=3; my[4]=4;
          my.print();
          my.resize(10);
          my.print();
          my[7]=3; my[9]=4;
          my.print();
Багш: Т.Гантөр

More Related Content

What's hot

U.cs101 алгоритм программчлал-3
U.cs101   алгоритм программчлал-3U.cs101   алгоритм программчлал-3
U.cs101 алгоритм программчлал-3Badral Khurelbaatar
 
U.cs101 алгоритм программчлал-1(1)
U.cs101   алгоритм программчлал-1(1)U.cs101   алгоритм программчлал-1(1)
U.cs101 алгоритм программчлал-1(1)Badral Khurelbaatar
 
Давталттай алгоритмын бодлогууд
Давталттай алгоритмын бодлогуудДавталттай алгоритмын бодлогууд
Давталттай алгоритмын бодлогуудБаярсайхан Л
 
Эрэмбэлэлт хайлтын аргууд
Эрэмбэлэлт хайлтын аргуудЭрэмбэлэлт хайлтын аргууд
Эрэмбэлэлт хайлтын аргуудBayalagmaa Davaanyam
 
U.cs101 алгоритм программчлал-2
U.cs101   алгоритм программчлал-2U.cs101   алгоритм программчлал-2
U.cs101 алгоритм программчлал-2Badral Khurelbaatar
 
Мод, графын ерөнхий зарчим
Мод, графын ерөнхий зарчимМод, графын ерөнхий зарчим
Мод, графын ерөнхий зарчимBayalagmaa Davaanyam
 
Lec3 c++operator
Lec3 c++operatorLec3 c++operator
Lec3 c++operatorTuruu Tsogt
 
си хэлний хичээлүүд 11 р анги
си хэлний хичээлүүд 11 р ангиси хэлний хичээлүүд 11 р анги
си хэлний хичээлүүд 11 р ангиenhsaran_tsahim
 
Lec4 хereglegchiinpunkts
Lec4 хereglegchiinpunktsLec4 хereglegchiinpunkts
Lec4 хereglegchiinpunktsTuruu Tsogt
 
Tutorial of python
Tutorial of pythonTutorial of python
Tutorial of pythonMr Nyak
 
U.cs101 laboratory 11 (1)
U.cs101 laboratory 11 (1)U.cs101 laboratory 11 (1)
U.cs101 laboratory 11 (1)Ganbaatar ch
 

What's hot (20)

U.cs101 алгоритм программчлал-3
U.cs101   алгоритм программчлал-3U.cs101   алгоритм программчлал-3
U.cs101 алгоритм программчлал-3
 
Өгөгдлийн бүтэц 10
Өгөгдлийн бүтэц 10Өгөгдлийн бүтэц 10
Өгөгдлийн бүтэц 10
 
U.cs101 алгоритм программчлал-1(1)
U.cs101   алгоритм программчлал-1(1)U.cs101   алгоритм программчлал-1(1)
U.cs101 алгоритм программчлал-1(1)
 
Давталттай алгоритмын бодлогууд
Давталттай алгоритмын бодлогуудДавталттай алгоритмын бодлогууд
Давталттай алгоритмын бодлогууд
 
Эрэмбэлэлт хайлтын аргууд
Эрэмбэлэлт хайлтын аргуудЭрэмбэлэлт хайлтын аргууд
Эрэмбэлэлт хайлтын аргууд
 
Nohtsol shal хичээл 5
Nohtsol shal хичээл 5Nohtsol shal хичээл 5
Nohtsol shal хичээл 5
 
U.cs101 алгоритм программчлал-2
U.cs101   алгоритм программчлал-2U.cs101   алгоритм программчлал-2
U.cs101 алгоритм программчлал-2
 
C cons
C consC cons
C cons
 
Лекц №9
Лекц №9Лекц №9
Лекц №9
 
Лекц №11
Лекц №11Лекц №11
Лекц №11
 
Өгөгдлийн бүтэц 1
Өгөгдлийн бүтэц 1Өгөгдлийн бүтэц 1
Өгөгдлийн бүтэц 1
 
Мод, графын ерөнхий зарчим
Мод, графын ерөнхий зарчимМод, графын ерөнхий зарчим
Мод, графын ерөнхий зарчим
 
Lec3 c++operator
Lec3 c++operatorLec3 c++operator
Lec3 c++operator
 
Өгөгдлийн бүтэц 2-3
Өгөгдлийн бүтэц 2-3Өгөгдлийн бүтэц 2-3
Өгөгдлийн бүтэц 2-3
 
си хэлний хичээлүүд 11 р анги
си хэлний хичээлүүд 11 р ангиси хэлний хичээлүүд 11 р анги
си хэлний хичээлүүд 11 р анги
 
Sw203 Lecture8 Interface
Sw203 Lecture8 InterfaceSw203 Lecture8 Interface
Sw203 Lecture8 Interface
 
Lesson 7
Lesson 7Lesson 7
Lesson 7
 
Lec4 хereglegchiinpunkts
Lec4 хereglegchiinpunktsLec4 хereglegchiinpunkts
Lec4 хereglegchiinpunkts
 
Tutorial of python
Tutorial of pythonTutorial of python
Tutorial of python
 
U.cs101 laboratory 11 (1)
U.cs101 laboratory 11 (1)U.cs101 laboratory 11 (1)
U.cs101 laboratory 11 (1)
 

Viewers also liked

Dsi lec8-copy
Dsi lec8-copyDsi lec8-copy
Dsi lec8-copyggmo86
 
Dsi lec6,7
Dsi lec6,7Dsi lec6,7
Dsi lec6,7ggmo86
 
Dsi lec9-copy
Dsi lec9-copyDsi lec9-copy
Dsi lec9-copyggmo86
 
Dsi lec3
Dsi lec3Dsi lec3
Dsi lec3ggmo86
 
Dsi lec2
Dsi lec2Dsi lec2
Dsi lec2ggmo86
 
Dsi lec10
Dsi lec10Dsi lec10
Dsi lec10ggmo86
 
Dsi lec12
Dsi lec12Dsi lec12
Dsi lec12ggmo86
 
Dsi lec1
Dsi lec1Dsi lec1
Dsi lec1ggmo86
 
Dsi lec13
Dsi lec13Dsi lec13
Dsi lec13ggmo86
 
Dsi lec11
Dsi lec11Dsi lec11
Dsi lec11ggmo86
 
Dsi lec14
Dsi lec14Dsi lec14
Dsi lec14ggmo86
 
Sodko111
Sodko111Sodko111
Sodko111sodko27
 

Viewers also liked (14)

Dsi lec8-copy
Dsi lec8-copyDsi lec8-copy
Dsi lec8-copy
 
Dsi lec6,7
Dsi lec6,7Dsi lec6,7
Dsi lec6,7
 
Dsi lec9-copy
Dsi lec9-copyDsi lec9-copy
Dsi lec9-copy
 
Dsi lec3
Dsi lec3Dsi lec3
Dsi lec3
 
Dsi lec2
Dsi lec2Dsi lec2
Dsi lec2
 
Dsi lec10
Dsi lec10Dsi lec10
Dsi lec10
 
Dsi lec12
Dsi lec12Dsi lec12
Dsi lec12
 
Dsi lec1
Dsi lec1Dsi lec1
Dsi lec1
 
Dsi lec13
Dsi lec13Dsi lec13
Dsi lec13
 
Dsi lec11
Dsi lec11Dsi lec11
Dsi lec11
 
Dsi lec14
Dsi lec14Dsi lec14
Dsi lec14
 
Blog ds-tod
Blog ds-todBlog ds-tod
Blog ds-tod
 
Sodko111
Sodko111Sodko111
Sodko111
 
Datastructure algoritm
Datastructure algoritmDatastructure algoritm
Datastructure algoritm
 

Similar to Dsi lec5 (20)

Mathematica Анхны тойм мэдэгдэхүүн.pptx
Mathematica Анхны тойм мэдэгдэхүүн.pptxMathematica Анхны тойм мэдэгдэхүүн.pptx
Mathematica Анхны тойм мэдэгдэхүүн.pptx
 
001cclass 120926194905-phpapp02
001cclass 120926194905-phpapp02001cclass 120926194905-phpapp02
001cclass 120926194905-phpapp02
 
Лекц 6 - 7
Лекц 6 - 7Лекц 6 - 7
Лекц 6 - 7
 
Pl lecture8
Pl lecture8Pl lecture8
Pl lecture8
 
Pl lecture8
Pl lecture8Pl lecture8
Pl lecture8
 
Ci hel
Ci helCi hel
Ci hel
 
U.cs101 лаборатори 8-1
U.cs101 лаборатори 8-1U.cs101 лаборатори 8-1
U.cs101 лаборатори 8-1
 
Mathcad beginning-part1
Mathcad beginning-part1Mathcad beginning-part1
Mathcad beginning-part1
 
Lec5 angi
Lec5 angiLec5 angi
Lec5 angi
 
U.cs101 лаборатори 8
U.cs101 лаборатори 8U.cs101 лаборатори 8
U.cs101 лаборатори 8
 
Pp Lect9 10 1
Pp Lect9 10 1Pp Lect9 10 1
Pp Lect9 10 1
 
Lecture3
Lecture3Lecture3
Lecture3
 
Лаборатор-3
Лаборатор-3Лаборатор-3
Лаборатор-3
 
Лекц №10
Лекц №10Лекц №10
Лекц №10
 
Sw203 Lecture4 Class Object
Sw203 Lecture4  Class ObjectSw203 Lecture4  Class Object
Sw203 Lecture4 Class Object
 
Бие даалт
Бие даалтБие даалт
Бие даалт
 
Лекц №6
Лекц №6Лекц №6
Лекц №6
 
Лекц №13
Лекц №13Лекц №13
Лекц №13
 
U.cs101 laborator 9
U.cs101 laborator 9U.cs101 laborator 9
U.cs101 laborator 9
 
Pp Lect10 11
Pp Lect10 11Pp Lect10 11
Pp Lect10 11
 

Dsi lec5

  • 1. Лекц №5 Санах ойн динамик хуваарилалт ба өгөгдлийн хийсвэрлэлт LOGO
  • 3. Санах ойн динамик хуваарилалт  Статик хувьсагчид нь програмыг ажиллаж эхлэхэд санах ойд хуваарилагдан, тогтмол зайн эзлэн байрлах бөгөөд програмыг ажиллаж дуусахад санах ойгоос чөлөөлөгддөг.  Програмын биелэлтийн явцад хувьсагчид зориулан санах ой хуваарилж болдог. Багш: Т.Гантөр
  • 4. Санах ойн динамик хуваарилалт  Програмын биелэлтийн явцад санах ойн мужид хувьсагчдад зориулан шинээр зай нөөцөлж, мөн чөлөөлж болдог.  Ийм хувьсагчдыг динамик хувьсагч, үүссэн санах ойн мужийг динамик муж гэж нэрлэдэг.  C++ хэлэнд динамик хувьсагчийг санах ойд хуваарилах болон санах ойгоос чөлөөлөхдөө new болон delete операторуудыг харгалзан ашиглана. Багш: Т.Гантөр
  • 5. Санах ойн динамик хуваарилалт - new  New оператор нь аргументаараа авсан төрлийн өгөгдийг хадгалахад хүрэлцэхүйц зайг динамик санах ойгоос нөөцлөн, түүний хаягийг буцаадаг.  New оператороор хуваарилагдсан хувьсагчид нь санах ойн heap мужид байрлана.  Динамикаар хуваарилагдсан хувьсагч нь нэргүй байдаг бөгөөд шууд хаяглагдаж чаддаггүй. Тиймээс new оператороос буцаасан заагч төрлийн утгаар шууд бусаар хаягладаг. Багш: Т.Гантөр
  • 6. Санах ойн динамик хуваарилалт - new  Жишээ: intPointer=new int; Багш: Т.Гантөр
  • 7. Санах ойн динамик хуваарилалт - new  Заагч хувьсагч нь ямар нэг зүйл заахгүйгаар хоосон утгыг заах шаардлага гардаг. Энэ тохиолдолд stdlib.h санд агуулагдах NULL тогтмол утгыг ашиглана.  Жишээ: bool* truth = NULL; float* money = NULL; Багш: Т.Гантөр
  • 8. Санах ойн динамик хуваарилалт - new  Жишээ: truth = new bool; *truth = true; money = new float; *money = 33.46; float* myMoney=new float; Багш: Т.Гантөр
  • 9. Санах ойн динамик хуваарилалт - new  Жишээ: *myMoney = *money; Багш: Т.Гантөр
  • 10. Санах ойн динамик хуваарилалт - new  Жишээ: myMoney = money; Багш: Т.Гантөр
  • 11. Санах ойн динамик хуваарилалт - delete  Delete оператор нь нөөцөлсөн зайг чөлөөлдөг ба уг санах ойн байрлалыг дахин ашиглах боломжтой болгоно.  Санах ойн ашиглалтыг сайжруулах, програмын найдвартай ажиллагааг хангах үүднээс new оператороор нөөцөлсөн санах ойн хэсгийг ашиглаж дууссаны дараа delete оператороор чөлөөлж байх хэрэгтэй. Багш: Т.Гантөр
  • 12. Санах ойн динамик хуваарилалт - new  Жишээ: delete myMoney; Багш: Т.Гантөр
  • 13. Динамик массив  Массивыг санах ойд хүссэн хэмжээтэйгээр хуваарилж, санах ойгоос чөлөөлж, дахин өөр хэмжээтэйгээр санах ойд хуваарилах зэргээр ашиглаж болно. Ийм массивыг динамик массив гэнэ.  Програмд динамик массив ашиглах нь санах ойг зүй зохистой ашиглах давуу талтай Багш: Т.Гантөр
  • 14. Динамик массив  Динамик массивыг зарлахдаа: Заагчийн_нэр= new заагчийн_төрөл[хэмжээ];  Жишээ: int maxStack=5; int * items; items = new ItemType[maxStack]; Багш: Т.Гантөр
  • 15. Динамик массив  Динамик массивыг зарлахдаа: Заагчийн нэр= new заагчийн төрөл [хэмжээ]  Жишээ: int maxStack=5; int * items; items = new ItemType[maxStack]; Багш: Т.Гантөр
  • 16. Динамик массив  Динамик массивыг санах ойгоос чөлөөлөхдөө: delete [] Заагчийн_нэр;  Жишээ: delete [] items; Багш: Т.Гантөр
  • 17. Өгөгдлийн хийсвэр төрөл  Програм бичих гэдэг нь бодит амьдрал дахь ямар нэг асуудлыг загварчлах ажил юм.  Гэвч аливаа асуудал нь маш ерөнхий бүрхэг байдаг учраас юуны өмнө уг асуудалд шаардлагатай ба шаардлагагүй зүйлсийг ялган тодорхойлох, улмаар асуудлын хийсвэр ойлголт буюу загварыг гарган авна.  Загварчлалын энэ процессыг хийсвэрлэлт гэж нэрлэнэ Багш: Т.Гантөр
  • 18. Өгөгдлийн хийсвэр төрөл  Загвар нь • Уг асуудалд шаардлагатай өгөгдөлүүд • Уг өгөгдөлд хийгдэх үйлдлүүдээс тогтоно.  Өөрөөр хэлбэл хийсвэрлэлт гэдэг нь аливаа тавигдсан асуудлыг түүний өгөгдлүүдийг үйлдлүүдийн хамтаар загварчлахыг хэлнэ Багш: Т.Гантөр
  • 19. Өгөгдлийн хийсвэр төрөл  Өгөгдөлүүдэд зөвхөн тэдгээрт хийгдэх үйлдлүүдээр хандана. Ийм шинж чанар бүхий загварчлалыг өгөгдлийн хийсвэр төрөл гэнэ.  Өгөгдлийн хийсвэр төрөл нь өгөгдлийг гадны орчноос далдалдаг ба зөвхөн үйлдэл нь гадна орчинтой холбогдон өгөгдөл хандах гүүр болж өгдөг.  Өгөгдлийн хийсвэр төрөл нь өгөгдөл болон тэдгээрт хийгдэх багц үйлдлүүдийг агуулдаг. Багш: Т.Гантөр
  • 20. Өгөгдлийн хийсвэр төрөл  Өгөгдлийн бүтэц нь өгөгдөл, тэдгээрийн зохион байгуулалтаас гадна уг өгөгдлүүдэд хийгдэх үйлдлүүдээр тодорхойлогддог.  Өгөгдлийн бүтэц болон тэдгээрт хийгдэх үйлдлүүдийг загварчлах үйл явц нь ерөөсөө өгөгдлийн хийсвэр төрөл тодорхойлох үйл явц юм. Багш: Т.Гантөр
  • 21. Өгөгдлийн хийсвэр төрөл  Өгөгдлийн хийсвэр төрлийг С++ програмчлалын хэлэнд классаар илэрхийлдэг.  Класс гэдэг нь нууцлагдсан өгөгдөл ба функцуудыг багцлан агуулсан өгөгдлийн нийлэл төрөл юм.  Классыг class нөөц үгээр тодорхойлно. Класст зарлагдсан хувьсагчдыг классын гишүүн өгөгдөл, класст зарлагдсан функцуудыг классын гишүүн функц гэнэ Багш: Т.Гантөр
  • 22. DynArray хийсвэр төрөл class DynArray{ int *a, len; public: DynArray(int length); ~DynArray(); int& operator[](int n); int size(); void resize(int length); void print(); }; Багш: Т.Гантөр
  • 23. DynArray хийсвэр төрөл DynArray::DynArray(int length){ len=length; a=new int[len]; for(int i=0;i<len;i++) a[i]=0; } DynArray::~DynArray(){ delete []a; } Багш: Т.Гантөр
  • 24. DynArray хийсвэр төрөл int& DynArray::operator[](int i){ if ( i<0 || i>=len){ cout<<"Aldaa: "<<i<<" hemjee heterlee.n"; exit(0); } return a[i]; } int DynArray::size(){ return len; } Багш: Т.Гантөр
  • 25. DynArray хийсвэр төрөл void DynArray::resize(int length){ if (len==length) return; int newlen=length; int *newa= new int[newlen]; int min=(newlen<len)? newlen:len; for(int i=0;i<min; i++) newa[i]=a[i]; for(i=min; i<newlen;i++) newa[i]=0; len=newlen; a=newa; } Багш: Т.Гантөр
  • 26. DynArray хийсвэр төрөл void DynArray::print(){ for(int i=0; i<len;i++) cout<<a[i]<<","; cout<<endl; } Багш: Т.Гантөр
  • 27. DynArray хийсвэр төрөл void main(){ DynArray my(3); for(int i=0; i<3; i++)my[i]=i; my.print(); cout<<"hemjee: "<<my.size()<<endl; my.resize(5); cout<<"hemjee: "<<my.size()<<endl; my.print(); my[3]=3; my[4]=4; my.print(); my.resize(10); my.print(); my[7]=3; my[9]=4; my.print(); Багш: Т.Гантөр