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 "Алгоритм ба програмчлал" Лекц №3

2,429 views

Published on

Си хэлэн дэх програмын удирдлага

Published in: Software
  • Be the first to comment

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

  1. 1. А. Хүдэр 1Vanderbilt-ийн их сургууль 12/16/2015
  2. 2.  Үйлдлүүдийг програмд давтан биелүүлэх while, for, do...while давталтын үйлдлүүд;  Програмын удирдлагын урсгалыг өөрчлөх програмын удирдлагын break болон continue үйлдлүүд;  switch сонголтын үйлдэл;  Удирдлагын үйлдэл дотор нийлмэл нөхцөлт илэрхийлэл үүсгэх логик операторууд  Тэнцүүг шалгах болон утга олгох үйлдэл  Бүтцийн програмчлалын хураангуй  Дүгнэлт (энхмэнд, золжаргал) 2Vanderbilt-ийн их сургууль 12/16/2015
  3. 3.  Давталт ◦ Ямар нэг нөхцөл үнэн байхад компьютер давтан биелүүлэх бүлэг команд  Тоолуураар удирдагдах давталт ◦ Тодорхой давталт: давталт хэдэн удаа биелэгдэх нь мэдэгдэнэ ◦ Давталтын тоог тоолох хяналтын хувьсагчтай  Онцгой утга ашигласан давталт ◦ Тодорхойгүй давталт ◦ Давталтын тоо тодорхойгүй үед хэрэглэнэ ◦ Онцгой утга нь “өгөгдлийн төгсгөлийг” заана 3Vanderbilt-ийн их сургууль 12/16/2015
  4. 4.  Тоолуураар удирдагдах давталтын шаардлага: ◦ Удирдлагын хувьсагчийн нэр (эсвэл давталтын тоолуур) ◦ Удирдлагын хувьсагчийн анхны утга ◦ Давталтын явцад удирдлагын хувьсагч хэдээр ихсэх (эсвэл багасах) ◦ Удирдлагын хувьсагчийн эцсийн утгыг шалгах нөхцөл (өөрөөр хэлбэл давталт үргэлжлэх эсэхийг шалгах) Vanderbilt-ийн их сургууль 412/16/2015
  5. 5.  Жишээ: int counter = 1; /* initialization */ while ( counter <= 10 ) { /* repetition condition */ printf( "%dn", counter ); ++counter; /* increment */ }  Үйлдэл int counter = 1; ◦ counter гэж нэрлэнэ ◦ Бүхэл тоон төрөлтэй гэж зарлана ◦ Түүнд зориулж санах ойд зай нөөцлөнө ◦ Анхны утгыг нь 1 гэж заана Vanderbilt-ийн их сургууль 512/16/2015
  6. 6. Vanderbilt-ийн их сургууль 612/16/2015
  7. 7.  Товч код ◦ Си дээр програмчлагчид кодоо хураангуйлдаг ◦ counter – т тэг утга олгоно while ( ++counter <= 10 ) printf( “%dn, counter ); Vanderbilt-ийн их сургууль 712/16/2015
  8. 8.  Тоолуураар удирдагдах давталтыг бутархай тоон хувьсагчаар удирдах нь тоолуурын утгын болон дуусах нөхцлийн нарийвчлалын асуудалд хүргэнэ ◦ Шалтгаан: бутархай тоон утга нь ойролцоо байж болно Vanderbilt-ийн их сургууль 812/16/2015
  9. 9. Vanderbilt-ийн их сургууль 912/16/2015
  10. 10. Vanderbilt-ийн их сургууль 1012/16/2015
  11. 11.  for давталтыг хэрэглэх хэлбэр for(анхны утга;давталтыг үргэлжлүүлэх тест;нэмэгдүүлэлт) үйлдэл  Жишээ: for(counter = 1; counter <= 10; counter++ ) printf( "%dn", counter );  Нэгээс арав хүртлэх бүхэл тоонуудыг хэвлэнэ Vanderbilt-ийн их сургууль 11 Энд цэгтэй таслал тавихгүй 12/16/2015
  12. 12.  for давталтыг while давталтыг ашиглан бичиж болно: анхны утга олголт; while(давталтыг үргэлжлүүлэх тест){ үйлдэл; нэмэгдүүлэлт; } ◦ Анхны утга олголт ба нэмэгдүүлэлт  Таслалаар тусгаарлан жагсааж болно  Жишээ: for ( i = 0, j = 0; j + i <= 10; j++, i++) printf( "%dn", j + i ); Vanderbilt-ийн их сургууль 1212/16/2015
  13. 13.  Арифметик илэрхийлэл ◦ Анхны утга олголт, давталтыг үргэлжлүүлэх болон нэмэгдүүлэлт нь арифметик илэрхийлэл агуулж болно. Хэрэв х нь 2-той тэнцүү, у нь 10-тай тэнцүү бол for ( j = x; j <= 4 * x * y; j += y / x ) нь дараахтай ижил for ( j = 2; j <= 80; j += 5 )  for үйлдлийн тухай тайлбар: ◦ “Нэмэгдүүлэлт” нь сөрөг байж болно (хорогдуулалт) ◦ Хэрэв давталтыг үргэлжлүүлэх нөхцөл нь анхнаасаа худал бол  for давталтын бие биелэгдэхгүй  Удирдлага for давталтын дараагийн үйлдэл рүү шилжинэ ◦ Удирдлагын хувьсагч  for-ын бие дотор хэрэглэгдэх буюу хэвлэгдэнэ, гэвч заавал ингэх шаардлагагүй Vanderbilt-ийн их сургууль 1312/16/2015
  14. 14.  for давталтын бие дотор удирдлагын хувьсагчийн утгыг өөрчилж болох боловч энэ нь илрэхээргүй алдаанд хүргэж болно. Иймд түүнийг өөрчлөхгүй байх хэрэгтэй. Vanderbilt-ийн их сургууль 1412/16/2015
  15. 15. Vanderbilt-ийн их сургууль 1512/16/2015
  16. 16. Vanderbilt-ийн их сургууль 1612/16/2015
  17. 17. Vanderbilt-ийн их сургууль 1712/16/2015
  18. 18.  do…while давталтын үйлдэл ◦ while – тай төстэй ◦ Давталтын нөхцлийг давталтын бие дуусах бүрт шалгана  Бүх үйлдлүүд дор хаяж нэг удаа биелнэ ◦ Хэлбэр: do { үйлдэл; } while ( нөхцөл ); Vanderbilt-ийн их сургууль 1812/16/2015
  19. 19.  Жишээ (counter=1 гэж үзье): do { printf( "%d ", counter ); } while (++counter <= 10); ◦ 1-ээс 10 хүртлэх тоог хэвлэнэ Vanderbilt-ийн их сургууль 1912/16/2015
  20. 20. Vanderbilt-ийн их сургууль 2012/16/2015
  21. 21. Vanderbilt-ийн их сургууль 2112/16/2015
  22. 22.  Үйлдлүүдийг програмд давтан биелүүлэх while, for, do...while давталтын үйлдлүүд;  Програмын удирдлагын урсгалыг өөрчлөх програмын удирдлагын break болон continue үйлдлүүд;  switch сонголтын үйлдэл;  Удирдлагын үйлдэл дотор нийлмэл нөхцөлт илэрхийлэл үүсгэх логик операторууд  Тэнцүүг шалгах болон утга олгох үйлдэл  Бүтцийн програмчлалын хураангуй  Дүгнэлт 22Vanderbilt-ийн их сургууль 12/16/2015
  23. 23.  break ◦ while, for, do…while болон switch үйлдлээс шууд гаргана ◦ Програмын биелэлт тухайн бүтцийн дараах эхний үйлдэл рүү шилжинэ ◦ break үйлдлийн хэрэглээ  Давталтаас дуусахаас нь өмнө гарах  switch үйлдлийн үлдсэн хэсгийг алгасах Vanderbilt-ийн их сургууль 2312/16/2015
  24. 24. Vanderbilt-ийн их сургууль 2412/16/2015
  25. 25.  continue ◦ while, for эсвэл do…while давталтын бие доторх үлдсэн үйлдлүүдийг алгасна  Давталтын дараагийн алхам руу шилжинэ ◦ while болон do..while  continue үйлдэл биелсний дараа давталтыг үргэлжлүүлэх тестийг шууд шалгана. ◦ for  Нэмэгдүүлэх үйлдлийг гүйцэтгээд давталтыг үргэлжлүүлэх тестийг шалгана Vanderbilt-ийн их сургууль 2512/16/2015
  26. 26. Vanderbilt-ийн их сургууль 2612/16/2015
  27. 27.  Үйлдлүүдийг програмд давтан биелүүлэх while, for, do...while давталтын үйлдлүүд;  Програмын удирдлагын урсгалыг өөрчлөх програмын удирдлагын break болон continue үйлдлүүд;  switch сонголтын үйлдэл;  Удирдлагын үйлдэл дотор нийлмэл нөхцөлт илэрхийлэл үүсгэх логик операторууд  Тэнцүүг шалгах болон утга олгох үйлдэл  Бүтцийн програмчлалын хураангуй  Дүгнэлт 27Vanderbilt-ийн их сургууль 12/16/2015
  28. 28.  switch ◦ Хувьсагч эсвэл илэрхийллийн авч чадах утга бүрт зориулан өөр өөр үйлдэл хийх гэж байгаа үед тохиромжтой  Хэлбэр ◦ Хэд хэдэн case тэмдэглэгээ ба заавал байх албагүй default тохиолдлоос бүрдэнэ switch(value){ case ‘1’: үйлдлүүд case ‘2’: үйлдлүүд default: үйлдлүүд } ◦ break үйлдлээс гарна Vanderbilt-ийн их сургууль 2812/16/2015
  29. 29. Vanderbilt-ийн их сургууль 2912/16/2015
  30. 30. Vanderbilt-ийн их сургууль 3012/16/2015
  31. 31. Vanderbilt-ийн их сургууль 3112/16/2015
  32. 32. Vanderbilt-ийн их сургууль 3212/16/2015
  33. 33. Vanderbilt-ийн их сургууль 3312/16/2015
  34. 34.  Үйлдлүүдийг програмд давтан биелүүлэх while, for, do...while давталтын үйлдлүүд;  Програмын удирдлагын урсгалыг өөрчлөх програмын удирдлагын break болон continue үйлдлүүд;  switch сонголтын үйлдэл;  Удирдлагын үйлдэл дотор нийлмэл нөхцөлт илэрхийлэл үүсгэх логик операторууд  Тэнцүүг шалгах болон утга олгох үйлдэл  Бүтцийн програмчлалын хураангуй  Дүгнэлт 34Vanderbilt-ийн их сургууль 12/16/2015
  35. 35.  && (логик AND) ◦ Хоѐр нөхцөл хоѐулаа үнэн бол үнэн утга буцаана  || (логик OR) ◦ Хоѐр нөхцлийн аль нэг нь үнэн бол үнэнг буцаана  ! (логик NOT, логик үгүйсгэл) ◦ Нөхцлийн үнэн худлыг эсрэгээр өөрчилнө ◦ Унар оператор ба нэг л операндтай байна  Давталтын нөхцлүүдэд хэрэглэхэд тохиромжтой Илэрхийлэл Үр дүн true && false false true || false true !false true Vanderbilt-ийн их сургууль 3512/16/2015
  36. 36.  && (логик AND) операторын үнэний хүснэгт  || (логик OR) операторын үнэний хүснэгт  ! (логик үгүйсгэл) операторын үнэний хүснэгт Vanderbilt-ийн их сургууль 3612/16/2015
  37. 37. Vanderbilt-ийн их сургууль 3712/16/2015
  38. 38.  Үйлдлүүдийг програмд давтан биелүүлэх while, for, do...while давталтын үйлдлүүд;  Програмын удирдлагын урсгалыг өөрчлөх програмын удирдлагын break болон continue үйлдлүүд;  switch сонголтын үйлдэл;  Удирдлагын үйлдэл дотор нийлмэл нөхцөлт илэрхийлэл үүсгэх логик операторууд  Тэнцүүг шалгах болон утга олгох үйлдэл  Бүтцийн програмчлалын хураангуй  Дүгнэлт 38Vanderbilt-ийн их сургууль 12/16/2015
  39. 39.  Ноцтой алдаа ◦ Синтакс алдаанд тооцогддоггүй ◦ Үр дүн гаргах илэрхийлэл болгоныг удирдлагын бүтцэд хэрэглэж болдог ◦ Тэг биш утгыг үнэн, тэгийг худал гэж үзнэ ◦ == - гийн жишээ: if ( payCode == 4 ) printf( "You get a bonus!n" );  payCode-ыг 4-тэй тэнцүү эсэхийг шалгаж, тэнцүү бол шагнал олгоно Vanderbilt-ийн их сургууль 3912/16/2015
  40. 40.  ==-г = болгож сольѐ: if ( payCode = 4 ) printf( "You get a bonus!n" ); ◦ Энэ нь payCode хувьсагчид 4 гэсэн утга олгоно ◦ 4 нь тэг биш учир уг илэрхийлэл үнэн болж payCode хувьсагч ямар утгатай байснаас үл хамааран шагналыг олгоно  Энэ бол синтакс алдаа биш, логик алдаа юм Vanderbilt-ийн их сургууль 4012/16/2015
  41. 41.  lvalue ◦ Тэнцүүгийн тэмдгийн зүүн талд байж чадах илэрхийлэл ◦ Энэ нь хувьсагчийн нэр байж болно  х = 4;  rvalue ◦ Тэнцүүгийн тэмдгийн баруун талд байж чадах илэрхийлэл ◦ Тогтмол тоо байж болно  4 = х; гэж бичиж болохгүй  х = 4; гэж бичих ѐстой ◦ lvalue-г rvalue болгон хэрэглэж болно, гэхдээ эсрэгээр нь хэрэглэж болохгүй  y = x; Vanderbilt-ийн их сургууль 4112/16/2015
  42. 42.  Үйлдлүүдийг програмд давтан биелүүлэх while, for, do...while давталтын үйлдлүүд;  Програмын удирдлагын урсгалыг өөрчлөх програмын удирдлагын break болон continue үйлдлүүд;  switch сонголтын үйлдэл;  Удирдлагын үйлдэл дотор нийлмэл нөхцөлт илэрхийлэл үүсгэх логик операторууд  Тэнцүүг шалгах болон утга олгох үйлдэл  Бүтцийн програмчлалын хураангуй  Дүгнэлт 42Vanderbilt-ийн их сургууль 12/16/2015
  43. 43. Vanderbilt-ийн их сургууль 4312/16/2015
  44. 44.  Бүтцийн програмчлал ◦ Програмыг ойлгох, тестлэх, зүгшрүүлэх болон өөрчлөхөд бүтэцгүй програмаас илүү тохиромжтой  Бүтцийн програмчлалын дүрмүүд ◦ Програмчлалын нийгэмлэгээс хөгжүүлсэн ◦ Зөвхөн нэг оролт, нэг гаралттай удирдлагын бүтцүүдийг хэрэглэдэг ◦ Дүрэм: 1. Хамгийн энгийн блок-схемээс эхлэнэ 2. Багцлах дүрэм: Дараалал дахь ямар ч тэгш өнцөгтийг (үйл ажиллагаа) хоѐр тэгш өнцөгт (үйл ажиллагаа) болгож болно. 3. Багтаах дүрэм: Тэгш өнцөгт бүрийг удирдлагын ямар нэг бүтцээр сольж болно (дараалсан, if, if…else, switch, while, do…while эсвэл for) 4. 2 ба 3-р дүрмийг ямар ч дарааллаар олон удаа хийж болно Vanderbilt-ийн их сургууль 4412/16/2015
  45. 45. Vanderbilt-ийн их сургууль 45 Дүрэм 1 – Хамгийн энгийн блок- схемээс эхлэх Дүрэм 2 – Дараалал дахь ямар ч тэгш өнцөгтийг хоѐр тэгш өнцөгтөөр сольж болно 12/16/2015
  46. 46. Vanderbilt-ийн их сургууль 46 Дүрэм 3 – Ямар ч тэгш өнцөгтийг удирдлагын бүтцээр сольж болно 12/16/2015
  47. 47. Vanderbilt-ийн их сургууль 4712/16/2015
  48. 48. Vanderbilt-ийн их сургууль 4812/16/2015
  49. 49.  Бүх програмыг гурван удирдлагад задалж болно ◦ Дараалсан – хөрвүүлэгч автоматаар боловсруулна ◦ Сонголтын – if, if…else эсвэл switch ◦ Давталтын – while, do…while эсвэл for  Зөвхөн хоѐр янзаар хослуулан ашиглаж болно  Багтаах (Дүрэм 3)  Багцлах (Дүрэм 2) ◦ Ямар ч сонголтын үйлдлийг if ашиглан бичиж болох ба ямар ч давталтыг while ашиглан бичиж болно Vanderbilt-ийн их сургууль 4912/16/2015
  50. 50.  Үйлдлүүдийг програмд давтан биелүүлэх while, for, do...while давталтын үйлдлүүд;  Програмын удирдлагын урсгалыг өөрчлөх програмын удирдлагын break болон continue үйлдлүүд;  switch сонголтын үйлдэл;  Удирдлагын үйлдэл дотор нийлмэл нөхцөлт илэрхийлэл үүсгэх логик операторууд  Тэнцүүг шалгах болон утга олгох үйлдэл  Бүтцийн програмчлалын хураангуй  Дүгнэлт 50Vanderbilt-ийн их сургууль 12/16/2015
  51. 51.  Тоолуураар болон онцгой утгаар удирдагдах давталтууд  for давталт нь тоолуураар удирдагдах давталтын бүх үйлдлийг гүйцэтгэж чадна  Ихэнх тохиолдолд for давталтыг яг адил while давталт болгож болно  Анхны утга олголт, давталтыг үргэлжлүүлэх нөхцөл болон нэмэгдүүлэлт (эсвэл хорогдуулалт)  double өгөгдлийн төрөл нь float – тай төстэй төрөл юм  %21.2f хувиргалтын тодорхойлолт нь бутархай тоог 21 тэмдэгтийн зайн дотор таслалаас хойш хоѐр оронгийн нарийвчлалтайгаар хэвлэхийг заана  break болон continue үйлдлүүд Vanderbilt-ийн их сургууль 5112/16/2015
  52. 52.  switch олон сонголттой үйлдэл  do…while давталтын үйлдэл  && || ! логик үйлдлүүд  Тэнцүүг шалгах == болон утга олгох = үйлдэл Vanderbilt-ийн их сургууль 5212/16/2015

×