C+
C++
Turbo C
C#
Borland C_Builder
Си дастурлаш тилининг афзаликлари:
- ● Си структурали дастурлашнинг тўлиқ операторлар тўпламини таъминлайди.
- ● Си ноодатий операцияларнинг каттагина тўпламини таклиф қилади.
Си нинг кўпгина буйруқлари машина буйруқларига мос тушади ва шунинг учун тўғридан-тўғри трансляция амалга ошади.
- ● Си ўзгарувчи ва функцияларга кўрсаткичларни қўллаб қувватлайди.
Дастур объектига кўрсаткич шу объектнинг машина адресига мос келади.
Ҳарфлар ва рақамлар
● Катта лотин ҳарфлари:
A B C D E F G H I J K L M N O P Q R T U V W X Y Z
● Кичик лотин ҳарфлари :
a b c d e f g h i j k l m n o p q r t u v w x y z
● араб рақамлари:
0 1 2 3 4 5 6 7 8 9
Ҳарфлар ва рақамлар – константалар, идентификаторлар ва калит сўзларни эълон қилишда ишлатилади.
Операциялар
Операциялар — бу символларнинг махсус комбинацияси бўлиб ҳар хил катталикларни ўгиришдаги ҳаракатларни амалга оширишда фойдаланилади.
Компилятор ушбу комбинацияларнинг ҳар бирини token лексемаси деб аталадиган мустақил бирлик сифатида интерпритация қилади.
sizeof операцияси бундан мустасно, у символ эмас калит сўздир
/* ………….*/
i=a+b*c;
= ўнгга силжиш билан ўзлаштириш чапга силжиш билан ўзлаштириш &= бит бўйича ВА ҳамда ўзлаштириш |= бит бўйича боғлиқ ЁКИ ҳамда ўзлаштириш ! Мантиқий ЭМАС ~ битли тўлдириш + қўшиш ! айириш * кўпайтириш / бўлиш % қолдиқ чапга силжиш ўнгга силжиш кичик кичик ёки тенг катта = катта ёки тенг == тенг != тенг эмас " width="640"
Символлар ва уларнинг маънолари
& бит бўйича ВА,
| бит бўйича боғлиқ ЁКИ
^ бит бўйича боғлиқ бўлмаган ЁКИ
&& мантиқий ВА
|| мантиқий ЁКИ
‘ кетма-кет бажариш (вергул)
?: шартли ифода операцияси
++ Инкремент
!! Декремент
= оддий ўзлаштирш
+= қўшиш ва ўзлаштириш
!= айириш ва ўзлаштириш
*= кўпайтириш ва ўзлаштириш
/= бўлиш ва ўзлаштириш
%= қодиқ ва ўзлаштириш
= ўнгга силжиш билан ўзлаштириш
чапга силжиш билан ўзлаштириш
&= бит бўйича ВА ҳамда ўзлаштириш
|= бит бўйича боғлиқ ЁКИ ҳамда ўзлаштириш
! Мантиқий ЭМАС
~ битли тўлдириш
+ қўшиш
! айириш
* кўпайтириш
/ бўлиш
% қолдиқ
чапга силжиш
ўнгга силжиш
кичик
кичик ёки тенг
катта
= катта ёки тенг
== тенг
!= тенг эмас
Лексемалар
Компилятор дастурни қайта ишлаганда уни лексема деб аталадиган символлар гуруҳига ажратади.
Лексема — бу компилятор учун муайян маънога эга бўлган ва келажакда яна бўлакларга бўлинмайдиган дастурнинг матн бирлигидир.
Операциялар, константалар, идентификаторлар ва калит сўзлар лексемага мисол бўла олади.
Квадрат қавс, фигурали қавс, учбурчак қавс, айлана қавс ва вергул каби пунктуация белгилари лексема ҳисоблаади. Лексемалар чегараси пробелли белгилар ва бошқа лексемалар билан белгиланади.
Мисол учун қуйидаги ҳисоблашни кўрамиз:
i+++j
Бу мисолда компилятор аввал қўшишлардан энг узун ва бажарилиши мумкин бўлган операция ++ , ва сўнгра қолган белгилар +, ёки бошқаларни амалга оширади.
Қўшиш амали (i++)+(j) , каб амалга ошади. (i)+(++j) каби эмас.
Бундай ҳолларда пробелли(бўшлиқ) символлар ва бошқа ажратиш усулларидан фойдаланиш керак.
Дастурнинг бажарилиши
Ҳар бир дастур асосий дастурий функцияга эга. Си да асосий дастурий функция main билан номланиши керак . main функцияси дастур бажарилишининг старт нуқтаси ҳисобланади ва одатда бошқа функцияларни чақиришни ташкиллаштирган ҳолда дастур бажарилишини бошқариб боради.
Функция бажарилиш жараёнида бошқарувни return оператори ёки айнан ўша функциянинг тугалланиши билан қайтаради.
Барча функциялар шу жумладан main ҳам, хусусиятлари билан эълон қилиниши мумкин.
int main (void)
int main (void)
Блок — бу операторлар гуруҳидир. Улар эълонлар ва операторлардан ташкил топиши мумкин.
Функциялар тузилиши ўзида таркибий операторлар тўпламини акс эттиради. Шундай қилиб, функциялар блокли тузилмага эга бўлиши, блоклар ўз навбатида ички блокларга эга бўлиши мукин.
Блоклар ичидаги эълонлар ва белгиланишлар ички даража ҳисобланди. Блоклар ташқарисидаги ташқи даража да бўлади. Ўзгарувчилар ички ва ташқи даражада эълон қилиниши мумкин. Бироқ функциялар фақатгина ташқи даржада белгиланиши мумкин.
{
{
}
}
Функциялар
Функциялар қаерда эълон қилинишидан қатъий назар глобал “ҳаёт вақти” га эга. Ташқи даражада эълон қилинган ўзгарувчилар ҳар боим глобал “ҳаёт вақти” га, ички даражада эълон қилинган ўзгарувчилар эса доимо маҳаллий “ҳаёт вақти” га эга бўлади.
ТИПЛАР
ТИПЛАР
Бутун сонли типларга қуйида номлари келтирилган асосий типлар тегишли:
char short int long
Бутун сонли типлар қуйидаги тип модификаторлари билан биргаликда ишлатилиши мумкин:
signed unsigned
Бу модификаторлар аълумотни тақдим этиш шаклини ўзгартиради, лекин унга ажратиладиган хотира майдони ўлчамига таъсир қилмайди.
signed типи модификатори шуни кўрсатадики, ўзгарувчи ҳам мусбат ҳам манфий белгиларни қабул қила олади. Бунда хотира майдонининг энг чапги бити ишорани тақдим этиш учун ишлатилиши мумкин. Агар ушбу битда 0 ўрнатилган бўлса, ўзгарувчи ишораси мусбат, 1 ўрнатилган бўлса манфий деб ҳисобланади.
Unsigned типи модификтори ўзгарувчи манфий бўлмаган ишорани қабул қилишин кўрсатади. Бунда хотира майдонининг энг чарги бити бошқа битлар сингари маълум бир маълумотни сақлаш учун хизмат қилади.
0 1 0 1 0 1 0 1
1 0 1 0 1 0 1
+-
Маълумот типлари
signed char
Байтлар
1
unsigned char
Битлар
Min
8
1
signed short
Max
- 128
8
2
enum
127
2
0
16
unsigned short
signed int
2
16
-32768
255
-32768
32767
16
2
unsigned int
32767
0
16
signed long
2
unsigned long
4
16
-32768
65535
0
32767
32
4
65535
-2147483648
32
2147483647
0
4294967295
Ўнли нуқтаси силжийдиган ёки вергулли сонлар типларига қуйидаги типлар ва модификаторларнинг биргаликдаги ишлатилиши мисол бўла олади:
float long double
297.7 2.977*10**2 2.977E2
Ва яна бир мисол…
0.002355 2.355*10**-3 2.355E-3
Маълумот типлари
float
Байтлар
double
Битлар
4
long double
Min
8
32
10
3.4E-38
64
Max
1.7E-308
3.4E+38
80
1.7E+308
3.4E-4932
3.4E+4932
char, signed char, unsigned char, short, signed short, unsigned short, signed, unsigned short int, signed short int, int, signed int, unsigned int, long, signed long, unsigned long, long int, signed long int, unsigned long int
Калит сўзлар:
asm auto break case catch char class const continue default do double else enum extern float for friend goto if inline int long new operator private protected public register return short signed sizeof static struct switch template this throw try typedef typeid union unsigned virtual void volatile while.
ОПЕРАТОР
ВА
БЕЛГИ
&&
ЁКИ
МИСОЛ
1ифода && 2ифода
||
ИНКОР
1ифода||2ифода
!
! ифода
Константалар
const
Агар ўзгарувчи const калит сўзи билан эълон қилинган бўлса, демак, у ўзгариши мумкин эмас. Ўзгарувчининг константа билан белгиланиши унга функциянинг қандайдир аргументини ўзлаштириш имконини бермайди. Чунки ушбу аргументни кейинчалик ўзгармаслиги кафолатланмаган.
мисол.
const int j = 17; // Бутун константа
j = 29; // мумкин эмас, қиймат ўзгармаслиги керак
const int i; // мумкин эмас, бошланғич қиймат берилмаган
const int a=17;
const ва #define
!
!
Қуйидаги икки қатор эквивалент эмас:
const int i = 17;
#define i 17;
Биринчи қаторда хотирада маълум бир майдонни эгаллайдиган ўзгарувчилар(қиймати ўзгарайди), иккинчисида эса макрос.