4.2. Operatsiya(amal belgilari) va ifodalar Operatsiya yoki amal belgilari - bu operandlar ustida belgilangan tartibda biror amalni bajaruvchi belgi yoki belgilar ketma ketligidir.
Ifoda – ma’lum bir hisoblash qoidasiga asosan amal belgilari bilan bog‘langan operandlardir. Ifodada amal belgilari yordamida bog‘langan operandlar ishtirok etadi. Operandlar o‘zgarmas, o‘zgaruvchi yoki funksiya bo‘lishi mumkin.
Masalan, a + 2. Bu operandlar + belgisi bilan bog‘langan ifodadir, a va 2 esa operand.
C# ning amal belgilari quyidagi 4. 1 jadvalda keltirilgan.
4.1- jadval.
C# ning amal belgilari
razryadli istisno etuvchi YOKI amalini bajarib o‘zlashtirish
|=
razryadli YOKI amalini bajarib o‘zlashtirish
4.1 – jadvalda keltirilgan amal belgilari - ifodalarda bajarilish ketma-ketligi kamayish tartibida joylashtirilgan, ya’ni avval yuqorida joylashgan kategoriyadagi amallar bajariladi.
Agar ifodada bir nechta bitta kategoriyaga mansub operatsiyalar ketma-ket joylashgan bo‘lsa, o‘zlashtirish va shartli amallar o‘ngdan chapga qarab bajariladi, qolgan amallar esa chapdan o‘ngga qarab bajariladi. Amallarning bajarilish ketma-ketligini buzish uchun oddiy qavslardan foydalaniladi.
4.3. C# da asosiy operatsiyalar.Inkrement va dekrement
Inkrement va dekrement amallari operandni 1 qiymatga oshirish va kamaytirish uchun xizmat qiladi. Ularning ikki xil formasi bor bo‘lib, birinchisi prefiksli forma: bunda amal belgisi operandning old tarafida joylashadi, ikkinchisi postfiksli forma bo‘lib: bunda amal belgisi operanddan keyin joylashadi. Prefiksli formada avval ta’kidlab o‘tganimizdek, birinchi navbatda operand qiymati 1 birlikka oshiriladi(kamaytiriladi), so‘ngra operandning yangi hosil bo‘lgan qiymatidan ifodada foydalaniladi. Postfiksli formada esa operand shu jarayongacha bo‘lgan qiymati ifodada hisoblanib bo‘lingandan so‘ng bir birlikka orttiriladi (kamaytiriladi).
Standart inkrement va dekrement amallaridan butun, belgili va haqiqiy tiplarda foydalanish mumkin.
new operatsiyasi new operatsiyasi yangi obyekt yaratish uchun xizmat qiladi. Sintaksisi:
new tip ( [ argumentlar ] )
Misol:
object z = new object();
int i = new int(); // bu xolat int i = 0; ga teng kuchli. new operatsiyasi bajaralish jarayonida birinchi navbatda kerakli hajmdagi joy xotiradan ajratiladi, so‘ngra konstruktor metodi orqali kerakli ob’ekt initsializatsiya qilinadi. Qiymatli tiplar new yordamida e’lon qilinganda o‘zgaruvchiga boshlang‘ich qiymat sifatida 0 o‘zlashtiriladi.
Unar ayirish amali Unar ayirish amali (-) sonli tipdagi operandning ishorasini uning aksiga aylantirish uchun xizmat qiladi.
Mantiqiy ayirish (!) amali - mantiqiy bool tipli kattaliklar uchun mo‘ljallangan. Mantiqiy ayirish amali operand qiymatini uning aksiga o‘zgartirish uchun xizmat qiladi. Ya’ni mantiqiy ayirish amali qo‘llanganda operandning qiymati true bo‘lsa, uning qiymati false ga almshadi, agar operandning qiymati false bo‘lsa, uning qiymati true ga almashadi.
Razryadli ayirish ( ~ ) amali – ko‘pincha bitli ayirish amali deb ham yuritiladi. Razryadli ayirish amali int, uint, long yoki ulong tipli operandning ikkilik kodidagi har bir razryadini inversiya qilish uchun qo‘llaniladi. Ya’ni ushbu amalni qo‘lllash natijasida operandning ikkilik kodidagi 1 ga teng bo‘lgan razryadlari 0 ga, 0 ga teng bo‘lgan razryadlari esa 1 ga almashadi. Masalan:
int v = 153; // 153 ning ikkilik kodidagi qiymati 10011001 ga teng
int n = ~v; // natija: n ning qiymati 102 ga, uning ikkilik koddagi qiymati esa 01100110 ga teng bo‘ladi.
Unar amallarda ishtirok etuvchi operand bitta bo‘ladi.
* Unar qo‘shish amali qo‘llanganda operandning arifmetik qiymati o‘zgarmaydi, lekin agar uning tipi uchun arifmetik operatsiya aniqlanmagan bo‘lsa uning tipi o‘zgarishi mumkin.