SlideShare a Scribd company logo
Лекц № 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

PPTX
пүршин дүүжингийн хөдөлгөөн
PPTX
U.cs101 алгоритм программчлал-2
PPTX
02 06-р анги (объектын орчин, шинж чанарыг тодорхойлох)
PDF
мэдээллийн технологи 1 хичээлийн хөтөлбөр
PPTX
U.cs101 алгоритм программчлал-12
PDF
Lecture 1
PDF
Prog didacticsok
PDF
дугуйн S
пүршин дүүжингийн хөдөлгөөн
U.cs101 алгоритм программчлал-2
02 06-р анги (объектын орчин, шинж чанарыг тодорхойлох)
мэдээллийн технологи 1 хичээлийн хөтөлбөр
U.cs101 алгоритм программчлал-12
Lecture 1
Prog didacticsok
дугуйн S

What's hot (20)

PDF
Лекц 2 (Блок схем)
PPTX
It101 lec6 10.06
PPTX
U.cs101 алгоритм программчлал-7
PPTX
U.cs101 алгоритм программчлал-3
PDF
Lection 5
PDF
семинар3
PPTX
лекц 3,
PPTX
БЛҮМ ТАКСОНОМИ
PPTX
GLON303-Хичээл 1, 2
PPTX
функц шинжлэх график байгуулах
PDF
Java programchlal s.uuganbayr
PPTX
C++ vndsen oilgolt хичээл 1
PPTX
U.cs101 алгоритм программчлал-1(1)
PDF
MT101 Lecture 1(Mongolia)
PPTX
U.cs101 алгоритм программчлал-5 zasvar badral(1)
PDF
Adobe photoshop cs
PPS
Давталттай алгоритмын бодлогууд
PPTX
ажилгүйдэл
DOCX
Lekts 3
Лекц 2 (Блок схем)
It101 lec6 10.06
U.cs101 алгоритм программчлал-7
U.cs101 алгоритм программчлал-3
Lection 5
семинар3
лекц 3,
БЛҮМ ТАКСОНОМИ
GLON303-Хичээл 1, 2
функц шинжлэх график байгуулах
Java programchlal s.uuganbayr
C++ vndsen oilgolt хичээл 1
U.cs101 алгоритм программчлал-1(1)
MT101 Lecture 1(Mongolia)
U.cs101 алгоритм программчлал-5 zasvar badral(1)
Adobe photoshop cs
Давталттай алгоритмын бодлогууд
ажилгүйдэл
Lekts 3
Ad

Viewers also liked (20)

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

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

PDF
Lec4 хereglegchiinpunkts
DOC
Gosexem asuult 09
DOC
Sw206 lec
DOC
PDF
PPTX
PPTX
PPTX
Лекц №13
PPT
Pp Lect6 1
PDF
U.cs101 лаборатори 1
PPTX
Lecture2
PPT
Програмчлалын хэл
PPTX
Лекц 1
DOCX
DOC
SW206 labo
DOCX
203lab1
Lec4 хereglegchiinpunkts
Gosexem asuult 09
Sw206 lec
Лекц №13
Pp Lect6 1
U.cs101 лаборатори 1
Lecture2
Програмчлалын хэл
Лекц 1
SW206 labo
203lab1

More from Khuder Altangerel (17)

PPTX
Марковын далд загвар
PPT
Lec08 readerwriter
PPTX
Lec05 cooperating (1)
PPTX
PPTX
Lec07 exclusion
PPTX
Lec15 pagereplace last
PPTX
Lec14 demandpage
PPTX
Lec13 cachetlb
PPTX
Lec12 translation
PPTX
Lec11 protection
PPTX
Lec10 scheduling
PPTX
Lec09 deadlock
PPTX
Lec06 synchronization
PPTX
Lec04 threads
PPTX
Lec03 concurrency (2)
PPTX
Lec02 structures (2)
PPTX
МХТ-ийн мэргэжилд шаардагдах гадаад хэлний чадвар
Марковын далд загвар
Lec08 readerwriter
Lec05 cooperating (1)
Lec07 exclusion
Lec15 pagereplace last
Lec14 demandpage
Lec13 cachetlb
Lec12 translation
Lec11 protection
Lec10 scheduling
Lec09 deadlock
Lec06 synchronization
Lec04 threads
Lec03 concurrency (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