Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

u.cs101 "Алгоритм ба програмчлал" Лекц №2

2,563 views

Published on

Си хэл дээрх бүтэцлэгдсэн програм хөгжүүлэлт

Published in: Software
  • Be the first to comment

u.cs101 "Алгоритм ба програмчлал" Лекц №2

  1. 1. Лекц №2 Си хэл дээрх бүтэцлэгдсэн програм хөгжүүлэлт А. Хүдэр 112/16/2015Vanderbilt university
  2. 2.  Алгоритм ◦ Псевдокод ба блок-схем  Удирдлагын бүтцүүд ◦ Дараалсан бүтцүүд ◦ Сонголтын бүтцүүд (if сонголтын бүтэц ба if..else сонголтын үйлдэл) ◦ Давталтын бүтцүүд (програм дахь үйлдлүүдийг давтан биелүүлэх while давталтын үйлдэл)  Дээрээс – доош чиглэлд сайжруулах замаар хийгдэх бүтцийн програмчлал  Утга олгох, нэмэгдүүлэх ба хорогдуулах оператор  Дүгнэлт 212/16/2015Vanderbilt university
  3. 3.  Алгоритмын зорилго – тооцоолох бодлогууд ◦ Тэдгээрийг хэд хэдэн үйлдлүүдийг тусгай дарааллаар биелүүлснээр бодож болно  Алгоритм: ◦ Биелэгдэх үйлдлүүд ◦ Тэдгээр үйлдлүүдийг биелүүлэх дараалал  Програмын удирдлага ◦ Үйлдлүүд ямар дарааллаар биелэгдэхийг заах  Алгоритмыг дүрслэх хоѐр арга ◦ Псевдокод – өдөр тутмын хэлтэй адил ◦ Блок–схем – график дүрслэл 312/16/2015Vanderbilt university
  4. 4.  Псевдокод ◦ Алгоритмыг хөгжүүлэхэд туслах хиймэл, мэдээллийн хэл ◦ Өдөр тутмын хэлтэй адил ◦ Компьютер дээр биелэгдэхгүй ◦ Програмыг бичихээсээ өмнө “зохион бүтээх”-эд туслана  Харгалзах Си програм руу хөрвүүлэхэд хялбар  Зөвхөн биелэгдэх үйлдлүүдээс тогтоно, өөрөөр хэлбэл тайлбар болон хувьсагч зарлах үйлдлүүд байхгүй 412/16/2015Vanderbilt university
  5. 5.  Блок-схем ◦ Алгоритмыг график дүрслэл ◦ Тусгай дүрсүүдийг болон тэдгээрийг холбосон биелэгдэх шугам гэж нэрлэгдэх сумнуудыг ашиглан зурна ◦ Тэгш өнцөгт (үйл ажиллагааны дүрс)  Ямар нэг үйл ажиллагааг заана ◦ Зууван дүрс:  Програмын эсвэл кодын хэсгийн эхлэл төгсгөлийг заана ◦ Нэг оролт/нэг гаралттай удирдлагын бүтцүүд  Нэг удирдлагын бүтцийн гаралтыг дараагийн удирдлагын бүтцийн оролттой холбоно (удирдлагын бүтцийг залгах)  Програмыг бичихэд хялбар болгоно 512/16/2015Vanderbilt university
  6. 6.  Алгоритм ◦ Псевдокод ба блок-схем  Удирдлагын бүтцүүд ◦ Дараалсан бүтцүүд ◦ Сонголтын бүтцүүд (if сонголтын бүтэц ба if..else сонголтын үйлдэл) ◦ Давталтын бүтцүүд (програм дахь үйлдлүүдийг давтан биелүүлэх while давталтын үйлдэл)  Дээрээс – доош чиглэлд сайжруулах замаар хийгдэх бүтцийн програмчлал  Утга олгох, нэмэгдүүлэх ба хорогдуулах оператор  Дүгнэлт 612/16/2015Vanderbilt university
  7. 7.  Дараалан биелэгдэх ◦ Үйлдлүүд бичсэн дарааллаараа цувран биелэгдэнэ  Удирдлага шилжүүлэх ◦ Дараачийн биелэгдэх үйлдэл нь яг дарааллаараа сонгогдохгүй байх ◦ goto үйлдлийг хэт их хэрэглэвэл олон асуудал гарна  Бүх програмыг доорх гурван удирдлагын бүтцийг ашиглан бичдэг ◦ Дараалсан бүтэц: Си-гийн үндсэн бүтэц. Энгийн нөхцөлд програмууд дараалсан байдлаар биелэгдэнэ ◦ Сонголтын бүтэц: Си хэлэнд гурван төрөл байна: if, if…else, switch ◦ Давталтын бүтэц: Си хэлэнд гурван төрөл байна: while, do…while, for 712/16/2015Vanderbilt university
  8. 8. 812/16/2015Vanderbilt university
  9. 9.  Сонгох бүтэц ◦ Үйл явдлын олон төрлийн үргэлжлүүлэх замаас сонгоход хэрэглэгдэнэ ◦ Псевдокод нь: Хэрэв оюутны оноо 74-өөс их буюу тэнцүү бол “Тэнцсэн” гэж хэвлэх ◦ Хэрэв нөхцөл үнэн бол  Хэвлэх үйлдлийг гүйцэтгээд програм дараагийн үйлдэл рүү шилжнэ  Хэрэв худал бол хэвлэх үйлдлийг алгасч програм дараагийн үйлдэл рүү шилжнэ  Догол мөр нь програмын уншигдах байдлыг сайжруулна  Си хэл нь хоосон тэмдэгтүүдийг авч үзэхгүй 912/16/2015Vanderbilt university
  10. 10.  Ромбо (шийдвэрийн дүрс) ◦ Шийдвэр гаргах гэж байгааг заана ◦ Үнэн эсвэл худал байж болох илэрхийллийг агуулна ◦ Нөхцлийг шалгаад харгалзах замыг сонгоно  Шийдвэрийг ямар ч илэрхийллийг ашиглан гаргаж болно  тэг – худал  тэг биш – үнэн  Жишээ  4-3 нь үнэн 1012/16/2015Vanderbilt university
  11. 11.  if ◦ Зөвхөн нөхцөл үнэн үед үйлдэл хийнэ  if…else ◦ Нөхцлийг үнэн байх болон худал байх аль аль тохиолдолд хийгдэх үйлдлүүдийг заана  Псевдокод Хэрэв оюутны оноо 74-өөс их буюу тэнцүү бол “Тэнцсэн” гэж хэвлэх Эсрэг тохиолдолд “Унасан” гэж хэвлэх ◦ Догол мөрүүдийг сайн ажигла 1112/16/2015Vanderbilt university
  12. 12.  Си код: if( grade >= 60 ) printf(“Passedn”); else printf(“Failedn”);  Сонголтын гурвалсан үйлдэл (?:) ◦ Гурван аргументтай (нөхцөл, үнэн үеийн утга, худал үеийн утга) ◦ Дээрх кодыг дараах байдлаар бичиж болно: printf( "%sn", grade >= 60 ? “Passed" : “Failed" ); ◦ Мөн дараах байдлаар ч бичиж болно: grade >= 60 ? printf( “Passedn” ) : printf( “Failedn” ); 1212/16/2015Vanderbilt university
  13. 13.  if…else сонголтын үйлдлийн блок схем  Багтсан if…else үйлдлүүд ◦ Олон сонголттой тохиолдолд if…else үйлдлүүдийг нэгийг нь нөгөө дотор нь бичиж болно ◦ Нөхцөл биелсэн бол эсрэг тохиолдлыг орхино ◦ Хэт олон догол мөрийг практикт хэрэглэхгүй 1312/16/2015Vanderbilt university
  14. 14.  Багтсан if…else сонголтын үйлдлийн псевдокод Хэрэв оюутны оноо 90-ээс их буюу тэнцүү бол “А” – г хэвлэх эсрэг тохиолдолд Хэрэв оюутны оноо 80-аас их буюу тэнцүү бол “В” гэж хэвлэх эсрэг тохиолдолд Хэрэв оюутны оноо 70-аас их буюу тэнцүү бол “С” гэж хэвлэх Эсрэг тохиолдолд Хэрэв оюутны оноо 60-аас их буюу тэнцүү бол “D” гэж хэвлэх Эсрэг тохиолдолд “F” гэж хэвлэх 1412/16/2015Vanderbilt university
  15. 15.  Нийлмэл үйлдэл: ◦ Их хаалтан доторх хэд хэдэн үйлдэл ◦ Жишээ: if ( grade >= 60 ) printf( "Passed.n" ); else { printf( "Failed.n" ); printf( "You must take this course again.n" ); } ◦ Их хаалтгүй бол printf( "You must take this course again.n" ); ◦ үйлдэл үргэлж биелэх болно. 1512/16/2015Vanderbilt university
  16. 16.  Синтакс алдаа ◦ Өөрөөр хэлбэл нийлмэл үйлдлийн хоѐр их хаалтны нэгийг эсвэл хоѐуланг нь мартах ◦ Хөрвүүлэгч алдааны мэдээлэл өгнө  Логик алдаа: ◦ Ажиллах үед нөлөө нь гарна ◦ Сүйрэлгүй: програм ажиллана, гэхдээ буруу гаралт гаргана ◦ Сүйрэлтэй: програм дундаасаа тасарна 1612/16/2015Vanderbilt university
  17. 17.  Давталтын бүтэц ◦ Програмист ямар нэг нөхцөл үнэн байхад давтагдах үйлдлийг зааж өгнө ◦ Псевдокод: Дэлгүүрээс авах зүйлсийн жагсаалтанд юм үлдсэн байхад Дараагийн зүйлийг авч түүнийг жагсаалтаас хасах ◦ while давталт нөхцлөө худал болтол давтагдана 1712/16/2015Vanderbilt university
  18. 18.  Жишээ: ◦ int product = 2; ◦ while ( product <= 1000 )  product = 2 * product;  while давталтын үйлдлийн блок-схем 1812/16/2015Vanderbilt university
  19. 19.  Тоолуур ямар нэг утганд хүртэл давталт явагдана  Тодорхой давталт: хэдэн удаа давтах нь мэдэгдэнэ  Жишээ: Арван оюутантай ангиас шалгалт авсан. Оноонууд нь (0-ээс 100 хүртлэх завсрын бүхэл тоонууд) гарсан. Ангийн дундаж оноог ол.  Псевдокод: ◦ Нийт оноонд тэг утга олгох  Оюутны тоолуурт нэг утга олгох ◦ Оюутны тоолуур арваас бага буюу тэнцүү байхад  Дараагийн оюутны оноог оруулах  Нийт оноон дээр уг оноог нэмэх  Оюутны тоолуур дээр нэгийг нэмэх ◦ Ангийн дунджид нийт оноог аравт хуваасан утгыг олгох  Ангийн дунджийг хэвлэх 1912/16/2015Vanderbilt university
  20. 20. 2012/16/2015Vanderbilt university
  21. 21. 2112/16/2015Vanderbilt university
  22. 22.  Алгоритм ◦ Псевдокод ба блок-схем  Удирдлагын бүтцүүд ◦ Дараалсан бүтцүүд ◦ Сонголтын бүтцүүд (if сонголтын бүтэц ба if..else сонголтын үйлдэл) ◦ Давталтын бүтцүүд (програм дахь үйлдлүүдийг давтан биелүүлэх while давталтын үйлдэл)  Дээрээс – доош чиглэлд сайжруулах замаар хийгдэх бүтцийн програмчлал  Утга олгох, нэмэгдүүлэх ба хорогдуулах оператор  Дүгнэлт 2212/16/2015Vanderbilt university
  23. 23.  Асуудал: ◦ Ангийн дунджийг олох програмыг ажиллах бүртээ дурын тооны оюутны дунджийг олдог байхаар болгож хөгжүүл ◦ Оюутны тоо мэдэгдэхгүй байгаа ◦ Хэзээ дуусахаа програм яаж мэдэх вэ?  Онцгой утга хэрэглэх ◦ Дохионы, хуурамч, флаг утга гэж нэрлэдэг ◦ “Оролтын өгөгдлийн” төгсгөлийг заана ◦ Давталт нь хэрэглэгч онцгой утгыг оруулахад төгснө. ◦ Онцгой утгыг энгийн утгуудтай холилдохгүй байхаар сонгоно (жишээ нь энэ тохиолдолд -1) 2312/16/2015Vanderbilt university
  24. 24.  Дээрээс-доош шаталсан сайжруулалт ◦ Дээд талын псевдокодоос эхлэнэ: Ангийн тестийн онооны дунджийг тодорхойлох ◦ Дээд талаа жижиг хэсгүүдэд задлаж дарааллаар нь жагсааж бичнэ: Хувьсагчдад анхны утгыг нь олгох Тестийн оноог оруулж, нэмж, тоолох Ангийн дунджийг тооцоолж хэвлэх ◦ Ихэнх програм гурван шаттай байдаг:  Эхлэл: програмын хувьсагчдад анхны утгыг нь олгоно  Боловсруулах: өгөгдлийн утгыг оруулж үүний дагуу програмын хувьсагчдыг өөрчлөх  Дуусах: тооцоо хийж, эцсийн үр дүнг хэвлэх 2412/16/2015Vanderbilt university
  25. 25.  Эхний сайжруулалт болон сайжруулалт бүрт алгоритмыг бүтнээр нь бичих ба детальчлалын зэрэг нь л өөрчлөгдөнө. 2512/16/2015Vanderbilt university
  26. 26.  Эхний шатны Хувьсагчдад анхны утгыг олгох гэдгийг сайжруулах Нийт оноонд тэг утга олгох Оюутны тоонд тэг утга олгох  Тестийн оноог оруулж, нэмж, тоолох-ыг сайжруулах Эхний оноог оруулах (онцгой утга байж болно) Хэрэглэгч онцгой утгыг оруулаагүй байхад Энэ утгыг нийт оноон дээр нэмэх Оюутны тоог нэгээр нэмэгдүүлэх Дараагийн оноог унших (онцгой утга байж болно) 2612/16/2015Vanderbilt university
  27. 27.  Ангийн дунджийг тооцоолж, хэвлэх-ийг сайжруулах Хэрэв тоолуур тэгтэй тэнцүү биш бол Нийт оноог тоолуурт хуваасан утгыг дунджид олгох Дунджийг хэвлэх эсрэг тохиолдолд “Нэг ч оноо оруулаагүй байна” гэж хэвлэх 2712/16/2015Vanderbilt university
  28. 28. 2812/16/2015Vanderbilt university
  29. 29.  Дээрээс-доош шаталсан сайжруулах процессыг псевдокодыг Си хэл рүү хөрвүүлэхэд хангалттай байдлаар детальчлагдсан байвал зогсооно  Үүний дараа Си програмыг бичихэд маш хялбар байна 2912/16/2015Vanderbilt university
  30. 30. 3012/16/2015Vanderbilt university
  31. 31. 3112/16/2015Vanderbilt university
  32. 32. 3212/16/2015Vanderbilt university
  33. 33.  Асуудал ◦ Тестийн дүнгийн хүснэгт өгөгдсөн (1=тэнцсэн, 2=унасан) ◦ Уг дүнг шинжлэх програм бич  Хэрэв 8-аас олон оюутан тэнцвэл “Төлбөрөө нэмэх”  Анхаарах зүйлс ◦ Програм яг арван тестийн дүнг боловсруулна  Тоолуураар удирдагдах давталт хэрэглэнэ ◦ Хоѐр тоолуур хэрэглэж болно  Нэг нь тэнцсэн, нөгөө нь унасан оюутнуудыг тоолох ◦ Тестийн дүн бүр 1 эсвэл 2 гэсэн утгатай тоо байна  Хэрэв уг тоо нь 1-тэй тэнцүү биш бол 2 байна гэж үзнэ 3312/16/2015Vanderbilt university
  34. 34.  Дээд түвшний агуулга ◦ Тестийн дүнг шинжилж төлбөрийг нэмэх эсэхийг шийдэх  Эхний сайжруулалт ◦ Хувьсагчдад анхны утгыг нь олгох ◦ Тестийн арван дүнг уншиж тэнцсэн, унасан тоог гаргах ◦ Тестийн нийт дүнг хэвлэж төлбөрийг нэмэх эсэхийг шийдэх  Хувьсагчдад анхны утгыг нь олгох-ыг сайжруулах ◦ Тэнцсэн тоонд тэг утга олгох ◦ Унасан тоонд тэг утга олгох ◦ Оюутны тоонд нэг утга олгох 3412/16/2015Vanderbilt university
  35. 35.  Тестийн арван дүнг уншиж тэнцсэн, унасан тоог гаргах- ыг сайжруулах Оюутны тоолуур арваас бага буюу тэнцүү байхад Тестийн дараагийн дүнг унших Хэрэв оюутан тэнцсэн бол Тэнцсэнг нэгээр нэмэгдүүлэх эсрэг тохиолдолд Унасныг нэгээр нэмэгдүүлэх Оюутны тоолуурыг нэгээр нэмэгдүүлэх  Тестийн нийт дүнг хэвлэж төлбөрийг нэмэх эсэхийг шийдэх-ийг сайжруулах Тэнцсэн тоог хэвлэх Унасан тоог хэвлэх Хэрэв 8-аас олон оюутан тэнцсэн бол “Төлбөрийг нэмэх” гэж хэвлэх 3512/16/2015Vanderbilt university
  36. 36.  Тестийн үр дүнгийн асуудлын псевдокод 3612/16/2015Vanderbilt university
  37. 37. 3712/16/2015Vanderbilt university
  38. 38. 3812/16/2015Vanderbilt university
  39. 39. 3912/16/2015Vanderbilt university
  40. 40.  Алгоритм ◦ Псевдокод ба блок-схем  Удирдлагын бүтцүүд ◦ Дараалсан бүтцүүд ◦ Сонголтын бүтцүүд (if сонголтын бүтэц ба if..else сонголтын үйлдэл) ◦ Давталтын бүтцүүд (програм дахь үйлдлүүдийг давтан биелүүлэх while давталтын үйлдэл)  Дээрээс – доош чиглэлд сайжруулах замаар хийгдэх бүтцийн програмчлал  Утга олгох, нэмэгдүүлэх ба хорогдуулах оператор  Дүгнэлт 4012/16/2015Vanderbilt university
  41. 41.  Утга олгох оператор нь утга олгох илэрхийллийг товчилно ◦ c = c + 3; үүнийг утга олгох оператор ашиглан c += 3; гэж товчилж болно.  Иймд variable = variable operator expression; хэлбэртэй үйлдлийг variable operator = expression; гэж бичиж болно.  Утга олгох операторуудын жишээ: ◦ d -= 4 (d = d - 4) ◦ e *= 5 (e = e * 5) ◦ f /= 3 (f = f / 3) ◦ g %= 9 (g = g % 9) 4112/16/2015Vanderbilt university
  42. 42. 4212/16/2015Vanderbilt university
  43. 43.  Нэмэгдүүлэх оператор (++) ◦ c += 1 гэдгийн оронд хэрэглэж болно  Хорогдуулах оператор (--) ◦ c -= 1 гэдгийн оронд хэрэглэж болно  Урьдчилан нэмэгдүүлэх ◦ Операторыг хувьсагчийн өмнө хэрэглэнэ (++c эсвэл --c) ◦ Хувьсагчийн оролцож байгаа илэрхийллийг тооцоолохын өмнө хувьсагчийн утга нэмэгдэнэ  Хожуу нэмэгдүүлэх ◦ Операторыг хувьсагчийн хойно хэрэглэнэ (c++ эсвэл c--) ◦ Хувьсагчийн утга нэмэгдэхээс өмнө илэрхийллийн утгыг тооцоолно 4312/16/2015Vanderbilt university
  44. 44.  Хэрэв c нь 5-тай тэнцүү байсан бол printf( "%d", ++c ); ◦ 6-ыг хэвлэнэ printf( "%d", c++ ); ◦ 5-ыг хэвлэнэ ◦ Аль аль үйлдлийн дараа с-гийн утга 6 болно  Хувьсагч илэрхийлэлд оролцоогүй үед ◦ Урьдчилан болон хожуу нэмэгдүүлэлт ижил нөлөө үзүүлнэ ++c; printf( “%d”, c ); ◦ Доорх код дээрх кодтой ижил c++; printf( “%d”, c ); 4412/16/2015Vanderbilt university
  45. 45. 4512/16/2015Vanderbilt university
  46. 46. 4612/16/2015Vanderbilt university
  47. 47. 4712/16/2015Vanderbilt university
  48. 48.  Алгоритм ◦ Псевдокод ба блок-схем  Удирдлагын бүтцүүд ◦ Дараалсан бүтцүүд ◦ Сонголтын бүтцүүд (if сонголтын бүтэц ба if..else сонголтын үйлдэл) ◦ Давталтын бүтцүүд (програм дахь үйлдлүүдийг давтан биелүүлэх while давталтын үйлдэл)  Дээрээс – доош чиглэлд сайжруулах замаар хийгдэх бүтцийн програмчлал  Утга олгох, нэмэгдүүлэх ба хорогдуулах оператор  Дүгнэлт 4812/16/2015Vanderbilt university
  49. 49.  Псевдокод нь зөвхөн биелэх үйлдлүүдээс тогтно  Псевдокодын эхэнд бүх хувьсагчдыг жагсааж ямар зорилготойг нь товч дурьдах хэрэгтэй  Удирдлагын дараах гурван бүтэц байна: дараалсан бүтэц, сонголтын бүтэц, давталтын бүтэц  Блок-схем бол алгоритмын график дүрслэл юм. Блок-схемийг тэгш өнцөгт (үйлдлийн дүрс), ромбо (шийдвэрийн дүрс), зууван, жижиг тойргууд болон тэднийг холбосон биелэх шугам гэж нэрлэгдэх сумнуудыг ашиглан зурна.  if, if else сонголтын үйлдлүүд  while, do…while, for давталтын бүтцүүд 4912/16/2015Vanderbilt university
  50. 50.  if-ийн биед хэд хэдэн үйлдлийг оруулахын тулд {} хаалтанд хийнэ  Тоолуураар болон онцгой утгаар удирдагдах давталт  Дээрээс-доош шаталсан сайжруулалт нь зөв бүтэцтэй програм хөгжүүлэхэд чухал арга юм  float төрөл нь бутархай тоог илэрхийнэ  Бүхэл тоо ашиглан бутархай тооны тооцоолол хийхийн тулд бүхэл тоог бутархай болгон хувиргана  Утга олгох операторууд ◦ a = a + b;  a += b;  Нэмэгдүүлэх ++ болон хорогдуулах -- унар операторууд 5012/16/2015Vanderbilt university

×