SlideShare une entreprise Scribd logo
1  sur  27
www.emust.edu.mn
Сэдэв: С програмын
үндсэн элемент
www.emust.edu.mn
Cи Хэл (C Language)
• Программыг ажиллуулах үйл явц
1. Си хэлрүү эх файл бичих
• Бичсэн програм нь С файл руу хадгалагдана
2. Compilation
• Эх код нь объект файл(хоёртын код)руу хувирна
• Эх файл олон янзын хувийн тохиолдолд, эх файлын тоо шиг
объект файл бий болно
3. Linker нь объект файлыг ажиллагаатай файл руу
хувиргана
• Бүх object file(Объект Фаил) болон, програмд хэрэгтэй С хэл
library-г нийлүүлэн нэгэн ажиллагаат файл руу бүтээнэ
4. Гүйцээлтийн файлыг(Executable file) ажиллуулна Гүйцээлтийн файл(.exe)
хөрвүүлэгч
Linker C Library
011010011100
100000001100
000110011100
……
Объект Фаил(.o)
#include <stdio.h>
int main(){
…
}
Эх файл (.c)
www.emust.edu.mn
Эхний програмчлал 1
2
3
4
5
6
7
8
9
#include <stdio.h>
#include <stdlib.h>
int main(void){
printf(“Hello Mongolia!n”);
return 0;
}
• hello.c
• Угтах бичгийг гаргаж өгөх програм
• Доорх кодыг бичнэ
• Программыг compile (ctrl+F9) дарсны дараа ажиллагааг
өгнө (ctrl+F10) [Dev C++ 4.9.9.2 жишигээр]
※ F9 товчлуурыг хэрэглэвэл эмхэтгэх ажиллагааг
нэг удаа хийж болно
www.emust.edu.mn
hello.c-ын бүтэц
• Препроцессор (Line 1~2)
• Эх кодын дээд хэсэгт бичсэн болон, програмд хэрэгтэй толгой
файл, макро функц зэргийг зааж өгнө
• #(hash) тэмдгээр эхэлнэ
• Функц (Line 4~9)
• Програмын функц зааж өгөгдсөн бөгөөд, дээрээс доошоо
чиглэлээр код ажиллана
• функц нь олон төрлийнх байлгаж болно
• {……} (Line 5, 9)
• main функцийн хамрах хүрээг зааж өгнө
• printf() функц (Line 6)
• Си хэл нь гаралт
• Хаалтан() дотор оруулсан өгүүлбэрийг дэлэгцэд гаргана.
1
2
3
4
5
6
7
8
9
#include <stdio.h>
#include <stdlib.h>
int main(void){
printf(“Hello Mongolia!n”);
return 0;
}
www.emust.edu.mn
Си програмын үндсэн бүтэц
• add.c
• Өгөгдсөн хоёр тооны
нийлбэр
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
#include <stdlib.h>
int main(){
int a = 1, b=2, sum ;
sum = a + b;
printf("a + b = %dn", sum);
return 0;
}
www.emust.edu.mn
Си програмын үндсэн бүтэц
• С програмын бүтэц, зохион
байгуулалтыг 2-аар хувааж болно
• Препроцессор
• Функц
1
2
3
4
5
6
7
8
9
10
11
/*add.c*/
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a = 1, b=2, sum;
sum = a + b;
printf("a + b = %dn", sum);
return 0;
}
Жишээ add.c
Өгөгдсөн хоёр тооны нийлбэр
• Функц
• Програмыг функцт үзүүлэх модулиуд
• Модул(Module): Бие даасан функцийг
агуулсан програмын нэгж
• Програм нь нэг болон түүнээс дээш
функцийг агуулж болно
• main функц нь програмын эхлэх
функцээр зайлшгүй тодорхойлох
хэрэгтэй
www.emust.edu.mn
Си програмын үндсэн бүтэц
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
#include <stdlib.h>
int main(){
int a = 1, b=2, sum;
sum = a + b;
printf("a + b = %dn", sum);
return 0;
}
• Функц
• функцийн хамрах хүрээ нь хаалтаар {…}
тодорхойлогдоно
• Функц нь Local Declaration болон Statement-ээр
илэрхийлэгдэнэ
• Локаль зарлах хэсэг
 Функц дотор л хэрэглэх боломжтой хувьсагч, функцийг
тодорхойлно
• Statement (Өгүүлбэр)
 функцийн үүргийг төлөөлөх хамгийн жижиг кодын нэгж
www.emust.edu.mn
Си хэлний элементүүд
Илэрхийлэл бодохын тулд хувьсагч болон тогтмол
хэмжигдэхүүнүүдийг операторуудаар холбон бичиж
үйлдлийг гүйцэтгэдэг.
Эдгээр нь бүгдээрээ Си хэлний элементүүд болно.
Үүнд:
• Үсэг
• Тогтмолууд
• Нэр (идентификатор)
• Түлхүүр үг
• Тайлбар
Үсэг
Си хэл нь олон тооны үсэг, цифр, цэгэн тэмдэгтүүдээс
тогтох бөгөөд эдгээр нь компиляторт тодорхойлогдсон
байна.
Программд ашиглагдах функц, тэмдэг хувьсагчийн нэр
, функцын операторын нэрийг хэрэглэнэ.
Си хэлний тэмдэгтүүдэд том, жижиг латин цагаан
толгой ба араб цифрүүд байдаг. Үсгүүд ба цифрүүд нь
тогтмол, идентификатор, түлхүүр үгүүдийг бичихэд
ашиглагддаг.
Тогтмолууд
Си хэлний тогтмолууд нь програмд оруулж ашиглаж
болох тогтоосон утгатай.
Үндсэн 4 төрлийн тогтмол байдаг.
1. Бүхэл тоон тогтмол
2. Бодит тоон тогтмол
3. Тэмдэгтэн тогтмол
4. Тэмдэгтэн мөр тогтмол
www.emust.edu.mn
Бүхэл тоон тогтмол
Бүхэл тоонууд нь бутархай хэсэггүй бөгөөд 8-т, 10-т, 16-
тын тооллын системүүдээр илэрхийлэгдэнэ.
Бүхэл тоон тогтмолууд нь өөрийн тодорхой төрөлтэй.
Тогтмолын хэмжээнээс хамаарч
int
unsigned int
unsigned long зэрэг төрлүүдтэй байж болно.
Бүхэл тоон тогтмолын бичигдэх ерөнхий хэлбэр:
10-тын
цифр
8-тын цифр 16-тын цифр
0..9 0 <цифр> (
цифр нь 0..7
)
0х <цифр>
( цифр нь 0..9, А..F, а..f )
Төрөл Хэмжээ Хязгаар
Unsigned char
Char
Unsigned int
Int
Unsigned
short short
unsigned long
long
8
8
16
16
16
16
32
32
0...... ..............255
-128................127
0..................65535
-32768.............32767
0...................65535
-32768..............32767
0..............394967295
-2147483648....2147483647
Бүхэл тоон төрлүүд :
Бодит тоон тогтмол
Бодит тоон тогтмол нь 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
www.emust.edu.mn
Тэмдэгтэн тогтмол
Тэмдэгтэн тогтмол нь үсэг, цифр, цэгэн
тэмдэгт, тусгай үсгүүдийг хэрэглэнэ.
Си хэлний компилятор нь тэмдэгтэн
төрлийг char, тэмдэгтэн биш төрлийг
unsigned char гэж авдаг.
Бичигдэх хэлбэр : ‘ < value > ’
Value : тэмдэгт, үсэг, тусгай
үсгүүд, цифр байна.
1. Char
2. Unsigned char
Тэмдэгтэн мөр тогтмол
Тэмдэгтэн мөр тогтмол нь “ ” хашилтан
дотор дараалсан үсэг, дурын тусгай
тэмдэгтүүд, цифр, хоосон зай зэргийг
агуулсан мөр тэмдэгт байна. Бичигдэх
хэлбэр: “ <value> ” value – дараалсан үсэг,
тэмдэгтүүд, цифр, хоосон зай байна.
Тэмдэгтэн мөрийн утга нь санах ойд
тодорхой байтад хадгалагдана. Тэмдэгтэн
мөрийн төгсгөлд автоматаар ‘ 0 ’ тавина.
www.emust.edu.mn
Нэр ( Идентификатор )
Идентификатор нэр гэдэг нь хэрэглэгч буюу програм зохиогч өөрөө ямар нэг обьектод
/ хувьсагч, тогтмол хэмжигдэхүүн, функц програм г.м / өгсөн нэр юм. Turbo C хэлний
идентификатор нь 1-32 хүртэл тэмдэгтээс тогтох бөгөөд зөвхөн үсгээр эхлэх ба үсэг
цифр холилдон орж болно. Мөн ялгах тэмдэгтүүдээс зөвхөн доогуур зураас орж
болно./Харин нэрэнд хоосон зай орж болохгүйг анхаарна уу/ .
Зөв Буруу
count 1 count
test23 hi!there
high_balance high..balance
Си хэлэнд том, жижиг үсгээр бичих нь ялгаатай. Жишээ нь, count,Count,COUNT эдгээр
нь ялгаатай гурван өөр идентификатор нэр юм. Эдгээр идентификатор нэр нь Turbo C-
ийн нөөц үгтэй адил байж болохгүй. Иймд жижиг үсгийг хувьсагчийн нэр, том үсгийг
тогтмолуудыг нэрлэхэд ашигладаг.
www.emust.edu.mn
Нэр(Идентификатор)
• Хувьсагч, чиг үүрэг, бүтэц үүрэг зэргийг хамрах тэмдэглэгээ
• Жишээ) int n, float f, int printRes();
• Дүрмийн аргачлал
• Англи үсэг, тоо, ‘_’-ийг хэрэглэж болно
Жишээ) too (O) my_Name (O) date#1 (X)
• Тодорхойлогчын анхны бичиглэлээр тоог ашиглаж болохгүй
Жишээ) too_1 (O) 1_too (X)
• Англи том, жижиг үсгийг хуваадаг
Жишээ) chicken ≠ CHICKEN
• Си хэлний түлхүүр үгийг тодорхойлогч руу ашиглаж болохгүй
Жишээ) int (X) union (X) goto (X)
www.emust.edu.mn
Түлхүүр үг
Энэ нь урьдаас тогтоосон нэртэй байх ба Си хэлний компиляторт утгатай. Хатуу дүрэм тогтоон
ашиглагддаг. Түлхүүр үгийг хувьсагчийн нэр шиг ашиглаж болохгүй. Ихэнх компиляторууд нь түлхүүр
үгийг том ба жижгээр бичигдсэнээс үл хамааран хүлээн авдаг.
Зарим түлхүүр үгс:
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
www.emust.edu.mn
С програмын үндсэн элемент
Хувьсагч (Variables)
• Өгөгдлийг хадгалан уншихын тулд нэр бичигдсэн санах ой
• Хувьсагчын нэрээр дамжуулан санах ой зайд нэвтрэх боломжтой болж,
зайнд хадгалагдсан утга нь өөрчлөгдөх боломжтой
• Бичигдэх хэлбэр : type variable_List;
• type: Хувьсагчыг хадгалах өгөгдлийн төрөл
• variable_List: Санах ойн орон зайн хувьсагчын нэр
int num_1;
Type: integer(Бүхэл тоо)
Variable_List: num_1 (нийт 1)
char ch_1, ch_2;
Type: character(Тэмдэгт)
Variable_List: ch_1 & ch_2 (нийт 2)
жишээ
Глобаль хувьсагч гэдэг нь программын аль ч хэсэгт харагдах утгыг нь
өөрчилж болох хувьсагч юм. Глобаль хувьсагчийг дараах 2 шинж чанараар
ялгана.
1. Програмын аль ч функц, процедур дотроос түүний утгыг өөрчилж болдог.
2. Тvvний амьдрах хугацаа нь программыг дуусан дуустал vргэлжилнэ.
www.emust.edu.mn
Глобаль хувьсагч гэдэг нь программын аль ч хэсэгт
харагдах утгыг нь өөрчилж болох хувьсагч юм. Глобаль
хувьсагчийг дараах 2 шинж чанараар ялгана.
1. Програмын аль ч функц, процедур дотроос түүний утгыг
өөрчилж болдог.
2. Тvvний амьдрах хугацаа нь программыг дуусан дуустал
vргэлжилнэ.
Глобаль хувьсагч
www.emust.edu.mn
Хувьсагч нь зарлахад хувьсагчын нэрний урд нь заавал өгөгдлийн төрөл байх хэрэгтэй
int i = 10; // Хувьсагч i нь бүхэл тоон утгыг хадгалах боломжтой
char c = ‘a’ // Хувьсагч с нь тэмдэгийн утгыг хадгалах боломжтой
Хувьсагчын нэр нь хязгаартай дэлгэрэнгүй
Англи үсэг тоог хослуулж хувьсагчын нэрийг өгч болно
int num_1; (O) // Хэрэглэх боломжтой
int num#1; (X) // # нь хувьсагчын нэрэнд орох боломжгүй
Англи хэлний том жижиг үсгийн хуваалт хийнэ
int MONEY ≠ int money
Хувьсагчын нэр нь тоогоор эхлэх боломжгүй бөгөөд , C хэлний дүрмийг тохируулахад хэргэлдэг
Түлхүүр үг (Keyword) нь хэрэглэж болохгүй
Жишээ) int, float, case, for, ……
Хувьсагч (Variables)
www.emust.edu.mn
Идентификатор
Хувьсагчын анхны утга олгох
• Хувьсагчын анхны утга олгох
• Хувьсагчыг зарлах анхны утгыг олгох зүйл
• Эхний утгыг сонгохгүй бол хувьсагч дотор та ямар утга
байгааг мэдэж чадахгүй
• Сонгох боломжгүй хувьсагчыг буруу ашиглавал алдаа
гаргах болно
• Жишээ
int main(){
int a = 5, b;
//Хувьсагч b дотор санамсаргүй тоо
хадгалагдана
printf(“a = %d, b = %dn”, a, b);
printf("a + b = %dn", a+b);
return 0;
}
※ Хувьсагч зарлах үед үргэлж эхлэлийг өгөх зүйлийг сонго
www.emust.edu.mn
Өгөгдлийн төрөл (Data Types)
С хэлний анхдагчаар заасан төрөл(data type) нь үндсэн 2 төрлөөр хувааж болно
Бүхэл тоон төрөл(Integer)
Бодит тоон төрөл(Floating-point)
Өгөгдлийн
төрөл
Integer
(Бүхэл тоо)
Floating-point
(Бодит тоо)
www.emust.edu.mn
Postfix-ыг ашиглан , int ба double үүнээс гадна өгөгдлийн төрлийг тогтмолд олгох нь боломжтой
Тогтмол (Constants)
Анхдагчаар , тогтмолын бүхэл тоон утга нь int өгөгдлийн төрлөөр илэрхийлэгдэж , бодит утга нь double
өгөгдлийн төрлөөр илэрхийлгэдэнэ
Postfix өгөгдлийн төрөл
U unsigned int
L long
UL unsigned long
LL long long
ULL unsigned long long
Postfix өгөгдлийн төрөл
F float
L double
бүхэл тоон төрлийн тогтмол бодит тоон төрлийн тогтмол
Жишээ unsigned int num = 1025U;
float f = 3.14F
www.emust.edu.mn
Тогтмол (Constants)
• Тэмдэгт төрлийн тогтмол (Character Constant)
• single quotes(‘ ’)-ийг дагаад тэмдэгт 1-ийг илэрхийлэх тогтмол
Жишээ: ‘A’, ‘b’, ‘0’, ‘+’
• Тэмдэгт мөрийн тогтмол (String constant)
• Double quotes(“ ”) Дотор нэг, аль эсвэл тэрнээс илүү тэмдэгтийг хамарна
Жишээ: “Hellon”, “Sain baina yy?”, “h”
• Тэмдэгтийн мөрний тогтмол дотроосоо эсрэг налуу зураас( ) хэрэглэгдэнэ
Онцлог
0 Null тэмдэгт
a Сэрүүлэг (Bell, Beep)
b Нэг тэмдэгт урагшлах (Backspace)
n Шинэ мөр (Newline)
t хэвтээ мөрөнд зай шилжих (Таб)
 эсрэг налуу (₩) гаралт

-–
òýìäýãòèéã ººðèéã íü õýâëý
õ
”-
“
òýìäýãò õýâëýõ
r– ìºðèéí ýõýíä
Printf (“тэмдэгт  t мөр  t хэвлэв.  n ”);
Үр дvн нь : Тэмдэгт мөр хэвлэв.
Printf (“Дуут дохио дуугарав . а  n ”);
Үр дvн нь : Дуут дохио дуугарав ( Дуут дохиогарна)
Printf (“Тэр  ” Yгvй  “ гэж хэлсэн.  n “ );
Үр дvн нь : Тэр vгvй гэж хэлсэн.
www.emust.edu.mn
Дэлгэцэнд мэдээлэл хэвлэхэд хөрвүүлэлтийн
тусгай тэмдэгтүүдийг ашиглах нь (printf )
Хөрвvvлэлтийн тусгай тэмдэгтvvд
% d -тоон төрлийн утгийг агуулна
% i- int төрлийн утгийг агуулна
% c- зөвхөн нэг тэмдэгт
% s - тэмдэгт мөр
main( )
{
int a, b, c, sum;
a = 1; b = 2; c = 3;
sum = a + b + c;
printf("sum is %d",
sum);
}
Жишээ1;
Printf (“% s | % d | % f | % c  n ”, “ Good ”, 25, - 5,48, ‘x’ );
Yр дvн нь : Good 25–5,480000 х
Жишээ 2;
Printf (“%f %.3f %.2f %.1f ” , 4.5678, 4.5678, 4.5678, 4.5678);
Үр дvн нь : 4.567800 4.578 4.57 4.6
Printert хэвлэх:
fprintf( stdprn, “Принтерт хэвлэж байна... n”);
fprintf( stdprn, x=%f ба n=%d n ”, x, n);
www.emust.edu.mn
• Жишээ нь: Тэмдэгт мөрний үр дүн
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int main() {
//Үндсэн тогтмол төрөл
int n = 128; double d = 3.1415;
//postfix нь хамрагдах тогтмол
float f = 234.159F;
unsigned long int uli = 365UL;
// escape sequence 'n':Шинэ мөрийг оруулах
printf("int n = %d, double d = %fn", n, d);
printf("float f = %f, unsigned long int uli = %dnn", f, uli);
//escape sequence 't' : Өгүүлбэр дотор tab-ын зайг үлдээж оруулах
printf("Hello Mogolian");
printf("HellotMogolian");
printf("tHello Mogolian");
system("PAUSE");
return 0; }
t-ээс болж tab хэмжээтэй зайг
үлдээж оруулах
• Symbolic Тогтмол
• Нэр нь өгөгдсөн байдаг тогтмол
• Syntax : const өгөгдлийн_төрөл
тогтмолын_нэр = Value;
• Анхны утга олгох биелэх хэрэгтэй
• Анхны өгөгдсөн утга нь програм ачааллаж
байгаа үед өөрчлөгдөх боломжгүй юм
• тогтмолын_нэрийг хэрэглэн тогтмол утгыг харах
боломжтой
1
2
3
4
5
6
7
8
9
int main(){
//symbolic constant
const double PI = 3.141592;
printf("PI = %fn", PI);
system("PAUSE");
return 0;
}
www.emust.edu.mn
Нэр(Идентификатор)
• Хувьсагч, чиг үүрэг, бүтэц үүрэг зэргийг хамрах тэмдэглэгээ
• Жишээ) int n, float f, int printRes();
• Дүрмийн аргачлал
• Англи үсэг, тоо, ‘_’-ийг хэрэглэж болно
Жишээ) too (O) my_Name (O) date#1 (X)
• Тодорхойлогчын анхны бичиглэлээр тоог ашиглаж болохгүй
Жишээ) too_1 (O) 1_too (X)
• Англи том, жижиг үсгийг хуваадаг
Жишээ) chicken ≠ CHICKEN
• Си хэлний түлхүүр үгийг тодорхойлогч руу ашиглаж болохгүй
Жишээ) int (X) union (X) goto (X)
www.emust.edu.mn
Программ зохиох vед хэрэглэгчээс төрөл бvрийн өгөгдөл унших
зайлшгvй шаардлага гардаг.
Си хэлэнд vvнийг scanf функц шийднэ.
Өгөгдөл уншихдаа ихэнх vед printf , scanf хоёр функцыг хослуулан
ажилуулдаг.
Эхлээд printf–ээр хэрэглэгчээс унших утгын тухай буюу асуултаа
хэвлээд дараа нь scanf–ээр утгаа оруулдаг.
scanf функц
Scanf (Удирдлагын тэмдэгтvvд мөр , [ хувьсагч ];
Жишээ нь :
• scanf (“%d”, & age);
• Scanf (“%s”, name);
• Scanf –ын удирдлагын тэмдэгт мөрийг ямар байдлаар
бичсэн яг түүнтэй адилаар хэрэглэгч гараас өгөгдөл
оруулах ёстой.
• Хэрэглэгчээс int , float , double , long гэх мэт энгийн
төрлийн утгыг уншихдаа & тэмдэгтийг хувьсагчийн
нэрийн өмнө заавал ашиглана. Харин хэрэглэгчээс
тэмдэгт мөр буюу тэмдэгт массив уншихыг хүсвэл &
тэмдэгтийг ашиглахгүй. Тэмдэгт мөр нь өөрөө хаяг юм.
Scanf функцийн дvрэм
www.emust.edu.mn
• Scanf функц нь гараас өгөгдөл оруулах функц бөгөөд дараах хэлбэртэй бичигдэнэ.
Scanf(“форматын_мөр”, &хувсагч1, &хувсагч2,...)
Жишээ нь: scanf(“ %d ”, &a)
Гараас өгөгдөл оруулах
Тайлбар: 10-тын тоо төрлийн өгөгдлийг а хувьсагчид олгоно.
Scanf функцийг ашиглахад хувьсагчийн
нэрэнд & тэмдэгийг бичиж өгдөг.
Үүнийг амперсанд гэж уншдаг.
Бодлого1: Гараас 2 тоо оруулж нийлбэр
ялгаварын олох програм бич.
Бодох арга:
a,b бүхэл тоон төрлийн хувьсагч
зарлаж, scanf функцийг ашиглахад
гараас өгөгдлийг оруулж тооцоог
хийнэ.
Үр дүн:
www.emust.edu.mn
Жишээ 1
Int i, j , k;
Scanf (“%d %d %d”, &i ,&j, &k);
энэ vед гараас оруулахад 5.10.15
Int year, month, day;
scanf (“%d %d %d”,&month,&day,&year);
гараас оруулахдаа 09|25|06
int I; char c; float f; long I;
char name [20];
scanf(“%d”,&i);
scanf(“%c”,&c);
scanf(“%f”,&f);
scanf(“%ld”,&l);
scanf(“%s”,name
Жишээ 2
scanf–г ашиглахын өмнө заавал
асуулт хэвлэнэ
Жишээ 3
Char name[20];
Printf (“та нэрээ оруулна уу? n”);
Scanf (“%s”,name);
Getchar функцийн формат
Энэ функц нь гараас нэг ширхэг тэмдэгт уншина.
Хувьсагч getchar ( ); Энэ нь enter товч авдаг
Жишээ 4
Printf (“ Нэг тэмдэгт оруулна уу ?”);
Ch=getchar ( );
Энэ функц нь гараас зөвхөн нэг тэмдэгт уншина.
Өөрөөр хэлбэл getchar шиг өгөгдлөө цуглуулан enter товчийг хvлээдэггvй.
Getch–‘н формат
Хувьсагч=getch ( ) ;
Жишээ 5
Printf (“та нэг тэмдэгт оруулана уу?”);
Ch= getch ( );
Putchar-аар авсан тэмдэгтийг хэвлэдэг.
Putchar (Хувьсагч );
Жишээ 6
Printf (“та энэ тэмдэгтийг оруулжээ”);
Purchar ( ch );
www.emust.edu.mn
Тайлбар
• Эх кодонд хамаарагдаж байгаа ч, хөрвүүлэхдээ кодноос
хасаж програмд нөлөөлөхгүй хэсэг
• Хөгжүүлэгч нь эх кодын дүн шинжилгээ хийхдээ ,
кодыг хялбараар ойлгохын тулд тайлбарыг
хавсгаргахын тулд ихэвчлэн ашиглана
• С хэл нь 2 төрлийн товчлолыг өгдөг
• Нэг мөр тайлбар (Line comment)
• Блок тайлбар (Block comment)
1
2
3
4
5
int main(void){
//Print greeting message
printf(“Hello Mongolia!n”);
return 0;
}
• Нэг мөр тайлбар (Line comment)
• Double Slash (//)-аар эхлэж, нэг мөрийн
сэтгэгдэлийн үйл явц
• Блок тайлбар (Block comment)
• (‘/*’-ээр эхэлвэл , ‘*/’ нь гарж ирэх хүртэл дотоод
бүх агуулгыг тайлбар гэж үзнэ
1
2
3
4
5
int main(void){
//Print greeting message
printf(“Hello Mongolia!n”);
return 0;
}
1
2
3
4
5
6
int main(void){
/* Print greeting message
Message: Hello Mongolia! */
printf(“Hello Mongolia!n”);
return 0;
}

Contenu connexe

Tendances

U.cs101 алгоритм программчлал-2
U.cs101   алгоритм программчлал-2U.cs101   алгоритм программчлал-2
U.cs101 алгоритм программчлал-2
Badral Khurelbaatar
 
U.cs101 алгоритм программчлал-10
U.cs101   алгоритм программчлал-10U.cs101   алгоритм программчлал-10
U.cs101 алгоритм программчлал-10
Badral Khurelbaatar
 
U.cs101 алгоритм программчлал-1(1)
U.cs101   алгоритм программчлал-1(1)U.cs101   алгоритм программчлал-1(1)
U.cs101 алгоритм программчлал-1(1)
Badral Khurelbaatar
 
Салаалсан алгоритмын бодлогууд
Салаалсан алгоритмын бодлогуудСалаалсан алгоритмын бодлогууд
Салаалсан алгоритмын бодлогууд
Баярсайхан Л
 
U.cs101 алгоритм программчлал-4-zasah
U.cs101   алгоритм программчлал-4-zasahU.cs101   алгоритм программчлал-4-zasah
U.cs101 алгоритм программчлал-4-zasah
Badral Khurelbaatar
 
U.cs101 алгоритм программчлал-5 zasvar badral(1)
U.cs101   алгоритм программчлал-5 zasvar badral(1)U.cs101   алгоритм программчлал-5 zasvar badral(1)
U.cs101 алгоритм программчлал-5 zasvar badral(1)
Badral Khurelbaatar
 
алгоритмын бодлогууд
алгоритмын бодлогуудалгоритмын бодлогууд
алгоритмын бодлогууд
Renchindorj Monkhzul
 

Tendances (20)

U.it101 lab 4
U.it101 lab 4U.it101 lab 4
U.it101 lab 4
 
U.cs101 алгоритм программчлал-2
U.cs101   алгоритм программчлал-2U.cs101   алгоритм программчлал-2
U.cs101 алгоритм программчлал-2
 
мэдээллийн технологи 1 тест
мэдээллийн технологи 1 тестмэдээллийн технологи 1 тест
мэдээллийн технологи 1 тест
 
U.cs101 алгоритм программчлал-10
U.cs101   алгоритм программчлал-10U.cs101   алгоритм программчлал-10
U.cs101 алгоритм программчлал-10
 
U.cs101 алгоритм программчлал-1(1)
U.cs101   алгоритм программчлал-1(1)U.cs101   алгоритм программчлал-1(1)
U.cs101 алгоритм программчлал-1(1)
 
өгөгдлийн сангийн системийн үндэс
өгөгдлийн сангийн системийн үндэсөгөгдлийн сангийн системийн үндэс
өгөгдлийн сангийн системийн үндэс
 
салаалсан алгоритм
салаалсан алгоритмсалаалсан алгоритм
салаалсан алгоритм
 
Салаалсан алгоритмын бодлогууд
Салаалсан алгоритмын бодлогуудСалаалсан алгоритмын бодлогууд
Салаалсан алгоритмын бодлогууд
 
Лекц 9(Заагч)
Лекц 9(Заагч)Лекц 9(Заагч)
Лекц 9(Заагч)
 
U.cs101 алгоритм программчлал-4-zasah
U.cs101   алгоритм программчлал-4-zasahU.cs101   алгоритм программчлал-4-zasah
U.cs101 алгоритм программчлал-4-zasah
 
U.cs101 алгоритм программчлал-5 zasvar badral(1)
U.cs101   алгоритм программчлал-5 zasvar badral(1)U.cs101   алгоритм программчлал-5 zasvar badral(1)
U.cs101 алгоритм программчлал-5 zasvar badral(1)
 
C++ vndsen oilgolt хичээл 1
C++ vndsen oilgolt хичээл 1C++ vndsen oilgolt хичээл 1
C++ vndsen oilgolt хичээл 1
 
Лекц 2 (Блок схем)
Лекц 2 (Блок схем)Лекц 2 (Блок схем)
Лекц 2 (Блок схем)
 
Prog didacticsok
Prog didacticsokProg didacticsok
Prog didacticsok
 
алгоритм үндсэн ойлголт
алгоритм үндсэн ойлголталгоритм үндсэн ойлголт
алгоритм үндсэн ойлголт
 
Ci prog tolgoi file хичээл 2
Ci prog tolgoi file хичээл 2Ci prog tolgoi file хичээл 2
Ci prog tolgoi file хичээл 2
 
Лекц 10: (Рекурс)
Лекц 10: (Рекурс)Лекц 10: (Рекурс)
Лекц 10: (Рекурс)
 
алгоритмын бодлогууд
алгоритмын бодлогуудалгоритмын бодлогууд
алгоритмын бодлогууд
 
бодлого C++
бодлого C++бодлого C++
бодлого C++
 
It101 1
It101 1It101 1
It101 1
 

Similaire à Лекц №6 (20)

Лекц №5
Лекц №5Лекц №5
Лекц №5
 
C++ vndsen oilgolt хичээл 1
C++ vndsen oilgolt хичээл 1C++ vndsen oilgolt хичээл 1
C++ vndsen oilgolt хичээл 1
 
Lec2 c++helnii undeslel
Lec2 c++helnii undeslelLec2 c++helnii undeslel
Lec2 c++helnii undeslel
 
Ci hel
Ci helCi hel
Ci hel
 
visual programming lecture 2
visual programming lecture 2visual programming lecture 2
visual programming lecture 2
 
visual programming lecture 2
visual programming lecture 2visual programming lecture 2
visual programming lecture 2
 
2
22
2
 
visual programming lecture 2
visual programming lecture 2visual programming lecture 2
visual programming lecture 2
 
C
CC
C
 
Lekts1
Lekts1Lekts1
Lekts1
 
Lekts1
Lekts1Lekts1
Lekts1
 
Lekts1
Lekts1Lekts1
Lekts1
 
For ci
For ciFor ci
For ci
 
U.cs101 лаборатори 1
U.cs101 лаборатори 1U.cs101 лаборатори 1
U.cs101 лаборатори 1
 
си хэлний хичээлүүд 11 р анги
си хэлний хичээлүүд 11 р ангиси хэлний хичээлүүд 11 р анги
си хэлний хичээлүүд 11 р анги
 
си хэлний ойлголт
си хэлний ойлголтси хэлний ойлголт
си хэлний ойлголт
 
Лекц №9
Лекц №9Лекц №9
Лекц №9
 
Програмчлалын хэл
Програмчлалын хэлПрограмчлалын хэл
Програмчлалын хэл
 
Preproc
PreprocPreproc
Preproc
 
Лекц-1
Лекц-1Лекц-1
Лекц-1
 

Plus de Amarsaikhan Tuvshinbayar (17)

U.it101 lec2
U.it101 lec2U.it101 lec2
U.it101 lec2
 
U.it101 lec1
U.it101 lec1U.it101 lec1
U.it101 lec1
 
Лекц №16
Лекц №16Лекц №16
Лекц №16
 
Лекц №15
Лекц №15Лекц №15
Лекц №15
 
Лекц №14
Лекц №14Лекц №14
Лекц №14
 
Лекц №13
Лекц №13Лекц №13
Лекц №13
 
Лекц №12
Лекц №12Лекц №12
Лекц №12
 
Лекц №11
Лекц №11Лекц №11
Лекц №11
 
Лекц №10
Лекц №10Лекц №10
Лекц №10
 
Лекц №8
Лекц №8Лекц №8
Лекц №8
 
Лекц №7
Лекц №7Лекц №7
Лекц №7
 
Лекц №4
Лекц №4Лекц №4
Лекц №4
 
Лекц №3
Лекц №3Лекц №3
Лекц №3
 
Лекц №2
Лекц №2Лекц №2
Лекц №2
 
Лекц №1
Лекц №1Лекц №1
Лекц №1
 
U.IT101 homework 1
U.IT101 homework 1U.IT101 homework 1
U.IT101 homework 1
 
U.CS101
U.CS101U.CS101
U.CS101
 

Лекц №6

  • 2. www.emust.edu.mn Cи Хэл (C Language) • Программыг ажиллуулах үйл явц 1. Си хэлрүү эх файл бичих • Бичсэн програм нь С файл руу хадгалагдана 2. Compilation • Эх код нь объект файл(хоёртын код)руу хувирна • Эх файл олон янзын хувийн тохиолдолд, эх файлын тоо шиг объект файл бий болно 3. Linker нь объект файлыг ажиллагаатай файл руу хувиргана • Бүх object file(Объект Фаил) болон, програмд хэрэгтэй С хэл library-г нийлүүлэн нэгэн ажиллагаат файл руу бүтээнэ 4. Гүйцээлтийн файлыг(Executable file) ажиллуулна Гүйцээлтийн файл(.exe) хөрвүүлэгч Linker C Library 011010011100 100000001100 000110011100 …… Объект Фаил(.o) #include <stdio.h> int main(){ … } Эх файл (.c)
  • 3. www.emust.edu.mn Эхний програмчлал 1 2 3 4 5 6 7 8 9 #include <stdio.h> #include <stdlib.h> int main(void){ printf(“Hello Mongolia!n”); return 0; } • hello.c • Угтах бичгийг гаргаж өгөх програм • Доорх кодыг бичнэ • Программыг compile (ctrl+F9) дарсны дараа ажиллагааг өгнө (ctrl+F10) [Dev C++ 4.9.9.2 жишигээр] ※ F9 товчлуурыг хэрэглэвэл эмхэтгэх ажиллагааг нэг удаа хийж болно
  • 4. www.emust.edu.mn hello.c-ын бүтэц • Препроцессор (Line 1~2) • Эх кодын дээд хэсэгт бичсэн болон, програмд хэрэгтэй толгой файл, макро функц зэргийг зааж өгнө • #(hash) тэмдгээр эхэлнэ • Функц (Line 4~9) • Програмын функц зааж өгөгдсөн бөгөөд, дээрээс доошоо чиглэлээр код ажиллана • функц нь олон төрлийнх байлгаж болно • {……} (Line 5, 9) • main функцийн хамрах хүрээг зааж өгнө • printf() функц (Line 6) • Си хэл нь гаралт • Хаалтан() дотор оруулсан өгүүлбэрийг дэлэгцэд гаргана. 1 2 3 4 5 6 7 8 9 #include <stdio.h> #include <stdlib.h> int main(void){ printf(“Hello Mongolia!n”); return 0; }
  • 5. www.emust.edu.mn Си програмын үндсэн бүтэц • add.c • Өгөгдсөн хоёр тооны нийлбэр 1 2 3 4 5 6 7 8 9 10 11 12 13 #include <stdio.h> #include <stdlib.h> int main(){ int a = 1, b=2, sum ; sum = a + b; printf("a + b = %dn", sum); return 0; }
  • 6. www.emust.edu.mn Си програмын үндсэн бүтэц • С програмын бүтэц, зохион байгуулалтыг 2-аар хувааж болно • Препроцессор • Функц 1 2 3 4 5 6 7 8 9 10 11 /*add.c*/ #include <stdio.h> #include <stdlib.h> int main() { int a = 1, b=2, sum; sum = a + b; printf("a + b = %dn", sum); return 0; } Жишээ add.c Өгөгдсөн хоёр тооны нийлбэр • Функц • Програмыг функцт үзүүлэх модулиуд • Модул(Module): Бие даасан функцийг агуулсан програмын нэгж • Програм нь нэг болон түүнээс дээш функцийг агуулж болно • main функц нь програмын эхлэх функцээр зайлшгүй тодорхойлох хэрэгтэй
  • 7. www.emust.edu.mn Си програмын үндсэн бүтэц 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include <stdio.h> #include <stdlib.h> int main(){ int a = 1, b=2, sum; sum = a + b; printf("a + b = %dn", sum); return 0; } • Функц • функцийн хамрах хүрээ нь хаалтаар {…} тодорхойлогдоно • Функц нь Local Declaration болон Statement-ээр илэрхийлэгдэнэ • Локаль зарлах хэсэг  Функц дотор л хэрэглэх боломжтой хувьсагч, функцийг тодорхойлно • Statement (Өгүүлбэр)  функцийн үүргийг төлөөлөх хамгийн жижиг кодын нэгж
  • 8. www.emust.edu.mn Си хэлний элементүүд Илэрхийлэл бодохын тулд хувьсагч болон тогтмол хэмжигдэхүүнүүдийг операторуудаар холбон бичиж үйлдлийг гүйцэтгэдэг. Эдгээр нь бүгдээрээ Си хэлний элементүүд болно. Үүнд: • Үсэг • Тогтмолууд • Нэр (идентификатор) • Түлхүүр үг • Тайлбар Үсэг Си хэл нь олон тооны үсэг, цифр, цэгэн тэмдэгтүүдээс тогтох бөгөөд эдгээр нь компиляторт тодорхойлогдсон байна. Программд ашиглагдах функц, тэмдэг хувьсагчийн нэр , функцын операторын нэрийг хэрэглэнэ. Си хэлний тэмдэгтүүдэд том, жижиг латин цагаан толгой ба араб цифрүүд байдаг. Үсгүүд ба цифрүүд нь тогтмол, идентификатор, түлхүүр үгүүдийг бичихэд ашиглагддаг. Тогтмолууд Си хэлний тогтмолууд нь програмд оруулж ашиглаж болох тогтоосон утгатай. Үндсэн 4 төрлийн тогтмол байдаг. 1. Бүхэл тоон тогтмол 2. Бодит тоон тогтмол 3. Тэмдэгтэн тогтмол 4. Тэмдэгтэн мөр тогтмол
  • 9. www.emust.edu.mn Бүхэл тоон тогтмол Бүхэл тоонууд нь бутархай хэсэггүй бөгөөд 8-т, 10-т, 16- тын тооллын системүүдээр илэрхийлэгдэнэ. Бүхэл тоон тогтмолууд нь өөрийн тодорхой төрөлтэй. Тогтмолын хэмжээнээс хамаарч int unsigned int unsigned long зэрэг төрлүүдтэй байж болно. Бүхэл тоон тогтмолын бичигдэх ерөнхий хэлбэр: 10-тын цифр 8-тын цифр 16-тын цифр 0..9 0 <цифр> ( цифр нь 0..7 ) 0х <цифр> ( цифр нь 0..9, А..F, а..f ) Төрөл Хэмжээ Хязгаар Unsigned char Char Unsigned int Int Unsigned short short unsigned long long 8 8 16 16 16 16 32 32 0...... ..............255 -128................127 0..................65535 -32768.............32767 0...................65535 -32768..............32767 0..............394967295 -2147483648....2147483647 Бүхэл тоон төрлүүд : Бодит тоон тогтмол Бодит тоон тогтмол нь 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
  • 10. www.emust.edu.mn Тэмдэгтэн тогтмол Тэмдэгтэн тогтмол нь үсэг, цифр, цэгэн тэмдэгт, тусгай үсгүүдийг хэрэглэнэ. Си хэлний компилятор нь тэмдэгтэн төрлийг char, тэмдэгтэн биш төрлийг unsigned char гэж авдаг. Бичигдэх хэлбэр : ‘ < value > ’ Value : тэмдэгт, үсэг, тусгай үсгүүд, цифр байна. 1. Char 2. Unsigned char Тэмдэгтэн мөр тогтмол Тэмдэгтэн мөр тогтмол нь “ ” хашилтан дотор дараалсан үсэг, дурын тусгай тэмдэгтүүд, цифр, хоосон зай зэргийг агуулсан мөр тэмдэгт байна. Бичигдэх хэлбэр: “ <value> ” value – дараалсан үсэг, тэмдэгтүүд, цифр, хоосон зай байна. Тэмдэгтэн мөрийн утга нь санах ойд тодорхой байтад хадгалагдана. Тэмдэгтэн мөрийн төгсгөлд автоматаар ‘ 0 ’ тавина.
  • 11. www.emust.edu.mn Нэр ( Идентификатор ) Идентификатор нэр гэдэг нь хэрэглэгч буюу програм зохиогч өөрөө ямар нэг обьектод / хувьсагч, тогтмол хэмжигдэхүүн, функц програм г.м / өгсөн нэр юм. Turbo C хэлний идентификатор нь 1-32 хүртэл тэмдэгтээс тогтох бөгөөд зөвхөн үсгээр эхлэх ба үсэг цифр холилдон орж болно. Мөн ялгах тэмдэгтүүдээс зөвхөн доогуур зураас орж болно./Харин нэрэнд хоосон зай орж болохгүйг анхаарна уу/ . Зөв Буруу count 1 count test23 hi!there high_balance high..balance Си хэлэнд том, жижиг үсгээр бичих нь ялгаатай. Жишээ нь, count,Count,COUNT эдгээр нь ялгаатай гурван өөр идентификатор нэр юм. Эдгээр идентификатор нэр нь Turbo C- ийн нөөц үгтэй адил байж болохгүй. Иймд жижиг үсгийг хувьсагчийн нэр, том үсгийг тогтмолуудыг нэрлэхэд ашигладаг.
  • 12. www.emust.edu.mn Нэр(Идентификатор) • Хувьсагч, чиг үүрэг, бүтэц үүрэг зэргийг хамрах тэмдэглэгээ • Жишээ) int n, float f, int printRes(); • Дүрмийн аргачлал • Англи үсэг, тоо, ‘_’-ийг хэрэглэж болно Жишээ) too (O) my_Name (O) date#1 (X) • Тодорхойлогчын анхны бичиглэлээр тоог ашиглаж болохгүй Жишээ) too_1 (O) 1_too (X) • Англи том, жижиг үсгийг хуваадаг Жишээ) chicken ≠ CHICKEN • Си хэлний түлхүүр үгийг тодорхойлогч руу ашиглаж болохгүй Жишээ) int (X) union (X) goto (X)
  • 13. www.emust.edu.mn Түлхүүр үг Энэ нь урьдаас тогтоосон нэртэй байх ба Си хэлний компиляторт утгатай. Хатуу дүрэм тогтоон ашиглагддаг. Түлхүүр үгийг хувьсагчийн нэр шиг ашиглаж болохгүй. Ихэнх компиляторууд нь түлхүүр үгийг том ба жижгээр бичигдсэнээс үл хамааран хүлээн авдаг. Зарим түлхүүр үгс: 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
  • 14. www.emust.edu.mn С програмын үндсэн элемент Хувьсагч (Variables) • Өгөгдлийг хадгалан уншихын тулд нэр бичигдсэн санах ой • Хувьсагчын нэрээр дамжуулан санах ой зайд нэвтрэх боломжтой болж, зайнд хадгалагдсан утга нь өөрчлөгдөх боломжтой • Бичигдэх хэлбэр : type variable_List; • type: Хувьсагчыг хадгалах өгөгдлийн төрөл • variable_List: Санах ойн орон зайн хувьсагчын нэр int num_1; Type: integer(Бүхэл тоо) Variable_List: num_1 (нийт 1) char ch_1, ch_2; Type: character(Тэмдэгт) Variable_List: ch_1 & ch_2 (нийт 2) жишээ Глобаль хувьсагч гэдэг нь программын аль ч хэсэгт харагдах утгыг нь өөрчилж болох хувьсагч юм. Глобаль хувьсагчийг дараах 2 шинж чанараар ялгана. 1. Програмын аль ч функц, процедур дотроос түүний утгыг өөрчилж болдог. 2. Тvvний амьдрах хугацаа нь программыг дуусан дуустал vргэлжилнэ.
  • 15. www.emust.edu.mn Глобаль хувьсагч гэдэг нь программын аль ч хэсэгт харагдах утгыг нь өөрчилж болох хувьсагч юм. Глобаль хувьсагчийг дараах 2 шинж чанараар ялгана. 1. Програмын аль ч функц, процедур дотроос түүний утгыг өөрчилж болдог. 2. Тvvний амьдрах хугацаа нь программыг дуусан дуустал vргэлжилнэ. Глобаль хувьсагч
  • 16. www.emust.edu.mn Хувьсагч нь зарлахад хувьсагчын нэрний урд нь заавал өгөгдлийн төрөл байх хэрэгтэй int i = 10; // Хувьсагч i нь бүхэл тоон утгыг хадгалах боломжтой char c = ‘a’ // Хувьсагч с нь тэмдэгийн утгыг хадгалах боломжтой Хувьсагчын нэр нь хязгаартай дэлгэрэнгүй Англи үсэг тоог хослуулж хувьсагчын нэрийг өгч болно int num_1; (O) // Хэрэглэх боломжтой int num#1; (X) // # нь хувьсагчын нэрэнд орох боломжгүй Англи хэлний том жижиг үсгийн хуваалт хийнэ int MONEY ≠ int money Хувьсагчын нэр нь тоогоор эхлэх боломжгүй бөгөөд , C хэлний дүрмийг тохируулахад хэргэлдэг Түлхүүр үг (Keyword) нь хэрэглэж болохгүй Жишээ) int, float, case, for, …… Хувьсагч (Variables)
  • 17. www.emust.edu.mn Идентификатор Хувьсагчын анхны утга олгох • Хувьсагчын анхны утга олгох • Хувьсагчыг зарлах анхны утгыг олгох зүйл • Эхний утгыг сонгохгүй бол хувьсагч дотор та ямар утга байгааг мэдэж чадахгүй • Сонгох боломжгүй хувьсагчыг буруу ашиглавал алдаа гаргах болно • Жишээ int main(){ int a = 5, b; //Хувьсагч b дотор санамсаргүй тоо хадгалагдана printf(“a = %d, b = %dn”, a, b); printf("a + b = %dn", a+b); return 0; } ※ Хувьсагч зарлах үед үргэлж эхлэлийг өгөх зүйлийг сонго
  • 18. www.emust.edu.mn Өгөгдлийн төрөл (Data Types) С хэлний анхдагчаар заасан төрөл(data type) нь үндсэн 2 төрлөөр хувааж болно Бүхэл тоон төрөл(Integer) Бодит тоон төрөл(Floating-point) Өгөгдлийн төрөл Integer (Бүхэл тоо) Floating-point (Бодит тоо)
  • 19. www.emust.edu.mn Postfix-ыг ашиглан , int ба double үүнээс гадна өгөгдлийн төрлийг тогтмолд олгох нь боломжтой Тогтмол (Constants) Анхдагчаар , тогтмолын бүхэл тоон утга нь int өгөгдлийн төрлөөр илэрхийлэгдэж , бодит утга нь double өгөгдлийн төрлөөр илэрхийлгэдэнэ Postfix өгөгдлийн төрөл U unsigned int L long UL unsigned long LL long long ULL unsigned long long Postfix өгөгдлийн төрөл F float L double бүхэл тоон төрлийн тогтмол бодит тоон төрлийн тогтмол Жишээ unsigned int num = 1025U; float f = 3.14F
  • 20. www.emust.edu.mn Тогтмол (Constants) • Тэмдэгт төрлийн тогтмол (Character Constant) • single quotes(‘ ’)-ийг дагаад тэмдэгт 1-ийг илэрхийлэх тогтмол Жишээ: ‘A’, ‘b’, ‘0’, ‘+’ • Тэмдэгт мөрийн тогтмол (String constant) • Double quotes(“ ”) Дотор нэг, аль эсвэл тэрнээс илүү тэмдэгтийг хамарна Жишээ: “Hellon”, “Sain baina yy?”, “h” • Тэмдэгтийн мөрний тогтмол дотроосоо эсрэг налуу зураас( ) хэрэглэгдэнэ Онцлог 0 Null тэмдэгт a Сэрүүлэг (Bell, Beep) b Нэг тэмдэгт урагшлах (Backspace) n Шинэ мөр (Newline) t хэвтээ мөрөнд зай шилжих (Таб) эсрэг налуу (₩) гаралт -– òýìäýãòèéã ººðèéã íü õýâëý õ ”- “ òýìäýãò õýâëýõ r– ìºðèéí ýõýíä Printf (“тэмдэгт t мөр t хэвлэв. n ”); Үр дvн нь : Тэмдэгт мөр хэвлэв. Printf (“Дуут дохио дуугарав . а n ”); Үр дvн нь : Дуут дохио дуугарав ( Дуут дохиогарна) Printf (“Тэр ” Yгvй “ гэж хэлсэн. n “ ); Үр дvн нь : Тэр vгvй гэж хэлсэн.
  • 21. www.emust.edu.mn Дэлгэцэнд мэдээлэл хэвлэхэд хөрвүүлэлтийн тусгай тэмдэгтүүдийг ашиглах нь (printf ) Хөрвvvлэлтийн тусгай тэмдэгтvvд % d -тоон төрлийн утгийг агуулна % i- int төрлийн утгийг агуулна % c- зөвхөн нэг тэмдэгт % s - тэмдэгт мөр main( ) { int a, b, c, sum; a = 1; b = 2; c = 3; sum = a + b + c; printf("sum is %d", sum); } Жишээ1; Printf (“% s | % d | % f | % c n ”, “ Good ”, 25, - 5,48, ‘x’ ); Yр дvн нь : Good 25–5,480000 х Жишээ 2; Printf (“%f %.3f %.2f %.1f ” , 4.5678, 4.5678, 4.5678, 4.5678); Үр дvн нь : 4.567800 4.578 4.57 4.6 Printert хэвлэх: fprintf( stdprn, “Принтерт хэвлэж байна... n”); fprintf( stdprn, x=%f ба n=%d n ”, x, n);
  • 22. www.emust.edu.mn • Жишээ нь: Тэмдэгт мөрний үр дүн 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 int main() { //Үндсэн тогтмол төрөл int n = 128; double d = 3.1415; //postfix нь хамрагдах тогтмол float f = 234.159F; unsigned long int uli = 365UL; // escape sequence 'n':Шинэ мөрийг оруулах printf("int n = %d, double d = %fn", n, d); printf("float f = %f, unsigned long int uli = %dnn", f, uli); //escape sequence 't' : Өгүүлбэр дотор tab-ын зайг үлдээж оруулах printf("Hello Mogolian"); printf("HellotMogolian"); printf("tHello Mogolian"); system("PAUSE"); return 0; } t-ээс болж tab хэмжээтэй зайг үлдээж оруулах • Symbolic Тогтмол • Нэр нь өгөгдсөн байдаг тогтмол • Syntax : const өгөгдлийн_төрөл тогтмолын_нэр = Value; • Анхны утга олгох биелэх хэрэгтэй • Анхны өгөгдсөн утга нь програм ачааллаж байгаа үед өөрчлөгдөх боломжгүй юм • тогтмолын_нэрийг хэрэглэн тогтмол утгыг харах боломжтой 1 2 3 4 5 6 7 8 9 int main(){ //symbolic constant const double PI = 3.141592; printf("PI = %fn", PI); system("PAUSE"); return 0; }
  • 23. www.emust.edu.mn Нэр(Идентификатор) • Хувьсагч, чиг үүрэг, бүтэц үүрэг зэргийг хамрах тэмдэглэгээ • Жишээ) int n, float f, int printRes(); • Дүрмийн аргачлал • Англи үсэг, тоо, ‘_’-ийг хэрэглэж болно Жишээ) too (O) my_Name (O) date#1 (X) • Тодорхойлогчын анхны бичиглэлээр тоог ашиглаж болохгүй Жишээ) too_1 (O) 1_too (X) • Англи том, жижиг үсгийг хуваадаг Жишээ) chicken ≠ CHICKEN • Си хэлний түлхүүр үгийг тодорхойлогч руу ашиглаж болохгүй Жишээ) int (X) union (X) goto (X)
  • 24. www.emust.edu.mn Программ зохиох vед хэрэглэгчээс төрөл бvрийн өгөгдөл унших зайлшгvй шаардлага гардаг. Си хэлэнд vvнийг scanf функц шийднэ. Өгөгдөл уншихдаа ихэнх vед printf , scanf хоёр функцыг хослуулан ажилуулдаг. Эхлээд printf–ээр хэрэглэгчээс унших утгын тухай буюу асуултаа хэвлээд дараа нь scanf–ээр утгаа оруулдаг. scanf функц Scanf (Удирдлагын тэмдэгтvvд мөр , [ хувьсагч ]; Жишээ нь : • scanf (“%d”, & age); • Scanf (“%s”, name); • Scanf –ын удирдлагын тэмдэгт мөрийг ямар байдлаар бичсэн яг түүнтэй адилаар хэрэглэгч гараас өгөгдөл оруулах ёстой. • Хэрэглэгчээс int , float , double , long гэх мэт энгийн төрлийн утгыг уншихдаа & тэмдэгтийг хувьсагчийн нэрийн өмнө заавал ашиглана. Харин хэрэглэгчээс тэмдэгт мөр буюу тэмдэгт массив уншихыг хүсвэл & тэмдэгтийг ашиглахгүй. Тэмдэгт мөр нь өөрөө хаяг юм. Scanf функцийн дvрэм
  • 25. www.emust.edu.mn • Scanf функц нь гараас өгөгдөл оруулах функц бөгөөд дараах хэлбэртэй бичигдэнэ. Scanf(“форматын_мөр”, &хувсагч1, &хувсагч2,...) Жишээ нь: scanf(“ %d ”, &a) Гараас өгөгдөл оруулах Тайлбар: 10-тын тоо төрлийн өгөгдлийг а хувьсагчид олгоно. Scanf функцийг ашиглахад хувьсагчийн нэрэнд & тэмдэгийг бичиж өгдөг. Үүнийг амперсанд гэж уншдаг. Бодлого1: Гараас 2 тоо оруулж нийлбэр ялгаварын олох програм бич. Бодох арга: a,b бүхэл тоон төрлийн хувьсагч зарлаж, scanf функцийг ашиглахад гараас өгөгдлийг оруулж тооцоог хийнэ. Үр дүн:
  • 26. www.emust.edu.mn Жишээ 1 Int i, j , k; Scanf (“%d %d %d”, &i ,&j, &k); энэ vед гараас оруулахад 5.10.15 Int year, month, day; scanf (“%d %d %d”,&month,&day,&year); гараас оруулахдаа 09|25|06 int I; char c; float f; long I; char name [20]; scanf(“%d”,&i); scanf(“%c”,&c); scanf(“%f”,&f); scanf(“%ld”,&l); scanf(“%s”,name Жишээ 2 scanf–г ашиглахын өмнө заавал асуулт хэвлэнэ Жишээ 3 Char name[20]; Printf (“та нэрээ оруулна уу? n”); Scanf (“%s”,name); Getchar функцийн формат Энэ функц нь гараас нэг ширхэг тэмдэгт уншина. Хувьсагч getchar ( ); Энэ нь enter товч авдаг Жишээ 4 Printf (“ Нэг тэмдэгт оруулна уу ?”); Ch=getchar ( ); Энэ функц нь гараас зөвхөн нэг тэмдэгт уншина. Өөрөөр хэлбэл getchar шиг өгөгдлөө цуглуулан enter товчийг хvлээдэггvй. Getch–‘н формат Хувьсагч=getch ( ) ; Жишээ 5 Printf (“та нэг тэмдэгт оруулана уу?”); Ch= getch ( ); Putchar-аар авсан тэмдэгтийг хэвлэдэг. Putchar (Хувьсагч ); Жишээ 6 Printf (“та энэ тэмдэгтийг оруулжээ”); Purchar ( ch );
  • 27. www.emust.edu.mn Тайлбар • Эх кодонд хамаарагдаж байгаа ч, хөрвүүлэхдээ кодноос хасаж програмд нөлөөлөхгүй хэсэг • Хөгжүүлэгч нь эх кодын дүн шинжилгээ хийхдээ , кодыг хялбараар ойлгохын тулд тайлбарыг хавсгаргахын тулд ихэвчлэн ашиглана • С хэл нь 2 төрлийн товчлолыг өгдөг • Нэг мөр тайлбар (Line comment) • Блок тайлбар (Block comment) 1 2 3 4 5 int main(void){ //Print greeting message printf(“Hello Mongolia!n”); return 0; } • Нэг мөр тайлбар (Line comment) • Double Slash (//)-аар эхлэж, нэг мөрийн сэтгэгдэлийн үйл явц • Блок тайлбар (Block comment) • (‘/*’-ээр эхэлвэл , ‘*/’ нь гарж ирэх хүртэл дотоод бүх агуулгыг тайлбар гэж үзнэ 1 2 3 4 5 int main(void){ //Print greeting message printf(“Hello Mongolia!n”); return 0; } 1 2 3 4 5 6 int main(void){ /* Print greeting message Message: Hello Mongolia! */ printf(“Hello Mongolia!n”); return 0; }