SlideShare a Scribd company logo
1 of 52
Лекц № 4
Си-гийн функцууд
А. Хүдэр
 Програмыг функц гэж нэрлэгдэх жижиг
хэсгүүдээр бүтээх
 Си-гийн стандарт сан дахь математикийн
энгийн функцууд
 Шинэ функц зохиох
 Функцуудын хооронд мэдээлэл дамжуулах
механизм
 Өөрийгөө дууддаг буюу рекурсив функцийг
хэрхэн зохиож хэрэглэх
 Дүгнэлт
212/16/2015Vanderbilt university
 Функцууд
◦ Си-гийн модуль
◦ Програмд хэрэглэгчийн зохиосон болон сангийн
функцууд байна.
 Си-гийн стандарт санд төрөл бүрийн функцууд байдаг
 Функцийн дуудалтууд
◦ Функц дуудах
 Функцийн нэр болон аргументуудыг (өгөгдөл) зааж өгнө
 Функц үйлдлүүдээ гүйцэтгэнэ
 Функц үр дүнгээ буцаана
◦ Функц дуудалттай төстэй зүйл
 Дарга нь ажилтандаа даалгавар өгөх
 Ажилтан мэдээллийг авч, даалгаврыг биелүүлээд, үр дүнг
авчирна
 Мэдээллийн далдлалт: дарга деталиудыг нь мэдэхгүй
312/16/2015Vanderbilt university
412/16/2015Vanderbilt university
 Програмыг функц гэж нэрлэгдэх жижиг
хэсгүүдээр бүтээх
 Си-гийн стандарт сан дахь математикийн
энгийн функцууд
 Шинэ функц зохиох
 Функцуудын хооронд мэдээлэл дамжуулах
механизм
 Өөрийгөө дууддаг буюу рекурсив функцийг
хэрхэн зохиож хэрэглэх
 Дүгнэлт
512/16/2015Vanderbilt university
 Math сангийн функцууд
◦ Математикийн энгийн тооцооллыг гүйцэтгэнэ
◦ #include <math.h>
 Функцийг дуудах хэлбэр
◦ ФункцийнНэр(аргумент);
 Хэрэв олон аргументтай бол таслалаар тусгаарлан
жагсаана
◦ printf( "%.2f", sqrt( 900.0 ) );
 Аргументынхаа квадрат язгуурыг буцаах sqrt функцийг
дуудна.
 Математикийн бүх функцууд double өгөгдлийн төрлийн
утга буцаана
◦ Аргумент нь тогтмол, хувьсагч эсвэл илэрхийлэл байж
болно
612/16/2015Vanderbilt university
712/16/2015Vanderbilt university
 Програмыг функц гэж нэрлэгдэх жижиг
хэсгүүдээр бүтээх
 Си-гийн стандарт сан дахь математикийн
энгийн функцууд
 Шинэ функц зохиох
 Функцуудын хооронд мэдээлэл дамжуулах
механизм
 Өөрийгөө дууддаг буюу рекурсив функцийг
хэрхэн зохиож хэрэглэх
 Дүгнэлт
812/16/2015Vanderbilt university
 Функцууд
◦ Програмыг модульчлана
◦ Функц дотор зарласан хувьсагчид нь локал хувьсагчид байна
 Зөвхөн функц дотор харагдана
◦ Параметрууд
 Функцуудын хооронд мэдээлэл солилцох
 Локал хувьсагчид
 Функцийн давуу талууд
◦ Хуваагаад нэгтгэх
 Програм хөгжүүлэхэд ашиглах арга
◦ Програмын дахин ашиглагдах чанар
 Шинэ програм бичихэд байгаа функцуудийг блок болгон ашиглах
 Хийсвэрлэл – дотоод деталиудыг далдлах (сангийн функцууд)
◦ Код давтахаас зайлсхийх
912/16/2015Vanderbilt university
 Олон функцтэй програмын хувьд main
функц нь програмын ихэнх ажлуудыг
гүйцэтгэх функцуудыг дуудсан дуудалт
байдлаар бичигдэнэ
 Функц бүр сайтар тодорхойлогдсон ганц
даалгавартай байх ѐстой ба функцийн нэр
нь уг үүргээ зөв илэрхийлсэн байх хэрэгтэй
1012/16/2015Vanderbilt university
 Функцийг тодорхойлох хэлбэр
буцаах-утгын-төрөл функцийн-нэр(параметрууд)
{
Зарлалт ба үйлдлүүд
}
 Функцийн-нэр: дурын зөв идентификатор
 Буцаах-утгын-төрөл: үр дүнгийн өгөгдлийн төрөл (хэвшмэл нь int)
 void – функц юу ч буцаахгүйг заана
 Параметрууд – параметруудыг зарлах таслалаар тусгаарлагдсан жагсаалт
 int төрөлтэй биш параметр бүрийн хувьд төрлийг нь нэг бүрчлэн бичиж өгнө
 Зарлалт ба үйлдлүүд: функцийн бие (блок)
 Хувьсагчийг блок дотор зарлаж болно (багтсан блок байж болно)
 Функцийг өөр функцийн бие дотор тодорхойлж болохгүй
 Удирдлага шилжүүлэх
 Хэрэв юу ч буцаахгүй бол
 return;
 эсвэл хаах их хаалт хүртэл
 Ямар нэг зүйл буцааж байгаа бол
 return илэрхийлэл;
1112/16/2015Vanderbilt university
Функцийн загвар нь уг
функц програмд удахгүй
гарч ирэхийг заана
square функцийн дуудалт
Функцийн
тодорхойлолт
1212/16/2015Vanderbilt university
 Функцийн загвар
◦ Функцийн нэр
◦ Параметрууд – функц юу хүлээж авах
◦ Буцаах төрөл – функцийн буцаах өгөгдлийн төрөл
(хэвшмэл нь int)
◦ Функцийг шалгахад хэрэглэгдэнэ
◦ Хэрэв функцийн тодорхойлолт нь хэрэглэх мөрнөөсөө
хойш байхад загварыг хэрэглэнэ
◦ Жишээ
int maximum( int x, int y, int z );
 Гурван бүхэл тоо авна
 Нэг бүхэл тоо буцаана
 Төрөл хувиргах дүрэм
◦ Доод төрөл рүү хувиргах нь алдаанд хүргэж болно
1312/16/2015Vanderbilt university
Дээд
Доод
1412/16/2015Vanderbilt university
1512/16/2015Vanderbilt university
1612/16/2015Vanderbilt university
 Функцийн загвар нь хөрвүүлэгчид дараах зүйлсийг зааж өгнө:
◦ функцийн буцааж байгаа өгөгдлийн төрөл
◦ функцийн хүлээж авах параметрүүдийн тоо
◦ параметруудын төрөл болон,
◦ эдгээр параметруудын дараалал
◦ Функцийн тодорхойлолт нь хэрэглэсэн мөрнөөсөө хойш байгаа тохиолдолд л
загварыг хэрэглэнэ
 Зааж өгөөгүй тохиолдолд хөрвүүлэгч функцийг int утга буцаадаг,
параметргүй гэж үзнэ.
 Хэрэв функцийн загварт уг функц int-ээс ялгаатай утга буцаана гэсэн
байгаа бол функцийн тодорхойлолт дээр буцаах-утгын-төрлийг
орхивол синтакс алдаа үүснэ.
 Ямар нэг утга буцаах ѐстой функцэд утга буцаахаа мартвал
тодорхойгүй алдаанд хүргэж болно. Си-гийн стандартад ингэж
мартсан тохиолдолд юу болох нь тодорхойгүй гэсэн байдаг.
 Буцаах төрөл нь void байх функц ямар нэг утга буцаавал синтакс
алдаа гарна.
◦ Функцийн загвар, функцийн толгой болон функцийн дуудалт нь параметрийн
болон аргументын тоо, төрөл болон дарааллаараа мөн буцаах утгын төрлөөрөө
таарч байх ѐстой.
1712/16/2015Vanderbilt university
 Толгой файлууд
◦ Сангийн функцуудын загварыг агуулна
◦ <stdio.h>, <math.h> гэх мэт
◦ #include <файлын нэр> гэж ачаална
#include <math.h>
 Үүсгэсэн толгой файлууд
◦ Функцуудтэй файл үүсгэнэ
◦ файлынНэр.h гэж хадгална
◦ Өөр файлаас #include <файлынНэр.h> гэж
ачаална.
◦ Функцийн дахин ашиглалт
1812/16/2015Vanderbilt university
1912/16/2015Vanderbilt university
 Програмыг функц гэж нэрлэгдэх жижиг
хэсгүүдээр бүтээх
 Си-гийн стандарт сан дахь математикийн
энгийн функцууд
 Шинэ функц зохиох
 Функцуудын хооронд мэдээлэл дамжуулах
механизм
 Өөрийгөө дууддаг буюу рекурсив функцийг
хэрхэн зохиож хэрэглэх
 Дүгнэлт
2012/16/2015Vanderbilt university
 Утгаар дуудах
◦ Аргументын хуулбарыг функцэд дамжуулна
◦ Функц дотор утгыг нь өөрчлөхөд хувьсагчид
нөлөөлөхгүй
◦ Функц аргументын утгыг өөрчлөх шаардлагагүй үед
хэрэглэнэ
 Санамсаргүй өөрчлөлтөөс зайлсхийнэ
 Хаягаар дуудах
◦ Аргументыг өөрийг нь дамжуулна
◦ Функц дотор өөрчлөлт хийхэд хувьсагчид нөлөөлнө
◦ Зөвхөн зөв гэдэгт итгэлтэй байгаа үед хэрэглэнэ
 Утгаар дуудахыг авч үзье
2112/16/2015Vanderbilt university
 rand функц
◦ <stdlib.h>-г ачаална
◦ 0-ээс RAND_MAX (доод тал нь 32767) завсраас
санамсаргүй тоо буцаана
i = rand();
◦ Хуурамч санамсаргүй тоо
 Урьдчилан тодорхойлсон “санамсаргүй” тоонуудын дараалал
 Функцийг дуудах бүрд ижил дараалал үүснэ
 Масштаб
◦ 1-ээс n завсар дахь санамсаргүй тоо үүсгэхийн тулд
1 + ( rand() % n )
 rand() % n нь 0-ээс n-1 завсрын санамсаргүй тоо үүсгэнэ
 1-ээс n завсрын тоо болгохын тулд 1-ийг нэмнэ
1 + ( rand() % 6)
 1-ээс 6 завсар дахь санамсаргүй тоо
2212/16/2015Vanderbilt university
2312/16/2015Vanderbilt university
2412/16/2015Vanderbilt university
2512/16/2015Vanderbilt university
2612/16/2015Vanderbilt university
 srand функц
◦ <stdlib.h>
◦ Бүхэл тоо авч, өөрийн “санамсаргүй” тоон
дарааллын тодорхой байрлал руу үсэрнэ
srand(seed);
◦ srand( time(NULL) ); /*load <time.h> */
 time(NULL);
 time() функц нь 1970 оны 1 сарын 1-ний 0 цаг 0 минут
0 секундээс хойш өнгөрсөн хугацааг секундээр буцаана
 Үүсгүүрийг “санамсаргүй” болгоно
2712/16/2015Vanderbilt university
2812/16/2015Vanderbilt university
2912/16/2015Vanderbilt university
 Хадгалалтын ангийн тэмдэглэгээнүүд
◦ Хадгалалтын хугацаа – объект санах ойд хэр удаан
байх
◦ Муж – объект програмын аль хэсэгт харагдах
◦ Холболт – идентификаторын ашиглагдах файлуудыг
заана (дараа дэлгэрэнгүй үзнэ)
 Автомат хадгалалт
◦ Объект өөрийн блокт үүсч тэндээ устгагдана
◦ auto: локал хувьсагчдын хувьд хэвшмэл
auto double x, y;
◦ register: хувьсагчийг өндөр хурдтай регистрт хийхийг
хичээнэ
 Зөвхөн автомат хувьсагчдын хувьд хэрэглэнэ
register int counter = 1;
3012/16/2015Vanderbilt university
 Static хадгалалт
◦ Хувьсагч нь програмын биелэлтийн турш оршин
байна
◦ Хэвшмэл утга нь тэгтэй тэнцүү
◦ static: функцийн локал хувьсагчид
 Функцийг ажиллаж дууссаны дараа утгаа хадгална
 Зөвхөн өөрийн функц дотроо харагдана
◦ extern: глобал хувьсагчид болон функцуудын
хувьд хэвшмэл
 ямар ч функцээс харагдана
3112/16/2015Vanderbilt university
 4 төрлийн муж байна
 Файлын муж
◦ Функцийн гадна зарлагдсан идентификатор бүх
функцээс харагдана
◦ Глобал хувьсагч, функцийн тодорхойлолт,
функцийн загварт хэрэглэгдэнэ
 Функцийн муж
◦ Зөвхөн функцийн бие дотроос хандаж болно
◦ Зөвхөн тэмдэглэгээнүүдэд хэрэглэгдэнэ (start:
case: гэх мэт)
3212/16/2015Vanderbilt university
 Блок муж
◦ Блок дотор зарлагдсан идентификатор
 Блок муж их хаалт нээхээр эхэлж, хаахаар дуусна
◦ Хувьсагч, функцийн параметрүүдэд (функцийн
дотоод хувьсагчид) хэрэглэгдэнэ
◦ Дотоод блокт ижил нэртэй хувьсагч байвал
гадаад блокт байгаа хувьсагч “харагдахгүй”
 Функцийн загварын муж
◦ Параметрын жагсаалтанд байгаа
идентификаторуудад хэрэглэгдэнэ
3312/16/2015Vanderbilt university
3412/16/2015Vanderbilt university
3512/16/2015Vanderbilt university
3612/16/2015Vanderbilt university
3712/16/2015Vanderbilt university
 Програмыг функц гэж нэрлэгдэх жижиг
хэсгүүдээр бүтээх
 Си-гийн стандарт сан дахь математикийн
энгийн функцууд
 Шинэ функц зохиох
 Функцуудын хооронд мэдээлэл дамжуулах
механизм
 Өөрийгөө дууддаг буюу рекурсив функцийг
хэрхэн зохиож хэрэглэх
 Дүгнэлт
3812/16/2015Vanderbilt university
 Рекурсив функц
◦ Өөрийгөө дууддаг функц
◦ Үндсэн тохиолдлыг л шийднэ
◦ Бодлогыг дараах хэсгүүдэд хуваана
 Юуг хийж чадах
 Юуг хийж чадахгүй
 Хийж чадах зүйл нь анхны бодлого байна
 Функц нь хийж чадахгүй байгаа зүйлээ шийдэхийн тулд
өөрийнхөө шинэ хуулбарыг үүсгэнэ
 Эцэст нь үндсэн тохиолдлыг шийднэ
 Рекурс дууссаны дараа бодлогыг бүхэлдээ шийдэгдсэн
байна
3912/16/2015Vanderbilt university
 Жишээ: факториал
◦ 5! = 5 * 4 * 3 * 2 * 1
◦ Дараах тэнцэтгэлүүд үнэн:
 5! = 5 * 4!
 4! = 4 * 3! ...
◦ Факториалыг рекурсээр тооцоолж болно
◦ Үндсэн тохиолдлыг шийдээд (1! = 0! = 1) цааш
үргэлжлүүлнэ
 2! = 2 * 1! = 2 * 1 = 2;
 3! = 3 * 2! = 3 * 2 = 6;
4012/16/2015Vanderbilt university
4112/16/2015Vanderbilt university
4212/16/2015Vanderbilt university
4312/16/2015Vanderbilt university
 Фибоначчийн цуваа: 0, 1, 1, 2, 3, 5, 8, ...
◦ Тоо бүр нь өмнөх хоѐр тооныхоо нийлбэр
◦ Рекурсээр тооцоолж болно:
 fib( n ) = fib( n - 1 ) + fib( n – 2 )
◦ fibonacci функцийн код
long fibonacci( long n )
{
if (n == 0 || n == 1) /* base case */
return n;
else
return fibonacci(n-1)+fibonacci(n–2);
}
4412/16/2015Vanderbilt university
4512/16/2015Vanderbilt university
4612/16/2015Vanderbilt university
4712/16/2015Vanderbilt university
4812/16/2015Vanderbilt university
4912/16/2015Vanderbilt university
 Давталт
◦ алхам: илэрхий давталт
◦ рекурс: давтагдсан функцийн дуудалтууд
 Төгсгөл
◦ алхам: давталтын нөхцөл худал болно
◦ рекурс: үндсэн тохиолдолд хүрнэ
 Хоѐулаа төгсгөлгүй байж болно
 Баланс
◦ Гүйцэтгэл (давталт) болон сайн програм
хангамжийн инженерчлэлийн (рекурс) хоорондын
сонголт
5012/16/2015Vanderbilt university
 Програмыг функц гэж нэрлэгдэх жижиг
хэсгүүдээр бүтээх
 Си-гийн стандарт сан дахь математикийн
энгийн функцууд
 Шинэ функц зохиох
 Функцуудын хооронд мэдээлэл дамжуулах
механизм
 Өөрийгөө дууддаг буюу рекурсив функцийг
хэрхэн зохиож хэрэглэх
 Дүгнэлт
5112/16/2015Vanderbilt university
 Функц бол Си програмын үндсэн модуль юм
 Math сангийн функцууд
 Функцийн тодорхойлолт
 Функцийн загвар
 Толгой файл
 Функцийн дуудалт: утгаар дуудах ба хаягаар
дуудах
 Санамсаргүй тоо үүсгэх
 Хадгалалтын ангиуд
 Мужийн дүрмүүд
 Рекурс
5212/16/2015Vanderbilt university

More Related Content

What's hot

Салаалсан алгоритмын бодлогууд
Салаалсан алгоритмын бодлогуудСалаалсан алгоритмын бодлогууд
Салаалсан алгоритмын бодлогуудБаярсайхан Л
 
багтсан ба багтаасан дөрвөн өнцөгт
багтсан ба багтаасан дөрвөн өнцөгтбагтсан ба багтаасан дөрвөн өнцөгт
багтсан ба багтаасан дөрвөн өнцөгтKhishighuu Myanganbuu
 
U.cs101 алгоритм программчлал-1(1)
U.cs101   алгоритм программчлал-1(1)U.cs101   алгоритм программчлал-1(1)
U.cs101 алгоритм программчлал-1(1)Badral Khurelbaatar
 
P ii lekts-1 soronzon oron
P ii lekts-1 soronzon oronP ii lekts-1 soronzon oron
P ii lekts-1 soronzon oronudwal555 bhus
 
компьютерийн сүлжээний техник хангамж
компьютерийн сүлжээний  техник хангамжкомпьютерийн сүлжээний  техник хангамж
компьютерийн сүлжээний техник хангамжЖавзмаа Ж
 
цэнэг шилжүүлэх, гүйцэтгэх ажил
цэнэг шилжүүлэх, гүйцэтгэх ажилцэнэг шилжүүлэх, гүйцэтгэх ажил
цэнэг шилжүүлэх, гүйцэтгэх ажилSpirit Eden
 
тооллын систем
тооллын системтооллын систем
тооллын системMunkhuu Buyanaa
 
Ii lеkts-4 tsah sor undykts
Ii lеkts-4 tsah sor undyktsIi lеkts-4 tsah sor undykts
Ii lеkts-4 tsah sor undyktsudwal555 bhus
 
функцийн тодорхойлогдох муж ба утгын муж
функцийн тодорхойлогдох муж ба утгын мужфункцийн тодорхойлогдох муж ба утгын муж
функцийн тодорхойлогдох муж ба утгын мужHorloo Ebika
 
атомын загвар ба бүтэц
атомын загвар ба бүтэцатомын загвар ба бүтэц
атомын загвар ба бүтэцonjoo_od
 
функц шинжлэх график байгуулах
функц шинжлэх график байгуулахфункц шинжлэх график байгуулах
функц шинжлэх график байгуулахKhishighuu Myanganbuu
 
сяньби улс
сяньби улссяньби улс
сяньби улсNyamka Nmk
 
P ii lekts-2 b-s-l hvvl
P ii lekts-2 b-s-l hvvlP ii lekts-2 b-s-l hvvl
P ii lekts-2 b-s-l hvvludwal555 bhus
 
хэлхээний хуулиуд
хэлхээний хуулиудхэлхээний хуулиуд
хэлхээний хуулиудtsdnsrn
 

What's hot (20)

Салаалсан алгоритмын бодлогууд
Салаалсан алгоритмын бодлогуудСалаалсан алгоритмын бодлогууд
Салаалсан алгоритмын бодлогууд
 
Lection 4
Lection 4Lection 4
Lection 4
 
багтсан ба багтаасан дөрвөн өнцөгт
багтсан ба багтаасан дөрвөн өнцөгтбагтсан ба багтаасан дөрвөн өнцөгт
багтсан ба багтаасан дөрвөн өнцөгт
 
U.cs101 алгоритм программчлал-1(1)
U.cs101   алгоритм программчлал-1(1)U.cs101   алгоритм программчлал-1(1)
U.cs101 алгоритм программчлал-1(1)
 
P ii lekts-1 soronzon oron
P ii lekts-1 soronzon oronP ii lekts-1 soronzon oron
P ii lekts-1 soronzon oron
 
бодит тоо
бодит тоободит тоо
бодит тоо
 
компьютерийн сүлжээний техник хангамж
компьютерийн сүлжээний  техник хангамжкомпьютерийн сүлжээний  техник хангамж
компьютерийн сүлжээний техник хангамж
 
цэнэг шилжүүлэх, гүйцэтгэх ажил
цэнэг шилжүүлэх, гүйцэтгэх ажилцэнэг шилжүүлэх, гүйцэтгэх ажил
цэнэг шилжүүлэх, гүйцэтгэх ажил
 
C++ vndsen oilgolt хичээл 1
C++ vndsen oilgolt хичээл 1C++ vndsen oilgolt хичээл 1
C++ vndsen oilgolt хичээл 1
 
тооллын систем
тооллын системтооллын систем
тооллын систем
 
Lection 5
Lection 5Lection 5
Lection 5
 
Ii lеkts-4 tsah sor undykts
Ii lеkts-4 tsah sor undyktsIi lеkts-4 tsah sor undykts
Ii lеkts-4 tsah sor undykts
 
функцийн тодорхойлогдох муж ба утгын муж
функцийн тодорхойлогдох муж ба утгын мужфункцийн тодорхойлогдох муж ба утгын муж
функцийн тодорхойлогдох муж ба утгын муж
 
атомын загвар ба бүтэц
атомын загвар ба бүтэцатомын загвар ба бүтэц
атомын загвар ба бүтэц
 
Lekts 3
Lekts 3Lekts 3
Lekts 3
 
функц шинжлэх график байгуулах
функц шинжлэх график байгуулахфункц шинжлэх график байгуулах
функц шинжлэх график байгуулах
 
сяньби улс
сяньби улссяньби улс
сяньби улс
 
P ii lekts-2 b-s-l hvvl
P ii lekts-2 b-s-l hvvlP ii lekts-2 b-s-l hvvl
P ii lekts-2 b-s-l hvvl
 
хэлхээний хуулиуд
хэлхээний хуулиудхэлхээний хуулиуд
хэлхээний хуулиуд
 
Лекц 9(Заагч)
Лекц 9(Заагч)Лекц 9(Заагч)
Лекц 9(Заагч)
 

Viewers also liked

u.cs101 "Алгоритм ба програмчлал" Лекц №5
u.cs101 "Алгоритм ба програмчлал" Лекц №5u.cs101 "Алгоритм ба програмчлал" Лекц №5
u.cs101 "Алгоритм ба програмчлал" Лекц №5Khuder Altangerel
 
u.cs101 "Алгоритм ба програмчлал" Лекц №3
u.cs101 "Алгоритм ба програмчлал" Лекц №3u.cs101 "Алгоритм ба програмчлал" Лекц №3
u.cs101 "Алгоритм ба програмчлал" Лекц №3Khuder Altangerel
 
u.cs101 "Алгоритм ба програмчлал" Лекц №2
u.cs101 "Алгоритм ба програмчлал" Лекц №2u.cs101 "Алгоритм ба програмчлал" Лекц №2
u.cs101 "Алгоритм ба програмчлал" Лекц №2Khuder Altangerel
 
u.cs101 "Алгоритм ба програмчлал" Лекц №1
u.cs101 "Алгоритм ба програмчлал" Лекц №1u.cs101 "Алгоритм ба програмчлал" Лекц №1
u.cs101 "Алгоритм ба програмчлал" Лекц №1Khuder Altangerel
 
u.cs101 "Алгоритм ба програмчлал" Лекц №6
u.cs101 "Алгоритм ба програмчлал" Лекц №6u.cs101 "Алгоритм ба програмчлал" Лекц №6
u.cs101 "Алгоритм ба програмчлал" Лекц №6Khuder Altangerel
 
u.cs101 "Алгоритм ба програмчлал" Лекц №7
u.cs101 "Алгоритм ба програмчлал" Лекц №7u.cs101 "Алгоритм ба програмчлал" Лекц №7
u.cs101 "Алгоритм ба програмчлал" Лекц №7Khuder Altangerel
 
Hmm Tutorial
Hmm TutorialHmm Tutorial
Hmm Tutorialjefftang
 
IOI 2016 "Молекул" бодлогын бодолт
IOI 2016 "Молекул" бодлогын бодолтIOI 2016 "Молекул" бодлогын бодолт
IOI 2016 "Молекул" бодлогын бодолтKhuder Altangerel
 
давталттай алгоритм
давталттай алгоритмдавталттай алгоритм
давталттай алгоритмGEnkhjargal
 
Lecture4
Lecture4Lecture4
Lecture4orgil
 
давталттай алгоритм
давталттай алгоритмдавталттай алгоритм
давталттай алгоритмEnkh Gvnj
 
Цалингийн бүртгэлийн систем
Цалингийн бүртгэлийн системЦалингийн бүртгэлийн систем
Цалингийн бүртгэлийн системAltangerel Bilguun
 
Жава хэлний сурах бичиг Java helnii surah bichig Mongol
Жава хэлний сурах бичиг Java helnii surah bichig MongolЖава хэлний сурах бичиг Java helnii surah bichig Mongol
Жава хэлний сурах бичиг Java helnii surah bichig MongolGantulga Dashdondov
 
бөөний төвийн бараа бүртгэлийн систем
бөөний төвийн бараа бүртгэлийн систембөөний төвийн бараа бүртгэлийн систем
бөөний төвийн бараа бүртгэлийн системtreeee1
 

Viewers also liked (20)

u.cs101 "Алгоритм ба програмчлал" Лекц №5
u.cs101 "Алгоритм ба програмчлал" Лекц №5u.cs101 "Алгоритм ба програмчлал" Лекц №5
u.cs101 "Алгоритм ба програмчлал" Лекц №5
 
u.cs101 "Алгоритм ба програмчлал" Лекц №3
u.cs101 "Алгоритм ба програмчлал" Лекц №3u.cs101 "Алгоритм ба програмчлал" Лекц №3
u.cs101 "Алгоритм ба програмчлал" Лекц №3
 
u.cs101 "Алгоритм ба програмчлал" Лекц №2
u.cs101 "Алгоритм ба програмчлал" Лекц №2u.cs101 "Алгоритм ба програмчлал" Лекц №2
u.cs101 "Алгоритм ба програмчлал" Лекц №2
 
u.cs101 "Алгоритм ба програмчлал" Лекц №1
u.cs101 "Алгоритм ба програмчлал" Лекц №1u.cs101 "Алгоритм ба програмчлал" Лекц №1
u.cs101 "Алгоритм ба програмчлал" Лекц №1
 
u.cs101 "Алгоритм ба програмчлал" Лекц №6
u.cs101 "Алгоритм ба програмчлал" Лекц №6u.cs101 "Алгоритм ба програмчлал" Лекц №6
u.cs101 "Алгоритм ба програмчлал" Лекц №6
 
u.cs101 "Алгоритм ба програмчлал" Лекц №7
u.cs101 "Алгоритм ба програмчлал" Лекц №7u.cs101 "Алгоритм ба програмчлал" Лекц №7
u.cs101 "Алгоритм ба програмчлал" Лекц №7
 
Hmm Tutorial
Hmm TutorialHmm Tutorial
Hmm Tutorial
 
IOI 2016 "Молекул" бодлогын бодолт
IOI 2016 "Молекул" бодлогын бодолтIOI 2016 "Молекул" бодлогын бодолт
IOI 2016 "Молекул" бодлогын бодолт
 
давталттай алгоритм
давталттай алгоритмдавталттай алгоритм
давталттай алгоритм
 
Lecture4
Lecture4Lecture4
Lecture4
 
Java lecture4
Java lecture4Java lecture4
Java lecture4
 
давталттай алгоритм
давталттай алгоритмдавталттай алгоритм
давталттай алгоритм
 
Lec01 intro (1) (2)
Lec01 intro (1) (2)Lec01 intro (1) (2)
Lec01 intro (1) (2)
 
лекц №6
лекц №6лекц №6
лекц №6
 
Java lecture4
Java lecture4Java lecture4
Java lecture4
 
Java lecture5
Java lecture5Java lecture5
Java lecture5
 
Цалингийн бүртгэлийн систем
Цалингийн бүртгэлийн системЦалингийн бүртгэлийн систем
Цалингийн бүртгэлийн систем
 
Java lecture3
Java lecture3Java lecture3
Java lecture3
 
Жава хэлний сурах бичиг Java helnii surah bichig Mongol
Жава хэлний сурах бичиг Java helnii surah bichig MongolЖава хэлний сурах бичиг Java helnii surah bichig Mongol
Жава хэлний сурах бичиг Java helnii surah bichig Mongol
 
бөөний төвийн бараа бүртгэлийн систем
бөөний төвийн бараа бүртгэлийн систембөөний төвийн бараа бүртгэлийн систем
бөөний төвийн бараа бүртгэлийн систем
 

Similar to u.cs101 "Алгоритм ба програмчлал" Лекц №4 (20)

Lec4 хereglegchiinpunkts
Lec4 хereglegchiinpunktsLec4 хereglegchiinpunkts
Lec4 хereglegchiinpunkts
 
Gosexem asuult 09
Gosexem asuult 09Gosexem asuult 09
Gosexem asuult 09
 
Sw206 lec
Sw206 lecSw206 lec
Sw206 lec
 
Vb.net mon1
Vb.net mon1Vb.net mon1
Vb.net mon1
 
Лекц №9
Лекц №9Лекц №9
Лекц №9
 
Лекц №6
Лекц №6Лекц №6
Лекц №6
 
Лекц №5
Лекц №5Лекц №5
Лекц №5
 
Лекц №13
Лекц №13Лекц №13
Лекц №13
 
Excel
ExcelExcel
Excel
 
Excel
ExcelExcel
Excel
 
Pp Lect6 1
Pp Lect6 1Pp Lect6 1
Pp Lect6 1
 
онол
онолонол
онол
 
U.cs101 лаборатори 1
U.cs101 лаборатори 1U.cs101 лаборатори 1
U.cs101 лаборатори 1
 
Lecture2
Lecture2Lecture2
Lecture2
 
Програмчлалын хэл
Програмчлалын хэлПрограмчлалын хэл
Програмчлалын хэл
 
Лекц 1
Лекц 1Лекц 1
Лекц 1
 
Ooad
OoadOoad
Ooad
 
SW206 labo
SW206 laboSW206 labo
SW206 labo
 
203lab1
203lab1203lab1
203lab1
 
си хэлний ойлголт
си хэлний ойлголтси хэлний ойлголт
си хэлний ойлголт
 

More from Khuder Altangerel (17)

Марковын далд загвар
Марковын далд загварМарковын далд загвар
Марковын далд загвар
 
Lec08 readerwriter
Lec08 readerwriterLec08 readerwriter
Lec08 readerwriter
 
Lec05 cooperating (1)
Lec05 cooperating (1)Lec05 cooperating (1)
Lec05 cooperating (1)
 
Lec16 io
Lec16 ioLec16 io
Lec16 io
 
Lec07 exclusion
Lec07 exclusionLec07 exclusion
Lec07 exclusion
 
Lec15 pagereplace last
Lec15 pagereplace lastLec15 pagereplace last
Lec15 pagereplace last
 
Lec14 demandpage
Lec14 demandpageLec14 demandpage
Lec14 demandpage
 
Lec13 cachetlb
Lec13 cachetlbLec13 cachetlb
Lec13 cachetlb
 
Lec12 translation
Lec12 translationLec12 translation
Lec12 translation
 
Lec11 protection
Lec11 protectionLec11 protection
Lec11 protection
 
Lec10 scheduling
Lec10 schedulingLec10 scheduling
Lec10 scheduling
 
Lec09 deadlock
Lec09 deadlockLec09 deadlock
Lec09 deadlock
 
Lec06 synchronization
Lec06 synchronizationLec06 synchronization
Lec06 synchronization
 
Lec04 threads
Lec04 threadsLec04 threads
Lec04 threads
 
Lec03 concurrency (2)
Lec03 concurrency (2)Lec03 concurrency (2)
Lec03 concurrency (2)
 
Lec02 structures (2)
Lec02 structures (2)Lec02 structures (2)
Lec02 structures (2)
 
МХТ-ийн мэргэжилд шаардагдах гадаад хэлний чадвар
МХТ-ийн мэргэжилд шаардагдах гадаад хэлний чадварМХТ-ийн мэргэжилд шаардагдах гадаад хэлний чадвар
МХТ-ийн мэргэжилд шаардагдах гадаад хэлний чадвар
 

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

  • 1. Лекц № 4 Си-гийн функцууд А. Хүдэр
  • 2.  Програмыг функц гэж нэрлэгдэх жижиг хэсгүүдээр бүтээх  Си-гийн стандарт сан дахь математикийн энгийн функцууд  Шинэ функц зохиох  Функцуудын хооронд мэдээлэл дамжуулах механизм  Өөрийгөө дууддаг буюу рекурсив функцийг хэрхэн зохиож хэрэглэх  Дүгнэлт 212/16/2015Vanderbilt university
  • 3.  Функцууд ◦ Си-гийн модуль ◦ Програмд хэрэглэгчийн зохиосон болон сангийн функцууд байна.  Си-гийн стандарт санд төрөл бүрийн функцууд байдаг  Функцийн дуудалтууд ◦ Функц дуудах  Функцийн нэр болон аргументуудыг (өгөгдөл) зааж өгнө  Функц үйлдлүүдээ гүйцэтгэнэ  Функц үр дүнгээ буцаана ◦ Функц дуудалттай төстэй зүйл  Дарга нь ажилтандаа даалгавар өгөх  Ажилтан мэдээллийг авч, даалгаврыг биелүүлээд, үр дүнг авчирна  Мэдээллийн далдлалт: дарга деталиудыг нь мэдэхгүй 312/16/2015Vanderbilt university
  • 5.  Програмыг функц гэж нэрлэгдэх жижиг хэсгүүдээр бүтээх  Си-гийн стандарт сан дахь математикийн энгийн функцууд  Шинэ функц зохиох  Функцуудын хооронд мэдээлэл дамжуулах механизм  Өөрийгөө дууддаг буюу рекурсив функцийг хэрхэн зохиож хэрэглэх  Дүгнэлт 512/16/2015Vanderbilt university
  • 6.  Math сангийн функцууд ◦ Математикийн энгийн тооцооллыг гүйцэтгэнэ ◦ #include <math.h>  Функцийг дуудах хэлбэр ◦ ФункцийнНэр(аргумент);  Хэрэв олон аргументтай бол таслалаар тусгаарлан жагсаана ◦ printf( "%.2f", sqrt( 900.0 ) );  Аргументынхаа квадрат язгуурыг буцаах sqrt функцийг дуудна.  Математикийн бүх функцууд double өгөгдлийн төрлийн утга буцаана ◦ Аргумент нь тогтмол, хувьсагч эсвэл илэрхийлэл байж болно 612/16/2015Vanderbilt university
  • 8.  Програмыг функц гэж нэрлэгдэх жижиг хэсгүүдээр бүтээх  Си-гийн стандарт сан дахь математикийн энгийн функцууд  Шинэ функц зохиох  Функцуудын хооронд мэдээлэл дамжуулах механизм  Өөрийгөө дууддаг буюу рекурсив функцийг хэрхэн зохиож хэрэглэх  Дүгнэлт 812/16/2015Vanderbilt university
  • 9.  Функцууд ◦ Програмыг модульчлана ◦ Функц дотор зарласан хувьсагчид нь локал хувьсагчид байна  Зөвхөн функц дотор харагдана ◦ Параметрууд  Функцуудын хооронд мэдээлэл солилцох  Локал хувьсагчид  Функцийн давуу талууд ◦ Хуваагаад нэгтгэх  Програм хөгжүүлэхэд ашиглах арга ◦ Програмын дахин ашиглагдах чанар  Шинэ програм бичихэд байгаа функцуудийг блок болгон ашиглах  Хийсвэрлэл – дотоод деталиудыг далдлах (сангийн функцууд) ◦ Код давтахаас зайлсхийх 912/16/2015Vanderbilt university
  • 10.  Олон функцтэй програмын хувьд main функц нь програмын ихэнх ажлуудыг гүйцэтгэх функцуудыг дуудсан дуудалт байдлаар бичигдэнэ  Функц бүр сайтар тодорхойлогдсон ганц даалгавартай байх ѐстой ба функцийн нэр нь уг үүргээ зөв илэрхийлсэн байх хэрэгтэй 1012/16/2015Vanderbilt university
  • 11.  Функцийг тодорхойлох хэлбэр буцаах-утгын-төрөл функцийн-нэр(параметрууд) { Зарлалт ба үйлдлүүд }  Функцийн-нэр: дурын зөв идентификатор  Буцаах-утгын-төрөл: үр дүнгийн өгөгдлийн төрөл (хэвшмэл нь int)  void – функц юу ч буцаахгүйг заана  Параметрууд – параметруудыг зарлах таслалаар тусгаарлагдсан жагсаалт  int төрөлтэй биш параметр бүрийн хувьд төрлийг нь нэг бүрчлэн бичиж өгнө  Зарлалт ба үйлдлүүд: функцийн бие (блок)  Хувьсагчийг блок дотор зарлаж болно (багтсан блок байж болно)  Функцийг өөр функцийн бие дотор тодорхойлж болохгүй  Удирдлага шилжүүлэх  Хэрэв юу ч буцаахгүй бол  return;  эсвэл хаах их хаалт хүртэл  Ямар нэг зүйл буцааж байгаа бол  return илэрхийлэл; 1112/16/2015Vanderbilt university
  • 12. Функцийн загвар нь уг функц програмд удахгүй гарч ирэхийг заана square функцийн дуудалт Функцийн тодорхойлолт 1212/16/2015Vanderbilt university
  • 13.  Функцийн загвар ◦ Функцийн нэр ◦ Параметрууд – функц юу хүлээж авах ◦ Буцаах төрөл – функцийн буцаах өгөгдлийн төрөл (хэвшмэл нь int) ◦ Функцийг шалгахад хэрэглэгдэнэ ◦ Хэрэв функцийн тодорхойлолт нь хэрэглэх мөрнөөсөө хойш байхад загварыг хэрэглэнэ ◦ Жишээ int maximum( int x, int y, int z );  Гурван бүхэл тоо авна  Нэг бүхэл тоо буцаана  Төрөл хувиргах дүрэм ◦ Доод төрөл рүү хувиргах нь алдаанд хүргэж болно 1312/16/2015Vanderbilt university
  • 17.  Функцийн загвар нь хөрвүүлэгчид дараах зүйлсийг зааж өгнө: ◦ функцийн буцааж байгаа өгөгдлийн төрөл ◦ функцийн хүлээж авах параметрүүдийн тоо ◦ параметруудын төрөл болон, ◦ эдгээр параметруудын дараалал ◦ Функцийн тодорхойлолт нь хэрэглэсэн мөрнөөсөө хойш байгаа тохиолдолд л загварыг хэрэглэнэ  Зааж өгөөгүй тохиолдолд хөрвүүлэгч функцийг int утга буцаадаг, параметргүй гэж үзнэ.  Хэрэв функцийн загварт уг функц int-ээс ялгаатай утга буцаана гэсэн байгаа бол функцийн тодорхойлолт дээр буцаах-утгын-төрлийг орхивол синтакс алдаа үүснэ.  Ямар нэг утга буцаах ѐстой функцэд утга буцаахаа мартвал тодорхойгүй алдаанд хүргэж болно. Си-гийн стандартад ингэж мартсан тохиолдолд юу болох нь тодорхойгүй гэсэн байдаг.  Буцаах төрөл нь void байх функц ямар нэг утга буцаавал синтакс алдаа гарна. ◦ Функцийн загвар, функцийн толгой болон функцийн дуудалт нь параметрийн болон аргументын тоо, төрөл болон дарааллаараа мөн буцаах утгын төрлөөрөө таарч байх ѐстой. 1712/16/2015Vanderbilt university
  • 18.  Толгой файлууд ◦ Сангийн функцуудын загварыг агуулна ◦ <stdio.h>, <math.h> гэх мэт ◦ #include <файлын нэр> гэж ачаална #include <math.h>  Үүсгэсэн толгой файлууд ◦ Функцуудтэй файл үүсгэнэ ◦ файлынНэр.h гэж хадгална ◦ Өөр файлаас #include <файлынНэр.h> гэж ачаална. ◦ Функцийн дахин ашиглалт 1812/16/2015Vanderbilt university
  • 20.  Програмыг функц гэж нэрлэгдэх жижиг хэсгүүдээр бүтээх  Си-гийн стандарт сан дахь математикийн энгийн функцууд  Шинэ функц зохиох  Функцуудын хооронд мэдээлэл дамжуулах механизм  Өөрийгөө дууддаг буюу рекурсив функцийг хэрхэн зохиож хэрэглэх  Дүгнэлт 2012/16/2015Vanderbilt university
  • 21.  Утгаар дуудах ◦ Аргументын хуулбарыг функцэд дамжуулна ◦ Функц дотор утгыг нь өөрчлөхөд хувьсагчид нөлөөлөхгүй ◦ Функц аргументын утгыг өөрчлөх шаардлагагүй үед хэрэглэнэ  Санамсаргүй өөрчлөлтөөс зайлсхийнэ  Хаягаар дуудах ◦ Аргументыг өөрийг нь дамжуулна ◦ Функц дотор өөрчлөлт хийхэд хувьсагчид нөлөөлнө ◦ Зөвхөн зөв гэдэгт итгэлтэй байгаа үед хэрэглэнэ  Утгаар дуудахыг авч үзье 2112/16/2015Vanderbilt university
  • 22.  rand функц ◦ <stdlib.h>-г ачаална ◦ 0-ээс RAND_MAX (доод тал нь 32767) завсраас санамсаргүй тоо буцаана i = rand(); ◦ Хуурамч санамсаргүй тоо  Урьдчилан тодорхойлсон “санамсаргүй” тоонуудын дараалал  Функцийг дуудах бүрд ижил дараалал үүснэ  Масштаб ◦ 1-ээс n завсар дахь санамсаргүй тоо үүсгэхийн тулд 1 + ( rand() % n )  rand() % n нь 0-ээс n-1 завсрын санамсаргүй тоо үүсгэнэ  1-ээс n завсрын тоо болгохын тулд 1-ийг нэмнэ 1 + ( rand() % 6)  1-ээс 6 завсар дахь санамсаргүй тоо 2212/16/2015Vanderbilt university
  • 27.  srand функц ◦ <stdlib.h> ◦ Бүхэл тоо авч, өөрийн “санамсаргүй” тоон дарааллын тодорхой байрлал руу үсэрнэ srand(seed); ◦ srand( time(NULL) ); /*load <time.h> */  time(NULL);  time() функц нь 1970 оны 1 сарын 1-ний 0 цаг 0 минут 0 секундээс хойш өнгөрсөн хугацааг секундээр буцаана  Үүсгүүрийг “санамсаргүй” болгоно 2712/16/2015Vanderbilt university
  • 30.  Хадгалалтын ангийн тэмдэглэгээнүүд ◦ Хадгалалтын хугацаа – объект санах ойд хэр удаан байх ◦ Муж – объект програмын аль хэсэгт харагдах ◦ Холболт – идентификаторын ашиглагдах файлуудыг заана (дараа дэлгэрэнгүй үзнэ)  Автомат хадгалалт ◦ Объект өөрийн блокт үүсч тэндээ устгагдана ◦ auto: локал хувьсагчдын хувьд хэвшмэл auto double x, y; ◦ register: хувьсагчийг өндөр хурдтай регистрт хийхийг хичээнэ  Зөвхөн автомат хувьсагчдын хувьд хэрэглэнэ register int counter = 1; 3012/16/2015Vanderbilt university
  • 31.  Static хадгалалт ◦ Хувьсагч нь програмын биелэлтийн турш оршин байна ◦ Хэвшмэл утга нь тэгтэй тэнцүү ◦ static: функцийн локал хувьсагчид  Функцийг ажиллаж дууссаны дараа утгаа хадгална  Зөвхөн өөрийн функц дотроо харагдана ◦ extern: глобал хувьсагчид болон функцуудын хувьд хэвшмэл  ямар ч функцээс харагдана 3112/16/2015Vanderbilt university
  • 32.  4 төрлийн муж байна  Файлын муж ◦ Функцийн гадна зарлагдсан идентификатор бүх функцээс харагдана ◦ Глобал хувьсагч, функцийн тодорхойлолт, функцийн загварт хэрэглэгдэнэ  Функцийн муж ◦ Зөвхөн функцийн бие дотроос хандаж болно ◦ Зөвхөн тэмдэглэгээнүүдэд хэрэглэгдэнэ (start: case: гэх мэт) 3212/16/2015Vanderbilt university
  • 33.  Блок муж ◦ Блок дотор зарлагдсан идентификатор  Блок муж их хаалт нээхээр эхэлж, хаахаар дуусна ◦ Хувьсагч, функцийн параметрүүдэд (функцийн дотоод хувьсагчид) хэрэглэгдэнэ ◦ Дотоод блокт ижил нэртэй хувьсагч байвал гадаад блокт байгаа хувьсагч “харагдахгүй”  Функцийн загварын муж ◦ Параметрын жагсаалтанд байгаа идентификаторуудад хэрэглэгдэнэ 3312/16/2015Vanderbilt university
  • 38.  Програмыг функц гэж нэрлэгдэх жижиг хэсгүүдээр бүтээх  Си-гийн стандарт сан дахь математикийн энгийн функцууд  Шинэ функц зохиох  Функцуудын хооронд мэдээлэл дамжуулах механизм  Өөрийгөө дууддаг буюу рекурсив функцийг хэрхэн зохиож хэрэглэх  Дүгнэлт 3812/16/2015Vanderbilt university
  • 39.  Рекурсив функц ◦ Өөрийгөө дууддаг функц ◦ Үндсэн тохиолдлыг л шийднэ ◦ Бодлогыг дараах хэсгүүдэд хуваана  Юуг хийж чадах  Юуг хийж чадахгүй  Хийж чадах зүйл нь анхны бодлого байна  Функц нь хийж чадахгүй байгаа зүйлээ шийдэхийн тулд өөрийнхөө шинэ хуулбарыг үүсгэнэ  Эцэст нь үндсэн тохиолдлыг шийднэ  Рекурс дууссаны дараа бодлогыг бүхэлдээ шийдэгдсэн байна 3912/16/2015Vanderbilt university
  • 40.  Жишээ: факториал ◦ 5! = 5 * 4 * 3 * 2 * 1 ◦ Дараах тэнцэтгэлүүд үнэн:  5! = 5 * 4!  4! = 4 * 3! ... ◦ Факториалыг рекурсээр тооцоолж болно ◦ Үндсэн тохиолдлыг шийдээд (1! = 0! = 1) цааш үргэлжлүүлнэ  2! = 2 * 1! = 2 * 1 = 2;  3! = 3 * 2! = 3 * 2 = 6; 4012/16/2015Vanderbilt university
  • 44.  Фибоначчийн цуваа: 0, 1, 1, 2, 3, 5, 8, ... ◦ Тоо бүр нь өмнөх хоѐр тооныхоо нийлбэр ◦ Рекурсээр тооцоолж болно:  fib( n ) = fib( n - 1 ) + fib( n – 2 ) ◦ fibonacci функцийн код long fibonacci( long n ) { if (n == 0 || n == 1) /* base case */ return n; else return fibonacci(n-1)+fibonacci(n–2); } 4412/16/2015Vanderbilt university
  • 50.  Давталт ◦ алхам: илэрхий давталт ◦ рекурс: давтагдсан функцийн дуудалтууд  Төгсгөл ◦ алхам: давталтын нөхцөл худал болно ◦ рекурс: үндсэн тохиолдолд хүрнэ  Хоѐулаа төгсгөлгүй байж болно  Баланс ◦ Гүйцэтгэл (давталт) болон сайн програм хангамжийн инженерчлэлийн (рекурс) хоорондын сонголт 5012/16/2015Vanderbilt university
  • 51.  Програмыг функц гэж нэрлэгдэх жижиг хэсгүүдээр бүтээх  Си-гийн стандарт сан дахь математикийн энгийн функцууд  Шинэ функц зохиох  Функцуудын хооронд мэдээлэл дамжуулах механизм  Өөрийгөө дууддаг буюу рекурсив функцийг хэрхэн зохиож хэрэглэх  Дүгнэлт 5112/16/2015Vanderbilt university
  • 52.  Функц бол Си програмын үндсэн модуль юм  Math сангийн функцууд  Функцийн тодорхойлолт  Функцийн загвар  Толгой файл  Функцийн дуудалт: утгаар дуудах ба хаягаар дуудах  Санамсаргүй тоо үүсгэх  Хадгалалтын ангиуд  Мужийн дүрмүүд  Рекурс 5212/16/2015Vanderbilt university