More Related Content
Similar to Өгөгдлийн бүтэц (20)
Өгөгдлийн бүтэц
- 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 түлхүүр үгээр тодорхойлно:
- 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); } }