SlideShare a Scribd company logo
1 of 15
Лекц 1
 Өгөгдлийн бүтэц гэдэг нь: өгөгдлийн бодит дүрслэл буюу буулгалт. Алгоритмд
шаардлагатай өгөгдлийг хадгалах аргачлал.
 Алгоритм гэдэг нь: тодорхой дараалал бүхий үйлдлийн цогц
 Өгөгдөл гэдэг нь замбараагүй байсан мэдээллүүдийг боловсруулж компьютерт
хадгалсан зүйл юм.
Өгөгдөл нь 3 төрөл байж болно.
 1. Энгийн өгөгдөл (int, double, float, char)
 2. Нийлмэл өгөгдөл (array, string буюу char[])
 3. Хийсвэр өгөгдөл (struct)
 Програмчлалын хэл хөгжсөөр C++, JAVA, C# зэрэгт дээрх өгөгдлийн хийсвэр төрлөөс
улам боловсронгуй болж Class үүссэн.
 Өгөгдлийн бүтцийн гол агуулга нь хийсвэр болон нийлмэл өгөгдлийн төрөл дээр яаж
үйлдэл хийдэг вэ, яаж зохион байгуулах вэ гэдгийг судлана.
 Өгөгдлийн бүтэц дээр доорх үйлдлүүд хийгдэнэ.
 Хайх
 Эрэмбэлэх
 Элемент нэмэх
 Элемент устгах
 ...
Мөн стандарт өгөгдлийн бүтэц байдаг. Үүнд: stack, queue, list, tree ...
 Өгөгдлийн бүтцийг яаж хэрэлжүүлдэг вэ? (хэрхэн програмчилдаг?)
 Аль бүтцийг ямар үед хэрэглэдэг вэ?
 Бичлэг буюу текст нь зохион байгуулалттай өгөгдлийн бүтэц мөн үү? Мөн.
Өгөгдлийг зохион байгуулалт нь 2 янз.
 Гадаад зохион байгуулалт
 Дотоод зохион байгуулалт
 Файлыг 2 янзаар дискэнд хадгалж болно:
 Binary file-аар
 Текстээр хадгална. (текстийн зохион байгуулалт нь мөр ... юм.)
 Өгөгдлийн хийсвэр төрөл нь объект хандлагат пррограмчлалын үндсэн ухагдахуун
бөгөөд өгөгдөл болон тэдгээр дээр хийгдэх багц үйлдлүүдийг агуулдаг. Програм бичих
нь бодит амьдрал дахь ямар нэгэн асуудлыг(бодлогыг) загварчлах ажил юм. Гэвч
аливаа асуудал нь маш ерөнхий, бүрхэг байдаг учраас уг асуудлын шаардлагатай ба
шаардлагагүй зүйлсийг ялган тодорхойлох, улмаар асуудлын хийсвэр ойлголт буюу
загварыг гарган авна. Загварчлалын энэ процессыг хийсвэрлэл гэж нэрлэдэг.
Энэ загвар нь:
- Уг асуудалд шаардлагатай өгөгдлүүд
- Уг өгөгдлүүдэд хийгдэх үйлдлүүдээс тогтоно.
 Өх, хийсвэрлэлт гэдэг нь аливаа тавидсан асуудлыг түүний өгөгдлүүдийг үйлдлийн
хамтаар загварчлахыг хэлнэ. Өгөгдлүүдэд зөвхөн тэдгээрт хийгдэх үйлдлүүдээр
хандана. Ийм шинж чанар бүхий загварчлалыг өгөгдлийн хийсвэр төрөл гэнэ.
Өгөгдлийн хийсвэр төрөл нь өгөгдлийг гадны орчноос далдалдаг ба зөвхөн үйлдэл нь
гадны орчинтой холбогдон өгөгдөлд хандах гүүр болж өгдөг.
 Өгөгдлийн бүтэц болон тэдгээрт хийгдэх үйлдлүүдийг (алгоритмуудыг) загварчлах үйл
явц нь ерөөсөө л өгөгдлийн хийсвэр төрөл тодорхойлох үйл явц юм. Өгөгдлийн бүтэц
нь өгөгдөл, тэдгээрийн зохион байгуулалтаас гадна уг өгөгдлүүдэд хийгдэх
үйлдлүүдээр тодорхойлогддог. Өх, ямар нэг үйлдэл ярихгүйгээр эдгээр өгөгдлийн
бүтцүүдийг төсөөлөх ч хэрэггүй. Тухайлбал, дараалал нь ямар нэг төрлийн
өгөгдлүүдийн цуваа бөгөөд эхэлж орсон нь эхэлж гарах гэсэн зарчмаар ажилладаг.
Хэрэв бид зарчмыг орхигдуулбал уг өгөгдлийн бүтэц нь дарааллын чанараа алдах
болно.
 Бусад өгөгдлийн бүтцүүдийг ч мөн өгөгдлийн хийсвэр төрлөөр тодорхойлж
болно. Өгөгдлийн хийсвэр төрлөөс объектууд үүснэ. ОХПын үед програм нь үндсэндээ
объектууд болон тэдгээрийн хоорондын харьцаанаас тогтоно. Объект өөрийн төлвийг
өөрчлөх болон бусад объектод мэдээ дамжуулдаг.
 Өгөгдлийн хийсвэр төрөл нь өгөгдөл болон түүнд хийгдэх үйлдлүүдийн нэгдлээр
тодорхойлогддог. Тэгвэл С++ хэлэнд өгөгдлийн хийсвэр төрлийг классаар
илэрхийлдэг. Класст тодорхойлогдсон өгөгдөл болон функцүүдийг классын гишүүн
гэнэ. Классыг тодорхойлохдоо class түлхүүр үгээр тодорхойлно:
class Point {
public:
Point(){x=y=0; }
Point(int vx, int vy ) : x(vx), y(vy) {};
~Point();
void move(int dx, int dy);
void reset(int nx, int ny);
private:
int x, y;
};
 Тодорхойлолт: Өөрөө өөртөө ханддаг дэд алгоритмыг рекурсив дэд алгорим
гэнэ. Өөрөөр хэлбэл рекурсив алгоритм нь өөрөө өөрийгөө дуудаж
ажиллуулдаг. Өөрөө өөрийгөө дууддаг дэд алгоритмыг шууд рекурсив
алгоритм гэнэ. Харин 2 дэд алгоритм нэг нэгийгээ дуудсан байж болно. Үүнийг
шууд бус рекурсив алгоритм гэнэ.
Рекурсив алгоритмаар шийдэгдэх аливаа бодлого нь:
1. Уг бодлогыг, түүнтэй ижил боловч түүнээс маш хялбар бодлогоор сольж
дахин тодорхойлох боломжтой байх
2. Шийд нь шууд мэдэгдэж байх эсвэл түүнийг шууд бодож болох нэг юмуу
хэд хэдэн тохиолдол байх. (энэ тохиолдлыг тухайн бодлогын үндсэн тохиолдол гэнэ.)
3. Хялбар бодлогоор солих үйл ажиллагааг давтаж хэрэглэхэд уг бодлого
түүний үндсэн тохиолдолд заавал хүрдэг байх.
4. Үндсэн тохиолдлын шийдийг ашиглан анхны тохиолдлын шийдийг олж
болдог байх.
гэсэн 4-н онцлог шинжтэй байна.
Рекурсив аргаар бодогдох бодлогын үндсэн тохиолдол нь шийд буюу үр дүнг нь
шууд мэдэж байгаа болохоор цаашаа рекурсивээр дахин тодорхойлох шаардлага,
боломжгүй тусгай тохиолдол юм.
Рекурсив тодорхойлолтонд ядаж нэг үндсэн тохиолдол байх ёстой ба тэр нь
дараах хоёр үүрэгтэй байна. Үүнд:
1. Хялбар бодлогод давтан шилжих процессийг төгсгөх нөхцөл болно. Ер нь бол
шууд тодорхойлогдсон үндсэн тохиолдол байхгүй бол рекурсив алгоритм нь өөрөө
өөртөө төгсгөлгүй ханданахад хүрнэ.
2. Үндсэн тохиолдлын утга нь анхны бодлогын шийдийг бодож гаргахад
ашиглагдах үндсэн нэгж болно.
Фиббоначийн дараалал бол бүхэл тоон дараалал. Фиббоначийн дараалалын элемент бүр
нь өмнөх 2 элементийн нийлбэртэй тэнцүү. Энэ бол Фиббоначийн дараалал:
0,1,1,2,3,5,8,13,21,34..........................
Фиббоначийн функц Fib(n) нь Fib(n-1) ба Fib(n2) 2 функцээр тодорхойлогдоно.
Үүнийг ерөнхий тохиолдолд бичвэл
Хэрвээ n=0 буюу n=1 тохиолдолд Fib(n)=n
Хэрвээ n>=2 тохиолдолд Fib(n)= Fib(n-1)+ Fib(n-2)
Жишээлбэл (0+1=1, 1+1=2, 1+2=3, 2+3=5……………………………………………)
•
Эхлээд рекурс ашиглалгүйгээр Фиббоначийн дараалалаас тухайн n тоог олох алгоритм
зохиоё.
#include<conio.h>
#include<stdio.h>
Int Fib(int n);
int n,fib;
main()
{ clrscr();
printf("input any value="); scanf("%d",&n);
printf("result is = %d",fib(n)); } int Fib(int n)
{ int lofib,hifib,fib,x,i;
if (n<=1) return(n);
else lofib=0;
hifib=1;
for (i=2; i<=n; i++)
{ x=lofib;
Lofib=hifib;
Hifib=x+lofib;}
Fib=hifib;
return(fib);
}
Одоо рекурс ашиглан Фиббоначийн дараалалаас тухайн n тоог олох алгоритм зохиоё.
#include<stdio.h>
#include<conio.h>
int n,m;
int fib_rec(int n);
main()
{ clrscr();
printf("input yny value="); scanf("%d",&n);
printf("result is = %d",fib_rec(n));
return(0);
}
int fib_rec(int n)
{ int x,y,fib;
if (n<=1) return(n);
else {x=fib_rec(n-1);
y=fib_rec(n-2);
fib=x+y; fib=x+y;
return(fib); } }

More Related Content

What's hot

U.cs101 алгоритм программчлал-12
U.cs101   алгоритм программчлал-12U.cs101   алгоритм программчлал-12
U.cs101 алгоритм программчлал-12
Badral Khurelbaatar
 
Day 1 database
Day 1   databaseDay 1   database
Day 1 database
ETC
 
Lec3 c++operator
Lec3 c++operatorLec3 c++operator
Lec3 c++operator
Turuu Tsogt
 
U.cs101 алгоритм программчлал-2
U.cs101   алгоритм программчлал-2U.cs101   алгоритм программчлал-2
U.cs101 алгоритм программчлал-2
Badral Khurelbaatar
 
U.cs101 алгоритм программчлал-10
U.cs101   алгоритм программчлал-10U.cs101   алгоритм программчлал-10
U.cs101 алгоритм программчлал-10
Badral Khurelbaatar
 
U.cs101 алгоритм программчлал-1(1)
U.cs101   алгоритм программчлал-1(1)U.cs101   алгоритм программчлал-1(1)
U.cs101 алгоритм программчлал-1(1)
Badral Khurelbaatar
 
өгөгдлийн сан
өгөгдлийн санөгөгдлийн сан
өгөгдлийн сан
Onon Tuul
 
өгөгдлийн сан үүсгэх
өгөгдлийн сан үүсгэхөгөгдлийн сан үүсгэх
өгөгдлийн сан үүсгэх
Tsoomoo Myagmar
 
U.cs101 алгоритм программчлал-7
U.cs101   алгоритм программчлал-7U.cs101   алгоритм программчлал-7
U.cs101 алгоритм программчлал-7
Badral Khurelbaatar
 
Давталттай алгоритмын бодлогууд
Давталттай алгоритмын бодлогуудДавталттай алгоритмын бодлогууд
Давталттай алгоритмын бодлогууд
Баярсайхан Л
 

What's hot (20)

Database 3
Database 3Database 3
Database 3
 
U.cs101 алгоритм программчлал-12
U.cs101   алгоритм программчлал-12U.cs101   алгоритм программчлал-12
U.cs101 алгоритм программчлал-12
 
Day 1 database
Day 1   databaseDay 1   database
Day 1 database
 
класс диаграм
класс диаграмкласс диаграм
класс диаграм
 
Өгөгдлийн бүтэц 8,9
Өгөгдлийн бүтэц 8,9Өгөгдлийн бүтэц 8,9
Өгөгдлийн бүтэц 8,9
 
It101 lect9
It101 lect9It101 lect9
It101 lect9
 
Lec3 c++operator
Lec3 c++operatorLec3 c++operator
Lec3 c++operator
 
U.cs101 алгоритм программчлал-2
U.cs101   алгоритм программчлал-2U.cs101   алгоритм программчлал-2
U.cs101 алгоритм программчлал-2
 
Лекц 9(Заагч)
Лекц 9(Заагч)Лекц 9(Заагч)
Лекц 9(Заагч)
 
U.cs101 алгоритм программчлал-10
U.cs101   алгоритм программчлал-10U.cs101   алгоритм программчлал-10
U.cs101 алгоритм программчлал-10
 
U.cs101 алгоритм программчлал-1(1)
U.cs101   алгоритм программчлал-1(1)U.cs101   алгоритм программчлал-1(1)
U.cs101 алгоритм программчлал-1(1)
 
өгөгдлийн сан
өгөгдлийн санөгөгдлийн сан
өгөгдлийн сан
 
өгөгдлийн сан үүсгэх
өгөгдлийн сан үүсгэхөгөгдлийн сан үүсгэх
өгөгдлийн сан үүсгэх
 
2
22
2
 
database 7-8
database 7-8database 7-8
database 7-8
 
C++ vndsen oilgolt хичээл 1
C++ vndsen oilgolt хичээл 1C++ vndsen oilgolt хичээл 1
C++ vndsen oilgolt хичээл 1
 
U.cs101 алгоритм программчлал-7
U.cs101   алгоритм программчлал-7U.cs101   алгоритм программчлал-7
U.cs101 алгоритм программчлал-7
 
It101 lec6 10.06
It101 lec6 10.06It101 lec6 10.06
It101 lec6 10.06
 
Өгөгдлийн бүтэц 15
Өгөгдлийн бүтэц 15Өгөгдлийн бүтэц 15
Өгөгдлийн бүтэц 15
 
Давталттай алгоритмын бодлогууд
Давталттай алгоритмын бодлогуудДавталттай алгоритмын бодлогууд
Давталттай алгоритмын бодлогууд
 

Similar to Өгөгдлийн бүтэц

Gosexem asuult 09
Gosexem asuult 09Gosexem asuult 09
Gosexem asuult 09
dorjoooo
 
It101 lab9
It101 lab9It101 lab9
It101 lab9
BPurev
 
Lecture3 aлгоритм түүний_шинжчанар
Lecture3 aлгоритм түүний_шинжчанарLecture3 aлгоритм түүний_шинжчанар
Lecture3 aлгоритм түүний_шинжчанар
Gantur Togtokh
 
ХӨС Семинар 1
ХӨС Семинар 1ХӨС Семинар 1
ХӨС Семинар 1
Usukhuu Galaa
 

Similar to Өгөгдлийн бүтэц (20)

Rdbms 300 test
Rdbms 300 testRdbms 300 test
Rdbms 300 test
 
Datastructure algoritm
Datastructure algoritmDatastructure algoritm
Datastructure algoritm
 
Бямбатогтохын Ууганцэцэг-Өгөгдлийн тандалтын зарим аргыг судлах нь
Бямбатогтохын Ууганцэцэг-Өгөгдлийн тандалтын зарим аргыг судлах ньБямбатогтохын Ууганцэцэг-Өгөгдлийн тандалтын зарим аргыг судлах нь
Бямбатогтохын Ууганцэцэг-Өгөгдлийн тандалтын зарим аргыг судлах нь
 
Ood lesson5
Ood lesson5Ood lesson5
Ood lesson5
 
Gosexem asuult 09
Gosexem asuult 09Gosexem asuult 09
Gosexem asuult 09
 
Sw203 Lecture4 Class Object
Sw203 Lecture4  Class ObjectSw203 Lecture4  Class Object
Sw203 Lecture4 Class Object
 
It101 lab9
It101 lab9It101 lab9
It101 lab9
 
It101-lab9
It101-lab9It101-lab9
It101-lab9
 
It101 lab9
It101 lab9It101 lab9
It101 lab9
 
10 b oyunchuluun
10 b oyunchuluun10 b oyunchuluun
10 b oyunchuluun
 
Ood lesson12.1 ---------
Ood lesson12.1  ---------Ood lesson12.1  ---------
Ood lesson12.1 ---------
 
3
33
3
 
33
3333
33
 
Zuvulguu
ZuvulguuZuvulguu
Zuvulguu
 
Lecture3 aлгоритм түүний_шинжчанар
Lecture3 aлгоритм түүний_шинжчанарLecture3 aлгоритм түүний_шинжчанар
Lecture3 aлгоритм түүний_шинжчанар
 
It101 lects 2
It101 lects 2It101 lects 2
It101 lects 2
 
It101-2
It101-2It101-2
It101-2
 
Ood lesson6 class
Ood lesson6 classOod lesson6 class
Ood lesson6 class
 
Systemiin shinjilgee ba zohiomj lekts
Systemiin shinjilgee ba zohiomj lektsSystemiin shinjilgee ba zohiomj lekts
Systemiin shinjilgee ba zohiomj lekts
 
ХӨС Семинар 1
ХӨС Семинар 1ХӨС Семинар 1
ХӨС Семинар 1
 

More from Muuluu

Lecture 3
Lecture 3Lecture 3
Lecture 3
Muuluu
 
Basic software
Basic software Basic software
Basic software
Muuluu
 
Wide area networks
Wide area networksWide area networks
Wide area networks
Muuluu
 
NAT and PAT
NAT and PATNAT and PAT
NAT and PAT
Muuluu
 
Spanning tree protocol
Spanning tree protocolSpanning tree protocol
Spanning tree protocol
Muuluu
 
Firewall
FirewallFirewall
Firewall
Muuluu
 
User practical
User practicalUser practical
User practical
Muuluu
 
Active directory
Active directoryActive directory
Active directory
Muuluu
 
Процессорын архитектур
Процессорын архитектурПроцессорын архитектур
Процессорын архитектур
Muuluu
 
6 network devices
6 network devices6 network devices
6 network devices
Muuluu
 
Бие даалт
Бие даалтБие даалт
Бие даалт
Muuluu
 
Лекц 15
Лекц 15Лекц 15
Лекц 15
Muuluu
 
Лекц 14
Лекц 14Лекц 14
Лекц 14
Muuluu
 
Лекц 16
Лекц 16Лекц 16
Лекц 16
Muuluu
 
Лекц 15
Лекц 15Лекц 15
Лекц 15
Muuluu
 
Лекц 14
Лекц 14Лекц 14
Лекц 14
Muuluu
 

More from Muuluu (20)

Lecture 2
Lecture 2Lecture 2
Lecture 2
 
Lecture 5
Lecture 5Lecture 5
Lecture 5
 
Lecture 3
Lecture 3Lecture 3
Lecture 3
 
Basic software
Basic software Basic software
Basic software
 
Wide area networks
Wide area networksWide area networks
Wide area networks
 
NAT and PAT
NAT and PATNAT and PAT
NAT and PAT
 
Spanning tree protocol
Spanning tree protocolSpanning tree protocol
Spanning tree protocol
 
Firewall
FirewallFirewall
Firewall
 
User practical
User practicalUser practical
User practical
 
Active directory
Active directoryActive directory
Active directory
 
Hardware
HardwareHardware
Hardware
 
windows server 2003
 windows server 2003 windows server 2003
windows server 2003
 
Процессорын архитектур
Процессорын архитектурПроцессорын архитектур
Процессорын архитектур
 
6 network devices
6 network devices6 network devices
6 network devices
 
Бие даалт
Бие даалтБие даалт
Бие даалт
 
Лекц 15
Лекц 15Лекц 15
Лекц 15
 
Лекц 14
Лекц 14Лекц 14
Лекц 14
 
Лекц 16
Лекц 16Лекц 16
Лекц 16
 
Лекц 15
Лекц 15Лекц 15
Лекц 15
 
Лекц 14
Лекц 14Лекц 14
Лекц 14
 

Өгөгдлийн бүтэц

  • 2.  Өгөгдлийн бүтэц гэдэг нь: өгөгдлийн бодит дүрслэл буюу буулгалт. Алгоритмд шаардлагатай өгөгдлийг хадгалах аргачлал.  Алгоритм гэдэг нь: тодорхой дараалал бүхий үйлдлийн цогц  Өгөгдөл гэдэг нь замбараагүй байсан мэдээллүүдийг боловсруулж компьютерт хадгалсан зүйл юм. Өгөгдөл нь 3 төрөл байж болно.  1. Энгийн өгөгдөл (int, double, float, char)  2. Нийлмэл өгөгдөл (array, string буюу char[])  3. Хийсвэр өгөгдөл (struct)
  • 3.  Програмчлалын хэл хөгжсөөр C++, JAVA, C# зэрэгт дээрх өгөгдлийн хийсвэр төрлөөс улам боловсронгуй болж Class үүссэн.  Өгөгдлийн бүтцийн гол агуулга нь хийсвэр болон нийлмэл өгөгдлийн төрөл дээр яаж үйлдэл хийдэг вэ, яаж зохион байгуулах вэ гэдгийг судлана.  Өгөгдлийн бүтэц дээр доорх үйлдлүүд хийгдэнэ.  Хайх  Эрэмбэлэх  Элемент нэмэх  Элемент устгах  ... Мөн стандарт өгөгдлийн бүтэц байдаг. Үүнд: stack, queue, list, tree ...
  • 4.  Өгөгдлийн бүтцийг яаж хэрэлжүүлдэг вэ? (хэрхэн програмчилдаг?)  Аль бүтцийг ямар үед хэрэглэдэг вэ?  Бичлэг буюу текст нь зохион байгуулалттай өгөгдлийн бүтэц мөн үү? Мөн. Өгөгдлийг зохион байгуулалт нь 2 янз.  Гадаад зохион байгуулалт  Дотоод зохион байгуулалт  Файлыг 2 янзаар дискэнд хадгалж болно:  Binary file-аар  Текстээр хадгална. (текстийн зохион байгуулалт нь мөр ... юм.)
  • 5.  Өгөгдлийн хийсвэр төрөл нь объект хандлагат пррограмчлалын үндсэн ухагдахуун бөгөөд өгөгдөл болон тэдгээр дээр хийгдэх багц үйлдлүүдийг агуулдаг. Програм бичих нь бодит амьдрал дахь ямар нэгэн асуудлыг(бодлогыг) загварчлах ажил юм. Гэвч аливаа асуудал нь маш ерөнхий, бүрхэг байдаг учраас уг асуудлын шаардлагатай ба шаардлагагүй зүйлсийг ялган тодорхойлох, улмаар асуудлын хийсвэр ойлголт буюу загварыг гарган авна. Загварчлалын энэ процессыг хийсвэрлэл гэж нэрлэдэг. Энэ загвар нь: - Уг асуудалд шаардлагатай өгөгдлүүд - Уг өгөгдлүүдэд хийгдэх үйлдлүүдээс тогтоно.
  • 6.  Өх, хийсвэрлэлт гэдэг нь аливаа тавидсан асуудлыг түүний өгөгдлүүдийг үйлдлийн хамтаар загварчлахыг хэлнэ. Өгөгдлүүдэд зөвхөн тэдгээрт хийгдэх үйлдлүүдээр хандана. Ийм шинж чанар бүхий загварчлалыг өгөгдлийн хийсвэр төрөл гэнэ. Өгөгдлийн хийсвэр төрөл нь өгөгдлийг гадны орчноос далдалдаг ба зөвхөн үйлдэл нь гадны орчинтой холбогдон өгөгдөлд хандах гүүр болж өгдөг.
  • 7.  Өгөгдлийн бүтэц болон тэдгээрт хийгдэх үйлдлүүдийг (алгоритмуудыг) загварчлах үйл явц нь ерөөсөө л өгөгдлийн хийсвэр төрөл тодорхойлох үйл явц юм. Өгөгдлийн бүтэц нь өгөгдөл, тэдгээрийн зохион байгуулалтаас гадна уг өгөгдлүүдэд хийгдэх үйлдлүүдээр тодорхойлогддог. Өх, ямар нэг үйлдэл ярихгүйгээр эдгээр өгөгдлийн бүтцүүдийг төсөөлөх ч хэрэггүй. Тухайлбал, дараалал нь ямар нэг төрлийн өгөгдлүүдийн цуваа бөгөөд эхэлж орсон нь эхэлж гарах гэсэн зарчмаар ажилладаг. Хэрэв бид зарчмыг орхигдуулбал уг өгөгдлийн бүтэц нь дарааллын чанараа алдах болно.  Бусад өгөгдлийн бүтцүүдийг ч мөн өгөгдлийн хийсвэр төрлөөр тодорхойлж болно. Өгөгдлийн хийсвэр төрлөөс объектууд үүснэ. ОХПын үед програм нь үндсэндээ объектууд болон тэдгээрийн хоорондын харьцаанаас тогтоно. Объект өөрийн төлвийг өөрчлөх болон бусад объектод мэдээ дамжуулдаг.
  • 8.  Өгөгдлийн хийсвэр төрөл нь өгөгдөл болон түүнд хийгдэх үйлдлүүдийн нэгдлээр тодорхойлогддог. Тэгвэл С++ хэлэнд өгөгдлийн хийсвэр төрлийг классаар илэрхийлдэг. Класст тодорхойлогдсон өгөгдөл болон функцүүдийг классын гишүүн гэнэ. Классыг тодорхойлохдоо class түлхүүр үгээр тодорхойлно:
  • 9. class Point { public: Point(){x=y=0; } Point(int vx, int vy ) : x(vx), y(vy) {}; ~Point(); void move(int dx, int dy); void reset(int nx, int ny); private: int x, y; };
  • 10.  Тодорхойлолт: Өөрөө өөртөө ханддаг дэд алгоритмыг рекурсив дэд алгорим гэнэ. Өөрөөр хэлбэл рекурсив алгоритм нь өөрөө өөрийгөө дуудаж ажиллуулдаг. Өөрөө өөрийгөө дууддаг дэд алгоритмыг шууд рекурсив алгоритм гэнэ. Харин 2 дэд алгоритм нэг нэгийгээ дуудсан байж болно. Үүнийг шууд бус рекурсив алгоритм гэнэ.
  • 11. Рекурсив алгоритмаар шийдэгдэх аливаа бодлого нь: 1. Уг бодлогыг, түүнтэй ижил боловч түүнээс маш хялбар бодлогоор сольж дахин тодорхойлох боломжтой байх 2. Шийд нь шууд мэдэгдэж байх эсвэл түүнийг шууд бодож болох нэг юмуу хэд хэдэн тохиолдол байх. (энэ тохиолдлыг тухайн бодлогын үндсэн тохиолдол гэнэ.) 3. Хялбар бодлогоор солих үйл ажиллагааг давтаж хэрэглэхэд уг бодлого түүний үндсэн тохиолдолд заавал хүрдэг байх. 4. Үндсэн тохиолдлын шийдийг ашиглан анхны тохиолдлын шийдийг олж болдог байх. гэсэн 4-н онцлог шинжтэй байна.
  • 12. Рекурсив аргаар бодогдох бодлогын үндсэн тохиолдол нь шийд буюу үр дүнг нь шууд мэдэж байгаа болохоор цаашаа рекурсивээр дахин тодорхойлох шаардлага, боломжгүй тусгай тохиолдол юм. Рекурсив тодорхойлолтонд ядаж нэг үндсэн тохиолдол байх ёстой ба тэр нь дараах хоёр үүрэгтэй байна. Үүнд: 1. Хялбар бодлогод давтан шилжих процессийг төгсгөх нөхцөл болно. Ер нь бол шууд тодорхойлогдсон үндсэн тохиолдол байхгүй бол рекурсив алгоритм нь өөрөө өөртөө төгсгөлгүй ханданахад хүрнэ. 2. Үндсэн тохиолдлын утга нь анхны бодлогын шийдийг бодож гаргахад ашиглагдах үндсэн нэгж болно.
  • 13. Фиббоначийн дараалал бол бүхэл тоон дараалал. Фиббоначийн дараалалын элемент бүр нь өмнөх 2 элементийн нийлбэртэй тэнцүү. Энэ бол Фиббоначийн дараалал: 0,1,1,2,3,5,8,13,21,34.......................... Фиббоначийн функц Fib(n) нь Fib(n-1) ба Fib(n2) 2 функцээр тодорхойлогдоно. Үүнийг ерөнхий тохиолдолд бичвэл Хэрвээ n=0 буюу n=1 тохиолдолд Fib(n)=n Хэрвээ n>=2 тохиолдолд Fib(n)= Fib(n-1)+ Fib(n-2) Жишээлбэл (0+1=1, 1+1=2, 1+2=3, 2+3=5……………………………………………) • Эхлээд рекурс ашиглалгүйгээр Фиббоначийн дараалалаас тухайн n тоог олох алгоритм зохиоё.
  • 14. #include<conio.h> #include<stdio.h> Int Fib(int n); int n,fib; main() { clrscr(); printf("input any value="); scanf("%d",&n); printf("result is = %d",fib(n)); } int Fib(int n) { int lofib,hifib,fib,x,i; if (n<=1) return(n); else lofib=0; hifib=1; for (i=2; i<=n; i++) { x=lofib; Lofib=hifib; Hifib=x+lofib;} Fib=hifib; return(fib); }
  • 15. Одоо рекурс ашиглан Фиббоначийн дараалалаас тухайн n тоог олох алгоритм зохиоё. #include<stdio.h> #include<conio.h> int n,m; int fib_rec(int n); main() { clrscr(); printf("input yny value="); scanf("%d",&n); printf("result is = %d",fib_rec(n)); return(0); } int fib_rec(int n) { int x,y,fib; if (n<=1) return(n); else {x=fib_rec(n-1); y=fib_rec(n-2); fib=x+y; fib=x+y; return(fib); } }