Thursday, September 11, 2008

Mozilla -н хурдыг ихэсгэх арга

1. Хаягийн мөрөн дээрээ about:config гэж бичээд ENTER дар.
2. Filter search bar буюу шvvлтvvр дээр нь network.http.pipelining гэж бич. Тэгээд дээр нь double click (хулганаа 2 дарах) хийж утгыг нь true болгож өөрчил.
3. Шvvлтvvр дээрээ network.http.pipelining.maxrequests гэж бичээд утгыг нь 8 болго.
4. Шvvлтvvр дээрээ network.http.proxy.pipelining гэж бичээд true болго.
5. Шvvлтvvр дээрээ network.dns.disableIPv6 гэж бичээд true болго.
6. about:config цонхныхоо хаана нь ч хамаагvй хулганыхаа баруун товчийг дараад new > boolean сонгоод нэрэн дээр нь content.interrupt.parsing гэж єгєєд утгыг нь true болго.
7. Мєн new > integer сонгоод нэрийг нь content.max.tokenizing.time гэж єгєєд утгыг нь 2250000 болго.
8. Мєн new > integer сонгоод нэрийг нь content.notify.interval гэж өгөөд утгыг нь 750000 болго.
9. Мєн new > boolean сонгоод нэрийг нь content.notify.ontimer гэж өгөөд утгыг нь true болго.
10. Мєн new > integer сонгоод нэрийг нь content.notify.backoffcount гэж өгөөд утгыг нь 5 болго.
11. Мєн new > integer сонгоод нэрийг нь content.switch.threshold гэж өгөөд утгыг нь 750000 болго.
12. Мєн new > integer сонгоод нэрийг нь nglayout.initialpaint.delay гэж өгөөд утгыг нь 0 болго.

Мэдлэгт дусал нэмэр

Сайн программистууд болон экспертүүд бараг л хулгана ашигладаггүй. Яагаад гэхээр тэдэнд цаг хугацаа гэдэг маш чухал зүйл. Мэдээж хурд хүчтэй сайн компьютер дээр нь өөрийн чадвар бас сайн програм хангамж. Мэдээж тэр сайн програм хангамж тэр болгон хүн бүрт тохироод байхгүй болохоор үйлдлийн системийг өөрийнхөөрөө болгоод өөрчилчихдөг. Ингэж байж л санаснаа хийж чадна шүү дээ. Дор хаяж л хэдэн програмаа Start цэснээсээ хайгаад байхгүй ажиллуулдаг байх хэрэгтэй.
За ингээд Windows дээр хэрхэн хулгана ашиглахгүй програм ажиллуулахыг зааж өгье. Ихэнх нь мэддэг байх гэж бодож байна.
Windows -ын Run гэдэг коммандыг мэдэх үү (Start->Run) Эсвэл гарнаас (Windows товч + R) гэж гаргадаг цонх байдаг да.

Энэ их ид шидтэй цонх оо. Та Windows+R гэж дараад коммандын мөр дээр нь Calc гэж бичээд Enter дараа үз дээ.
Тооны машин ажиллаж байгаа биз. Энэ мэт доорх өргөн хэрэглээний програм ажиллана.
· mspaint - Microsoft Paint зургийн програм
· notepad - Текст editor
· wordpad - Rich text editor
· cmd - Command console
· regedit - Register editor
· dxdiag - DirectX diagnostic tool
· wmplayer - Window Media Player
· charmap - Character map
· taskmgr - Task Manager
За Тэгээд таньд Microsoft Office байгаа бол
· winword - Micrsoft Word
· excel - Microsoft Excel
· msaccess - Microsoft Access
· outlook - Microsoft Outlook
Тоглоом гэвэл
· winmine
· freecell
· spider
· sol
Screen saver гэвэл
· ssstars.scr
· ssbezier.scr
· ssflwbox.scr
· ssmarque.scr
· ssmypics.scr
· ssmyst.scr
· sspipes.scr
· ss3dfo.scr
· sstext3d.scr
Тохиргоотой холбоотой гэвэл
· msconfig
· devmgmt.msc
· compmgmt.msc
· control firewall.cpl - Firewall settings
· control hdwwiz.cpl - Hardware wizard
· control inetcpl.cpl - Internet explorer properties
· control intl.cpl - Regional Language settings
· control main.cpl - Mouser settings
· control mouse - Mouser settings
· control keyboard - Keyboard settings
· control main.cpl keyboard - Keyboard settings
· control mmsys.cpl - Sound and Audio device
· control ncpa.cpl - Network Connection
· control nusrmgr.cpl - User Account
· control odbccp32.cpl - Data source (ODBC)
· control powercfg.cpl - PowerOptions
· control sysdm.cpl - System properties
· control timedate.cpl - Date and time
· control wscui.cpl - Windows Security settings
· control desk.cpl - Display settings
· control appwiz.cpl - Add remove programs
· control userpasswords2
Жишээлбэл таны компьютер вирустээд Control panel руугаа орж чадахгүй нөхцөлд дээрхийг хэрэглэж болно. бас та маш хурдан хугацаанд тохиргооруугаа орох боломжтой гэсэн үг.

control userpasswords2 -ыг жишээлбэл Та windows-өө сүлжээний хандалтаас хамгаалаад Нууц үг өгцөн гэж бодъё. Гэтэл windows чинь асах болгондоо нууц үгээ асуугаад төвөгтэй байгаа бол дээрх "control userpasswords2" -ыг RUN дээрээ бичиж ороод "users must enter a user name and password to use this computer" гэдгийн урд сонголтыг нь аваад хадгалахад таны windows асах үедээ нууц үг асуухаа болино. Олон хэрэглэгчийн горимын үед арай өөрөөр ажиллахыг анхааруулья.

За тэгээд файлтай ажиллах гэж байгаа бол
C:\ -гээд орвол шууд C disk руу чинь орно.
Файлынхаа замыг л зөв бичвэл шууд ачаална.
Жишээлбэл:
C:\games\Frozen\Frozen.exe
C:\Program Files\Winamp\winamp.exe
http://www.bultuush.com - гэвэл default browser дээр чинь шууд www.bultuush.com шууд ачаалагдана.
iexplorer http://www.gogo.mn -гэвэл Internet explorer дээр gogo.mn ачаалагдана.
Эцэст нь хэлэхэд энэ бүх програмын нэр замыг цээжлээд ажиллуулна гэдэг үнэхээр төвөгтэй байгаа биз тэгвэл та өөрийнхөөрөө хүссэнээрээ нэрлээд ажлуулмаар байна уу. Тэгвэл тухайн ажиллуулах гэж байгаа програмынхаа shortcut-ыг үүсгээд, нэрийг нь өөрийхөөрөө нэрлээд C:\Windows фолдертоо хуулчих тэгээд RUN дээр өгсөн нэрээрээ дуудаад л ажиллуулчихна. Жишээлбэл та Microsoft Word -ыг хялбар ажиллуулмаар байвал C:\program files\Microsoft Office\Office12\winword.exe (office12,office11 байж болно. Таны Office-ын хувилбараас хамаарна) файлыг олоод mouse 2 оо дараа CreateShortcut сонгоод дараа C:\Windows фолдерт shortcut аа хуулаад нэрийг нь "W" гээд нэрлэчих.
одоо Windows+R дараа W гэж бичээд Enter дар.
Ингээд л болоо
RS Premium Link :
http://irapidshare.net/index.php
http://www.rsfox.com/generator.php
http://www.rapidshare.da.ru
http://www.rapidcheat.com

Monday, August 4, 2008

Зүгээр л

Шинэ ажилдаа ороод даруй 1 сар болчихжээ.
Өглөө эрт босож хэвшээгүй болохоор 6.50 -д босно гэдэг л хэцүү байна.
Бусад талаар ч дажгүй ээ.
Шинэ ажилд маань ч тэр, хуучин ажилд маань ч тэр аль алинд нь давуу тал байх юм.
Багшийн ажил бол цаг зав ихтэй ч юм шиг. Үгүй ч юм шиг.
Долоо хоногт яг хичээл орох цаг нь бага ч өдөр бүр, ажил дээрээ ч тэр, гэртээ харьсан ч тэр маргаашийнхаа лекцийг бэлтгэх шаардлагатай болохоор цаг наргүй мэт...
Энд бол үйлдвэрийн газар болохоор өдрийн 8 цагт ажил дээрээ яс байх ёстой байдаг.
Гэхдээ эндхийн ажил энддээ үлддэг болохоор амар юм аа.
Миний гол олзуурхаж байгаа зүйл маань энд яг амьдрал дунд орж ажиллаж байгаа маань юм.
Сургуульд байхдаа ингэж хийдэг, ийм хэлбэрээр зохион байгуулбал хялбар, зарчим нь ийм байдаг гэх мэтээр л онол дээр тулгуурлаж сургалтыг явуулдаг болохоор ингээд практик дээр ажиллаж ажлын үр дүнгээ бодитойгоор харах нь сонирхолтой юм.
Одоогоор гэхэд 2-р зуухны автоматжуулалт, хяналтын систем дээр УБ-н хэсэг хүмүүстэй ажиллаж байна.
Үүний дараагаар байгууллахын хэрэгцээнд шаардлагатай байгаа 3-4 програмын захиалгатай байгаа гэх мэт...
Ингээд л ажиллаад байна даа
Намраас хичээл эхлэхээр оюутнууддаа зөвлөгөөнүүд өгч байх болно оо.

Tuesday, July 8, 2008

Шинэ ажил

...

За ингээд багшийн ажлаа болиод шинэ ажилдаа ороод даруй 3 хоночихлоо.
Ер нь давгүй шүү.
Анхнаасаа ийм газар ажиллаж байсан бол дээр ч байсан юм уу гэж бодогдож байна.
Орчин нь ч дажгүй, хангамж ч сайн.
Хүнийг ажиллах бүхий л нөхцлөөр бүрэн хангаж байж ажлын бүтээл, үр дүнг шаардах нь зөв юм аа.
...

За түр баяртай. Та бүхэнд амжилт хүсье

Friday, May 30, 2008

Шалгалт дууслаа

За ямар ч байсан шалгалтуудаа өгөөд дууслаа.
Магадгүй ихэнх нь шалгалтын оноондоо сэтгэл хангалуун бус үлдсэн байх.
Хэн хэнд нь асуудал байсан байх гэж бодож байна...
:(

Холын хүүхдүүдийн ихэнх нь буцах гэж байх шиг байна. Зуны амралтаа үр бүтээлтэй, сайхан өнгөрүүлээрэй.
Баяртай.


IT-н суурь шалгалтанд бэлтгэх сургалт төлөвлөсөн хугацаандаа явагдах бөгөөд уг сургалтанд хамрагдахыг хүссэн хэн бүхэнд нээлттэй байгаа шүү... Та яарагтун

Эрүүдээ өмөөрч бичсэн шүлэг

Яруу найрагч Билэгсайхан.

Эрчvvдээ ємєєрч бичсэн шvлэг


Эр хvнийг та нар хааяа ч гэсэн хайрлаач ээ
Эрлэгт явахаас нь ємнє ханийн жаргал эдлvvл
Эр нєхєр чинь vгvй бол гэрийн чинь зай эзгvйрнэ
Эрдэмт хєвгvvд нь vгvй бол тєрийн чинь зай эзгvйрнэ
Эр цэрэг чинь vгvй бол эх орон чинь эзгvйрнэ
Эрчvvдийг та нар хааяа ч гэсэн хайрлаач ээ
Эрлэгт явахаас нь ємнє ханийн жаргал эдлvvлээ
Хєл нь тагнайгаа онохгvй тультчиж
Хєл нь дэлхийгээ онохгvй тэмтчиж
Хаяа нэг халамцуухан ирэхэд нь
Хараалын vг урсгаж халаасыг нь битгий хоосол
Янагийн захиа лав гарахгvй шvv дээ наадахаас чинь
Яахав дээ хєєрхий шараа тайлах юмыг нь vлдээ
Дээл бvсэн гоёлтой
Дээрээ малгай хийморьтой
Андынхаа дэргэд цовоожиж
Аавынхаа харцанд томоождог
Янагийн сэтгэлд нялхарсан эрчvvдийг
Янжинлхамууд минь єршєє
Уул шиг юм гэж дандаан битгий давар
Vvл шиг нvvгээд явчихдаг юм
Ус шиг уян гэж дандаан битгий самар
Уур болоод дэгдчихдэг юм
Тєгєлдєр их урмыг бvр их хугалчихвал
Тєрсєн шигээ уруугаа хараад уначихдаг юм
Хэчнээн жил амьд явахыг мэдэж болдоггvй орчлон дээр
Хэзээ хаана жаргана гэж хэрvvлийн алим хуваах вэ
Хазайсан газар нь тэдэнд чинь бvvвэй ээж тvшиг болдог юм
Хальтарсан газар нь тэдэнд чинь бvсгvй хайр нємєр болдог юм
Єєрийг чинь ээж болгосон хvний дээдюм шvv дээ
Vрийн чинь эцэг болсон эрийн тэнгэр юм шvv дээ
Эр хvнийг та нар хаяа ч гэсэн хайрлаач ээ
Эрлэгт явахаас нь ємнє ханийн жаргал эдлvvл
Олон олон авааль гэргий та нараас
Олон олон аавын хєвгvvдийг
Ємєєрч бичсэн шvлгvvдийг минь болгоо
Єєрийн минь биеийг битгий болгоо...

Wednesday, May 28, 2008

Миний л аав

Г.Сэр-Одын нэрэмжит шагналт яруу найрагч Намбарын Пvрэвийн шvлэг

Харахаар л хайр дvvрээд
Хачин их хайртай юм аа, аавдаа би
Уужуу л єсгєсний тань ачийг
Ухаарч л нэг хариулъя даа

Харахаар л нэг хайр дvvрээд
Хайртай шvv v чинь таньдаа
Холдохоор л хvсэл зэллээд
Хоргоддог байна шvv хvv чинь тандаа ааваа

Бодохоор л сэтгэл гэгээлээд
Бурхны л энтэй юм аа та хvvдээ
Уярааж л торниулсны тань буяныг
Дуулж л нэг харуулъя даа

Бодохоор л сэтгэл гэгээлээд
Бурханы энтэй юмаа та хvvдээ
Санахаар л итгэл бvлээсээд
Хайрханы л нємєртэй юм та vр дээ

Очихоор л бодол зєєлрєєд
vнсуулж л нэг тайтгарах юм аа би ааваа
Олонтой л заяасан алдрыг
Овоглуулж нэг бахархъя даа ааваа

Очихоор л бодол зєєлрєєд
Үнсvvлж л нэг тайтгарах юмаа ааваа
Бодохоор л сэтгэл гэгээлээд
Буяны л тэнгэр юм аа та хvvдээ

Хувьхан заяаны харгуй
Уужим талын энгээр тоглож єссєн болохоор
Уярал гэгээн сэтгэл зvрхэнд минь бий
Уулс уулсын бараанд саравчилж торнисон болохоор
Уужуу алсын бодол цээжинд минь бий

Аав л ээжээс заяасан хувьхан заяаны харгуйг
Ай би єєрийнхєєрєє гэрэлтэн дуулж

Хvний сайхан vртэй учирч ханилсан болохоор
Хvсэл холын гэгээ бодолд минь бий
Ухаант удмын заяаг тушиж яваа болохоор
Уянга яруу тvvчээ тавиланд минь бий

Ардын уртын дуунд уярч єссєн болохоор
Амьдрал харгуйн учиг ухаанд минь бий
Дэлхийн дайдаас санаж бэтгэрч vзсэн болохоор
Дээдэс євгєдийн жудаг цусанд минь бий

Аав л ээжээс заяасан хувьхан заяаны харгуйг
Ай би єєрийнхєєрєє гэрэлтэн туулж явна

Sunday, May 25, 2008

SW306 Java технологи

Та бүхэн Java технологи хичээлийн шалгалтандаа бэлтгэхдээ дараах ойлголтуудыг эргэж уншаарай.
Үүнд:

  • Өгөгдлийн төрөл
  • Давталт
  • Массив
  • Багц буюу package
  • import
  • Класс
  • Класс объект
  • Байгуулагч функц
  • Статик гишүүн өгөгдөл, статик гишүүн функц
  • Absract
  • Удамшил
  • Интерфэйс
  • Хандалтын тодорхойлогч
  • Method overloading
  • Method overriding
  • Файлтай ажиллах
Билет нь дараах бүтэцтэй байна.
  • Эгэл хэсгийн 1 асуулт /+20 хүртэл оноо/
  • Үндсэн хэсгийн 2 асуулт /тус бүр +15 хүртэл оноо/
  • Асуудал шийдвэрлэх /тус бүр +12,5 хүртэл оноо/
Асуудал шийдвэрлэх хэсгийн асуулт, бодлогууд харьцангуй энгийн асуулт байна.
Үүнд:
  • Тавигдсан хялбар бодлогыг бодох
  • Алдааг олох
  • Цэгийн оронд дутууг нөхөх
  • Файлтай ажиллах /файлаас өгөгдөл унших гэх мэт/
Амжилт хүсье!

Monday, May 19, 2008

Сэтгэгдэл

Үйлдлийн системийн онолын сүүлийн бие даалт болгож "SW316 хичээлийн тухай миний сэтгэгдэл" сэдвээр эссэ бичүүлсэн билээ. Бие даалтыг уншиж үзэхэд зарим нь энэ даалгаврыг хийх гэж үнэхээр сэтгэл гаргасан байсан. Зарим нэг нь намайг огт уншихгүй, өгсөн л бол оноогоо авч таарна гэсэн сэтгэлээр хандсан байлаа.
Их олон хүүхдүүд шууд интернэтээс бэлэн юм татаж ашигласан. Ядаж фонт, форматыг нь ч янзлаагүйгээр шүү.
http://sw316.blogspot.com сайтаас 2006-2007 оны хаврын улиралд SW316 хичээлийг сонгон суралцсан КТМС -ын оюутнуудын энэ сэдвээр бичсэн эссэнүүдийг уншиж болно. Зарим нь ч аль хэдийнээ уншаад, бас ашиглаад амжсан билээ. /Ашигласан гэж хэлэхэд зохимжгүй байх л даа/

Уг нь хэцүү даалгавар биш байлаа...
:( :( :(

SW316 Шалгалт

Оройн мэнд!
Маргааш буюу V.20 -ноос Үйлдлийн системийн онолын шалгалтууд эхэлнэ.
Шалгалт амаар авагдана. Шалгалтанд бэлдэхийн тулд:

  • Компьютерийн системийн бүтэц, бүрэлдэхүүн
  • Процессын төлвүүд
  • Тасалдал
  • Процессын загвар
  • Түгжрэл
  • Солбицол

  • Банкирын алгоритм
  • Хуулбар процесс
  • Санах ойн зохион байгуулалт
  • Виртуал санах ой
  • Процессын төлөвлөлт
  • Файл
  • Диск төлөвлөлт гэсэн ойлголтуудыг унших хэрэгтэй.
Та бүхэнд амжилт хүсье!

Monday, May 12, 2008

Дүн???????

2 хичээл дээр өгөгдсөн бие даалтуудыг энэ 3 дахь өдөр хүртэл хүлээж авах бөгөөд хугацаа хэтэрсэн тохиолдолд хүлээн авахгүй. Учир нь түүнээс хойш өгөгдсөн бие даалтуудыг уншиж амжихгүй.
Даалгаврууд болон бие даалтуудыг өгөөгүй тохиолдолд 40-өөс дээш оноотой гарна гэдэг асуудал байхгүй шүү.

Sunday, April 27, 2008

Зарлал

Маргааш буюу 2008.04.29-ний өдөр 12.50-аас 13.20 -ын хооронд 312 дугаар өрөөнд Олимпиадад амжилттай оролцогсдод шагнал гардуулна. Мөн бодлого дэвшүүлсэн багш нар өөр өөрсдийн бодлогынхоо бодолтыг тайлбарлана

Saturday, April 26, 2008

SW316 Үйлдлийн системийн онол хичээлийн дүнг гаргах журам

Ирц - 20 оноо

Лаборатори №1 - 4 оноо
Лаборатори №2 - 4 оноо
Лаборатори №3 - 4 оноо
Лаборатори №4 - 4 оноо
Лаборатори №5 - 4 оноо

Лаборатори нийт 20 оноо

Бие даалт #1 - 5 оноо
Бие даалт #2 - 10 оноо

Бие даалт нийт 15 оноо

Сорил #1 - 7 оноо
Сорил #2 - 8 оноо

Сорил нийт 15 оноо

Бүгд нийт 70 оноо

SW306 Java технологи хичээл дээр 70 оноо гаргах журам

SW306 Java технологи


Ирц - 20 оноо


Лаборатори №1 - 1 оноо /Бэлэг/
Лаборатори №2 - 2 оноо
Лаборатори №3 - 2 оноо
Лаборатори №4 - 2 оноо
Лаборатори №5 - 3 оноо
Лаборатори №6 - 3 оноо
Лаборатори №7 - 3 оноо
Лаборатори №8 - 4 оноо

Лаборатори нийт 20 оноо

Бие даалт #1 - 10 оноо
Бие даалт #2 - 5 оноо

Бие даалт нийт 15 оноо

Сорил #1 - 5 оноо
Сорил #2 - 10 оноо /Өмнөх сорил дээр хангалттай оноо аваагүй учраас сүүлийн сорилын оноог өндөр болгов/

Сорил нийт 15 оноо

Бүгд нийт 70 оноо

SW306 Лабораторийн ажил 5

Оноо: 3 хүртэл оноо

Нөхцөл: Файлаас өгөгдөл авч уншин түүнийгээ ашиглан боловсруулалт хийгээд үр дүнг файл руу бичнэ.

Классын ямар боловсруулалт хийх нь таны шийдэл байж болно. Хамгийн гол нь файлаас өгөгдөл уншиж, файл руу өгөгдлийг бичих явдал байх болно.

Өгөгдөл авах файлын нэр: info.txt
Үр дүнг бичих файлын нэр: value.txt

Програмчлалын хэлний олимпиад

Өнөөдөр 2008.04.26-ны өдөр манай багш нар санаачлан зохион байгуулагдсан Дархан-Уул аймгийн оюутнуудыг хамарсан Програмчлалын хэлний олимпиад амжилттай явагдаж өндөрлөлөө.
Уг олимпиадад 3 сургуулийн 30 оюутан оролцсон. Анх удаа зохион байгуулагдсан болохоор туршлага дутаж алдаа, оноо гарсан байхыг үгүйсгэхгүй билээ. Жил бүр ийм олимпиадыг тогтмол явуулж байхыг зорьж буй бөгөөд та бүхэн энэ тал дээр санаа оноогоо илэрхийлж зөвлөлдөж байхыг хүсье.
Олимпиадад КПХ-1 ангийн оюутан Балжинням дээд курсын ах, эгч нараа ардаа орхин түрүүллээ.
Оролцогчдод бүгдэд нь эрдмийн өндөр амжилт хүсье.

Monday, April 21, 2008

Одрийн мэнд

7 хоног уулзалдсангүй. Та бүхэн хичээлээ хийж байв уу? Дүн гаргахад 4 долоо хоног үлдэж байна. 14, 15 дэх долоо хоногт шалгалтууд авагдана.

Thursday, April 10, 2008

SW316 Үйлдлийн системийн онол

Хичээлийн лекцийг нээлттэй болгов.

Зөвлөмж:

Та бүхэн хичээлүүдийн лекцүүдийг татаж авахдаа сургуулийн үүдний интернэтэд холбогдсон компьютерүүдээс өөр компьютер дээрээс татаж авна уу. Учир нь: тэдгээр компьютерүүдийн download хийх эрхийг нь хаасан байгаа юм.
:)

SW306 Бие даалт 1

Хугацаа: 15 -р долоо хоног

Оноо: 10 оноо

Бие даалтын ажил:

o Даалгавар: Оюутан бүр тодорхой нэг сэдэв (класс) сонгож аваад тухайн классын хувьд тус хичээлээр үзсэн бүх онолын ойлголт бүрийг лабораторийн цаг дээр хэрхэн хэрэгжүүлсэн байдлаа тайлагнаж бичнэ. Үүнд: Ажлын тайлан нь тухайн ойлголтыг өөрийн сонгосон сэдвийн хүрээнд хэрэгжүүлсэн байдлаа тодорхой үндэслэлтэйгээр (бодит амьдралын шаардлагатай уялдуулан) тайлбарлаж бичнэ.

o Санамж:

n Сонгосон классынхаа хувьд тухайн лекцээр үзсэн шинэ ойлголтоо цаг тухайд нь хэрэгжүүлэх замаар кодоо алхам алхамаар нэмэгдүүлэн хөгжүүлэх нь зүйтэй.

Бие даалтын ажилд дараах ойлголтуудыг тусгасан байвал зохино. Үүнд:

o Хийсвэрлэл:

o Байгуулагч функцын хэрэглээ

o Статик гишүүн өгөгдөл ба статик гишүүн функцын хэрэглээ

o Удамшил харьцаа тодорхойлох

o Хийсвэр класс, хийсвэр функц тодорхойлох

o Классын хандалтыг тодорхойлогч түлхүүр үгнүүдийн хэрэглээг тусгах

o Method override болон Method overload техникийг хэрэгжүүлэх

o Интерфейсийг хэрэгжүүлэх

o Файлын оролт гаралт

n Бодит амьдрал дээр бид хийсвэрлэсэн Өгөгдлийн Хийсвэр Төрлийнхөө маш олон объектуудыг тодорхойлж ашиглах шаардлага гардаг тул тэдгээрийг гадаад санах байгууламжид файл хэлбэрээр хадгалж ашиглах шаардага урган гарна.

o Дээрх онолын ойлголт бүрийг өөрийн сонгосон классын хувьд хэрхэн хэрэгжүүлж болох вэ гэдгийг сайтар тунгаан бодож үзээрэй. Мөн дээрх ойлголтуудыг програмчлалд хэрэгжүүлэх явцад шинээр зарим шаардлагатай классуудыг үүсгэж, ашиглах шаардлага урган гарна.

Wednesday, April 9, 2008

Бодлого бодох уу.............

IV/26-нд Дархан-Уул аймаг дахь Технологийн сургууль дээр Дархан-Уул аймгийн их, дээд сургуулиудын оюутнуудын дунд Програмчлалын олимпиад зохион байгуулагдахаар төлөвлөгдсөн билээ.
Оролцогч тус бүр 5 бодлогыг 4 цагийн хугацаанд компьютер дээр бодно.
Бодлогыг: C, C++, Pascal хэлүүд дээр гүйцэтгэнэ. Аль хэл дээр програмчлах нь оролцогчийн сонголт байх болно.
Мэдээж эхний 3 байрыг шалгаруулж, өргөмжлөл, мөнгөн шагнал гардуулна.
Миний зүгээс шагналт байрт шалгарсан оюутнууд болон ер нь оролцсон оюутнуудад орж буй хичээлийн 70 оноо гаргахад тодорхой урамшууллын оноо бэлэглэх болно.
Бусад багш нарын хувьд ч ийм асуудал байж магадгүй.

Оюутнууд та бүхэн уг олимпиадад оролцож мэдлэг, оюунаа шалгана уу.

Та бүхэн уг олимпиадад оролцохын өмнө ном, сурах бичгүүдээ эргэн харж, өөрсдийгөө бэлдэнэ биз дээ.

Уг нь програмчлалын бодлого бодох монголын coder.mn хэмээх сайт байдаг боловч одоогоор орохгүй байгаа. Учир нь тэднийх ISP -ээ сольсон бөгөөд цаад газар нь тохиргоог нь удахгүй хийнэ гэсэн гэнэ.

Мөн КТМС -н Хаш-Эрдэнэ, Хүдэр багш нарын хөгжүүлж буй http://acm.csms.edu.mn/ сайт байгаа.
Эдгээрийг сонирхож үзнэ үү.

Tuesday, April 8, 2008

Зар

Ирэх долоо хоногийн буюу IV/14-20 -ны хоорондох хичээлийг орохгүй бөгөөд SW316 хичээлийг V/3 -ны өдөр нөхөж орно.

SW306 Java технологи

Хичээлд хэрэглэсэн лекцийн материалууд болон бусад нэмэлт материалуудыг та бүхэн эндээс файлаар нь авч үзэж байна уу.

j2sdkdoc142.zip -Энэ та бүхэнд хэрэг болно

SW316 Бие даалт1

Бие даалт 1

Сэдэв: "SW316 хичээлийн талаарх таны сэтгэгдэл" эссэ

Авах хугацаа: XV -р долоо хоногийн бие даалтын цаг

Оноо: 10 хүртэл оноо

Thursday, April 3, 2008

SW306 Лабораторийн ажил 5

Лабораторийн ажил 5

Хугацаа: IV/9-10 -ны лабораторийн цагуудаас өмнө
Нөхцөл:
Энэ лабораторийн ажлыг мнөх лабораторийн ажлаа өргөжүүлж хөгжүүлэх замаар хийнэ.
Үүнийг гүйцэтгэхдээ дараах зүйлүүдийг хамрах ёстой. Үүнд:
1) Өмнөх лабораторийн ажлын хүрээнд сонгож авсан системийн хийсвэрлэл болох классаас удамшсан хүү классыг үүсгэнэ.
2) Гишүүн функцийг дахин тодорхойлолт (method overriding), гишүүн функцийн дахин ачаалалт (method overload) тодорхойлогдоно.
3) Хийсвэр класс буюу interface хэрэгжүүлэлтийг үүсгэнэ.

Жишээ програм: Дэлгүүр

Бараа (Goods)нь дараах шинж чанартай:
- Тодорхойлолт (description)
- Үнэ (price)
Барааны дараах хэлбэрүүд байдаг.
- Хүнс (foods)
- Тоглоом (toys)
- Ном (books)
Дээрх бараануудаас Хүнс (foods) нь таксгүй, харин Тоглоом болон Ном худалдан авбал такс төлдөг гэж үзье.
- Такстай бараа нь6 %-ийн татвар төлдөг
- calculateTax() функцтэй байна гэж үзье.


Эхлээд Бараа(Goods) классыг тодорхойлъё.
class Goods{
String description;
double price;
Goods(String des, double pr){description=des; price=pr;}
void display() {
System.out.println("Product: "+description+" Price: "+price); }
}

Бараа (Goods) классаас удамшсан Food классыг тодорхойлъё. (Хүнсний бараа нь бараа бүтээгдэхүүний нэгэн хэлбэр гэдэг утгаар)
class Food extends Goods{
double calories;
Food(String des,double pr,double cal){
super(des,pr);
calories=cal; }
void display(){
super.display();
System.out.println("Calories: " + calories); }
}

Зарим такстай барааны (Toy, book) таксуудыг тооцохын тулд Taxable интерфэйсийг тодорхойлъё.
interface Taxable{
final double taxRate=0.06;
double calculateTax();
}

Бараа(Goods)-аас удамшсан бөгөөд такс тооцох Toy, Book классуудыг тодорхойлъё.
class Toy extends Goods implements Taxable{
int minimumAge;
Toy(String des,double pr,int min){
super(des,pr);
minimumAge=min; }
void display() {
super.display();
System.out.println("Minimum age: "+minimumAge); }
public double calculateTax(){
return price*taxRate; }
}

class Book extends Goods implements Taxable{
String author;
Book(String des,double pr,String auth){
super(des,pr);
author=auth; }
void display() {
super.display();
System.out.println("Author: "+author); }
public double calculateTax(){
return price*taxRate; }
}

Хэрэгжүүлэгч классыг тодорхойлъё.

public class Store{
public static void main(String args[]){
Goods gd=new Goods("Soap",450);
Food fd=new Food("Beef",3100,1500);
Book bk=new Book("Perfect Java",8000,"Hwang Seong Hag");
Toy to=new Toy("Doll",9000,16);
gd.display();
fd.display();
System.out.println("\n");
to.display();
System.out.println("Tax is:" +to.calculateTax()+"\n");
bk.display();
System.out.println("Tax is:" +bk.calculateTax()+"\n");
}
}

ЭССЭ гэж юу вэ? Түүнийг хэрхэн бичих вэ?

Эссэ гэж юу вэ? Эссэ бол эх зохиох , найруулан бичихийн дээд эрэмбийн эрдэм бөгөөд том санааг товч бичихийн сургууль болно. Эх бүхэн эссэ болохгүй. Харин эссэ бол эхийн онцгой төрөл мөн. Эсээг "би" төвт биеэс санаа бодлоо дурсан санах , эргэцүүлэн тунгаах , шүүн дүгнэх, магадлан батлах арга хэлбэрээр биядэг, гүехэн биш гүнзгий санааг олон биш цөөн үгээр оноч цэцтэй үг , өгүүлбэрээр илэрхийлдэг задгай зохиомжтой , чөлөөт бичлэгтэй бичиг зохиолын онцгой нэгэн төрөл мөн. Франц хэлнээс гаралтай "essee" гэх үг нь"хэлний туршлага, оролдлого, найруулал , тойм, таталбар" гэх мэт олон утгатай үг бөгөөд анх 15-р зууны үед Францын зохиолч Мишель де Монтень "эсээ" хэмээх бичил зохиолын төрлийг үүсгэн бичиж, утга зохиолд нэгэн өвөрмөц шинэ төрлийг буй болгосон гэж үздэг. Тэр цагаас хойш эсээ улс үндэстэн бүрийн их утга зохиол, сэтгүүл зүйд амжилттай өрнөн дэлгэрсэн байна.

Thursday, March 27, 2008

SW316 Лаб/ажил 3

Лабораторийн ажил 3

Сэдэв: Нөөцийн төлөөх өрсөлдөөн

Хугацаа: IV/10-11

Оноо: 4 хүртэл оноо

Бодлогын нөхцөл: Деккерийн алгоритмуудыг загварчлах

Бодогын өгөгдөл: Системд 2 загвар байгаа гэж үзнэ. Процессуудын юу хийхийг оюутан өөрөө шийднэ.

Онолын товчоо
Нөөцийн төлөөх өрсөлдөөний үед гарч ирэх солбицол, синхрончлол гэсэн хоёр ойлголт хоорондоо ялгаатай ойлголтууд юм. Солбицлын асуудал нь хамтран эзэмшиж буй өгөгдөл рүү зэрэгцээ ажиллаж буй процессууд нэгэн зэрэг хандах үед үүсдэг. Харин синхрончлолын асуудал нь ямар нэг нөхцлөөр процессуудыг ажиллах, түр зогсох үйлдлийг зохицуулах үед үүсдэг. Өөрөөр хэлбэл эдгээр асуудлууд нь процессууд хоорондоо харилцан ажиллаж байхад үүсдэг.

Олон тооны процесс зэрэгцээ ажиллаж байх явцад ямар нэг нөөцийг ашиглах хэд хэдэн хүсэлт нэгэн зэрэг ирж болно. Энэ тохиолдолд хүсэлтүүдийг зохицуулах хэрэгтэй. Гэвч ихэнх үйлдлийн систем жинхэнэ утгаараа зэрэгцээ ажиллагаатай бус харин зүгээр л зэрэгцээ ажиллаж буй сэтгэгдэл төрүүлдэг билээ.
Энэ тохиолдолд нөөцийн төлөөх өрсөлдөөн үүсэхгүй мэт боловч үнэндээ тийм биш юм.

Нэгэн жишээ авч үеье.
Доор бичсэн гараас утга аваад, дэлгэцэнд хэвлэх echo функцийг P1, P2 процессууд хамтран эзэмшиж байгаа гэж үзье. (echo функц нь нөөц мөн үү?)
void echo {
chin=getchar();
chout=chin;
putchar(chout); }

Алгоритм 5.1 echo процедур

Энэ функцийг P1, P2 процессууд дуудсан байг. P1 процесс ажиллахдаа утгыг chin хувьсагчид уншаад түр завсарласан. Харин P2 процесс нь ажиллахдаа echo функцийг бүтнээр ажиллуулсан гэж үзье. Дараа нь P1 процесс өөрийн ээлжинд ажиллаж эхлээд chout хувьсагчид chin хувьсагчийн утгыг оноогоод дараа нь chout хувьсагчийн утгыг гаргана. Гэтэл урьд нь P2 процессын үр дүнд chin утга өөрчлөгдсөн тул хүссэн утгыг гаргахгүй.
P1 процесс ажиллаж байна
chin=getchar(); // chin=100 болсон гэж үзье
Р1 процесс түр завсарлав.
Р2 процесс ажиллаж эхлэв.
chin=getchar(); //chin=120 болсон гэж үзье
chout=chin;
putchar(chout); //120 утгыг хэвлэв
P2 процесс үйл ажиллагаагаа дуусгав
Р1 процесс үргэлжлүүлэн ажиллав
chout=chin
putchar(chout); //120 утгыг гаргав
P1 процесс үйл ажиллагаагаа дуусгав

Алгоритм 5.2 Солбицлын асуудал

Дээрх жишээнд Р1 процесс 120 утга гаргаж байна. гэтэл анх Р1 процесс ажиллахдаа 100 утгыг гаднаас авсан билээ. Энэ асуудлыг шийдэхдээ echo хэмээх нөөцийг ямарваа нэгэн процесс эзэмшиж эхлэхээс өмнө өөр хэн нэгэн эзэмшиж буй эсэхийг шалгадаг байх шаардлага тавьснаар шийдэж болно.
Р1 процесс ажиллаж байна
echo нөөцийг өөр хэн ч эзэмшээгүй тул уг нөөцийг Р1 процесс эзэмшиж байгаа тухай тэмдэглээд үйл ажиллагаагаа үргэлжлүүлье

chin=getchar();

Р1 процесс түр завсарлав
Р2 процесс ажиллаж эхлэв
echo нөөцийг Р1 процесс эзэмшиж байгаа тухай тэмдэглэсэн тул уг нөөцийг эзэмшилгүйгээр үйл ажиллагааг үргэлжлүүлье
Энд ямарваа нэгэн үйлдэл хийхгүй
Р2 процесс түр завсарлав
Р1 процесс үргэлжлүүлэн ажиллав
echo нөөцийг Р1 процесс (өөрөө) эзэмшиж байгаа тухай тэмдэглэсэн тул үйл ажиллагаагаа үргэлжлүүлье

chout=chin;
putchar(chout); //100 утгыг гаргана

echo нөөцийг Р1 эзэмшиж байгаа тухай тэмдэглэлээ арилгалаа
Р1 процесс үйл ажиллагаагаа дуусгав
Р2 процесс үргэлжлүүлэн ажиллав
echo нөөцийг өөр хэн ч эзэмшээгүй тул уг нөөцийг Р2 процесс эзэмшиж байгаа тухай тэмдэглээд үйл ажиллагаагаа үргэлжлүүлье

chin=getchar(); //chin=120 болсон
chout=chin;
putchar(chout); //120 утгыг гаргана

Р2 процесс үйл ажиллагаагаа дуусгав

Алгоритм 5.3 Солбицлын асуудлыг шийдсэн нь

Систем дэх процессууд бусад процессуудын талаар ямар ч мэдээлэлгүй байх ба зөвхөн өөрт шаардлагатай нөөцийн төлөө бусадтай өрсөлдөх хэлбэрээр ажиллана.Өөрөөр хэлбэл процесс бүр өөрийн шаардлагыг хангахын төлөө л ажиллана. Энэ тохиолдолд системд доорхи асуудлууд үүсч болно.
- Солбицол (mutual exclusion,mutex) – Нэг процессын эзэмшиж буй нөөцийг өөр нэгэн процесс эзэмшихийг хүсч болно. Энэ тохиолдолд дээр дурьдсантай адил асуудал үүсч болно. Энэ асуудлыг эгзэгтэй муж (critical section) хэмээх ойлголтыг хэрэглэн шийддэг.
- Түгжрэл (deadlock) – Р1 процесс ажиллахын тулд R1 ба R2 нөөцийг өгсөн дарааллаар эзэмших ёстой. Харин Р2 процесс R2 ба R1 нөөцийг өгсөн дарааллаар эзэмших ёстой байг. Энэ тохиолдолд Р1 процессR1 нөөцийг эзэмшсэний дараа Р2 процесс R2 нөөцийг эзэмшсэн байг. Цааш аль ч процесс ажиллаж чадахгүй. Учир нь Р1 процесс ажиллахын тулд R2 нөөц хэрэгтэй. Харин Р2 процесс ажиллахын тулд R1 нөөц хэрэгтэй. Харин шаардлагатай нөөцүүдийг эзэмших боломжгүй ба R1 нөөц нь Р1 процесс ажиллаж дууссаны дараа чөлөөлөгдөнө. Харин R2 нөөц нь Р12 процесс ажиллаж дууссаны дараа чөлөөлөгдөнө. Гэтэл аль ч процесс шаардлагатай нөөцгүйн улмаас цаашид ажиллаж чадахгүй байгаа билээ.
- Гачигдал (starvation) – Р1, Р2 ба Р3 процессууд R нөөцийг эзэмшихийн төлөө өрсөлдөж байг. Р1ба Р3 процессууд нь ямар нэгэн шалтгаанаа R нөөцийг ээлжлэн эзэмшсээр Р2 процесст уг нөөцийг эзэмших боломж олгохгүй байснаар Р2 цааш хэвийн ажиллахад хүндрэл үүсч гачигдалд орж байна.

Програм хангамжид тулгуурласан шийдэл буюу солбицлын асуудлыг шийдэх алгоритмуудаас хамгийн өргөн тархсан нь
- Деккерийн
- Петерсоны алгоритмууд байдаг.

- Деккерийн алгоритм – Деккерийн алгоримтыг хоёр л процессын хувьд авч үзэх ба ерөнхий тохиолдолд авч үзэх нь хоёр процесстой тохиолдолтой ижил юм.
I хувилбар
Анхны хувилбарт санах ойн нэг мужид нэгэн зэрэг зөвхөн нэг л процесс хандаж болох техник хангамжийн чанарыг үндэслэн ажилладаг байсан. Өөрөөр хэлбэл процесс бүр эгзэгтэй мужид орох (нөөцийг дангаар эзэмших эрхээ олж авах) ээлжээ хүлээдэг. Аль нэг процесс эгзэгтэй муждаа ажиллаж дуусаад дараагийн процесст эгзэгтэй мужид орох эрхийг нь олгодог. Үүнийг алгоритмад turn хувьсагч зааж өгнө.
turn хувьсагчийн утгатай процессын дугаар тохирч байвал л уг процесс эгзэгтэй муждаа ажиллах ба харин тохирохгүй бол завгүй-хүлээлт болно. Процесс эгзэгтэй муждаа ажиллаж дуусаад дараа нь turn хувьсагчийн утгыг өөрчилнө. (Алгоритм 5.12) Жишээ: turn=0 байж байгаад turn=1 болгоно гэсэн үг. Ингэснээр 1 дугаартай процесс эгзэгтэй муждаа орох эрхтэй болно.
Var turn 0..1;
process0 //À ïðîöåññ ãýå

Var turn 0..1;
..........................
process0 //А процесс гэе

While turn!=0 do {nothing};
<Эгзэгтэй муж>
turn=1
end;
..........................
process 1 //Б процесс гэе
….
While turn!=1 do {nothing};
<Эгзэгтэй муж>
turn=0
end;
.............................
Begin
parbegin
process0;
process1;
parend;
End.

Энэ аргын үед үүсэх хүндрэлүүд
• Завгүй хүлээлт
• Процессуудын хурдны зөрөө
• Гачигдал

II алгоритм
• Деккерийн алгоритмын I хувилбарт өөр ямар нэг процесс эгзэгтэй мужид байгаа эсэхээс үл хамааран процесс эгзэгтэй муждаа орох боломжгүй болох тохиолдол байсан.
• Процесс бүр өөрийн төдийгүй, бусад процессын төлвийг мэдэх хэрэгтэй. Үүний тулд процесс бүрийн төлвийн мэдээллийг хадгалах хэрэгтэй.

Var flag:array[0..1] of boolean;
PROCESS 0
...
While flag[1] do {nothing};
flag[0]=true;
<эгзэгтэй муж>;
flag[0]=false;
...



PROCESS 1
...
While flag[0] do {nothing};
flag[1]=true;
<эгзэгтэй муж>;
flag[1]=false;
...


II хувилбарын дутагдлууд
• Процесс эгзэгтэй муждаа орохоос өмнөхөн flag утгаа true болгоод тасарвал бусад процесс эгзэгтэй мужид орж чадахгүй
• Хэд хэдэн процесс эгзэгтэй мужид орох боломжтой.
• Процесс бүр бусдын төлөвийг мэдэж болох боловч өөрчилж болохгүй .
• Процесс эгзэгтэй муждаа орохын тулд бусдыг шалгана.

III алгоритм
II алгоритмын хувилбарт хэд, хэдэн процесс нэгэн зэрэг эгзэгтэй муждаа байх боломжтой байсан. Энэ асуудлыг III хувилбарт шийдсэн.

PROCESS0 PROCESS1
. . . . . .
flag[0]:=true; flag[1]:=true;
while flag[1] do { nothing }; while flag[0] do {nothing};
<Эгзэгтэй муж> <Эгзэгтэй муж>
flag[0]:=false; flag[1] :=false;
. . . . . .

Бусад процессыг шалгахаасаа өмнө эгзэгтэй мужид орох флагаа тогтоож байна.
Флаг тогтоогдсон байхад өөр процесс эгзэгтэй мужид байгаа нь тогтоогдвол тэр процесс эгзэгтэй мужийг чөлөөлтөл процесс түр хүлээнэ.
Түгжрэл үүсэх магадлалтай . Хоёр процесс зэрэг флагаа тогтоогоод эгзэгтэй мужид орвол нэг нэгийгээ эгзэгтэй мужийг чөлөөлөхийг хүлээн түгжигдэнэ.

PROCESS0
flag[0]=true;
PROCESS1
flag[1]=true;
PROCESS0
while flag[1] do {nothing};
PROCESS1
while flag[0] do {nothing};
Эндээ харахад III хувилбар нь түгжрэлд хүргэж болох юм.

IV хувилбар
• Өмнөх хувилбаруудад процесс бүр зөвхөн өөрийгөө л эгзэгтэй мужид байх цорын ганц эрхтэй гэж үзэж байснаас түгжрэл үүсч байсан.
• Иймээс өөрийн флагаа тогтоогоод бусдыг шалгаж, хэрэв өөр нэгэн процесс эгзэгтэй муждаа байвал түүнийг гартал нь хүлээх арга.

PROCESS 0 PROCESS 1
flag[0]=true; flag[1]=true;
while flag[1] do while flag[0] do
begin begin
flag[0]=false; flag[1]=false;
<Түр хүлээх> <Түр хүлээх>
flag[0]=true; flag[0]=true;
end; end;
<Эгзэгтэй муж> <Эгзэгтэй муж>
flag[0]=false; flag[1]=false;

Процесс бүр өөрсдийн флагаа тогтоогоод , дараа нь бие биенийхээ флагийг шалгаад эргээд өөрийн флагийг тэглэх тохиолдол гарч болзошгүй . Энэ нь удаан үргэлжлэхгүй. Өөрөөр хэлбэл энэ нь түгжрэлийн байдал биш, үл ойлголцох байдал юм.

PROCESS0
flag[0]=true
PROCESS1
flag[1]=true
PROCESS0
flag[1]=true эсэхийг шалгах
PROCESS1
flag[0]=true эсэхийг шалгах
PROCESS0
flag[0]=false болгох
PROCESS1
flag[1]=false болгох ………..

Нэгдсэн алгоритм
Деккерийн алгоритмууд нь өмнөх алгоритмуудаа сайжруулан зохиогдож байсан ч үл ойлголцлын асуудлыг үүсгэж байсан. Иймээс илүү сайжруулсан өмнөх дутагдлуудыг шийдсэн алгоритмыг гаргасан бөгөөд үүнийг Нэгдсэн буюу Үндсэн алгоритм гэж нэрлэсэн.
Алгоритмын үндсэн санаа нь:
Аль нэг процесс эгзэгтэй мужид орох флагаа тогтоогоод бусад процессын флагийг шалгахад өөр ямар ч процесс эгзэгтэй муждаа байхгүй бол уг процесс эгзэгтэй муждаа шууд орно.
Эсрэг тохиолдолд “гуравдагч” хүчин зүйл буюу turn хувьсагчид хандана. Хэрэв turn хувьсагч нь өөрөөс нь өөр процесс эгзэгтэй мужид байх ёстойг зааж байвал өөрийн флагын утгыг худал болгоод, завгүй-хүлээлтийн төлөвт орох ба эсрэг тохиолдолд эгзэгтэй муж руугаа шууд орно.
За одоо алгоритмынхаа псевдо кодтой танилцъя
Var flag: array[0..1] of boolean;
turn: 0..1;
procedure P0;
begin
repeat
flag[0]:=true;
while flag[1] do if turn=1 then
begin
flag[0]:=false;
while turn=1 do {nothing};
flag[0]:=true;
end;
<Эгзэгтэй муж>;
turn:=1; flag[0]:=false;
<Бусад үйлдэл>
forever
end;
procedure P1;
. . .
end;

Begin
flag[0]:=false;
flag[1]:=false;
turn:=1;
parbegin
P0; P1;
parend;
end;

Тайлбар:
Та бүхэн <эгзэгтэй муж> гэсэн ойлголтыг өөр өөрсдийнхөө хийсвэрлэж төлөөлүүлж болно.М Жишээ нь: нэг хувьсагч байдаг ч юм уу.....

Tuesday, March 25, 2008

SW306 Лабораторийн ажил 4

Хугацаа: IV/2-3 -ны лабораторийн цагуудаас өмнө
Нөхцөл:
Энэ лабораторийн ажлыг дараах алхамтай гүйцэтгэнэ. Үүнд:
1) Сонгосон асуудлынхаа хүрээ хязгаарыг тодорхойлж, тухайн асуудлын хүрээнд хамаарах объектуудыг хэлэлц.
2) Тэдгээр объектуудын хийсвэрлэл болох классыг тодорхойл. Үүнд: Класс нь
a) Гишүүн өгөгдлийг бодит амьдралын шаардлагатай уялдуулан тодорхойлох
b) Гишүүн функцууд: get..., set... гэсэн ерөнхий зориулалтын стандарт функцуудээс гадна custom тусгай зориулалтын функц тодорхойлох.
c) Байгуулагч функцээр хангагдсан байх.
3) Тодорхойлсон классынхаа хэд хэдэн тохиолдлыг (объектыг) үүсгэж ажиллах.


Лабораторийн ажлыг дүгнэхдээ оюутан хийсвэрлэлийг хэрэгжүүлэхдээ бодит амьдралын шаардлагыг хир уялдуулан хийсвэрлэснийг голлон анхаарна.

Тайлбар:Лабораторийн ажлаа бодит амьдралын шаардлагатай уялдуулан хийсвэрлэнэ гэдэгт товчхон тайлбар хийе. Жишээ нь асуудлыг “Номын сангийн үйл ажиллагаа” –ны хүрээнд тодорхойлбол Ном ба Уншигч гэх мэт объектуудын тухай яригдана. Ийнхүү “Ном”-ыг програмчлалд хийсвэрлэхэд (Ном хэмээх классыг үүсгэхэд) түүнд ямар ямар гишүүн өгөгдлийг яагаад тодорхойлох болсон, тэдгээр гишүүн өгөгдлүүдийг ямар төрөлтэй тодорхойлох болсоныг бодит амьдралын шаардлагатай уялдуулан тайлбарлана. Жишээ нь: зарим номын сангийн програмын хувьд номыг “Хэвлэсэн хэвлэлийн газар”–ийн мэдээлэл чухал шаардлагагүй байж болох юм. Тэгвэл “Ном” классд “номыг хэвлэсэн газар” гэсэн гишүүн өгөгдөл тодорхойлох шаардлагагүй. Харин асуудлын хүрээг арай өргөн хүрээнд шийдвэрлэх үед магадгүй “Хэвлэсэн хэвлэлийн газар” гэсэн гишүүн өгөгдөл тодорхойлох хэрэгтэй болно гэх мэт. Мөн “Номын үнэ” гэсэн гишүүн өгөгдлийг монголын хувьд бүхэл тоон төрлөөр тодорхойлж болно, харин одоо ч задгай мөнгөөр гүйлгээ хийдэг япон орны хувьд бутархай тоон төрлөөр тодорхойлох шаардлагатай гэх мэтчилэн сонгосон асуудлын хүрээнээс шалтгаалан тухайн 1 объектыг өөр өөрөөр хийсвэрлэх боломжтой юм гэдгийг ойлгох нь чухал.

Энд жишээ болгон “Завь түрээслэх, завь байрлуулах үйлчилгээ эрхэлдэг байгууллагын үйл ажиллагаа”-г гаргасан програмыг үзүүлье.
Асуудлын хүрээ: “Завь түрээслэх, завь байрлуулах үйлчилгээ эрхэлдэг байгууллагын үйл ажиллагаа”
“Хөвсгөл жуулчин” ХХК нь Хөвсгөл нуурын эрэг дээр байрлах завь түрээслэх, өөрийн талбайд завь түрээсээр байрлуулах үйлчилгээ эрхэлдэг хувийн компани юм.

Тус компани нь завь байрлуулах түрээсийн төлбөрийг тооцохдоо Зогсоол (slip)-ийн өргөнөөс хамаарч 4 янзын тарифтай байна. Үүнд:

Түрээсийн төлбөрийн хүснэгт
Зогсоол Жилийн түрээсийн төлбөр
10 $800
12 $900
14 $1100
16 $1500

Уг боомт нь өөрийн үйлчлүүлэгчид, завьны түрээс, завьны талбайн түрээсийн бүртгэлийг автоматжуулах зорилгоор шинэ автоматжуулсан системтэй болохоор шийдсэн гэж үзээд тус лабораторийн ажлыг гүйцэтгэе.

1) Үйлчлүүлэгч ба Зогсоол гэсэн объектууд оршиж байна.
2) Эдгээр объектуудыг дээр тодорхойлсон асуудлын хүрээнд хийсвэрлэвэл

Үйлчлүүлэгч класс нь дараах бүтэцтэй

Customer
name
address
phoneNo
-

Тэгвэл Үйлчлүүлэгч (Customer) классын програмын бичлэг нь дараах хэлбэртэй байна.
class Customer
{ // Гишүүн өгөгдлүүд
private String name;
private String address;
private String phone;

// Гишүүн функцууд :
public String getName()
{ return name; }

public String getAddress()
{ return address; }

public String getPhone()
{ return phone; }

public void setName(String newName)
{ name=newName; }

public void setAddress(String newAddress)
{ address=newAddress; }

public void setPhone(String newPhone)
{ phone=newPhone; }

}

Slip гэдэг нь нэгж завь байрлах талбайг хэлэх бөгөөд цаашид зогсоол гэе.

Зогсоол (Slip) класс нь дараах бүтэцтэй гэж үзье.

Slip
slipID
width
slipLenght
-

Зогсоол (Slip) классын програмын бичлэг ба түүнийг шалгах програмыг авч үзье:

class Slip
{ // Гишүүн өгөгдлүүд
private int slipID;
private int width;
private double slipLength;
// Гишүүн функцууд
public Slip(int anID, int aWidth,double aSlipLength) //Байгуулагч функц
{
setSlipID(anID);
setWidth(aWidth);
setSlipLength(aSlipLength);
}
// Mutator functions буюу ерөнхий зориулалтын функуууд
public void setSlipID(int anID) { slipID=anID; }
public void setWidth(int aWidth) { width=aWidth; }
public void setSlipLength(double aSlipLength) {slipLength=aSlipLength;}

public int getSlipId() {return slipID;}
public int getWidth() {return width;}
public double getSlipLength() {return slipLength;}

//Custom functions буюу тусгай зориулалтын функцууд
public String tellAboutSelf() {
String info;
info="Slip ID="+getSlipId()+", Width="+getWidth()+", Length="+getSlipLength();
return info;
}
public double leaseSlip(){
double fee;
switch(width){
case 10: fee=800;
break;
case 12: fee=900;
break;

case 14: fee=1100;
break;

case 16: fee=1500;
break;

default: fee=0;
}
return fee;
}
}
Тайлбар: Энд Зогсоол класс нь getter, setter ерөнхий үүрэг зориулттай функцууд болон байгуулагч функцээр хангагдсан байна. Мөн түүнчлэн классын гишүүдийн утгыг хэвлэх үүрэгтэй tellAboutSelf() хэмээх Custom (хэрэглэгчийн) функцыг тодорхойлсон байна. Мөн дээр тодорхойлсон асуудлын хүрээнд завины түрээсийн төлбөр бодох leaseSlip() гэсэн Custom (хэрэглэгчийн) функц тодорхойлсон.


Тодорхойлсон ӨХТөрлүүдийнхээ хэд хэдэн тохиолдлыг үүсгэж ажиллах.

Дээр тодорхойлсон Зогсоол (Slip) классын 3 объект тодорхойлж тэдгээрийн мэдээлэл болон, түрээсийн төлбөрийн мэдээллийг хэвлэх програм зохиоё:

public class CustomerProgram {
public static void main(String args[]){

Slip slips=new Slip(1,10,20);

System.out.println(slips.tellAboutSelf());
double fee=slips.leaseSlip();

System.out.println("Fee is : "+fee+"for slip"+slips.getSlipId());

}
}
Энд тодорхойлж ашигласан объект бүр өөр өөрийн гэсэн өгөгдлийн мужтай байна.



Тайлбар: Уг нь дээр үзүүлсэн жишээтэй төстэй машин түрээсийн үйлчилгээ явуулдаг байгууллагын үйл ажиллагааг автоматжуулах сэдвээр хийлгэе гэж бодож байлаа. Гэтэл хүн бүрийн үзүүлэх програм ижил болчихож магадгүй тул оюутан бүр амьдрал дээр явагддаг өөр өөр системийг сонгон авах хэрэгтэй.
Ингээд уг системээ шаардлагын дагуу өөр өөрсдийнхөөрөө хөгжүүлж програмчлах хэрэгтэй.

Амжилт хүсье!!!!!!

Sunday, March 23, 2008

SW306 Лабораторийн ажил 3

Бодлого:
Цахилгаанчин дуудлага өгсөн айлын дугаарыг ашиглан тэр айл аль орцны хэдэн давхрын хэд дэх хаалганд байдгийг мэдэх шаардлагатай болсон. Үүнийг шийдэх програм бич.

Цахилгаанчинд дуудлага өгсөн айлын дугаар, байшингийн давхрын тоо, нэг орцны нэг давхар дахь айлын тоо мэдэгдэж байгаа.

Програмд ихэвчлэн хувьсагчын зарлагаа орхигдсон байгаа.

Групп тус бүрд програмыг бага зэргийн өөрчлөлттэйгээр өгсөн байгаа.

Хугацаа: III/26-27 -ны лабораторийн цагууд дээр

Оноо: 2 хүртэл оноо

Friday, March 21, 2008

SW316 Лаб/ажил 2

Лабораторийн ажил 2

Сэдэв: Тасалдал боловсруулах механизм
Зорилго
Энэхүү лабораторийн ажлын зорилго нь ерөнхий зориулалттай үйлдлийн системийн ажиллагаанд тасалдлын эзлэх байр суурийг ойлгож , оюутан ойлгосон загвараа хэрэгжүүлж сурах явдал юм.

Хугацаа: III/20-21

Оноо: 4 хүртэл оноо

Бодлогын нөхцөл:
Товчлуур гараар идэвхжих тасалдал, арифметик үйлдлийн утгын халилтаар идэвхжих тасалдлыг боловсруулах

Бодлогын өгөгдөл:
Програмын явцад ямар нэгэн товч дарахад үйл ажиллагаагаа зогсоож, дэлгэцэнд үг хэвлэнэ. Мөн ямар нэг утгаас ямар нэг хувьсагчийн утга хэтрэхэд алдаа гарч тасалдал үүснэ.
Санамж:
Тасалдлуудыг зөвхөн жишээ болгон авлаа. Хүсвэл өөр тасалдлыг жишээ авч болно. Системд ажиллаж байгаа процессуудыг тасалж байгааг үзүүлэх ба процессууд нь өмнөх лабораторийн ажилд ашигласан процессууд байж болно. Ер нь өмнөх лабораторийн ажлыг ашиглан 2 -р лабораторийн ажлыг гүйцэтгэсэн байх хэрэгтэй.


Дэлгэрэнгүй

Тасалдлууд

Процессор үйл ажиллагаагаа гүйцэтгэж байх явцад түүний хэвийн үйл ажиллагааг тасалдуулах хэрэгцээ гардаг. Үүнийг тасалдал ашиглан хэрэгжүүлдэг. Тасалдлын гол үүрэг нь процессорын хэвийн үйл ажиллагааг тасалдуулан процессорыг үр ашигтайгаар ашиглах боломжийг бүрдүүлэх явдал юм. Өөрөөр хэлбэл процессор ямарваа нэгэн үйл явцыг хүлээн сул зогсох бус хэвийн үйл ажиллагаагаа явуулж байхад үйл явц өрнөх хэрэгтэй болсон тухай процессорт тасалдлаар мэдээлдэг.
Тасалдлыг – техник хангамжийн ба – програм хангамжийн тасалдал гэж ангилж болно.
Програм хангамжийн тасалдал нь утгын хязгаар халих, тоог тэгд хуваах, алдаатай команд биелүүлэх, өөрт олгогдоогүй санах ойд хандах гэх мэт нөхцөл байдалд үүсч болно.
Техник хангамжийн тасалдал нь Хугацаат өдөөгч буюу таймер, Оролт/Гаралт, техник эвдрэл гэх мэт. Команд биелж байх явцад тасалдал үүсч болно.
Команд биелүүлж байх явцад тасалдал үүсэх үед хэрэв тасалдал үүсэхийг хорьсон буюу үл зөвшөөрсөн тохиолдолд процессор хэвийн үйл ажиллагаагаа цаашид үргэлжлүүлэн явуулах бол тасалдал үүсэхийг зөвшөөрсөн үед тасалдлыг шалган, тасалдлыг боловсруулах ажлыг эхэлсэн байна.
Энэ ажлыг тасалдал боловсруулагч хийнэ. Тасалдал боловсруулагч нь үйлдлийн системийн дэд хэсэг болдог ба тасалдал үүссэн үед шалгаж, зохих тасалдлыг биелүүлдэг програм хангамж юм. Процессор нь тасалдал үүссэн үед шалган хэрэв ямарваа нэгэн асуудалгүй бол тасалдал боловсруулагчийг ажиллуулна. Техник хангамжаас тасалдлын сигнал ирэхэд процессор, процессын төлвийг хадгалан тасалдлыг боловсруулаад урьд хадгалсан мэдээллээ сэргээн цаашид хэвийн ажиллана. (Зураг 8)


Энэ процессыг дэлгэрэнгүй тайлбарлая.

1. Төхөөрөмжөөс тасалдлын сигнал үүсэх
Төхөөрөмж ямарваа нэгэн үйл явц өрнүүлэх хэрэгтэй болсныг мэдэгдэн тасалдал үүсгэнэ.

2. Процессор гүйцэтгэж байгаа командаа түр зогсооно.
Тасалдал үүссэн тул процессор хэвийн үйл ажиллагаагаа түр зогсоон тасалдал биелүүлэхэд бэлтгэнэ.

3. Процессор төхөөрөмж рүү сигнал явуулна
Процессор тасалдал боловсруулахад бэлэн болсон тухай мэдээллийг төхөөрөмж рүү явуулна.

4. Процессор ПТҮ ба ПТ –ыг стект хадгална.
Процессор эргэж төлвөө сэргээх боломжтой байхын тулд ПТҮ, ПТ гэх мэт онц чухал шаардлагатай регистрүүдийг стект хадгална.

5. Тасалдлын боловсруулагчийн хаягийг ПТ –д олгох
Тасалдал боловсруулагч програмын санах ойн хаягийг ПТ –д олгосноор тасалдал боловсруулагч биелэх боломжтой болно.

6. Процессын төлвийн бусад мэдээллийг хадгалах
Тухайн мөчид ажиллаж буй процесст хамааралтай мэдээллийг хадгална. Жишээ нь: Өгөгдлийн ба хаягийн регистрийн утгууд гэх мэт

7. Тасалдал боловсруулах
Тасалдлыг боловсруулах буюу тасалдлын эх биеийг ажиллуулан шаардлагатай үйлдлийг гүйцэтгэнэ.

8. Процессын төлвийг буцааж сэргээх
6-р алхамд хадгалсан мэдээллээ эргэж сэргээж урьд нь тасарсан процессыг цааш үргэлжлүүлэн ажиллах боломжтой болгоно.
9. ПТҮ ба ПТ –ын хуучин утгуудыг сэргээн тогтоох
4 –р алхамд хадгалсан мэдээллээ буцааж сэргээн процессор хийж байсан ажлаа үргэлжлүүлэх боломжоор хангана.

Системд нэгэн зэрэг олон тасалдал үүсвэл яах вэ? гэдэг асуудал гарч ирнэ. Энэ тохиолдолд тасалдлыг боловсруулах үндсэн 2 арга байна.

1. Тасалдлыг дараалж боловсруулах
Хамгийн эхэнд үүссэн тасалдал боловсруулагдаж дуустал өөр ямар ч тасалдал боловсруулахгүй. Өөрөөр хэлбэл Эхэнд Ирсэн Эхэнд Гарах буюу FIFO зарчим юм.
2. Тасалдлыг зэрэглэлээр боловсруулах
Зарим тасалдал нь бусдаас илүү өндөр зэрэглэлтэй байж болно. Өөрөөр хэлбэл одоо боловсруулагдаж буй тасалдлаас илүү өндөр зэрэглэлтэй тасалдал үүсвэл одоо боловсруулж буй тасалдлаа таслан шинээр үүссэн тасалдлыг боловсруулна.
Жишээ нь: техникийн эвдрэлийн тасалдал нь хамгийн өндөр зэрэглэлтэй тул ямар ч тасалдлыг боловсруулж байсан техник хангамж эвдэрсэн тохиолдолд тасалдал түүнийг таслан ажиллана гэсэн үг юм.


(а) тохиолдолд Х тасалдлыг боловсруулж байхад У тасалдал өөрийн ээлжээ хүлээж байна. Харин (b) тохиолдолд Х тасалдлыг боловсруулж байхад илүү өндөр зэрэглэлтэй У тасалдал таслан орж байна.
Хэрэв тасалдлын эх бие буюу тасалдлын код байрлаж байгаа хаягийг өөрчлөх эсвэл тасалдлын эх кодыг өөрчлөх боломжтой бол яах вэ? Энэ тохиолдолд дурын програм үйлдлийн системийн тасалдлын тухай мэдээлэлд чөлөөтэй нэвтрэн, өөрчилж өөрт болон бусдад түвэг удна. Иймээс хэрэглэгчийн горимд ажиллаж буй програмуудад хандаж болох санах ойг зааж өгсөн байдаг.
Хэрэглэгчийн горимд байгаа програм ямарваа нэгэн хаяг руу хандах хүсэлт гаргах бүрд дээрх хаягтай харьцуулан шалгаж, хэрэв зөвшөөрөөгүй хаягт хандах гэж буй бол алдаа гарган зогсоодог.
Харин удирдлагын горим дахь програм нь санах ойн ямар ч мужид чөлөөтэй хандах эрхтэй байдаг.

Практик хэрэгжүүлэлт

Энэ лабораторийн ажлыг өмнөх лабораторийн ажлыг өргөтгөх замаар хийнэ. Тасалдлыг хэлбэрээс үл хамааран нэг л хэлбэрийн тасалдал хэлбэрээр зохион байгуулна. Тасалдал боловсруулагчийг дуудахын тулд тасалдал үүссэн эсэхийг заадаг нэг хувьсагч авах хэрэгтэй.
Процессын эх бие дотор тасалдал үүссэн эсэхийг л шалгана. (үнэндээ энэ нь техник хангамжаар хийгддэг) Тасалдлыг ажиллуулах (боловсруулах) ажлыг тасалдал боловсруулагч гүйцэтгэнэ. Мөн тасалдал боловсруулагч нь тасалдал үүсч болох эсэхийг шалгана.
Бүх тасалдлыг хэлбэрээс үл хамааран нэг аргаар дуудах ёстой. Мөн тасалдал дуудахын өмнө системд шаардлагатай мэдээллийг (энэ лабораторийн хувьд зөвхөн регистрүүд гэж үзье) стект хадгалдаг. Харин тасалдал ажиллаж дуусахад мэдээллийг эргэж сэргээдэг. Системийн стекийг массиваар дүрсэлье. Регистрүүдийг бүхэл тоон хувьсагчдаар дүрсэлье.
int ax, bx, cx, dx; // ерөнхий регистрүүд
int stackp=0; // стекийн оройн заагч регистр
int stack[100]; // стек
Шаардлагатай мэдээллийг сануулах үйлдлийг хийдэг функцийг Push, сэргээх үйлдийг функцийг Рop гэж нэрлэе.
void Push(){
stack[stackp++]=ax; stack[stackp++]=bx;
stack[stackp++]=cx; stack[stackp++]=dx;
}
void Pop(){
dx=stack[stackp--]; cx=stack[stackp--];
bx=stack[stackp--]; ax=stack[stackp--];
}

хэлбэрээр хийж болно. Тасалдал боловсруулагч нь тусдаа нэг функц байх хэрэгтэй. Процессын эх бие дотор тасалдал үүсэхэд харгалзах тасалдал үүссэн тухай мэдээллийг процессорт өгөхөөс бус тасалдал боловсруулдаггүй.
Өөрөөр хэлбэл тасалдал үүссэн тухай хувьсагчаар заагаад түүнийг диспитчер шалгаад, шаардлагатай бол тасалдал боловсруулагч дууддаг байдлаар гүйцэтгэвэл зохино.
void IntrProcess(){
……….
Push();
……….
Pop();
}

Өөрдсийн програмдаа энэ загварыг өргөтгөх хэрэгтэй.
Оюутан өөрөө ажлыг сайжруулж хэд хэдэн хэлбэрийн тасалдлыг боловсруулдгаар хийж болно. Тэгвэл ямар хэлбэрийн тасалдал үүссэн бэ? гэдгээс хамааран өөр өөр тасалдал боловсруулагчийг дууддаг байх хэрэгтэй. Ямар хэлбэрийн тасалдал үүсэхэд ямар тасалдал боловсруулагчийг дуудахыг мэдэхийн тулд бид тасалдлын вектор хүснэгтээ өөрсдөө хийнэ.

Гэхдээ үүнийг албан ёсоор шаардахгүй.

Санамж:
Энэ ажлыг хийхдээ оюутан дараах зүйлсийг зайлшгүй тооцож хийх хэрэгтэй.
1. Тухайн тасалдлуулдын хэлбэрээс хамаарахгүйгээр түүнийг боловсруулах үйл ажиллагаа нэг байна. Өөрөөр хэлбэл тасалдлыг боловсруулахдаа тасалдал боловсруулах схемийн дагуу боловсруулна.
2. Тасалдал боловсруулах болсон тухай командыг төв процессор авна. Энэ үеийг тасалдлын захиалга гэнэ.
3. Тухайн тохиолдолд төв процессорыг эзэмшиж байсан процессын бүх төлөвүүд регистрүүдийн утгыг санах ойд зориулалтын газар хадгална.
4. Тасалдлын векторын хүснэгтээс тасалдлын боловсруулагчийн хаягийг уншина.
5. Тасалдлыг боловсруулах
6. Тасалдсан процессын төлөвийг (регистрүүдийн утгыг) сэргээнэ.
7. Тасалдсан процесс үйл ажиллагаагаа үргэлжлүүлнэ.
8. Тасалдал идэвхжих нөхцлөө сайн шалгах

Thursday, March 20, 2008

SW316 Лаб/ажил 1

Лабораторийн ажил 1

Процесс ба процесс удирдах дэд систем
Бодлогын нөхцөл: Доох өгөгдлийг ашиглан
1. Дараалсан
2. Зэрэгцээ буюу паралель
3. Түр зогссон процессын загвар хэрэгжүүл.

Хугацаа: III/7

Оноо: 4 хүртэл оноо

Зорилго
Энэ лабораторийн ажлын зорилго нь хугацааны хуваалттай үйлдлийн системийн ажиллагааг ойлгож, оюутан ойлгосон загвараа хэрэгжүүлж сурах явдал юм.

Бодлогын өгөгдөл
3 процессын хувьд дээр дурьдсан үйлдлүүдийг хэрэгжүүл. Үүнд процесс нь яг ямар үйлдэл хийхийг оюутан өөрөө шийднэ. Үүнд лабораторийн ажлын ажлын жишээнд өгсөн процессыг ашиглахыг хориглоно.

Онолын товчоо
Процесс нь үйлдлийн системд зэрэгцээ буюу паралель ажиллаж болохоос гадна зарим дараалсан горимд ажилладаг. Энэ нь аль нэг процессыг ажиллаж дуустал өөр ямар ч процесс ажиллахгүй буюу нөгөө талас авч үзвэл пролцесс төв процессорыг үйл ажиллагаагаа дуусан дуустал эзэмшинэ гэсэн үг.
Энэ нь хугацааны хуваалт биш юм. Мөн олон бодлогын горимтой үйлдлийн систем гарч ирэхээс өмнөх бүх үйлдлийн систем ийм хэлбэрээр ажиллуулдаг байсан.
Хэрэглэгчийн хүсэлтээр буюу системийн шаардлагаар процесс түр зогсож болно. Энэ тохиолдолд:
- Зэрэгцээ горимд ажиллаж байгаа бол бусад бүх процесс хэвийн үйл ажиллагаагаа үргэлжлүүлнэ.
- Дараалсан горимд ажиллаж байгаа бол түр зогсож байгаа процесс цааш үйл ажиллагааг үргэлжлүүлэн ажиллаж дуустал бүх процесс процессорыг эзэмших эрхгүй байсаар байх болно.
Процесс хооронд удирдлага шилжихдээ төв процессорыг эзэмшихээ больж буй процесс өгөгдлөө сануулдаг бол төв процессорыг эзэмших эрх олж авч буй процесс нь сануулсан өгөгдлөө процессорын өгөгдлийн бүтцүүдэд (регистрүүд гэх мэт) ачаалдаг.

Практик хэрэгжүүлэлт
Энэ ажлыг хийхэд хамгийн гол зохион байгуулах үйл ажиллагаа нь процессуудыг нэгж үйлдлээр ажилладаг болгох явдал юм. Учир бодит үйлдлийн системд процесс хооронд удирдлага шилжүүлэх ажлыг техник хангамж хариуцдаг ба бидний лабораторийн ажлын хүрээнд ямарваа техник хангамжийг дахин програмчлах асуудал тавигдахгүй.

Нэг алхамд хуваах үйлдлийг жишээн дээр авч үзвэл:
Жишээ 1:1 –ээс 10 хүртэл натурал тоог хэвлэж харуулдаг процесс авч үзвэл үүнийг ердийн хэлбэрээр програмчилбал нэг л давталт шаардлагатай.
main()
{
int i;
for(i=1;i<=10;i++) printf("\n%d",i);
}
Тэгвэл үүнийг нэгж алхмаар ажилладаг хэлбэрээр програмчилбал циклээ нэгж үйлдлээр нь задлах хэрэгтэй. Жишээ 2:
main()
{
int i=1;
while(i<=10) {
printf("%d\n",i); i++;
}
printf("End\n%d",i);
}
Дээрх жишээг авч үзвэл тухайн i хувьсагчийн утга програмын турш хадгалагдана. Иймээс процедураас гарсан ч гэсэн i хувьсагчийн утга хадгалагдана. Өөрөөр хэлбэл үйл ажиллагаа үргэлжлэх боломжтой. Ингэж програмын хувьсагчдын утга хадгалагдаж байгаа нь бодит үйлдлийн системийн дараах санааг илэрхийлдэг.

Бодит үйлдлийн систем: Үйлдлийн систем нэг процессын нэг блок үйлдлийг хийгээд, дараагийн процессын нэг блок үйлдлийг хийх гэх мэтээр олон процессыг зэрэг ажиллуулдаг ба процесс болгоны биелэгдэж байгаа төлөв, утгууд, регистрүүдийг хадгалдаг учраас дараа уг процессыг дахин үргэлжлүүлж ажиллуулж болдог. Үүнээс гадна програмууд өөрийн хувьсагчид болон өгөгдлөө өөрийн өгөгдлийн муждаа хадгалдаг учир өөр ямар ч програм түүний өгөгдөлд хандаж өөрчилж чадахгүй.
Бодит үйлдлийн системийн эдгээр санааг тухайн хувьсагчийн утга хадгалагдаж байгаагаар төлөөлүүлж ойлгож болох юм.
Жишээ 2 дээр тухайн процессын үйл ажиллагаа төгсгөлдөө хүрсэн эсэхийг шалгаж байна. Өөрөөр хэлбэл процесс өөрөө өөрийгөө дуусгах, хаах санаачлагыг тавьж байна гэсэ үг. Бодит үйлдлийн системд ч гэсэн процесс өөрөө өөрийгөө хаах буюу дуусгах санаачлагыг тавьдаг.
Хэрэв дуусаагүй бол процессын үйл ажиллагаа нэгж алхмаар ахиж байна. Өөрөөр хэлбэл процесс ажиллаж байна.

Дараалж ажиллах процессын жишээг үзье.
Энэ нь хамгийн хялбар загвар юм. Системд нэг алхмаар ажиллах p1(), p2(), p3() гэсэн процессууд байя гэж үзье. Эдгээр 3 процессыг дараалж ажиллуулах, зэрэг ажиллуулах жишээ авч үзье. Жишээ 3:
main()
{
p1();
p2();
p3();
}
p1(){
int x; scanf("%d",&x); printf("%d",x); }
p2()
{
int i; printf("Utga= "); scanf("%d",&i); printf("%d",i*i); }
p3() { int i; for(i=1;i<=10;i++) printf("%d\n",i); }


Одоо зэрэгцээ ажиллах загварыг авч үзье. Энэ загвар нь тийм ч төвөгтэй бус бөгөөд солбицлын асуудлыг л зөв шийдэх хэрэгтэй.
Жишээ 4:
int k1=0, k1=0, k2=0; //k1, k2, k3 хувьсагчид харгалзах дугаар бүхий процесс ажиллаж дууссан эсэхийг заана.
while(k1=0||k2=0||k3=0) // ядаж нэг процесс нь ажиллаж байна.
{
if(k1==0) k1=p1(); // p1 процесс ажиллаж дуусаагүй бол ажиллуул.
// Хэрэв дууссан бол ажиллуулахгүй.
If(k2=0) k2=p2(); // p2 процесс ажиллаж дуусаагүй бол ажиллуул.
// Хэрэв дууссан бол ажиллуулахгүй.
If(k3=0) k3=p2(); // p3 процесс ажиллаж дуусаагүй бол ажиллуул.
// Хэрэв дууссан бол ажиллуулахгүй.
}

Хэрэв процессыг зэрэгцээ бус дараалсан байдлаар ажиллуулахыг хүсвэл явах вэ?
Үүнийг зэрэгцээ горимтой төстэй байдлаар гүйцэтгэж болно.
Жишээ 5:
int k1=0, k2=0, k3=0; // k1, k2, k3 хувьсагчид нь харгалзах дугаар бүхий процесс ажиллаж дууссан эсэхийг заана.
// 3 процесс нэг нэг алхам ажиллаж байна.
while(k1==0) k1=p1(); // p1 процесс ажиллаж дуусаагүй бол ажиллуул.
// дууссан бол дахиж ажиллахгүй.
while(k2==0) k2=p2(); // p2 процесс ажиллаж дуусаагүй бол ажиллуул.
// дууссан бол дахиж ажиллахгүй.
while(k3==0) k3=p3(); // p3 процесс ажиллаж дуусаагүй бол ажиллуул.
// дууссан бол дахиж ажиллахгүй.

// Бүх процесс амжилттай ажиллаж дууслаа
Жишээ 5 –д процессууд 1, 2, 3 дарааллаар ажиллаж байна. Мөн Жишээ 4 –д бүх процесс зэрэгцээ ажиллаж байна. Гэтэл хэрэглэгч процессыг 2, 1, 3 дарааллаар цуваа ажиллуулах, эсвэл зөвхөн 2, 3 дугаартай процессыг зэрэгцээ ажиллуулахыг хүсч болно. Иймээс эдгээр боломжийг програмдаа тусгаж өгөх хэрэгтэй.

SW306 Лабораторийн ажил 2

Нөхцөл: InputData, PrintData гэсэн хоёр класс үүсгэнэ. InputData класс нь гараас утга хүлээн авна, PrintData класс нь InputData классын гараас өгсөн утгыг хэвлэнэ.

Хугацаа: III/13,14 -ний лабораторийн цагуудаас өмнө

Оноо: 2 хүртэл оноо