Ads 468x60px

Алгоритмчлалын үндэс


Алгоритмчлалын үндэс
Сэдвүүд:
·         Оршил
Оршил
Компьютерын техник нь бидний амьдралд гүн гүнзгий нэвтэрчээ. Хөгжингүй орнуудад бол гэр ахуй, аж үйлдвэр, хөдөө аж ахуй, худалдаа, банк, батлан хамгаалах, эмнэлэг-анагаах ухаан, бүх шатны боловсрол олгох сургалт, шинжлэх ухаан, соёл урлаг (шоу бизнес) г.м. нийгмийн бүхий л салбарт компьютер өргөн ашиглагдаж байна. Хөгжлийн төвшингөөр авч үзвэл манай орон хэдийгээр “буурай” гэсэн нэр зүүдэг ч Дэлхийн технократ иргэншлийн салшгүй хэсэг учраас дээр дурдсан “бүх нийтийн компьютержилт” тодорхой хэмжээнд явагдаж л байгаа. Тэр тусмаа бөөнөөр үйлдвэрлэгдэгч персонал компьютерууд олон нийтийн хэрэглээнд эрчимтэй нэвтэрч байна. Үүнтэй уялдан хүн бүр компьютертай хэрхэн харьцах талаар тодорхой хэмжээний мэдлэгтэй болох шаардлага гардаг. Ийм мэдлэгийн анхдагч төвшин нь компьютер, түүний ажиллах зарчмын тухай үндсэн ойлголт, өргөн хэрэглээний програмууд дээр ажиллах чадвар зэрэг болно.
Тэгвэл удаах төвшний мэдлэг нь хэрэглэгч өөрөө компьютерт зориулсан програм бичих явдал юм. Энэ нь хэрэглэгч компьютерыг бүхэлдээ өөрийн хүссэнээр ашиглаж эхлэх боломжийг нээж өгдөг. Уг хичээл нь, дээд төвшний програмчлалын Си алгоритмын хэл ашиглан компьютерт хялбар програм бичиж сурах чадварыг оюутанд олгох зорилготой. Өөрөөр хэлбэл, суралцагчид програмчлалын үндсийг мэдүүлэх чиглэлтэй болно.
Компьютер (Computer) гэж юу вэ гэсэн асуултыг тавья. Үүнд хэрхэн хариулваас зохилтой вэ? Хамгийн товчоор, “компьютер гэдэг нь мэдээллийг асар өндөр хурдтайгаар боловсруулах зориулалттай орчин үеийн электрон төхөөрөмж юм” гэсэн хариултыг өгч болно. Тэгвэл Мэдээлэл (Information) гэж юу вэ гэсэн дараагийн асуулт гарч ирж байна. Мэдээлэл гэдэг нь асар өргөн ойлголт. Хамгийн энгийнээр хэлбэл, дуу авиа, зураг дүрс, тоо, үг үсэг г.м. хүмүүсийн хоорондын (өөрөөр хэлбэл нийгмийн) харилцааг “илэрхийлж байдаг” зүйлсийг мэдээлэл буюу мэдээллийн хэлбэрүүд гэнэ. Тэгвэл компьютер бол эд бүгдийг боловсруулдаг байх нь. За тэгвэл, Боловсруулах гэж юу гэсэн үг вэ? Үүнд дараах байдлаар хариулж болно. Хэрэглэгч (өөрөөр хэлбэл хүн) аливаа мэдээллийг чухам ямар зорилгын үүднээс компьютерт оруулсан бэ, тэр зорилгынх нь дагуу компьютер тухайн мэдээллийг хувирган өөрчилж өөр мэдээлэл болгох процессыг боловсруулах гэнэ. Заримдаа боловсруулахаар оруулж буй мэдээллийг өгөгдөл (data), боловсруулагдсан мэдээллийг үр дүн (result) гэдэг.
Хүн мэдээлэл боловсруулдаг объект мөн үү? Мөн байлгүй яах вэ. Юуны төлөө бидэнд уураг тархи, мэдрэхүйн эрхтнүүд заяасан билээ Гагцхүү компьютерээс ялгаатай нь, хүн мэдээлэл боловсруулах процессоо өөрийн дур зоригоор удирдаж, залах бүрэн эрх чөлөөтэй байдаг. Учир нь сэтгэдэг амьтан болоод тэр. Харин компьютерт өөрийн гэсэн жинхэнэ оюун ухаан байхгүй. Энэ бол сэтгэдэг объект биш харин даалгавар гүйцэтгэгч машин юм. Сэтгэдэг машинуудыг бид хаана хардаг вэ? Шинжлэх ухааны уран зөгнөлт кинонуудаас... Холливудын алдартай бүтээлүүд болох “Терминатор”, “Матриц”-ын цувралууд үүний тод жишээ. Шварценеггерийн бүтээсэн “терминатор” нь толгойдоо сэтгэдэг компьютертэй, хүн дүрст робот буюу “андроид” юм. “Матриц” кинонд сэтгэдэг компьютерууд Дэлхийг эрхшээлдээ оруулсан байдаг. Ердийн амьдралд ийм машинууд байхгүй ээ.
Тэгэхээр, бодит ертөнцийн бодит компьютерууд бидний оруулсан мэдээллийг бидний өгсөн дүрэм, зааврын дагуу боловсруулдаг байх нь. Мэдээллийг боловсруулахын тулд компьютер хэрхэн яаж ажиллах удирдамж буюу дүрэм, зааврын цогцыг програм (programm) гэнэ. Програм зохиох процессыг програмчлал (programming) гэнэ. Програмчлал үйлдэхдээ хэрэглэх аргыг програмчлалын хэл (programming language) гэнэ. Компьютер нь програмын дагуу ажиллана. Ийм учраас компьютерт техник хангамжаас (hardware) гадна програм хангамж (software) гэж байдаг ажээ.
Алгоритм гэж юу вэ?
Програмыг компьютерт шууд бичиж оруулах ёстой юу? Тэгж болно. Гэхдээ, програмчлалд анхлан суралцаж буй хүний хувьд эхлээд бичих гэж буй програмынхаа загвар буюу бүдүүвчийг зохиогоод дараа нь түүнийхээ дагуу програмаа бичих нь илүү үр дүнтэй гэж мэргэжилтнүүд үздэг. Ийм загвар буюу төлөвлөөг алгоритм гэдэг. Эсвэл “алгоритм бол тодорхой үр дүн гаргаж авахын тулд дараалан гүйцэтгэх ёстой үйлдлүүдийн жагсаалт юм”. Эсвэл “алгоритм бол тодорхой үр дүн гаргаж авахын тулд баримтлах ерөнхий дүрэм юм”. Алгоритм зохиох процессыг мэдээж алгоритмчлал гэнэ. Ер нь хүн ямар ч ажлыг хийхдээ эхлээд төлөвлөгөө гаргадаг шүү дээ. Тэрэнтэй л адил гэсэн үг. Алгоритм гэдэг үг өөрөө, 783-850 онд амьдарч байсан дундад азийн гарамгай тоочин Мухаммед ибн Муса аль-Хорезми хэмээх хүний нэрний гажсан хувилбар болох Алхори[ө]мы (Algorithmi) гэсэн үгээс гаралтай ажээ.
Эргэн тойрны амьдралд дүүрэн алгоритм байна. Ж.нь хот доторх автомашины жолооч гэрлэн дохионд захирагдах дүрмийг баримталдаг. Түүнийг нь:
1.       Хэрэв шар гэрэл асвал гэрлэн дохио солигдох (улаан эсвэл ногоон) гэж буй тул анхааралтай бай
2.       Хэрэв улаан гэрэл асвал зогс
3.       Хэрэв ногоон гэрэл асвал хөдөл
хэмээн томъёолъё. Энэ бол гэрлэн дохиод захирагдах алгоритм юм. Гэхдээ энэ алгоритмын хувьд үйлдлийн эрэмбэ зайлшгүй чухал биш. Учир нь жолооч замын гэрлэн дохиотой хэсгээр явж байгаад, чухам ямар гэрэл асч байна вэ (өөрөөр хэлбэл ямар нөхцөл биелж байна вэ гэдгийг шалгаад) түүнд тохирсон алхмыг дээрх алгоритмаас сонгож гүйцэтгэнэ.  
Тэгвэл (З+3)*(3+4)-23 гэсэн илэрхийллийг бодохын тулд:
1.       3 дээр 3-ыг нэмэх (=6)
2.       3 дээр 4-ийг нэмэх (=7)
3.       6-г 7-оор үржүүлэх (=42)
4.       2-ийг куб зэрэгт дэвшүүлэх (=8)
5.       42-оос 8-ыг хасах
гэсэн алгоритмыг баримтлана. Энд бол үйлдлийн дараалал чухал байна. Түүнийг зөрчвөөс зөв хариуг гаргаж чадахгүй.
Орчлон ертөнц ч өөрийн алгоритмтай. Дэлхий Нарыг дунджаар 150 сая км-ийн радиустай “тойргоор” 1 жилд бүтэн тойрно. Дэлхий өөрийн тэнхлэгийг 24 цагт бүтэн тойрно. Бүх бодис эгэл бөөмсөөс тогтоно г.м. Эдгээр алгоритмууд байгалийн хуулиудын тусламжтайгаар програмчлагдаж, цаг ямагт мөрдөгдөж байдаг.
Тэгвэл алгоритм ба компьютерын програмын хооронд ямар ялгаа байна вэ гэсэн асуулт тавья. Програм – энэ бол удирдамж, алгоритм – энэ ч гэсэн бас удирдамж байна. Тиймээ. Яг үнэндээ эдгээрийн хооронд зарчмын ялгаа байхгүй юм. Учир нь програмчлалын хэл дээр зохиосон алгоритмыг програм гэдэг ажээ. Компьютер бол алгоритмыг гүйцэтгэгч, хүн бол алгоритмыг зохиогч юм. Гүйцэтгэгчид алгоритмын зорилго ямар ч хамаагүй бөгөөд зөвхөн зохиогч л үүнийг мэдэж байдаг. Гэхдээ гүйцэтгэгч нь зохиогчийн тавьсан зорилгыг хангалттай сайн биелүүлдэг байхын тулд алгоритм сайн зохиогдсон байх нь мэдээж. Тэгвэл, сайн алгоритм дараах үндсэн чанаруудыг хангасан байх ёстой гэнэ:
1.       Алгоритм нь дараалсан алхмууд буюу үйлдлүүдээс тогтсон байх – алгоритм нь аливаа даалгаврыг гүйцэтгэх төгсгөлөг тооны алхмуудаас бүрдсэн байх
2.       Алгоритмын алхам бүр оновчтой, тодорхой байх – алгоритмын алхам бүрт чухам ямар үйлдэл хийгдэх нь тодорхой байх
3.       Алгоритмд орох өгөгдөл, гарах үр дүн байх ёстой
4.       Алгоритм нь үр дүнтэй (ашигтай) байх – алгоритм нь төгсгөлөг алхмын дараа даалгаврыг биелүүлж дуусгасан байх, хэрэв энэ нь боломжгүй бол даруй зогсдог байх; Өөрөөр хэлбэл ямар нэг тодорхой шийдэлд хүрдэг байх
г.м.
Алгоритмын гүйцэтгэх даалгаврыг заримдаа бодлого (task) хэмээн нэрийддэг. Тиймээс “мэдээлэл боловсруулах” гэдгийг “бодлого бодох” гэсэн үгээр сольж болно.
Алгоритмын график дүрслэл буюу блок-схем
Компьютерт зориулсан програмын алгоритмыг хэрхэн бичдэг вэ? Өөрөөр хэлбэл тэмдэглэгээний ямар хэлбэрүүдийг ашиглан алгоритмыг зохиодог вэ? Энд дараах хэлбэрүүд байна:
1.       Үгээр илэрхийлэх (эх хэлээр бичих)
2.       График дүрслэл (геометрын объектууд ашиглан илэрхийлэх)
3.       Хуурмаг код (эх хэл, програмчлалын хэл, математикийн үндсэн тэмдэглэгээнүүд г.м.ийн холимог ямар нэгэн зохиомол, хагас дүрэмжсэн “хэл” ашиглах)
4.       Програм (програмчлалын хэл дээр бичих)
Эхний хоёр хэлбэртэй танилцъя.
Хоёр натурал тооны хамгийн их ерөнхий хуваагчийг (ХИЕХ) олох Евклидийн алгоритмыг үгээр илэрхийлвэл:
1.       Хоёр тоо өг
2.       Хэрэв хоёр тоо тэнцүү бол аль нэгийг нь хариу болгон аваад алгоритмыг төгсгөх, үгүй бол 3-р алхамд шилжих
3.       Хоёр тооны аль ихийг нь тодорхойлох
4.       Их тоог их тоо, бага тооны ялгавраар солих
5.       2-р алхамд шилжих
гэсэн хэлбэртэй болно. Энэ алгоритм хоёр тоо тэнцүү болох хүртэл хийгдэж, эцэст нь ХИЕХ-ийг гаргаж өгнө.
Хатуу тогтсон дүрэм байхгүй, нэг өгүүлбэрийг олон янзаар тайлбарлаж болдог, хэтэрхий нуршуу болох магадлалтай г.м. шалтгааны улмаас үгээр илэрхийлэх хэлбэр нь тийм ч өргөн дэлгэрээгүй ажээ.
Бид хичээлдээ график дүрслэлийн аргыг ашиглах болно.
График дүрслэлээр, алгоритмыг өөр хоорондоо холбогдсон геометр объектуудын дараалал хэлбэрээр илэрхийлдэг. Ийм дүрслэлийг алгоритмын блок-схем хэмээн нэрийднэ. Блок-схемийг бүрдүүлэгч объектуудыг үйлдлийн блокууд гэнэ. Учир нь блок болгон тодорхой нэг эсвэл хэд хэдэн үйлдлийг төлөөлдөг. Тиймээс блокуудыг хооронд нь холбосон шугамыг шилжилтийн шугам гэх бөгөөд энэ нь үйлдэл хийгдэх дарааллыг тодорхойлж өгдөг. Шугамыг заримдаа сумтай, заримдаа сумгүй зурдаг. Бидний хувьд сумтай зурах нь илүү тохиромжтой. Шилжилтийн шугам, блокуудыг нийтэд нь блок-схемийн элементүүд гэдэг.
Ямар үйлдлийг илэрхийлж буйгаас хамааран блок-схемийн нэлээн хэдэн элемент байна. Бидний байнга хэрэглэх элементүүд бол:
Элемент
Элементийн нэр (англи)
Элементийн нэр (монголчилсон)
Төлөөлөх үйлдэл
Description: http://prog.freehostia.com/Lecture1_files/image001.gif
Terminator
“Эхлэл”/”Төгсгөл”
Алгоритмын Эхлэл эсвэл Төгсгөл (дотор нь бичнэ)
Description: http://prog.freehostia.com/Lecture1_files/image002.gif
Manual Input
“Оролт”
Алгоритм гүйцэтгэгч буюу компьютерт гаднаас өгөгдөл оруулах (дотор нь өгөгдлөө бичнэ)
Description: http://prog.freehostia.com/Lecture1_files/image003.gif
Display
“Гаралт”
Үр дүнг хэрэглэгчид гаргаж үзүүлэх (дотор нь үр дүнг бичнэ)
Description: http://prog.freehostia.com/Lecture1_files/image004.gif
Data
“Оролт”/”Гаралт”
Оролт-Гаралтын үйлдлийн ерөнхий тэмдэглэгээ (дотор нь бичнэ)
Description: http://prog.freehostia.com/Lecture1_files/image005.gif
Decision
“Нөхцөл шалгах”
Өгсөн нөхцлийг шалгаж шийдвэр гаргах буюу салаа замын аль нэгээр нь явах (дотор нь нөхцлөө бичнэ)
Description: http://prog.freehostia.com/Lecture1_files/image006.gif
Preparation
“Параметрт давталт”
Давталт буюу циклийн эхлэл
Description: http://prog.freehostia.com/Lecture1_files/image007.gif
Process
“Процесс”
Дээрхүүдээс бусад үйлдлүүд: арифметик үйлдлүүд ба утга олгох г.м. (дотор нь бичнэ)
Description: http://prog.freehostia.com/Lecture1_files/image008.gif

Шилжилтийн шугам
Шилжилтийн шугам
Description: http://prog.freehostia.com/Lecture1_files/image009.gif
Connector
“Залгаас”
Тухайн хуудсанд багтахгүй байгаа блок схемийг өөр хуудаснаас үргэлжлүүлэхдээ хоёр хуудасны залгаасыг тэмдэглэх (дотор нь тэмдгээ тавина)
зэрэг болно. Эдгээрийг хэрхэн ашиглаж буй жишээг үзье. Өмнө дурдсан Евклидийн алгоритмын блок-схемийг зурвал:
Description: http://prog.freehostia.com/Lecture1_files/image011.jpg
гэсэн байдалтай болох юм.
Блок руу орж буй сумыг оролт, гарч буй шугам буюу сумыг гаралт гэдэг. Ихэнх элемент нэг оролт, нэг гаралттай байдаг бол харин “Нөхцөл шалгах” элемент нэг оролттой, хоёр гаралттай байна. Хоёр гаралтанд нь үнэн ба худал гэсэн утгууд харгалзана. Заримдаа үнэн гэдгийг 1-ээр, худал гэдгийг 0-ээр илэрхийлнэ. Заримдаа бас “тийм”, “үгүй” гэсэн үгээр илэрхийлдэг.
Алгоритмын биелэлт ямагт сумын дагуу чиглэлд явагдана.
“Оролт” элемент нь компьютерын гараас (keyboard) өгөгдөл оруулах үйлдлийг илэрхийлдэг бол “Гаралт” элемент компьютерын дэлгэцэнд (display) үр дүнг гаргах үйлдлийг илэрхийлнэ.
Блок-схемд зөвхөн нэг “Эхлэл”, нэг “Төгсгөл” байна.
“Оролт”, “Гаралт”, “Процесс” зэрэг элементийн дотор нэг буюу түүнээс олон харгалзах үйлдлийг бичиж болно. Өөрөөр хэлбэл хэд хэдэн дараалсан “Оролтыг”  нэг “Оролтонд”, хэд хэдэн дараалсан “Гаралтыг”  нэг “Гаралтанд”, хэд хэдэн дараалсан “Процессыг”  нэг “Процесс” дотор нэгтгэн бичиж болно.
Өөр нэгэн жишээ. Өгсөн тооны абсолют хэмжигдхүүнийг олох алгоритмыг зуръя. Түүний блок-схемийг хажуугийн зурагт харуулав. Энэ алгоритм яаж ажиллах вэ? Үгээр тайлбарлавал:
1.       Нэг тоо өг
2.       Хэрэв уг тоо сөрөг байвал абсолют хэмжигдхүүн нь түүний эсрэг тоо болно, үгүй бол (тоо эерэг үед) абсолют хэмжигдхүүн нь тэр тоо өөрөө байна
3.       Абсолют хэмжигдхүүний утгыг дэлгэцэнд хэвлэж гаргана
4.       Төгсгөл
гэж томъёологдох ажээ.
Description: http://prog.freehostia.com/Lecture1_files/image013.jpg
Алгоритмын үндсэн бүтцүүд
Элементүүд нийлж тодорхой бүтцийг үүсгэдэг. Эдгээр бүтцийг алгоритмын үндсэн бүтэц (АҮБ) хэмээн нэрийднэ. Ингэснээр алгоритмыг зөвхөн эдгээр бүтцээс тогтсон мэтээр авч үзэх боломжтой. АҮБ-ийн гол онцлог бол тэдгээр нь зөвхөн нэг оролт, нэг гаралттай байна.
3 төрлийн АҮБ байдаг. Энэ нь Процесс, Салаалалт, Давталт юм. Салаалалт бүтэц гүйцэд ба гүйцэд бус гэсэн 2 янз байдаг. Давталт бүтэц нь While (Байхад), Until (Хүртэл), Параметрт гэсэн 3 хэлбэртэй байна. Эд бүгдийн схемийг дараах хүснэгтэд харууллаа.
Процесс
Салаалалт
Гүйцэд
Гүйцэд бус
Description: http://prog.freehostia.com/Lecture1_files/image014.gif
Description: http://prog.freehostia.com/Lecture1_files/image015.gif
Description: http://prog.freehostia.com/Lecture1_files/image016.gif
Давталт
While
Until
Параметрт
Description: http://prog.freehostia.com/Lecture1_files/image017.gif
Description: http://prog.freehostia.com/Lecture1_files/image018.gif
Description: http://prog.freehostia.com/Lecture1_files/image019.gif
Дээрх схемүүдэд буй “Урсгал” бол нэг юм уу эсвэл бүлэг үйлдлийг илэрхийлнэ. “Нөхцөл” бол ямар нэгэн логик илэрхийлэл байна.
Параметрт давталтын схемд буй “ДП” – Давталтын Параметр, “АУ” - давталтын параметрын авах Анхны Утга, “ЭУ” – давталтын параметрын авах Эцсийн Утга, “АЛХАМ” – давталтын параметрын утгын өөрчлөгдөх Алхам юм.
Салаалалт бүтэц бүхэлдээ болон Давталт бүтцийн эхний хоёр төрөл нь “Нөхцөл шалгах элементээс” тогтсон байна.
Алгоритмд Салаалалт орж ирснээр түүний хувьд хоёр салаа зам бий болно. Чухам алинаар нь явах нь нөхцөл биелэх эсэхээс хамаарна.
Алгоритмд Давталт орж ирснээр нэг юм уу эсвэл бүлэг үйлдлийг олон дахин давтах боломжтой болдог. Ингэж давтагдах хэсгийг давталтын бие (body of cycle) хэмээн нэрийддэг.
While төрлийн давталт, нөхцөл биелж л байвал циклээ үргэлжлүүлнэ. Тэгж байгаад биелэхээ болимогц давталт хийгдэхээ больж, алгоритмын биелэлт дараагийн бүтэц рүү шилжинэ.
Until төрлийн давталт, нөхцөл биелэх хүртэл л циклээ үргэлжлүүлж байгаад биелмэгц л давталт хийгдэхээ больж, алгоритмын биелэлт дараагийн бүтэц рүү шилждэг.
Параметрт давталтын хувьд, давталтын параметр хэмээн нэрлэгдэх нэгэн хэмжигдхүүний авах утгын тоогоор давталтыг хийдэг. Хэрэв параметр нэгэнт эцсийн утгаа авсан бол давталт хийгдэхээ больж, алгоритмын биелэлт дараагийн бүтэц рүү шилжинэ.
Тиймээс While, Until төрлийн давталтыг Нөхцөлт давталт, харин Параметрт давталтыг Тоолуурт давталт гэж нэрлэдэг. Нөхцөлт давталтын хувьд давталтын тоо урьдаас мэдэгдэхгүй бол Тоолуурт давталтын тоог урьдчилан тодорхойлж болно. Тэр нь:
Nдавталт = |ЭУ - АУ| / АЛХАМ + 1
гэж олддог.
Алгоритмын төрлүүд
Алгоритмыг төрлөөр нь шугаман ба шугаман бус гэж хоёр ангилдаг.
Шугаман алгоритм (Linear algorithms)
Зөвхөн Процесс бүтцээс тогтсон алгоритм нь шугаман алгоритм болно. Учир нь түүний биелэлт зөвхөн нэг чиглэлд, дээрээс доошоо, эхлэлээс төгсгөл рүү шууд “урсана”.
Шугаман алгоритмын жишээнүүд авч үзье.
·         Жишээ 1. Өмнө үзсэн (З+3)*(3+4)-23 илэрхийллийг бодох алгоритм:
Блок-схем
Тайлбар
1.        Алгоритм эхлэнэ.
2.        3 дээр 3-ыг нэмээд a-д утга болгож өгнө.
3.        3 дээр 4-ийг нэмээд b-д утга болгож өгнө.
4.        23-ийг олоод с-д утга болгож өгнө.
5.        a-г b-ээр үржүүлж, с-г нэмэхэд гарах хариуг d-д утга болгож өгнө.
6.        d-ийн утгыг дэлгэцэнд хэвлэж гаргана.
7.        Алгоритм төгсөнө.
·         Жишээ 2. Өгсөн x-ийн хувьд y=5*x2+3*x функцыг бодох алгоритм:
Блок-схем
Тайлбар
Description: http://prog.freehostia.com/Lecture1_files/image023.jpg
1.        Алгоритм эхлэнэ.
2.        x-ийн утгыг гаднаас оруулж өгнө.
3.        5*x2+3*x илэрхийллийг бодоод гарах хариуг y-д утга болгож өгнө.
4.        y-ийн утгыг дэлгэцэнд хэвлэж гаргана.
5.        Алгоритм төгсөнө.
Энд, гаднаас тоо оруулмагц тэр нь x-ийн утга болон очих ажээ. Тэгээд бодолт хийгдэж, үр дүн дэлгэцэнд хэвлэгдэж байна.
·         Жишээ 3. Гурвалжны талууд a, b, c болно. Дараах:
cosA = (b2 + c2 – a2)/ (2 * b * c)
sinB = (b * sinA) / a
C = 180o – (A + B)
томъёонуудын тусламжтайгаар түүний A, B, C өнцгүүдийг тодорхойл (градусаар). Санамж: arccos, arcsin тригонометрийн урвуу функцуудын утга радианаар илэрхийлэгддэг гэдгийг сануулъя.
Энэ бодлогын алгоритм нь:
Блок-схем
Тайлбар
Description: http://prog.freehostia.com/Lecture1_files/image025.jpg
1.        Алгоритм эхлэнэ.
2.        a-ийн утгыг гаднаас оруулж өгнө.
3.        b-ийн утгыг гаднаас оруулж өгнө.
4.        c-ийн утгыг гаднаас оруулж өгнө.
5.        180/3.14-ийг k-д утга утга болгож өгнө.
6.        arccos[(b2 +c2–a2)/(2*b*c)] томъёог бодоод гарах хариуг A_rad-д утга болгож өгнө.
7.        arcsin(b*sinA_rad/a) томъёог бодоод гарах хариуг B_rad –д утга болгож өгнө.
8.        A_rad-ыг k-аар үржүүлээд A_grad-д утга болгож өгнө.
9.        B_rad-ыг k-аар үржүүлээд B_grad-д утга болгож өгнө.
10.     C_grad=180o–(A_grad+B_grad) гэж олно.
11.     A_rad-ын утгыг дэлгэцэнд хэвлэж гаргана.
12.     B_rad-ын утгыг дэлгэцэнд хэвлэж гаргана.
13.     C_grad-ын утгыг дэлгэцэнд хэвлэж гаргана.
14.     Алгоритм төгсөнө.
Энд, градус=радиан*180/π=радиан*k гэсэн томъогоор радианаар олдсон өнцгийн утгуудыг (A_rad, B_rad, C_rad) градуст шилжүүлж (A_grad, B_grad, C_grad) байна.
·         Жишээ 4. Хүнээс нэрийг нь асуугаад, дараа нь түүнийг мэндчилэх алгоритм:
Блок-схем
Тайлбар
Description: http://prog.freehostia.com/Lecture1_files/image027.jpg
1.        Алгоритм эхлэнэ.
2.        Дэлгэцэнд “Чамайг хэн гэдэг вэ?” гэсэн өгүүлбэрийг хэвлэж гаргана.
3.        Хэн нэгэн хүний нэрийг гаднаас оруулж name-д утга болгож өгнө.
4.        Дэлгэцэнд “Сайн уу” гэсэн үг хэвлээд араас нь name-ийн утгыг хэвлэж гаргана.
5.        Алгоритм төгсөнө.
Энэ жишээ өмнөх 3 жишээнээс ялгаатай нь ямар нэг тооцоо хийлгүй, зөвхөн хэрэглэгчтэй хялбар харилцан яриа үүсгэж байна. Алгоритм ажиллангуут хүний нэрийг асууна. Гараас нэр оруулмагц дэлгэцэнд мэндчилгээ хэвлэгдэх болно. Тухайлбал Бат гэж оруулахад “Сайн уу, Бат” гэж гарна.
Шугаман бус алгоритм (Nonlinear algorithms)
Алгоритм нь салаалалт юм уу давталт агуулсан бол түүнийг шугаман бус алгоритм гэнэ. Учир нь түүний биелэгдэх чиглэл буюу “урсгал” нь мөчирлөсөн юм уу мушгирсан байдалтай болдог.
Тухайн тохиолдолд шугаман бус алгоритм нь зөвхөн салаалалт, эсвэл зөвхөн давталт агуулсан байх бол ерөнхий тохиолдолд салаалалт+давталт агуулсан байна. Жишээ алгоритмууд үзье.
Салаалалт.
·         Жишээ 1. Өгсөн тооны урвууг олдог алгоритм:
Блок-схем
Тайлбар
Description: http://prog.freehostia.com/Lecture1_files/image029.jpg
1.        Алгоритм эхлэнэ.
2.        x-ийн утгыг гаднаас оруулна.
3.        x¹0 нөхцөл биелж буй эсэхийг шалгаад
хэрэв тийм байвал:

[1] 1/x-ийг олж y-д утга болгон өгнө;
[2] y-ийн утгыг дэлгэцэнд хэвлэж гаргаад 4-р алхамд шилжинэ;
үгүй бол:

4-р алхамд шилжинэ.
4.        Алгоритм төгсөнө.
Энэ алгоритм бол гүйцэд бус салаалалтын жишээ юм. Учир нь “Нөхцөл шалгах” элементийн хоёр гаралтын зөвхөн нэгэнд нь тодорхой үйлдэл харгалзаж байна. Гаднаас оруулсан тоо 0-ээс ялгаатай байвал л түүний урвууг бодож, дэлгэцэнд гаргах бөгөөд хэрэв 0 байвал бодолт хийхгүй, үр дүн хэвлэхгүй, алгоритм шууд дуусна.
·         Жишээ 2. Өмнөх алгоритмыг дараах байдлаар зуръя:
Блок-схем
Тайлбар
Description: http://prog.freehostia.com/Lecture1_files/image031.jpg
1.        Алгоритм эхлэнэ.
2.        x-ийн утгыг гаднаас оруулна.
3.        x¹0 нөхцөл биелж буй эсэхийг шалгаад
Хэрэв тийм байвал:

[1] 1/x-ийг олж y-д утга болгон өгнө;
[2] y-ийн утгыг дэлгэцэнд хэвлэж гаргаад 4-р алхам руу шилжинэ;
үгүй бол:

“Хязгааргүй!” гэсэн мэдэгдлийг дэлгэцэнд гаргаад 4-р алхам руу шилжинэ.
4.        Алгоритм төгсөнө.
Харин энэ алгоритм бол гүйцэд салаалтын жишээ юм. Учир нь “Нөхцөл шалгах” элементийн хоёр гаралтанд хоёуланд нь тодорхой үйлдлүүд харгалзаж байна. Гаднаас оруулсан тоо 0-ээс ялгаатай байвал түүний урвууг бодож, дэлгэцэнд гаргаад алгоритм дуусна. Эсрэгээр 0 байвал бодолт хийлгүйгээр дэлгэцэнд “Хязгааргүй!” гэсэн үг хэвлээд алгоритм дуусна.
Салаалалт бүтэц дотроо бас Салаалалт бүтцийг агуулсан байж болно. Өөрөөр хэлбэл нөхцөл шалгах үйлдлийн хоёр гаралтын аль нэгэнд, эсвэл хоёуланд нь дахиад нөхцөл шалгах үйлдэл хийгдэж болно. Үгүй яах вэ дээ, модны мөчир дахиад мөчирлөж салаалдагтай л адил гэх үү дээ. Ийм алгоритмын жишээтэй танилцъя.
·         Жишээ 3. Бат, Болд хоёрын насыг нь асуугаад, тэдгээрийг оруулмагц хэн нь насаар ах болохыг мэдээлж гаргадаг алгоритм:
Блок-схем
Тайлбар
Description: http://prog.freehostia.com/Lecture1_files/image033.jpg
1.        Алгоритм эхлэнэ.
2.        Дэлгэцэнд “Бат хэдэн настай вэ?” гэж гаргана.
3.        Батын насыг гаднаас age1-т утга болгож оруулна.
4.        Дэлгэцэнд “Болд хэдэн настай вэ?” гэж гаргана.
5.        Болдын насыг гаднаас age2-т утга болгож оруулна.
6.        age1=age2 нөхцөл биелж буй эсэхийг шалгаад
хэрэв тийм байвал:

“Бат Болд хоёр нас чацуу” гэж дэлгэцэнд гаргаад 7-р алхамд шилжинэ;
үгүй бол:

age1>age2 нөхцөл биелж буй эсэхийг шалгаад хэрэв тийм байвал

“Бат насаар ах нь” гэж дэлгэцэнд гаргаад 7-р алхамд шилжинэ;
үгүй бол:

“Болд насаар ах нь” гэж дэлгэцэнд гаргаад 7-р алхамд шилжинэ.
7.        Алгоритм төгсөнө.
Ингэж давхар салаалалт ашиглан age1<age2, age1=age2, age1>age2 гэсэн 3 нөхцлийг хоёр Салаалалт бүтцээр буюу хоёр “Нөхцөл шалгах” элементийн тусламжтайгаар тооцож байгаа юм.
Логик холбоос.
Бидний үзсэн дээрх жишээнүүдэд, “Нөхцөл шалгах” элементийн тоо дотор нь бичигдсэн нөхцлийн тоотой тэнцүү байна. Өөрөөр хэлбэл нэг нөхцөл шалгадаг элемент дотор нэг л нөхцөл бичигдсэн байна. Тэгвэл And (Ба), Or (Буюу) гэсэн логик холбоосуудыг хэрэглэн нэг нөхцөл шалгадаг элемент дотор хоёр буюу түүнээс олон нөхцлийг бичиж болдог. Логик холбоосыг хоёр нөхцлийн дунд тавьдаг.
And холбоос нь түүний хоёр талын нөхцөл хоёулаа үнэн тохиолдолд үнэн гэсэн хариу өгөх бөгөөд аль нэг нөхцөл л худал болчихвол худал гэсэн хариу гаргана. Тиймээс энэ холбоосыг логик үржилт хэмээн нэрийднэ.
Or холбоос нь түүний хоёр талын нөхцлийн аль нэг нь үнэн байвал үнэн гэсэн хариу өгөх бөгөөд хоёр талын нөхцөл хоёулаа худал тохиолдолд л худал гэсэн хариу гаргана. Тиймээс энэ холбоосыг логик нэмэлт хэмээн нэрийднэ.
Логик холбоос хэрэглэж буй тохиолдолд гол анхаарах зүйл бол Ба, Буюугийн ялгааг зөв ойлгох явдал юм. Дараах жишээнүүдийг үзье.
·         Жишээ 4. Өгсөн a тоо [0,20] завсарт байвал түүнийг 2-оор үржүүлэх, энэ завсарт орохгүй бол 2-оор нэмэх алгоритм:
Блок-схем
Тайлбар
Description: http://prog.freehostia.com/Lecture1_files/image035.jpg
1.        Алгоритм эхлэнэ.
2.        a-ын утгыг гаднаас оруулна.
3.        Хэрэв a³0 ба a£20 байвал:

a-ийн утгыг 2 дахин ихэсгээд 4-р алхамд шилжинэ;
үгүй бол:

a-ийн утгыг 2-оор ихэсгээд 4-р алхамд шилжинэ.
4.        a-ын утгыг дэлгэцэнд хэвлэж гаргана.
5.        Алгоритм төгсөнө.
Энэ жишээнд, a тоо [0,20] завсарт орших уу гэсэн нөхцлийг “(a>=0) And (a<=20)” гэж бичсэн байна. Мэдээж a³0 ба a£20 үед л aÎ[0,20] байна гэж үзнэ шүү дээ. Уг илэрхийлэл хэзээ худал байх вэ? And холбоос түүний хоёр талын аль нэг нөхцөл л худал бол худал гэсэн хариу гаргадгийг дээр дурдсан. Тиймээс, гаднаас оруулсан утга 0-ээс бага юм уу 21-ээс их болчихвол худал болно. Түүнчлэн логик холбоос ашигласны ачаар блок-схем зөвхөн ганц дан Салаалалт бүтцийг агуулжээ. Хэрэв And оруулаагүй бол бид давхар салаалалт хийх байсан.
·         Жишээ 5. Өмнөх жишээний бодлогыг бид дараах байдлаар томъёолж болно. Өгсөн a тоо [0,20] завсрын гадна байвал түүнийг 2-оор ихэсгэх, энэ завсарт орох бол 2-оор үржүүлэх алгоритм:
Блок-схем
Тайлбар
Description: http://prog.freehostia.com/Lecture1_files/image037.jpg
1.        Алгоритм эхлэнэ.
2.        a-ын утгыг гаднаас оруулна.
3.        Хэрэв a<0 буюу a>20 байвал:

a-ийн утгыг 2-оор ихэсгээд 4-р алхамд шилжинэ;
үгүй бол:

a-ийн утгыг 2 дахин ихэсгээд 4-р алхамд шилжинэ.
4.        a-ын утгыг дэлгэцэнд хэвлэж гаргана.
5.        Алгоритм төгсөнө.
Энэ жишээнд, a тоо [0,20] завсрын гадна орших уу гэсэн нөхцлийг “(a<0) Or (a>20)” гэж бичсэн байна. Мэдээж a<0 юм уу a>20 үед л aÏ[0,20] байна гэж үзнэ шүү дээ. Уг илэрхийлэл хэзээ худал байх вэ? Or холбоос түүний хоёр талын нөхцөл хоёулаа худал бол худал гэсэн хариу гаргадгийг дээр дурдсан. Тиймээс, гаднаас оруулсан утга 0-оос их буюу тэнцүү ба 20-иос бага буюу тэнцүү тохиолдолд худал гэсэн хариу гарна.
Давталт.
Алгоритмд яагаад давталт орж ирдэг вэ? Өгсөн бодлогыг хялбар аргаар түргэн шуурхай бодохын тулд. Гэхдээ алгоритмдаа давталт ашиглах хэрэгцээ шаардлага байгаа эсэхийг тухайн бодлогын нөхцөл тодорхойлно. Ж.нь ийм бодлого байна. “2-оос 10 хүртэлх бүх тэгш тоог дэлгэцэнд хэвлэ”. Үүнийг бид ямар ч давталт ашиглалгүй зүгээр шугаман алгоритм зохион гүйцэтгэж болно. Ингэхдээ гаралтын элементийг 5 удаа эсвэл нэг удаа ашиглана:
Description: http://prog.freehostia.com/Lecture1_files/image039.jpg
Description: http://prog.freehostia.com/Lecture1_files/image041.jpg
 За тэгвэл, “2-оос 200 хүртэлх бүх тэгш тоог дэлгэцэнд хэвлэ” гэсэн бол яах вэ? Дээрх шигээр, гэхдээ 100 Процесс блокийг доош цувуулах юм уу нэг Процесс дотор 100 ширхэг тоог цувуулан бичиж болно нь л доо. Харин зарцуулах хөдөлмөр маань цаг үрсэн, зурагдах блок-схем маань сунжирсан урт “болхи” болно. Энэ тохиолдолд давталт ашиглах нь тохиромжтой.
 Давталтын 3 төрөл байдгийг бид өмнөх сэдвээс мэдэж авсан. Одоо дээрх бодлогыг эдгээр төрөл бүрээр хэрхэн гүйцэтгэх жишээтэй танилцъя.
·         Жишээ 1.  2-оос 200 хүртэлх бүх тэгш тоог дэлгэцэнд хэвлэх алгоритмд While төрлийн нөхцөлт давталт ашигласан байдал:
Блок-схем
Тайлбар
Description: http://prog.freehostia.com/Lecture1_files/image043.jpg
1.        Алгоритм эхлэнэ.
2.        k гэсэн хувьсагчид 2 гэсэн утга онооно.
3.        k-ийн утга 200-аас хэтрээгүй эсэхийг шалгаад
хэрэв тийм байвал:

[1] k-ийн утгыг дэлгэцэнд хэвлэж гаргана;
[2] k-ийн утгыг 2-оор ихэсгээд 3-р алхамд шилжинэ;
үгүй бол:

4-р алхамд шилжинэ.
4.        Алгоритм төгсөнө.
Алгоритм яаж ажиллаж байна вэ? Хамгийн эхлээд 2 гэсэн утгатай k гэсэн хувьсагчийг 200-аас хэтрээгүй утгатай байна уу гэдгийг шалгана. 2<200 учраас 1 гаралтаар явна. Дэлгэцэнд 2 гэж гарна. Дараа нь k-г 2-оор ихэсгэнэ. Дахиад k-ийн утга 200-аас хэтрээгүй эсэхийг шалгана. Мэдээж 4<200 учраас 1 гаралтаар явж, дэлгэцэнд 4 гэж гарна. k=6 болно. Дахиад нөхцөл шалгана. 6<200 учраас мөн л 1 гаралтаар явна. Харгалзах үйлдлүүд хийгдэнэ. Иймэрхүү маягаар, k£200 байгаад л байвал, түүний агшин зуурын утгыг хэвлэн, 2-оор ихэсгэх үйлдлүүд давтагдах болно. Давталт хийгдсээр дэлгэцэнд 2 4 6 8 10 12 ... 196 198 гэж гарсны дараа юу болохыг авч үзье. k=k+2 үйлдлээр k-ийн утга 200 болж таарна. Нөхцөл шалгахад 200=200 учраас k нь 200-аас хэтрээгүй гэсэн үг. Тиймээс 1 гаралтаар явж дэлгэцэнд 200 гэж хэвлэгдэнэ. k=202 болно. Дахиад k£200 нөхцлийг шалгана. Мэдээж 202 нь 200-аас эрс их тоо (202>200) учир одоо бол k£200 нөхцөл биелэхгүй. Тиймээс 0 гаралтаар явж, алгоритм шууд төгсөх ажээ. Нөхцөл биелээд байхад давталт хийгдсээр, биелэхээ болимогц давталт хийгдэхээ больчихож байна. Давталтын бие нь энд юу болох вэ? Яг давтагдаж байгаа: k-г хэвлэх, k-г 2-оор ихэсгэх гэсэн  үйлдлүүд бол давталтын бие юм. While бүтцийн хувьд давталтын бие нь нөхцөл шалгах элементийн 1 гаралтанд харгалзаж байна.
·         Жишээ 2. Дээрх бодлогын алгоритмд Until төрлийн нөхцөлт давталт ашигласан байдал:
Блок-схем
Тайлбар
Description: http://prog.freehostia.com/Lecture1_files/image045.jpg
1.        Алгоритм эхлэнэ.
2.        k гэсэн хувьсагчид 2 гэсэн утга онооно.
3.        k-ийн утгыг дэлгэцэнд хэвлэж гаргана.
4.        k-ийн утгыг 2-оор ихэсгэнэ.
5.        k-ийн утга 200-аас хэтэрсэн эсэхийг шалгаад
хэрэв тийм байвал:

6-р алхамд шилжинэ;
үгүй бол:

3-р алхамд шилжинэ.
6.        Алгоритм төгсөнө.
Алгоритм яаж ажиллаж байна вэ? Хамгийн эхлээд k гэсэн хувьсагчийн утгыг хэвлэж байна.  Дэлгэцэнд 2 гэж гарна. Дараа нь k-г 2-оор ихэсгэнэ. Тэгээд k-ийн утга 200-аас хэтэрсэн байна уу гэдгийг шалгана. 2>200 биш учраас 0 гаралтаар явж, дэлгэцэнд 4 гэж гарна. k=k+2 болно. Дахиад k-ийн утга 200-аас хэтэрсэн эсэхийг шалгана. Мэдээж 4>200  биш учраас 0 гаралт хийгдэж, дэлгэцэнд 6 гэж гарна. k=8 болно. Дахиад нөхцөл шалгана. Нөхцөл биелэхгүй тул мөн л 0 гаралтаар явна. Харгалзах үйлдлүүд хийгдэнэ. Иймэрхүү маягаар, k>200 болох хүртэл л түүний агшин зуурын утгыг хэвлэж, 2-оор ихэсгэх үйлдлүүд давтагдах болно. Давталт хийгдсээр дэлгэцэнд 2 4 6 8 10 12 ... 196 198 гэж гарсны дараа юу болохыг авч үзье. k=k+2 үйлдлээр k-ийн утга 200 болж таарна. Нөхцөл шалгахад 200=200 учраас k>200 болоогүй гэсэн үг. Тиймээс 0 гаралтаар явж дэлгэцэнд 200 гэж хэвлэгдэнэ. Тэгээд k=202 болно. Дахиад k£200 нөхцлийг шалгана. Одоо бол, 202 нь 200-аас эрс их тоо (202>200) учир k>200 нөхцөл биелнэ. Тиймээс 1 гаралтаар явж, алгоритм шууд төгсөх ажээ. Нөхцөл биелэхгүй байхад буюу нөхцөл биелэх хүртэл давталт хийгдсээр, биелмэгц давталт хийгдэхээ больчихож байна. Давталтын бие нь энд юу болох вэ? Давтагдаж байгаа: k-г хэвлэх, k-г 2-оор ихэсгэх гэсэн  үйлдлүүд давталтын бие болно. Until бүтцийн хувьд давталтын бие нь нөхцөл шалгах элементийн 0 гаралтанд харгалздаг байна.
·         Жишээ 3. Өмнөх бодлогын алгоритмд Параметрт давталт ашигласан байдал:
Блок-схем
Тайлбар
Description: http://prog.freehostia.com/Lecture1_files/image047.jpg
1.        Алгоритм эхлэнэ.
2.        k=2 гэсэн утга авна.
3.        Хэрэв k£200 байвал:

[1] k-ийн утгыг дэлгэцэнд хэвлэж гаргана;
[2] k-ийн утгыг 2-оор ихэсгээд 3-р алхамд шилжинэ;
үгүй бол:

4-р алхамд шилжинэ.
4.        Алгоритм төгсөнө.
Энэ тохиолдолд k гэсэн хувьсагчийг давталтын параметр буюу тоолуур болгон ашиглажээ. Тоолуур [2,200] завсраас 2-оор өөрчлөгдсөн утгуудыг авна. Завсрын доод хязгаарын 2 гэсэн утга бол Анхны Утга, дээд хязгаарын 200 бол Эцсийн Утга, өөрчлөлтийн 2 бол Алхам юм. Түүний шинэ утга бүрт харгалзсан гаралтын үйлдэл хийгдэж байна. Дэлгэцэнд хамгийн эхлээд 2, дараа нь 4, 6, 8, ... г.м. тоонууд гарна. Иймэрхүү маягаар k нь 100 өөр утга авахад түүнийг нь дэлгэцэнд мөн 100 удаа хэвлэнэ. Хамгийн сүүлд k=200 болоход түүнийг дэлгэцэнд гаргасны дараагаар бол тоолуур Эцсийн Утгаасаа хэтэрсэн утга авахгүй учраас алгоритмын дараагийн хэсэг буюу төгсгөл рүү явах болно. Давталтын бие бол одоо зөвхөн k-г хэвлэх ганц үйлдлээс тогтсон байна. Давталтын тоо нь тоолуурын авах утгын тоотой тэнцүү байна.
Дээрх 3 жишээнд бид нэг бодлогыг давталтын 3 төрлөөр бодлоо. Гэхдээ практик дээр бол, бодлогын нөхцөл, онцлогоос шалтгаалан аль нэг давталтын хэлбэрийг ашиглах нь илүү тохиромжтой байх тохиолдол гардаг. Чухам алиныг нь вэ гэдгийг алгоритм зохиогч өөрөө оновчтой сонгох ёстой.
Давхар салаалалт гэж байдгийн адилаар давхар давталт бас байж болно. Өөрөөр хэлбэл нэг Давталт бүтцийн доторх давталтын биед мөн Давталт бүтэц оршиж болно гэсэн үг. Хэрэв гадна талын давталт N удаа, дотор талын давталт M удаа хийгдэхээр заагдсан байвал дотор талын давталт нийт N*M удаа хийгдэнэ. Учир нь гадаад давталтын нэг эргэлтэнд дотоод давталт M удаа хийгдэнэ шүү дээ. Одоо давхар давталт ашигласан жишээ үзье.
·         Жишээ 4. z(x,y)=x2+y2 функцыг xÎ[-5,5], yÎ[-5,5] завсарт (x, y нь бүхэл тоо) бодуулах алгоритм:
Блок-схем
Тайлбар
Description: http://prog.freehostia.com/Lecture1_files/image049.jpg
1.        Алгоритм эхлэнэ.
2.        x=-5 гэсэн утга авна.
3.        Хэрэв x£5 байвал:

[1] y=-5 гэсэн утга авна;
[2] Хэрэв y£5 байвал:

[[1]] z=x2+y2 томъёог бодно;
[[2]] z-ийн утгыг дэлгэцэнд хэвлэнэ;
[[3]] y-ийн утгыг 1-ээр ихэсгээд [2]-р алхамд шилжинэ;
      үгүй бол:


[3]-р алхамд шилжинэ;

[3] x-ийн утгыг 1-ээр ихэсгээд 3-р алхамд шилжинэ.
үгүй бол:

4-р алхамд шилжинэ.
4.        Алгоритм төгсөнө.
Алгоритм хэрхэн ажиллаж байна вэ? x нь -5-аас +5 хүртэлх 11 утга авах бүрд y нь -5-аас +5 хүртэлх утга авч байна. Өөрөөр хэлбэл x-ийн нэг утганд y-ийн 11 утга харгалзаж байна. Иймээс дотоод давталтын бие болох [[1]], [[2]] үйлдлүүд (блок-схемийн тайлбарыг хар) 11*11=121 удаа хийгдэх нь ээ. Энд манай 2 хэмжээст функц 11 мөртэй, 11 баганатай хүснэгт болон гарч ирж байгаа юм. Хэрэв график байгуулвал гадаргуу зурагдах болно.
технократ – техникт түшиглэсэн, техникийг тахин шүтсэн.