SlideShare uma empresa Scribd logo
1 de 61
Лекц № 6
Си-гийн заагч
А. Хүдэр
 Заагч хувьсагчийг зарлах ба анхны утга олгох
 Заагч дээрх үйлдлүүд
 Аргументыг функц руу хаягаар дамжуулах
 const тодорхойлогчийг заагч дээр ашиглах
 Хаягаар дуудах арга хэрэглэсэн бөмбөлгөн
эрэмбэлэлт
 sizeof оператор
 Заагчтай илэрхийлэл ба заагчийн арифметик
 Заагч ба хүснэгт
 Заагч төрлийн хүснэгт
 Функцийн заагч
212/16/2015Vanderbilt university
 Утга нь санах ойн хаяг байна
 Энгийн хувьсагчид ямар нэг утга хадгалдаг
(шууд хаяглалт)
 Заагч нь ямар нэг утга агуулж байгаа
хувьсагчийн хаягийг агуулна (шууд бус
хаяглалт)
312/16/2015Vanderbilt university
 Заагч хувьсагчид * - ыг хэрэглэнэ
int *myPtr;
 int төрлийн заагчийг тодорхойлно (int * төрлийн заагч)
 Олон заагч зарлах бол хувьсагч бүрийн өмнө * -ыг бичнэ
int *myPtr1, *myPtr2;
 Ямар ч төрлийн заагч зарлаж болно
 Заагчийн анхны утгаар 0, NULL эсвэл ямар нэг хаяг өгөх
◦ 0 эсвэл NULL – юуг ч заахгүй
◦ 0 нь заагчид олгож болох цорын ганц бүхэл утга юм
◦ Заагчид анхны утгыг нь 0 гэж олгох нь NULL -ыг олгохтой
ижил боловч NULL –ыг ихэвчлэн хэрэглэнэ
◦ NULL -ыг <stddef.h>, <stdio.h> гэх мэт хэд хэдэн толгой
файлд тодорхойлсон байдаг
412/16/2015Vanderbilt university
 Заагч хувьсагчийг зарлах ба анхны утга олгох
 Заагч дээрх үйлдлүүд
 Аргументыг функц руу хаягаар дамжуулах
 const тодорхойлогчийг заагч дээр ашиглах
 Хаягаар дуудах арга хэрэглэсэн бөмбөлгөн
эрэмбэлэлт
 sizeof оператор
 Заагчтай илэрхийлэл ба заагчийн арифметик
 Заагч ба хүснэгт
 Заагч төрлийн хүснэгт
 Функцийн заагч
512/16/2015Vanderbilt university
 & (хаяг авах үйлдэл)
◦ Операндынхаа хаягийг буцаана
int y = 5;
int *yPtr;
yPtr = &y; /* yPtr заагч y – гийн хаягийг авна */
 /* yPtr заагч y-г заана*/
612/16/2015Vanderbilt university
 * (шууд бус хаяглалт/хаяглах үйлдэл)
◦ Операндынхаа зааж байгаа зүйлийн өөр
нэр/зохиомол нэрийг буцаана
◦ *yptr нь y-ийг буцаана (yptr нь y-г зааж байгаа
учир)
◦ *-ыг утга олгоход хэрэглэж болно
 Объектийн өөр нэрийг буцаана
 *yptr = 7; /* changes y to 7 */
 Хаяглалтанд хэрэглэж байгаа заагч нь (*-ын
операнд) lvalue байх ѐстой (тогтмол байж болохгүй).
 * ба & нь эсрэг үйлдлүүд юм
 Бие биенийгээ устгана
712/16/2015Vanderbilt university
Хэрэв aPtr нь a-г зааж байгаа
бол &a болон aPtr нь ижил
утга юм
a болон *aPtr нь ижил
&*aPtr болон *&aPtr нь ижил
утгатай
812/16/2015Vanderbilt university
912/16/2015Vanderbilt university
1012/16/2015Vanderbilt university
 Заагч хувьсагчийг зарлах ба анхны утга олгох
 Заагч дээрх үйлдлүүд
 Аргументыг функц руу хаягаар дамжуулах
 const тодорхойлогчийг заагч дээр ашиглах
 Хаягаар дуудах арга хэрэглэсэн бөмбөлгөн
эрэмбэлэлт
 sizeof оператор
 Заагчтай илэрхийлэл ба заагчийн арифметик
 Заагч ба хүснэгт
 Заагч төрлийн хүснэгт
 Функцийн заагч
1112/16/2015Vanderbilt university
 Заагч аргумент ашиглан хаягаар дуудах
◦ Аргументийн хаягийг & оператор ашиглан дамжуулна
◦ Санах ой дахь бодит байрлал дээр өөрчлөлт хийх
боломж олгоно
◦ Хүснэгтийг дамжуулахад & үйлдлийг ашиглахгүй, учир
нь хүснэгтийн нэр өөрөө заагч байдаг
 * оператор
◦ Функцийн дотор хувьсагчийн өөр нэр ашиглахад
хэрэглэгдэнэ
void timestwo( int *number )
{
*number = 2 * ( *number );
}
◦ *number нь дамжуулагдсан хувьсагчийн өөр нэр
байдлаар ашиглагдана
1212/16/2015Vanderbilt university
1312/16/2015Vanderbilt university
14
Заагч аргумент авах функцийн загвар
cubeByReference функц руу
заагч хувьсагчийн утга байж
болох хаяг дамжуулсан
Энэ програмд *nPtr нь number – тэй
адил тул энэ үйлдэл нь number
хувьсагчийн утгыг өөрчилнө
12/16/2015Vanderbilt university
1512/16/2015Vanderbilt university
1612/16/2015Vanderbilt university
 Заагч хувьсагчийг зарлах ба анхны утга олгох
 Заагч дээрх үйлдлүүд
 Аргументыг функц руу хаягаар дамжуулах
 const тодорхойлогчийг заагч дээр ашиглах
 Хаягаар дуудах арга хэрэглэсэн бөмбөлгөн
эрэмбэлэлт
 sizeof оператор
 Заагчтай илэрхийлэл ба заагчийн арифметик
 Заагч ба хүснэгт
 Заагч төрлийн хүснэгт
 Функцийн заагч
1712/16/2015Vanderbilt university
 const тодорхойлогч
◦ Хувьсагчийн утга өөрчлөгдөхгүй
◦ Хэрэв функц ямар нэг хувьсагчаа өөрчлөх хэрэггүй бол
const тодорхойлогчийг хэрэглэнэ
◦ const хувьсагчийг өөрчлөх гэж оролдвол алдаа гарна
 const заагчид
◦ Санах ойн тогтмол байрлал руу заана
◦ Тодорхойлох үедээ анхны утгыг нь олгох ѐстой
◦ const int *myPtr = &x;
 const int төрлийн энгийн заагч
◦ int *const myPtr = &x;
 int *const төрөл нь int төрлийн тогтмол заагч юм
 x нь өөрчлөгдөж болох боловч myPtr өөрчлөгдөхгүй
◦ const int *const Ptr = &x;
 const int төрлийн const заагч
1812/16/2015Vanderbilt university
19
sPtr болон *sPtr хоѐулаа тогтмол
биш
12/16/2015Vanderbilt university
20
sPtr болон *sPtr-ын утгыг
converttoUppercase функц
өөрчилнө
12/16/2015Vanderbilt university
21
sPtr заагчийг өөрчилж болохгүй боловч зааж
байгаа өгөгдөл *sPtr-ийг өөрчилж болно
12/16/2015Vanderbilt university
22
sPtr-ийг printCharacters функц
өөрчилж байна
12/16/2015Vanderbilt university
23
xPtr заагч өөрчлөгдөнө харин зааж байгаа
өгөгдөл *xPtr нь өөрчлөгдөхгүй
Хөрвүүлэлтийн алдаа!
*xPtr нь const тодорхойлогчтой
байхад утгыг нь өөрчлөх гэвэл
алдаа гарна
12/16/2015Vanderbilt university
24
ptr заагч өөрчлөгдөхгүй боловч зааж
байгаа *ptr өгөгдөл тогтмол биш
Хөрвүүлэлтийн алдаа!
12/16/2015Vanderbilt university
25
Заагч sPtr болон өгөгдөл *sPtr
хоѐулаа тогтмол
Хөрвүүлэлтийн алдаа!
12/16/2015Vanderbilt university
 Заагч хувьсагчийг зарлах ба анхны утга олгох
 Заагч дээрх үйлдлүүд
 Аргументыг функц руу хаягаар дамжуулах
 const тодорхойлогчийг заагч дээр ашиглах
 Хаягаар дуудах арга хэрэглэсэн бөмбөлгөн
эрэмбэлэлт
 sizeof оператор
 Заагчтай илэрхийлэл ба заагчийн арифметик
 Заагч ба хүснэгт
 Заагч төрлийн хүснэгт
 Функцийн заагч
2612/16/2015Vanderbilt university
 Заагч ашиглан бөмбөлгөн эрэмбэлэлтийг
хэрэгжүүлэх
◦ Хоѐр элементийн байрыг солих
◦ swap функц хүснэгтийн элементүүдийн хаягийг
хүлээж авна (& - г хэрэглэн)
◦ Заагч болон * операторыг хэрэглэн swap функц
хүснэгтийн элементүүдийг солино
 Псевдокод
Хүснэгтэд анхны утга олгох
өгөгдлийг анхны хэлбэрээр нь хэвлэх
bubblesort функцийг дуудах
эрэмбэлэгдсэн хүснэгтийг хэвлэх
bubblesort функцийг тодорхойлох
2712/16/2015Vanderbilt university
2812/16/2015Vanderbilt university
2912/16/2015Vanderbilt university
30
swap функц нь хоѐр заагчийн зааж буй
int төрлийн утгуудын байрыг солино
12/16/2015Vanderbilt university
 Заагч хувьсагчийг зарлах ба анхны утга олгох
 Заагч дээрх үйлдлүүд
 Аргументыг функц руу хаягаар дамжуулах
 const тодорхойлогчийг заагч дээр ашиглах
 Хаягаар дуудах арга хэрэглэсэн бөмбөлгөн
эрэмбэлэлт
 sizeof оператор
 Заагчтай илэрхийлэл ба заагчийн арифметик
 Заагч ба хүснэгт
 Заагч төрлийн хүснэгт
 Функцийн заагч
3112/16/2015Vanderbilt university
 sizeof
◦ Операндын хэмжээг байтаар буцаана
◦ Хүснэгтийн хувьд: нэг элементийн хэмжээ х
элементийн тоо
◦ Хэрэв sizeof(int) нь 4 байт бол
int myArray[ 10 ];
printf( "%d", sizeof( myArray ) );
 40 гэж хэвлэнэ
 sizeof-ыг доорх зүйлд ашиглаж болно
◦ Хувьсагчийн нэр
◦ Төрлийн нэр
◦ Тогтмолын нэр
3212/16/2015Vanderbilt university
33
float нь санах ойд 4 байт эзэлдэг бол 20
ширхэг float нь 80 байт болно
12/16/2015Vanderbilt university
3412/16/2015Vanderbilt university
3512/16/2015Vanderbilt university
 Заагч хувьсагчийг зарлах ба анхны утга олгох
 Заагч дээрх үйлдлүүд
 Аргументыг функц руу хаягаар дамжуулах
 const тодорхойлогчийг заагч дээр ашиглах
 Хаягаар дуудах арга хэрэглэсэн бөмбөлгөн
эрэмбэлэлт
 sizeof оператор
 Заагчтай илэрхийлэл ба заагчийн арифметик
 Заагч ба хүснэгт
 Заагч төрлийн хүснэгт
 Функцийн заагч
3612/16/2015Vanderbilt university
 Заагч дээр арифметик үйлдэл хийж болно
◦ Заагчийг нэмэгдүүлэх/хорогдуулах (++ эсвэл --)
◦ Заагч дээр бүхэл тоо нэмэх (+ эсвэл +=, - эсвэл
-=)
◦ Заагчуудыг бие биенээс нь хасч болно
◦ Эдгээр үйлдлүүдийг хүснэгт дээр хийх үед л
утгатай байна
3712/16/2015Vanderbilt university
 Бүхэл тоон төрөл нь 4 байт байдаг машин
дээрх 5 элементтэй хүснэгт
◦ vPtr эхний элемент v[0] рүү заана
 3000 гэсэн байрлал руу (vPtr=3000)
◦ vPtr+=2; vPtr-ийг 3008 утгатай болгоно
 vPtr нь v[2] руу заах (2-оор нэмэгдсэний дараа) ба, машин
4 байтын int төрөлтэй тул зааж буй хаяг нь 3008 болно.
38v хүснэгт ба түүн рүү заах vPtr заагч 12/16/2015Vanderbilt university
3912/16/2015Vanderbilt university
 Заагчийг хасах
◦ Нэг заагчаас нөгөөг хүртлэх элементийн тоог
буцаана. Хэрэв
vPtr2 = v[2];
vPtr0 = v[0];
◦ vPtr2 – vPtr0 нь 2 болно
 Заагчийг харьцуулах
◦ Аль заагч нь илүү их дугаартай хүснэгтийн
элемент зааж байгааг олох
◦ Заагчийн утга 0-тэй тэнцүү эсэхийг шалгах
4012/16/2015Vanderbilt university
 Ижил төрлийн заагчдын хооронд утга
олгох үйлдэл хэрэглэж болно
◦ Хэрэв төрөл нь ялгаатай бол төрөл хувиргах
үйлдэл хэрэглэнэ
◦ Онцгой тохиолдол: void төрлийн заагч (void *
төрөл)
 Ерөнхий заагч, ямар ч төрлийг зааж чадна
 void заагч руу шилжүүлэхэд төрөл хувиргалт
хэрэггүй
 void төрлийн заагч дээр шууд бус хаяглалтыг хийж
болохгүй
4112/16/2015Vanderbilt university
 Заагч хувьсагчийг зарлах ба анхны утга олгох
 Заагч дээрх үйлдлүүд
 Аргументыг функц руу хаягаар дамжуулах
 const тодорхойлогчийг заагч дээр ашиглах
 Хаягаар дуудах арга хэрэглэсэн бөмбөлгөн
эрэмбэлэлт
 sizeof оператор
 Заагчтай илэрхийлэл ба заагчийн арифметик
 Заагч ба хүснэгт
 Заагч төрлийн хүснэгт
 Функцийн заагч
4212/16/2015Vanderbilt university
 Заагч ба хүснэгт нь нягт холбоотой
◦ Хүснэгтийн нэр нь тогтмол заагч юм
◦ Заагчаар хүснэгтийн индексийн үйлдлийг хийж
болно
 b[5] хүснэгт ба bPtr заагч зарлая
◦ Тэдгээрийг ижил болгохын тулд дараах үйлдлийг
хийнэ
bPtr = b;
 Хүснэгтийн нэр (b) нь b[5] хүснэгтийн эхний
элементийн хаяг юм
bPtr = &b[0];
 bPtr заагчид b хүснэгтийн эхний элементийн хаягийг
олгоно
4312/16/2015Vanderbilt university
 b[3] элемент
◦ *(bPtr+3) гэж хандаж болно
 Шилжилтийн утга n-ийн хувьд заагч/шилжилтийн
тэмдэглэгээ гэж нэрлэгддэг
◦ bPtr[3] гэж хандаж болно
 Заагч/индексийн тэмдэглэгээ гэж нэрлэгддэг
 bPtr[3] нь b[3] –тай адил
◦ Хүснэгт дээрээ заагчийн арифметикийг хэрэглэн
*(b+3) гэж хандаж болно
4412/16/2015Vanderbilt university
45
Хүснэгтийн индексийн
тэмдэглэгээ
Заагч/шилжилтийн
тэмдэглэгээ
12/16/2015Vanderbilt university
46
Заагчийн индекс тэмдэглэгээ
Заагчийн шилжилттэй
тэмдэглэгээ
12/16/2015Vanderbilt university
4712/16/2015Vanderbilt university
4812/16/2015Vanderbilt university
49
for давталтын нөхцөл дотор
үйлдэл гүйцэтгэж байна
12/16/2015Vanderbilt university
 Заагч хувьсагчийг зарлах ба анхны утга олгох
 Заагч дээрх үйлдлүүд
 Аргументыг функц руу хаягаар дамжуулах
 const тодорхойлогчийг заагч дээр ашиглах
 Хаягаар дуудах арга хэрэглэсэн бөмбөлгөн
эрэмбэлэлт
 sizeof оператор
 Заагчтай илэрхийлэл ба заагчийн арифметик
 Заагч ба хүснэгт
 Заагч төрлийн хүснэгт
 Функцийн заагч
5012/16/2015Vanderbilt university
 Хүснэгт нь заагчуудыг агуулж болно
 Жишээ: Тэмдэгт мөр төрлийн хүснэгт
◦ char *suit[ 4 ] = { "Hearts", "Diamonds”, "Clubs", "Spades" };
◦ Тэмдэгт мөр нь эхний үсгийнхээ заагч юм
◦ char * - suit-ийн элемент бүр нь char төрлийн заагч юм
◦ Тэмдэгт мөрүүд нь suit хүснэгтэд хадгалагдахгүй ба тэнд
тэдний зөвхөн заагчдыг хадгална
◦ suit хүснэгт нь тогтмол хэмжээтэй ба харин тэмдэгт
мөрүүд нь ямар ч хэмжээтэй байж болно
5112/16/2015Vanderbilt university
5212/16/2015Vanderbilt university
 Заагч хувьсагчийг зарлах ба анхны утга олгох
 Заагч дээрх үйлдлүүд
 Аргументыг функц руу хаягаар дамжуулах
 const тодорхойлогчийг заагч дээр ашиглах
 Хаягаар дуудах арга хэрэглэсэн бөмбөлгөн
эрэмбэлэлт
 sizeof оператор
 Заагчтай илэрхийлэл ба заагчийн арифметик
 Заагч ба хүснэгт
 Заагч төрлийн хүснэгт
 Функцийн заагч
5312/16/2015Vanderbilt university
 Функцийн заагч
◦ Функцийн хаягийг заана
◦ Хүснэгтийн нэр эхний элементийнхээ хаяг
байдагтай адил
◦ Функцийн нэр нь функцийг тодорхойлсон кодын
эхлэлийн хаяг байна
 Функцийн заагч дээр дараах үйлдлүүдийг
хийж болно
◦ Функц руу дамжуулах
◦ Хүснэгтэнд хадгалах
◦ Өөр функцийн заагчид олгох
5412/16/2015Vanderbilt university
 Жишээ: bubblesort
◦ bubble функц аргументаар функцийн заагч авна
 bubble тэр туслах функцийг дуудна
 энэ нь өсөх эсвэл буурахаар эрэмбэлэхийг тодорхойлно
◦ bubble функцийн аргумент болох функцийн заагч:
int ( *compare )( int a, int b );
нь bubble-д хоѐр бүхэл тоон аргументтай, бүхэл тоо
буцаадаг функц орж ирэхийг заана
◦ Хэрэв хаалтуудыг орхивол:
int *compare( int a, int b );
 хоѐр int аргументтай, int-ийн заагч буцаадаг функц гэж
тодорхойлогдоно
5512/16/2015Vanderbilt university
56
bubble функц
аргументаараа функцийн
заагч авч байна
12/16/2015Vanderbilt university
57
Хэрэглэгчийн сонголтоос
хамааран bubble функц ascending
эсвэл descending функцийг хүснэгт
эрэмбэлэхэд ашиглаж байна
12/16/2015Vanderbilt university
58
Програм юуг эрэмбэлэгдээгүй
байна гэж үзэх нь bubble руу ямар
функцийн заагч дамжуулагдсанаас
хамаарна
12/16/2015Vanderbilt university
59
bubble функц руу ascending
функцийг дамжуулахад
програмын энэ хэсэгт ирнэ
bubble функц руу descending
функцийг дамжуулахад програмын
энэ хэсэгт ирнэ
12/16/2015Vanderbilt university
6012/16/2015Vanderbilt university
 Заагч: өгөгдлийн төрөл * заагч хувьсагчийн
нэр (%p, арван зургаатын бүхэл тоо)
 Утгаар дуудах (өөрчлөхгүй) ба хаягаар
дуудах (өөрчилнө)
 const тодорхойлогч нь хувьсагчийг
өөрчлөхгүй байхыг заана (дөрвөн хувилбар)
 sizeof нь хэмжээг байтаар тодорхойлно
 Заагчийн хүснэгт
 Функцийн заагч: функцийн нэр нь хаяг
байдаг
6112/16/2015Vanderbilt university

Mais conteúdo relacionado

Mais procurados

u.cs101 "Алгоритм ба програмчлал" Лекц №2
u.cs101 "Алгоритм ба програмчлал" Лекц №2u.cs101 "Алгоритм ба програмчлал" Лекц №2
u.cs101 "Алгоритм ба програмчлал" Лекц №2Khuder Altangerel
 
алгоритмчлалын үндэс
алгоритмчлалын үндэсалгоритмчлалын үндэс
алгоритмчлалын үндэсGombo Tumuruu
 
Lab14 algorithm
Lab14 algorithmLab14 algorithm
Lab14 algorithmBPurev
 
u.cs101 "Алгоритм ба програмчлал" Лекц №3
u.cs101 "Алгоритм ба програмчлал" Лекц №3u.cs101 "Алгоритм ба програмчлал" Лекц №3
u.cs101 "Алгоритм ба програмчлал" Лекц №3Khuder Altangerel
 
U.cs101 алгоритм программчлал-10
U.cs101   алгоритм программчлал-10U.cs101   алгоритм программчлал-10
U.cs101 алгоритм программчлал-10Badral Khurelbaatar
 
Салаалсан алгоритмын бодлогууд
Салаалсан алгоритмын бодлогуудСалаалсан алгоритмын бодлогууд
Салаалсан алгоритмын бодлогуудБаярсайхан Л
 
U.cs101 алгоритм программчлал-12
U.cs101   алгоритм программчлал-12U.cs101   алгоритм программчлал-12
U.cs101 алгоритм программчлал-12Badral Khurelbaatar
 
u.cs101 "Алгоритм ба програмчлал" Лекц №5
u.cs101 "Алгоритм ба програмчлал" Лекц №5u.cs101 "Алгоритм ба програмчлал" Лекц №5
u.cs101 "Алгоритм ба програмчлал" Лекц №5Khuder Altangerel
 
си хэлний ойлголт
си хэлний ойлголтси хэлний ойлголт
си хэлний ойлголтbadral_0430
 
U.cs101 алгоритм программчлал-4-zasah
U.cs101   алгоритм программчлал-4-zasahU.cs101   алгоритм программчлал-4-zasah
U.cs101 алгоритм программчлал-4-zasahBadral Khurelbaatar
 
U.cs101 алгоритм программчлал-1(1)
U.cs101   алгоритм программчлал-1(1)U.cs101   алгоритм программчлал-1(1)
U.cs101 алгоритм программчлал-1(1)Badral Khurelbaatar
 
u.cs101 "Алгоритм ба програмчлал" Лекц №1
u.cs101 "Алгоритм ба програмчлал" Лекц №1u.cs101 "Алгоритм ба програмчлал" Лекц №1
u.cs101 "Алгоритм ба програмчлал" Лекц №1Khuder Altangerel
 

Mais procurados (20)

Лекц №11
Лекц №11Лекц №11
Лекц №11
 
u.cs101 "Алгоритм ба програмчлал" Лекц №2
u.cs101 "Алгоритм ба програмчлал" Лекц №2u.cs101 "Алгоритм ба програмчлал" Лекц №2
u.cs101 "Алгоритм ба програмчлал" Лекц №2
 
алгоритмчлалын үндэс
алгоритмчлалын үндэсалгоритмчлалын үндэс
алгоритмчлалын үндэс
 
CS203 Лекц01 Prefeace
CS203 Лекц01  PrefeaceCS203 Лекц01  Prefeace
CS203 Лекц01 Prefeace
 
Lab14 algorithm
Lab14 algorithmLab14 algorithm
Lab14 algorithm
 
Sw203 Lecture11 Casting
Sw203 Lecture11 CastingSw203 Lecture11 Casting
Sw203 Lecture11 Casting
 
u.cs101 "Алгоритм ба програмчлал" Лекц №3
u.cs101 "Алгоритм ба програмчлал" Лекц №3u.cs101 "Алгоритм ба програмчлал" Лекц №3
u.cs101 "Алгоритм ба програмчлал" Лекц №3
 
U.cs101 алгоритм программчлал-10
U.cs101   алгоритм программчлал-10U.cs101   алгоритм программчлал-10
U.cs101 алгоритм программчлал-10
 
Салаалсан алгоритмын бодлогууд
Салаалсан алгоритмын бодлогуудСалаалсан алгоритмын бодлогууд
Салаалсан алгоритмын бодлогууд
 
U.cs101 алгоритм программчлал-12
U.cs101   алгоритм программчлал-12U.cs101   алгоритм программчлал-12
U.cs101 алгоритм программчлал-12
 
u.cs101 "Алгоритм ба програмчлал" Лекц №5
u.cs101 "Алгоритм ба програмчлал" Лекц №5u.cs101 "Алгоритм ба програмчлал" Лекц №5
u.cs101 "Алгоритм ба програмчлал" Лекц №5
 
Лекц 6 - 7
Лекц 6 - 7Лекц 6 - 7
Лекц 6 - 7
 
си хэлний ойлголт
си хэлний ойлголтси хэлний ойлголт
си хэлний ойлголт
 
U.cs101 алгоритм программчлал-4-zasah
U.cs101   алгоритм программчлал-4-zasahU.cs101   алгоритм программчлал-4-zasah
U.cs101 алгоритм программчлал-4-zasah
 
U.cs101 алгоритм программчлал-1(1)
U.cs101   алгоритм программчлал-1(1)U.cs101   алгоритм программчлал-1(1)
U.cs101 алгоритм программчлал-1(1)
 
Ms access
Ms accessMs access
Ms access
 
5 algorithm
5 algorithm5 algorithm
5 algorithm
 
u.cs101 "Алгоритм ба програмчлал" Лекц №1
u.cs101 "Алгоритм ба програмчлал" Лекц №1u.cs101 "Алгоритм ба програмчлал" Лекц №1
u.cs101 "Алгоритм ба програмчлал" Лекц №1
 
Лекц №12
Лекц №12Лекц №12
Лекц №12
 
Sw203 Lecture10 Polymorphism
Sw203 Lecture10 PolymorphismSw203 Lecture10 Polymorphism
Sw203 Lecture10 Polymorphism
 

Destaque

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
 
Lecture4
Lecture4Lecture4
Lecture4orgil
 
Цалингийн бүртгэлийн систем
Цалингийн бүртгэлийн системЦалингийн бүртгэлийн систем
Цалингийн бүртгэлийн системAltangerel Bilguun
 
Dp Presentation
Dp PresentationDp Presentation
Dp Presentationkhnks
 
Жава хэлний сурах бичиг Java helnii surah bichig Mongol
Жава хэлний сурах бичиг Java helnii surah bichig MongolЖава хэлний сурах бичиг Java helnii surah bichig Mongol
Жава хэлний сурах бичиг Java helnii surah bichig MongolGantulga Dashdondov
 
бөөний төвийн бараа бүртгэлийн систем
бөөний төвийн бараа бүртгэлийн систембөөний төвийн бараа бүртгэлийн систем
бөөний төвийн бараа бүртгэлийн системtreeee1
 
Дэлгүүрийн кассын систем
Дэлгүүрийн кассын системДэлгүүрийн кассын систем
Дэлгүүрийн кассын системAltangerel Bilguun
 
мэдээллийн нууцлалт, хамгаалалт ба хандалт
мэдээллийн нууцлалт, хамгаалалт ба хандалтмэдээллийн нууцлалт, хамгаалалт ба хандалт
мэдээллийн нууцлалт, хамгаалалт ба хандалтTsetsenkhuu Otgonbayar
 
Java лекц8
Java лекц8Java лекц8
Java лекц8Enkhee99
 

Destaque (20)

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 "Молекул" бодлогын бодолт
 
Java lecture4
Java lecture4Java lecture4
Java lecture4
 
Lecture4
Lecture4Lecture4
Lecture4
 
Лекц 11: (Рекурс, Ханойн цамхаг)
Лекц 11: (Рекурс, Ханойн цамхаг)Лекц 11: (Рекурс, Ханойн цамхаг)
Лекц 11: (Рекурс, Ханойн цамхаг)
 
Лекц 1 (Алгоритм Програмчлал - 1)
Лекц 1 (Алгоритм Програмчлал - 1)Лекц 1 (Алгоритм Програмчлал - 1)
Лекц 1 (Алгоритм Програмчлал - 1)
 
лекц №6
лекц №6лекц №6
лекц №6
 
Java lecture4
Java lecture4Java lecture4
Java lecture4
 
Java lecture5
Java lecture5Java lecture5
Java lecture5
 
Цалингийн бүртгэлийн систем
Цалингийн бүртгэлийн системЦалингийн бүртгэлийн систем
Цалингийн бүртгэлийн систем
 
Dp Presentation
Dp PresentationDp Presentation
Dp Presentation
 
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
 
бөөний төвийн бараа бүртгэлийн систем
бөөний төвийн бараа бүртгэлийн систембөөний төвийн бараа бүртгэлийн систем
бөөний төвийн бараа бүртгэлийн систем
 
C++
C++C++
C++
 
Datastructure algoritm
Datastructure algoritmDatastructure algoritm
Datastructure algoritm
 
Дэлгүүрийн кассын систем
Дэлгүүрийн кассын системДэлгүүрийн кассын систем
Дэлгүүрийн кассын систем
 
мэдээллийн нууцлалт, хамгаалалт ба хандалт
мэдээллийн нууцлалт, хамгаалалт ба хандалтмэдээллийн нууцлалт, хамгаалалт ба хандалт
мэдээллийн нууцлалт, хамгаалалт ба хандалт
 
Java лекц8
Java лекц8Java лекц8
Java лекц8
 

Mais de Khuder Altangerel (18)

Марковын далд загвар
Марковын далд загварМарковын далд загвар
Марковын далд загвар
 
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)
 
Lec01 intro (1) (2)
Lec01 intro (1) (2)Lec01 intro (1) (2)
Lec01 intro (1) (2)
 
МХТ-ийн мэргэжилд шаардагдах гадаад хэлний чадвар
МХТ-ийн мэргэжилд шаардагдах гадаад хэлний чадварМХТ-ийн мэргэжилд шаардагдах гадаад хэлний чадвар
МХТ-ийн мэргэжилд шаардагдах гадаад хэлний чадвар
 

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

  • 1. Лекц № 6 Си-гийн заагч А. Хүдэр
  • 2.  Заагч хувьсагчийг зарлах ба анхны утга олгох  Заагч дээрх үйлдлүүд  Аргументыг функц руу хаягаар дамжуулах  const тодорхойлогчийг заагч дээр ашиглах  Хаягаар дуудах арга хэрэглэсэн бөмбөлгөн эрэмбэлэлт  sizeof оператор  Заагчтай илэрхийлэл ба заагчийн арифметик  Заагч ба хүснэгт  Заагч төрлийн хүснэгт  Функцийн заагч 212/16/2015Vanderbilt university
  • 3.  Утга нь санах ойн хаяг байна  Энгийн хувьсагчид ямар нэг утга хадгалдаг (шууд хаяглалт)  Заагч нь ямар нэг утга агуулж байгаа хувьсагчийн хаягийг агуулна (шууд бус хаяглалт) 312/16/2015Vanderbilt university
  • 4.  Заагч хувьсагчид * - ыг хэрэглэнэ int *myPtr;  int төрлийн заагчийг тодорхойлно (int * төрлийн заагч)  Олон заагч зарлах бол хувьсагч бүрийн өмнө * -ыг бичнэ int *myPtr1, *myPtr2;  Ямар ч төрлийн заагч зарлаж болно  Заагчийн анхны утгаар 0, NULL эсвэл ямар нэг хаяг өгөх ◦ 0 эсвэл NULL – юуг ч заахгүй ◦ 0 нь заагчид олгож болох цорын ганц бүхэл утга юм ◦ Заагчид анхны утгыг нь 0 гэж олгох нь NULL -ыг олгохтой ижил боловч NULL –ыг ихэвчлэн хэрэглэнэ ◦ NULL -ыг <stddef.h>, <stdio.h> гэх мэт хэд хэдэн толгой файлд тодорхойлсон байдаг 412/16/2015Vanderbilt university
  • 5.  Заагч хувьсагчийг зарлах ба анхны утга олгох  Заагч дээрх үйлдлүүд  Аргументыг функц руу хаягаар дамжуулах  const тодорхойлогчийг заагч дээр ашиглах  Хаягаар дуудах арга хэрэглэсэн бөмбөлгөн эрэмбэлэлт  sizeof оператор  Заагчтай илэрхийлэл ба заагчийн арифметик  Заагч ба хүснэгт  Заагч төрлийн хүснэгт  Функцийн заагч 512/16/2015Vanderbilt university
  • 6.  & (хаяг авах үйлдэл) ◦ Операндынхаа хаягийг буцаана int y = 5; int *yPtr; yPtr = &y; /* yPtr заагч y – гийн хаягийг авна */  /* yPtr заагч y-г заана*/ 612/16/2015Vanderbilt university
  • 7.  * (шууд бус хаяглалт/хаяглах үйлдэл) ◦ Операндынхаа зааж байгаа зүйлийн өөр нэр/зохиомол нэрийг буцаана ◦ *yptr нь y-ийг буцаана (yptr нь y-г зааж байгаа учир) ◦ *-ыг утга олгоход хэрэглэж болно  Объектийн өөр нэрийг буцаана  *yptr = 7; /* changes y to 7 */  Хаяглалтанд хэрэглэж байгаа заагч нь (*-ын операнд) lvalue байх ѐстой (тогтмол байж болохгүй).  * ба & нь эсрэг үйлдлүүд юм  Бие биенийгээ устгана 712/16/2015Vanderbilt university
  • 8. Хэрэв aPtr нь a-г зааж байгаа бол &a болон aPtr нь ижил утга юм a болон *aPtr нь ижил &*aPtr болон *&aPtr нь ижил утгатай 812/16/2015Vanderbilt university
  • 11.  Заагч хувьсагчийг зарлах ба анхны утга олгох  Заагч дээрх үйлдлүүд  Аргументыг функц руу хаягаар дамжуулах  const тодорхойлогчийг заагч дээр ашиглах  Хаягаар дуудах арга хэрэглэсэн бөмбөлгөн эрэмбэлэлт  sizeof оператор  Заагчтай илэрхийлэл ба заагчийн арифметик  Заагч ба хүснэгт  Заагч төрлийн хүснэгт  Функцийн заагч 1112/16/2015Vanderbilt university
  • 12.  Заагч аргумент ашиглан хаягаар дуудах ◦ Аргументийн хаягийг & оператор ашиглан дамжуулна ◦ Санах ой дахь бодит байрлал дээр өөрчлөлт хийх боломж олгоно ◦ Хүснэгтийг дамжуулахад & үйлдлийг ашиглахгүй, учир нь хүснэгтийн нэр өөрөө заагч байдаг  * оператор ◦ Функцийн дотор хувьсагчийн өөр нэр ашиглахад хэрэглэгдэнэ void timestwo( int *number ) { *number = 2 * ( *number ); } ◦ *number нь дамжуулагдсан хувьсагчийн өөр нэр байдлаар ашиглагдана 1212/16/2015Vanderbilt university
  • 14. 14 Заагч аргумент авах функцийн загвар cubeByReference функц руу заагч хувьсагчийн утга байж болох хаяг дамжуулсан Энэ програмд *nPtr нь number – тэй адил тул энэ үйлдэл нь number хувьсагчийн утгыг өөрчилнө 12/16/2015Vanderbilt university
  • 17.  Заагч хувьсагчийг зарлах ба анхны утга олгох  Заагч дээрх үйлдлүүд  Аргументыг функц руу хаягаар дамжуулах  const тодорхойлогчийг заагч дээр ашиглах  Хаягаар дуудах арга хэрэглэсэн бөмбөлгөн эрэмбэлэлт  sizeof оператор  Заагчтай илэрхийлэл ба заагчийн арифметик  Заагч ба хүснэгт  Заагч төрлийн хүснэгт  Функцийн заагч 1712/16/2015Vanderbilt university
  • 18.  const тодорхойлогч ◦ Хувьсагчийн утга өөрчлөгдөхгүй ◦ Хэрэв функц ямар нэг хувьсагчаа өөрчлөх хэрэггүй бол const тодорхойлогчийг хэрэглэнэ ◦ const хувьсагчийг өөрчлөх гэж оролдвол алдаа гарна  const заагчид ◦ Санах ойн тогтмол байрлал руу заана ◦ Тодорхойлох үедээ анхны утгыг нь олгох ѐстой ◦ const int *myPtr = &x;  const int төрлийн энгийн заагч ◦ int *const myPtr = &x;  int *const төрөл нь int төрлийн тогтмол заагч юм  x нь өөрчлөгдөж болох боловч myPtr өөрчлөгдөхгүй ◦ const int *const Ptr = &x;  const int төрлийн const заагч 1812/16/2015Vanderbilt university
  • 19. 19 sPtr болон *sPtr хоѐулаа тогтмол биш 12/16/2015Vanderbilt university
  • 20. 20 sPtr болон *sPtr-ын утгыг converttoUppercase функц өөрчилнө 12/16/2015Vanderbilt university
  • 21. 21 sPtr заагчийг өөрчилж болохгүй боловч зааж байгаа өгөгдөл *sPtr-ийг өөрчилж болно 12/16/2015Vanderbilt university
  • 22. 22 sPtr-ийг printCharacters функц өөрчилж байна 12/16/2015Vanderbilt university
  • 23. 23 xPtr заагч өөрчлөгдөнө харин зааж байгаа өгөгдөл *xPtr нь өөрчлөгдөхгүй Хөрвүүлэлтийн алдаа! *xPtr нь const тодорхойлогчтой байхад утгыг нь өөрчлөх гэвэл алдаа гарна 12/16/2015Vanderbilt university
  • 24. 24 ptr заагч өөрчлөгдөхгүй боловч зааж байгаа *ptr өгөгдөл тогтмол биш Хөрвүүлэлтийн алдаа! 12/16/2015Vanderbilt university
  • 25. 25 Заагч sPtr болон өгөгдөл *sPtr хоѐулаа тогтмол Хөрвүүлэлтийн алдаа! 12/16/2015Vanderbilt university
  • 26.  Заагч хувьсагчийг зарлах ба анхны утга олгох  Заагч дээрх үйлдлүүд  Аргументыг функц руу хаягаар дамжуулах  const тодорхойлогчийг заагч дээр ашиглах  Хаягаар дуудах арга хэрэглэсэн бөмбөлгөн эрэмбэлэлт  sizeof оператор  Заагчтай илэрхийлэл ба заагчийн арифметик  Заагч ба хүснэгт  Заагч төрлийн хүснэгт  Функцийн заагч 2612/16/2015Vanderbilt university
  • 27.  Заагч ашиглан бөмбөлгөн эрэмбэлэлтийг хэрэгжүүлэх ◦ Хоѐр элементийн байрыг солих ◦ swap функц хүснэгтийн элементүүдийн хаягийг хүлээж авна (& - г хэрэглэн) ◦ Заагч болон * операторыг хэрэглэн swap функц хүснэгтийн элементүүдийг солино  Псевдокод Хүснэгтэд анхны утга олгох өгөгдлийг анхны хэлбэрээр нь хэвлэх bubblesort функцийг дуудах эрэмбэлэгдсэн хүснэгтийг хэвлэх bubblesort функцийг тодорхойлох 2712/16/2015Vanderbilt university
  • 30. 30 swap функц нь хоѐр заагчийн зааж буй int төрлийн утгуудын байрыг солино 12/16/2015Vanderbilt university
  • 31.  Заагч хувьсагчийг зарлах ба анхны утга олгох  Заагч дээрх үйлдлүүд  Аргументыг функц руу хаягаар дамжуулах  const тодорхойлогчийг заагч дээр ашиглах  Хаягаар дуудах арга хэрэглэсэн бөмбөлгөн эрэмбэлэлт  sizeof оператор  Заагчтай илэрхийлэл ба заагчийн арифметик  Заагч ба хүснэгт  Заагч төрлийн хүснэгт  Функцийн заагч 3112/16/2015Vanderbilt university
  • 32.  sizeof ◦ Операндын хэмжээг байтаар буцаана ◦ Хүснэгтийн хувьд: нэг элементийн хэмжээ х элементийн тоо ◦ Хэрэв sizeof(int) нь 4 байт бол int myArray[ 10 ]; printf( "%d", sizeof( myArray ) );  40 гэж хэвлэнэ  sizeof-ыг доорх зүйлд ашиглаж болно ◦ Хувьсагчийн нэр ◦ Төрлийн нэр ◦ Тогтмолын нэр 3212/16/2015Vanderbilt university
  • 33. 33 float нь санах ойд 4 байт эзэлдэг бол 20 ширхэг float нь 80 байт болно 12/16/2015Vanderbilt university
  • 36.  Заагч хувьсагчийг зарлах ба анхны утга олгох  Заагч дээрх үйлдлүүд  Аргументыг функц руу хаягаар дамжуулах  const тодорхойлогчийг заагч дээр ашиглах  Хаягаар дуудах арга хэрэглэсэн бөмбөлгөн эрэмбэлэлт  sizeof оператор  Заагчтай илэрхийлэл ба заагчийн арифметик  Заагч ба хүснэгт  Заагч төрлийн хүснэгт  Функцийн заагч 3612/16/2015Vanderbilt university
  • 37.  Заагч дээр арифметик үйлдэл хийж болно ◦ Заагчийг нэмэгдүүлэх/хорогдуулах (++ эсвэл --) ◦ Заагч дээр бүхэл тоо нэмэх (+ эсвэл +=, - эсвэл -=) ◦ Заагчуудыг бие биенээс нь хасч болно ◦ Эдгээр үйлдлүүдийг хүснэгт дээр хийх үед л утгатай байна 3712/16/2015Vanderbilt university
  • 38.  Бүхэл тоон төрөл нь 4 байт байдаг машин дээрх 5 элементтэй хүснэгт ◦ vPtr эхний элемент v[0] рүү заана  3000 гэсэн байрлал руу (vPtr=3000) ◦ vPtr+=2; vPtr-ийг 3008 утгатай болгоно  vPtr нь v[2] руу заах (2-оор нэмэгдсэний дараа) ба, машин 4 байтын int төрөлтэй тул зааж буй хаяг нь 3008 болно. 38v хүснэгт ба түүн рүү заах vPtr заагч 12/16/2015Vanderbilt university
  • 40.  Заагчийг хасах ◦ Нэг заагчаас нөгөөг хүртлэх элементийн тоог буцаана. Хэрэв vPtr2 = v[2]; vPtr0 = v[0]; ◦ vPtr2 – vPtr0 нь 2 болно  Заагчийг харьцуулах ◦ Аль заагч нь илүү их дугаартай хүснэгтийн элемент зааж байгааг олох ◦ Заагчийн утга 0-тэй тэнцүү эсэхийг шалгах 4012/16/2015Vanderbilt university
  • 41.  Ижил төрлийн заагчдын хооронд утга олгох үйлдэл хэрэглэж болно ◦ Хэрэв төрөл нь ялгаатай бол төрөл хувиргах үйлдэл хэрэглэнэ ◦ Онцгой тохиолдол: void төрлийн заагч (void * төрөл)  Ерөнхий заагч, ямар ч төрлийг зааж чадна  void заагч руу шилжүүлэхэд төрөл хувиргалт хэрэггүй  void төрлийн заагч дээр шууд бус хаяглалтыг хийж болохгүй 4112/16/2015Vanderbilt university
  • 42.  Заагч хувьсагчийг зарлах ба анхны утга олгох  Заагч дээрх үйлдлүүд  Аргументыг функц руу хаягаар дамжуулах  const тодорхойлогчийг заагч дээр ашиглах  Хаягаар дуудах арга хэрэглэсэн бөмбөлгөн эрэмбэлэлт  sizeof оператор  Заагчтай илэрхийлэл ба заагчийн арифметик  Заагч ба хүснэгт  Заагч төрлийн хүснэгт  Функцийн заагч 4212/16/2015Vanderbilt university
  • 43.  Заагч ба хүснэгт нь нягт холбоотой ◦ Хүснэгтийн нэр нь тогтмол заагч юм ◦ Заагчаар хүснэгтийн индексийн үйлдлийг хийж болно  b[5] хүснэгт ба bPtr заагч зарлая ◦ Тэдгээрийг ижил болгохын тулд дараах үйлдлийг хийнэ bPtr = b;  Хүснэгтийн нэр (b) нь b[5] хүснэгтийн эхний элементийн хаяг юм bPtr = &b[0];  bPtr заагчид b хүснэгтийн эхний элементийн хаягийг олгоно 4312/16/2015Vanderbilt university
  • 44.  b[3] элемент ◦ *(bPtr+3) гэж хандаж болно  Шилжилтийн утга n-ийн хувьд заагч/шилжилтийн тэмдэглэгээ гэж нэрлэгддэг ◦ bPtr[3] гэж хандаж болно  Заагч/индексийн тэмдэглэгээ гэж нэрлэгддэг  bPtr[3] нь b[3] –тай адил ◦ Хүснэгт дээрээ заагчийн арифметикийг хэрэглэн *(b+3) гэж хандаж болно 4412/16/2015Vanderbilt university
  • 46. 46 Заагчийн индекс тэмдэглэгээ Заагчийн шилжилттэй тэмдэглэгээ 12/16/2015Vanderbilt university
  • 49. 49 for давталтын нөхцөл дотор үйлдэл гүйцэтгэж байна 12/16/2015Vanderbilt university
  • 50.  Заагч хувьсагчийг зарлах ба анхны утга олгох  Заагч дээрх үйлдлүүд  Аргументыг функц руу хаягаар дамжуулах  const тодорхойлогчийг заагч дээр ашиглах  Хаягаар дуудах арга хэрэглэсэн бөмбөлгөн эрэмбэлэлт  sizeof оператор  Заагчтай илэрхийлэл ба заагчийн арифметик  Заагч ба хүснэгт  Заагч төрлийн хүснэгт  Функцийн заагч 5012/16/2015Vanderbilt university
  • 51.  Хүснэгт нь заагчуудыг агуулж болно  Жишээ: Тэмдэгт мөр төрлийн хүснэгт ◦ char *suit[ 4 ] = { "Hearts", "Diamonds”, "Clubs", "Spades" }; ◦ Тэмдэгт мөр нь эхний үсгийнхээ заагч юм ◦ char * - suit-ийн элемент бүр нь char төрлийн заагч юм ◦ Тэмдэгт мөрүүд нь suit хүснэгтэд хадгалагдахгүй ба тэнд тэдний зөвхөн заагчдыг хадгална ◦ suit хүснэгт нь тогтмол хэмжээтэй ба харин тэмдэгт мөрүүд нь ямар ч хэмжээтэй байж болно 5112/16/2015Vanderbilt university
  • 53.  Заагч хувьсагчийг зарлах ба анхны утга олгох  Заагч дээрх үйлдлүүд  Аргументыг функц руу хаягаар дамжуулах  const тодорхойлогчийг заагч дээр ашиглах  Хаягаар дуудах арга хэрэглэсэн бөмбөлгөн эрэмбэлэлт  sizeof оператор  Заагчтай илэрхийлэл ба заагчийн арифметик  Заагч ба хүснэгт  Заагч төрлийн хүснэгт  Функцийн заагч 5312/16/2015Vanderbilt university
  • 54.  Функцийн заагч ◦ Функцийн хаягийг заана ◦ Хүснэгтийн нэр эхний элементийнхээ хаяг байдагтай адил ◦ Функцийн нэр нь функцийг тодорхойлсон кодын эхлэлийн хаяг байна  Функцийн заагч дээр дараах үйлдлүүдийг хийж болно ◦ Функц руу дамжуулах ◦ Хүснэгтэнд хадгалах ◦ Өөр функцийн заагчид олгох 5412/16/2015Vanderbilt university
  • 55.  Жишээ: bubblesort ◦ bubble функц аргументаар функцийн заагч авна  bubble тэр туслах функцийг дуудна  энэ нь өсөх эсвэл буурахаар эрэмбэлэхийг тодорхойлно ◦ bubble функцийн аргумент болох функцийн заагч: int ( *compare )( int a, int b ); нь bubble-д хоѐр бүхэл тоон аргументтай, бүхэл тоо буцаадаг функц орж ирэхийг заана ◦ Хэрэв хаалтуудыг орхивол: int *compare( int a, int b );  хоѐр int аргументтай, int-ийн заагч буцаадаг функц гэж тодорхойлогдоно 5512/16/2015Vanderbilt university
  • 56. 56 bubble функц аргументаараа функцийн заагч авч байна 12/16/2015Vanderbilt university
  • 57. 57 Хэрэглэгчийн сонголтоос хамааран bubble функц ascending эсвэл descending функцийг хүснэгт эрэмбэлэхэд ашиглаж байна 12/16/2015Vanderbilt university
  • 58. 58 Програм юуг эрэмбэлэгдээгүй байна гэж үзэх нь bubble руу ямар функцийн заагч дамжуулагдсанаас хамаарна 12/16/2015Vanderbilt university
  • 59. 59 bubble функц руу ascending функцийг дамжуулахад програмын энэ хэсэгт ирнэ bubble функц руу descending функцийг дамжуулахад програмын энэ хэсэгт ирнэ 12/16/2015Vanderbilt university
  • 61.  Заагч: өгөгдлийн төрөл * заагч хувьсагчийн нэр (%p, арван зургаатын бүхэл тоо)  Утгаар дуудах (өөрчлөхгүй) ба хаягаар дуудах (өөрчилнө)  const тодорхойлогч нь хувьсагчийг өөрчлөхгүй байхыг заана (дөрвөн хувилбар)  sizeof нь хэмжээг байтаар тодорхойлно  Заагчийн хүснэгт  Функцийн заагч: функцийн нэр нь хаяг байдаг 6112/16/2015Vanderbilt university