Алгоритм гэж юу вэ?
Програмыг компьютерт шууд бичиж оруулах ёстой юу? Тэгж болно. Гэхдээ, програмчлалд анхлан суралцаж буй хүний хувьд эхлээд бичих гэж буй програмынхаа загвар буюу бүдүүвчийг зохиогоод дараа нь түүнийхээ дагуу програмаа бичих нь илүү үр дүнтэй гэж мэргэжилтнүүд үздэг. Ийм загвар буюу төлөвлөөг алгоритм гэдэг. Эсвэл “алгоритм бол тодорхой үр дүн гаргаж авахын тулд дараалан гүйцэтгэх ёстой үйлдлүүдийн жагсаалт юм”. Эсвэл “алгоритм бол тодорхой үр дүн гаргаж авахын тулд баримтлах ерөнхий дүрэм юм”. Алгоритм зохиох процессыг мэдээж алгоритмчлал гэнэ. Ер нь хүн ямар ч ажлыг хийхдээ эхлээд төлөвлөгөө гаргадаг шүү дээ. Тэрэнтэй л адил гэсэн үг. Алгоритм гэдэг үг өөрөө, 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-р алхамд шилжих
гэсэн хэлбэртэй болно. Энэ алгоритм хоёр тоо тэнцүү болох хүртэл хийгдэж, эцэст нь ХИЕХ-ийг гаргаж өгнө.
Хатуу тогтсон дүрэм байхгүй, нэг өгүүлбэрийг олон янзаар тайлбарлаж болдог, хэтэрхий нуршуу болох магадлалтай г.м. шалтгааны улмаас үгээр илэрхийлэх хэлбэр нь тийм ч өргөн дэлгэрээгүй ажээ.
Бид хичээлдээ график дүрслэлийн аргыг ашиглах болно.
График дүрслэлээр, алгоритмыг өөр хоорондоо холбогдсон геометр объектуудын дараалал хэлбэрээр илэрхийлдэг. Ийм дүрслэлийг алгоритмын блок-схем хэмээн нэрийднэ. Блок-схемийг бүрдүүлэгч объектуудыг үйлдлийн блокууд гэнэ. Учир нь блок болгон тодорхой нэг эсвэл хэд хэдэн үйлдлийг төлөөлдөг. Тиймээс блокуудыг хооронд нь холбосон шугамыг шилжилтийн шугам гэх бөгөөд энэ нь үйлдэл хийгдэх дарааллыг тодорхойлж өгдөг. Шугамыг заримдаа сумтай, заримдаа сумгүй зурдаг. Бидний хувьд сумтай зурах нь илүү тохиромжтой. Шилжилтийн шугам, блокуудыг нийтэд нь блок-схемийн элементүүд гэдэг.
Ямар үйлдлийг илэрхийлж буйгаас хамааран блок-схемийн нэлээн хэдэн элемент байна. Бидний байнга хэрэглэх элементүүд бол:
Элемент
|
Элементийн нэр (англи)
|
Элементийн нэр (монголчилсон)
|
Төлөөлөх үйлдэл
|
Terminator
|
“Эхлэл”/”Төгсгөл”
|
Алгоритмын Эхлэл эсвэл Төгсгөл (дотор нь бичнэ)
| |
![]() |
Manual Input
|
“Оролт”
|
Алгоритм гүйцэтгэгч буюу компьютерт гаднаас өгөгдөл оруулах (дотор нь өгөгдлөө бичнэ)
|
![]() |
Display
|
“Гаралт”
|
Үр дүнг хэрэглэгчид гаргаж үзүүлэх (дотор нь үр дүнг бичнэ)
|
![]() |
Data
|
“Оролт”/”Гаралт”
|
Оролт-Гаралтын үйлдлийн ерөнхий тэмдэглэгээ (дотор нь бичнэ)
|
![]() |
Decision
|
“Нөхцөл шалгах”
|
Өгсөн нөхцлийг шалгаж шийдвэр гаргах буюу салаа замын аль нэгээр нь явах (дотор нь нөхцлөө бичнэ)
|
![]() |
Preparation
|
“Параметрт давталт”
|
Давталт буюу циклийн эхлэл
|
![]() |
Process
|
“Процесс”
|
Дээрхүүдээс бусад үйлдлүүд: арифметик үйлдлүүд ба утга олгох г.м. (дотор нь бичнэ)
|
Шилжилтийн шугам
|
Шилжилтийн шугам
| ||
Connector
|
“Залгаас”
|
Тухайн хуудсанд багтахгүй байгаа блок схемийг өөр хуудаснаас үргэлжлүүлэхдээ хоёр хуудасны залгаасыг тэмдэглэх (дотор нь тэмдгээ тавина)
|
зэрэг болно. Эдгээрийг хэрхэн ашиглаж буй жишээг үзье. Өмнө дурдсан Евклидийн алгоритмын блок-схемийг зурвал:

гэсэн байдалтай болох юм.





