Contenu connexe
Similaire à u.cs101 "Алгоритм ба програмчлал" Лекц №3 (11)
Plus de Khuder Altangerel (18)
u.cs101 "Алгоритм ба програмчлал" Лекц №3
- 2. Үйлдлүүдийг програмд давтан биелүүлэх
while, for, do...while давталтын үйлдлүүд;
Програмын удирдлагын урсгалыг өөрчлөх
програмын удирдлагын break болон
continue үйлдлүүд;
switch сонголтын үйлдэл;
Удирдлагын үйлдэл дотор нийлмэл нөхцөлт
илэрхийлэл үүсгэх логик операторууд
Тэнцүүг шалгах болон утга олгох үйлдэл
Бүтцийн програмчлалын хураангуй
Дүгнэлт (энхмэнд, золжаргал)
2Vanderbilt-ийн их сургууль 12/16/2015
- 3. Давталт
◦ Ямар нэг нөхцөл үнэн байхад компьютер давтан
биелүүлэх бүлэг команд
Тоолуураар удирдагдах давталт
◦ Тодорхой давталт: давталт хэдэн удаа биелэгдэх
нь мэдэгдэнэ
◦ Давталтын тоог тоолох хяналтын хувьсагчтай
Онцгой утга ашигласан давталт
◦ Тодорхойгүй давталт
◦ Давталтын тоо тодорхойгүй үед хэрэглэнэ
◦ Онцгой утга нь “өгөгдлийн төгсгөлийг” заана
3Vanderbilt-ийн их сургууль 12/16/2015
- 4. Тоолуураар удирдагдах давталтын
шаардлага:
◦ Удирдлагын хувьсагчийн нэр (эсвэл давталтын
тоолуур)
◦ Удирдлагын хувьсагчийн анхны утга
◦ Давталтын явцад удирдлагын хувьсагч хэдээр
ихсэх (эсвэл багасах)
◦ Удирдлагын хувьсагчийн эцсийн утгыг шалгах
нөхцөл (өөрөөр хэлбэл давталт үргэлжлэх эсэхийг
шалгах)
Vanderbilt-ийн их сургууль 412/16/2015
- 5. Жишээ:
int counter = 1; /* initialization */
while ( counter <= 10 ) { /* repetition condition */
printf( "%dn", counter );
++counter; /* increment */
}
Үйлдэл
int counter = 1;
◦ counter гэж нэрлэнэ
◦ Бүхэл тоон төрөлтэй гэж зарлана
◦ Түүнд зориулж санах ойд зай нөөцлөнө
◦ Анхны утгыг нь 1 гэж заана
Vanderbilt-ийн их сургууль 512/16/2015
- 7. Товч код
◦ Си дээр програмчлагчид кодоо хураангуйлдаг
◦ counter – т тэг утга олгоно
while ( ++counter <= 10 )
printf( “%dn, counter );
Vanderbilt-ийн их сургууль 712/16/2015
- 8. Тоолуураар удирдагдах давталтыг
бутархай тоон хувьсагчаар удирдах нь
тоолуурын утгын болон дуусах нөхцлийн
нарийвчлалын асуудалд хүргэнэ
◦ Шалтгаан: бутархай тоон утга нь ойролцоо байж
болно
Vanderbilt-ийн их сургууль 812/16/2015
- 11. for давталтыг хэрэглэх хэлбэр
for(анхны утга;давталтыг үргэлжлүүлэх тест;нэмэгдүүлэлт)
үйлдэл
Жишээ:
for(counter = 1; counter <= 10; counter++ )
printf( "%dn", counter );
Нэгээс арав хүртлэх бүхэл тоонуудыг хэвлэнэ
Vanderbilt-ийн их сургууль 11
Энд цэгтэй таслал
тавихгүй
12/16/2015
- 12. for давталтыг while давталтыг ашиглан
бичиж болно:
анхны утга олголт;
while(давталтыг үргэлжлүүлэх тест){
үйлдэл;
нэмэгдүүлэлт;
}
◦ Анхны утга олголт ба нэмэгдүүлэлт
Таслалаар тусгаарлан жагсааж болно
Жишээ:
for ( i = 0, j = 0; j + i <= 10; j++, i++)
printf( "%dn", j + i );
Vanderbilt-ийн их сургууль 1212/16/2015
- 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. for давталтын бие дотор удирдлагын
хувьсагчийн утгыг өөрчилж болох боловч
энэ нь илрэхээргүй алдаанд хүргэж болно.
Иймд түүнийг өөрчлөхгүй байх хэрэгтэй.
Vanderbilt-ийн их сургууль 1412/16/2015
- 18. do…while давталтын үйлдэл
◦ while – тай төстэй
◦ Давталтын нөхцлийг давталтын бие дуусах бүрт
шалгана
Бүх үйлдлүүд дор хаяж нэг удаа биелнэ
◦ Хэлбэр:
do {
үйлдэл;
} while ( нөхцөл );
Vanderbilt-ийн их сургууль 1812/16/2015
- 19. Жишээ (counter=1 гэж үзье):
do {
printf( "%d ", counter );
} while (++counter <= 10);
◦ 1-ээс 10 хүртлэх тоог хэвлэнэ
Vanderbilt-ийн их сургууль 1912/16/2015
- 22. Үйлдлүүдийг програмд давтан биелүүлэх
while, for, do...while давталтын үйлдлүүд;
Програмын удирдлагын урсгалыг өөрчлөх
програмын удирдлагын break болон
continue үйлдлүүд;
switch сонголтын үйлдэл;
Удирдлагын үйлдэл дотор нийлмэл нөхцөлт
илэрхийлэл үүсгэх логик операторууд
Тэнцүүг шалгах болон утга олгох үйлдэл
Бүтцийн програмчлалын хураангуй
Дүгнэлт
22Vanderbilt-ийн их сургууль 12/16/2015
- 23. break
◦ while, for, do…while болон switch үйлдлээс шууд
гаргана
◦ Програмын биелэлт тухайн бүтцийн дараах эхний
үйлдэл рүү шилжинэ
◦ break үйлдлийн хэрэглээ
Давталтаас дуусахаас нь өмнө гарах
switch үйлдлийн үлдсэн хэсгийг алгасах
Vanderbilt-ийн их сургууль 2312/16/2015
- 25. continue
◦ while, for эсвэл do…while давталтын бие доторх
үлдсэн үйлдлүүдийг алгасна
Давталтын дараагийн алхам руу шилжинэ
◦ while болон do..while
continue үйлдэл биелсний дараа давталтыг
үргэлжлүүлэх тестийг шууд шалгана.
◦ for
Нэмэгдүүлэх үйлдлийг гүйцэтгээд давталтыг
үргэлжлүүлэх тестийг шалгана
Vanderbilt-ийн их сургууль 2512/16/2015
- 27. Үйлдлүүдийг програмд давтан биелүүлэх
while, for, do...while давталтын үйлдлүүд;
Програмын удирдлагын урсгалыг өөрчлөх
програмын удирдлагын break болон
continue үйлдлүүд;
switch сонголтын үйлдэл;
Удирдлагын үйлдэл дотор нийлмэл нөхцөлт
илэрхийлэл үүсгэх логик операторууд
Тэнцүүг шалгах болон утга олгох үйлдэл
Бүтцийн програмчлалын хураангуй
Дүгнэлт
27Vanderbilt-ийн их сургууль 12/16/2015
- 28. switch
◦ Хувьсагч эсвэл илэрхийллийн авч чадах утга бүрт
зориулан өөр өөр үйлдэл хийх гэж байгаа үед
тохиромжтой
Хэлбэр
◦ Хэд хэдэн case тэмдэглэгээ ба заавал байх албагүй
default тохиолдлоос бүрдэнэ
switch(value){
case ‘1’:
үйлдлүүд
case ‘2’:
үйлдлүүд
default:
үйлдлүүд
}
◦ break үйлдлээс гарна
Vanderbilt-ийн их сургууль 2812/16/2015
- 34. Үйлдлүүдийг програмд давтан биелүүлэх
while, for, do...while давталтын үйлдлүүд;
Програмын удирдлагын урсгалыг өөрчлөх
програмын удирдлагын break болон
continue үйлдлүүд;
switch сонголтын үйлдэл;
Удирдлагын үйлдэл дотор нийлмэл нөхцөлт
илэрхийлэл үүсгэх логик операторууд
Тэнцүүг шалгах болон утга олгох үйлдэл
Бүтцийн програмчлалын хураангуй
Дүгнэлт
34Vanderbilt-ийн их сургууль 12/16/2015
- 35. && (логик AND)
◦ Хоѐр нөхцөл хоѐулаа үнэн бол үнэн утга буцаана
|| (логик OR)
◦ Хоѐр нөхцлийн аль нэг нь үнэн бол үнэнг буцаана
! (логик NOT, логик үгүйсгэл)
◦ Нөхцлийн үнэн худлыг эсрэгээр өөрчилнө
◦ Унар оператор ба нэг л операндтай байна
Давталтын нөхцлүүдэд хэрэглэхэд
тохиромжтой
Илэрхийлэл Үр дүн
true && false false
true || false true
!false true
Vanderbilt-ийн их сургууль 3512/16/2015
- 36. && (логик AND) операторын үнэний хүснэгт
|| (логик OR) операторын үнэний хүснэгт
! (логик үгүйсгэл) операторын үнэний хүснэгт
Vanderbilt-ийн их сургууль 3612/16/2015
- 38. Үйлдлүүдийг програмд давтан биелүүлэх
while, for, do...while давталтын үйлдлүүд;
Програмын удирдлагын урсгалыг өөрчлөх
програмын удирдлагын break болон
continue үйлдлүүд;
switch сонголтын үйлдэл;
Удирдлагын үйлдэл дотор нийлмэл нөхцөлт
илэрхийлэл үүсгэх логик операторууд
Тэнцүүг шалгах болон утга олгох үйлдэл
Бүтцийн програмчлалын хураангуй
Дүгнэлт
38Vanderbilt-ийн их сургууль 12/16/2015
- 39. Ноцтой алдаа
◦ Синтакс алдаанд тооцогддоггүй
◦ Үр дүн гаргах илэрхийлэл болгоныг удирдлагын
бүтцэд хэрэглэж болдог
◦ Тэг биш утгыг үнэн, тэгийг худал гэж үзнэ
◦ == - гийн жишээ:
if ( payCode == 4 )
printf( "You get a bonus!n" );
payCode-ыг 4-тэй тэнцүү эсэхийг шалгаж, тэнцүү
бол шагнал олгоно
Vanderbilt-ийн их сургууль 3912/16/2015
- 40. ==-г = болгож сольѐ:
if ( payCode = 4 )
printf( "You get a bonus!n" );
◦ Энэ нь payCode хувьсагчид 4 гэсэн утга олгоно
◦ 4 нь тэг биш учир уг илэрхийлэл үнэн болж
payCode хувьсагч ямар утгатай байснаас үл
хамааран шагналыг олгоно
Энэ бол синтакс алдаа биш, логик алдаа юм
Vanderbilt-ийн их сургууль 4012/16/2015
- 41. lvalue
◦ Тэнцүүгийн тэмдгийн зүүн талд байж чадах
илэрхийлэл
◦ Энэ нь хувьсагчийн нэр байж болно
х = 4;
rvalue
◦ Тэнцүүгийн тэмдгийн баруун талд байж чадах
илэрхийлэл
◦ Тогтмол тоо байж болно
4 = х; гэж бичиж болохгүй
х = 4; гэж бичих ѐстой
◦ lvalue-г rvalue болгон хэрэглэж болно, гэхдээ эсрэгээр
нь хэрэглэж болохгүй
y = x;
Vanderbilt-ийн их сургууль 4112/16/2015
- 42. Үйлдлүүдийг програмд давтан биелүүлэх
while, for, do...while давталтын үйлдлүүд;
Програмын удирдлагын урсгалыг өөрчлөх
програмын удирдлагын break болон
continue үйлдлүүд;
switch сонголтын үйлдэл;
Удирдлагын үйлдэл дотор нийлмэл нөхцөлт
илэрхийлэл үүсгэх логик операторууд
Тэнцүүг шалгах болон утга олгох үйлдэл
Бүтцийн програмчлалын хураангуй
Дүгнэлт
42Vanderbilt-ийн их сургууль 12/16/2015
- 44. Бүтцийн програмчлал
◦ Програмыг ойлгох, тестлэх, зүгшрүүлэх болон өөрчлөхөд
бүтэцгүй програмаас илүү тохиромжтой
Бүтцийн програмчлалын дүрмүүд
◦ Програмчлалын нийгэмлэгээс хөгжүүлсэн
◦ Зөвхөн нэг оролт, нэг гаралттай удирдлагын бүтцүүдийг
хэрэглэдэг
◦ Дүрэм:
1. Хамгийн энгийн блок-схемээс эхлэнэ
2. Багцлах дүрэм: Дараалал дахь ямар ч тэгш өнцөгтийг (үйл
ажиллагаа) хоѐр тэгш өнцөгт (үйл ажиллагаа) болгож
болно.
3. Багтаах дүрэм: Тэгш өнцөгт бүрийг удирдлагын ямар нэг
бүтцээр сольж болно (дараалсан, if, if…else, switch, while,
do…while эсвэл for)
4. 2 ба 3-р дүрмийг ямар ч дарааллаар олон удаа хийж болно
Vanderbilt-ийн их сургууль 4412/16/2015
- 45. Vanderbilt-ийн их сургууль 45
Дүрэм 1 – Хамгийн энгийн блок-
схемээс эхлэх
Дүрэм 2 – Дараалал дахь ямар ч
тэгш өнцөгтийг хоѐр тэгш
өнцөгтөөр сольж болно
12/16/2015
- 49. Бүх програмыг гурван удирдлагад задалж
болно
◦ Дараалсан – хөрвүүлэгч автоматаар боловсруулна
◦ Сонголтын – if, if…else эсвэл switch
◦ Давталтын – while, do…while эсвэл for
Зөвхөн хоѐр янзаар хослуулан ашиглаж болно
Багтаах (Дүрэм 3)
Багцлах (Дүрэм 2)
◦ Ямар ч сонголтын үйлдлийг if ашиглан бичиж
болох ба ямар ч давталтыг while ашиглан бичиж
болно
Vanderbilt-ийн их сургууль 4912/16/2015
- 50. Үйлдлүүдийг програмд давтан биелүүлэх while,
for, do...while давталтын үйлдлүүд;
Програмын удирдлагын урсгалыг өөрчлөх
програмын удирдлагын break болон continue
үйлдлүүд;
switch сонголтын үйлдэл;
Удирдлагын үйлдэл дотор нийлмэл нөхцөлт
илэрхийлэл үүсгэх логик операторууд
Тэнцүүг шалгах болон утга олгох үйлдэл
Бүтцийн програмчлалын хураангуй
Дүгнэлт
50Vanderbilt-ийн их сургууль 12/16/2015
- 51. Тоолуураар болон онцгой утгаар удирдагдах
давталтууд
for давталт нь тоолуураар удирдагдах давталтын
бүх үйлдлийг гүйцэтгэж чадна
Ихэнх тохиолдолд for давталтыг яг адил while
давталт болгож болно
Анхны утга олголт, давталтыг үргэлжлүүлэх нөхцөл
болон нэмэгдүүлэлт (эсвэл хорогдуулалт)
double өгөгдлийн төрөл нь float – тай төстэй төрөл
юм
%21.2f хувиргалтын тодорхойлолт нь бутархай
тоог 21 тэмдэгтийн зайн дотор таслалаас хойш
хоѐр оронгийн нарийвчлалтайгаар хэвлэхийг заана
break болон continue үйлдлүүд
Vanderbilt-ийн их сургууль 5112/16/2015
- 52. switch олон сонголттой үйлдэл
do…while давталтын үйлдэл
&& || ! логик үйлдлүүд
Тэнцүүг шалгах == болон утга олгох =
үйлдэл
Vanderbilt-ийн их сургууль 5212/16/2015