СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

С dasturlash tilining afzalliklari

Категория: Информатика

Нажмите, чтобы узнать подробности

Си структурали дастурлашнинг тўлиқ операторлар тўпламини таъминлайди.

Просмотр содержимого документа
«С dasturlash tilining afzalliklari»

C+ C++ Turbo C C# Borland C_Builder

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 Ҳарфлар ва рақамлар – константалар, идентификаторлар ва калит сўзларни эълон қилишда ишлатилади.

Ҳарфлар ва рақамлар

● Катта лотин ҳарфлари:

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;

Операциялар

Операциялар — бу символларнинг махсус комбинацияси бўлиб ҳар хил катталикларни ўгиришдаги ҳаракатларни амалга оширишда фойдаланилади.

Компилятор ушбу комбинацияларнинг ҳар бирини token лексемаси деб аталадиган мустақил бирлик сифатида интерпритация қилади.

sizeof операцияси бундан мустасно, у символ эмас калит сўздир

/* ………….*/

i=a+b*c;

= ўнгга силжиш билан ўзлаштириш чапга силжиш билан ўзлаштириш &= бит бўйича ВА ҳамда ўзлаштириш |= бит бўйича боғлиқ ЁКИ ҳамда ўзлаштириш ! Мантиқий ЭМАС ~ битли тўлдириш + қўшиш ! айириш * кўпайтириш / бўлиш % қолдиқ чапга силжиш ўнгга силжиш кичик кичик ёки тенг катта = катта ёки тенг == тенг != тенг эмас " width="640"

Символлар ва уларнинг маънолари

& бит бўйича ВА,

| бит бўйича боғлиқ ЁКИ

^ бит бўйича боғлиқ бўлмаган ЁКИ

&& мантиқий ВА

|| мантиқий ЁКИ

кетма-кет бажариш (вергул)

?: шартли ифода операцияси

++ Инкремент

!! Декремент

= оддий ўзлаштирш

+= қўшиш ва ўзлаштириш

!= айириш ва ўзлаштириш

*= кўпайтириш ва ўзлаштириш

/= бўлиш ва ўзлаштириш

%= қодиқ ва ўзлаштириш

= ўнгга силжиш билан ўзлаштириш

чапга силжиш билан ўзлаштириш

&= бит бўйича ВА ҳамда ўзлаштириш

|= бит бўйича боғлиқ ЁКИ ҳамда ўзлаштириш

! Мантиқий ЭМАС

~ битли тўлдириш

+ қўшиш

! айириш

* кўпайтириш

/ бўлиш

% қолдиқ

чапга силжиш

ўнгга силжиш

кичик

кичик ёки тенг

катта

= катта ёки тенг

== тенг

!= тенг эмас

Лексемалар Компилятор дастурни қайта ишлаганда уни лексема деб аталадиган символлар гуруҳига ажратади. Лексема — бу компилятор учун муайян маънога эга бўлган ва келажакда яна бўлакларга бўлинмайдиган дастурнинг матн бирлигидир.  Операциялар, константалар, идентификаторлар ва калит сўзлар лексемага мисол бўла олади. Квадрат қавс, фигурали қавс, учбурчак қавс, айлана қавс ва вергул каби пунктуация белгилари лексема ҳисоблаади. Лексемалар чегараси пробелли белгилар ва бошқа лексемалар билан белгиланади. Мисол учун қуйидаги ҳисоблашни кўрамиз: i+++j Бу мисолда компилятор аввал қўшишлардан энг узун ва бажарилиши мумкин бўлган операция ++ , ва сўнгра қолган белгилар +, ёки бошқаларни амалга оширади. Қўшиш амали (i++)+(j) , каб амалга ошади. (i)+(++j) каби эмас. Бундай ҳолларда пробелли(бўшлиқ) символлар ва бошқа ажратиш усулларидан фойдаланиш керак.

Лексемалар

Компилятор дастурни қайта ишлаганда уни лексема деб аталадиган символлар гуруҳига ажратади.

Лексема — бу компилятор учун муайян маънога эга бўлган ва келажакда яна бўлакларга бўлинмайдиган дастурнинг матн бирлигидир.

Операциялар, константалар, идентификаторлар ва калит сўзлар лексемага мисол бўла олади.

Квадрат қавс, фигурали қавс, учбурчак қавс, айлана қавс ва вергул каби пунктуация белгилари лексема ҳисоблаади. Лексемалар чегараси пробелли белгилар ва бошқа лексемалар билан белгиланади.

Мисол учун қуйидаги ҳисоблашни кўрамиз:

i+++j

Бу мисолда компилятор аввал қўшишлардан энг узун ва бажарилиши мумкин бўлган операция ++ , ва сўнгра қолган белгилар +, ёки бошқаларни амалга оширади.

Қўшиш амали (i++)+(j) , каб амалга ошади. (i)+(++j) каби эмас.

Бундай ҳолларда пробелли(бўшлиқ) символлар ва бошқа ажратиш усулларидан фойдаланиш керак.

Дастурнинг бажарилиши  Ҳар бир дастур асосий дастурий функцияга эга. Си да асосий дастурий функция main билан номланиши керак . main функцияси дастур бажарилишининг старт нуқтаси ҳисобланади ва одатда бошқа функцияларни чақиришни ташкиллаштирган ҳолда дастур бажарилишини бошқариб боради. Функция бажарилиш жараёнида бошқарувни return оператори ёки айнан ўша функциянинг тугалланиши билан қайтаради. Барча функциялар шу жумладан main ҳам, хусусиятлари билан эълон қилиниши мумкин. int main (void) int main (void)

Дастурнинг бажарилиши

Ҳар бир дастур асосий дастурий функцияга эга. Си да асосий дастурий функция 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 +-

ТИПЛАР

ТИПЛАР

Бутун сонли типларга қуйида номлари келтирилган асосий типлар тегишли:

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

Маълумот типлари

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

Ўнли нуқтаси силжийдиган ёки вергулли сонлар типларига қуйидаги типлар ва модификаторларнинг биргаликдаги ишлатилиши мисол бўла олади:

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

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.

Калит сўзлар:

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ифода ! ! ифода

ОПЕРАТОР

ВА

БЕЛГИ

&&

ЁКИ

МИСОЛ

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; Биринчи қаторда хотирада маълум бир майдонни эгаллайдиган ўзгарувчилар(қиймати ўзгарайди), иккинчисида эса макрос.

Константалар

const

Агар ўзгарувчи const калит сўзи билан эълон қилинган бўлса, демак, у ўзгариши мумкин эмас. Ўзгарувчининг константа билан белгиланиши унга функциянинг қандайдир аргументини ўзлаштириш имконини бермайди. Чунки ушбу аргументни кейинчалик ўзгармаслиги кафолатланмаган.

мисол.

const int j = 17; // Бутун константа

j = 29; // мумкин эмас, қиймат ўзгармаслиги керак

const int i; // мумкин эмас, бошланғич қиймат берилмаган

const int a=17;

const ва #define

!

!

Қуйидаги икки қатор эквивалент эмас:

const int i = 17;

#define i 17;

Биринчи қаторда хотирада маълум бир майдонни эгаллайдиган ўзгарувчилар(қиймати ўзгарайди), иккинчисида эса макрос.