SlideShare a Scribd company logo
1
I. Алгоритм, программчлалын дидактикийн асуудал
Д.Цэдэвсүрэн, МУБИС-ийн мэдээлэл зүйн тэнхим
Бүлгийн агуулга:
- Мэдээлэл зүйн боловсролын шинэчлэл
- Ерөнхий боловсролын кодчиллын агуулга ба программчлалын технологи
- Сурагчийн алгоритм, программчлалын бодлого бодох чадварын хөгжлийн дэмжих арга
зүйн асуудал
- Алгоритм, программчлал заах арга зүйн асуудал
- Сурагчийн тооцоолох сэтгэлгээний хөгжлийг дэмжих нь
Зорилго:
Мэдээллийн технологийн хөтөлбөрийн алгоритм, программчлалын бүлэг сэдвийн
багшлахуй, суралцахуйн арга зүйн талаарх мэдлэг, чадвараа дээшлүүлэх, мэдээлэл зүйн
бодлогоор сурагчийн алгоритм сэтгэлгээ болон тооцоолох тооцоолох сэтгэлгээний
хөгжлийг дэмжих арга зүйн үндсийг ойлгох, хэрэгжүүлэх
Зорилт:
- Мэдээлэл зүйн боловсрол, алгоритм, программчлалын мэдлэг, заах арга зүйн мэдлэг,
чадвараа дээшлүүлэх
- Сурагчдын алгоритм сэтгэлгээ, тооцоолох сэтгэлгээний хөгжлийг дэмжих арга зүйн
үндсийг ойлгох
- Сурагчдын тооцоолох сэтгэлгээний хөгжлийг дэмжих арга зүй технологийг сургалтад
хэрэгжүүлэх практик чадварт суралцах
1.1. Мэдээлэл зүйн боловсролын шинэчлэлийн талаар
Ерөнхий боловсрол дахь мэдээлэл зүйн хичээлийн ач холбогдол улам чухал болж байгааг
боловсрол судлаачид онцолж, олон улс орнууд хөтөлбөрийн шинэчлэлийг хийж байна. Аль ч улс
орны ерөнхий боловсрол дахь мэдээлэл зүйн хичээлийн нийтлэг нэршил болон агуулгыг гол
чиглэлийн ялгаатай болон төстэй талыг Хүснэгт 1-д үзүүллээ.
Хүснэгт 1. Мэдээлэл зүйн боловсролын нэршил ба нийтлэг агуулга
Мэдээлэл зүйн
хичээлийн нэршил
Товч агуулга
Компьютерын ухаан/
Информатик/ Тооцоолол
Техник болон программ хангамж, хүний хүчин зүйл, системийн дизайн,
хөгжүүлэлт, үнэлгээ, ашиглалт, үйлчилгээний зэрэг өргөн хүрээний
асуудлыг хамардаг (UNESCO/IBI).
Дижитал бичиг үсгийн
боловсрол/ Компьютерын
бичиг үсгийн боловсрол
Компьютер, дижитал медиа, программын хэрэгслийг ашиглах чадвартай,
түүний давуу болон сул талыг ойлгож мэдсэн, МХХТ-ийн хариуцлагатай
хэрэглэгч болоход чиглэсэн агуулга (Vania Guerra, 2012)
Мэдээллийн технологи/
Мэдээлэл харилцааны
технологи
Харилцааны технологи зэрэг бусад хоорондоо холбогддог технологитой
мэдээллийн технологийг нэгтгэн хослуулах хэрэглээ (UNESCO, 2000)
Хичээлийн нэршлээс үл хамааран мэдээлэл зүйн хичээлд дараах агуулгууд заавал тусгагдаж
байна.
• Хэвлэл, мэдээлэл
2
• Мэдээлэл боловсруулах технологи
• Дижитал технологи
• Загварчлал, алгоритм, программчлал
• Дижитал харилцаа, хамтын ажиллагаа
• Мэдээллийн хамгаалалт, соёл, ёс зүй
Эдгээр агуулга нь дижитал нийгмийн иргэдийн заавал эзэмших суурь мэдлэг, чадвар, хандлагыг
тодорхойлогч байна.
Ерөнхий боловсролын Мэдээлэл зүйн хөтөлбөр дэх алгоритм программчлалын бүлэг сэдвийн
гол зорилго нь шийдвэрлэх асуудлыг системтэй төлөвлөх, түүнийг программчлал, технологиор
шийдвэрлэх суурь мэдлэг, чадварт суралцах, улмаар тооцоолох сэтгэлгээний хөгжлийг дэмжих
оршино.
21 дүгээр зууны иргэдийн заавал эзэмших мэдлэг, чадварт мэдээлэл зүйн хичээлийн үзүүлж буй
хувь нэмрийг дараах байдлаар тодорхойлох боллоо (Цэдэвсүрэн, 2021). Үүнд:
• Хийсвэрлэл, логик, алгоритм, өгөгдлийн боловсруулалт гэх мэт компьютерын ухааны
суурь зарчим, ойлголттой болох (CS-Computer Science);
• Тооцооллын нөхцөлд асуудлуудыг шинжлэх, тэдгээр асуудлыг шийдвэрлэхийн тулд
компьютерын программ бичих практик туршлагатай болох (CS-Computer Science);
• Мэдээллийн технологийг зохистой сонгох, хэрэглэх, шинэ технологийг эзэмших,
асуудлыг шийдэхийн тулд түүнд дүн шинжилгээ хийх (IT-Information Technology);
• Мэдээлэл, харилцаа холбооны технологийн хариуцлагатай, чадвартай, итгэлтэй, бүтээлч
хэрэглэгч байх (DL-Digital Literacy).
Дэлхийн улс орнууд программчлалын боловсрол ихээхэн анхаарах тавьж байна. Учир нь
программчлал нь сурагчдад асуудлын шийдлийг тодорхойлох, бичих, өөрийн болон бусдын
шийдлийг үнэлэх чадвар эзэмших боломжийг олгодог. Асуудлыг шийдвэрлэх нь хамгийн чухал
чадварын нэг юм.
Түүнчлэн 21 дүгээр зууны иргэдийн заавал эзэмших суурь чадварт тооцоолох сэтгэлгээний
чадвар чухлаар тавигдаж байгаа бөгөөд сурагчдад уг чадварыг төлөвшүүлэхэд мэдээлэл зүйн
хичээл зонхилох үүрэг гүйцэтгэх учиртай. Тооцоолох сэтгэлгээний хөгжилд кодчиллын чадвар
ихээхэн чухал байдаг. Тооцоолох сэтгэлгээний нь сурагчдын дараах чадварын хөгжлийг
илэрхийлдэг байна. Үүнд:
• Хийсвэрлэн төсөөлөх – Abstraction
• Зүй тогтлыг танин мэдэх – Pattern Recognition
• Том асуудлыг олон жижиг хэсэгт хуваан шийдвэрлэх – Decomposition
• Алгоримтчлах, загварчлах – Algorithms
Мэдээлэл зүй нь мэдлэг, өгөгдөл, мэдээлэл, тэдгээрийн харилцан хамаарлыг тогтоох,
боловсруулах, тооцоолох үйл явцад суурилдаг. Дижитал эринд ажиллаж амьдрах иргэдийн өдөр
тутамд тулгарах их өгөгдөл боловсруулах, гэр ахуйн болон өргөн хэрэглээний робот, автомат
системийг ахуй амьдралд ашиглах, удирдах зэрэг заавал эзэмших мэдлэг, чадварын суурь нь
кодчилол буюу программчлал болоод байна (Цэдэвсүрэн, 2021). Учир нь уламжлалт асар олон
ажлын байр байхгүй болж, шинээр төдий хэмжээний ажил мэргэжил бий болох нь нэгэнт
тодорхой болжээ. Шинээр гарч ирж буй мэргэжилд МХТ-ийн мэдлэг, чадвар шаардахгүй
мэргэжил байхгүй болсон. Тиймээс ирээдүйн иргэдийн хувьд компьютер, ухаалаг төхөөрөмжөөр
3
амьдралын нийтлэг асуудлыг шийдвэрлэх буюу ухаалаг төхөөрөмжийг удирдах хэл-логик-
программчлалын суурь мэдлэг, чадвар эзэмшсэн байх нь суурь шаардлага болоод байна.
Хүснэгт 2. Ерөнхий боловсрол дахь алгоритм, программчлалын агуулгын шинэчлэлийн зарчим
Ерөнхий
боловсролын түвшин
Агуулга тусгаж буй байдал
Бага боловсрол Тооцоолох сэтгэлгээний суурь мэдлэг, чадварт суралцах
Суурь боловсрол
Асуудлыг задлан шинжилж, загварчлах, тохирох технологиор боловсруулах,
программ, аппликейшний шинэ санаа гаргах, боловсруулахад оролцох
Дунд
Амьдрал, нийгмийн нийтлэг асуудал, үйлчилгээг шийдвэрлэх ажилд хамтран
оролцох, программ, аппликейшн бүтээх
Тухайлбал, бага, дунд ангийн информатикийн хичээлд сурагчийн тооцоолох сэтгэлгээний
хөгжлийг дэмжсэн агуулга оруулж, түүнийг бодитойгоор илрүүлэх үнэлгээний нэгдсэн аргачлал
боловсруулагдаж, дэлхийн зарим орны боловсролын системд нэвтрээд байна. Ийм үнэлгээний
жишээ бол жил бүр хүрээгээ тэлж буй Бебрас (Bebras) олон улсын мэдээлэл зүйн олимпиад юм.
Уг олимпиадын зарим бодлогыг жишээ болгон авч үзлээ.
Жишээ болгон хүүхдийн тооцоолох сэтгэлгээний хөгжлийг дэмжсэн мэдээлэл зүйн үндсэн
бодлогуудаас жишээ болгон авч үзье. Эдгээрийг олон улсын мэдээлэл зүйн Бебрас уралдааны
бага, дунд ангийн сурагчдад зориулсан бодлогуудаас авсан болно.
Жишээ бодлого 1: Төгсөлтийн үдэшлэг
• Минжний академийн сургуулийн төгсөлтийн баярын үдэшлэг хийхээр болжээ. Үдэшлэг
10:00-аас 20:00 цагийн хооронд болох бөгөөд мөч бүрд нэгэн минж орох хаалгыг
хянадаг. Хаалгыг хянах ажилд сайн дурын минжнүүд тусалж байгаа бөгөөд тэдэнд
боломжтой цагийг тогтоож өгдөг.
• Доор буй хүснэгтэд сайн дурын минжнүүдийн хаалга хянах хуваарь өгчээ.
Асуулт: Энэхүү хуваарьт хаалга хоосон байх хугацаа байгаа тул түүнийг олно уу.
Бодолт, дидактикийн шийдэл: Энэхүү бодлого нь мэдээлэл зүйн үндсэн бодлого болох
эрэмбэлэлтийн санааг ашиглах маш хялбархан бодлого юм. Сурагчидтай ярилцсаны үндсэн дээр
минжний хаалгыг хянах хуваарийг эхний утгаар нь өсөхөөр эрэмбэлснээр хаалга хяналтгүй үлдэх
хуваарийг хялбархан олж болох талаар авч үзнэ. Түүнчлэн excel программ дээр хаалга хяналтгүй
байх хугацааг олох хялбар тооцоо хийлгэж болох юм.
11:00-12:00
Эхлэх утгаар эрэмбэлэх
10:00-10:30
10:00-10:30 10:15-11:15
17:15-17:45 11:00-12:00
4
18:15-19:00 12:00-13:30
13:45-14:30 13:45-14:30
15:30-16:30 14:00-15:00
10:15-11:15 14:45-16:00
14:00-15:00 15:30-16:30
17:30-19:00 16:15-17:30
14:45-16:00 17:15-17:45
19:00-20:00 17:30-19:00
19:15-19:30 18:15-19:00
16:15-17:30 19:00-20:00
12:00-13:30 19:15-19:30
Жишээ бодлого 2. Ухааны сорилго
Минжүүд олон талын авьяастай тул гадаад хэл болон программчлалын хэлийг хамтад нь
эзэмшсэн. Минж бүр нэг гадаад хэл ба нэг программчлалын хэл мэднэ. Үүнд:
• Лука минж Ховат хэл мэдэх боловч Python хэл мэдэхгүй.
• Дарко минж Герман хэл мэдэх боловч C++ хэл мэдэхгүй.
• Давид минж Итали хэл мэдэхгүй, мөн Java хэл мэдэхгүй.
• Давор минж Франц хэл мэдэхгүй, мөн C++ хэл мэдэхгүй.
• Logo хэл мэддэг минж Итали хэлтэй.
• Франц хэлтэй минж C++ хэл мэдэхгүй.
Асуулт:
• Дээрх мэдээллүүдийг ашиглан аль минж аль гадаад хэл, аль программын хэлийг мэддэг
болохыг тодорхойлж, хүснэгтэд минжийн нэр (Лука, Дарко, Давид, Давор)-ийг
бөглөөрэй.
•
Python C++ Java Logo
Хорват
Герман
Франц
Итали
Бодолт, дидактикийн шийдэл: Энэ бол Булийн алгебрийн үйлдлийг ашиглан математик логик
дүгнэлт гаргах хялбархан бодлого юм. Бодлогыг бодохдоо хэллэг бүрийг шинжлэн дүгнэлт
гаргаж, хэллэг хоорондын уялдаа холбоог шинжилж хүснэгтэд тэмдэглэх хэрэгтэй юм.
Тухайлбал:
• “Лука минж Ховат хэл мэдэх...” гэдгээс Лука Хорват хэлтэй болох нь тодорхой болно.
• “Дарко минж Герман хэл мэдэх ...” гэдгээс Дарко Герман хэлтэй.
• “Давид минж Итали хэл мэдэхгүй...” ба “Давор минж Франц хэл мэдэхгүй...” гэдгээс
Давид Франц хэлтэй, Давор Итали хэлтэй болохыг тодорхойлж, хүснэгтэд тэмдэглэнэ.
Хорват Герман Франц Итали
Лука +
Дарко +
Давид +
Давор +
5
Ингэснээр минжнүүдийн хэл тодорхой боллоо.
• “Logo хэл мэддэг минж Итали хэлтэй” гэсэн өгүүлбэрээс Давор Logo хэл мэддэг гэж
гарна.
• “Франц хэлтэй минж C++ хэл мэдэхгүй” ба “Дарко минж Герман хэл мэдэх боловч C++
хэл мэдэхгүй” гэсэн өгүүлбэрүүдээс Франц ба Герман хэлтэй минж “С++ мэдэхгүй” гэж
дүгнэж болох ба Хорват хэлтэй минж C++ хэл мэддэг болж таарч байна. Тиймээс Лука
C++ хэл мэддэг болж таарна.
Одоо программчлалын хоёр хэл үлдсэн.
• “Давид минж Итали хэл мэдэхгүй, мөн Java хэл мэдэхгүй.” гэдгээс Давид Python хэл
мэддэг.
• Үлдсэн Дарко Java хэтэй болж байна.
C++ Logo Java Python
Лука +
Дарко +
Давид +
Давор +
Эндээс дүгнэхэд:
- Лука нь Хорват, C++ хэлтэй.
- Дарко нь Герман, Java хэлтэй.
- Давид нь Франц, Python хэлтэй.
- Давор Итали, Logo хэлтэй болох нь тодорхой боллоо.
Ингээд шийд болох хүснэгтийг бичвэл дараах байдалтай болох юм.
Python C++ Java Logo
Хорват Лука
Герман Дарко
Франц Давид
Итали Давор
Жишээ бодлого 3. Огторгуйн аялал
Кларк бол нарны системийн гаргуудыг судлах Дэлхий-2 сансрын хөлгийн ахмад юм. Дэлхий-2
хөлөг онгоц нь Бархасбадь хүрэх даалгавартай яваа. Хөлөг нь нарны зай ба хатуу түлш гэсэн
хоёр төрлийн түлш ашиглах ба тухайн агшинд нэг л түлшийг нь ашигладаг.
Дэлхий-2 нь хоёр үйлдлийн горимтой. Энэ нь сансрын хөлөг түлшээ ашиглан хурдаа
нэмэгдүүлэх буюу “Хурдаа нэмэх” болон ямар ч түлш ашиглалгүйгээр хөлгийн тухайн үеийн
хурдыг хадгалж явах “Инерцээр явах” горимууд юм.
Хөлгийн компьютерын систем нь “Бархасбадид хүрэх” хэмээх программтай бөгөөд тэр нь
дараах алхмуудаас аль тохирохыг биелүүлдэг.
6
Хөлгийн удирдлагын программ:
Дэлхий-2-ыг “Хурдаа авах” горимд оруул.
Дэлхий-2 нь инерцийн горимд шилжээгүй бол дараах командыг давтан биелүүл:
Нарны зайн цэнэг 35 нэгжээс их бол зөвхөн нарны зайг давтан ашигла
Хэрэв нарны цэнэг 35 нэгж буюу түүнээс бага ба хатуу түлшний хэмжээ 20
нэгжээс их бол
“Нарны зайг цэнэглэх” мэдээллийг Дэлхий-2 программд илгээ
Хатуу түлшнээс 10 нэгжийг хэрэглэ
Нарны зайн цэнэгийг 50 нэгж болтол цэнэглэ
Хэрэв хатуу түлшний хэмжээ 20 нэгж буюу түүнээс бага бол
“Инерцээр явах” горимд оруулах мэдээллийг Дэлхий-2 программд илгээ
Дэлхий-2-ыг инерцээр явах горимд шилжүүл
Ахмад Кларк “Бархасбадид хүрэх” программыг ажиллуулах үед нарны зай 100 нэгж ба хатуу
түлш 40 нэгж байв. Тийм бол “Бархасбадид хүрэх” программ ажиллаад дуусахад Дэлхий-2-т
ямар мэдээлэл илгээсэн байх вэ?
Хариултын хувилбар:
a) Нарны зайг цэнэглэх, Нарны зайг цэнэглэх, Нарны зайг цэнэглэх, Инерцээр явах горимд
шилжүүлэх
b) Нарны зайг цэнэглэх, Нарны зайг цэнэглэх, Инерцээр явах горимд шилжүүлэх
c) Нарны зайг цэнэглэх, Инерцээр явах горимд шилжүүлэх
d) Инерцээр явах горимд шилжүүлэх, Нарны зайг цэнэглэх, Нарны зайг цэнэглэх
Бодолт, дидактик санаа: Энэхүү бодлого нь мэдээлэл зүйн бодлого, тэр дундаа алгоритмыг
шинжлэх, түүний ажиллагаанд шинжилгээ хийх төрлийн хялбар бодлогын маш сайн жишээ юм.
Ийм төрлийн бодлого нь алгоритмын үйлдэл бүрийг ойлгон биелүүлж байж үр дүнг зөв
тооцоолох ёстой. Тухайлбал, өгсөн жишээнд давхар давталттай байна. Тиймээс сурагч нь гадна
талын давталт хийгдэх бүрд дотор талын давталт хийдэх ёстойг ойлгосон байхыг шаардана.
Түүнчлэн алгоритмд нөхцөл шалгах хоёр үйлдэл байгаа учраас түүнийг ч бас зөв ойлгож
биелүүлэх ёстой.
Программ ажиллаж эхлэхэд
- Нарны зай 100 нэгж
- Хатуу түлш 40 нэгж (Оролтын өгөгдөл) байна.
Тиймээс алгоритм дараах байдлаар ажиллана. Үүнд:
Дэлхий-2-ыг “Хурдаа авах” горимд оруул.
Дэлхий-2 нь инерцийн горимд шилжээгүй учраас
“Нарны зайн цэнэг 35 нэгжээс их 100 байгаа тул зөвхөн нарны зайг давтан ашигла.” үйлдлийг
нарны зайн цэнэг 35 болтол давтан биелүүлнэ.
Нарны цэнэг 35 нэгж буюу түүнээс бага ба хатуу түлшний хэмжээ 20 нэгжээс их тул дараах
бүлэг үйлдлийг биелүүлнэ.
“Нарны зайг цэнэглэх” мэдээллийг Дэлхий-2 программд илгээ
Хатуу түлшнээс 10 нэгжийг хэрэглэ Одоо хатуу түлшний хэмжээ 30 болсон.
Нарны зайн цэнэгийг 50 нэгж болтол цэнэглэ
“Нарны зайн цэнэг 35 нэгжээс их 50 байгаа тул зөвхөн нарны зайг давтан ашигла.” үйлдлийг
нарны зайн цэнэг 35 болтол давтан биелүүлнэ.
Нарны цэнэг 35 нэгж буюу түүнээс бага ба хатуу түлшний хэмжээ 20 нэгжээс их тул дараах
бүлэг үйлдлийг биелүүлнэ.
7
“Нарны зайг цэнэглэх” мэдээллийг Дэлхий-2 программд илгээ
Хатуу түлшнээс 10 нэгжийг хэрэглэ Одоо хатуу түлшний хэмжээ 20 болсон.
Нарны зайн цэнэгийг 50 нэгж болтол цэнэглэ
Хатуу түлшний хэмжээ 20 нэгж буюу түүнээс бага болсон тул дараах бүлэг үйлдлийг
биелүүлнэ.
“Инерцээр явах” горимд оруулах мэдээллийг Дэлхий-2 программд илгээ
Дэлхий-2-ыг инерцээр явах горимд шилжүүл
Эндээс харахад зөв хариулт нь:
b) Нарны зайг цэнэглэх, Нарны зайг цэнэглэх, Инерцээр явах горимд шилжүүлэх
Баш нь сурагчид үгээр илэрхийлсэн хялбар алгоритмыг ажиллагааг судлах хугацаа өгч, түүнийг
шинжлэх, үр дүнг тооцоолоход гаргаж буй алдааг нарийн тодорхойлсны үндсэн дээр алдааг
залруулахад чиглэсэн зөвлөгөө, зааврыг өгч ажиллах хэрэгтэй. Ингэснээр алгоритмын аль хэсэгт
ойлголтын алдаа гарсан (алдааны шинжилгээ) болохыг тодорхойлох боломжтой. Алгоритм,
программчлалын бүлэг сэдвийг дээрх хэлбэрийн жишээ бодлогуудыг сурагчидтай хамтран бодох
нь тэдэнд алгоритм сэтгэлгээний суурь мэдлэг, чадварт суралцахад ихээхэн хувь нэмэр болох юм.
Мэдээлэл зүйн бодлого нь тодорхой шинж чанар бүхий оролтын болон завсрын өгөгдлүүд дээр
тодорхой үйлдлийн дарааллыг гүйцэтгэн үр дүн гарган авахад зориулан тодорхойлогдсон байна.
Энэ шинж чанар нь зарим талаараа математикийн бодлоготой төстэй боловч түүнээс ялгарах
зарим нэг онцлог бий. Тухайлбал, Математикийн цөөнгүй бодлогод өгөгдөл нь тодорхой утга
хэлбэрээр өгсөн байдаг. Жишээлбэл: “Батад 500 төгрөг байв. Зайрмаг 100, 200, 300 төгрөгийн
үнэтэй бол Бат зайрмагуудаас хэчнээн янзаар худалдан авч чадах вэ?”. Харин мэдээлэл зүйн
бодлогын өгөгдөл тодорхой шинж чанартай хэмжигдэхүүнээр өгдөг онцлогтой. Жишээлбэл,
“Батад T төгрөг байв. Зайрмаг T1, T2, T3 төгрөгийн үнэтэй бол Бат зайрмагуудаас хэчнээн янзаар
худалдан авч чадах вэ?”. Тиймээс мэдээлэл зүйн аливаа бодлогын шийдэл нь тухайн бодлогыг
ямар нэгэн түвшинд ерөнхий тохиолдлын шийдэл байдаг гэж үзэж болно. Ийм учраас сурагчид
хэмжигдэхүүн, өгөгдөл, хувьсагч, түүний төрөл, утга зэрэг суурь ухагдахууны мөн чанарыг
ойлгоогүй бол алгоритм, программчлалын аливаа бодлогыг бодож чадахгүй байх үндэс болохыг
багш анхаарах хэрэгтэй.
Мэдээлэл зүйн бодлогын бас нэгэн онцлог нь суурь алгоритмын үндсэн аргуудыг ашиглан бодох,
түүнчлэн динамик программчлал, хувааж эзэмших зэрэг нь компьютероор тооцоолох бодлогод
илүү тохирсон аргууд бий болсон.
Сургалтад хэрэглэх жишээ бодлого (Бебрас уралдааны 2015 оны бодлогоос авав):
1. Уралдаан
Гүйлтийн гурван тамирчин саадтай гүйлтээр өрсөлдөж байгаа.
Ноён Хүрэн уул руу өгсөх үед нэг тамирчны урд гардаг.
Ноён Ягаан уулнаас уруудах үед нэг тамирчны урд гардаг.
Ноён Ногоон уулан дээр (хадан дээр) гүйх үед нэг тамирчны урд гардаг.
8
Дээрх зурган дээр замыг үзүүлсэн: эхлээд уул
руу өгсөөд дараа нь уулан дээгүүр гүйж,
уулнаас буугаад дахиад хадан дээгүүр гүйнэ.
Эхлээд Ноён Ягаан байгаа ба түүний ард Ноён
Хүрэн болон Ноён Ногоон нар байрласан
байна.
Асуулт: Бариан дээр тамирчид ямар дарааллаар орж ирэх вэ?
Хариулт:
А. Ноён Ягаан, Ноён Хүрэн, Ноён Ногоон Б. Ноён Хүрэн, Ноён Ногоон, Ноён Ягаан
В. Ноён Ногоон, Ноён Ягаан, Ноён Хүрэн Г. Ноён Хүрэн, Ноён Ягаан, Ноён Ногоон
Д. Мэдэхгүй
2. Чулуун тоглоом
Та минжтэй дараах тоглоомыг тоглож байгаа. Уг тоглоомыг
тоглогчид чулуу авах ёстой. Үе бүрд тоглогч бүр 1, 2 эсвэл 3 ширхэг
чулууг авч болно. Хамгийн сүүлийн чулууг авсан тоглогч хожно.
Эхлээд 9 ширхэг чулуугаар тоглож байсан ба тоглолтын явцад эхний
тоглогч хамгийн эхэнд 1 чулуу аваад дараа нь нөгөө тоглогч хэдийг
ч авсан дандаа хожиж байгаа нь харагдсан. Одоо та минжтэй 15
ширхэг чулуугаар тоглох гэж байгаа.
Асуулт: Та эхэлж чулуу авна. Хожихын тулд хэдэн чулуу авах хэрэгтэй вэ?
Хариулт
А. 1 Б. 2 В. 3 Г. Хожих арга байхгүй Д. Мэдэхгүй
3. Тагнуул
Баасан гариг болгон зургаан тагнуулч долоо хоногийн турш цуглуулсан мэдээллээ солилцдог.
Тагнуулч нэг зэрэг нэгээс олон тагнуулчтай уулзаж болохгүй. Иймд тэд хоёр хоёроороо ярилцдаг
хэд хэдэн удаагийн уулзалтыг зохион байгуулдаг. Зургаан тагнуулчтай бүлгийн хувьд бүх нууцаа
тараахын тулд дараах гурван уулзалт хангалттай:
Уулзалтын өмнө тагнуулч бүр зөвхөн өөрийн өгөгдлийг л мэддэг (тагнуулч 1 “а”-г, тагнуулч 2
“b”-г гэх мэт). Эхний уулзалтаар 1 болон 2 хоорондоо ярилцаж өгөгдлөө солилцох тул дараа нь
хоёулаа “ab”-г мэддэг болно. Доорх схем дээр уулзалт бүр дээр ямар тагнуулууд ярилцаж байгааг
хэрчмээр үзүүлсэн. Мөн тагнуулуудын ямар өгөгдлийг мэдэж байгааг тэмдэглэсэн. Гурван
уулзалтын дараа бүгд бүх өгөгдлийг мэдэх болно.
Асуулт: Олон улсын асуудлаас болж нэг тагнуул уулзалтанд ирэхээ больсон. Үлдсэн таван
тагнуулын хувьд бүх өгөгдлөө солилцохын тулд хэдэн уулзалт шаардлагатай вэ?
Хариулт
А. 2 Б. 3 В. 4 Г. 5 Д. Мэдэхгүй
9
4. Хайлтын мод
Дугаарлагдсан картууд бүхий бүтэц (мод)
өгөгдөв. Карт бүр дараах чанаруудтай:
- Картууд дээрээ нүхтэй байх ба “эцэг” карт
холбогдоно.
- Мөн доороо өөр картын дээд нүхтэй
утсаар холбож болох хоёр нүхтэй байна.
Холбогдож байгаа картуудыг “хүү” гэнэ.
- Карт дээр бүхэл тоо бичсэн байна
Хэрэв карт дээр N гэсэн тоог бичсэн ба өөр
нэг карттай зүүн утсаараа холбогдсон бол уг
холбогдсон карт болон түүний бүх хүү дээр
бичсэн тоо нь N-ээс бага байх ёстой.
Хэрэв карт дээр N гэсэн тоог бичсэн ба өөр нэг карттай баруун утсаараа холбогдсон бол уг
холбогдсон карт болон түүний бүх залгамжлагчид дээр бичсэн тоо нь N-ээс их байх ёстой.
Асуулт: Зарим картуудад сул утаснууд байгаа. Модыг өргөтгөхийн тулд тэдгээрийн хэдэд нь карт
нэмж болох вэ?
Хариулт
А. 9 Б. 11 В. 13 Г. 14 Д. Мэдэхгүй
5. Зорчигчдын хоорондын холбоо
Петр, Жири, Вацлав нар хүмүүсийн хоорондын холбооны
сэдвээр төсөл бичиж байгаа. Тиймээс тэд автобусаар
зорчигчдын дунд судалгаа явуулж, харилцаа холбооны гурван
төрлийг олжээ. Үүнд, ихрүүд (хоёр ихрүүд), найз нөхөд, нэг
ангийнхан. Петр ихрүүдийг улаан шугамаар холбож, Жири найз
нөхдийг хар цэгэн шугамаар холбож, харин Вацлав нэг
ангийнхныг ногоон тасархай шугамаар холбосон байна. Багш нь
тэдний зөвхөн нэг нь л холболтуудаа зөв хийсэн байна гэж хэлсэн.
Асуулт: Аль төрлийг тодорхойлсон холболт нь зөв вэ?
Хариулт
А ихрүүд Б найз
нөхөд
В нэг
ангийнхан
Г Багшийн
буруу. Нэгээс
олон хүн
ажлаа зөв
хийсэн.
Д мэдэхгүй
6. Харандааны тоглоом
Бяцхан минжний зулзага зурахаас залхан хайрцагтай харандаагаар тоглохыг хүсжээ. Тоглоомын
дүрэм нь: харандааг зүүнээс баруун тийш чиглэлд хайрцгаас нэг нэгээр авна. Харандаануудыг
ээжийн болон аавын хайрцагт зүүнээс баруун тийш чиглэлд байрлуулна. Эхний харандааг ээжийн
хайрцагт хийнэ. Дараагийн харандаа бүрийг ээжийн хайрцагт хамгийн сүүлд хийсэн харандаатай
харьцуулна. Хэрэв сүүлийн харандаанаас богинохон бол ээжийн хайрцагт хийнэ үгүй бол аавын
хайрцагт хийнэ.
10
Асуулт: Бүх харандаануудыг байрлуулсны дараа аавын хайрцаг ямар байдалтай байх вэ?
Хариулт
А Б В Г
1.2. Ерөнхий боловсролын кодчиллын агуулга ба программчлалын технологи
Блок программчлалын жишээ: 21 дүгээр зууны иргэний бүтээлч болон тооцоолох сэтгэлгээний
хөгжилд мэдээлэл зүй, түүн дотроо программчлалын мэдлэг, чадвар шийдвэрлэх үүрэгтэй
болоод байна. Программчлал, түүнийг боловсруулах технологи улам бүр хялбар, бүтээмж
өндөртэй болж, дижитал технологийн нийтлэг, өргөн хэрэглээний асуудлыг шийдвэрлэх гол
хэрэгсэл боллоо. Тиймээс сурагчийн нас сэтгэхүйн онцлог, сонирхол хэрэгцээ, мэдлэг,
чадварын түвшинд тохируулан тохирсон программчлалын технологийг сонгон эзэмшүүлэх
боломж улам бүр нэмэгдэж байна. Энэ үүднээс хүүхдийн сэтгэн бодох, тооцоолох сэтгэлгээний
хөгжлийг дэмжсэн хялбар блок суурьтай программчлалын технологи олноороо бүтээгдэж
байна. Үүний тодорхой жишээ болгон АНУ-ын MIT-аас гаргасан Scratch, АНУ-ын Sacramento
их сургуулиас гаргасан Flowgorithm, Martin C. Carlisle нарын бүтээсэн Raptor зэрэг блок
суурьтай программчлалын технологиудыг дурдаж юм.
Тухайлбал, Flowgorithm бол урсгалын блокт суурилсан программчлалын хэл эхлэн Сурагчдад
зориулсан хэрэгсэл, чөлөөт программ юм. Программыг татаж авах хаяг:
http://www.flowgorithm.org/download. хаягаас flowgorithm-ын жишээ, түүнийг ашиглах талаарх
мэдээлэл (Англи хэл дээр)-ийг үзэж болно.
Программчлалд анхлан суралцагч текст суурьтай программчлалын хэлийг сурахад команд,
үйлдлүүдийг ойлгоход хүндрэлтэй байдаг бол Flowgorithm нь цөөн хэдэн блок дүрсүүдээр
программчлах илүү хялбар боломжийг олгодог. Flowgorithm нь блок угсрах технологит суурилдаг
учраас программчлалын үндсэн логикийг аль нэг программчлалын хэлний онцлогоос
хамааралгүйгээр ойлгож ухаарахад илүү тус дөхөм болно. Мөн зохиосон программаа
Flowgorithm дээрээ ажиллуулж болдог. Программын логикийг ойлгосон бол программчлалын
нийтлэг хэлнүүдээс сурахад хялбар байх болно.
Flowgorithm-ын онцлог:
 Хувьсагч тодорхойлох. Программчлалын ихэнх хэлд хувьсагчийг зарлан тодорхойлж
ашигладаг. Тиймээс сурагчид программчлалд суралцаж эхлэхдээ энэ талаар ойлгох
зайлшгүй шаардлагатай бөгөөд Flowgorithm үүнд тус дэм болно.
 Си ба Бэйсик бүлгийн программчлалын хэлний үйлдлүүдийг дэмждэг. Сурахыг хүсэж
буй дээд түвшний хэлээс сонголт хийн нийтлэг үйлдлүүдийг ашиглаж болно.
 Эхэндээ болон төгсгөлдөө нөхцөлтэй болон Параметрт давталт болон нэг хэмжээст
массив зохион байгуулан ашиглах боломжтой.
11
 Утга буцаах болон утга буцаадаггүй хэрэглэгчийн функцтэй.
 Аюулгүй рекурсив. Flowgorithm компьютерын системийн биш харин дотоод стектэй
байдаг. Төгсгөлгүй рекурсив дуудалт хийсэн ч алдааны мэдэгдэл өгөхөөс бус харин
битүү циклд орохгүй.
 Блок нь үйлдлийг илэрхийлэх түлхүүр үгтэй байдаг учраас анхлан сурагчдад
хүндрэлтэй байдал үүсэхгүй.
Хүүхдийг бүтээлч сэтгэлгээг дэмжсэн хялбар хэл: Түүнчлэн, Small Basic хэл нь программчлалын
бэйсик хэлний бүлд багтах объект хандалтат хэл бөгөөд GNU лицензээр хөгжүүлэгддэг чөлөөт
программ хангамж юм. http://www.microsoft.com/en-us/download/details.aspx?id=22961 хаягаар
хандан татаж авч компьютертоо суулгана. Small basic хэл нь бэйсик хэлний бүлд ордог учраас
хувьсагчийг зарлалгүй хэрэглэдэг.
Хүснэгт 3-д ерөнхий боловсролд хэрэглэж буй программчлалын технологийн түлхүүр
үйлдлүүдийг харьцуулан харууллаа.
Хүснэгт 3. Программчлалын зарим технологийн нийтлэг үйлдлүүд
Үйлдлийн
тайлбар
Технологиуд
Flowgorithm Small Basic Cи
Программыг
ажиллуулах
Run, F5 Run, F5 Run, F9 (F11)
Программыг
зогсоох
End Program End Program
Console цонхноос
Ctrl+Break
товчлуурыг дарна.
Бичвэр
хэвлэх
textWindow.Write
(“Sain uu?”)
printf(“Sain
uu?”);
Хувьсагчид
тоон утга
өгөх
too=42 int too=42;
Гараас утга
авч,
хувьсагчид
олгох, хэвлэх
nas=textWodow.Read
Number()
textWindow.Write
(“Bi “+age+”
nastai.”)
scanf(“%d”,&nas);
printf(“Bi %d
nastai.”,age)
Хувьсагчийн
утгыг
нэмэгдүүлэх
c=c+1
c= c+1; эсвэл
c+=1; эсвэл c++;
Нэмэгдүүлэх a=a+2
a=a+2; эсвэл
a+=2;
Хорогдуулах a=a-2
a=a-2; эсвэл a-
=2;
12
Үржүүлэх a=a*2
a=a*2; эсвэл
a*=2;
Хуваах a=a/2
a=a/2; эсвэл
a/=2;
Тэнцүү юү? a=2 a==2
Бага уу? a<2 a<2
Их үү? a>2 a>2
NOT(үгүйсгэ
л) логик
үйлдэл
not эсвэл ! Not !
OR (эсвэл)
логик үйлдэл
or эсвэл || Or ||
AND (ба)
логик үйлдэл
and эсвэл && And &&
Хэрвээ
<нөхцөл> бол
If (a=2) then
textWindow.Write(“
Sain uu?”)
endIf
if (a==2)
printf(“Sain
uu?”);
Хэрвээ
<нөхцөл> бол
бусад үед
If (a=2) then
textWindow.Write(“
Sain uu?”)
else
textWindow.Write(“
Bayartai”)
endIf
if (a==2)
printf(“Sain
uu?”);
else
printf(“Bayartai”
);
Параметрт
давталт
for i=0 to 9
jump()
endFor
for (i=0;
i<10;i++)
jump();
Нөхцөлтэй
давталт
While r<>6
jump()
endWhile
while (r!=6)
jump();
Төгсгөлгүй
давталт
зохион
байгуулах
While 1
jump()
endWhile
while (1) jump();
13
Түр
хүлээлгэх
Program.delay(2000
)
#include<stdlib.h
>
delay(2000);
Санамсаргүй
тоон үүсгүүр
ашиглах
r=Math.getRandomNu
mber(6)
#include<stdlib.h
>
r=rand()%6+1;
Дэд программ
a = 5
b = 8
niilber()
textWindow.Write(c
)
sub niilber
c=a+b
end sub
int niilber(int
a, int b){
return a+b;}
int a=5, b=8, c;
c=niilber(a, b);
printf(“%d”, c);
Шугаман
массивт утга
олгох
for i=1 to n
a[i]=2*i
endFor
int a[100];
for (i=0; i<n;
i++)
a[i]=2*(i+1);
Шугаман
массивыг
хэвлэх
for i=1 to n
textWindow.Write(a
[i]+” “)
endFor
for (i=0; i<n;
i++)
printf(“%d ”,
a[i]);
Массивын
хамгийн их
элементийг
олох
m=a[1]
for i=2 to n
if (m<a[i]) then
m=a[i]
endif
endFor
textWindow.Write(“
Ih: ”+a[i])
int m=a[0]
for (i=1; i<n;
i++)
if (m<a[i])
m=a[i];
printf(“Ih:%d”,
a[i]);
14
Тэмдэгт мөр
хувьсагчид
утга өгөх,
хуулах
mur=”program”
mur1=mur
#include
<string.h>
char mur[20],
mur1[20];
strcpy(mur,
”program”);
strcpy(mur1,
mur);
Тэмдэгт
мөрийг
харьцуулах
if (mur=mur1) then
textWindow.Write(“
tentsuu”)
else
textWindow.Write(“
yalgaatai”)
endIf
#include
<string.h>
if (strcmp(mur,
mur1)==0)
printf(“tentsuu”)
;
else
printf(“yalgaatai
”);
Тэмдэгт
мөрийг
залгах
mur=mur+mur1
#include
<string.h>
strcat(mur,
mur1);
Тэмдэгт
мөрөөс
тэмдэгт хайх
хайх
mur=”program”
w =
Text.IsSubText(mur
, "m")
If w="True" Then
TextWindow.Write("
baina")
Else
TextWindow.Write("
baikhgui")
EndIf
char
mur[]="program";
if (strchr(mur,
'r')!=0)
printf("baina");
else
printf("baihgui")
;
15
Тэмдэгт
мөрөөс хайх
-
mur=”program”
If
(Text.IsSubText(mu
r, “gra”)=True)
then
textWindow.Write(“
aguulna”)
else
textWindow.Write(“
aguulahgui”)
endIf
char
mur[]="program";
if (strstr(mur,
“gra”)!=0)
printf(“aguulna”)
;
else
printf(“aguulahgu
i”);
Тэгш өнцөгт
массивт утга
олгох
for i=1 to n
for j=1 to m
b[i][j]=i*j
endFor
endFor
for (i=0; i<n;
i++)
for (j=0; j<n;
j++)
b[i][j]=(i+1)*(j*
1);
Тэгш өнцөгт
массивыг
хэвлэх
for i=1 to n
for j=1 to m
textWindow.Write(b
[i][j]+” “)
endFor
textWindow.WriteLi
ne(“”)
endFor
for (i=0; i<n;
i++){
for (j=0; j<n;
j++)
printf(“%d ”,
b[i][j]);
printf(“n”);
}
Яст мэлхийн
график
-
Turtle.PenDown()
Turtle.Move(100)
Turtle.TurnRight()
Turtle.PenUp()
-
16
Цаашид авч үзэж буй жишээг эдгээр технологийг ашиглан дүрслэн авч үзэх болно.
1.3. Сурагчийн алгоритм, программчлалын бодлого бодох чадварын хөгжлийн
дэмжих арга зүйн асуудал
Бодлогын алгоритм зохиох, түүнийг программчлах нь бүтээлч үйл ажиллагаа юм. Тиймээс
алгоритм, программчлалын бодлого бодох нь системийн хөгжүүлэх амьдралын циклийн үндсэн
үе шатын дагуу хийгддэг болохыг Хүснэгт 4-д тодруулан харууллаа.
Хүснэгт 4. Системийг хөгжүүлэх амьдралын цикл ба мэдээлэл зүйн бодлого бодох нь
Системийг хөгжүүлэх
амьдралын циклийн үе шат
Бодлого бодох үйл ажиллагаа
Шинжилгээ
Бодлогыг сайтар ойлгож, өгөгдсөн зүйл, олох зүйл буюу үр дүн юу
байхыг тодорхойлох
Зохиомж
Бодлогын математик тавилыг тодорхойлж, математик загварыг гаргах,
шийдвэрлэх арга замуудыг тодорхойлох
Алгоритм, кодчилол Олсон бодолтоо нарийвчлах, түүнийг алгоритмчлах
Системийн туршилт
Алгоритмаа оролтыг өгөгдөл дээр биелүүлэн турших, үр дүнг
тооцоолох
Хэрэгжүүлэлт
Оролтын өгөгдөлд хязгаарын болон онцгой тохиолдлыг тооцох, гарсан
алдааг засварлах, алгоритмаа сайжруулах, бусад аргуудыг олж тогтоох
Багш нь алгоритм, программчлалын аливаа бодлогыг бодох үйлийг системтэйгээр төлөвлөн
гүйцэтгэх дадал хэвшлийг сурагчид багаасаа эзэмшихэд анхаарч багшлахуйн үйл ажиллагаагаа
зохион байгуулах нь зүйтэй. Жишээ болгон алгоритм программчлалын бүлэг сэдэвт өргөн
ашиглагддаг нэгэн бодлогыг дээрх алхмуудаар шинжилж харуулъя.
Жишээ бодлого 4. Өгсөн бүхэл тоо анхны тоо мөн үү?
Аливаа бодлогыг бодохын тулд сурагч нэг бүр бодлогын өгүүлбэртэй ажиллаж, бодлогыг нарийн
нягт ойлгосон байх ёстой. Хэрэв өгүүлбэрээс нэг л зүйл ойлгоогүй бол бодлогыг бодож чадахгүй.
Сурагч бодлогын өгүүлбэртэй ажиллаж сураагүйгээс түүнийг ойлгохыг хичээхгүй, түүнчлэн
ухамсаргүйгээр бусдаас хуулах, өөрөө бодсон мэт дүр эсгэх зэргээр багшийг хуурах, аргалах арга
барил нь улам гүнзгийрэх болно. Түүнчлэн интернэт дэх асар их нээлттэй кодыг хуулж үзүүлэх
асуудал ч түгээмэл болж байна. Тиймээс сурагч бүр бодлогын өгүүлбэртэй нагт нямбай ажиллаж,
түүнээс хэрэгцээтэй мэдээллээ олж тодорхойлох арга барилд суралцахад бүлэг сэдвийн эхнээс
багш анхаарч арга зүйдээ төлөвлөж өгөх хэрэгтэй.
Энэ бодлого нь 9 болон түүнээс дээш ангийн алгоритм программчлал бүлэг сэдвийн “Давталт”
сэдвийн жишээ болгон авч үзэж болно.
Бодлогын өгүүлбэртэй сурагчдыг танилцуулсны дараа ярилцахдаа багш дараах ойлголт
ухагдахуунд анхаарлаа хандуулж тэдэнтэй сайтар ярилцаж, нэмэлт тайлбарыг өгөх нь зүйтэй.
- Сурагчид бүхэл тоо (бүхэл тоон хэмжигдэхүүн)-ы талаар тодруулан жишээгээр ярилцах.
Жишээлбэл: 5 ба 5.0 бүхэл тоо юу?
17
- Бүхэл тоон хэмжигдэхүүн нь компьютерт дүрслэгдэхдээ int, integer, long төрөлтэй байх
ба эдгээр нь ялгаатай хэмжээтэй бүхэл тоог тодорхойлдог болохыг санах ойн үүр (бит,
байт, үг, давхар үг), түүний дүрслэлтэй холбоотойгоор тодруулан сануулж ярилцаж
болно (тоог 2 суурьтай тооллын систем дүрслэх талаар сануулах, цаашилбал бүхэл, бодит
тоог 2, 8 ба 16 суурьтай тооллын системд, эдгээр суурьтай тооллын системийн тоог
буцааж 10 суурьтай тооны системд дүрслэх, шилжүүлэх алгоритмын талаар жишээ
бодлогод авч үзсэн. Хэрэв сурагчид хүлээж авч чадахаар бол тэдгээр бодлогыг уг
сэдэвтэй холбон ашиглаж болно).
- Бүхэл тоон дотор анхны тоо гэж ямар шинж чанартай тоо вэ? гэдгийг тодруулан ярилцах.
11 ба 123 анхны тоо мөн үү? 111 нь анхны тоо биш: 123=3*41.
- Анхны тоог тодорхойлох (1 болон өөртөө хуваагддаг тоог анхны тоо гэнэ), шинж чанарыг
жишээгээр тайлбарлах.
- 1 анхны тоо мөн үү гэдгийг ярилцах. Нийтээрээ “1 анхны тоо биш” гэсэн дүгнэлтэд
хүрвэл маш сайн (Анхны тооны шинжээр үзэхэд 1 нь ганц хуваагчтай учраас анхны тоо
биш).
- 2 анхны тоо мөн үү гэдгийг ярилцах. Нийтээрээ “2 анхны тоо мөн” гэсэн дүгнэлтэд хүрвэл
маш сайн (Анхны тооны шинжээр үзэхэд 2 нь 1 ба өөртөө хуваагдаж буй учраас анхны
тоо болно).
- 2 нь цор ганц тэгш анхны тоо гэдгийг тордуулан ярилцах. Нарийндаа 2 нь анхны тооны
хязгаарын тохиолдол бөгөөд анхны тоо тодорхойлох алгоритмд 2 нь маш чухал үүрэгтэй
байдаг учраас багш энэ талаар ийм төрлийн бодлогын жишээг авахдаа тэднийг ойлготол
давтан тайлбарлаж өгч байх нь зүйтэй.
- Мөн 0 анхны тоо мөн үү гэж ярилцаж болно. Гэхдээ сурагчид математикийн хичээлээр
0-ийг 0-д хуваах (zero divide zero) талаар үзээгүй, суурь ойлголтгүй бол энэ талаар
ярилцах хэрэггүй.
Хүснэгт 5. Жишээ бодлого 4-ийг шинжилсэн нь
Шинжлэх
Бодлогын оролт: n бүхэл тоо.
Гаралт: “Мөн” эсвэл “Биш”
Бодолт (сурагчдын гаргаж болох зарим нэг санаа): Бодолт 1. “n тоог 1-ээс n
хүртэлх бүх тоонд хувааж үзэхэд хуваагчийн тоо 2 (1 ба өөртөө хуваагдсан) бол
тэр тоо анхны тоо” Бодолт 2. “n тоог 2-оос n-1 хүртэлх бүх тоонд хувааж үзэхэд
тэдгээрийн нэгэнд нь ч хуваагдахгүй бол тэр тоо анхны тоо” Бодолт 3. “n тоог 2-
оос n тооноос квадрат язгуур гаргасан тооны бүхэл хэсэг хүртэлх бүх тоонд
хувааж үзэхэд тэдгээрийн нэгэнд нь ч хуваагдахгүй бол тэр тоо анхны тоо”, ...
Алгоритм,
программ зохиох
Тодорхойлсон аргуудын алгоритмыг зохиох: Бодолт 1, Бодолт 2, Бодолт 3-ын
алгоритм, программ
Бодолтыг
сайжруулах
Бодолт 1, Бодолт 2 болон Бодолт 3-ыг харьцуулан ярилцах, давталтын тоог
тооцоолох
Тестлэх, турших
1, 2 болон бусад өгөгдлүүдийг өгч алгоритм, программыг турших, оролтын
өгөгдөлтэй уялдуулан үр дүнг тайлбарлан ярилцах
Бусад анхны болон зохиомол тоон өгөгдөл өгч алгоритм, программыг турших
Хүснэгт 6. Жишээ бодлого 4-ийн код (Си, Small Basic, Flowgorithm)
Бодолт 1: n тоог 1-ээс n хүртэлх бүх тоонд хувааж үзэхэд хуваагчийн тоо 2 (1 ба өөртөө хуваагдсан)
бол тэр тоо нь анхны тоо болно.
18
n=TextWindow.ReadLine()
anh1()
TextWindow.WriteLine ("Anh: "+r)
sub anh1
too=0
For i=1 To n
q=math.Remainder(n,i)
If q=0 Then
too=too+1
EndIf
EndFor
If too=2 Then
r=1
Else
r=0
EndIf
EndSub
#include <stdio.h>
#include <math.h>
int anh1(int n){
int i=1, r, too=0;
for (; i<=n; i++)
if (n%i==0) too++;
if (too==2) r=1;
else r=0;
return r;
}
main(){
int n; scanf(“%d”, &n);
printf("Alg1: %dn", anh1(n));
}
Бодолт 2: k тоог 2-оос n-1 хүртэлх бүх тоонд хувааж үзэхэд тэдгээрийн нэгэнд нь ч хуваагдахгүй бол
тэр тоо анхны тоо болно.
19
n=TextWindow.ReadLine()
anh2()
TextWindow.WriteLine("Anh: "+r)
sub anh2
too=0
For i=2 To n-1
q=math.Remainder(n,i)
If q=0 Then
too=too+1
EndIf
EndFor
If too=0 Then
r=1
Else
r=0
EndIf
EndSub
#include <stdio.h>
#include <math.h>
int anh2(int n){
int i, r, too=0;
for (i=2; i<n; i++)
if (n%i==0) too++;
if (too==0) r=1;
else r=0;
return r;
}
main(){
int n; scanf(“%d”, &n);
printf("Alg2: %dn",anh2(n));
}
Бодолт 3: n тоог 2-оос n тооноос квадрат язгуур гаргасан тооны бүхэл хэсэг хүртэлх бүх тоонд хувааж
үзэхэд тэдгээрийн нэгэнд нь ч хуваагдахгүй бол тэр нь тоо анхны тоо болно.
20
n=TextWindow.ReadLine()
anh3()
TextWindow.WriteLine("Anh: "+r)
sub anh3
too=0
For i=2 To math.SquareRoot(n)
q=math.Remainder(n,i)
If q=0 Then
too=too+1
EndIf
EndFor
If too=0 Then
r=1
Else
r=0
EndIf
EndSub
#include <stdio.h>
#include <math.h>
int anh3(int n){
int i, r, too=0;
for (i=2; i<=sqrt(n); i++)
if (n%i==0) too++;
if (too==0) r=1;
else r=0;
return r;
}
main(){
int n; scanf(“%d”, &n);
printf("Alg3: %dn",anh3(n));
}
Бодлогын алгоритмуудыг n-ийн өгсөн утга дээр биелүүлж, алгоритмуудын ялгаа (тухайлбал,
давталтын тоог харьцуулах зэргээр)-г сурагчид сайтар ойлгоход дараах хэлбэрийн хүснэгтийг
боловсруулан ажиллаж болно (Хүснэгт 7). Үүнийг алгоритмын биелэлтийн хүснэгт гэх ба
бодлого бүрийн хувьд өөр хэлбэртэйгээр боловсруулан ашиглана.
Хүснэгт 7. Бодлогын алгоритмыг оролтыг тодорхой өгөгдөл дээр ажиллуулж турших жишээ
Оролт n=6
Хуваагчийн тоо: too=0
Бодолт 1: Бодолт 2: Бодолт 3:
i n тоо i-д
хуваагдах уу?
too i n тоо i-д
хуваагдах уу?
too i n тоо i-д
хуваагдах уу?
too
1 Тийм 1 2 Тийм 1 2 тийм 1
21
2 Тийм 2 3 Тийм 2 3
3 Тийм 3 4 Үгүй 2 Хэвлэх: Биш
4 Үгүй 3 5 Үгүй 2
5 Үгүй 3 6
6 Тийм 4 Хэвлэх: Биш
7
Хэвлэх: Биш
Давталтыг 6 удаа хийсэн
Давталтыг 4 удаа
хийсэн
Давталтыг 2 удаа
хийсэн
Алгоритм, программчлалын бүлэг сэдвийг заахдаа багш дараах дидактик үе шатуудад анхаарлаа
хандуулж, сурагчдад бодлого бодох зөв дадал хэвшил, соёл хэвшүүлэхэд анхаарлаа хандуулах нь
зүйтэй. Үүнд:
• Бодлогын өгүүлбэрийг ойлгон шинжилж, бодлогын өгөгдөл (оролт), гаралт буюу үр дүн
юу байхыг тодорхойлох;
• Шинжилгээний үндсэн дээр бодлогыг бодох тойм төлөвлөгөөг гаргах;
• Төлөвлөгөөний дагуу алгоритмыг бичих;
• Алгоритмынхаа ажиллагааг шалгах буюу оролтын тодорхой өгөгдөл дээр биелүүлж, үр
дүнг тооцоолох, түүнийгээ оролтын өгөгдөлтэй уялдуулан тайлбарлах;
• Алгоритмаа сайжруулах, уг бодлогыг бодох өөр арга, алгоритм байгаа эсэхийг судлах
Эдгээр дидактик үе шат нь сурагч нэг бүр алгоритм, программчлалыг ашиглан амьдрал болон
хэрэглээний асуудлаа шийдвэрлэх суурь мэдлэг, чадварт амжилттай суралцахад ихээхэн чухал.
Үе шат бүрээр сурагчийн эзэмших мэдлэг, чадварыг авч үзэж буй жишээ, бодлоготой
холбоотойгоор нарийн төлөвлөн хэрэгжүүлэх мэдлэг, чадварт эртнээс суралцахад багш нар
анхаарах хэрэгтэй.
Алгоритмыг зөв зохиох мэдлэг, чадварт суралцсан бол түүнийг программчлалын хэлд хөрвүүлэх
нь дүрслэлийг хувиргах асуудал болдог. Тиймээс алгоритмыг ухамсартайгаар сэтгэн, түүнийг
амжилттай зохиож сурсан сурагчдад алгоритмыг программчлалын хэлд хөрвүүлэх нь тийм ч
хүнд ажил биш болно.
Түүнчлэн мэдээлэл зүйн бодлого нь бодит амьдралын асуудал (оролтын тодорхой өгөгдлүүд дээр
тэдгээрийг боловсруулах ямар нэг үйлдлийн дарааллыг хийж, үр дүнг гарган авах)-ыг
шийдвэрлэх хэлбэртэйгээр тавигддаг. Тиймээс мэдээлэл зүйн бодлогыг бодно гэдэг нь
- Бодлогыг өгүүлбэрийг сайтар ойлгосны үндсэн дээр түүнийг шийдвэрлэх математик
загварчлалыг бүтээх асуудал болно. Үүнийг бодлогын математик загварчлал гэдэг.
- Гаргасан математик загварчлалын үндсэн дээр бодлогыг шийдвэрлэнэ (алгоритм эсвэл
программ зохиох зэргээр).
- Энэхүү шийдэл нь анхны өгсөн бодит амьдралын асуудлын шийдэл болох учраас бодлого
бодогдлоо гэсэн үг юм.
Мэдээлэл зүйн бодлогын онцлогийг дүрсэлсэн бүдүүвчийг Зураг 1-д үзүүллээ.
22
Зураг 1. Мэдээлэл зүйн бодлогыг шийдвэрлэх нь
Мэдээлэл зүйн бодлогыг шийдвэрлэх дидактик алхмыг хялбар жишээ бодлогоор тодруулан авч
үзье (Хүснэгт 8).
Хүснэгт 8. Мэдээлэл зүйн бодлого бодох жишээ
Алгоритмыг хэрэгжүүлэх
алхмууд
Бодлогын алхмууд
Бодит объект дахь бодлогын
тавил
Амарынх загас тэжээдэг. Тэрээр загасныхаа аквариумыг a урт, b
өргөн, c өндөртэй болгон шинэчлэхээр болжээ. Шинэ аквариумд
хэчнээн хэмжээний ус орох вэ?
Математик объект дахь
бодлогын томьёолол
a, b тэгш өнцөгт суурь c өндөртэй тэгш өнцөгт праллелепепидийн
эзлэхүүнийг олох
Оролт: a, b, c
Гаралт: v
Математик объект дахь бодолт тэгш өнцөгт параллелепепидийн эзлэхүүн: v=a*b*c
Бодолтын бодит объект дахь
бодолт, тайлбар
a урт, b өргөн, c өндөртэй тэгш өнцөгт праллелепепидийн эзлэхүүн
нь v=a*b*c байх ба Амарын шинэ аквариумын усны хэмжээ болно.
1.4. Алгоритм, программчлал заах арга зүйн асуудал
Энд алгоритм зохиоход өргөн хэрэглэдэг нэгэн аргыг авч үзье. Энэхүү арга нь программыг
хөгжүүлэх дээрээс доош аргын санаад суурилаг сургалтад учраас ойлгож хэрэгжүүлэх нь нэг
талаас сурагчид аливаа программ, системийг бүтээх ерөнхий арга зүйд эртнээс суралцахад
ихээхэн ач холбогдолтой болохыг багш нар ухаарч сургалтдаа бүтээлчээр хэрэгжүүлэх хэрэгтэй.
Шинээр алгоритм зохиох нь тийм ч хялбар асуудал биш юм. Ялангуяа шинээр суралцагчдад
хүндрэлтэй асуудалтай цөөнгүй тулгардаг. Алгоритм зохиогчдын хөдөлмөрийг хөнгөвчилсөн
нэлээд хэдэн арга, санаа бий болсон байдгийн нэг нь алгоритмыг үндсэн үйлдэл хүртэл
нарийвчлан задалж байгуулах явдал юм.
Тодруулбал, алгоритмыг гүйцэтгэгчийн командыг системээр бичих хүртэл нарийвчлан задалж
бэлтгэнэ. Ингэхдээ алгоритмын анхны схемийг гүйцэтгэгчийн командын системээр биш
“ерөнхий” хэлбэрээр бичсэн байж болно. Өөрөөр хэлбэл, нэлээд төвөгтэй бодлогыг эхлээд хялбар
бие даасан дэд бодлогуудад хувааж, мөн тэдгээр дэд бодлогуудаа бүр энгийн хэсгүүдэд задлан
нарийвчлах замаар үргэлжлүүлнэ (Зураг 2). Энэ зарчмыг алгоритм, программчлалд шатлан
нарийвчлах арга гэдэг.
Бодит объект дахь бодлогын
тавил
Бодит объект дахь бодлогын
шийдэл
Математик объект дахь
бодлогын тавил
Математик объект дахь
бодлогын бодолт
Загварчлал
Тайлбарлал
23
Зураг 2. Бодлогыг нарийвчлан задлах бүдүүвч
Шатлан нарийвчлах энэ арга нь сурагчид аливаа асуудлыг тулгуур жижиг хэсгүүдэд хуваан
шийдвэрлэх чадварт суралцахад ихээхэн ач холбогдолтой байдаг. Төрөл бүрийн салбарын
судалгаа шинжилгээний ажилд энэ аргыг ерөнхий зарчмыг олонтоо хэрэглэдэг. Шинжилгээ
судалгаа гүйцэтгэгч хүн судалж буй зүйлийнхээ гаднах холбоог нь олж тогтоогоод мэдэхгүй
байгаа зүй тогтлыг бие даасан тусгай хэсгүүдэд хувааж, улмаар хэсэг бүрийн гүн уруу мөн энэ
аргаар нэвтэрнэ. Уг зарчим нь өмнөх алхмуудад эргэх холбоотой байх боломжийг олгоно. Өөрөөр
хэлбэл, биеэ даасан хэсгүүдийг нь нарийвчлан задалж дууссаны дараагаар уг бодлогыг задлах
үед олж тогтоосон гаднах бүх холбооных нь үндсэн дээр жижиг хэсгүүдийг нь нэгтгэх замаар нэг
бүтэн алгоритм болгон эмхэлдэг. Тухайлбал, бүхэл илтгэгчтэй зэргийн утгыг олох алгебрын
бодлогын жишээн дээр шатлан нарийвчлах аргыг тодруулан авч үзье.
Энэ жишээг авч үзэхийн өмнө тооны бүхэлд зэрэг, түүний чанартай холбоотой дараах хялбар
бодлогыг авч үзэх нь зүйтэй.
а. a хувьсагчийн утгыг дараах хүснэгтэд өгсөн. Хэрэв у=1 бол у=у*а команд 1 удаа, 2 удаа, 5 удаа
тус тус биелэгдсэний дараа у ямар утгатай болох вэ?
y=y*a; командыг биелүүлсэн тоо
1 2 4 5
a=2; y=1;
a=-3; y=1;
a=5; y=1;
б. y=a бол у=у*а команд 1 удаа, 2 удаа, 5 удаа тус тус биелэгдсэний дараа у ямар утгатай болох
вэ?
y=y*a; командыг биелүүлсэн тоо
1 2 4 5
a=2; y=a;
a=-3; y=a;
a=5; y=a;
в. Дараах үйлдлүүдийг хийе.
a=7; y=a; a=8;
Тэгвэл y хувьсагчийн утга хэд вэ?
Арга зүйн зөвлөмж: Зөв хариулт 7 боловч сурагчид 8 гэсэн алдааг гаргах явдал байдаг байна.
Тиймээс “эхний y=a; үйлдэл нь a=8 гэсэн үйлдлээс өмнө хийгдэж байгаа учраас y нь a-гийн
хуучин утга болох 7 утгыг авах болно. Харин үүний дараа a-ийн шинэ утга 8-ыг y хувьсагч авна”
гэдгийг сайтар тайлбарлан ярилцах хэрэгтэй.
г. Дараах үйлдлүүдийг хийе.
Үйлдэл k1 Үйлдэл k2 Үйлдэл t1 Үйлдэл t2 Үйлдэл t3
1-р дэд бодлого 2-р дэд бодлого
Бодлого
24
a=7; y=a; a=8;
y=y*a;
Тэгвэл y хувьсагчийн утга хэд вэ?
Арга зүйн зөвлөмж: Үүнийг сурагчид ойлгоход нэлээд хүнд байдаг байна. Тухайлбал, өмнөх
асуултад 8 гэж хариулсан бол 64 гэсэн алдаатай хариулт цөөнгүй гарна. Тиймээс мөн л y нь 7
утгатай байх ба түүнийг a-ийн утга болох 8-аар үржүүлснээр 56 болох талаар ярилцах хэрэгтэй.
Дээрх жишээнүүдийг ярилцсанаар ЗЭРЭГ туслах алгоритмын гол санааг дараах байдлаар
тайлбарлан авч үзэх нь зүйтэй.
Дээрх жишээнээс:
1 дүгээр алхамд y=a;
2 дугаар алхамд y=y*a; гэдэг нь y=a*a=a2
;
3 дугаар алхамд y=y*a; гэдэг нь y=a2
*a=a3
4 дүгээр алхамд y=y*a; гэдэг нь y=a3
*a=a4
….
n дүгээр алхамд y=y*a; гэдэг нь y=an-1
*a=an
болохыг олж харж дүгнэх нь ихээхэн чухал явдал юм.
Энд үйлдэлд оролцож буй y нь өмнө авсан утгаа хадгалж байдаг (тухайн санах ойн үүрэнд одоо
хадгалагдаж буй утга) болохыг сурагчид ойлгосон байх нь хамгийн чухал. Энэ үйлдэл нь
сурагчид ойлгоход нэлээд хүндрэлтэй байдаг байна. Тиймээс уг үйлдлийн онцлогийг сургагч нэг
бүрд ойлгуулах нь багшлахуйн арга зүйн чухал асуудал юм.
Бүхэл илтгэгчтэй зэргийг тооцоолох бодлогыг шатлан нарийвчлах аргаар авч үзвэл “Өмнөх
үйлдлийн үр дүнг a тоогоор үржүүлэх гэсэн хялбар үйлдлээр аливаа тооны бүхэл зэргийг гарган
авна” гэсэн дидактик санаанд үндэслэж байна. Өөрөөр хэлбэл, үржүүлэх үйлдлийг алгоритмын
цаашид үл задрах хэсэг болгон авснаар бодлогыг шийдэж байна.
Дээрх дэд бодлогууд дахь асуудлыг ярилцаж, мөн чанарыг сурагчид ойлгосноор zereg туслах
алгоритмыг ойлгоход хялбар байх болно. Zereg туслах алгоритмаа ашиглан дурын тооны бүхэл
тоон зэргийг бодох алгоритмыг бүхэлд нь авч үзнэ.
Бүхэл илтгэгчтэй зэргийг бодох алгоритмыг авч үзсэнээр:
- Үндсэн ба туслах алгоритмын хоорондын холбоо
- Үл хамаарах хэсгийн талаар ойлгох чухал суурь болно.
25
Хүснэгт 9. Туслах алгоритм ашиглах жишээ
Блок схем (Scratch) C Python
int zereg(int a, int n){
int i, y=a;
for (i=0; i<n; i++)
y=y*a;
return y;}
main(){
int a=4, n=5, y;
y=zereg(a, n);
printf(“%d”, y); ...}
def zereg(a, n):
y=a
for i in range(1,n):
y = y * a
return y
a=5
n=3
y = zereg(a, n)
print("Zereg: "+str(y))
Функцийг дуудах нь zereg ( 𝒂, 𝒏 ) хэлбэртэй байна.
zereg алгоритм нь хийсвэр параметрүүд нь 𝜶, 𝒏 хувьсагч юм. Үндсэн алгоритм нь энэ алгоритмыг
дуудахад эдгээр хийсвэр параметрт тодорхой утга дамжуулж байгааг тайлбарлан ярилцана.
Жишээ нь:
y = zereg (𝟐, 𝟓) гэвэл 𝜶 хувьсагчид 2, 𝒏 хувьсагчид 5 гэсэн утга дамжих болно.
y нь zereg дэд алгоритмын буцаасан утгыг хадгалж буй хувьсагч бөгөөд туслах алгоритмыг
дуудах үед үндсэн алгоритмд хэрэглэж байгааг сурагчид ойлгох нь ихээхэн чухал юм. Зэрэг
алгоритмыг Scratch, Си, Python хэлээр хэрэгжүүлснийг Хүснэгт 9-д үзүүллээ.
1.5. Сурагчийн тооцоолох сэтгэлгээний хөгжлийг дэмжих нь
Мэдээлэл зүйн технологиор аливаа бодлогыг бодох, асуудлыг шийдвэрлэх олон арга бий.
Сурагчийн бодлого бодсон аргыг нарийн шинжлэн үзэж, бодолт шийдлийн талаар ярилцах, өөр
бодолтуудтай харьцуулах нь тэдний тооцоолох, асуудал шийдвэрлэх сэтгэлгээг хөгжүүлэхэд
ихээхэн чухал. Тухайлбал, дараах хялбар жишээг авч үзье.
Жишээ бодлого 5. a, b талтай тэгш өнцөгт гурвалжны талбайг олох
Энэ бодлогын багахан ялгаатай гурван бодолтыг Хүснэгт 10-д үзүүллээ.
Бодолтуудыг дидактикийн хувьд шинжилж үзвэл:
1 дүгээр бодолт: Талбай олох томьёо дахь үржих, хуваах үйлдлүүд ижил эрэмбийн үйлдлүүд
учраас тэдгээрийн байрыг сольж болно гэсэн дүрмийг санавал энэ бодолт зөв юм. Хуваах
үйлдлийг эхэлж хийснээр a тоог 2 дахин багасаж байна. Тиймээс энэхүү бодолт нь a, b тоонуудын
үржвэр төрлийн хязгаараас давахаас сэргийлэх сайн арга болж өгнө. Гэхдээ a сондгой бол
түүнийг 2-т хувааснаар үр дүнг алдаад хүрч болзошгүй болохыг анхаарч үзвэл зохино.
2 дугаар бодолт: Тэгш өнцөгт гурвалжны талбай олох математик томьёог шууд ашигласан
бодолт. Энэ арга нь өмнөх аргаас дутагдалтай тал нь хоёр хувьсагчийн үржвэр төрлийн хязгаараас
давсан үед алдаа гарах явдал гарч болно.
3 дугаар бодолт: Дурын гурвалжны талбайг олох шийдэл буюу гурвалжны талбайг олох ерөнхий
алгоритм юм. Энэ аргаар бодсон сурагч нь гурвалжны талаар нэлээд сайн мэдлэгтэй байгаагаа
26
харуулж байна. Гэхдээ бодолтод хоёр удаа квадрат язгуур гаргах үйлдлийг ашиглаж байгаа учраас
тооцооллын үр дүнд нь ойролцоогоор тооцоологдох ба энэ бодолтод нарийвчлалын алдаа гарах
боломж хамгийн өндөр байх болно.
Эдгээр аргууд нь өөрийн гэсэн давуу болон сул талтай байгааг дээрх тайлбараас харж болно.
Хүснэгт 10. Жишээ бодлого 5-ын гурван өөр бодолт
#include <stdio.h>
#include <math.h>
main(){
int a=3, b=4, s;
s=b/2*a;
printf("s= %dn", s);
}
#include <stdio.h>
#include <math.h>
main(){
int a=3, b=4, s;
s=(a*b)/2;
printf("s= %dn", s);
}
#include <stdio.h>
#include <math.h>
main(){
int a=3, b=4, c, p, s;
c=sqrt(a*a+b*b);
p=(a+b+c)/2;
s=sqrt(p*(p-a)*(p-b)*(p-c));
printf("s= %dn", s);
}
a = 3
b = 4
s = (a/2)*b
TextWindow.WriteLine(s)
a = 3
b = 4
s = (a*b)/2
TextWindow.WriteLine(s)
a = 3
b = 4
c = Math.SquareRoot(a*a+b*b)
p = (a+b+c)/2
s = Math.SquareRoot(p*(p-a)*(p-b)*(p-c))
TextWindow.WriteLine(s)
Үр дүн:
6.0 6.0 6.0
Жишээ бодлого 6: 1-ээс n хүртэлх тэгш тоонуудын нийлбэрийг олно уу.
27
Энэ бодлогын багш нарын тоолуурт давталтын жишээ болгон авч үзэх нь түгээмэл байдаг.
Учир нь “тоолуурын анхны утга (1) болон төгсөх утга (n) тодорхой, алхам (2) тодорхой” байдаг
учраас тоолуурт давталтын шинж чанарт нэлээд сайн нийцдэг.
Энэ бодлогын дараах гурван түгээмэл бодолтыг сурагчид гаргаж магадгүй. Үүнд:
Бодолт 1. Тоолуурт давталтад i тоолуурын утгыг 1-ээс n хүртэл давтаж, хэрэв i тоо тэгш буюу
2-т хуваагдаж байвал i тоолуурын утгаар нийлбэр болох s-ийн утгыг нэмэгдүүлнэ. Үр дүн нь s
болно.
Бодолт 2. 0 биш эхний тэгш тоо 2 учраас тоолуурт давталтад i тоолуурын утгыг 2-оос n хүртэл
давтаж, давталтын алхмыг 2-оор нэмэгдүүлж, i тоолуурын утгаар s-ийн утгыг нэмэгдүүлнэ. Үр
дүн нь s болно.
Бодолт 3. 1-ээс n хүртэлх тэгш тоо: 2, 4, 6, ... [n/2] Энд [n/2] гэдэг нь n тоог 2-т хуваасны бүхэл
хэсгийг тэмдэглэнэ.
Тодруулбал, бодлогод n=10 гэвэл 2, 4, 6, 7, 8, 10 гэсэн 5 тэгш тоо байна. Энэ нь сурагчдын
математикийн хичээлээр үзсэн арифметик прогресс байгааг авьяастай сурагчид харж чадна.
Тодруулбал:
- Анхны гишүүн нь 2
- Ялгавар нь 2
- Гишүүний тоо: 5
сурагчид гэж харснаар арифметик прогрессын эхний n гишүүний нийлбэрийг олох томьёогоор
уг бодлогыг шийдэж чадна. Давталт шаардлагагүй.
Энд давталт ашиглалгүй бодсон 3 дугаар бодолтыг давталт ашиглаагүй хэмээн үгүйсгэж
ерөөсөө болохгүй. Магадгүй энэ бодолт хамгийн сайн бодолт ч байж болох юм.
Хүснэгт 11-д энэхүү бодлогын бодолтыг харууллаа.
Хүснэгт 11. Жишээ бодлого 6-ийн гурван өөр бодолт
s = 0
TextWindow.ReadLine(n)
for i=1 To n
u = Math.Remainder(i, 2)
If u=0 Then
s = s + i
EndIf
EndFor
TextWindow.WriteLine(s)
#include <stdio.h>
#include <math.h>
main(){
int i, n, s=0;
scanf("%d", &n);
28
for (i=1; i<=n; i++)
if (i%2==0) s=s+i;
printf("s= %dn", s);
}
s = 0
TextWindow.ReadLine(n)
for i=2 To n Step 2
s = s + i
EndFor
TextWindow.WriteLine(s)
#include <stdio.h>
#include <math.h>
main(){
int i, n, s=0;
scanf("%d", &n);
for (i=2; i<=n; i+=2){
s=s+i;
}
printf("s= %dn", s);
}
a1 = 2
d = 2
TextWindow.ReadLine(n)
m = n/2
s = ((2*a1 + (m-1)*d)/2)*m
TextWindow.WriteLine(s)
#include <stdio.h>
#include <math.h>
main(){
int a1, d, i, m, n, s=0;
scanf("%d", &n);
a1=2; d=2; m=n/2;
s =((2*a1 + (m-1)*d)/2)*m;
29
printf("s= %dn", s);
}
Дээрх алгоритмд n=10 бол үр дүн нь 30 байна.
Дээрх бодолтуудыг дидактикийн хувьд харьцуулан шинжилж үзвэл:
1 дүгээр бодолт: Энэ бодолт нь давталтыг 1 алхамтайгаар авч, давталт дотор i-ийн утгыг 2-т
хувааж, үлдэгдэл 0 буюу тэгш тоо мөн эсэхийг шалгаж, тийм бол нийлбэрийг авч байна. Энэ нь
хэдийгээр зөв бодолт боловч давталтын тоог цөөрүүлэх боломжийг авч үзээгүйгээрээ 2 дугаар
бодолтоосоо дутагдалтай юм. Энэ аргаар бодсон сурагч нь параметрт давталт болоод тооны
хуваагдах шинжийн талаар сайн ойлголттой гэж үзэж болно. Харин параметрт давталтын давуу
тал, алхам нь 1-ээс ялгаатай байж болдог талаар сануулж ярилцсанаар бодлогыг илүү сайн аргаар
бодож болохыг сурагчид төвөггүй ойлгох болно.
2 дугаар бодолт: Энэ бодолт нь параметрт давталтын давуу тал, боломжийг маш сайн ойлгосон
сурагч байна. Тиймээс шаардлагатай бол бодолтыг бусад нөхдөд нь тайлбарлуулж, ярилцсанаар
бусад хараахан ойлгоогүй байгаа сурагчид ойлгож авахад тус нэмэр болж болох юм.
3 дугаар бодолт: Энэ бодолт бол уг бодлогыг давталт ашиглахгүйгээр математикт үзсэн аргаараа
шийдвэрлэж болохыг харуулсан нэлээд сайн жишээ юм. Хэрэв сурагч энэ аргаар бодсон бол
урамшуулах нь зүйтэй. 1-ээс n хүртэлх тэгш тооны нийлбэрийг олох энэ бодлогыг математикийн
хичээлээр үзсэн арифметик прогрессын эхний хэдэн гишүүний нийлбэр болохыг олж харснаар
энэ бодолтыг хийсэн байна.
1-ээс 10 хүртэлх тэгш тоо: 2 4 6 8 10
Эндээс анхны гишүүн: a1=2
Ялгавар: d=2
Гишүүдийн тоо (m гэе): n=10 учраас m=10/2=5
Эндээс энэ арифметик прогрессын эхний m гишүүний нийлбэрийн томьёог бичвэл:
𝒔 =
(𝟐𝒂𝟏 + (𝒎 − 𝟏)𝒅)𝒎
𝟐
гэсэн томьёогоор тэгш тоонуудын нийлбэрийг тодорхойлж байна. Энэ бодолт нь өмнөх хоёр
бодолтоос ажиллах хугацаа хамгаагүй бага байх болно.
Бие дааж бодох бодлогын санаа:
- N элементтэй шугаман массивын
o тэгш/сондгой тоог хэвлэх
o тэгш/сондгой тооны нийлбэр
o тэгш/сондгой тооны үржвэр
Жишээ бодлого 7: Хөгжөөнт паркийн хураамж 12-оос бага бага насны хүүхдэд 30, 12-оос 60
хүртэлх насны хүмүүс 60, харин 60-аас дээш насны хүмүүс 20 нэгж өртгийн хураамжтай бол
насны мэдээллээс хамааруулан хураамжийн хэмжээг тодорхойлох алгоритм зохионо уу.
Бодлогын гурван өөр бодолтыг Хүснэгт 12-т авч үзлээ.
Бодолтын дидактик харьцуулалт, шинжилгээ:
30
Сурагч Д-ийн бодолт: Бүх нөхцөлийг шалгасан. Ийм бодолтыг шулуун бодолт гэж болох ба нэг
нөхцөлийг шалгаж дууссаны дараа нөгөө нөхцөлийг шалгаж байна. Иймээс энэ алгоритмд ELSE
байхгүй байна.
Сурагч Б-ийн бодолт: Энэ бодолтын логик нь хүний бодол санаатай илүү нийцтэй. Учир нь
тухайн нөхцөл биелэх эсвэл биелэхгүй байх аль ч тохиолдолд тохирох үйлдлийг хийж байхаар
зохиогджээ.
Сурагч Г-ийн бодолт: Харин энэ бодолт хэдийгээр зөв боловч ойлгоход төвөгтэй байж болно.
Ийм бодолтыг “сөрөг” бодолт гэж болно. Учир нь тухайн нөхцөл биелж байхад дахин нөхцөл
шалгаж байгаа болон нөхцөл биелэхгүй байх тохиолдлуудыг ойлгоход төвөгтэй байна.
Бодолтын кодыг Хүснэгт 12-д үзүүллээ.
Хүснэгт 12. Жишээ бодлого 7-ийн гурван өөр бодолт
Сурагч Д-ийн бодолт
#include <stdio.h>
main(){
int huraamj, nas;
scanf("%d",&nas);
if (nas<12) huraamj=30;
if (nas>=12&&nas<=60)
huraamj=60;
if (nas>60) huraamj=20;
printf("%d", huraamj);
}
Сурагч Б-ийн бодолт
31
#include <stdio.h>
main(){
int huraamj, nas;
scanf("%d",&nas);
if (nas<12) huraamj=30;
else if (nas<=60)
huraamj=60;
else huraamj=20;
printf("%d", huraamj);
}
Сурагч Г-ийн бодолт
#include <stdio.h>
main(){
int huraamj, nas;
scanf("%d",&nas);
if (nas>=12)
if (nas>60) huraamj=20;
else huraamj=60;
else huraamj=30;
printf("%d", huraamj);
}
32
Жишээ бодлого 8. Хүү шатаар нэг эсвэл алгасаж алхаж чадна. N гишгүүр хүртэл хэчнээн янзаар
алхах вэ?
Оролт: Гишгүүрийн тоо: N
Гаралт: Шатан дээр гарах боломжийн тоо
Жишээ нь: N=4 бол 5
Бодолт: Эхний гишгүүр дээр хүү ганц үйлдлээр гарч чадна. Хоёр дахь гишгүүр дээр нэг нэгээр,
эсвэл алгасаж гишгээд 2 янзаар гарч чадна. Гурав дах гишгүүр дээр нэгдүгээр гишгүүрээс эсвэл
хоёрдугаар гишгүүрээс гарч чадна. Ингэхдээ нэгдүгээр гишгүүрээс 2 (нэг нэгээр эсвэл алгасаж
гишгэх), хоёрдугаар гишгүүрээс зөвхөн 1 янзаар гарч чадна. Тиймээс 3 дугаар гишгүүрт хүрэх 3
боломж байна. Ерөнхийлбөл n дүгээр гишгүүр дээр n-2 ба n-1 дүгээр гишгүүрээс гарах
боломжтой. Тэгвэл n-2 гишгүүр дээр гарах боломжийн тоог f(n-2), n-1 гишгүүр дээр гарах
боломжийн тоог f(n-1) гэсэл n дүгээр шатанд гарах боломжийн тоо f(n)=f(n-2)+(n-1) байна.
Өөрөөр хэлбэл:
𝐟(𝐧) = {
𝐟(𝐧 − 𝟐) + 𝐟(𝐧 − 𝟏), 𝐧 > 𝟏
𝟏, Бусад
Энд: f(0)=1, f(1)=1 байна.
Тиймээс энэ бодлого бол Фибоначчийн дарааллын n дүгээр гишүүний олох бодлогын өөр нэгэн
томьёолол болох нь харагдаж байна.
Фибоначчийн дарааллын n дүгээр гишүүнийг тооцоолох нь давхар рекурсив ашиглан бодож
болох бай энэ нь программ давхардсан тооцооллыг шийдвэрлэх шаардлагыг бий болгоно. Үүнийг
динамик программчлалын хялбар техникийг ашиглан шийдвэрлэж, уг аргыг онцлогийг сурагчдад
танилцуулж болно. Үүнд, динамик программчлалын санах ойд хадгалах (memorization) болон
хүснэгтэд хадгалах (tabulation) аргаар бодож ярилцах нь зүйтэй.
Түүнчлэн динамик программчлалын массив ашиглах болон хувьсагч ашиглах аргаар шийдэж
болно. Эдгээр дөрвөн бодолтыг санааг дараах хүснэгтэд үзүүллээ.
Хүснэгт 13. Жишээ бодлого 8-ын дөрвөн өөр бодолт
Арга, бодолт Бодлогын код
1 дүгээр арга: Рекурсив бодолт
(давхардсан тооцоолол)
f(0)=1, f(1)=1
f(n) = {
f(n − 2) + f(n − 1), n > 1
1, Бусад
#include <stdio.h>
#include <stdlib.h>
typedef long long int ll;
ll fib1(ll n){
if (n==0||n==1) return 1;
else return fib1(n-2)+fib1(n-1);
}
main(){
ll n=40;
printf("%lld",fib1(n));
}
2 дугаар арга: Санах ойд хадгалах
(динамик программчлал)
Рекурсив хувилбартай төстэй боловч
шийдлийг тооцоолохдоо өмнө
хадгалсан утгын хүснэгтэд тооцоолох
утга байгаа эсэхийг шалгана. Хэрэв
утгыг тооцоолсон бол түүнийг
буцаана, үгүй бол утгыг тооцоолоод
#include <stdio.h>
#include <stdlib.h>
#define N 10000
typedef long long int ll;
ll mem[N];
ll fib2(ll n){
if (mem[n]==0){
if (n==0||n==1) mem[n]=n;
else mem[n]=fib2(n-2)+fib2(n-1);
33
дахин ашиглах боломжтой болгохын
тулд үр дүнг хүснэгтэд хийж өгнө.
}
return mem[n];
}
main(){
ll n=40;
memset(mem, 0, sizeof(mem));
printf("%lld",fib2(n));
}
3 дугаар арга: Хүснэгтэд хадгалах
(динамик программчлал)
mem хүснэгтэд Фибоначчийн
дарааллын утгыг эхнээс нь тооцоолон
mem[0]=0, mem[1]=1,
mem[2]=mem[0]+mem[1] гэх мэтээр
тооцоолж, n дүгээр утгыг
mem[n]=mem[n-2]+mem[n-1]-д хийнэ.
Үр дүн болгон mem[n]-ийг буцаана.
#include <stdio.h>
#include <stdlib.h>
#define N 10000
typedef long long int ll;
ll mem[N];
ll fib3(ll n){
int i;
mem[0]=0; mem[1]=1;
for (i=2; i<=n; i++)
mem[i]=mem[i-2]+mem[i-1];
return mem[n];
}
main(){
ll n=40;
memset(mem, 0, sizeof(mem));
printf("%lld",fib3(n));
}
4 дүгээр арга:
Фибоначчийн дарааллын аливаа
элементийн утга нь өмнөх хоёр
элементээрээ тооцоологдож байна.
Тиймээс тухайн элементийн өмнөх
хоёр утгыг хадгалах, нийлбэрийг олох
тулах хувьсагчууд ашиглан санах ойг
хамгийн зохистой ашиглан
Фибоначчийн дарааллын n дүгээр
гишүүнийг тооцоолж болно.
#include <stdio.h>
#include <stdlib.h>
typedef long long int ll;
ll mem[N];
ll fib4(ll n){
int a, b, c, i;
a=0; b=1;
for (i=2; i<=n; i++){
c=a+b;
a=b;
b=c;
}
return b;
}
main(){
ll n=40;
memset(mem, 0, sizeof(mem));
printf("%lld",fib4(n));
}
Фибоначчийн бодолтыг зөвхөн Си кодыг харууллаа. Үүнийг flowgorithm дээрх блок болон SB
хэлд хөрвүүлж, ажиллах даалгаврыг сурагчдаар ажиллуулж болно.
Дүгнэлт
Программчлал нь залуу иргэдийн мэдээллийн нийгмийн технологийн хэрэгслийг өөрийн
хүссэнээр удирдах, ашиглах суурь мэдлэг, чадварт суралцах гол хэрэгсэл болоод байна. Энэ
үүднээс кодчилол, программчлалын мэдлэг, чадварт хүүхэд залуус эртнээс суралцсан байх нь
тэдний ирээдүйд хийх ажил мэргэжлийн бэлтгэлд ихээхэн чухал байх нь дамжиггүй. Учир нь
шинээр бий болж буй ажил, мэргэжилд кодчилол, программчлалын технологийг шаарддаггүй
ажлын байр үгүй юм.
34
Мэдээлэл зүйн боловсролын нэгэн чухал зорилт бол сурагчдад кодчиллын боловсрол олгох явдал
билээ. Сурагчдын алгоритм, тооцоолон бодох сэтгэлгээг аль болох багаас нь бүтээлчээр
хөгжүүлэхэд багш нар ихээхэн анхаарч ажиллах шаардлагатай байдаг учраас энэхүү арга зүй,
технологийн талаар багш та бүхэндээ товч танилцуулж байгаа юм. Эдгээр материал нь та бүхний
арга зүйн хөгжилд бага ч боловч хувь нэмэр болж, хичээлийг үр бүтээлтэй явуулах талаар цөөн
ч атуугаа санаа мэдэл өгөх болов уу хэмээн найдахын зэрэгцээ, сургалтын практик хөгжүүлэн
хэрэглэнэ гэдэгт найдаж байна.
Ном зүй, эх сурвалж:
Цэдэвсүрэн, Д. (2020) Мэдээлэл зүйн боловсролын бодлогын шинэчлэл, Лавай эрдэм
шинжилгээний сэтгүүл, дугаар 24, хх: 16-28
Мэдээлэл зүй тооцоолох техникийн үндэс заах аргын зөвлөмж (1988), IX дүгээр анги, Орч:
Жаргал, Б., Намсрай, Ю., Чойжоованчиг, Л., Улсын хэвлэлийн комбинат
Олон улсын Бибрас уралдааны бодлогын орчуулгын материал, 2015
Олон улсын Бибрас уралдааны бодлогын орчуулгын материал, 2017
Мэдээлэл зүй V (2013) 10 дугаар ангид судлах сурах бичиг, Адмон принт ХХК
Мэдээлэл зүй VI (2013), 11 дүгээр дугаар ангид судлах сурах бичиг, Адмон принт ХХК
Мэдээлэл зүй VII (2014), 12 дугаар ангид судлах сурах бичиг, Сэлэнгэпресс ХХК

More Related Content

PDF
Мэдээлэл, мэдээллийг хэмжих нэгж
PPTX
U.cs101 алгоритм программчлал-3
DOCX
мэдээлэл зүйн жишиг даалгавар 8 р анги
PPS
Давталттай алгоритмын бодлогууд
PPS
Салаалсан алгоритмын бодлогууд
PDF
11-р ангийн мэдээлэл зүйн тест
PPS
Шугаман алгоритмын бодлогууд
PPTX
давталттай алгоритм
Мэдээлэл, мэдээллийг хэмжих нэгж
U.cs101 алгоритм программчлал-3
мэдээлэл зүйн жишиг даалгавар 8 р анги
Давталттай алгоритмын бодлогууд
Салаалсан алгоритмын бодлогууд
11-р ангийн мэдээлэл зүйн тест
Шугаман алгоритмын бодлогууд
давталттай алгоритм

What's hot (20)

PPTX
ODP
Компьютерийн сүлжээ
PDF
алгоритмын бодлогууд
PDF
Лекц 2 (Блок схем)
PDF
мэдээллийн технологи 1 тест
PDF
компьютерийн програм хангамж
PPTX
лекц 1 компьютерийн бүтэц зохион байгуулалт
PDF
1. компьютерийн гар
DOCX
Insert цэсний командууд
PPTX
салаалсан алгоритм
PPTX
U.cs101 алгоритм программчлал-5 zasvar badral(1)
PPTX
компьютерийн сүлжээний техник хангамж
PPTX
тригонометрийн үндсэн адилтгалууд 1
PPTX
7 р анги
PPT
програм хангамж
PPT
тоон логик 3 l,4lсуурь логик
PPTX
U.cs101 алгоритм программчлал-13
PPTX
01_6-р анги (Мэдээ, Мэдээлэл түүний шинж чанар)
PPT
Компьютерийн сүлжээ
алгоритмын бодлогууд
Лекц 2 (Блок схем)
мэдээллийн технологи 1 тест
компьютерийн програм хангамж
лекц 1 компьютерийн бүтэц зохион байгуулалт
1. компьютерийн гар
Insert цэсний командууд
салаалсан алгоритм
U.cs101 алгоритм программчлал-5 zasvar badral(1)
компьютерийн сүлжээний техник хангамж
тригонометрийн үндсэн адилтгалууд 1
7 р анги
програм хангамж
тоон логик 3 l,4lсуурь логик
U.cs101 алгоритм программчлал-13
01_6-р анги (Мэдээ, Мэдээлэл түүний шинж чанар)
Ad

Similar to Prog didacticsok (10)

PPTX
Ood lesson3
PPT
Lecture 01
PPT
__4.ppt and legts and lab_4 systemintegration
PPTX
Дараалал ба цуваа
PPTX
Lecture 2
PDF
Ieee a4 mgl_last_2019_11_04
PPTX
Lecture 1
PPTX
Процессорын архитектур
PPTX
Математик индукц
PPTX
Lecture 4
Ood lesson3
Lecture 01
__4.ppt and legts and lab_4 systemintegration
Дараалал ба цуваа
Lecture 2
Ieee a4 mgl_last_2019_11_04
Lecture 1
Процессорын архитектур
Математик индукц
Lecture 4
Ad

Recently uploaded (20)

PDF
Digital Logic Computer Design lecture notes
PDF
Embodied AI: Ushering in the Next Era of Intelligent Systems
PPTX
Recipes for Real Time Voice AI WebRTC, SLMs and Open Source Software.pptx
PDF
SM_6th-Sem__Cse_Internet-of-Things.pdf IOT
PPTX
Engineering Ethics, Safety and Environment [Autosaved] (1).pptx
PDF
The CXO Playbook 2025 – Future-Ready Strategies for C-Suite Leaders Cerebrai...
PPTX
FINAL REVIEW FOR COPD DIANOSIS FOR PULMONARY DISEASE.pptx
PPTX
Welding lecture in detail for understanding
PPTX
Infosys Presentation by1.Riyan Bagwan 2.Samadhan Naiknavare 3.Gaurav Shinde 4...
PDF
July 2025 - Top 10 Read Articles in International Journal of Software Enginee...
PPTX
Internet of Things (IOT) - A guide to understanding
PPTX
UNIT-1 - COAL BASED THERMAL POWER PLANTS
PPTX
MCN 401 KTU-2019-PPE KITS-MODULE 2.pptx
PDF
BMEC211 - INTRODUCTION TO MECHATRONICS-1.pdf
PPTX
IOT PPTs Week 10 Lecture Material.pptx of NPTEL Smart Cities contd
PDF
Enhancing Cyber Defense Against Zero-Day Attacks using Ensemble Neural Networks
PPTX
Lecture Notes Electrical Wiring System Components
PPTX
Geodesy 1.pptx...............................................
PDF
Evaluating the Democratization of the Turkish Armed Forces from a Normative P...
PDF
keyrequirementskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
Digital Logic Computer Design lecture notes
Embodied AI: Ushering in the Next Era of Intelligent Systems
Recipes for Real Time Voice AI WebRTC, SLMs and Open Source Software.pptx
SM_6th-Sem__Cse_Internet-of-Things.pdf IOT
Engineering Ethics, Safety and Environment [Autosaved] (1).pptx
The CXO Playbook 2025 – Future-Ready Strategies for C-Suite Leaders Cerebrai...
FINAL REVIEW FOR COPD DIANOSIS FOR PULMONARY DISEASE.pptx
Welding lecture in detail for understanding
Infosys Presentation by1.Riyan Bagwan 2.Samadhan Naiknavare 3.Gaurav Shinde 4...
July 2025 - Top 10 Read Articles in International Journal of Software Enginee...
Internet of Things (IOT) - A guide to understanding
UNIT-1 - COAL BASED THERMAL POWER PLANTS
MCN 401 KTU-2019-PPE KITS-MODULE 2.pptx
BMEC211 - INTRODUCTION TO MECHATRONICS-1.pdf
IOT PPTs Week 10 Lecture Material.pptx of NPTEL Smart Cities contd
Enhancing Cyber Defense Against Zero-Day Attacks using Ensemble Neural Networks
Lecture Notes Electrical Wiring System Components
Geodesy 1.pptx...............................................
Evaluating the Democratization of the Turkish Armed Forces from a Normative P...
keyrequirementskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk

Prog didacticsok

  • 1. 1 I. Алгоритм, программчлалын дидактикийн асуудал Д.Цэдэвсүрэн, МУБИС-ийн мэдээлэл зүйн тэнхим Бүлгийн агуулга: - Мэдээлэл зүйн боловсролын шинэчлэл - Ерөнхий боловсролын кодчиллын агуулга ба программчлалын технологи - Сурагчийн алгоритм, программчлалын бодлого бодох чадварын хөгжлийн дэмжих арга зүйн асуудал - Алгоритм, программчлал заах арга зүйн асуудал - Сурагчийн тооцоолох сэтгэлгээний хөгжлийг дэмжих нь Зорилго: Мэдээллийн технологийн хөтөлбөрийн алгоритм, программчлалын бүлэг сэдвийн багшлахуй, суралцахуйн арга зүйн талаарх мэдлэг, чадвараа дээшлүүлэх, мэдээлэл зүйн бодлогоор сурагчийн алгоритм сэтгэлгээ болон тооцоолох тооцоолох сэтгэлгээний хөгжлийг дэмжих арга зүйн үндсийг ойлгох, хэрэгжүүлэх Зорилт: - Мэдээлэл зүйн боловсрол, алгоритм, программчлалын мэдлэг, заах арга зүйн мэдлэг, чадвараа дээшлүүлэх - Сурагчдын алгоритм сэтгэлгээ, тооцоолох сэтгэлгээний хөгжлийг дэмжих арга зүйн үндсийг ойлгох - Сурагчдын тооцоолох сэтгэлгээний хөгжлийг дэмжих арга зүй технологийг сургалтад хэрэгжүүлэх практик чадварт суралцах 1.1. Мэдээлэл зүйн боловсролын шинэчлэлийн талаар Ерөнхий боловсрол дахь мэдээлэл зүйн хичээлийн ач холбогдол улам чухал болж байгааг боловсрол судлаачид онцолж, олон улс орнууд хөтөлбөрийн шинэчлэлийг хийж байна. Аль ч улс орны ерөнхий боловсрол дахь мэдээлэл зүйн хичээлийн нийтлэг нэршил болон агуулгыг гол чиглэлийн ялгаатай болон төстэй талыг Хүснэгт 1-д үзүүллээ. Хүснэгт 1. Мэдээлэл зүйн боловсролын нэршил ба нийтлэг агуулга Мэдээлэл зүйн хичээлийн нэршил Товч агуулга Компьютерын ухаан/ Информатик/ Тооцоолол Техник болон программ хангамж, хүний хүчин зүйл, системийн дизайн, хөгжүүлэлт, үнэлгээ, ашиглалт, үйлчилгээний зэрэг өргөн хүрээний асуудлыг хамардаг (UNESCO/IBI). Дижитал бичиг үсгийн боловсрол/ Компьютерын бичиг үсгийн боловсрол Компьютер, дижитал медиа, программын хэрэгслийг ашиглах чадвартай, түүний давуу болон сул талыг ойлгож мэдсэн, МХХТ-ийн хариуцлагатай хэрэглэгч болоход чиглэсэн агуулга (Vania Guerra, 2012) Мэдээллийн технологи/ Мэдээлэл харилцааны технологи Харилцааны технологи зэрэг бусад хоорондоо холбогддог технологитой мэдээллийн технологийг нэгтгэн хослуулах хэрэглээ (UNESCO, 2000) Хичээлийн нэршлээс үл хамааран мэдээлэл зүйн хичээлд дараах агуулгууд заавал тусгагдаж байна. • Хэвлэл, мэдээлэл
  • 2. 2 • Мэдээлэл боловсруулах технологи • Дижитал технологи • Загварчлал, алгоритм, программчлал • Дижитал харилцаа, хамтын ажиллагаа • Мэдээллийн хамгаалалт, соёл, ёс зүй Эдгээр агуулга нь дижитал нийгмийн иргэдийн заавал эзэмших суурь мэдлэг, чадвар, хандлагыг тодорхойлогч байна. Ерөнхий боловсролын Мэдээлэл зүйн хөтөлбөр дэх алгоритм программчлалын бүлэг сэдвийн гол зорилго нь шийдвэрлэх асуудлыг системтэй төлөвлөх, түүнийг программчлал, технологиор шийдвэрлэх суурь мэдлэг, чадварт суралцах, улмаар тооцоолох сэтгэлгээний хөгжлийг дэмжих оршино. 21 дүгээр зууны иргэдийн заавал эзэмших мэдлэг, чадварт мэдээлэл зүйн хичээлийн үзүүлж буй хувь нэмрийг дараах байдлаар тодорхойлох боллоо (Цэдэвсүрэн, 2021). Үүнд: • Хийсвэрлэл, логик, алгоритм, өгөгдлийн боловсруулалт гэх мэт компьютерын ухааны суурь зарчим, ойлголттой болох (CS-Computer Science); • Тооцооллын нөхцөлд асуудлуудыг шинжлэх, тэдгээр асуудлыг шийдвэрлэхийн тулд компьютерын программ бичих практик туршлагатай болох (CS-Computer Science); • Мэдээллийн технологийг зохистой сонгох, хэрэглэх, шинэ технологийг эзэмших, асуудлыг шийдэхийн тулд түүнд дүн шинжилгээ хийх (IT-Information Technology); • Мэдээлэл, харилцаа холбооны технологийн хариуцлагатай, чадвартай, итгэлтэй, бүтээлч хэрэглэгч байх (DL-Digital Literacy). Дэлхийн улс орнууд программчлалын боловсрол ихээхэн анхаарах тавьж байна. Учир нь программчлал нь сурагчдад асуудлын шийдлийг тодорхойлох, бичих, өөрийн болон бусдын шийдлийг үнэлэх чадвар эзэмших боломжийг олгодог. Асуудлыг шийдвэрлэх нь хамгийн чухал чадварын нэг юм. Түүнчлэн 21 дүгээр зууны иргэдийн заавал эзэмших суурь чадварт тооцоолох сэтгэлгээний чадвар чухлаар тавигдаж байгаа бөгөөд сурагчдад уг чадварыг төлөвшүүлэхэд мэдээлэл зүйн хичээл зонхилох үүрэг гүйцэтгэх учиртай. Тооцоолох сэтгэлгээний хөгжилд кодчиллын чадвар ихээхэн чухал байдаг. Тооцоолох сэтгэлгээний нь сурагчдын дараах чадварын хөгжлийг илэрхийлдэг байна. Үүнд: • Хийсвэрлэн төсөөлөх – Abstraction • Зүй тогтлыг танин мэдэх – Pattern Recognition • Том асуудлыг олон жижиг хэсэгт хуваан шийдвэрлэх – Decomposition • Алгоримтчлах, загварчлах – Algorithms Мэдээлэл зүй нь мэдлэг, өгөгдөл, мэдээлэл, тэдгээрийн харилцан хамаарлыг тогтоох, боловсруулах, тооцоолох үйл явцад суурилдаг. Дижитал эринд ажиллаж амьдрах иргэдийн өдөр тутамд тулгарах их өгөгдөл боловсруулах, гэр ахуйн болон өргөн хэрэглээний робот, автомат системийг ахуй амьдралд ашиглах, удирдах зэрэг заавал эзэмших мэдлэг, чадварын суурь нь кодчилол буюу программчлал болоод байна (Цэдэвсүрэн, 2021). Учир нь уламжлалт асар олон ажлын байр байхгүй болж, шинээр төдий хэмжээний ажил мэргэжил бий болох нь нэгэнт тодорхой болжээ. Шинээр гарч ирж буй мэргэжилд МХТ-ийн мэдлэг, чадвар шаардахгүй мэргэжил байхгүй болсон. Тиймээс ирээдүйн иргэдийн хувьд компьютер, ухаалаг төхөөрөмжөөр
  • 3. 3 амьдралын нийтлэг асуудлыг шийдвэрлэх буюу ухаалаг төхөөрөмжийг удирдах хэл-логик- программчлалын суурь мэдлэг, чадвар эзэмшсэн байх нь суурь шаардлага болоод байна. Хүснэгт 2. Ерөнхий боловсрол дахь алгоритм, программчлалын агуулгын шинэчлэлийн зарчим Ерөнхий боловсролын түвшин Агуулга тусгаж буй байдал Бага боловсрол Тооцоолох сэтгэлгээний суурь мэдлэг, чадварт суралцах Суурь боловсрол Асуудлыг задлан шинжилж, загварчлах, тохирох технологиор боловсруулах, программ, аппликейшний шинэ санаа гаргах, боловсруулахад оролцох Дунд Амьдрал, нийгмийн нийтлэг асуудал, үйлчилгээг шийдвэрлэх ажилд хамтран оролцох, программ, аппликейшн бүтээх Тухайлбал, бага, дунд ангийн информатикийн хичээлд сурагчийн тооцоолох сэтгэлгээний хөгжлийг дэмжсэн агуулга оруулж, түүнийг бодитойгоор илрүүлэх үнэлгээний нэгдсэн аргачлал боловсруулагдаж, дэлхийн зарим орны боловсролын системд нэвтрээд байна. Ийм үнэлгээний жишээ бол жил бүр хүрээгээ тэлж буй Бебрас (Bebras) олон улсын мэдээлэл зүйн олимпиад юм. Уг олимпиадын зарим бодлогыг жишээ болгон авч үзлээ. Жишээ болгон хүүхдийн тооцоолох сэтгэлгээний хөгжлийг дэмжсэн мэдээлэл зүйн үндсэн бодлогуудаас жишээ болгон авч үзье. Эдгээрийг олон улсын мэдээлэл зүйн Бебрас уралдааны бага, дунд ангийн сурагчдад зориулсан бодлогуудаас авсан болно. Жишээ бодлого 1: Төгсөлтийн үдэшлэг • Минжний академийн сургуулийн төгсөлтийн баярын үдэшлэг хийхээр болжээ. Үдэшлэг 10:00-аас 20:00 цагийн хооронд болох бөгөөд мөч бүрд нэгэн минж орох хаалгыг хянадаг. Хаалгыг хянах ажилд сайн дурын минжнүүд тусалж байгаа бөгөөд тэдэнд боломжтой цагийг тогтоож өгдөг. • Доор буй хүснэгтэд сайн дурын минжнүүдийн хаалга хянах хуваарь өгчээ. Асуулт: Энэхүү хуваарьт хаалга хоосон байх хугацаа байгаа тул түүнийг олно уу. Бодолт, дидактикийн шийдэл: Энэхүү бодлого нь мэдээлэл зүйн үндсэн бодлого болох эрэмбэлэлтийн санааг ашиглах маш хялбархан бодлого юм. Сурагчидтай ярилцсаны үндсэн дээр минжний хаалгыг хянах хуваарийг эхний утгаар нь өсөхөөр эрэмбэлснээр хаалга хяналтгүй үлдэх хуваарийг хялбархан олж болох талаар авч үзнэ. Түүнчлэн excel программ дээр хаалга хяналтгүй байх хугацааг олох хялбар тооцоо хийлгэж болох юм. 11:00-12:00 Эхлэх утгаар эрэмбэлэх 10:00-10:30 10:00-10:30 10:15-11:15 17:15-17:45 11:00-12:00
  • 4. 4 18:15-19:00 12:00-13:30 13:45-14:30 13:45-14:30 15:30-16:30 14:00-15:00 10:15-11:15 14:45-16:00 14:00-15:00 15:30-16:30 17:30-19:00 16:15-17:30 14:45-16:00 17:15-17:45 19:00-20:00 17:30-19:00 19:15-19:30 18:15-19:00 16:15-17:30 19:00-20:00 12:00-13:30 19:15-19:30 Жишээ бодлого 2. Ухааны сорилго Минжүүд олон талын авьяастай тул гадаад хэл болон программчлалын хэлийг хамтад нь эзэмшсэн. Минж бүр нэг гадаад хэл ба нэг программчлалын хэл мэднэ. Үүнд: • Лука минж Ховат хэл мэдэх боловч Python хэл мэдэхгүй. • Дарко минж Герман хэл мэдэх боловч C++ хэл мэдэхгүй. • Давид минж Итали хэл мэдэхгүй, мөн Java хэл мэдэхгүй. • Давор минж Франц хэл мэдэхгүй, мөн C++ хэл мэдэхгүй. • Logo хэл мэддэг минж Итали хэлтэй. • Франц хэлтэй минж C++ хэл мэдэхгүй. Асуулт: • Дээрх мэдээллүүдийг ашиглан аль минж аль гадаад хэл, аль программын хэлийг мэддэг болохыг тодорхойлж, хүснэгтэд минжийн нэр (Лука, Дарко, Давид, Давор)-ийг бөглөөрэй. • Python C++ Java Logo Хорват Герман Франц Итали Бодолт, дидактикийн шийдэл: Энэ бол Булийн алгебрийн үйлдлийг ашиглан математик логик дүгнэлт гаргах хялбархан бодлого юм. Бодлогыг бодохдоо хэллэг бүрийг шинжлэн дүгнэлт гаргаж, хэллэг хоорондын уялдаа холбоог шинжилж хүснэгтэд тэмдэглэх хэрэгтэй юм. Тухайлбал: • “Лука минж Ховат хэл мэдэх...” гэдгээс Лука Хорват хэлтэй болох нь тодорхой болно. • “Дарко минж Герман хэл мэдэх ...” гэдгээс Дарко Герман хэлтэй. • “Давид минж Итали хэл мэдэхгүй...” ба “Давор минж Франц хэл мэдэхгүй...” гэдгээс Давид Франц хэлтэй, Давор Итали хэлтэй болохыг тодорхойлж, хүснэгтэд тэмдэглэнэ. Хорват Герман Франц Итали Лука + Дарко + Давид + Давор +
  • 5. 5 Ингэснээр минжнүүдийн хэл тодорхой боллоо. • “Logo хэл мэддэг минж Итали хэлтэй” гэсэн өгүүлбэрээс Давор Logo хэл мэддэг гэж гарна. • “Франц хэлтэй минж C++ хэл мэдэхгүй” ба “Дарко минж Герман хэл мэдэх боловч C++ хэл мэдэхгүй” гэсэн өгүүлбэрүүдээс Франц ба Герман хэлтэй минж “С++ мэдэхгүй” гэж дүгнэж болох ба Хорват хэлтэй минж C++ хэл мэддэг болж таарч байна. Тиймээс Лука C++ хэл мэддэг болж таарна. Одоо программчлалын хоёр хэл үлдсэн. • “Давид минж Итали хэл мэдэхгүй, мөн Java хэл мэдэхгүй.” гэдгээс Давид Python хэл мэддэг. • Үлдсэн Дарко Java хэтэй болж байна. C++ Logo Java Python Лука + Дарко + Давид + Давор + Эндээс дүгнэхэд: - Лука нь Хорват, C++ хэлтэй. - Дарко нь Герман, Java хэлтэй. - Давид нь Франц, Python хэлтэй. - Давор Итали, Logo хэлтэй болох нь тодорхой боллоо. Ингээд шийд болох хүснэгтийг бичвэл дараах байдалтай болох юм. Python C++ Java Logo Хорват Лука Герман Дарко Франц Давид Итали Давор Жишээ бодлого 3. Огторгуйн аялал Кларк бол нарны системийн гаргуудыг судлах Дэлхий-2 сансрын хөлгийн ахмад юм. Дэлхий-2 хөлөг онгоц нь Бархасбадь хүрэх даалгавартай яваа. Хөлөг нь нарны зай ба хатуу түлш гэсэн хоёр төрлийн түлш ашиглах ба тухайн агшинд нэг л түлшийг нь ашигладаг. Дэлхий-2 нь хоёр үйлдлийн горимтой. Энэ нь сансрын хөлөг түлшээ ашиглан хурдаа нэмэгдүүлэх буюу “Хурдаа нэмэх” болон ямар ч түлш ашиглалгүйгээр хөлгийн тухайн үеийн хурдыг хадгалж явах “Инерцээр явах” горимууд юм. Хөлгийн компьютерын систем нь “Бархасбадид хүрэх” хэмээх программтай бөгөөд тэр нь дараах алхмуудаас аль тохирохыг биелүүлдэг.
  • 6. 6 Хөлгийн удирдлагын программ: Дэлхий-2-ыг “Хурдаа авах” горимд оруул. Дэлхий-2 нь инерцийн горимд шилжээгүй бол дараах командыг давтан биелүүл: Нарны зайн цэнэг 35 нэгжээс их бол зөвхөн нарны зайг давтан ашигла Хэрэв нарны цэнэг 35 нэгж буюу түүнээс бага ба хатуу түлшний хэмжээ 20 нэгжээс их бол “Нарны зайг цэнэглэх” мэдээллийг Дэлхий-2 программд илгээ Хатуу түлшнээс 10 нэгжийг хэрэглэ Нарны зайн цэнэгийг 50 нэгж болтол цэнэглэ Хэрэв хатуу түлшний хэмжээ 20 нэгж буюу түүнээс бага бол “Инерцээр явах” горимд оруулах мэдээллийг Дэлхий-2 программд илгээ Дэлхий-2-ыг инерцээр явах горимд шилжүүл Ахмад Кларк “Бархасбадид хүрэх” программыг ажиллуулах үед нарны зай 100 нэгж ба хатуу түлш 40 нэгж байв. Тийм бол “Бархасбадид хүрэх” программ ажиллаад дуусахад Дэлхий-2-т ямар мэдээлэл илгээсэн байх вэ? Хариултын хувилбар: a) Нарны зайг цэнэглэх, Нарны зайг цэнэглэх, Нарны зайг цэнэглэх, Инерцээр явах горимд шилжүүлэх b) Нарны зайг цэнэглэх, Нарны зайг цэнэглэх, Инерцээр явах горимд шилжүүлэх c) Нарны зайг цэнэглэх, Инерцээр явах горимд шилжүүлэх d) Инерцээр явах горимд шилжүүлэх, Нарны зайг цэнэглэх, Нарны зайг цэнэглэх Бодолт, дидактик санаа: Энэхүү бодлого нь мэдээлэл зүйн бодлого, тэр дундаа алгоритмыг шинжлэх, түүний ажиллагаанд шинжилгээ хийх төрлийн хялбар бодлогын маш сайн жишээ юм. Ийм төрлийн бодлого нь алгоритмын үйлдэл бүрийг ойлгон биелүүлж байж үр дүнг зөв тооцоолох ёстой. Тухайлбал, өгсөн жишээнд давхар давталттай байна. Тиймээс сурагч нь гадна талын давталт хийгдэх бүрд дотор талын давталт хийдэх ёстойг ойлгосон байхыг шаардана. Түүнчлэн алгоритмд нөхцөл шалгах хоёр үйлдэл байгаа учраас түүнийг ч бас зөв ойлгож биелүүлэх ёстой. Программ ажиллаж эхлэхэд - Нарны зай 100 нэгж - Хатуу түлш 40 нэгж (Оролтын өгөгдөл) байна. Тиймээс алгоритм дараах байдлаар ажиллана. Үүнд: Дэлхий-2-ыг “Хурдаа авах” горимд оруул. Дэлхий-2 нь инерцийн горимд шилжээгүй учраас “Нарны зайн цэнэг 35 нэгжээс их 100 байгаа тул зөвхөн нарны зайг давтан ашигла.” үйлдлийг нарны зайн цэнэг 35 болтол давтан биелүүлнэ. Нарны цэнэг 35 нэгж буюу түүнээс бага ба хатуу түлшний хэмжээ 20 нэгжээс их тул дараах бүлэг үйлдлийг биелүүлнэ. “Нарны зайг цэнэглэх” мэдээллийг Дэлхий-2 программд илгээ Хатуу түлшнээс 10 нэгжийг хэрэглэ Одоо хатуу түлшний хэмжээ 30 болсон. Нарны зайн цэнэгийг 50 нэгж болтол цэнэглэ “Нарны зайн цэнэг 35 нэгжээс их 50 байгаа тул зөвхөн нарны зайг давтан ашигла.” үйлдлийг нарны зайн цэнэг 35 болтол давтан биелүүлнэ. Нарны цэнэг 35 нэгж буюу түүнээс бага ба хатуу түлшний хэмжээ 20 нэгжээс их тул дараах бүлэг үйлдлийг биелүүлнэ.
  • 7. 7 “Нарны зайг цэнэглэх” мэдээллийг Дэлхий-2 программд илгээ Хатуу түлшнээс 10 нэгжийг хэрэглэ Одоо хатуу түлшний хэмжээ 20 болсон. Нарны зайн цэнэгийг 50 нэгж болтол цэнэглэ Хатуу түлшний хэмжээ 20 нэгж буюу түүнээс бага болсон тул дараах бүлэг үйлдлийг биелүүлнэ. “Инерцээр явах” горимд оруулах мэдээллийг Дэлхий-2 программд илгээ Дэлхий-2-ыг инерцээр явах горимд шилжүүл Эндээс харахад зөв хариулт нь: b) Нарны зайг цэнэглэх, Нарны зайг цэнэглэх, Инерцээр явах горимд шилжүүлэх Баш нь сурагчид үгээр илэрхийлсэн хялбар алгоритмыг ажиллагааг судлах хугацаа өгч, түүнийг шинжлэх, үр дүнг тооцоолоход гаргаж буй алдааг нарийн тодорхойлсны үндсэн дээр алдааг залруулахад чиглэсэн зөвлөгөө, зааврыг өгч ажиллах хэрэгтэй. Ингэснээр алгоритмын аль хэсэгт ойлголтын алдаа гарсан (алдааны шинжилгээ) болохыг тодорхойлох боломжтой. Алгоритм, программчлалын бүлэг сэдвийг дээрх хэлбэрийн жишээ бодлогуудыг сурагчидтай хамтран бодох нь тэдэнд алгоритм сэтгэлгээний суурь мэдлэг, чадварт суралцахад ихээхэн хувь нэмэр болох юм. Мэдээлэл зүйн бодлого нь тодорхой шинж чанар бүхий оролтын болон завсрын өгөгдлүүд дээр тодорхой үйлдлийн дарааллыг гүйцэтгэн үр дүн гарган авахад зориулан тодорхойлогдсон байна. Энэ шинж чанар нь зарим талаараа математикийн бодлоготой төстэй боловч түүнээс ялгарах зарим нэг онцлог бий. Тухайлбал, Математикийн цөөнгүй бодлогод өгөгдөл нь тодорхой утга хэлбэрээр өгсөн байдаг. Жишээлбэл: “Батад 500 төгрөг байв. Зайрмаг 100, 200, 300 төгрөгийн үнэтэй бол Бат зайрмагуудаас хэчнээн янзаар худалдан авч чадах вэ?”. Харин мэдээлэл зүйн бодлогын өгөгдөл тодорхой шинж чанартай хэмжигдэхүүнээр өгдөг онцлогтой. Жишээлбэл, “Батад T төгрөг байв. Зайрмаг T1, T2, T3 төгрөгийн үнэтэй бол Бат зайрмагуудаас хэчнээн янзаар худалдан авч чадах вэ?”. Тиймээс мэдээлэл зүйн аливаа бодлогын шийдэл нь тухайн бодлогыг ямар нэгэн түвшинд ерөнхий тохиолдлын шийдэл байдаг гэж үзэж болно. Ийм учраас сурагчид хэмжигдэхүүн, өгөгдөл, хувьсагч, түүний төрөл, утга зэрэг суурь ухагдахууны мөн чанарыг ойлгоогүй бол алгоритм, программчлалын аливаа бодлогыг бодож чадахгүй байх үндэс болохыг багш анхаарах хэрэгтэй. Мэдээлэл зүйн бодлогын бас нэгэн онцлог нь суурь алгоритмын үндсэн аргуудыг ашиглан бодох, түүнчлэн динамик программчлал, хувааж эзэмших зэрэг нь компьютероор тооцоолох бодлогод илүү тохирсон аргууд бий болсон. Сургалтад хэрэглэх жишээ бодлого (Бебрас уралдааны 2015 оны бодлогоос авав): 1. Уралдаан Гүйлтийн гурван тамирчин саадтай гүйлтээр өрсөлдөж байгаа. Ноён Хүрэн уул руу өгсөх үед нэг тамирчны урд гардаг. Ноён Ягаан уулнаас уруудах үед нэг тамирчны урд гардаг. Ноён Ногоон уулан дээр (хадан дээр) гүйх үед нэг тамирчны урд гардаг.
  • 8. 8 Дээрх зурган дээр замыг үзүүлсэн: эхлээд уул руу өгсөөд дараа нь уулан дээгүүр гүйж, уулнаас буугаад дахиад хадан дээгүүр гүйнэ. Эхлээд Ноён Ягаан байгаа ба түүний ард Ноён Хүрэн болон Ноён Ногоон нар байрласан байна. Асуулт: Бариан дээр тамирчид ямар дарааллаар орж ирэх вэ? Хариулт: А. Ноён Ягаан, Ноён Хүрэн, Ноён Ногоон Б. Ноён Хүрэн, Ноён Ногоон, Ноён Ягаан В. Ноён Ногоон, Ноён Ягаан, Ноён Хүрэн Г. Ноён Хүрэн, Ноён Ягаан, Ноён Ногоон Д. Мэдэхгүй 2. Чулуун тоглоом Та минжтэй дараах тоглоомыг тоглож байгаа. Уг тоглоомыг тоглогчид чулуу авах ёстой. Үе бүрд тоглогч бүр 1, 2 эсвэл 3 ширхэг чулууг авч болно. Хамгийн сүүлийн чулууг авсан тоглогч хожно. Эхлээд 9 ширхэг чулуугаар тоглож байсан ба тоглолтын явцад эхний тоглогч хамгийн эхэнд 1 чулуу аваад дараа нь нөгөө тоглогч хэдийг ч авсан дандаа хожиж байгаа нь харагдсан. Одоо та минжтэй 15 ширхэг чулуугаар тоглох гэж байгаа. Асуулт: Та эхэлж чулуу авна. Хожихын тулд хэдэн чулуу авах хэрэгтэй вэ? Хариулт А. 1 Б. 2 В. 3 Г. Хожих арга байхгүй Д. Мэдэхгүй 3. Тагнуул Баасан гариг болгон зургаан тагнуулч долоо хоногийн турш цуглуулсан мэдээллээ солилцдог. Тагнуулч нэг зэрэг нэгээс олон тагнуулчтай уулзаж болохгүй. Иймд тэд хоёр хоёроороо ярилцдаг хэд хэдэн удаагийн уулзалтыг зохион байгуулдаг. Зургаан тагнуулчтай бүлгийн хувьд бүх нууцаа тараахын тулд дараах гурван уулзалт хангалттай: Уулзалтын өмнө тагнуулч бүр зөвхөн өөрийн өгөгдлийг л мэддэг (тагнуулч 1 “а”-г, тагнуулч 2 “b”-г гэх мэт). Эхний уулзалтаар 1 болон 2 хоорондоо ярилцаж өгөгдлөө солилцох тул дараа нь хоёулаа “ab”-г мэддэг болно. Доорх схем дээр уулзалт бүр дээр ямар тагнуулууд ярилцаж байгааг хэрчмээр үзүүлсэн. Мөн тагнуулуудын ямар өгөгдлийг мэдэж байгааг тэмдэглэсэн. Гурван уулзалтын дараа бүгд бүх өгөгдлийг мэдэх болно. Асуулт: Олон улсын асуудлаас болж нэг тагнуул уулзалтанд ирэхээ больсон. Үлдсэн таван тагнуулын хувьд бүх өгөгдлөө солилцохын тулд хэдэн уулзалт шаардлагатай вэ? Хариулт А. 2 Б. 3 В. 4 Г. 5 Д. Мэдэхгүй
  • 9. 9 4. Хайлтын мод Дугаарлагдсан картууд бүхий бүтэц (мод) өгөгдөв. Карт бүр дараах чанаруудтай: - Картууд дээрээ нүхтэй байх ба “эцэг” карт холбогдоно. - Мөн доороо өөр картын дээд нүхтэй утсаар холбож болох хоёр нүхтэй байна. Холбогдож байгаа картуудыг “хүү” гэнэ. - Карт дээр бүхэл тоо бичсэн байна Хэрэв карт дээр N гэсэн тоог бичсэн ба өөр нэг карттай зүүн утсаараа холбогдсон бол уг холбогдсон карт болон түүний бүх хүү дээр бичсэн тоо нь N-ээс бага байх ёстой. Хэрэв карт дээр N гэсэн тоог бичсэн ба өөр нэг карттай баруун утсаараа холбогдсон бол уг холбогдсон карт болон түүний бүх залгамжлагчид дээр бичсэн тоо нь N-ээс их байх ёстой. Асуулт: Зарим картуудад сул утаснууд байгаа. Модыг өргөтгөхийн тулд тэдгээрийн хэдэд нь карт нэмж болох вэ? Хариулт А. 9 Б. 11 В. 13 Г. 14 Д. Мэдэхгүй 5. Зорчигчдын хоорондын холбоо Петр, Жири, Вацлав нар хүмүүсийн хоорондын холбооны сэдвээр төсөл бичиж байгаа. Тиймээс тэд автобусаар зорчигчдын дунд судалгаа явуулж, харилцаа холбооны гурван төрлийг олжээ. Үүнд, ихрүүд (хоёр ихрүүд), найз нөхөд, нэг ангийнхан. Петр ихрүүдийг улаан шугамаар холбож, Жири найз нөхдийг хар цэгэн шугамаар холбож, харин Вацлав нэг ангийнхныг ногоон тасархай шугамаар холбосон байна. Багш нь тэдний зөвхөн нэг нь л холболтуудаа зөв хийсэн байна гэж хэлсэн. Асуулт: Аль төрлийг тодорхойлсон холболт нь зөв вэ? Хариулт А ихрүүд Б найз нөхөд В нэг ангийнхан Г Багшийн буруу. Нэгээс олон хүн ажлаа зөв хийсэн. Д мэдэхгүй 6. Харандааны тоглоом Бяцхан минжний зулзага зурахаас залхан хайрцагтай харандаагаар тоглохыг хүсжээ. Тоглоомын дүрэм нь: харандааг зүүнээс баруун тийш чиглэлд хайрцгаас нэг нэгээр авна. Харандаануудыг ээжийн болон аавын хайрцагт зүүнээс баруун тийш чиглэлд байрлуулна. Эхний харандааг ээжийн хайрцагт хийнэ. Дараагийн харандаа бүрийг ээжийн хайрцагт хамгийн сүүлд хийсэн харандаатай харьцуулна. Хэрэв сүүлийн харандаанаас богинохон бол ээжийн хайрцагт хийнэ үгүй бол аавын хайрцагт хийнэ.
  • 10. 10 Асуулт: Бүх харандаануудыг байрлуулсны дараа аавын хайрцаг ямар байдалтай байх вэ? Хариулт А Б В Г 1.2. Ерөнхий боловсролын кодчиллын агуулга ба программчлалын технологи Блок программчлалын жишээ: 21 дүгээр зууны иргэний бүтээлч болон тооцоолох сэтгэлгээний хөгжилд мэдээлэл зүй, түүн дотроо программчлалын мэдлэг, чадвар шийдвэрлэх үүрэгтэй болоод байна. Программчлал, түүнийг боловсруулах технологи улам бүр хялбар, бүтээмж өндөртэй болж, дижитал технологийн нийтлэг, өргөн хэрэглээний асуудлыг шийдвэрлэх гол хэрэгсэл боллоо. Тиймээс сурагчийн нас сэтгэхүйн онцлог, сонирхол хэрэгцээ, мэдлэг, чадварын түвшинд тохируулан тохирсон программчлалын технологийг сонгон эзэмшүүлэх боломж улам бүр нэмэгдэж байна. Энэ үүднээс хүүхдийн сэтгэн бодох, тооцоолох сэтгэлгээний хөгжлийг дэмжсэн хялбар блок суурьтай программчлалын технологи олноороо бүтээгдэж байна. Үүний тодорхой жишээ болгон АНУ-ын MIT-аас гаргасан Scratch, АНУ-ын Sacramento их сургуулиас гаргасан Flowgorithm, Martin C. Carlisle нарын бүтээсэн Raptor зэрэг блок суурьтай программчлалын технологиудыг дурдаж юм. Тухайлбал, Flowgorithm бол урсгалын блокт суурилсан программчлалын хэл эхлэн Сурагчдад зориулсан хэрэгсэл, чөлөөт программ юм. Программыг татаж авах хаяг: http://www.flowgorithm.org/download. хаягаас flowgorithm-ын жишээ, түүнийг ашиглах талаарх мэдээлэл (Англи хэл дээр)-ийг үзэж болно. Программчлалд анхлан суралцагч текст суурьтай программчлалын хэлийг сурахад команд, үйлдлүүдийг ойлгоход хүндрэлтэй байдаг бол Flowgorithm нь цөөн хэдэн блок дүрсүүдээр программчлах илүү хялбар боломжийг олгодог. Flowgorithm нь блок угсрах технологит суурилдаг учраас программчлалын үндсэн логикийг аль нэг программчлалын хэлний онцлогоос хамааралгүйгээр ойлгож ухаарахад илүү тус дөхөм болно. Мөн зохиосон программаа Flowgorithm дээрээ ажиллуулж болдог. Программын логикийг ойлгосон бол программчлалын нийтлэг хэлнүүдээс сурахад хялбар байх болно. Flowgorithm-ын онцлог:  Хувьсагч тодорхойлох. Программчлалын ихэнх хэлд хувьсагчийг зарлан тодорхойлж ашигладаг. Тиймээс сурагчид программчлалд суралцаж эхлэхдээ энэ талаар ойлгох зайлшгүй шаардлагатай бөгөөд Flowgorithm үүнд тус дэм болно.  Си ба Бэйсик бүлгийн программчлалын хэлний үйлдлүүдийг дэмждэг. Сурахыг хүсэж буй дээд түвшний хэлээс сонголт хийн нийтлэг үйлдлүүдийг ашиглаж болно.  Эхэндээ болон төгсгөлдөө нөхцөлтэй болон Параметрт давталт болон нэг хэмжээст массив зохион байгуулан ашиглах боломжтой.
  • 11. 11  Утга буцаах болон утга буцаадаггүй хэрэглэгчийн функцтэй.  Аюулгүй рекурсив. Flowgorithm компьютерын системийн биш харин дотоод стектэй байдаг. Төгсгөлгүй рекурсив дуудалт хийсэн ч алдааны мэдэгдэл өгөхөөс бус харин битүү циклд орохгүй.  Блок нь үйлдлийг илэрхийлэх түлхүүр үгтэй байдаг учраас анхлан сурагчдад хүндрэлтэй байдал үүсэхгүй. Хүүхдийг бүтээлч сэтгэлгээг дэмжсэн хялбар хэл: Түүнчлэн, Small Basic хэл нь программчлалын бэйсик хэлний бүлд багтах объект хандалтат хэл бөгөөд GNU лицензээр хөгжүүлэгддэг чөлөөт программ хангамж юм. http://www.microsoft.com/en-us/download/details.aspx?id=22961 хаягаар хандан татаж авч компьютертоо суулгана. Small basic хэл нь бэйсик хэлний бүлд ордог учраас хувьсагчийг зарлалгүй хэрэглэдэг. Хүснэгт 3-д ерөнхий боловсролд хэрэглэж буй программчлалын технологийн түлхүүр үйлдлүүдийг харьцуулан харууллаа. Хүснэгт 3. Программчлалын зарим технологийн нийтлэг үйлдлүүд Үйлдлийн тайлбар Технологиуд Flowgorithm Small Basic Cи Программыг ажиллуулах Run, F5 Run, F5 Run, F9 (F11) Программыг зогсоох End Program End Program Console цонхноос Ctrl+Break товчлуурыг дарна. Бичвэр хэвлэх textWindow.Write (“Sain uu?”) printf(“Sain uu?”); Хувьсагчид тоон утга өгөх too=42 int too=42; Гараас утга авч, хувьсагчид олгох, хэвлэх nas=textWodow.Read Number() textWindow.Write (“Bi “+age+” nastai.”) scanf(“%d”,&nas); printf(“Bi %d nastai.”,age) Хувьсагчийн утгыг нэмэгдүүлэх c=c+1 c= c+1; эсвэл c+=1; эсвэл c++; Нэмэгдүүлэх a=a+2 a=a+2; эсвэл a+=2; Хорогдуулах a=a-2 a=a-2; эсвэл a- =2;
  • 12. 12 Үржүүлэх a=a*2 a=a*2; эсвэл a*=2; Хуваах a=a/2 a=a/2; эсвэл a/=2; Тэнцүү юү? a=2 a==2 Бага уу? a<2 a<2 Их үү? a>2 a>2 NOT(үгүйсгэ л) логик үйлдэл not эсвэл ! Not ! OR (эсвэл) логик үйлдэл or эсвэл || Or || AND (ба) логик үйлдэл and эсвэл && And && Хэрвээ <нөхцөл> бол If (a=2) then textWindow.Write(“ Sain uu?”) endIf if (a==2) printf(“Sain uu?”); Хэрвээ <нөхцөл> бол бусад үед If (a=2) then textWindow.Write(“ Sain uu?”) else textWindow.Write(“ Bayartai”) endIf if (a==2) printf(“Sain uu?”); else printf(“Bayartai” ); Параметрт давталт for i=0 to 9 jump() endFor for (i=0; i<10;i++) jump(); Нөхцөлтэй давталт While r<>6 jump() endWhile while (r!=6) jump(); Төгсгөлгүй давталт зохион байгуулах While 1 jump() endWhile while (1) jump();
  • 13. 13 Түр хүлээлгэх Program.delay(2000 ) #include<stdlib.h > delay(2000); Санамсаргүй тоон үүсгүүр ашиглах r=Math.getRandomNu mber(6) #include<stdlib.h > r=rand()%6+1; Дэд программ a = 5 b = 8 niilber() textWindow.Write(c ) sub niilber c=a+b end sub int niilber(int a, int b){ return a+b;} int a=5, b=8, c; c=niilber(a, b); printf(“%d”, c); Шугаман массивт утга олгох for i=1 to n a[i]=2*i endFor int a[100]; for (i=0; i<n; i++) a[i]=2*(i+1); Шугаман массивыг хэвлэх for i=1 to n textWindow.Write(a [i]+” “) endFor for (i=0; i<n; i++) printf(“%d ”, a[i]); Массивын хамгийн их элементийг олох m=a[1] for i=2 to n if (m<a[i]) then m=a[i] endif endFor textWindow.Write(“ Ih: ”+a[i]) int m=a[0] for (i=1; i<n; i++) if (m<a[i]) m=a[i]; printf(“Ih:%d”, a[i]);
  • 14. 14 Тэмдэгт мөр хувьсагчид утга өгөх, хуулах mur=”program” mur1=mur #include <string.h> char mur[20], mur1[20]; strcpy(mur, ”program”); strcpy(mur1, mur); Тэмдэгт мөрийг харьцуулах if (mur=mur1) then textWindow.Write(“ tentsuu”) else textWindow.Write(“ yalgaatai”) endIf #include <string.h> if (strcmp(mur, mur1)==0) printf(“tentsuu”) ; else printf(“yalgaatai ”); Тэмдэгт мөрийг залгах mur=mur+mur1 #include <string.h> strcat(mur, mur1); Тэмдэгт мөрөөс тэмдэгт хайх хайх mur=”program” w = Text.IsSubText(mur , "m") If w="True" Then TextWindow.Write(" baina") Else TextWindow.Write(" baikhgui") EndIf char mur[]="program"; if (strchr(mur, 'r')!=0) printf("baina"); else printf("baihgui") ;
  • 15. 15 Тэмдэгт мөрөөс хайх - mur=”program” If (Text.IsSubText(mu r, “gra”)=True) then textWindow.Write(“ aguulna”) else textWindow.Write(“ aguulahgui”) endIf char mur[]="program"; if (strstr(mur, “gra”)!=0) printf(“aguulna”) ; else printf(“aguulahgu i”); Тэгш өнцөгт массивт утга олгох for i=1 to n for j=1 to m b[i][j]=i*j endFor endFor for (i=0; i<n; i++) for (j=0; j<n; j++) b[i][j]=(i+1)*(j* 1); Тэгш өнцөгт массивыг хэвлэх for i=1 to n for j=1 to m textWindow.Write(b [i][j]+” “) endFor textWindow.WriteLi ne(“”) endFor for (i=0; i<n; i++){ for (j=0; j<n; j++) printf(“%d ”, b[i][j]); printf(“n”); } Яст мэлхийн график - Turtle.PenDown() Turtle.Move(100) Turtle.TurnRight() Turtle.PenUp() -
  • 16. 16 Цаашид авч үзэж буй жишээг эдгээр технологийг ашиглан дүрслэн авч үзэх болно. 1.3. Сурагчийн алгоритм, программчлалын бодлого бодох чадварын хөгжлийн дэмжих арга зүйн асуудал Бодлогын алгоритм зохиох, түүнийг программчлах нь бүтээлч үйл ажиллагаа юм. Тиймээс алгоритм, программчлалын бодлого бодох нь системийн хөгжүүлэх амьдралын циклийн үндсэн үе шатын дагуу хийгддэг болохыг Хүснэгт 4-д тодруулан харууллаа. Хүснэгт 4. Системийг хөгжүүлэх амьдралын цикл ба мэдээлэл зүйн бодлого бодох нь Системийг хөгжүүлэх амьдралын циклийн үе шат Бодлого бодох үйл ажиллагаа Шинжилгээ Бодлогыг сайтар ойлгож, өгөгдсөн зүйл, олох зүйл буюу үр дүн юу байхыг тодорхойлох Зохиомж Бодлогын математик тавилыг тодорхойлж, математик загварыг гаргах, шийдвэрлэх арга замуудыг тодорхойлох Алгоритм, кодчилол Олсон бодолтоо нарийвчлах, түүнийг алгоритмчлах Системийн туршилт Алгоритмаа оролтыг өгөгдөл дээр биелүүлэн турших, үр дүнг тооцоолох Хэрэгжүүлэлт Оролтын өгөгдөлд хязгаарын болон онцгой тохиолдлыг тооцох, гарсан алдааг засварлах, алгоритмаа сайжруулах, бусад аргуудыг олж тогтоох Багш нь алгоритм, программчлалын аливаа бодлогыг бодох үйлийг системтэйгээр төлөвлөн гүйцэтгэх дадал хэвшлийг сурагчид багаасаа эзэмшихэд анхаарч багшлахуйн үйл ажиллагаагаа зохион байгуулах нь зүйтэй. Жишээ болгон алгоритм программчлалын бүлэг сэдэвт өргөн ашиглагддаг нэгэн бодлогыг дээрх алхмуудаар шинжилж харуулъя. Жишээ бодлого 4. Өгсөн бүхэл тоо анхны тоо мөн үү? Аливаа бодлогыг бодохын тулд сурагч нэг бүр бодлогын өгүүлбэртэй ажиллаж, бодлогыг нарийн нягт ойлгосон байх ёстой. Хэрэв өгүүлбэрээс нэг л зүйл ойлгоогүй бол бодлогыг бодож чадахгүй. Сурагч бодлогын өгүүлбэртэй ажиллаж сураагүйгээс түүнийг ойлгохыг хичээхгүй, түүнчлэн ухамсаргүйгээр бусдаас хуулах, өөрөө бодсон мэт дүр эсгэх зэргээр багшийг хуурах, аргалах арга барил нь улам гүнзгийрэх болно. Түүнчлэн интернэт дэх асар их нээлттэй кодыг хуулж үзүүлэх асуудал ч түгээмэл болж байна. Тиймээс сурагч бүр бодлогын өгүүлбэртэй нагт нямбай ажиллаж, түүнээс хэрэгцээтэй мэдээллээ олж тодорхойлох арга барилд суралцахад бүлэг сэдвийн эхнээс багш анхаарч арга зүйдээ төлөвлөж өгөх хэрэгтэй. Энэ бодлого нь 9 болон түүнээс дээш ангийн алгоритм программчлал бүлэг сэдвийн “Давталт” сэдвийн жишээ болгон авч үзэж болно. Бодлогын өгүүлбэртэй сурагчдыг танилцуулсны дараа ярилцахдаа багш дараах ойлголт ухагдахуунд анхаарлаа хандуулж тэдэнтэй сайтар ярилцаж, нэмэлт тайлбарыг өгөх нь зүйтэй. - Сурагчид бүхэл тоо (бүхэл тоон хэмжигдэхүүн)-ы талаар тодруулан жишээгээр ярилцах. Жишээлбэл: 5 ба 5.0 бүхэл тоо юу?
  • 17. 17 - Бүхэл тоон хэмжигдэхүүн нь компьютерт дүрслэгдэхдээ int, integer, long төрөлтэй байх ба эдгээр нь ялгаатай хэмжээтэй бүхэл тоог тодорхойлдог болохыг санах ойн үүр (бит, байт, үг, давхар үг), түүний дүрслэлтэй холбоотойгоор тодруулан сануулж ярилцаж болно (тоог 2 суурьтай тооллын систем дүрслэх талаар сануулах, цаашилбал бүхэл, бодит тоог 2, 8 ба 16 суурьтай тооллын системд, эдгээр суурьтай тооллын системийн тоог буцааж 10 суурьтай тооны системд дүрслэх, шилжүүлэх алгоритмын талаар жишээ бодлогод авч үзсэн. Хэрэв сурагчид хүлээж авч чадахаар бол тэдгээр бодлогыг уг сэдэвтэй холбон ашиглаж болно). - Бүхэл тоон дотор анхны тоо гэж ямар шинж чанартай тоо вэ? гэдгийг тодруулан ярилцах. 11 ба 123 анхны тоо мөн үү? 111 нь анхны тоо биш: 123=3*41. - Анхны тоог тодорхойлох (1 болон өөртөө хуваагддаг тоог анхны тоо гэнэ), шинж чанарыг жишээгээр тайлбарлах. - 1 анхны тоо мөн үү гэдгийг ярилцах. Нийтээрээ “1 анхны тоо биш” гэсэн дүгнэлтэд хүрвэл маш сайн (Анхны тооны шинжээр үзэхэд 1 нь ганц хуваагчтай учраас анхны тоо биш). - 2 анхны тоо мөн үү гэдгийг ярилцах. Нийтээрээ “2 анхны тоо мөн” гэсэн дүгнэлтэд хүрвэл маш сайн (Анхны тооны шинжээр үзэхэд 2 нь 1 ба өөртөө хуваагдаж буй учраас анхны тоо болно). - 2 нь цор ганц тэгш анхны тоо гэдгийг тордуулан ярилцах. Нарийндаа 2 нь анхны тооны хязгаарын тохиолдол бөгөөд анхны тоо тодорхойлох алгоритмд 2 нь маш чухал үүрэгтэй байдаг учраас багш энэ талаар ийм төрлийн бодлогын жишээг авахдаа тэднийг ойлготол давтан тайлбарлаж өгч байх нь зүйтэй. - Мөн 0 анхны тоо мөн үү гэж ярилцаж болно. Гэхдээ сурагчид математикийн хичээлээр 0-ийг 0-д хуваах (zero divide zero) талаар үзээгүй, суурь ойлголтгүй бол энэ талаар ярилцах хэрэггүй. Хүснэгт 5. Жишээ бодлого 4-ийг шинжилсэн нь Шинжлэх Бодлогын оролт: n бүхэл тоо. Гаралт: “Мөн” эсвэл “Биш” Бодолт (сурагчдын гаргаж болох зарим нэг санаа): Бодолт 1. “n тоог 1-ээс n хүртэлх бүх тоонд хувааж үзэхэд хуваагчийн тоо 2 (1 ба өөртөө хуваагдсан) бол тэр тоо анхны тоо” Бодолт 2. “n тоог 2-оос n-1 хүртэлх бүх тоонд хувааж үзэхэд тэдгээрийн нэгэнд нь ч хуваагдахгүй бол тэр тоо анхны тоо” Бодолт 3. “n тоог 2- оос n тооноос квадрат язгуур гаргасан тооны бүхэл хэсэг хүртэлх бүх тоонд хувааж үзэхэд тэдгээрийн нэгэнд нь ч хуваагдахгүй бол тэр тоо анхны тоо”, ... Алгоритм, программ зохиох Тодорхойлсон аргуудын алгоритмыг зохиох: Бодолт 1, Бодолт 2, Бодолт 3-ын алгоритм, программ Бодолтыг сайжруулах Бодолт 1, Бодолт 2 болон Бодолт 3-ыг харьцуулан ярилцах, давталтын тоог тооцоолох Тестлэх, турших 1, 2 болон бусад өгөгдлүүдийг өгч алгоритм, программыг турших, оролтын өгөгдөлтэй уялдуулан үр дүнг тайлбарлан ярилцах Бусад анхны болон зохиомол тоон өгөгдөл өгч алгоритм, программыг турших Хүснэгт 6. Жишээ бодлого 4-ийн код (Си, Small Basic, Flowgorithm) Бодолт 1: n тоог 1-ээс n хүртэлх бүх тоонд хувааж үзэхэд хуваагчийн тоо 2 (1 ба өөртөө хуваагдсан) бол тэр тоо нь анхны тоо болно.
  • 18. 18 n=TextWindow.ReadLine() anh1() TextWindow.WriteLine ("Anh: "+r) sub anh1 too=0 For i=1 To n q=math.Remainder(n,i) If q=0 Then too=too+1 EndIf EndFor If too=2 Then r=1 Else r=0 EndIf EndSub #include <stdio.h> #include <math.h> int anh1(int n){ int i=1, r, too=0; for (; i<=n; i++) if (n%i==0) too++; if (too==2) r=1; else r=0; return r; } main(){ int n; scanf(“%d”, &n); printf("Alg1: %dn", anh1(n)); } Бодолт 2: k тоог 2-оос n-1 хүртэлх бүх тоонд хувааж үзэхэд тэдгээрийн нэгэнд нь ч хуваагдахгүй бол тэр тоо анхны тоо болно.
  • 19. 19 n=TextWindow.ReadLine() anh2() TextWindow.WriteLine("Anh: "+r) sub anh2 too=0 For i=2 To n-1 q=math.Remainder(n,i) If q=0 Then too=too+1 EndIf EndFor If too=0 Then r=1 Else r=0 EndIf EndSub #include <stdio.h> #include <math.h> int anh2(int n){ int i, r, too=0; for (i=2; i<n; i++) if (n%i==0) too++; if (too==0) r=1; else r=0; return r; } main(){ int n; scanf(“%d”, &n); printf("Alg2: %dn",anh2(n)); } Бодолт 3: n тоог 2-оос n тооноос квадрат язгуур гаргасан тооны бүхэл хэсэг хүртэлх бүх тоонд хувааж үзэхэд тэдгээрийн нэгэнд нь ч хуваагдахгүй бол тэр нь тоо анхны тоо болно.
  • 20. 20 n=TextWindow.ReadLine() anh3() TextWindow.WriteLine("Anh: "+r) sub anh3 too=0 For i=2 To math.SquareRoot(n) q=math.Remainder(n,i) If q=0 Then too=too+1 EndIf EndFor If too=0 Then r=1 Else r=0 EndIf EndSub #include <stdio.h> #include <math.h> int anh3(int n){ int i, r, too=0; for (i=2; i<=sqrt(n); i++) if (n%i==0) too++; if (too==0) r=1; else r=0; return r; } main(){ int n; scanf(“%d”, &n); printf("Alg3: %dn",anh3(n)); } Бодлогын алгоритмуудыг n-ийн өгсөн утга дээр биелүүлж, алгоритмуудын ялгаа (тухайлбал, давталтын тоог харьцуулах зэргээр)-г сурагчид сайтар ойлгоход дараах хэлбэрийн хүснэгтийг боловсруулан ажиллаж болно (Хүснэгт 7). Үүнийг алгоритмын биелэлтийн хүснэгт гэх ба бодлого бүрийн хувьд өөр хэлбэртэйгээр боловсруулан ашиглана. Хүснэгт 7. Бодлогын алгоритмыг оролтыг тодорхой өгөгдөл дээр ажиллуулж турших жишээ Оролт n=6 Хуваагчийн тоо: too=0 Бодолт 1: Бодолт 2: Бодолт 3: i n тоо i-д хуваагдах уу? too i n тоо i-д хуваагдах уу? too i n тоо i-д хуваагдах уу? too 1 Тийм 1 2 Тийм 1 2 тийм 1
  • 21. 21 2 Тийм 2 3 Тийм 2 3 3 Тийм 3 4 Үгүй 2 Хэвлэх: Биш 4 Үгүй 3 5 Үгүй 2 5 Үгүй 3 6 6 Тийм 4 Хэвлэх: Биш 7 Хэвлэх: Биш Давталтыг 6 удаа хийсэн Давталтыг 4 удаа хийсэн Давталтыг 2 удаа хийсэн Алгоритм, программчлалын бүлэг сэдвийг заахдаа багш дараах дидактик үе шатуудад анхаарлаа хандуулж, сурагчдад бодлого бодох зөв дадал хэвшил, соёл хэвшүүлэхэд анхаарлаа хандуулах нь зүйтэй. Үүнд: • Бодлогын өгүүлбэрийг ойлгон шинжилж, бодлогын өгөгдөл (оролт), гаралт буюу үр дүн юу байхыг тодорхойлох; • Шинжилгээний үндсэн дээр бодлогыг бодох тойм төлөвлөгөөг гаргах; • Төлөвлөгөөний дагуу алгоритмыг бичих; • Алгоритмынхаа ажиллагааг шалгах буюу оролтын тодорхой өгөгдөл дээр биелүүлж, үр дүнг тооцоолох, түүнийгээ оролтын өгөгдөлтэй уялдуулан тайлбарлах; • Алгоритмаа сайжруулах, уг бодлогыг бодох өөр арга, алгоритм байгаа эсэхийг судлах Эдгээр дидактик үе шат нь сурагч нэг бүр алгоритм, программчлалыг ашиглан амьдрал болон хэрэглээний асуудлаа шийдвэрлэх суурь мэдлэг, чадварт амжилттай суралцахад ихээхэн чухал. Үе шат бүрээр сурагчийн эзэмших мэдлэг, чадварыг авч үзэж буй жишээ, бодлоготой холбоотойгоор нарийн төлөвлөн хэрэгжүүлэх мэдлэг, чадварт эртнээс суралцахад багш нар анхаарах хэрэгтэй. Алгоритмыг зөв зохиох мэдлэг, чадварт суралцсан бол түүнийг программчлалын хэлд хөрвүүлэх нь дүрслэлийг хувиргах асуудал болдог. Тиймээс алгоритмыг ухамсартайгаар сэтгэн, түүнийг амжилттай зохиож сурсан сурагчдад алгоритмыг программчлалын хэлд хөрвүүлэх нь тийм ч хүнд ажил биш болно. Түүнчлэн мэдээлэл зүйн бодлого нь бодит амьдралын асуудал (оролтын тодорхой өгөгдлүүд дээр тэдгээрийг боловсруулах ямар нэг үйлдлийн дарааллыг хийж, үр дүнг гарган авах)-ыг шийдвэрлэх хэлбэртэйгээр тавигддаг. Тиймээс мэдээлэл зүйн бодлогыг бодно гэдэг нь - Бодлогыг өгүүлбэрийг сайтар ойлгосны үндсэн дээр түүнийг шийдвэрлэх математик загварчлалыг бүтээх асуудал болно. Үүнийг бодлогын математик загварчлал гэдэг. - Гаргасан математик загварчлалын үндсэн дээр бодлогыг шийдвэрлэнэ (алгоритм эсвэл программ зохиох зэргээр). - Энэхүү шийдэл нь анхны өгсөн бодит амьдралын асуудлын шийдэл болох учраас бодлого бодогдлоо гэсэн үг юм. Мэдээлэл зүйн бодлогын онцлогийг дүрсэлсэн бүдүүвчийг Зураг 1-д үзүүллээ.
  • 22. 22 Зураг 1. Мэдээлэл зүйн бодлогыг шийдвэрлэх нь Мэдээлэл зүйн бодлогыг шийдвэрлэх дидактик алхмыг хялбар жишээ бодлогоор тодруулан авч үзье (Хүснэгт 8). Хүснэгт 8. Мэдээлэл зүйн бодлого бодох жишээ Алгоритмыг хэрэгжүүлэх алхмууд Бодлогын алхмууд Бодит объект дахь бодлогын тавил Амарынх загас тэжээдэг. Тэрээр загасныхаа аквариумыг a урт, b өргөн, c өндөртэй болгон шинэчлэхээр болжээ. Шинэ аквариумд хэчнээн хэмжээний ус орох вэ? Математик объект дахь бодлогын томьёолол a, b тэгш өнцөгт суурь c өндөртэй тэгш өнцөгт праллелепепидийн эзлэхүүнийг олох Оролт: a, b, c Гаралт: v Математик объект дахь бодолт тэгш өнцөгт параллелепепидийн эзлэхүүн: v=a*b*c Бодолтын бодит объект дахь бодолт, тайлбар a урт, b өргөн, c өндөртэй тэгш өнцөгт праллелепепидийн эзлэхүүн нь v=a*b*c байх ба Амарын шинэ аквариумын усны хэмжээ болно. 1.4. Алгоритм, программчлал заах арга зүйн асуудал Энд алгоритм зохиоход өргөн хэрэглэдэг нэгэн аргыг авч үзье. Энэхүү арга нь программыг хөгжүүлэх дээрээс доош аргын санаад суурилаг сургалтад учраас ойлгож хэрэгжүүлэх нь нэг талаас сурагчид аливаа программ, системийг бүтээх ерөнхий арга зүйд эртнээс суралцахад ихээхэн ач холбогдолтой болохыг багш нар ухаарч сургалтдаа бүтээлчээр хэрэгжүүлэх хэрэгтэй. Шинээр алгоритм зохиох нь тийм ч хялбар асуудал биш юм. Ялангуяа шинээр суралцагчдад хүндрэлтэй асуудалтай цөөнгүй тулгардаг. Алгоритм зохиогчдын хөдөлмөрийг хөнгөвчилсөн нэлээд хэдэн арга, санаа бий болсон байдгийн нэг нь алгоритмыг үндсэн үйлдэл хүртэл нарийвчлан задалж байгуулах явдал юм. Тодруулбал, алгоритмыг гүйцэтгэгчийн командыг системээр бичих хүртэл нарийвчлан задалж бэлтгэнэ. Ингэхдээ алгоритмын анхны схемийг гүйцэтгэгчийн командын системээр биш “ерөнхий” хэлбэрээр бичсэн байж болно. Өөрөөр хэлбэл, нэлээд төвөгтэй бодлогыг эхлээд хялбар бие даасан дэд бодлогуудад хувааж, мөн тэдгээр дэд бодлогуудаа бүр энгийн хэсгүүдэд задлан нарийвчлах замаар үргэлжлүүлнэ (Зураг 2). Энэ зарчмыг алгоритм, программчлалд шатлан нарийвчлах арга гэдэг. Бодит объект дахь бодлогын тавил Бодит объект дахь бодлогын шийдэл Математик объект дахь бодлогын тавил Математик объект дахь бодлогын бодолт Загварчлал Тайлбарлал
  • 23. 23 Зураг 2. Бодлогыг нарийвчлан задлах бүдүүвч Шатлан нарийвчлах энэ арга нь сурагчид аливаа асуудлыг тулгуур жижиг хэсгүүдэд хуваан шийдвэрлэх чадварт суралцахад ихээхэн ач холбогдолтой байдаг. Төрөл бүрийн салбарын судалгаа шинжилгээний ажилд энэ аргыг ерөнхий зарчмыг олонтоо хэрэглэдэг. Шинжилгээ судалгаа гүйцэтгэгч хүн судалж буй зүйлийнхээ гаднах холбоог нь олж тогтоогоод мэдэхгүй байгаа зүй тогтлыг бие даасан тусгай хэсгүүдэд хувааж, улмаар хэсэг бүрийн гүн уруу мөн энэ аргаар нэвтэрнэ. Уг зарчим нь өмнөх алхмуудад эргэх холбоотой байх боломжийг олгоно. Өөрөөр хэлбэл, биеэ даасан хэсгүүдийг нь нарийвчлан задалж дууссаны дараагаар уг бодлогыг задлах үед олж тогтоосон гаднах бүх холбооных нь үндсэн дээр жижиг хэсгүүдийг нь нэгтгэх замаар нэг бүтэн алгоритм болгон эмхэлдэг. Тухайлбал, бүхэл илтгэгчтэй зэргийн утгыг олох алгебрын бодлогын жишээн дээр шатлан нарийвчлах аргыг тодруулан авч үзье. Энэ жишээг авч үзэхийн өмнө тооны бүхэлд зэрэг, түүний чанартай холбоотой дараах хялбар бодлогыг авч үзэх нь зүйтэй. а. a хувьсагчийн утгыг дараах хүснэгтэд өгсөн. Хэрэв у=1 бол у=у*а команд 1 удаа, 2 удаа, 5 удаа тус тус биелэгдсэний дараа у ямар утгатай болох вэ? y=y*a; командыг биелүүлсэн тоо 1 2 4 5 a=2; y=1; a=-3; y=1; a=5; y=1; б. y=a бол у=у*а команд 1 удаа, 2 удаа, 5 удаа тус тус биелэгдсэний дараа у ямар утгатай болох вэ? y=y*a; командыг биелүүлсэн тоо 1 2 4 5 a=2; y=a; a=-3; y=a; a=5; y=a; в. Дараах үйлдлүүдийг хийе. a=7; y=a; a=8; Тэгвэл y хувьсагчийн утга хэд вэ? Арга зүйн зөвлөмж: Зөв хариулт 7 боловч сурагчид 8 гэсэн алдааг гаргах явдал байдаг байна. Тиймээс “эхний y=a; үйлдэл нь a=8 гэсэн үйлдлээс өмнө хийгдэж байгаа учраас y нь a-гийн хуучин утга болох 7 утгыг авах болно. Харин үүний дараа a-ийн шинэ утга 8-ыг y хувьсагч авна” гэдгийг сайтар тайлбарлан ярилцах хэрэгтэй. г. Дараах үйлдлүүдийг хийе. Үйлдэл k1 Үйлдэл k2 Үйлдэл t1 Үйлдэл t2 Үйлдэл t3 1-р дэд бодлого 2-р дэд бодлого Бодлого
  • 24. 24 a=7; y=a; a=8; y=y*a; Тэгвэл y хувьсагчийн утга хэд вэ? Арга зүйн зөвлөмж: Үүнийг сурагчид ойлгоход нэлээд хүнд байдаг байна. Тухайлбал, өмнөх асуултад 8 гэж хариулсан бол 64 гэсэн алдаатай хариулт цөөнгүй гарна. Тиймээс мөн л y нь 7 утгатай байх ба түүнийг a-ийн утга болох 8-аар үржүүлснээр 56 болох талаар ярилцах хэрэгтэй. Дээрх жишээнүүдийг ярилцсанаар ЗЭРЭГ туслах алгоритмын гол санааг дараах байдлаар тайлбарлан авч үзэх нь зүйтэй. Дээрх жишээнээс: 1 дүгээр алхамд y=a; 2 дугаар алхамд y=y*a; гэдэг нь y=a*a=a2 ; 3 дугаар алхамд y=y*a; гэдэг нь y=a2 *a=a3 4 дүгээр алхамд y=y*a; гэдэг нь y=a3 *a=a4 …. n дүгээр алхамд y=y*a; гэдэг нь y=an-1 *a=an болохыг олж харж дүгнэх нь ихээхэн чухал явдал юм. Энд үйлдэлд оролцож буй y нь өмнө авсан утгаа хадгалж байдаг (тухайн санах ойн үүрэнд одоо хадгалагдаж буй утга) болохыг сурагчид ойлгосон байх нь хамгийн чухал. Энэ үйлдэл нь сурагчид ойлгоход нэлээд хүндрэлтэй байдаг байна. Тиймээс уг үйлдлийн онцлогийг сургагч нэг бүрд ойлгуулах нь багшлахуйн арга зүйн чухал асуудал юм. Бүхэл илтгэгчтэй зэргийг тооцоолох бодлогыг шатлан нарийвчлах аргаар авч үзвэл “Өмнөх үйлдлийн үр дүнг a тоогоор үржүүлэх гэсэн хялбар үйлдлээр аливаа тооны бүхэл зэргийг гарган авна” гэсэн дидактик санаанд үндэслэж байна. Өөрөөр хэлбэл, үржүүлэх үйлдлийг алгоритмын цаашид үл задрах хэсэг болгон авснаар бодлогыг шийдэж байна. Дээрх дэд бодлогууд дахь асуудлыг ярилцаж, мөн чанарыг сурагчид ойлгосноор zereg туслах алгоритмыг ойлгоход хялбар байх болно. Zereg туслах алгоритмаа ашиглан дурын тооны бүхэл тоон зэргийг бодох алгоритмыг бүхэлд нь авч үзнэ. Бүхэл илтгэгчтэй зэргийг бодох алгоритмыг авч үзсэнээр: - Үндсэн ба туслах алгоритмын хоорондын холбоо - Үл хамаарах хэсгийн талаар ойлгох чухал суурь болно.
  • 25. 25 Хүснэгт 9. Туслах алгоритм ашиглах жишээ Блок схем (Scratch) C Python int zereg(int a, int n){ int i, y=a; for (i=0; i<n; i++) y=y*a; return y;} main(){ int a=4, n=5, y; y=zereg(a, n); printf(“%d”, y); ...} def zereg(a, n): y=a for i in range(1,n): y = y * a return y a=5 n=3 y = zereg(a, n) print("Zereg: "+str(y)) Функцийг дуудах нь zereg ( 𝒂, 𝒏 ) хэлбэртэй байна. zereg алгоритм нь хийсвэр параметрүүд нь 𝜶, 𝒏 хувьсагч юм. Үндсэн алгоритм нь энэ алгоритмыг дуудахад эдгээр хийсвэр параметрт тодорхой утга дамжуулж байгааг тайлбарлан ярилцана. Жишээ нь: y = zereg (𝟐, 𝟓) гэвэл 𝜶 хувьсагчид 2, 𝒏 хувьсагчид 5 гэсэн утга дамжих болно. y нь zereg дэд алгоритмын буцаасан утгыг хадгалж буй хувьсагч бөгөөд туслах алгоритмыг дуудах үед үндсэн алгоритмд хэрэглэж байгааг сурагчид ойлгох нь ихээхэн чухал юм. Зэрэг алгоритмыг Scratch, Си, Python хэлээр хэрэгжүүлснийг Хүснэгт 9-д үзүүллээ. 1.5. Сурагчийн тооцоолох сэтгэлгээний хөгжлийг дэмжих нь Мэдээлэл зүйн технологиор аливаа бодлогыг бодох, асуудлыг шийдвэрлэх олон арга бий. Сурагчийн бодлого бодсон аргыг нарийн шинжлэн үзэж, бодолт шийдлийн талаар ярилцах, өөр бодолтуудтай харьцуулах нь тэдний тооцоолох, асуудал шийдвэрлэх сэтгэлгээг хөгжүүлэхэд ихээхэн чухал. Тухайлбал, дараах хялбар жишээг авч үзье. Жишээ бодлого 5. a, b талтай тэгш өнцөгт гурвалжны талбайг олох Энэ бодлогын багахан ялгаатай гурван бодолтыг Хүснэгт 10-д үзүүллээ. Бодолтуудыг дидактикийн хувьд шинжилж үзвэл: 1 дүгээр бодолт: Талбай олох томьёо дахь үржих, хуваах үйлдлүүд ижил эрэмбийн үйлдлүүд учраас тэдгээрийн байрыг сольж болно гэсэн дүрмийг санавал энэ бодолт зөв юм. Хуваах үйлдлийг эхэлж хийснээр a тоог 2 дахин багасаж байна. Тиймээс энэхүү бодолт нь a, b тоонуудын үржвэр төрлийн хязгаараас давахаас сэргийлэх сайн арга болж өгнө. Гэхдээ a сондгой бол түүнийг 2-т хувааснаар үр дүнг алдаад хүрч болзошгүй болохыг анхаарч үзвэл зохино. 2 дугаар бодолт: Тэгш өнцөгт гурвалжны талбай олох математик томьёог шууд ашигласан бодолт. Энэ арга нь өмнөх аргаас дутагдалтай тал нь хоёр хувьсагчийн үржвэр төрлийн хязгаараас давсан үед алдаа гарах явдал гарч болно. 3 дугаар бодолт: Дурын гурвалжны талбайг олох шийдэл буюу гурвалжны талбайг олох ерөнхий алгоритм юм. Энэ аргаар бодсон сурагч нь гурвалжны талаар нэлээд сайн мэдлэгтэй байгаагаа
  • 26. 26 харуулж байна. Гэхдээ бодолтод хоёр удаа квадрат язгуур гаргах үйлдлийг ашиглаж байгаа учраас тооцооллын үр дүнд нь ойролцоогоор тооцоологдох ба энэ бодолтод нарийвчлалын алдаа гарах боломж хамгийн өндөр байх болно. Эдгээр аргууд нь өөрийн гэсэн давуу болон сул талтай байгааг дээрх тайлбараас харж болно. Хүснэгт 10. Жишээ бодлого 5-ын гурван өөр бодолт #include <stdio.h> #include <math.h> main(){ int a=3, b=4, s; s=b/2*a; printf("s= %dn", s); } #include <stdio.h> #include <math.h> main(){ int a=3, b=4, s; s=(a*b)/2; printf("s= %dn", s); } #include <stdio.h> #include <math.h> main(){ int a=3, b=4, c, p, s; c=sqrt(a*a+b*b); p=(a+b+c)/2; s=sqrt(p*(p-a)*(p-b)*(p-c)); printf("s= %dn", s); } a = 3 b = 4 s = (a/2)*b TextWindow.WriteLine(s) a = 3 b = 4 s = (a*b)/2 TextWindow.WriteLine(s) a = 3 b = 4 c = Math.SquareRoot(a*a+b*b) p = (a+b+c)/2 s = Math.SquareRoot(p*(p-a)*(p-b)*(p-c)) TextWindow.WriteLine(s) Үр дүн: 6.0 6.0 6.0 Жишээ бодлого 6: 1-ээс n хүртэлх тэгш тоонуудын нийлбэрийг олно уу.
  • 27. 27 Энэ бодлогын багш нарын тоолуурт давталтын жишээ болгон авч үзэх нь түгээмэл байдаг. Учир нь “тоолуурын анхны утга (1) болон төгсөх утга (n) тодорхой, алхам (2) тодорхой” байдаг учраас тоолуурт давталтын шинж чанарт нэлээд сайн нийцдэг. Энэ бодлогын дараах гурван түгээмэл бодолтыг сурагчид гаргаж магадгүй. Үүнд: Бодолт 1. Тоолуурт давталтад i тоолуурын утгыг 1-ээс n хүртэл давтаж, хэрэв i тоо тэгш буюу 2-т хуваагдаж байвал i тоолуурын утгаар нийлбэр болох s-ийн утгыг нэмэгдүүлнэ. Үр дүн нь s болно. Бодолт 2. 0 биш эхний тэгш тоо 2 учраас тоолуурт давталтад i тоолуурын утгыг 2-оос n хүртэл давтаж, давталтын алхмыг 2-оор нэмэгдүүлж, i тоолуурын утгаар s-ийн утгыг нэмэгдүүлнэ. Үр дүн нь s болно. Бодолт 3. 1-ээс n хүртэлх тэгш тоо: 2, 4, 6, ... [n/2] Энд [n/2] гэдэг нь n тоог 2-т хуваасны бүхэл хэсгийг тэмдэглэнэ. Тодруулбал, бодлогод n=10 гэвэл 2, 4, 6, 7, 8, 10 гэсэн 5 тэгш тоо байна. Энэ нь сурагчдын математикийн хичээлээр үзсэн арифметик прогресс байгааг авьяастай сурагчид харж чадна. Тодруулбал: - Анхны гишүүн нь 2 - Ялгавар нь 2 - Гишүүний тоо: 5 сурагчид гэж харснаар арифметик прогрессын эхний n гишүүний нийлбэрийг олох томьёогоор уг бодлогыг шийдэж чадна. Давталт шаардлагагүй. Энд давталт ашиглалгүй бодсон 3 дугаар бодолтыг давталт ашиглаагүй хэмээн үгүйсгэж ерөөсөө болохгүй. Магадгүй энэ бодолт хамгийн сайн бодолт ч байж болох юм. Хүснэгт 11-д энэхүү бодлогын бодолтыг харууллаа. Хүснэгт 11. Жишээ бодлого 6-ийн гурван өөр бодолт s = 0 TextWindow.ReadLine(n) for i=1 To n u = Math.Remainder(i, 2) If u=0 Then s = s + i EndIf EndFor TextWindow.WriteLine(s) #include <stdio.h> #include <math.h> main(){ int i, n, s=0; scanf("%d", &n);
  • 28. 28 for (i=1; i<=n; i++) if (i%2==0) s=s+i; printf("s= %dn", s); } s = 0 TextWindow.ReadLine(n) for i=2 To n Step 2 s = s + i EndFor TextWindow.WriteLine(s) #include <stdio.h> #include <math.h> main(){ int i, n, s=0; scanf("%d", &n); for (i=2; i<=n; i+=2){ s=s+i; } printf("s= %dn", s); } a1 = 2 d = 2 TextWindow.ReadLine(n) m = n/2 s = ((2*a1 + (m-1)*d)/2)*m TextWindow.WriteLine(s) #include <stdio.h> #include <math.h> main(){ int a1, d, i, m, n, s=0; scanf("%d", &n); a1=2; d=2; m=n/2; s =((2*a1 + (m-1)*d)/2)*m;
  • 29. 29 printf("s= %dn", s); } Дээрх алгоритмд n=10 бол үр дүн нь 30 байна. Дээрх бодолтуудыг дидактикийн хувьд харьцуулан шинжилж үзвэл: 1 дүгээр бодолт: Энэ бодолт нь давталтыг 1 алхамтайгаар авч, давталт дотор i-ийн утгыг 2-т хувааж, үлдэгдэл 0 буюу тэгш тоо мөн эсэхийг шалгаж, тийм бол нийлбэрийг авч байна. Энэ нь хэдийгээр зөв бодолт боловч давталтын тоог цөөрүүлэх боломжийг авч үзээгүйгээрээ 2 дугаар бодолтоосоо дутагдалтай юм. Энэ аргаар бодсон сурагч нь параметрт давталт болоод тооны хуваагдах шинжийн талаар сайн ойлголттой гэж үзэж болно. Харин параметрт давталтын давуу тал, алхам нь 1-ээс ялгаатай байж болдог талаар сануулж ярилцсанаар бодлогыг илүү сайн аргаар бодож болохыг сурагчид төвөггүй ойлгох болно. 2 дугаар бодолт: Энэ бодолт нь параметрт давталтын давуу тал, боломжийг маш сайн ойлгосон сурагч байна. Тиймээс шаардлагатай бол бодолтыг бусад нөхдөд нь тайлбарлуулж, ярилцсанаар бусад хараахан ойлгоогүй байгаа сурагчид ойлгож авахад тус нэмэр болж болох юм. 3 дугаар бодолт: Энэ бодолт бол уг бодлогыг давталт ашиглахгүйгээр математикт үзсэн аргаараа шийдвэрлэж болохыг харуулсан нэлээд сайн жишээ юм. Хэрэв сурагч энэ аргаар бодсон бол урамшуулах нь зүйтэй. 1-ээс n хүртэлх тэгш тооны нийлбэрийг олох энэ бодлогыг математикийн хичээлээр үзсэн арифметик прогрессын эхний хэдэн гишүүний нийлбэр болохыг олж харснаар энэ бодолтыг хийсэн байна. 1-ээс 10 хүртэлх тэгш тоо: 2 4 6 8 10 Эндээс анхны гишүүн: a1=2 Ялгавар: d=2 Гишүүдийн тоо (m гэе): n=10 учраас m=10/2=5 Эндээс энэ арифметик прогрессын эхний m гишүүний нийлбэрийн томьёог бичвэл: 𝒔 = (𝟐𝒂𝟏 + (𝒎 − 𝟏)𝒅)𝒎 𝟐 гэсэн томьёогоор тэгш тоонуудын нийлбэрийг тодорхойлж байна. Энэ бодолт нь өмнөх хоёр бодолтоос ажиллах хугацаа хамгаагүй бага байх болно. Бие дааж бодох бодлогын санаа: - N элементтэй шугаман массивын o тэгш/сондгой тоог хэвлэх o тэгш/сондгой тооны нийлбэр o тэгш/сондгой тооны үржвэр Жишээ бодлого 7: Хөгжөөнт паркийн хураамж 12-оос бага бага насны хүүхдэд 30, 12-оос 60 хүртэлх насны хүмүүс 60, харин 60-аас дээш насны хүмүүс 20 нэгж өртгийн хураамжтай бол насны мэдээллээс хамааруулан хураамжийн хэмжээг тодорхойлох алгоритм зохионо уу. Бодлогын гурван өөр бодолтыг Хүснэгт 12-т авч үзлээ. Бодолтын дидактик харьцуулалт, шинжилгээ:
  • 30. 30 Сурагч Д-ийн бодолт: Бүх нөхцөлийг шалгасан. Ийм бодолтыг шулуун бодолт гэж болох ба нэг нөхцөлийг шалгаж дууссаны дараа нөгөө нөхцөлийг шалгаж байна. Иймээс энэ алгоритмд ELSE байхгүй байна. Сурагч Б-ийн бодолт: Энэ бодолтын логик нь хүний бодол санаатай илүү нийцтэй. Учир нь тухайн нөхцөл биелэх эсвэл биелэхгүй байх аль ч тохиолдолд тохирох үйлдлийг хийж байхаар зохиогджээ. Сурагч Г-ийн бодолт: Харин энэ бодолт хэдийгээр зөв боловч ойлгоход төвөгтэй байж болно. Ийм бодолтыг “сөрөг” бодолт гэж болно. Учир нь тухайн нөхцөл биелж байхад дахин нөхцөл шалгаж байгаа болон нөхцөл биелэхгүй байх тохиолдлуудыг ойлгоход төвөгтэй байна. Бодолтын кодыг Хүснэгт 12-д үзүүллээ. Хүснэгт 12. Жишээ бодлого 7-ийн гурван өөр бодолт Сурагч Д-ийн бодолт #include <stdio.h> main(){ int huraamj, nas; scanf("%d",&nas); if (nas<12) huraamj=30; if (nas>=12&&nas<=60) huraamj=60; if (nas>60) huraamj=20; printf("%d", huraamj); } Сурагч Б-ийн бодолт
  • 31. 31 #include <stdio.h> main(){ int huraamj, nas; scanf("%d",&nas); if (nas<12) huraamj=30; else if (nas<=60) huraamj=60; else huraamj=20; printf("%d", huraamj); } Сурагч Г-ийн бодолт #include <stdio.h> main(){ int huraamj, nas; scanf("%d",&nas); if (nas>=12) if (nas>60) huraamj=20; else huraamj=60; else huraamj=30; printf("%d", huraamj); }
  • 32. 32 Жишээ бодлого 8. Хүү шатаар нэг эсвэл алгасаж алхаж чадна. N гишгүүр хүртэл хэчнээн янзаар алхах вэ? Оролт: Гишгүүрийн тоо: N Гаралт: Шатан дээр гарах боломжийн тоо Жишээ нь: N=4 бол 5 Бодолт: Эхний гишгүүр дээр хүү ганц үйлдлээр гарч чадна. Хоёр дахь гишгүүр дээр нэг нэгээр, эсвэл алгасаж гишгээд 2 янзаар гарч чадна. Гурав дах гишгүүр дээр нэгдүгээр гишгүүрээс эсвэл хоёрдугаар гишгүүрээс гарч чадна. Ингэхдээ нэгдүгээр гишгүүрээс 2 (нэг нэгээр эсвэл алгасаж гишгэх), хоёрдугаар гишгүүрээс зөвхөн 1 янзаар гарч чадна. Тиймээс 3 дугаар гишгүүрт хүрэх 3 боломж байна. Ерөнхийлбөл n дүгээр гишгүүр дээр n-2 ба n-1 дүгээр гишгүүрээс гарах боломжтой. Тэгвэл n-2 гишгүүр дээр гарах боломжийн тоог f(n-2), n-1 гишгүүр дээр гарах боломжийн тоог f(n-1) гэсэл n дүгээр шатанд гарах боломжийн тоо f(n)=f(n-2)+(n-1) байна. Өөрөөр хэлбэл: 𝐟(𝐧) = { 𝐟(𝐧 − 𝟐) + 𝐟(𝐧 − 𝟏), 𝐧 > 𝟏 𝟏, Бусад Энд: f(0)=1, f(1)=1 байна. Тиймээс энэ бодлого бол Фибоначчийн дарааллын n дүгээр гишүүний олох бодлогын өөр нэгэн томьёолол болох нь харагдаж байна. Фибоначчийн дарааллын n дүгээр гишүүнийг тооцоолох нь давхар рекурсив ашиглан бодож болох бай энэ нь программ давхардсан тооцооллыг шийдвэрлэх шаардлагыг бий болгоно. Үүнийг динамик программчлалын хялбар техникийг ашиглан шийдвэрлэж, уг аргыг онцлогийг сурагчдад танилцуулж болно. Үүнд, динамик программчлалын санах ойд хадгалах (memorization) болон хүснэгтэд хадгалах (tabulation) аргаар бодож ярилцах нь зүйтэй. Түүнчлэн динамик программчлалын массив ашиглах болон хувьсагч ашиглах аргаар шийдэж болно. Эдгээр дөрвөн бодолтыг санааг дараах хүснэгтэд үзүүллээ. Хүснэгт 13. Жишээ бодлого 8-ын дөрвөн өөр бодолт Арга, бодолт Бодлогын код 1 дүгээр арга: Рекурсив бодолт (давхардсан тооцоолол) f(0)=1, f(1)=1 f(n) = { f(n − 2) + f(n − 1), n > 1 1, Бусад #include <stdio.h> #include <stdlib.h> typedef long long int ll; ll fib1(ll n){ if (n==0||n==1) return 1; else return fib1(n-2)+fib1(n-1); } main(){ ll n=40; printf("%lld",fib1(n)); } 2 дугаар арга: Санах ойд хадгалах (динамик программчлал) Рекурсив хувилбартай төстэй боловч шийдлийг тооцоолохдоо өмнө хадгалсан утгын хүснэгтэд тооцоолох утга байгаа эсэхийг шалгана. Хэрэв утгыг тооцоолсон бол түүнийг буцаана, үгүй бол утгыг тооцоолоод #include <stdio.h> #include <stdlib.h> #define N 10000 typedef long long int ll; ll mem[N]; ll fib2(ll n){ if (mem[n]==0){ if (n==0||n==1) mem[n]=n; else mem[n]=fib2(n-2)+fib2(n-1);
  • 33. 33 дахин ашиглах боломжтой болгохын тулд үр дүнг хүснэгтэд хийж өгнө. } return mem[n]; } main(){ ll n=40; memset(mem, 0, sizeof(mem)); printf("%lld",fib2(n)); } 3 дугаар арга: Хүснэгтэд хадгалах (динамик программчлал) mem хүснэгтэд Фибоначчийн дарааллын утгыг эхнээс нь тооцоолон mem[0]=0, mem[1]=1, mem[2]=mem[0]+mem[1] гэх мэтээр тооцоолж, n дүгээр утгыг mem[n]=mem[n-2]+mem[n-1]-д хийнэ. Үр дүн болгон mem[n]-ийг буцаана. #include <stdio.h> #include <stdlib.h> #define N 10000 typedef long long int ll; ll mem[N]; ll fib3(ll n){ int i; mem[0]=0; mem[1]=1; for (i=2; i<=n; i++) mem[i]=mem[i-2]+mem[i-1]; return mem[n]; } main(){ ll n=40; memset(mem, 0, sizeof(mem)); printf("%lld",fib3(n)); } 4 дүгээр арга: Фибоначчийн дарааллын аливаа элементийн утга нь өмнөх хоёр элементээрээ тооцоологдож байна. Тиймээс тухайн элементийн өмнөх хоёр утгыг хадгалах, нийлбэрийг олох тулах хувьсагчууд ашиглан санах ойг хамгийн зохистой ашиглан Фибоначчийн дарааллын n дүгээр гишүүнийг тооцоолж болно. #include <stdio.h> #include <stdlib.h> typedef long long int ll; ll mem[N]; ll fib4(ll n){ int a, b, c, i; a=0; b=1; for (i=2; i<=n; i++){ c=a+b; a=b; b=c; } return b; } main(){ ll n=40; memset(mem, 0, sizeof(mem)); printf("%lld",fib4(n)); } Фибоначчийн бодолтыг зөвхөн Си кодыг харууллаа. Үүнийг flowgorithm дээрх блок болон SB хэлд хөрвүүлж, ажиллах даалгаврыг сурагчдаар ажиллуулж болно. Дүгнэлт Программчлал нь залуу иргэдийн мэдээллийн нийгмийн технологийн хэрэгслийг өөрийн хүссэнээр удирдах, ашиглах суурь мэдлэг, чадварт суралцах гол хэрэгсэл болоод байна. Энэ үүднээс кодчилол, программчлалын мэдлэг, чадварт хүүхэд залуус эртнээс суралцсан байх нь тэдний ирээдүйд хийх ажил мэргэжлийн бэлтгэлд ихээхэн чухал байх нь дамжиггүй. Учир нь шинээр бий болж буй ажил, мэргэжилд кодчилол, программчлалын технологийг шаарддаггүй ажлын байр үгүй юм.
  • 34. 34 Мэдээлэл зүйн боловсролын нэгэн чухал зорилт бол сурагчдад кодчиллын боловсрол олгох явдал билээ. Сурагчдын алгоритм, тооцоолон бодох сэтгэлгээг аль болох багаас нь бүтээлчээр хөгжүүлэхэд багш нар ихээхэн анхаарч ажиллах шаардлагатай байдаг учраас энэхүү арга зүй, технологийн талаар багш та бүхэндээ товч танилцуулж байгаа юм. Эдгээр материал нь та бүхний арга зүйн хөгжилд бага ч боловч хувь нэмэр болж, хичээлийг үр бүтээлтэй явуулах талаар цөөн ч атуугаа санаа мэдэл өгөх болов уу хэмээн найдахын зэрэгцээ, сургалтын практик хөгжүүлэн хэрэглэнэ гэдэгт найдаж байна. Ном зүй, эх сурвалж: Цэдэвсүрэн, Д. (2020) Мэдээлэл зүйн боловсролын бодлогын шинэчлэл, Лавай эрдэм шинжилгээний сэтгүүл, дугаар 24, хх: 16-28 Мэдээлэл зүй тооцоолох техникийн үндэс заах аргын зөвлөмж (1988), IX дүгээр анги, Орч: Жаргал, Б., Намсрай, Ю., Чойжоованчиг, Л., Улсын хэвлэлийн комбинат Олон улсын Бибрас уралдааны бодлогын орчуулгын материал, 2015 Олон улсын Бибрас уралдааны бодлогын орчуулгын материал, 2017 Мэдээлэл зүй V (2013) 10 дугаар ангид судлах сурах бичиг, Адмон принт ХХК Мэдээлэл зүй VI (2013), 11 дүгээр дугаар ангид судлах сурах бичиг, Адмон принт ХХК Мэдээлэл зүй VII (2014), 12 дугаар ангид судлах сурах бичиг, Сэлэнгэпресс ХХК