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
 
Давталттай алгоритмын бодлогууд
Давталттай алгоритмын бодлогуудДавталттай алгоритмын бодлогууд
Давталттай алгоритмын бодлогуудБаярсайхан Л
 
u.cs101 "Алгоритм ба програмчлал" Лекц №3
u.cs101 "Алгоритм ба програмчлал" Лекц №3u.cs101 "Алгоритм ба програмчлал" Лекц №3
u.cs101 "Алгоритм ба програмчлал" Лекц №3Khuder Altangerel
 
U.cs101 алгоритм программчлал-2
U.cs101   алгоритм программчлал-2U.cs101   алгоритм программчлал-2
U.cs101 алгоритм программчлал-2Badral Khurelbaatar
 
Lec3 c++operator
Lec3 c++operatorLec3 c++operator
Lec3 c++operatorTuruu Tsogt
 
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
 
Lekts01
Lekts01Lekts01
Lekts01Ankhaa
 
U.cs101 алгоритм программчлал-12
U.cs101   алгоритм программчлал-12U.cs101   алгоритм программчлал-12
U.cs101 алгоритм программчлал-12Badral Khurelbaatar
 
тооллын сис 10т 2т
тооллын сис 10т 2ттооллын сис 10т 2т
тооллын сис 10т 2тNarantungaa
 
Lec2 c++helnii undeslel
Lec2 c++helnii undeslelLec2 c++helnii undeslel
Lec2 c++helnii undeslelTuruu Tsogt
 
u.cs101 "Алгоритм ба програмчлал" Лекц №5
u.cs101 "Алгоритм ба програмчлал" Лекц №5u.cs101 "Алгоритм ба програмчлал" Лекц №5
u.cs101 "Алгоритм ба програмчлал" Лекц №5Khuder Altangerel
 
Олон хувьсагчтай функцийн уламжлал ба дифференциал
Олон хувьсагчтай функцийн уламжлал ба дифференциалОлон хувьсагчтай функцийн уламжлал ба дифференциал
Олон хувьсагчтай функцийн уламжлал ба дифференциалBattur
 
си хэлний хичээлүүд 11 р анги
си хэлний хичээлүүд 11 р ангиси хэлний хичээлүүд 11 р анги
си хэлний хичээлүүд 11 р ангиenhsaran_tsahim
 

What's hot (20)

Урвуу матриц
Урвуу матрицУрвуу матриц
Урвуу матриц
 
Давталттай алгоритмын бодлогууд
Давталттай алгоритмын бодлогуудДавталттай алгоритмын бодлогууд
Давталттай алгоритмын бодлогууд
 
u.cs101 "Алгоритм ба програмчлал" Лекц №3
u.cs101 "Алгоритм ба програмчлал" Лекц №3u.cs101 "Алгоритм ба програмчлал" Лекц №3
u.cs101 "Алгоритм ба програмчлал" Лекц №3
 
U.cs101 алгоритм программчлал-2
U.cs101   алгоритм программчлал-2U.cs101   алгоритм программчлал-2
U.cs101 алгоритм программчлал-2
 
Lec3 c++operator
Lec3 c++operatorLec3 c++operator
Lec3 c++operator
 
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
 
Lection 1
Lection 1Lection 1
Lection 1
 
Lekts01
Lekts01Lekts01
Lekts01
 
Lekts 6
Lekts 6Lekts 6
Lekts 6
 
U.cs101 алгоритм программчлал-12
U.cs101   алгоритм программчлал-12U.cs101   алгоритм программчлал-12
U.cs101 алгоритм программчлал-12
 
Lection 4
Lection 4Lection 4
Lection 4
 
тооллын сис 10т 2т
тооллын сис 10т 2ттооллын сис 10т 2т
тооллын сис 10т 2т
 
Lec2 c++helnii undeslel
Lec2 c++helnii undeslelLec2 c++helnii undeslel
Lec2 c++helnii undeslel
 
u.cs101 "Алгоритм ба програмчлал" Лекц №5
u.cs101 "Алгоритм ба програмчлал" Лекц №5u.cs101 "Алгоритм ба програмчлал" Лекц №5
u.cs101 "Алгоритм ба програмчлал" Лекц №5
 
массив
массивмассив
массив
 
Олон хувьсагчтай функцийн уламжлал ба дифференциал
Олон хувьсагчтай функцийн уламжлал ба дифференциалОлон хувьсагчтай функцийн уламжлал ба дифференциал
Олон хувьсагчтай функцийн уламжлал ба дифференциал
 
Лекц №11
Лекц №11Лекц №11
Лекц №11
 
C cons
C consC cons
C cons
 
Lekts8
Lekts8Lekts8
Lekts8
 
си хэлний хичээлүүд 11 р анги
си хэлний хичээлүүд 11 р ангиси хэлний хичээлүүд 11 р анги
си хэлний хичээлүүд 11 р анги
 

Viewers also liked

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
 
U.cs101 алгоритм программчлал-1(1)
U.cs101   алгоритм программчлал-1(1)U.cs101   алгоритм программчлал-1(1)
U.cs101 алгоритм программчлал-1(1)Badral Khurelbaatar
 
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 "Алгоритм ба програмчлал" Лекц №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
 
U.cs101 алгоритм программчлал-1(1)
U.cs101   алгоритм программчлал-1(1)U.cs101   алгоритм программчлал-1(1)
U.cs101 алгоритм программчлал-1(1)
 
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)

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