Friday, September 9, 2016

"МТ-ийн хүний нөөц -10 жил" сэдэвт семинарт урьж байна

Шинжлэх ухааны парк – Мэдээллийн технологи (ШУП-МТ) нь анх 2006 оноос эхлэн Япон улсын МТ- ийг дэмжих агентлаг (Information Technology Promotion Agency)-тай хамтран МТ-ийн инженерүүдийн ур чадварын шалгалтыг жилд 2 удаагийн давтамжтайгаар зохион байгуулсаар эдүгээ 10 жилийн хугацааг үдээд байна.

Энэхүү 10 жилийн ойн хүрээнд Монгол инженерүүдийн ур чадварыг дээшлүүлэх, олон улсын түвшинд хүргэх, мэдээллийн технологийн инженерийн шалгалтын цар хүрээг өргөжүүлэх, шалгалтын ач холбогдол, мэдээ мэдээллийг төрийн болон бизнесийн байгууллагын ажилтан, их дээд сургуулийн оюутнуудад таниулан сурталчлах зорилгоор Япон улсын МТ-ийг дэмжих агентлагтай хамтран “МТ-ийн хүний нөөцийн ур чадвар – 10 жил” сэдэвт семинарыг зохион байгуулах гэж байна.

Семинар нь 2016 оны 9 сарын 02-нд Улаанбаатар хотод, 9 сарын 05-нд Өмнөговь аймагт зохион байгуулагдах бөгөөд тус семинарт хүрэлцэн ирсэн 10 оролцогчдод МТ-ийн инженерийн шалгалтанд үнэ төлбөргүй оролцох эрхийг гардуулах болно.

Бүртгүүлэхийг хүсэгчид suvd@itpark.mn хаягаар дараах мэдээллийг илгээх бөгөөд бүртгүүлэгчдийн тоо хязгаартай.

Овог, Нэр
Ажлын газар
Утасны дугаар
И-мейл хаяг
Дэлгэрэнгүй мэдээллийг 99873748 дугаараас лавлана уу.



Эх сурвалж: 
Ч. Сувд, “‘МТ-ийн хүний нөөц -10 жил’ сэдэвт семинарт урьж байна.,” Мэдээллийн технологийн үндэсний парк, 16-Aug-2016. [Online]. Available: http://itpark.mn/itee-seminar/. [Accessed: 09-Sep-2016].

Monday, September 5, 2016

"Мэдээллийн технологийн хүний нөөцийн ур чадвар 10 жил" семинар амжилттай болж өндөрлөлөө

Мэдээллийн технологийн үндэсний парк /МТҮП/ нь Азийн бүс нутагт мэдээллийн технологийн мэргэжилтнүүдийн мэдлэг, ур чадварыг олон улсын жишигт хүргэх, үнэлэх шалгалтын системийг хөгжүүлэх, цар хүрээг тэлэх, шалгалтын ач холбогдол, мэдээ мэдээллийг төрийн болон бизнесийн байгууллага, их дээд сургуулийн оюутнуудад таниулан сурталчлах зорилгоор Мэдээллийн технологийн инженерийн шалгалт /МТИШ/-ын семинарыг “Мэдээллийн технологийн хүний нөөцийн чадвар-10 жил” сэдвийн хүрээнд 2016 оны 09 дүгээр сарын 02-нд Улаанбаатар хотноо Япон улсын мэдээллийн технологийг дэмжих агентлаг /Information Technology Promotion Agency/-тай хамтран тус паркийн 302 тоот танхимд амжилттай зохион байгууллаа.

Семинарыг нээж МТҮП-ийн ерөнхий захирал Б.Буян-Өлзий үг хэлсэн бөгөөд  тус семинарт  Япон улсын МТДА-ын МТ-ийн хэлтсийн дэд ерөнхийлөгч Ogawa Kenjii, Япон улсын  МТДА-ын МТ-ийн хэлтсийн төлөвлөлтийн тасаг, олон улсын  группын гишүүн Masamichi Yazaki, МТҮП-ийн Инкубатор бизнес хөгжүүлэлтийн төвийн дарга П.Наранцэцэг, ШУТИС-МХТС-ийн профессор багш А.Алтангэрэл, ШУТИС-МХТС-ийн дэд проф. доктор Ч. Эрдэнэбат,  Интерактив ХХК-ийн  ЗХНХ-ийн дарга Д.Жаргал нар оролцож, илтгэл тавьж, мэдээ мэдээлэл өглөө.

“Мэдээллийн технологийн хүний нөөцийн чадвар-10 жил” семинарт төрийн байгууллага, их дээд,  сургуулиудын багш, оюутнууд, хүндэт зочид, мэдээллийн технологийн чиглэлээр үйл ажиллагаа явуулдаг компаниудаас нийт 80 гаруй зочид төлөөлөгчид хүрэлцэн ирсэн бөгөөд хэвлэл мэдээллийн МҮОНТ-ММ суваг, UBS ТВ, LikeТВ, TM ТВ, NBS TB болон МОНЦАМЭ агентлаг, “Өдрийн сонин”-ы  сурвалжлагч, сэтгүүлчид хүрэлцэн ирж үйл ажиллагааны талаар мэдээ авч, сурвалжилсан юм.

Энэ удаагийн семинар нь дараах хөтөлбөрийн дагуу явагдсан ба 10 жилийн ойн хүрээнд 10 хүн үнэ төлбөргүй шалгалтанд хамрагдах эрх, 20 хүн шалгалтын төлбөрөөс 20% хөнгөлөгдөх эрхээр тус тус шагнагдлаа.

СЕМИНАРЫН ХӨТӨЛБӨР

09:30-10:00 Бүртгэл (МТҮП, 3 давхар 302 тоот)

10:00-10:10 Нээлт (МТҮП-ын ерөнхий захирал Б.Буян-Өлзий)

10:10-10:40 МТ-ийн инженерийн шалгалт Монголд (МТҮП, ИБХТ-ийн дарга П.Наранцэцэг)

10:40-11:10 Монголын МТ-ийн инженерүүдийн ур чадвар, онцлог (ШУТИС-МХТС-ийн профессор багш А.Алтангэрэл)

11:10-11:50 МТ-ийн паспорт шалгалтын танилцуулга (Японы мэдээллийн технологийн хөгжлийг дэмжих агентлагийн дэд ерөнхийлөгч Ogawa Kenji)

11:50-12:10 Завсарлага

12:10-12:40 Хувийн хэвшлийн МТ-ийн хүний нөөцийн шалгуур, эрэлт хэрэгцээ (Интерактив ХХК, ЗХНХ-ийн дарга Д.Жаргал)

12:40-13:20 МТ-ийн инженерийн суурь шалгалтын танилцуулга (Японы мэдээллийн технологийн хөгжлийг дэмжих агентлагийн дэд ерөнхийлөгч Ogawa Kenji)

13:20-13:40 Top Gun Training хөтөлбөрт оролцогчийн танилцуулга, гэрчилгээ гардуулах

13:40-14:00 Шалгалтанд хэрхэн бэлтгэх талаар зөвлөмж (ШУТИС-МХТС-ийн дэд проф. док. Ч. Эрдэнэбат)

14:00-14:20 Асуулт хариулт

14:20-14:30 Азтан шалгаруулалт




Эх сурвалж: 
Алтанцэцэг, “‘Мэдээллийн технологийн хүний нөөцийн ур чадвар 10 жил’ семинар амжилттай болж өндөрлөлөө,” Мэдээллийн технологийн үндэсний парк, 02-Sep-2016. [Online]. Available: http://itpark.mn/edm-meeting/. [Accessed: 05-Sep-2016].

Tuesday, January 5, 2016

2015 оны намрын МТ-ийн инженерийн шалгалтын дүн гарлаа

Азийн орнуудын Мэдээллийн технологийн мэргэжилтнүүдийн шалгалтын зөвлөл (ITPEC)-ийн 2015 оны намрын нэгдсэн шалгалт өнгөрсөн  10-р сарын 25-ны өдөр 20 дахь удаагаа амжилттай зохион байгуулагдсан билээ.

Энэ удаагийн шалгалт нь Мэдээллийн технологийн паспорт шалгалт (МТПШ), Мэдээллийн технологийн инженерийн суурь шалгалт (МТИСШ), Мэдээллийн технологийн инженерийн ахисан түвшний шалгалт (МТИАТШ) гэсэн 3 ангилалаар зохион байгуулагдсан бөгөөд шалгалтанд  нийт 95 хүн бүртгүүлсэнээс МТПШ-нд 14 шалгуулагч, МТИСШ-нд 52 шалгуулагч, МТИАТШ-нд 8 шалгуулагч оролцов.

Шалгалтын дүнгээр МТПШ-нд 2 шалгуулагч буюу нийт шалгуулагчдын 14.2 хувь, МТИСШ-нд 8 шалгуулагч буюу нийт шалгуулагчдын 15.3 хувь, МТИАТШ-нд 1 шалгуулагч буюу нийт шалгуулагчдын 12.5 хувь нь амжилттай дүн үзүүлж тэнцлээ.

МТПШ-ын дүнг үзүүлбэл:

МТПШ Шалгуулагчдын тоо Амжилттай шалгуулагчид
Өглөөний шалгалт   14 2 14,2%

МТИСШ-ын дүнг үзүүлбэл:

МТИСШ   Шалгуулагчдын тоо Амжилттай шалгуулагчид
Өглөөний буюу мэдлэгийн шалгалт 52 9 17,3%
Өдрийн буюу ур чадварын шалгалт 45 20 44,4%
Ерөнхий дүн 52 8 15,3%

МТИАТШ-ын дүнг үзүүлбэл:

МТИАТШ Шалгуулагчдын тоо Амжилттай шалгуулагчид
Өглөөний буюу мэдлэгийн шалгалт 7 2 28,6%
Өдрийн буюу ур чадварын шалгалт 8 1 12,5%
Ерөнхий дүн 8 1 12,5%

Шалгуулагч нь өглөөний болон өдрийн шалгалтын аль нэгэнд тэнцсэн бол нэг жилийн дотор зөвхөн тэнцээгүй шалгалтаа дахин өгч амжилттай дүн үзүүлбэл тухайн шалгуулагчийг МТИШ-д мөн адил тэнцсэнд тооцдог журамтай.

МТИШ-нд тэнцсэн шалгуулагчид:

Тэнцсэн шалгалт Овог Нэр Байгууллагын нэр
1 МТПШ Чулуун Эрдэнэбат ШУТИС-МХТС-ийн багш
2 МТПШ Чимэдрэгзэн Чойжин МУИС-ХШУИС-ийн оюутан
3 МТИСШ Рэнцэн Батзоригт Unimedia ХХК, Програмист
4 МТИСШ Баатар-Ялалт Батжаргал Хайрхан Семикондакторс ХХК
5 МТИСШ Батбаатар Дулам МУИС-ХШУИС-ийн оюутан
6 МТИСШ Үржинбадам Цацрал Жи Эн Беверижис ХХК
7 МТИСШ Сайполда Нурсолтан Оюутан
8 МТИСШ Долгорсүрэн Дэлэг МУИС-ХШУИС-ийн оюутан
9 МТИСШ Соном-Очир Өлзийбаяр ШУТИС-МХТС-ийн багш
10 МТИСШ Пүрэвдорж Нарангэрэл ШУТИС-МХТС-ийн багш
11 МТИАТШ Цоодол Лхамролом МУИС-ХШУИС-ийн багш

МТ-ийн инженерийн суурь шалгалтанд тэнцсэн тэнцэгчид нь Монгол улсын МТ-ийн мэргэшсэн болон зөвлөх инженерийн болзолыг хангахаас гадна хамгийн өндөр оноотой 1 шалгуулагч нь 2016 оны 2 дугаар сард япон улсад болох “”Top Gun Training” хөтөлбөрт үнэ төлбөргүй хамрагдах эрхтэй болж байгаа юм.

Нийт тэнцэгчиддээ Азийн 12 оронд хүлээн зөвшөөрөгдсөн сертификат гардан авч байгаад баяр хүргэн, ажлын өндөр амжилт хүсэн ерөөе. Мөн нийт хамтран ажилласан их дээд сургуулийн багш нар, төрийн болон хувийн хэвшлийн байгууллагууддаа талархал илэрхийлье.

Эх сурвалж: 
Ч. Сувд, “2015 оны намрын МТ-ийн инженерийн шалгалтын дүн гарлаа,” Мэдээллийн технологийн үндэсний парк, 16-Nov-2015. [Online]. Available: http://itpark.mn/?p=9799. [Accessed: 05-Jan-2016].

2015 оны намрын шалгалтанд тэнцэгчид сертификатаа гардан авлаа

Мэдээллийн технологийн үндэсний парк (МТҮП) нь Төрийн болон төрийн бус байгууллагуудын мэдээллийн технологийн мэргэжлийн болон мэргэжлийн бус бүхий л албан хаагчдын мэдлэгийг олон улсын стандартад нийцүүлэн үнэлэх, нэгдсэн шалгуур тогтоож, тэдний ур чадварыг сайжруулах зорилгоор Азийн орнуудын мэдээллийн технологийн мэргэжилтнүүдийн шалгалтын зөвлөл /ITPEC/-тэй хамтран “Мэдээллийн технологийн инженерийн шалгалт”-ыг 20 дахь удаагаа 2015 оны 10 дугаар сарын 25-ны өдөр амжилттай зохион байгуулсан билээ.

Тус шалгалтын 1-р түвшин буюу Мэдээллийн технологийн паспорт шалгалт (МТПШ)-нд 14 шалгуулагч, 2-р түвшин буюу Мэдээллийн технологийн инженерийн суурь шалгалт (МТИСШ)-нд 52 шалгуулагч, 3-р түвшин буюу Мэдээллийн технологийн инженерийн ахисан түвшний шалгалт (МТИАТШ)-нд 8 шалгуулагч хамрагдаж нийт 11 шалгуулагч тэнцсэн бөгөөд МТШХХГ-ын дарга Ц.Жадамбаагаас Азийн 12 оронд хүлээн зөвшөөрөгдсөн сертификатаа гардан авлаа. Жил бүрийн шалгалтанд МУИС-ХШУИС-ийн хамт олон идэвхитэй хамрагдагддаг бөгөөд энэ жилийн шалгалтанд ШУТИС-МХТС бусад сургуулиудаа манлайлан, өөрийн сургуулийн багш нараа хамруулан амжилттай оролцсонд тус сургуулийн хамт олонд талархал илэрхийлье.

Дашрамд дурдахад шалгалтанд тэнцэгчид нь Азийн 12 оронд хүлээн зөвшөөрөгдсөн сертификат гардан авахаас гадна Монгол улсын Мэдээллийн технологийн мэргэшсэн болон зөвлөх инженерийн болзолыг хангах, Япон улсад мэргэжлээрээ ажиллах, хамгийн өндөр оноотой нэг шалгуулагч нь тус улсын МТ-ийн компаниудтай танилцан, үнэ төлбөргүй сургалтанд хамрагдах зэрэг олон боломжууд нээгдэж байгаа юм.

(Жич: Дараачийн шалгалт 2016 оны 4 сарын 24-нд МТ-ийн паспорт шалгалт, МТ-ийн инженерийн суурь шалгалт гэсэн 2 ангилалаар зохион байгуулагдах бөгөөд бэлтгэх сургалтын бүртгэл: 2016 оны 3 сарын 14-өөс 3 сарын 25 хүртэл, шалгалтын бүртгэл: 2016 оны 3 сарын 21-ээс 4 сарын 18 хүртэл явагдана.)

Нийт тэнцэгчиддээ баяр хүргэе.

Эх сурвалж:

Ч. Сувд, “2015 оны намрын шалгалтанд тэнцэгчид сертификатаа гардан авлаа.,” Мэдээллийн технологийн үндэсний парк, 18-Dec-2015. [Online]. Available: http://itpark.mn/?p=9998. [Accessed: 05-Jan-2016].

Tuesday, May 26, 2015

Програм хангамжийн салбарт дадлагжигч оюутан ажиллуулах зар

ШУТИС -ийн МХТС -ийн програм хангамж мэргэжлээр суралцаж буй 3-4 курсийн оюутнуудыг 2015.6.2 -ноос 1 сарын хугацаатай дадлагжигчаар ажиллуулах хүсэлтэй албан байгууллагууд ch цэг erdenebat эт must цэг edu цэг mn хаягаар мэйл илгээгээрэй. 

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

Ч. Эрдэнэбат
2015.5.26

Tuesday, November 25, 2014

CS205 Лаб 7: While стэйтмэнттэй ажиллах нь

Зорилго:

  • Соорс коодноос while стэйтмэнтийг илрүүлэх


Тайлбар:

  • Statement классаас Loop классыг удамшуулж үүсгэ. Уг класс нь while стэйтмэнтийг агуулах юм. Дотроо test болон body гэсэн хоёр гишүүн өгөгдөлтэй.
  • Parser класст while_statement гэх функцийг бич. Уг функц нь while стэйтмэнтийг илрүүлж Loop классын объект руу өгөгдлийг нь хийх юм.
  • Боловсруулж гаргаж авсан объектуудаа хүнд ойлгомжтойгоор эвтэйхэн хэвлэх хэрэгтэй.


class Loop extends Statement:
  test
  body
  function Loop(t, b):
    this.test = t
    this.body = b
  function to_string():
    # Гишүүдээр нь ялгаж хэвлэх

class Parser:
  function statement():
    ...
    else if this.current_token is While:
      s = this.while_statement()
    ...

  function while_statement():
    # WhileStatement --> while ( Expression ) Statement
    this.current_token = this.lexer.next_token()
    this.match(LEFT_PAREN)
    t = this.expression()
    this.match(RIGHT_PAREN)
    return Loop(t, this.statement())


Боловсруулах файл:
void main()
{
  int a;
  int b;
  a = true;
  b = false;
  while(a == true && b == false)
  {
    print "ШУТИС, МХТС, КУС, CS205"
  }
}

Хугацаа:

  • XIII долоо хоног
Багш: Ч. Эрдэнэбат
2014/11/25

Tuesday, November 18, 2014

CS205 Лаб 6: If стэйтмэнт болон илэрхийлэлтэй ажиллах нь

Зорилго:

  • If стэйтмэнт болон илэрхийлэлтэй ажиллаж сурах

Тайлбар:
  • Conditional нэртэй класс зохион байгуулах хэрэгтэй. If стэймент тааралдвал Conditional классын объект үүсгэн холбогдох өгөгдлийг нь хийнэ.
  • Operator гэх классыг зохион байгуулах ёстой. Уг класс нь унар болон бинар үйлдлүүдийг боловсруулах үед хэрэглэгдэнэ.
  • Expression классаас удамшиж үүссэн Unary, Binary гэсэн классуудыг зохион байгуулах хэрэгтэй.
  • Value классаас СharValue, IntValue, BoolValue, FloatValue гэсэн классуудыг удамшуулж үүсгэ.
  • if стэйтментийг боловсруулдаг if_statement() функцийг Parser класстаа бичиж өг.
  • Файлаа боловсруулж дууссаны дараа үүсгэгдсэн объектуудыг хэвлэдэг байх ёстой.
  • Ойлгомжгүй зүйл гарвал лабын явцад псевдо коодноос чөлөөтэй асуугаарай. 
  • Доор өгөгдсөн илэрхийлэлтэй ажилладаг псевдо кодын мөн чанарыг сайн ойлгож, асуултанд хариулахдаа бэлдээрэй. 
  • Хийж дуусгачихаад лабаа шалгуулах ба тэр үедээ багшаас асуусан асуултад төвөггүй хариулах хэрэгтэй. Өөрөө бичсэн оюутан бол асуудалгүй хариулах байх. Хариулж чадахгүй түг таг хийгээд байвал бусдаас хуулсан гэж үзнэ.

Псевдо код:

class Conditional extends Statement:
  # Expression test; Statement then_branch, else_branch
  # else_branch == null means "if... then"
  test
  then_branch
  else_branch
  function Conditional(t, tb, eb = None)
    this.test = t
    this.then_branch = tb
    if eb is None:
      this.else_branch = new Skip()
    else:
      this.else_branch = eb
  function to_string():
    # Гишүүдээр нь тайлбарласан хэвлэх функц

class Operator:
  val
  function Operator(s):
    this.val = s

class Binary extends Expression:
  function Binary(o, left, right):
    this.op = o
    this.term1 = left
    this.term2 = right
  function to_string():
    # Гишүүдээ хүнд ойлгомжтойгоор хэвлэх

class Unary extends Expression:
  function Unary(o, e):
    this.op = o
    this.term = e
  function to_string():
    ...

class BoolValue extends Value:
  boolean value
  function BoolValue (v = None):
    if v is None:
      this.value = False
    else:
      this.value = v
      this.undef = False

class CharValue extends Value:
  char value = ' '
  ...

class FloatValue extends Value:
  float value = 0.0
  ...

class Parser
  ...
  function statement():
    ...
    else if this.current_token is If:
      s = this.if_statement()
    ...

  function if_statement():
    this.current_token = this.lexer.next_token()
    this.match(Left_Paren)
    t = this.expression()
    this.match(Right_Paren)
    s = this.statement()
    if this.current_token is Else:
      this.current_token = this.lexer.next_token()
      return Conditional(t, s, this.statement())
    return Conditional(t, s)

  function expression():
    e = this.conjunction()
    while this.current_token is Or:
      op = Operator(this.current_token.value)
      term1 = e
      this.current_token = this.lexer.next_token()
      term2 = this.conjunction()
      e = Binary(op, term1, term2)
    return e

  function conjunction():
    e = this.equality()
    while this.current_token is And:
      op = Operator(this.current_token.value)
      this.current_token = this.lexer.next_token()
      term2 = this.equality()
      binary = Binary(op, e, term2)
      e = binary
    return e

  function equality():
    e = this.relation()
    while this.current_token is Equals|Not_Equals:
      op = Operator(this.current_token.value)
      this.current_token = this.lexer.next_token()
      term2 = this.relation()
      e = Binary(op, e, term2)
    return e

  function relation()
    e = this.addition()
    while this.current_token is Less|Less_Equal|Greater|Greater_Equal:
      op = Operator(this.current_token.value)
      this.current_token = this.lexer.next_token()
      term2 = this.addition()
      e = Binary(op, e, term2)
    return e
  
  function addition():
    e = this.term()
    while this.current_token is Plus|Minus:
      op = Operator(this.current_token.type)
      term2 = this.term()
      e = Binary(op, e, term2)
    return e

  function term():
    e = this.factor()
    while this.current_token is Multiply|Divide:
      op = Operator(this.current_token.value)
      term2 = this.factor()
      e = Binary(op, e, term2)
    return e

  function factor():
    if this.current_token is Not|Minus:
      op = Operator(this.current_token.value)
      term = this.primary()
      return Unary(op, term)
    else:
      return this.primary()

  function primary():
    e = None
    if this.current_token is Identifier:
      e = Variable(this.current_token.value)
    else if this.current_token is IntLiteral|BoolLiteral|FloatLiteral| CharLiteral:
      e = this.literal()
    else if this.current_token is Left_Paren:
      this.current_token = this.lexer.next_token()
      e = this.expression()
      this.match(Right_Paren)
    else if this.current_token is Int|Char|Float|Bool:
      op = Operator(this.current_token.value)
      this.match(Left_Paren)
      term = this.expression()
      this.match(Right_Paren)
      e = Unary(op, term)
    else:
      print "Sum Ting Wong"
      sys.exit()
    return e

  function literal():
    if this.current_token.type is Int:
      s = this.match(TokenType.INT_LITERAL)
      return IntValue(int(s))
    else if this.current_token.type is Char:
      s = this.match(TokenType.CHAR_LITERAL)
      return CharValues(s[0])
    else if this.current_token.type is True:
      s = this.match(TokenType.TRUE)
      return BoolValue(true)
    else if this.current_token.type is False:
      s = this.match(TokenType.FALSE)
      return BoolValue(false)
    else if this.current_token is Float:
      s = this.match(TokenType.FLOAT_LITERAL)
      return FloatValue(float(s))
    throw "Энд хүрэх ёсгүй байсан"

Боловсруулах файл:
void main()
{
  int cs205;
  cs205 = 2;
  if(x == true && y == false)
  {
    cs205 = cs205 + 1;
  }
  else
  {
    cs205 = cs205 * 2;
  }

}

Хугацаа:
  • XII долоо хоног
Багш: Ч. Эрдэнэбат
2014-11-18

Friday, November 14, 2014

CS205 БД 1: For давталттай ажиллах нь

Зорилго:

  • Соорс коодноос for давталтыг таних


Тайлбар:
  • for (хувьсагч зарлах хэсэг; давталтын дуусах нөхцөл; параметр өөрчлөх хэсэг) бүтэцтэй байна.
  • TokenType класст for төрлийн токенг статик гишүүн өгөгдөл байдлаар үүсгэж бэлдэх. Энэ нь хожим шалгалт хийхэд амар болно. Заавал энэ алхамыг хийх албагүй. Хийчихвэл, бичиглэл хэмнэх юм даа. if current_token == TokenType.FOR гээд бичвэл коод чинь их аятайхан уншигдах юм. Коодын уншигдах чадвар бол маш чухал.
  • Лексер классын түлхүүр үг агуулсан жагсаалтанд for гэсэн үгийг нэмэх хэрэгтэй.
  • For гэсэн класс үүсгэх хэрэгтэй. Паарс хийж авсан зүйлсээ уг классын гишүүн өгөгдлүүд рүү хийх юм. For класс нь 3 ширхэг нөхцөл шалгах хэсэгтэй. Энэхүү гурван нөхцөл шалгалт нь байхгүй байж болно гэдгийг мөн бодолцох хэрэгтэй. Жишээ нь, for(;;) гээд хоосон бичиж болдог.
  • For класс дотроо утга учиртай, тайлбартай хэвлэх функц бичих хэрэгтэй.
  • Бие даалтын үндсэн санаа нь for давталт алдаагүй бичигдэж үү гэдгийг шалгаад алдаагүй бол хэвлээд, алдаатай бол тас гэдэргээ саваад зогсдог байх ёстой.
  • Файлыг гараас уншдаг байдлаар зохион байгуулаарай. БД -ын програм эхлэнгүүт боловсруулах файлын нэрээ оруулна уу гээд асуудаг байвал зохино.
  • БД -аа хийж гүйцэтгэсэн бол лаб, бие даалтын цагууд дээр үзүүлж тооцуулна.
  • Хугацаа өнгөрвөл ажил шалгахгүй болохыг анхааруулж байна.

Боловсруулах файл, cs205bd1.cpp:

void main()
{
  int sum = 0;
  for(int i=0; i<10; i++)
  {
     sum = 205;
  }
}


Хугацаа:

  • XIII долоо хоног


Багш: Ч. Эрдэнэбат

Monday, November 3, 2014

CS205 Лаб 5: Утга олголт болон блоктой ажиллах нь

Зорилго:

  • Соорс коодноос утга олголтыг илрүүлж сурах
  • Блок дотор буй блоктой ажиллах сурах

Тайлбар:
  • Өмнөх лаб дээрээ нэмэх байдлаар коодоо бичнэ.
  • Стэйтмэнт нь 5 янз (Statement = Skip | Block | Assignment | Conditional | Loop) байна. Гэвч энэхүү лабад зөвхөн Skip, Block, Assignment зэрэг нь л ашиглагдана. Иймд холбогдох эцэг, хүү классуудыг үүсгэх хэрэгтэй.
  • Экспрешн нь хувьсагч, утга, бинар, унар гээд олон янз бий. Ойлгомжтой, энгийн байлгах үүднээс экспрешн гэдгийг хувьсагч, утга гэж л ойлгон эцэг, хүү классуудыг нь үүсгээрэй. 
  • Лабын ажлын гол зорилго нь блок дотроос утга олголтыг таних явдал юм.
  • Блок класс дотор буй members гэдэг гишүүн өгөгдөл нь жагсаалт агуулж болдог жагсаалт гээд ойлгож болно. Пайтон хэлэнд жагсаалтын нэг элемент нь бүхэл тоо, нөгөө элемент нь стринг, гуравдах элемент нь жагсаалт байж болдог. Жишээ нь: jagsaad = [12, "arvangurav", [1, 2, 3] ]. Энэхүү жагсаад гэдэг жагсаалтын гуравдах буюу 2 дугаар индекстэй элемент нь бас нэг жагсаалт юм. 
  • Жава хэлэнд бол жагсаалтыг агуулдаг жагсаалтыг хэрэгжүүлэх нэг арга зам нь Object төрөлтэй ArrayList зарлах явдал юм. Жишээ нь, ArrayList<Object>
  • Код ажиллаж дуусангуут нэг блок буцаагдана. Түүний members гишүүн нь Statement төрлийн объект авдаг жагсаалт гээд ойлгож болно. Пайтон хэлэнд бол асуудалгүй өөрөө шийдэгдэнэ. Жаватангууд ArrayList<Statement> members гэж зарлаарай.
  • Үндсэн код нь тэрхүү буцаагдсан блокын гишүүдийг нэг бүрчлэн хэвлэнэ. Гэхдээ тааб эсвэл хоосон зай авах замаар утга учиртай хэвлээрэй. Аль нь алиндаа агуулагдаж байгааг нь харуулах үүднээс. Жишээ нь:
    • Утга олголт олдлоо
    • Блок олдлоо
      • Утга олголт олдлоо
  • Ер нь асуудлыг ингэж шийдэж болох юм гээд псевдо код бичиж өгч байгаа юм. Тэрнээс яг энэ шиг хийгээрэй гэж албадахгүй. Псевдо коодыг уншиж ойлгоод санааг нь аваад өөрийнхөөрөө хэрэгжүүлж болно. 
  • Ойлгомжгүй зүйл гарвал лабын цаг дээр багшаасаа чөлөөтэй асуугаарай. Юм хийж байгаа хүнд асуух асуулт заавал олддог. Энэ ямар аймаар лаб вэ гээд суугаад л байвал байрнаасаа хөдлөхгүй шүү дээ. 


Псевдо код:

class Statement:
  # хов хоосон класс. Абстракт класс гээд ойлгож болно.

class Skip extends Statement:
  function to_string():
    print "Хов хоосон стэйтмэнт"

class Block extends Statement:
  #members нь Statement* бүхий жагсаалт юм.
  members = list() 
  function to_string():
    for member in members:
      print member

class Expression:
  # Хов хоосон класс

class Variable extends Expression:
  # Variable = String id
  id
  function Variable(s):
    this.id = s
  function to_string():
    return str(this.id)
  
class Assignment extends Statement:
  Variable target
  Expression source
  function Assignment(t, e):
    this.target = t
    this.source = e
  function to_string():
    print "Target: ", this.target, ", Source: ", this.source

class Value extends Expression:
  #Value = IntValue|BoolValue|CharValue|FloatValue
  type
  undefined=true

class IntValue extends Value:
  value = 0
  function IntValue():
    this.type = INT
  function IntValue(v):
    this.value = v
    this.undefined = false

class Parser:
  ...
  function statements():
    block = new Block()
    while this.current_token is not RightBrace 
            and this.current_token is not EOF:
      block.members.append(this.statement())
      this.current_token = this.lexer.next_token()
    return block

  function statement():
    # Statement --> ; | Block | Assignment
    s = new Skip()
    if this.current_token is ";":
      this.current_token = this.lexer.next_token()
      return s
    else if this.current_token is LeftBrace:
      this.current_token = this.lexer.next_token()
      s = this.statements()
      this.match(RightBrace)
    else if this.current_token is float|int|char|bool:
      process_declaration() //өмнөх лабтай адил
    else if this.current_token is Identifier:
      s = this.assignment()  
    else:
      print "Statement error"
      system.exit(1)
    return s

  function assignment():
    # Assignment --> Identifier = Expression;
    # i = 77;
    if this.current_token.type is Identifier:
      target = Variable(this.current_token.value)
      this.current_token = this.lexer.next_token()
      this.match(Assign)
      source = this.expression()
      this.match(Semicolon)
      return Assignment(target, source)
    else:
      mortal_combat.fatality("Identifier")
      system.exit(1)
    return None

  function expression():
    if this.current_token is INT:
      value = this.match(int_token)
      return IntValue(int(value))
       

main():
  ...
  parser.lexer.set_file("cs205lab5.cpp")
  ...
  block = parser.statements()
  ...
  for member in block.members:
    print member
  print "Осолдохгүй ажиллаж байна даг"
  print "5 дугаар анги төгсөв"


Боловсруулах соорс код, cs205lab5.cpp:
int main()
{
  x = 5;
  {
    y = 6;
  }
}

Хугацаа:
  • X долоо хоног
  • 1 долоо хоног хоцорвол оноо хасахгүй үзнэ. 
Багш: Ч. Эрдэнэбат
2014/11/03

Tuesday, October 14, 2014

CS205 Лаб 4: Зарлагдсан хувьсагч таних нь

Зорилго:

  • Соорс кодноос зарлагдсан хувьсагчуудыг илрүүлж сурах

Тайлбар:
  • Тухайн токенг төрлийнх эсэхийг шалгадаг is_type() функцийг бичих хэрэгтэй
  • Зарлагаа нь дараах бүтэцтэй байна гэж тооцоолж кодоо бичих хэрэгтэй --> Type Identifier { , Identifier }; Жишээ нь:
    • float f;
    • int i, k;
    • char c;
  • Тухайн нэг зарлагааг боловсруулах declaration() гэдэг функцийг бич.
  • Зарлагааг агуулах Declaration гэдэг класс бичиж холбогдох кодуудыг нь бич.
  • Энэхүү зарлагааг таниж боловсруулах код нь өмнөх лаб дээр хийсэн Parser класс дотор байршина.

Псевдо код:

class Declaration:
  variable_name
  value

  function __baiguulagch__(var, val):
    this.variable_name = var
    this.value = val
  
  function to_string():
    print "Variable: ", this.variable_name
    print "Type: ", this.value


class Parser:
  ...
  List declarations
  
  function process_declarations():
    while this.is_type() and this.current_token is not EOF:
      this.declaration()
      this.current_token = this.lexer.next_token()
    
  function is_type():
    if this.current_token is int or bool or char or float:
      return true
    else:
      return false
  
  function match(Token tok):
    value = this.current_token.value
    if this.current_token.type equals tok.type:
      this.current_token = this.lexer.next_token()
    else:
      print "Буруу токен байна"
      print "Хүсч буй токен нь: ", tok.type
      print "Файлаас уншсан токен нь: ", this.current_token.type
      print "Би явлаа баяртай, битгий араас дуудаарай"
      system.exit(1)
    return value
    
      
  function declaration():
    dec_type = this.current_token.value
    while this.current_token is not semicolon:
      this.current_token = this.lexer.next_token()
      Token identifier_tok = Token("identifier", "")
      variable_name = this.match(identifier_tok)
      this.declarations.append(Declaration(variable_name, dec_type))
      while this.current_token is comma:
        this.current_token = this.lexer.next_token()
        var_name = this.match(new Token("identifier", ""))
        this.declarations.append(Declarations(var_name, dec_type))
    this.match(semicolon_token)
    
  function print_declarations():
    for dec in this.declarations:
      dec.to_string()

main():
  ...
  parser.lexer.set_file("cs205lab4.cpp")
  parser.process_headers()
  parser.match(left_brace)
  parser.process_declarations()
  parser.match(right_brace)
  parser.print_declarations()
  print "алдаа заасангүй, би лаб 4 -өө хийчлээ"
  print "lab4 дуусав."   
     

cs205lab4.cpp:
int main()
{
  float f;
  int i, k;
  char c;
}

Хугацаа: 
  • VII долоо хоног
Багш: Ч. Эрдэнэбат
2014-10-14