Операция(амал белгилари) ва ифодалар
Операция ёки амал белгилари - бу операндлар устида белгиланган тартибда бирор амални бажарувчи белги ёки белгилар кетма кетлигидир.
Ифода – маълум бир ҳисоблаш қоидасига асосан амал белгилари билан боғланган операндлардир. Ифодада амал белгилари ёрдамида боғланган операндлар иштирок этади. Операндлар ўзгармас ёки ўзгарувчи ёки функция бўлиши мумкин.
Масалан, a + 2. Бу операндлар + белгиси билан боғланган ифодадир, а ва 2 эса операнд
С# нинг амал белгилари қуйидаги 4 жадвалда келтирилган.
4- жадвал. C# нинг амал белгилари
|
Категорияси
|
Амал белгиси
|
Номланиши
|
Биринчи даража
|
x()
|
Функция, услуб ёки делегатни чақириш
|
x[]
|
Бирор тўплам, массив ёки мажмуа элементига мурожаат
|
x++
|
Постфиксли инкремент
|
x--
|
Постфиксли декремент
|
new
|
Хотирадан жой белгилаш
|
typeof
|
Типни аниқлаштириш
|
checked
|
Текширилувчи код
|
unchecked
|
Текширилмайдиган код
|
Унар
|
+
|
Унар қўшиш амали
|
-
|
Унар айириш амали
|
!
|
Мантиқий айириш(эмас)
|
~
|
Разряд бўйича айириш
|
++x
|
Префиксли инкремент
|
--x
|
Префиксли декремент
|
(тип)x
|
Типни ўзгартириш
|
Мультипликатив
|
*
|
Кўпайтириш
|
/
|
Бўлиш
|
%
|
Қолдиқли бўлиш
|
Аддитив
|
+
|
Қўшиш
|
-
|
Айириш
|
Суриш
|
<<
|
Чапга суриш
|
>>
|
Ўнгга суриш
|
Солиштириш(таққослаш) ва типни текшириш
|
<
|
Кичик
|
>
|
Катта
|
<=
|
Кичик ёки тенг
|
>=
|
Катта ёки тенг
|
is
|
Тегишлилик
|
as
|
Келтириш, тенглаш
|
Тенгликни текшириш
|
==
|
Тенг
|
!=
|
Тенг эмас
|
Мантиқий разрядли
|
&
|
Разрядли конъюнкция (ВА)
|
|
Разрядли истисно этувчи ЁКИ амали
|
|
|
Разрядли дизъюнкция (ЁКИ)
|
Мантиқий
|
&&
|
Мантиқий ВА
|
||
|
Мантиқий ЁКИ
|
Шартли
|
?:
|
Шартли операция
|
Ўзлаштириш
|
=
|
Ўзлаштириш
|
*=
|
Кўпайтириб ўзлаштириш
|
/=
|
Бўлиб ўзлаштириш
|
%=
|
қолдиқли бўлиб ўзлаштириш
|
+=
|
Қўшиб ўзлаштириш
|
-=
|
Айириб ўзлаштириш
|
<<=
|
чапга суриб ўзлаштириш
|
>>=
|
ўнгга суриб ўзлаштириш
|
&=
|
разрядли ВА амалини бажариб ўзлаштириш
|
|
разрядли истисно этувчи ЁКИ амалини бажариб ўзлаштириш
|
|=
|
разрядли ЁКИ амалини бажариб ўзлаштириш
|
4 – жадвалда келтирилган амал белгилари - ифодаларда бажарилиш кетма-кетлиги камайиш тартибида жойлаштирилган, яъни аввал юқорида жойлшаган категориядаги амаллар бажарилади.
Агар ифодада бир нечта битта категорияга мансуб операциялар кетма-кет жойлашган бўлса, ўзлаштириш ва шартли амаллар ўнгдан чапга қараб бажарилади, қолган амаллар эса чапдан ўнгга қараб бажарилади. Амалларнинг бажарилиш кетма-кетлигини бузиш учун оддий қавслардан фойдаланилади.
Массивлар
Массив бир хил типли элементлардан ташкил топган чекланган тўпламдир. Массивнинг ҳар бир элементи алоҳида ўзгарувчи ёки ўзгармас бўлиши мумкин. Массивда барча элементларнинг номлари массив номи билан бир хил бўлади, фақатгина тартиб номери билан фарқ қилади. Ушбу тартиб номерлари элемент индекси деб юритилади. Массивлардан фойдаланишдан аввал уларни эълон қилиб олинади. Масалан, 10 бутун типли элементга эга массив қуйидагича эълон қилинади:
int[] w = new int[10];
Бу ерда:
int- эълон қилинаётган массив типи;
[] – эълон қилинаётган катталик массив эканлигини ва унинг ўлчамини билдирувчи белги;
w – массив номи;
new – хизматчи сўз бўлиб, хотирадан янги яратилаётган массив учун жой ажратилишини таъминлайди. int[10] – хотирадан ажратилувчи жой. Ушбу мисолда new int[10] хотирадан 10 та бутун типли элемент учун жой ажаратиб, уларни ноллар билан тўлдиради.
string[] z = new string[100];
Ушбу мисолда string типидаги 100 та элементдан иборат z номли массив эълон қилиняпти. Массивнинг ҳар бир элементи у матнли типда бўлганлиги сабабли null лар билан тўлдирилади.
Массив элементлари сони массивнинг ўлчамини белгилайди. Массив ўлчамини уни эълон қилингандан сўнг ўзгартириб бўлмайди. Массив ўлчамини манфий сон билан ва ҳақиқий сон билан бериб бўлмайди. Массив элементарининг индекси(рақамланиши) ҳар доим 0 дан бошланади, шу сабабли массив элементининг энг катта индекси ҳар доим унинг элементлари сонида 1 та кам бўлади.
Массив элементига мурожаат қилинганда массив номдан кейинги тўртбурчак қавс ичида элемент индекси(номери) ёзилади. Масалан:
int[] nums = new int[4];
nums[0] = 1;
nums[1] = 2;
nums[2] = 3;
nums[3] = 5;
Console.WriteLine(nums[3]);
Агар массивнинг мавжуд бўлмаган элементига мурожаат қилинса ёки массив ўлчами чегарасидан чиқиб кетилса IndexOutOfRangeException типидаги хатолик юзага келади.
Бир хил типга эга бўлган массивлардан бири-бирини эълон қилишда фойдаланиш мумкин. Бу холда массив билан эълон қилинган янги массив элементлари типи ишоратли тип сифатида қабул қилинади. Бундай холда ҳар икки массив тенг эмас балки, битта умумий массив бўлади. Масалан:
int[] a = new int[10];
int[] b = a; // b ва a битта массивдир
C# да массивларнинг 3 хил тури билан ишланади: бир ўлчовли массивлар, кўп ўлчовли тўртбўрчак массивлар ва поғонасимон массивлар.
Бир ўлчовли массивлар Бир ўлчовли массивлардан дастурлашда қолганларига нисбатан кўпроқ қўлланилади. Бир ўлчовли массивларни турли хил эълон қилиш мумкин:
тип[] массив_номи;
тип[] массив_номи = new тип [ ўлчами ];
тип[] массив_номи = { элементлар қиймати-инициализаторлар };
тип[] массив_номи = new тип [] { инициализаторлар };
тип[] массив_номи = new тип [ ўлчами ] { инициализаторлар };
Мисоллар:
// 1 элементлар берилмаган, инициализация қилинмаган. Массивдан элементлар инициализация қилинмагунча фойдаланиб бўлмайди.
int[] a;
// 2 Элементлар қиймати 0 га тенг
int[] b = new int[4];
// 3 new автоматик бажарилади ва элементлар сонидан келиб чиқиб ўлчам белгиланади
int[] c = { 61, 2, 5, -9 };
// 4 элементлар сонидан келиб чиқиб ўлчам автоматик равишда аниқланади
int[] d = new int[] { 61, 2, 5, -9 };
// 5 массив фойдаланувчи томонидан тўлиқ ёзилган
int[] e = new int[4] { 61, 2, 5, -9 };
13.2.1 листингда 6 та бутун типли элементлардан ташкил топган массивнинг манфий қийматли элементлари йиғиндиси, сони ва массивнинг энг катта элементини топиш дастури келтирилган.
using System;
namespace ConsoleApplication1
{ class Class1
{
static void Main()
{
const int n = 6;
int[] a = new int[n] { 3, 12, 5, -9, 8, -4 };
Console.WriteLine( "Жорий массив:" );
for ( int i = 0; i < n; ++i )
Console.Write( "\t" + a[i] );
Console.WriteLine();
long sum = 0; // манфий элементлар йиғиндиси
int num = 0; // манфий элементлар сони
for ( int i = 0; i < n; ++i )
if ( a[i] < 0 )
{
sum += a[i];
++num;
}
Console.WriteLine( "Манфий элементлар йиғиндиси = " + sum );
Console.WriteLine( " Манфий элементлар сони = " + num );
int max = a[0]; // Энг катта элемент
for ( int i = 1; i < n; ++i )
if ( a[i] > max ) max = a[i];
Console.WriteLine( " Энг катта элемент = " + max );
}
}
}
Do'stlaringiz bilan baham: |