Contenu connexe Similaire à u.cs101 "Алгоритм ба програмчлал" Лекц №1 Similaire à u.cs101 "Алгоритм ба програмчлал" Лекц №1 (20) Plus de Khuder Altangerel Plus de Khuder Altangerel (17) u.cs101 "Алгоритм ба програмчлал" Лекц №12. Багш – А. Хүдэр, техникийн ухааны доктор
(PhD)
◦ Өрөө: ШУТИС, МХТС, 304
◦ Утас: 99068710
◦ Мэйл: khuder@must.edu.mn
Вэбсайт:
◦ elearn.sict.edu.mn
Vanderbilt-ийн Их сургууль 212/16/2015
3. C. How to program. Deitel. 6 дахь хэвлэл.
2010
А. Хүдэр, “Програмчлалын үндсэн аргууд”,
хоѐр дахь хэвлэл, Өнгөт хэвлэл, 2010
Д. Цэдэвсүрэн, “Си програмчлал”,
дөрөвдүгээр хэвлэлт, 2011
Brian W. Kernighan and Dennis M. Ritchie, “C
Programming Language”, Second Edition,
Prentice Hall, PTR, 1988.
Vanderbilt-ийн Их сургууль 312/16/2015
4. Програмчлах аргууд
◦ Алгоритмын дизайн
◦ Блок-схем ба псевдо код
◦ Програмчлалын дээрээс-доош дизайн
Бүтэцлэгдсэн хэл (С хэлийг жишээ болгоно)
◦ Өгөгдлийн төрөл, Зарлалт, Оператор ба Илэрхийлэл
◦ Оролт ба гаралт
◦ Удирдлагын бүтцүүд
◦ Функц ба Програмын бүтэц
◦ Заагч
◦ Хүснэгт, Тэмдэгт мөр ба Нэгдэл
◦ Файл боловсруулалт
Програмчлалын төрлүүд
◦ Програмчлах стиль
◦ Бүтцийн програмчлал ба Програмын модульчлал
◦ Програмын бичиг баримт ба Ашиглалт
Vanderbilt-ийн Их сургууль 412/16/2015
5. Компьютерийн үндсэн ойлголтууд
Програмчлалын хэлүүд
Програмчлалын Си хэл
◦ Түүх
◦ Си-гийн стандарт сан
◦ Обьект хандалтат програмчлал
◦ Си-гийн програмчлах орчин
Програмчлалын Си хэлний үндэс
Vanderbilt-ийн Их сургууль 512/16/2015
6. Компьютер
◦ Тооцоолол гүйцэтгэх болон логик шийдвэр гаргах чадвартай
төхөөрөмж (техник хангамж)
◦ Компьютер нь компьютерийн програм гэж нэрлэгдэх заавруудын
олонлогийн удирдлага дор өгөгдлийг боловсруулна.
Техник хангамж
◦ Компьютерийг бүрдүүлэх төв процессор (CPU), санах ой, эх хавтан
болон хатуу диск гэх мэт төрөл бүрийн төхөөрөмж мөн гадаад
төхөөрөмжүүд (гар, хулгана, гадаад дэлгэц, компакт диск уншигч).
◦ Техник хангамжийн хандлага-Нэг эсвэл хоѐр жил бүр дараах зүйлс
хоѐр дахин өснө:
Програмыг ажиллуулж буй санах ойн хэмжээ
Програмыг ажиллуулж байгаа процессорын хурд (Мурын хууль)
Програм хангамж
◦ Компьютер дээр ажиллаж буй програмууд
Vanderbilt-ийн Их сургууль 612/16/2015
7. Компьютер бүр 6 логик модультай байна:
◦ Оролтын модуль
Оролтын төхөөрөмжөөс (гар, хулгана) мэдээллийг уншина
◦ Гаралтын модуль
Мэдээллийг гаргана (дэлгэц, принтер рүү, өөр төхөөрөмжийг
удирдахаар)
◦ Санах ойн модуль
Хурдан хандалттай, бага багтаамжтай, оролтын мэдээллийг хадгална
◦ Арифметик, логик төхөөрөмж (ALU)
Арифметик тооцоо болон логик шийдвэрийг гүйцэтгэнэ
◦ Төв процессор (CPU)
Компьютерийн бусад хэсгүүдийг удирдан зохион байгуулна
ALU нь одоо CPU-гийн үндсэн хэсэг юм
◦ Гадаад санах ой
Хямд, урт хугацааны, их багтаамжтай санах ой
Vanderbilt-ийн Их сургууль 712/16/2015
9. Багц боловсруулалт
◦ Зөвхөн нэг ажил буюу даалгаврыг биелүүлэх
Мультипрограмчлал
◦ Нөөцийг удирдан олон програмд хуваарилах
◦ Програмуудыг хагас-зэрэг байдлаар ажиллуулах
◦ Нэг хэрэглэгч
Олон хэрэглэгчтэй/Хугацааны хуваалттай систем
◦ Нэг зэрэг ажиллах олон хэрэглэгчдийг терминалаар дамжуулан
удирдах
◦ Нөөцийг шударгаар хуваарилах:
Процессорын төлөвлөлт
Vanderbilt-ийн Их сургууль 912/16/2015
11. Персонал компьютер
◦ Хувь хүмүүст хангалттай үнэтэй
Хуваарилагдсан тооцоолол
◦ Сүлжээгээр хуваарилагдсан тооцоолол хийх
Клиент/Сервер тооцоолол
◦ Компьютерийн сүлжээг ашиглан файлын сервер
болон клиент хооронд мэдээлэл хуваарилах
Vanderbilt-ийн Их сургууль 1112/16/2015
13. Компьютерийн үндсэн ойлголтууд
Програмчлалын хэлүүд
Програмчлалын Си хэл
◦ Түүх
◦ Си-гийн стандарт сан
◦ Обьект хандалтат програмчлал
◦ Си-гийн програмчлах орчин
Програмчлалын Си хэлний үндэс
Vanderbilt-ийн Их сургууль 1312/16/2015
14. Програмчлалын гурван төрлийн хэл
◦ Машины хэл
Төв процессороор гүйцэтгэгдэх машины тусгай командууд
Компьютерийн програмыг дүрсэлж болох хамгийн доод
хэлбэр
◦ Ассемблер хэл
Англи товчилсон үгсийг ашиглан компьютерийн энгийн
үйлдлүүдийг дүрсэлнэ (ассемблерээр хөрвүүлнэ)
Жишээ: mov ax, 1234h (1234h утгыг ax регистр рүү зөөх)
◦ Дээд түвшний хэл
Өдөр тутмын англи хэлтэй төстэй
Математикийн тэмдэглэгээг хэрэглэнэ (компайлераар
хөрвүүлнэ)
Жишээ: niitTulbur = undsenTulbur + nemeltTulbur
Vanderbilt-ийн Их сургууль 1412/16/2015
15. Компьютерийн үндсэн ойлголтууд
Програмчлалын хэлүүд
Програмчлалын Си хэл
◦ Түүх
◦ Си-гийн стандарт сан
◦ Обьект хандалтат програмчлал
◦ Си-гийн програмчлах орчин
Програмчлалын Си хэлний үндэс
Vanderbilt-ийн Их сургууль 1512/16/2015
16. С
◦ Денис Ритчи BCPL ба B гэсэн өмнөх хоѐр
програмчлалын хэлийг ашиглан үүсгэсэн
◦ UNIX – ийг хөгжүүлэхэд хэрэглэгдсэн
◦ Орчин үеийн үйлдлийн системүүдийг хөгжүүлэхэд
хэрэглэгдэж байгаа
◦ Техник хангамжаас хамаардаггүй (зөөврийн)
Стандартчилал
◦ Си-гийн олон хувилбарууд гарч, хоорондоо
таардаггүй байсан
◦ “Машинаас хамаарахгүй, тогтвортой” тодорхойлолт
гаргах комисс байгуулсан
◦ Стандартыг 1989 онд гаргаж 1999 онд шинэчилсэн
Vanderbilt-ийн Их сургууль 1612/16/2015
17. Си програмууд функц гэж нэрлэгдэх
хэсгүүд/модулиудаас тогтоно
◦ Програмист өөрийн функцийг зохиож болно
Давуу тал: програмист түүнийг яг яаж ажиллахыг мэднэ
Дутагдал: цаг алдана
◦ Програмистууд Си-гийн сангийн функцуудийг байнга
хэрэглэнэ
Эдгээр функцууд дээр суурилан програмаа бичнэ
◦ Дугуйг дахин зохион бүтээхээс зайлсхийх
Хэрэв ямар нэг функц байдаг бол түүнийг өөрөө бичсэнээс
байгааг нь ашиглах хэрэгтэй
Сангийн функцууд алдаагүй бичигдсэн, үр ашигтай
бөгөөд авсаархан байдаг
Vanderbilt-ийн Их сургууль 1712/16/2015
18. Компьютерийн үндсэн ойлголтууд
Програмчлалын хэлүүд
Програмчлалын Си хэл
◦ Түүх
◦ Си-гийн стандарт сан
◦ Обьект хандалтат програмчлал
◦ Си-гийн програмчлах орчин
Програмчлалын Си хэлний үндэс
Vanderbilt-ийн Их сургууль 1812/16/2015
19. Си++
◦ Bell Labs-т Бьѐрн Страуструпын гарган авсан С-
гийн өргөтгөсөн хувилбар
◦ Си-г “сайжруулж” обьект хандалтат боломжийг
нэмсэн
◦ Обьект хандалтат дизайн нь маш хүчирхэг юм
Үр ашигтай байдлыг 10-аас 100 дахин нэмэгдүүлнэ
Си++-т суралцах
◦ Си++ нь Си-г агуулдаг тул зарим хүмүүс эхлээд
Си-г сураад дараа нь Си++-т суралцдаг
Vanderbilt-ийн Их сургууль 1912/16/2015
20. Java-г дараах зүйлст хэрэглэнэ:
◦ Динамик, интерактив агуулгатай вэб сайт хийхэд
◦ Том хэмжээний энтерпрайс програм хөгжүүлэхэд
◦ Вэб серверүүдийн функийг өргөтгөхөд
◦ Хэрэглэгчийн төхөөрөмжид зориулсан програм
зохиоход (утас, пэйжер, угаалгын машин гэх мэт)
Vanderbilt-ийн Их сургууль 2012/16/2015
21. Компьютерийн үндсэн ойлголтууд
Програмчлалын хэлүүд
Програмчлалын Си хэл
◦ Түүх
◦ Си-гийн стандарт сан
◦ Обьект хандалтат програмчлал
◦ Си-гийн програмчлах орчин
Програмчлалын Си хэлний үндэс
Vanderbilt-ийн Их сургууль 2112/16/2015
22. Си програмын үе
шат:
◦ Засварлах (Си
програмын файл нь .c
өргөтгөлтэй байна)
◦ Урьдчилан
боловсруулах
◦ Хөрвүүлэх
◦ Холбох
◦ Ачаалах
◦ Биелүүлэх
Vanderbilt-ийн Их сургууль 2212/16/2015
23. Компьютерийн үндсэн ойлголтууд
Програмчлалын хэлүүд
Програмчлалын Си хэл
◦ Түүх
◦ Си-гийн стандарт сан
◦ Обьект хандалтат програмчлал
◦ Си-гийн програмчлах орчин
Програмчлалын Си хэлний үндэс
Vanderbilt-ийн Их сургууль 2312/16/2015
24. Нэг мөр хэвлэх
Курсор удирдах тусгай тэмдэгтүүд
Хувьсагч ба Өгөгдлийн төрлүүд
Санах ой
Арифметикийн үйлдлүүд
Нөхцөл шалгах үйлдэл
Дүгнэлт
Vanderbilt-ийн Их сургууль 2412/16/2015
25. Welcome to C!
Тайлбарууд
◦ /* ба */-аар зааглагдсан, хөрвүүлэгчид харагдахгүй текст
◦ Програмыг тайлбарлахад хэрэглэгдэнэ
#include <stdio.h>
◦ Си-гийн урьдчилан боловсруулагчид заавар өгнө
Тодорхой файлын агуулгыг ачаалах
◦ <stdio.h> стандарт оролт/гаралтын үйлдлүүдийг агуулна
Vanderbilt-ийн Их сургууль 25
/* ба */ нь тайлбарыг тэмдэглэнэ – хөрвүүлэгч тэдгээрийг алгасна
#include директив нь Си хэлэнд файл ачаалахыг заана
Их хаалт нээж main функц эхэлснийг зарлана
Үйлдэл нь Си хэлэнд ажиллагаа гүйцэтгэхийг заана
return үйлдэл нь функцийг төгсгөнө
Хааж байгаа их хаалт нь main функцийн төгсгөлийг заана
12/16/2015
26. int main()
◦ Си програм нь нэг болон хэд хэдэн функц агуулах ба
тэдний аль нэг нь заавал main байна
◦ Дугуй хаалт нь функцийн таних тэмдэг юм
◦ int гэдэг нь main бүхэл утга буцаана гэдгийг заана
◦ Их хаалтууд ({ ба }) блокийг илэрхийлнэ
Функцийн биеийг заавал их хаалтанд хийнэ
printf(“Welcome to C!n”);
◦ Компьютерт ажиллагаа хийхийг заана
Энэ тохиолдолд давхар хашилтанд (“ ”) байгаа тэмдэгт
мөрийг хэвлэхийг заана
◦ Мөрийг нийтэд нь үйлдэл гэж нэрлэнэ
Үйлдэл бүр цэгтэй таслалаар төгсөнө (;)
◦ Тусгай тэмдэгт ()
printf ямар нэг онцгой зүйл хийх ѐстойг заана
n нь шинэ мөр гэдэг тэмдэгт юм
Vanderbilt-ийн Их сургууль 2612/16/2015
27. return 0;
◦ Функцээс гарах арга
◦ Энэ тохиолдолд return 0 нь програм алдаагүй
дууссаныг илэрхийлнэ
Их хаалт хаах }
◦ main функцийн төгсгөлийг заана
Холбогч
◦ Функц дуудагдахад холбогч түүнийг сангаас олно
◦ Түүнийг обьект програмд оруулна
◦ Хэрэв функцийн нэрийг буруу бичсэн бол түүнийг
сангаас олох боломжгүй тул холбогч нь алдаа
үүсгэнэ
Vanderbilt-ийн Их сургууль 2712/16/2015
28. Нэг мөр хэвлэх
Курсор удирдах тусгай тэмдэгтүүд
Хувьсагч ба Өгөгдлийн төрлүүд
Санах ой
Арифметикийн үйлдлүүд
Нөхцөл шалгах үйлдэл
Дүгнэлт
Vanderbilt-ийн Их сургууль 2812/16/2015
29. Тусгай тэмдэгт Тайлбар
n Шинэ мөр. Курсорыг дараагийн мөрийн эхэнд
аваачна
t Хэвтээгээр шилжих. Курсорыг дараагийн
байрлалд аваачна
a Дуут дохио. Системийн хонхыг ажиллуулна.
Эсрэг налуу. Тэмдэгт мөрөнд эсрэг налуу
тэмдэгтийг оруулна.
” Давхар хашилт. Тэмдэгт мөрөнд давхар хашилт
тэмдэгтийг оруулна.
Vanderbilt-ийн Их сургууль 2912/16/2015
30. Жишээ 2
Welcome to C!
Vanderbilt-ийн Их сургууль 30
printf үйлдэл нь өмнөх хэвлэх үйлдлийн
зогссон газраас эхэлж хэвлэх тул уг текст
нэг мөрөнд хэвлэгдэнэ.
12/16/2015
32. Нэг мөр хэвлэх
Курсор удирдах тусгай тэмдэгтүүд
Хувьсагч ба Өгөгдлийн төрлүүд
Санах ой
Арифметик үйлдлүүд
Нөхцөл шалгах үйлдэл
Дүгнэлт
Vanderbilt-ийн Их сургууль 12/16/2015 32
34. Өмнө үзсэн
◦ Тайлбар, #include <stdio.h> болон main
int integer1, integer2, sum;
◦ Хувьсагч зарлалт
Хувьсагч: Санах ой дахь утга хадгалж болох байрлал
◦ int гэдэг нь хувьсагчууд бүхэл утга хадгална гэдгийг
илэрхийнэ (-1, 3, 0, 47)
◦ Хувьсагчийн нэр (идентификатор)
integer1, integer2, sum
Идентификатор: латин үсэг, цифр (цифрээр эхэлж
болохгүй) болон доогуур зураасаас (_) тогтоно
Том жижиг үсгүүд ялгаатай
◦ Зарлалтыг биелэх үйлдлээс нь өмнө хийнэ
Хэрэв биелэх үйлдэл зарлаагүй хувьсагч руу хандаж
байвал синтакс (хөрвүүлэлтийн) алдаа үүснэ.
Vanderbilt-ийн Их сургууль 12/16/2015 34
35. scanf(“%d”, &integer1);
◦ Хэрэглэгчээс утга хүлээж авна
scanf нь стандарт оролтыг хэрэглэнэ (ихэвчлэн гар)
◦ Энэ scanf үйлдэл нь хоѐр аргументтай байна
%d – өгөгдөл нь аравтын бүхэл тоо байхыг заана
&integer1 – хувьсагчийг хадгалах санах ой дахь
байрлал
& нь эхэндээ ойлгомжгүй байдаг – одоохондоо scanf
үйлдэлд хувьсагчийн өмнө тавьдаг гэж тогтооно.
◦ Програмын биелэлтийн үед хэрэглэгч scanf-ийн
хариуд бүхэл тоо бичиж Enter (буцаах) товч дарна
Vanderbilt-ийн Их сургууль 12/16/2015 35
36. Нэг мөр хэвлэх
Курсор удирдах тусгай тэмдэгтүүд
Хувьсагч ба Өгөгдлийн төрлүүд
Санах ой
Арифметик үйлдлүүд
Нөхцөл шалгах үйлдэл
Дүгнэлт
Vanderbilt-ийн Их сургууль 12/16/2015 36
37. Хувьсагч
◦ Хувьсагчийн нэр нь компьютерийн санах ойд байгаа
байрлалд харгалзана
◦ Хувьагч бүр нэр, төрөл, хэмжээ болон утгатай байна
◦ Хувьчагчид шинэ утга олгох үед (жишээ нь scanf-ээр)
энэ нь өмнөх утгыг өөрчилнө (устгана).
◦ Санах ойгоос хувьсагчийн утгыг уншихад түүний утга
өөрчлөгдөхгүй
Санах ойд байгаа хувьсагч, түүний нэр ба утга
Vanderbilt-ийн Их сургууль 12/16/2015 37
38. Хоѐр хувьсагчийг оруулсны дараах санах
ой
Тооцоолол хийгдсэний дараах санах ой
Vanderbilt-ийн Их сургууль 12/16/2015 38
39. Нэг мөр хэвлэх
Курсор удирдах тусгай тэмдэгтүүд
Хувьсагч ба Өгөгдлийн төрлүүд
Санах ой
Арифметик үйлдлүүд
Нөхцөл шалгах үйлдэл
Дүгнэлт
Vanderbilt-ийн Их сургууль 12/16/2015 39
40. = (утга олгох үйлдэл)
◦ Хувьсагчид утгыг олгоно
◦ Энэ нь бинар үйлдэл юм (хоѐр операндтай)
sum = variable1 + variable2;
sum нь variable1 + variable2 утгыг авна
Утга авч байгаа хувьсагч зүүн талд байна
◦ printf(“Sum is %dn”, sum);
scanf-тэй төстэй
%d нь аравтын бүхэл тоо хэвлэгдэхийг заана
sum нь ямар бүхэл тоо хэвлэгдэхийг зааж өгнө
printf үйлдэл дотор шууд тооцоололтыг хийж болно
printf(“Sum is %dn”, integer1+integer2);
Vanderbilt-ийн Их сургууль 12/16/2015 40
41. Арифметик тооцоолол
◦ Үржүүлэхэд *-ыг хуваахад /-ыг хэрэглэнэ
◦ Бүхлээх хуваахад үлдэгдлийг таслана
7/5 –ын үр дүн нь 1 байна
◦ Үлдэгдэл авах үйлдэл (%) үлдэгдлийг буцаана
7%5-ын үр дүн нь 2 байна
◦ Үйлдлийн дараалал
Зарим арифметик үйлдлүүд бусад үйлдлийнхээ өмнө
биелэгддэг (жишээ нь үржих үйлдэл нэмэх үйлдлийн өмнө)
Шаардлагатай бол хаалт хэрэглэнэ
Жишээ: a, b, c гурван хувьсагчийн дунджийг олох
Буруу: a+b+c/3
Зөв: (a+b+c)/3
Vanderbilt-ийн Их сургууль 12/16/2015 41
44. Нэг мөр хэвлэх
Курсор удирдах тусгай тэмдэгтүүд
Хувьсагч ба Өгөгдлийн төрлүүд
Санах ой
Арифметик үйлдлүүд
Нөхцөл шалгах үйлдэл
Дүгнэлт
Vanderbilt-ийн Их сургууль 12/16/2015 44
45. Биелэгдэх үйлдлүүд
◦ Үйлдэл гүйцэтгэх (тооцоолол, өгөгдөл оруулж
гаргах)
◦ Шийдвэр гүйцэтгэх
Тестийн өгөгдсөн оноонд үндэслэн “унасан”,
“тэнцсэн” гэж хэвлэх
if удирдлагын үйлдэл
◦ Хэрэв нөхцөл үнэн бол if үйлдлийн бие
гүйцэтгэгдэнэ
0 бол худал, 1 бол үнэн
◦ if үйлдлийн дараа удирдлага хэвийн байдалд
орно
Vanderbilt-ийн Их сургууль 12/16/2015 45
48. (үргэлжлэлтэй)
Vanderbilt-ийн Их сургууль
num1 нь num2-оос их эсэхийг шалгах
num1 нь num2-оос бага буюу тэнцүү эсэхийг шалгах
num1 нь num2-оос их буюу тэнцүү эсэхийг шалгах
12/16/2015 48
51. Нэг мөр хэвлэх
Курсор удирдах тусгай тэмдэгтүүд
Хувьсагч ба Өгөгдлийн төрлүүд
Санах ой
Арифметик үйлдлүүд
Нөхцөл шалгах үйлдэл
Дүгнэлт
Vanderbilt-ийн Их сургууль 12/16/2015 51
52. Тайлбар нь /*-оор эхэлж */-аар дуусна. Тайлбар нь
програмыг баримтжуулах ба уншигдах байдлыг нь
сайжруулна.
#include директив нь урьдчилан боловсруулагчид өөр файлын
агуулгыг оруулж ирэхийг заана (жишээ нь <stdio.h> гэх мэт
толгой файлыг).
<stdio.h> толгой файл нь хөрвүүлэлтийн үед printf гэх мэт
оролт гаралтын сангийн функцийн дуудалтыг хөрвүүлэхэд
хэрэглэгдэх мэдээллийг агуулна.
Си програм бүр main функцээсээ эхлэн ажиллана
Функцууд мэдээлэл буцааж болно
Функцууд мэдэээл хүлээн авч болно
Функцийн бие нээх их хаалт {-аас эхэлж хаах их хаалт }-аар
дуусна.
Үйлдэл бүрийн эцэст цэгтэй таслал байна.
n гэсэн тусгай тэмдэгт курсорыг шинэ мөр рүү шилжүүлнэ
Vanderbilt-ийн Их сургууль 12/16/2015 52
53. Хувьсагч гэдэг нь програм утга хадгалж болох
санах ой дахь байрлал юм.
Бүх хувьсагчдыг програмд хэрэглэхээс нь өмнө
нэр болон өгөгдлийн төрлийг нь зааж зарлах
ѐстой.
%d нь өгөгдөл аравтын бүхэл тоо байхыг заана
& нь хувьсагчийн санах ойн хаягийг заана
printf функц нь хэлбэржүүлэлтийн тэмдэгт
мөрийг хэрэглэж болно
Хувьсагч бүр нэрь төрөл болон утгатай байна.
Хувьсагчийн нэр нь компьютерийн санах ой
дахь байрлалд харгалзана.
Арифметик үйлдлүүд ба тэдний дараалал.
Vanderbilt-ийн Их сургууль 12/16/2015 53
54. if үйлдэл нь програмд үйл явдлын тухай
өгүүлбэр буюу нөхцлийн үнэн худал дээр
үндэслэн шийдвэр гаргах боломж олгоно.
if үйлдэл доторх нөхцийг тэнцүүг шалгах
болон харьцуулах үйлдүүдийг ашиглан
үүсгэнэ.
Харьцуулах үйлдлүүдийн дараалал
=-г “авна” гэж унших ба ==-г “хоѐр тэнцүү”
гэж уншина.
Түлхүүр үгс.
Vanderbilt-ийн Их сургууль 12/16/2015 54