Лекц 1 Сэдэв: Си хэлний бүтэц, түүний элементүүд Дэд сэдвүүд : Си хэлний тухай Си хэлний бүтэц Си хэлний элементүүд Си хэлний тухай Си хэлийг анх Unix үйлдлийн системтэй компьютер дээр ажилладаг байхаар Dennis Ritchie гэгч зохиожээ. Си хэл нь олон жилийн турш зөвхөн Unix SystemV үйлдлийн систем дээр ажилладаг байсан. Микрокомпьютерийн хөгжил нь олон хувилбар бүхий Си зохиогдох боломж олгосон бөгөөд эдгээр нь хэдийгээр бусадтайгаа нийцтэй байсан ч гэсэн нэгэн стандарт болоогүй, мөн хоорондоо зөрчилдөх тохиолдол гарч байсан тул 1983 оны зун ANSI-ийн хороо байгуулагдаж Си хэлний ANSI стандартыг бий болгосон. 1990 онд ANSI стандартыг хөгжүүлсний дүнд Turbo C бий болсон. Turbo C нь хурдан ажилладаг сайн компилятортой, уламжлалт болон нэгтгэсэн програмын орчинд ажиллах боломжтой, олон програм зохиогчдын шаардлага хүсэлд нийцсэн хэл болсон юм. Turbo C-ийн дараа Borland C гарсан бөгөөд Turbo C-ийн мэргэжлийн болгосон хувилбар юм. Си хэлний тархалт нь обьект хандалтат програмчлал гэсэн шинэ програмчлалын арга бий болгоход хүргэсэн. Үүний үр дүнд С++ хэл үүссэн юм. Си хэлний бүтэц Си програмыг функцуудын цуглуулга гэж ойлгож болно. Програмыг ажиллуулахад систем main( ) функцыг эхэлж дууддаг. Энэ нь Си програм бүрт байдаг хамгийн гол үндсэн функц юм. Тайлбар Тайлбар нь дараалсан тэмдэгтүүд. Бичигдэх хэлбэр : /* < Тэмдэгтүүд > */ <Тэмдэгтүүд > - Дараалсан тэмдэгтүүд байна. Си хэлний компилятор нь тайлбарыг тусгай хоосон зайн тэмдэгт гэж ойлгодог. Си-ийн тайлбарыг /*...*/ -хаалтанд бичдэг. Иймээс тайлбарыг хаана ч хэрэглэж болно. Жишээ нь : /* Би оюутан */ Тайлбар дотор тайлбарыг бичиж болохгүй. Тайлбар нь ихэвчлэн програмын тайлбар байдаг учраас програмын биелэлтэнд ямар ч нөлөө үзүүлдэггүй. /* This is comment */ Си хэлний өргөтгөл нь өргөтгөл *.с С++ дээр бичсэн өргөтгөл *.cpp Ямар ч программчлалын хэлэнд уламжлал болон тогтсон хамгийн эхний програмыг бичье. Програмын тайлбар /* File hello.c */ Энэ мөр нь програмын тайлбар
/* Say hello to user */ Энэ мөр нь мөн програмын тайлбар #include<stdio.h> int main ( void ) printf( Hello, world \n ); return0; stdio.h толгой файлд зарлагдсан функцыг #include директивээр програмдаа оруулж ашиглана. Програмын эхлэл гол функц Дэлгэцэнд хэвлэх Төгсгөл include директив нь програмд тухайн файлыг оруулна гэдгийг заана. Функц бүр нь дуудагдан ажиллахын өмнө зарлагдсан байх ба урьдчилан тодорхойлогдсон байх ёстой байдаг. Си хэлэнд функц нь header file /толгой файл/-д зарлагдсан байна. Жишээ нь: math.h гэсэн толгой файл нь математикийн функцуудыг агуулдаг. Толгой файл нь стандарт оролт гаралтын функцуудыг агуулдаг. Өөрөөр хэлбэл, дэлгэц дээр hello, world гэж хэвлэн гаргах функц нь stdio.h толгой файлд зарлагдсан тул дээрх жишээ програмд Hello, world гэж хэвлэж гаргах printf() нь stdio.h толгой файлд байдаг тул #include<stdio.h> зайлшгүй бичигдэнэ. Си хэлэнд функц нь дараах хэлбэртэй бичигдэнэ. Толгой хэсэг Толгой хэсэг нь int main ( void ) Зарлах хэсэг / хэрвээ байвал / үйлдэл буюу операторууд ; main - Си програмын үндсэн функц void - хоосон буюу параметргүй int - main функц бүхэл тоон утга буцаана гэдгийг зааж байна. -32768...32767 хүртэл int төрөл байна. Функцын эх бие нь printf ( Hello, world!\n ); return 0; printf ( Hello, world!\n ) нь дэлгэц дээр Hello, world! гэж хэвлэж гаргана. \ n нь курсорыг дараачийн мөрийн эхэнд шилжүүлнэ. Үйлдэл, оператор бүхэн цэгтэй таслалаар ; - аар төгсөнө. return0 - main () функц системд 0 гэсэн утга буцаана. 0 - програм амжилттай ажиллалаа гэдгийг заана. Дээрх main() функцыг товчоор бичиж болно. main ()
printf( Hello, world!\n ); printf() printf( abc ); printf( abc\n def \n ghi ); printf( def ); printf( ghi ); Үр дүн: abcdefghi Үр дүн: abc def ghi /* file greet.c */ #include<stdio.h> void say_hello (void); void say_goodbye(void); int main(void) say_hello( ); say_goodbye( ); void say_hello (void) printf( Best wishes to all\n ); printf( Hello, everybody!\n ) /* Take leave */ void say_goodbye(void) printf( I ve got to go now. \n ); printf( So long, and have a nice day! \n ) Си хэлний элементүүд Илэрхийлэл бодохын тулд хувьсагч болон тогтмол хэмжигдэхүүнүүдийг операторуудаар холбон бичиж үйлдлийг гүйцэтгэдэг. Эдгээр нь бүгдээрээ Си хэлний элементүүд болно. Үүнд: Үсэг Тогтмолууд Нэр (идентификатор) Түлхүүр үг Тайлбар
Үсэг Си хэл нь олон тооны үсэг, цифр, цэгэн тэмдэгтүүдээс тогтох бөгөөд эдгээр нь компиляторт тодорхойлогдсон байна. Си хэлний тэмдэгтүүдэд том, жижиг латин цагаан толгой ба араб цифрүүд байдаг. Үсгүүд ба цифрүүд нь тогтмол, идентификатор, түлхүүр үгүүдийг бичихэд ашиглагддаг. Тогтмолууд Си хэлний тогтмолууд нь програмд оруулж ашиглаж болох тогтоосон утгатай. Үндсэн 4 төрлийн тогтмол байдаг. 1. Бүхэл тоон тогтмол 2. Бодит тоон тогтмол 3. Тэмдэгтэн тогтмол 4. Тэмдэгтэн мөр тогтмол 1. Бүхэл тоон тогтмол. Бүхэл тоонууд нь бутархай хэсэггүй бөгөөд 8-т, 10-т, -тын тооллын системүүдээр илэрхийлэгдэнэ. Бүхэл тоон тогтмолууд нь өөрийн тодорхой төрөлтэй. Тогтмолын хэмжээнээс хамаарч - int - unsigned int - unsigned long зэрэг төрлүүдтэй байж болно. Бүхэл тоон тогтмолын бичигдэх ерөнхий хэлбэр: 10-тын цифр 8-тын цифр -тын цифр 0 <цифр> 0х <цифр> 0..9 ( цифр нь 0..7 ) ( цифр нь 0..9, А..F, а..f ) Бүхэл тоон төрлүүд : Төрөл Хэмжээ Хязгаар Unsigned char Char Unsigned int Int Unsigned short short unsigned long long 8 8 32 32 0......255-128...127 0...65535-32768...32767 0...65535-32768...32767 0...394967295-2147483648...2147483647 2. Бодит тоон тогтмол
Бодит тоон тогтмол нь float түлхүүр үгийн тусламжтай тодорхойлогддог. Бодит тоон тогтмолын хэмжээнээс хамаарч төрөл нь double, float байна. Бодит тоон төрөл : Төрөл Хэмжээ Хязгаар Float Double Long double 32 64 80 3.4E-38...3.4E+38 1.7E-308...1.7E+308 3.4E-4932...1.1E+4932 3. Тэмдэгтэн тогтмол Тэмдэгтэн тогтмол нь үсэг, цифр, цэгэн тэмдэгт, тусгай үсгүүдийг хэрэглэнэ. Си хэлний компилятор нь тэмдэгтэн төрлийг char, тэмдэгтэн биш төрлийг unsigned char гэж авдаг. Бичигдэх хэлбэр : < value > Value : тэмдэгт, үсэг, тусгай үсгүүд, цифр байна. 4. Тэмдэгтэн мөр тогтмол Тэмдэгтэн мөр тогтмол нь хашилтан дотор дараалсан үсэг, дурын тусгай тэмдэгтүүд, цифр, хоосон зай зэргийг агуулсан мөр тэмдэгт байна. Бичигдэх хэлбэр: <value> value дараалсан үсэг, тэмдэгтүүд, цифр, хоосон зай байна. Тэмдэгтэн мөрийн утга нь санах ойд тодорхой байтад хадгалагдана. Тэмдэгтэн мөрийн төгсгөлд автоматаар \0 тавина. Нэр ( Идентификатор ) Идентификатор нэр гэдэг нь хэрэглэгч буюу програм зохиогч өөрөө ямар нэг обьектод / хувьсагч, тогтмол хэмжигдэхүүн, функц програм г.м / өгсөн нэр юм. Turbo C хэлний идентификатор нь 1-32 хүртэл тэмдэгтээс тогтох бөгөөд зөвхөн үсгээр эхлэх ба үсэг цифр холилдон орж болно. Мөн ялгах тэмдэгтүүдээс зөвхөн доогуур зураас орж болно./харин нэрэнд хоосон зай орж болохгүйг анхаарна уу/. Зөв Буруу count 1 count test23 hi!there high_balance high..balance Си хэлэнд том, жижиг үсгээр бичих нь ялгаатай. Жишээ нь, count,count,count эдгээр нь ялгаатай гурван өөр идентификатор нэр юм. Эдгээр идентификатор нэр нь Turbo C-ийн нөөц үгтэй адил байж болохгүй. Иймд жижиг үсгийг хувьсагчийн нэр, том үсгийг тогтмолуудыг нэрлэхэд ашигладаг. Turbo C- ийн нөөц үгс: auto, break, case, char, coist, continue, default, do, near, pascal, struct, union,volatile, huge, long, short, double, enum, float, goto, while... г.м. Түлхүүр үг
Энэ нь урьдаас тогтоосон нэртэй байх ба Си хэлний компиляторт утгатай. Хатуу дүрэм тогтоон ашиглагддаг. Түлхүүр үгийг хувьсагчийн нэр шиг ашиглаж болохгүй. Ихэнх компиляторууд нь түлхүүр үгийг том ба жижгээр бичигдсэнээс үл хамааран хүлээн авдаг. Зарим түлхүүр үгс: Auto double goto static void Break else int sizeof while Case extern long struct Char enum return switch Continue float register union Do for short typedef Default if signed unsigned Зайлшгүй хэрэгтэй өөр нэрийн түлхүүр үгийг процессорын директивийн тусламжтайгаар тодорхойлдог. Жишээ нь, # define BOOL int Тусгай түлхүүр үгнүүд : MSC TC cdecl far const volatile fortrain interrupt huge near pascal asm _cs _ss cdecl _ds _es far _BX _CL huge _CH _CX intrrupt _AH _DH near _AL _DL pascal _AX _DI const _BH _DX volatile _BL _SI