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

Урвуу матриц
Урвуу матрицУрвуу матриц
Урвуу матрицBolorma Bolor
 
математик анализ лекц№10
математик анализ лекц№10математик анализ лекц№10
математик анализ лекц№10narangerelodon
 
U.cs101 алгоритм программчлал-2
U.cs101   алгоритм программчлал-2U.cs101   алгоритм программчлал-2
U.cs101 алгоритм программчлал-2Badral Khurelbaatar
 
Олон хувьсагчтай функцийн нөхцөлт экстремум, интеграл
Олон хувьсагчтай функцийн нөхцөлт экстремум, интегралОлон хувьсагчтай функцийн нөхцөлт экстремум, интеграл
Олон хувьсагчтай функцийн нөхцөлт экстремум, интегралBattur
 
програм хангамжийн чанарын инженерчлэл
програм хангамжийн чанарын инженерчлэл програм хангамжийн чанарын инженерчлэл
програм хангамжийн чанарын инженерчлэл Энхтамир Ш
 
Өгөгдлийн бүтэц
Өгөгдлийн бүтэцӨгөгдлийн бүтэц
Өгөгдлийн бүтэцMuuluu
 
U.cs101 алгоритм программчлал-12
U.cs101   алгоритм программчлал-12U.cs101   алгоритм программчлал-12
U.cs101 алгоритм программчлал-12Badral Khurelbaatar
 
функцийн тодорхойлогдох муж ба утгын муж
функцийн тодорхойлогдох муж ба утгын мужфункцийн тодорхойлогдох муж ба утгын муж
функцийн тодорхойлогдох муж ба утгын мужHorloo Ebika
 
Монопольт өрсөлдөөн
Монопольт өрсөлдөөн Монопольт өрсөлдөөн
Монопольт өрсөлдөөн Adilbishiin Gelegjamts
 
функц шинжлэх график байгуулах
функц шинжлэх график байгуулахфункц шинжлэх график байгуулах
функц шинжлэх график байгуулахKhishighuu Myanganbuu
 

What's hot (20)

Урвуу матриц
Урвуу матрицУрвуу матриц
Урвуу матриц
 
Лекц №11
Лекц №11Лекц №11
Лекц №11
 
математик анализ лекц№10
математик анализ лекц№10математик анализ лекц№10
математик анализ лекц№10
 
U.cs101 алгоритм программчлал-2
U.cs101   алгоритм программчлал-2U.cs101   алгоритм программчлал-2
U.cs101 алгоритм программчлал-2
 
Math 10grade
Math 10gradeMath 10grade
Math 10grade
 
Олон хувьсагчтай функцийн нөхцөлт экстремум, интеграл
Олон хувьсагчтай функцийн нөхцөлт экстремум, интегралОлон хувьсагчтай функцийн нөхцөлт экстремум, интеграл
Олон хувьсагчтай функцийн нөхцөлт экстремум, интеграл
 
семинар4
семинар4семинар4
семинар4
 
програм хангамжийн чанарын инженерчлэл
програм хангамжийн чанарын инженерчлэл програм хангамжийн чанарын инженерчлэл
програм хангамжийн чанарын инженерчлэл
 
бодит тоо
бодит тоободит тоо
бодит тоо
 
Лекц 9(Заагч)
Лекц 9(Заагч)Лекц 9(Заагч)
Лекц 9(Заагч)
 
Өгөгдлийн бүтэц
Өгөгдлийн бүтэцӨгөгдлийн бүтэц
Өгөгдлийн бүтэц
 
семинар2
семинар2семинар2
семинар2
 
U.cs101 алгоритм программчлал-12
U.cs101   алгоритм программчлал-12U.cs101   алгоритм программчлал-12
U.cs101 алгоритм программчлал-12
 
Ediin zasgiin matematic hicheeliin lekts
Ediin zasgiin matematic hicheeliin lektsEdiin zasgiin matematic hicheeliin lekts
Ediin zasgiin matematic hicheeliin lekts
 
функцийн тодорхойлогдох муж ба утгын муж
функцийн тодорхойлогдох муж ба утгын мужфункцийн тодорхойлогдох муж ба утгын муж
функцийн тодорхойлогдох муж ба утгын муж
 
класс диаграм
класс диаграмкласс диаграм
класс диаграм
 
Монопольт өрсөлдөөн
Монопольт өрсөлдөөн Монопольт өрсөлдөөн
Монопольт өрсөлдөөн
 
Ажилгүйдэл
Ажилгүйдэл Ажилгүйдэл
Ажилгүйдэл
 
Programchlaliin c hel
Programchlaliin c helProgramchlaliin c hel
Programchlaliin c hel
 
функц шинжлэх график байгуулах
функц шинжлэх график байгуулахфункц шинжлэх график байгуулах
функц шинжлэх график байгуулах
 

Viewers also liked

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
 
Дэлгүүрийн кассын систем
Дэлгүүрийн кассын системДэлгүүрийн кассын систем
Дэлгүүрийн кассын системAltangerel Bilguun
 

Viewers also liked (20)

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
 
C++
C++C++
C++
 
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