SlideShare a Scribd company logo
1 of 31
IT102 Lecture 2
Багш Г.Төгөлдөрбаяр
 Review
 Variables and data types
 Operators
 Epilogue
Review: C programming language
 Cи хурдтай, авсаархан, флатформоос үл хамаарсан
програмчлалын хэл
 Си нь систем програмчлалд ашиглагддаг(Жнь:
Компайлар, үйлдлийн системүүд, өгөгдлийн баазын
системүүд, микроконтоллерууд)
 Си маш эмх цэгцтэй, өөрийн гэсэн хэлбэртэй,
бүтэцлэгдсэн хэл
 Ritchie – “ Си хачин жигтэй, гайхамшигтай том амжилт”
 Хувьсагч зарлалт(Variable declarations): int i; float f;
 Intialization: char c=‘A’; int x=y=10;
 Operators: +,-,*,/,%
 Expressions: int x,y,z; x=y*2+z*3;
 Функц (Function): int factorial (int n); /*функц int
утга авч, int утга буцаана*/
 Review
 Variables and data types
 Operators
 Epilogue
Тодорхойлолтууд - definitions
Өгөгдлийн төрөл:
 Обьектийн санах ой нь өгөгдлийн төрлийг тодорхойлж
ямар утга авах мөн ямар үйлдлүүд хийгдэж болохыг
тодорхойлдог
Операторууд:
 Обьектуудыг хэрхэн удирдахыг операторууд заадаг
( Жнь: Тоон операторууд, тэмдэгт операторууд)
 Оператор unary(Жнь -,++), binary (Жнь +,-,*,/), ternary (?:)
Илэрхийлэл (Expression):
 програмчлалын хэлний хувьд илэрхийлэл гэдэг нь утга,
хувьсагч, операторууд болон функцуудийн комбинаци юм
(хослол)
Хувьсагч:
 Хувьсаг нь нэрэн холбоос, утган заалт бүхий системийн
санах ойд хадгалагдах програмчлалын чухал нэгж
int x=0, y=0; y=x+2;
 x, y бол хувьсагч
 y=x+2 илэрхийлэл
 + бол оператор
Variable names
Нэр өгөх дүрэм:
 Variable names can contain letters,digits and _
 Variable names should start with letters.
 Keywords (e.g., for,while etc.) cannot be used as variable
names
 Variable names are case sensitive. int x; int X declares two
different variables
Pop quiz (correct/incorrect):
 int money$owed; (incorrect: cannot contain $)
 int total_count (correct)
 int score2 (correct)
 int 2ndscore (incorrect: must start with a letter)
 int long (incorrect: cannot use keyword)
Өгөгдлийн төрөл болон хэмжээ
Си хэл өгөгдлийн тун цөөхөн төрөлтэй
 Тоон (int,float,double) /* Numeric*/
 Тэмдэгт (char) /*character*/
 Хэрэглэгчийн тодорхойлсон (struct, union)/*user defined*/
Өгөгдлийн төрөл болон хэмжээ
Дараах өгөгдлийн төрлийг бид түлхүү хэрэглэнэ
 unsigned хувилбар нь signed хувилбарын хязгаараас 2 дахин их утга
авдаг
 unsigned, signed хоёрын ялгаа зөвхөн арифметик илэрхийллийн үед л
ажиглагддаг
 2008 онд yahoo корпорацийн Flickr unsigned long (2^32-1) –с тэмдэгт
төрөлрүү шилжсэн
Big endian vs. Little endian
Хувьсагчийн санах ойд эзэллэх хэмжээ нь машин /
компайлер-с хамааралтай .
Гэхдээ дараах хамаарал бол хууль мэт өөрчлөгддөггүй:
sizeof(char)<sizeof(short)<=sizeof(int)<=sizeof(long) болон
sizeof(char)<sizeof(short)<=sizeof(float)<=sizeof(double)
“NUXI” problem: хэд хэдэн byte-с тогтох тоон төрлийн
хувьд бие даасан byte-уудын дараалан байрлах
дараалал чухал. Аливаа хэрэгсэлийн ариктектур дээр
тулгуурлан “big endian” , “little endian” гэсэн хоёр
хэлбэр байдаг
Big endian vs. Little endian(үргэлжлэл)
 Big endian: эхэнд тэмдэглэгдсэн битүүд( the most significant bits - MSBs
)бага хаяганд бүртгэгдэнэ. Том хүчин чадал бүхий компьютерүүд энэ
хэлбэр дээр тулгуурласан байдаг. Мөн сүлжээний хаглалт ийм
зарчмаар явдаг учраас сүлжээний дараалал гэж дууддаг (network
order)
 Little endian: Сүүлд тэмдэглсэгдсэн битүүд бага хаяг дээр бүртгэгдэнэ.
Энэ нь Х86 дэмждэг процессорууд дээр хэрэглэгддэг(Least significant
bits - LSBs)
Тогтмол хэмжигдэхүүн - Constants
 Тогтмол утга хувьсагчид өгч түүнийг илэрхийлэлд шууд
ашигладаг.
Тогтмол хэмжигдэхүүн - Constants
Зарлалт - Declaration
Зарлалтын энгийн хэлбэр нь
төрөл хувьсагчийн-нэр [=утга]
Жишээ нь
 char x; /*uninitialilzed*/
 char x = ‘A’ ; /*intialized to ‘A’*/
 char x=‘a’, y=‘b’; /*олон хувьсагчид анхны утга олгох*/
 char x= y=‘z’; /*давхар утга олголт*/
Pop quiz II
 int x=017;int y=12; /∗is x>y?∗/
 short int s=0xFFFF12; /∗correct?∗/
 char c=−1;unsigned char uc=−1; /∗correct?∗/
 puts("hel"+"lo"); puts("hel""lo");/∗which is correct?∗/
 enum sz{S=0,L=3,XL}; /∗what is the value of XL?∗/
 enum sz{S=0,L=−3,XL}; /∗what is the value of XL?∗/
 Review
 Variables and data types
 Operators
 Epilogue
Арифметик операторууд
Арифметик операторууд(үргэлжлэл)
Хамаарлийн операторууд – Relational Operators
Хамаарлын операторууд аливаа хоёр операндыг
харьцуулан ‘boolean’ үр дүн үзүүлдэг. Си-д ямар нэг тэг
биш утгууд бүгд ‘үнэн’ гэж ойлгогддог харин 0 нь худал
болно.
Хамаарлийн операторууд – Relational Operators
Тэнцүү эсэхийг шалгах бол хамгийн түгээмэл
хэрэглэгддэг хамаарлын оператор.
 Анхаар: Тэнцүү эсэхийг шалгах “=” оператор утга олгох “=”
оператораас ялгаатай
 Анхаар: “==” оператор бутархай хувьсагч дээр найдваргүй,
яагаад гэвэл нарийвчлал шалгах хязгаартай.
Логик операторууд – Logical operators
илэрхийлэлд орсон аливаа утга өмнө нь заавал зарлагдсан буюу
тодорхойлогдсон байх ёстой. Эс бөгөөс хүсээгүй үр дүнг үзүүлнэ.
Жишээ нь
 (3==3) || ((c=getchar())==‘y’). Хоёр дахь илэрхийлэл бодогдохгүй
 (0) && ((x=x+1)>0) . Мөн адил хоёр дахь илэрхийлэл бодогдохгүй
Ихэсгэх ба багасгах операторууд -
Increment and decrement operators
Ихэсгэх болон багасгах нь адилхан арифметик оператор.
Си хоёр төрлийн товчлолоор хангаж өгдөг
Postfix
 х++ бол х=х+1 товчлол
 х – – бол х=х-1 товчлол
 y=x++ бол y=x; x=x+1 товчлол. х утга ихсэхээс өмнө
бодогдоно
 y=x– – бол y=x; x=x – 1товчлол. х утга нь ихсэхээс өмнө
бодогдоно
Ихэсгэх ба багасгах операторууд -
Increment and decrement operators
Prefix:
 ++x is a short cut for x=x+1
 --х is a short cut for x=x−1
 y=++x is a short cut for x=x+1;y=x;. x ихэссэний дараа
бодогдоно
 y=-- x is a short cut for x=x-1;y=x;. x багассаны дараа
бодогдоно
Битийн операторууд – Bitwise operators
Тэмдэглэх нь:
 AND бол 2 операнд хоёулаа үнэн үед үнэн
 OR ямар нэг операнд үнэн байхад л үнэн
 XOR яг нэг операнд үнэн байхад үнэн
Утга олгох оператор – assignment operators
Си програмчлалд өргөн хэрэглэгддэг хэлбэр бол хувьсагч =
хувьсагч оператор илэрхийлэл
 x=x+1
 x=x∗10
 x=x/2
Си мөн эмхтгэсэн утга олгох үйлдлүүдийг дэмжинэ
 x+=1 /∗is the same as x=x+1∗/
 x−=1 /∗is the same as x=x−1∗/
 x∗=10 /∗is the same as x=x∗10 ∗/
 x/=2 /∗ is the same as x=x/2
 x%=2 /∗is the same as x=x%2
Нөхцөлт илэрхийлэл – Conditional Expression
Дараах хэлбэр си хэлэнд өргөн тохиолдоно. (Бараг дандаа) :
if(нөхцөл)
x=<илэрхийлэл a>;
else
x=<илэрхийлэл б>;
Ternary operator : ‘?:’
Код хэрхэн богинохон мөн ойлгомтой болсон байгааг сайн ажиглаарай.
Ийм хэлбэртэйгээр кодыг богино болгохыг англиар Syntatic sugar гэдэг
 Review
 Variables and data types
 Operators
 Epilogue
Төрөл хөрвүүлэлт – Type conversions
Хувьсагчуудыг орноос хойш өндөр нарийвчлалтай болгох үед өгөгдөл
урьдчилан бэлтгэгдэнэ. Энэ үйлдлийг компайлер холилдсон төрөлтэй
илэрхийллээр автоматаар хийнэ.(Си хэлэнд илэрхийлэл гэж юу вэ
гэдгийг бид өмнө нь тодорхойлсон)
int i;
float f;
f=i +3.14159; / ∗ i is promoted to float , f=(float)i+3.14159 ∗ /
Компайлер автоматаар хийдэг өөр нэг хөрвүүлэлт бол ‘char’ –> ‘int’. Энэ нь
харьцуулалтыг боломжтой болгоод зогсохгүй тэмдэгтүүд дээр бодолт хийх
боломжтой болгоно.
isupper =(c>=’A’ && c<=’Z’)?1:0; / ∗ с болон тэмдэгт тогмол хэмжигдэхүүнүүд
маань int-руу хөрвүүлэгдэнэ∗ /
if (! isupper )
c=c−’a’+’A’ ;/ ∗ хасах үйлдэл хийгдэх боломжтой. Учир нь бүхэл тооруу
хөрвүүлэлт энд хийгдэх юм ∗ /
 ++,–,(cast),sizeof have the highest priority• *,/,% have
higher priority than +,
 ==,!= have higher priority than &&,||
 assignment operators have very low priority
Use () generously to avoid ambiguities or side effects
associated with precendence of operators.
 y=x∗3+2 /∗same as y=(x∗3)+2∗/
 x!=0 && y==0 /∗same as (x!=0) && (y==0)∗/
 d= c>=’0’&& c<=’9’/∗same as d=(c>=’0’) && (c<=’9’)∗/

More Related Content

What's hot (17)

Lecture 4
Lecture 4Lecture 4
Lecture 4
 
Java lecture3
Java lecture3Java lecture3
Java lecture3
 
3
33
3
 
Sw203 Lecture5 Class Acess Modifiers
Sw203 Lecture5 Class Acess ModifiersSw203 Lecture5 Class Acess Modifiers
Sw203 Lecture5 Class Acess Modifiers
 
Лекц №4
Лекц №4Лекц №4
Лекц №4
 
Ci hel
Ci helCi hel
Ci hel
 
Sw203 Lecture9 Encapsulation
Sw203 Lecture9  EncapsulationSw203 Lecture9  Encapsulation
Sw203 Lecture9 Encapsulation
 
2
22
2
 
Lecture 1
Lecture 1Lecture 1
Lecture 1
 
Лекц №6
Лекц №6Лекц №6
Лекц №6
 
U.cs101 алгоритм программчлал-10
U.cs101   алгоритм программчлал-10U.cs101   алгоритм программчлал-10
U.cs101 алгоритм программчлал-10
 
Lec2 c++helnii undeslel
Lec2 c++helnii undeslelLec2 c++helnii undeslel
Lec2 c++helnii undeslel
 
Лекц-1
Лекц-1Лекц-1
Лекц-1
 
Mathcad beginning-part1
Mathcad beginning-part1Mathcad beginning-part1
Mathcad beginning-part1
 
u.cs101 "Алгоритм ба програмчлал" Лекц №4
u.cs101 "Алгоритм ба програмчлал" Лекц №4u.cs101 "Алгоритм ба програмчлал" Лекц №4
u.cs101 "Алгоритм ба програмчлал" Лекц №4
 
Sw203 Lecture4 Class Object
Sw203 Lecture4  Class ObjectSw203 Lecture4  Class Object
Sw203 Lecture4 Class Object
 
u.cs101 "Алгоритм ба програмчлал" Лекц №6
u.cs101 "Алгоритм ба програмчлал" Лекц №6u.cs101 "Алгоритм ба програмчлал" Лекц №6
u.cs101 "Алгоритм ба програмчлал" Лекц №6
 

Similar to Lecture 2

Gosexem asuult 09
Gosexem asuult 09Gosexem asuult 09
Gosexem asuult 09dorjoooo
 
U.cs101 алгоритм программчлал-4-zasah
U.cs101   алгоритм программчлал-4-zasahU.cs101   алгоритм программчлал-4-zasah
U.cs101 алгоритм программчлал-4-zasahBadral Khurelbaatar
 
U.cs101 алгоритм программчлал-7
U.cs101   алгоритм программчлал-7U.cs101   алгоритм программчлал-7
U.cs101 алгоритм программчлал-7Badral Khurelbaatar
 
U.cs101 алгоритм программчлал-2
U.cs101   алгоритм программчлал-2U.cs101   алгоритм программчлал-2
U.cs101 алгоритм программчлал-2Badral Khurelbaatar
 
203lec2
203lec2203lec2
203lec2BPurev
 
Lecture2
Lecture2Lecture2
Lecture2orgil
 
алгоритмчлалын үндэс
алгоритмчлалын үндэсалгоритмчлалын үндэс
алгоритмчлалын үндэсenhsaran_tsahim
 
9 10 объект хандлагат анализ (динамик ойлголт)
9 10 объект хандлагат анализ (динамик ойлголт)9 10 объект хандлагат анализ (динамик ойлголт)
9 10 объект хандлагат анализ (динамик ойлголт)Аззаяа Мөнхзул
 
visual programming lecture 2
visual programming lecture 2visual programming lecture 2
visual programming lecture 2Donald G-hub
 
visual programming lecture 2
visual programming lecture 2visual programming lecture 2
visual programming lecture 2Donald G-hub
 
visual programming lecture 2
visual programming lecture 2visual programming lecture 2
visual programming lecture 2Donald G-hub
 
алгоритмчлалын үндэс
алгоритмчлалын үндэсалгоритмчлалын үндэс
алгоритмчлалын үндэсGombo Tumuruu
 

Similar to Lecture 2 (20)

Lec3
Lec3Lec3
Lec3
 
Gosexem asuult 09
Gosexem asuult 09Gosexem asuult 09
Gosexem asuult 09
 
онол
онолонол
онол
 
U.cs101 алгоритм программчлал-4-zasah
U.cs101   алгоритм программчлал-4-zasahU.cs101   алгоритм программчлал-4-zasah
U.cs101 алгоритм программчлал-4-zasah
 
U.cs101 алгоритм программчлал-7
U.cs101   алгоритм программчлал-7U.cs101   алгоритм программчлал-7
U.cs101 алгоритм программчлал-7
 
U.cs101 алгоритм программчлал-2
U.cs101   алгоритм программчлал-2U.cs101   алгоритм программчлал-2
U.cs101 алгоритм программчлал-2
 
If presentation
If presentationIf presentation
If presentation
 
203lec2
203lec2203lec2
203lec2
 
Lecture2
Lecture2Lecture2
Lecture2
 
Ooad
OoadOoad
Ooad
 
Pp Lect10 11
Pp Lect10 11Pp Lect10 11
Pp Lect10 11
 
алгоритмчлалын үндэс
алгоритмчлалын үндэсалгоритмчлалын үндэс
алгоритмчлалын үндэс
 
9 10 объект хандлагат анализ (динамик ойлголт)
9 10 объект хандлагат анализ (динамик ойлголт)9 10 объект хандлагат анализ (динамик ойлголт)
9 10 объект хандлагат анализ (динамик ойлголт)
 
Sw203 Lecture11 Casting
Sw203 Lecture11 CastingSw203 Lecture11 Casting
Sw203 Lecture11 Casting
 
Pp Lect9 10 1
Pp Lect9 10 1Pp Lect9 10 1
Pp Lect9 10 1
 
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
 
visual programming lecture 2
visual programming lecture 2visual programming lecture 2
visual programming lecture 2
 
алгоритмчлалын үндэс
алгоритмчлалын үндэсалгоритмчлалын үндэс
алгоритмчлалын үндэс
 
C
CC
C
 

More from Tuguldurbayar Gantogoo (13)

Lecture 3
Lecture 3Lecture 3
Lecture 3
 
Lecture 5
Lecture 5Lecture 5
Lecture 5
 
Lecture 6
Lecture 6Lecture 6
Lecture 6
 
Lecture 7
Lecture 7Lecture 7
Lecture 7
 
Lecture 7
Lecture 7Lecture 7
Lecture 7
 
Lecture 8
Lecture 8Lecture 8
Lecture 8
 
Lecture 9
Lecture 9Lecture 9
Lecture 9
 
Lecture 10
Lecture 10Lecture 10
Lecture 10
 
Lecture 11
Lecture 11Lecture 11
Lecture 11
 
Lecture 12
Lecture 12Lecture 12
Lecture 12
 
Lecture 13
Lecture 13Lecture 13
Lecture 13
 
Lecture 14
Lecture 14Lecture 14
Lecture 14
 
Chap15
Chap15Chap15
Chap15
 

Lecture 2

  • 1. IT102 Lecture 2 Багш Г.Төгөлдөрбаяр
  • 2.  Review  Variables and data types  Operators  Epilogue
  • 3. Review: C programming language  Cи хурдтай, авсаархан, флатформоос үл хамаарсан програмчлалын хэл  Си нь систем програмчлалд ашиглагддаг(Жнь: Компайлар, үйлдлийн системүүд, өгөгдлийн баазын системүүд, микроконтоллерууд)  Си маш эмх цэгцтэй, өөрийн гэсэн хэлбэртэй, бүтэцлэгдсэн хэл  Ritchie – “ Си хачин жигтэй, гайхамшигтай том амжилт”
  • 4.  Хувьсагч зарлалт(Variable declarations): int i; float f;  Intialization: char c=‘A’; int x=y=10;  Operators: +,-,*,/,%  Expressions: int x,y,z; x=y*2+z*3;  Функц (Function): int factorial (int n); /*функц int утга авч, int утга буцаана*/
  • 5.  Review  Variables and data types  Operators  Epilogue
  • 6. Тодорхойлолтууд - definitions Өгөгдлийн төрөл:  Обьектийн санах ой нь өгөгдлийн төрлийг тодорхойлж ямар утга авах мөн ямар үйлдлүүд хийгдэж болохыг тодорхойлдог Операторууд:  Обьектуудыг хэрхэн удирдахыг операторууд заадаг ( Жнь: Тоон операторууд, тэмдэгт операторууд)  Оператор unary(Жнь -,++), binary (Жнь +,-,*,/), ternary (?:)
  • 7. Илэрхийлэл (Expression):  програмчлалын хэлний хувьд илэрхийлэл гэдэг нь утга, хувьсагч, операторууд болон функцуудийн комбинаци юм (хослол) Хувьсагч:  Хувьсаг нь нэрэн холбоос, утган заалт бүхий системийн санах ойд хадгалагдах програмчлалын чухал нэгж int x=0, y=0; y=x+2;  x, y бол хувьсагч  y=x+2 илэрхийлэл  + бол оператор
  • 8. Variable names Нэр өгөх дүрэм:  Variable names can contain letters,digits and _  Variable names should start with letters.  Keywords (e.g., for,while etc.) cannot be used as variable names  Variable names are case sensitive. int x; int X declares two different variables Pop quiz (correct/incorrect):  int money$owed; (incorrect: cannot contain $)  int total_count (correct)  int score2 (correct)  int 2ndscore (incorrect: must start with a letter)  int long (incorrect: cannot use keyword)
  • 9. Өгөгдлийн төрөл болон хэмжээ Си хэл өгөгдлийн тун цөөхөн төрөлтэй  Тоон (int,float,double) /* Numeric*/  Тэмдэгт (char) /*character*/  Хэрэглэгчийн тодорхойлсон (struct, union)/*user defined*/
  • 10. Өгөгдлийн төрөл болон хэмжээ Дараах өгөгдлийн төрлийг бид түлхүү хэрэглэнэ  unsigned хувилбар нь signed хувилбарын хязгаараас 2 дахин их утга авдаг  unsigned, signed хоёрын ялгаа зөвхөн арифметик илэрхийллийн үед л ажиглагддаг  2008 онд yahoo корпорацийн Flickr unsigned long (2^32-1) –с тэмдэгт төрөлрүү шилжсэн
  • 11. Big endian vs. Little endian Хувьсагчийн санах ойд эзэллэх хэмжээ нь машин / компайлер-с хамааралтай . Гэхдээ дараах хамаарал бол хууль мэт өөрчлөгддөггүй: sizeof(char)<sizeof(short)<=sizeof(int)<=sizeof(long) болон sizeof(char)<sizeof(short)<=sizeof(float)<=sizeof(double) “NUXI” problem: хэд хэдэн byte-с тогтох тоон төрлийн хувьд бие даасан byte-уудын дараалан байрлах дараалал чухал. Аливаа хэрэгсэлийн ариктектур дээр тулгуурлан “big endian” , “little endian” гэсэн хоёр хэлбэр байдаг
  • 12. Big endian vs. Little endian(үргэлжлэл)  Big endian: эхэнд тэмдэглэгдсэн битүүд( the most significant bits - MSBs )бага хаяганд бүртгэгдэнэ. Том хүчин чадал бүхий компьютерүүд энэ хэлбэр дээр тулгуурласан байдаг. Мөн сүлжээний хаглалт ийм зарчмаар явдаг учраас сүлжээний дараалал гэж дууддаг (network order)  Little endian: Сүүлд тэмдэглсэгдсэн битүүд бага хаяг дээр бүртгэгдэнэ. Энэ нь Х86 дэмждэг процессорууд дээр хэрэглэгддэг(Least significant bits - LSBs)
  • 13. Тогтмол хэмжигдэхүүн - Constants  Тогтмол утга хувьсагчид өгч түүнийг илэрхийлэлд шууд ашигладаг.
  • 15. Зарлалт - Declaration Зарлалтын энгийн хэлбэр нь төрөл хувьсагчийн-нэр [=утга] Жишээ нь  char x; /*uninitialilzed*/  char x = ‘A’ ; /*intialized to ‘A’*/  char x=‘a’, y=‘b’; /*олон хувьсагчид анхны утга олгох*/  char x= y=‘z’; /*давхар утга олголт*/
  • 16. Pop quiz II  int x=017;int y=12; /∗is x>y?∗/  short int s=0xFFFF12; /∗correct?∗/  char c=−1;unsigned char uc=−1; /∗correct?∗/  puts("hel"+"lo"); puts("hel""lo");/∗which is correct?∗/  enum sz{S=0,L=3,XL}; /∗what is the value of XL?∗/  enum sz{S=0,L=−3,XL}; /∗what is the value of XL?∗/
  • 17.  Review  Variables and data types  Operators  Epilogue
  • 20. Хамаарлийн операторууд – Relational Operators Хамаарлын операторууд аливаа хоёр операндыг харьцуулан ‘boolean’ үр дүн үзүүлдэг. Си-д ямар нэг тэг биш утгууд бүгд ‘үнэн’ гэж ойлгогддог харин 0 нь худал болно.
  • 21. Хамаарлийн операторууд – Relational Operators Тэнцүү эсэхийг шалгах бол хамгийн түгээмэл хэрэглэгддэг хамаарлын оператор.  Анхаар: Тэнцүү эсэхийг шалгах “=” оператор утга олгох “=” оператораас ялгаатай  Анхаар: “==” оператор бутархай хувьсагч дээр найдваргүй, яагаад гэвэл нарийвчлал шалгах хязгаартай.
  • 22. Логик операторууд – Logical operators илэрхийлэлд орсон аливаа утга өмнө нь заавал зарлагдсан буюу тодорхойлогдсон байх ёстой. Эс бөгөөс хүсээгүй үр дүнг үзүүлнэ. Жишээ нь  (3==3) || ((c=getchar())==‘y’). Хоёр дахь илэрхийлэл бодогдохгүй  (0) && ((x=x+1)>0) . Мөн адил хоёр дахь илэрхийлэл бодогдохгүй
  • 23. Ихэсгэх ба багасгах операторууд - Increment and decrement operators Ихэсгэх болон багасгах нь адилхан арифметик оператор. Си хоёр төрлийн товчлолоор хангаж өгдөг Postfix  х++ бол х=х+1 товчлол  х – – бол х=х-1 товчлол  y=x++ бол y=x; x=x+1 товчлол. х утга ихсэхээс өмнө бодогдоно  y=x– – бол y=x; x=x – 1товчлол. х утга нь ихсэхээс өмнө бодогдоно
  • 24. Ихэсгэх ба багасгах операторууд - Increment and decrement operators Prefix:  ++x is a short cut for x=x+1  --х is a short cut for x=x−1  y=++x is a short cut for x=x+1;y=x;. x ихэссэний дараа бодогдоно  y=-- x is a short cut for x=x-1;y=x;. x багассаны дараа бодогдоно
  • 25. Битийн операторууд – Bitwise operators Тэмдэглэх нь:  AND бол 2 операнд хоёулаа үнэн үед үнэн  OR ямар нэг операнд үнэн байхад л үнэн  XOR яг нэг операнд үнэн байхад үнэн
  • 26. Утга олгох оператор – assignment operators Си програмчлалд өргөн хэрэглэгддэг хэлбэр бол хувьсагч = хувьсагч оператор илэрхийлэл  x=x+1  x=x∗10  x=x/2 Си мөн эмхтгэсэн утга олгох үйлдлүүдийг дэмжинэ  x+=1 /∗is the same as x=x+1∗/  x−=1 /∗is the same as x=x−1∗/  x∗=10 /∗is the same as x=x∗10 ∗/  x/=2 /∗ is the same as x=x/2  x%=2 /∗is the same as x=x%2
  • 27. Нөхцөлт илэрхийлэл – Conditional Expression Дараах хэлбэр си хэлэнд өргөн тохиолдоно. (Бараг дандаа) : if(нөхцөл) x=<илэрхийлэл a>; else x=<илэрхийлэл б>; Ternary operator : ‘?:’ Код хэрхэн богинохон мөн ойлгомтой болсон байгааг сайн ажиглаарай. Ийм хэлбэртэйгээр кодыг богино болгохыг англиар Syntatic sugar гэдэг
  • 28.  Review  Variables and data types  Operators  Epilogue
  • 29.
  • 30. Төрөл хөрвүүлэлт – Type conversions Хувьсагчуудыг орноос хойш өндөр нарийвчлалтай болгох үед өгөгдөл урьдчилан бэлтгэгдэнэ. Энэ үйлдлийг компайлер холилдсон төрөлтэй илэрхийллээр автоматаар хийнэ.(Си хэлэнд илэрхийлэл гэж юу вэ гэдгийг бид өмнө нь тодорхойлсон) int i; float f; f=i +3.14159; / ∗ i is promoted to float , f=(float)i+3.14159 ∗ / Компайлер автоматаар хийдэг өөр нэг хөрвүүлэлт бол ‘char’ –> ‘int’. Энэ нь харьцуулалтыг боломжтой болгоод зогсохгүй тэмдэгтүүд дээр бодолт хийх боломжтой болгоно. isupper =(c>=’A’ && c<=’Z’)?1:0; / ∗ с болон тэмдэгт тогмол хэмжигдэхүүнүүд маань int-руу хөрвүүлэгдэнэ∗ / if (! isupper ) c=c−’a’+’A’ ;/ ∗ хасах үйлдэл хийгдэх боломжтой. Учир нь бүхэл тооруу хөрвүүлэлт энд хийгдэх юм ∗ /
  • 31.  ++,–,(cast),sizeof have the highest priority• *,/,% have higher priority than +,  ==,!= have higher priority than &&,||  assignment operators have very low priority Use () generously to avoid ambiguities or side effects associated with precendence of operators.  y=x∗3+2 /∗same as y=(x∗3)+2∗/  x!=0 && y==0 /∗same as (x!=0) && (y==0)∗/  d= c>=’0’&& c<=’9’/∗same as d=(c>=’0’) && (c<=’9’)∗/