Operandlar qiymatlari ma'lumotlarni o'zgartirish operatsiyalarida ishtirok etadigan o'zgaruvchilardir



Yüklə 464,64 Kb.
tarix31.12.2021
ölçüsü464,64 Kb.
#50001

Operand

Operand (inglizcha operand) dasturlash tillarida - operatsiya argumenti; jamoa tomonidan qayta ishlangan ma'lumotlar; amal argumentining qiymatini bildiruvchi ifodani bildiruvchi grammatik konstruksiya [1]. Ba'zan operand operatsiya argumenti paydo bo'lishi kerak bo'lgan matndagi joy, pozitsiya deb ataladi. Demak, operatsiyaning joylashuvi, ya'ni operatsiya argumentlari soni degan tushuncha paydo bo'ladi.

Belgining joylashishiga qarab, amallar prefiks (masalan, * (x - operand)), infiks (masalan, * (a, b - operandlar)) va postfiksga bo'linadi. Operandlar soniga qarab, bitta (unar yoki monad) amallar ajratiladi (masalan, -a); ikki o'rinli (ikkilik, ikkilik) amallar (*); ko'p o'rindiqli (yoki poliadik) operatsiyalar.

Haqiqiy argument sifatida operandning pozitsiyasi va operand o'rtasidagi farq bilan bog'liq holda, operandni operatsiya talab qiladigan shaklga qisqartirish tushunchasi paydo bo'ladi. Misol uchun, agar to'g'ri argument butun son operandining pozitsiyasida bo'lsa, til qoidalari haqiqiy sonni mos keladigan butun songa yaxlitlashning qandaydir usulini nazarda tutishi mumkin. Kastingning yana bir misoli - ob'ekt shaklini o'zgartirish, masalan, skaler bir komponentdan iborat vektorga aylantiriladi.

Operandlar - qiymatlari ma'lumotlarni o'zgartirish operatsiyalarida ishtirok etadigan o'zgaruvchilardir.

Barcha o'zgaruvchilar ro'yxati (kirish ma'lumotlari, oraliq qiymatlar va hisoblash natijalari) har qanday dasturning yana bir muhim elementidir.

Muayyan qiymatga olib keladigan operatsiya belgilari va operandlarning kombinatsiyasi ifoda deyiladi. Amaliyot belgilari operandlarda bajariladigan amallarni belgilaydi. Ifodadagi har bir operand ifoda bo'lishi mumkin. Ifodaning ma'nosi ifodadagi amal belgilari va qavslarning joylashishiga, shuningdek, amallarning ustuvorligiga bog'liq.

SI tilida topshiriq ham ifoda hisoblanadi va bunday ifodaning qiymati tayinlangan qiymatdir.

Ifodalarni baholashda har bir operandning turi boshqa turga aylantirilishi mumkin. Turlarni o'zgartirish operatsiyalar va funksiya chaqiruvlarini bajarishda yashirin bo'lishi mumkin yoki translatsiya operatsiyalarini bajarishda aniq bo'lishi mumkin.

Operand - bu operandlar, operatsiya belgilari va qavslar birikmasidan hosil bo'lgan doimiy, literal, identifikator, funksiya chaqiruvi, pastki kodli ifoda, element tanlash ifodasi yoki yanada murakkab ifoda. Doimiy qiymatga ega bo'lgan har qanday operand doimiy ifoda deyiladi. Har bir operand o'z turiga ega.

Agar doimiy operand sifatida ishlatilsa, u holda uni ifodalovchi doimiyning qiymati va turiga mos keladi. Butun son konstantasi qiymati va yozuv shakliga qarab int, long, unsigned int, unsigned long tipidagi bo‘lishi mumkin. Belgilar konstantasi int tipiga ega. Suzuvchi nuqta doimiysi har doim double tipiga ega.

Literal satr qo'shtirnoq ichiga olingan belgilar ketma-ketligidan iborat bo'lib, xotirada belgilangan belgilar ketma-ketligi bilan ishga tushirilgan char elementlari massivi sifatida ifodalanadi. Satr literalining qiymati satrning birinchi elementining manzilidir va sintaktik jihatdan satr literali char yozish uchun o'zgartirilmaydigan ko'rsatkichdir. String literallari ko'rsatkich qiymatlarini qabul qiladigan ifodalarda operand sifatida ishlatilishi mumkin. Biroq, satrlar o'zgaruvchan emasligi sababli, ularni topshiriqning chap tomonida ishlatib bo'lmaydi.

Shuni esda tutish kerakki, satrning oxirgi belgisi har doim null belgi bo'lib, satr xotirada saqlanganida avtomatik ravishda qo'shiladi.

O‘zgaruvchilar va funksiya identifikatorlari. Har bir identifikator e'lon qilinganda o'rnatiladigan turga ega. Identifikatorning ma'nosi quyidagi turga bog'liq:

butun va suzuvchi turdagi ob'ekt identifikatorlari tegishli turdagi qiymatlarni ifodalaydi;

enum tipidagi ob'ektning identifikatori ro'yxatdagi doimiylar qiymatlari to'plamidan bitta doimiyning qiymati bilan ifodalanadi. Identifikator qiymati doimiy qiymatdir. Qiymat turi int bo'lib, sanab o'tishning ta'rifidan kelib chiqadi;

struct yoki birlashma tipidagi ob'ekt identifikatori tuzilma yoki birlashma tomonidan belgilangan qiymatni ifodalaydi;

ko'rsatgich sifatida e'lon qilingan identifikator tur deklaratsiyasida ko'rsatilgan qiymatga ko'rsatgichni ifodalaydi;

massiv sifatida e'lon qilingan identifikator qiymati massivdagi birinchi elementning manzili bo'lgan ko'rsatgichni ifodalaydi. Ko'rsatkich bilan murojaat qilingan qiymatlarning turi massiv elementlarining turidir. E'tibor bering, dasturni bajarish jarayonida massivning manzilini o'zgartirib bo'lmaydi, garchi alohida elementlarning qiymati o'zgarishi mumkin. Massiv identifikatori tomonidan ko'rsatilgan ko'rsatkich qiymati o'zgaruvchi emas va shuning uchun massiv identifikatori tayinlash bayonotining chap tomonida ko'rsatilmaydi.

funktsiya sifatida e'lon qilingan identifikator qiymati ma'lum bir turdagi qiymatlarni qaytaradigan funktsiyaning manzili bo'lgan ko'rsatgichni ifodalaydi. Funksiya manzili dasturni bajarish jarayonida o'zgarmaydi, faqat qaytariladigan qiymat o'zgaradi. Shunday qilib, funktsiya identifikatorlari tayinlash operatsiyasining chap tomonida paydo bo'lishi mumkin emas.

Funktsiya chaqiruvi iboradan iborat bo'lib, undan keyin qavs ichidagi ifodalarning ixtiyoriy ro'yxati mavjud:

ifoda-1 ([iboralar ro'yxati])

Ifodaning-1 qiymati funksiya manzili bo'lishi kerak (masalan, funksiya identifikatori). Ifodalar ro'yxatidagi har bir ifodaning qiymati funktsiyaga haqiqiy argument sifatida uzatiladi. Funktsiya chaqiruvi operandi funksiyaning qaytariladigan qiymatining turi va qiymatiga ega.

Subscript ifodasi massiv elementini belgilaydi va quyidagi shaklga ega:

ifoda-1 [ifoda-2]

Subscript ifodasining turi massiv elementlarining turi, qiymat esa ifoda-1 va ifoda-2 qiymatlari yordamida manzili baholanadigan qiymatni ifodalaydi.

Odatda ifoda-1 massiv identifikatori kabi ko'rsatgich, ifoda-2 esa butun son qiymatidir. Biroq, ifodalardan faqat bittasi ko'rsatkich, ikkinchisi esa butun son bo'lishi talab qilinadi. Shuning uchun ifoda-1 butun son qiymat bo'lishi mumkin, ifoda-2 esa ko'rsatkichdir. Har qanday holatda, ifoda-2 kvadrat qavs ichiga olinishi kerak. Massiv elementlariga murojaat qilish uchun ko'pincha pastki indeks ifodasi qo'llanilsa-da, baribir pastki indeks har qanday ko'rsatgichda paydo bo'lishi mumkin.

Bir o'lchovli massivning elementlariga havola qilish uchun indeks ifodalari ko'rsatgichning qiymatlariga butun son qiymatini qo'shish va natijaga adreslash operatsiyasini (*) qo'llash orqali hisoblanadi.

Indeks ifodasida ko'rsatilgan ifodalardan biri ko'rsatkich bo'lganligi sababli, qo'shish manzil arifmetikasi qoidalaridan foydalanadi, unga ko'ra butun son qiymati uni ko'rsatgich tomonidan ko'rsatilgan turning o'lchamiga ko'paytirish orqali manzil ko'rinishiga aylantiriladi. . Masalan, arr identifikatori double tipidagi elementlar massivi sifatida e'lon qilinsin.

Shunday qilib, arr massivning i-elementiga kirish uchun arr [i] ni yozish mumkin, bu yuqoridagilardan kelib chiqib, i [a] ga ekvivalentdir. Qiymati i qo'sh tipning o'lchamiga ko'paytiriladi va uning boshidan arr massivning i-elementining manzili hisoblanadi. Keyin bu qiymat arr ko'rsatkichining qiymati bilan qo'shiladi, bu esa o'z navbatida massivning i-elementining manzilini beradi. Qabul qilingan manzilga murojaat qilish operatsiyasi qo'llaniladi, ya'ni. arr massivining elementi yaratilgan manzilda olinadi.

Shunday qilib, arr [i] (yoki i [arr]) subscript ifodasining natijasi massivning i-elementining qiymati hisoblanadi.

Ko'p indeksli ifoda ko'p o'lchovli massivlar elementlariga ishora qiladi. Ko'p o'lchovli massiv - elementlari massiv bo'lgan massiv. Masalan, 3 o'lchamli massivning birinchi elementi 2 o'lchovli massivdir.

Ko'p o'lchovli massivning elementiga murojaat qilish uchun indeks ifodasi kvadrat qavs ichiga olingan bir nechta indeksga ega bo'lishi kerak:

ifoda-1 [ifoda-2] [ifoda-3] ...

Bunday indeks ifodasi chapdan o'ngga talqin qilinadi, ya'ni. birinchi pastki ibora birinchi hisoblanadi:

ifoda-1 [ifoda-2]

Bu ifodaning natijasi manzil ifodasi bo'lib, unga-3 ifoda qo'shiladi va hokazo. Adreslash operatsiyasi oxirgi indeks ifodasi baholangandan keyin amalga oshiriladi. E'tibor bering, agar oxirgi ko'rsatgichning qiymati massivga o'xshash qiymatga murojaat qilsa, manzillash operatsiyasi qo'llanilmaydi.

Misol:


int massa [2] [5] [3];

Indeks ifodasi massasini baholash jarayonini ko'rib chiqing [1] [2] [2].

1. [1] ifoda massasi baholanadi. Murojaat indeksi 1 ushbu massiv elementining o'lchamiga ko'paytiriladi, bu massivning elementi esa int tipidagi 5x3 elementni o'z ichiga olgan ikki o'lchovli massivdir. Olingan qiymat massa ko'rsatkichining qiymatiga qo'shiladi. Natijada ommaviy 3D massividagi ikkinchi (5x3) 2D massivga ko'rsatgich paydo bo'ladi.

2. Ikkinchi indeks 2 int tipidagi uchta elementli massiv hajmini bildiradi va massa [1] ga mos keladigan manzilga qo'shiladi.

3. Uch o‘lchovli massivning har bir elementi int tipidagi qiymat bo‘lganligi uchun 2-indeks manzil massasiga [1] [2] qo‘shishdan oldin int tipining o‘lchamiga oshiriladi.

4. Nihoyat, qabul qilingan ko'rsatgich qayta yo'naltiriladi. Olingan ifoda int tipidagi element bo'ladi.

Agar massa [1] [2] ko'rsatilgan bo'lsa, natija uchta int elementli massivga ko'rsatgich bo'ladi. Shunga ko'ra, subscript ifoda massasining qiymati [1] ikki o'lchovli massivning ko'rsatkichidir.

A'zolarni tanlash ifodasi tuzilma yoki birlashma a'zosi operand sifatida ishlatilishi kerak bo'lganda ishlatiladi. Bunday ifoda tanlangan elementning qiymati va turiga ega. Elementni tanlash uchun ikkita ifoda shaklini ko'rib chiqing:

ifoda.identifikator,

ifoda-> identifikator.

Birinchi shaklda ifoda struct yoki union tipidagi qiymatni ifodalaydi, identifikator esa struktura yoki birlashma a'zosining nomidir. Ikkinchi shaklda ifoda tuzilma yoki birlashma manzilining qiymatiga ega bo'lishi, identifikator esa tuzilma yoki birlashmaning tanlangan a'zosining nomi bo'lishi kerak.

Element tanlash ifodasining ikkala shakli ham bir xil natija beradi. Haqiqatan ham, tanlash operatorini (->) o'z ichiga olgan belgi nuqtadan oldingi ifodadan oldin ko'rsatgichga qo'llaniladigan adreslash operatsiyasi (*) bo'lgan holat uchun nuqtali belgining stenografiya versiyasidir, ya'ni. yozib olish

ifoda -> id

yozishga teng

(* ifoda) . identifikator

ifoda ko'rsatgich bo'lsa.

SuXa_JoK, [20.11.2021 13:37]

Пример:


struct tree { float num;

int spisoc[5];

struct tree *left; } tr[5] , elem ;

elem.left = & elem;

Ushbu misol element strukturasi o'zgaruvchisining chap elementiga kirish uchun tanlash (.) operatsiyasidan foydalanadi. Shunday qilib, strukturaning o'zgaruvchan elementining chap elementiga o'zgaruvchi elementning o'zi manzili beriladi, ya'ni. element o'zgaruvchisi o'ziga havola qiladi.

Typecasting - ob'ekt turini o'zgartirish (konvertatsiya qilish). O'zgartirishni amalga oshirish uchun ob'ektdan oldin qavs ichida kerakli turni yozishingiz kerak:

(tur nomi) operand.

Bir skalyar turdagi ob'ektlarni boshqa skalyar tipga o'tkazish uchun tipdagi translyatsiyalar qo'llaniladi. Biroq, cast ifodasiga boshqa qiymat berish mumkin emas.

Misol:

int i;


bouble x;

b = (ikki marta) i + 2,0;

Ushbu misolda i butun o'zgaruvchisi casting operatsiyasi yordamida suzuvchi turga o'tkaziladi va keyin u allaqachon ifodani baholashda ishtirok etadi.

Doimiy ifoda - doimiy qiymatga baholanadigan ifoda. Doimiy ifodaning operandi butun son konstantalari, belgilar konstantalari, suzuvchi nuqta konstantalari, sanab o'tish konstantalari, cast ifodalari, sizeof operatorli ifodalar va boshqa doimiy ifodalar bo'lishi mumkin. Biroq, doimiy ifodalarda operatsiya belgilaridan foydalanishga quyidagi cheklovlar qo'yiladi:

1. Doimiy ifodalarda tayinlash va ketma-ket baholash (,) amallaridan foydalana olmaysiz.

2. "Manzil" (&) operatsiyasidan faqat ba'zi ishga tushirishlar bilan foydalanish mumkin.

Operator ifodalari ifodalarda operand sifatida ishlatilishi mumkin. Operator belgilariga ega ifodalar birlik (bitta operandli), ikkilik (ikki operandli) va uchlik (uchta operandli) bo‘lishi mumkin.

Unarli ifoda operanddan keyin unar operatordan iborat va quyidagi formatga ega:

unary-operator-belgili operand.

Ikkilik ifoda ikkilik operatsiya belgisi bilan ajratilgan ikkita operanddan iborat:

binar-op operand2 ning operand1 tokeni.

Uchlik ibora (?) va (:) uchlik operator belgilari bilan ajratilgan uchta operanddan iborat va quyidagi formatga ega:

operand1? operand2: operand3.

Operatsiyalar. Operatsiyada ishtirok etadigan operandlar soniga ko'ra, operatsiyalar birlik, ikkilik va uchliklarga bo'linadi.

C tilida quyidagi unar operatsiyalar mavjud:

- arifmetik inkor (inkor va qo‘shish);

~ bitli mantiqiy inkor (to'ldiruvchi);

! mantiqiy inkor;

* qayta yo'naltirish (bilvosita manzillash);

& manzilni hisoblash;

+ unary plus;

++ oshirish (o'sish);

- pasayish (kamaytirish);

o'lchami.

Unar operatsiyalar o'ngdan chapga amalga oshiriladi.

O'stirish va kamaytirish operatsiyalari operandning qiymatini bittaga oshiradi yoki kamaytiradi va operandning o'ng va chap tomoniga yozilishi mumkin. Operand belgisi operand oldidan yozilsa (prefiks formasi), u holda operand ifodada qo'llanilishidan oldin o'zgartiriladi. Operandning belgisi operanddan keyin yozilsa (postfiks formasi), u holda operand birinchi navbatda ifodada qo'llaniladi, keyin esa o'zgartiriladi.

Birlik operatsiyalardan farqli o'laroq, ro'yxati 7-jadvalda keltirilgan ikkilik operatsiyalar chapdan o'ngga amalga oshiriladi.

Belgilash operatorining chap operandi xotira maydoniga tegishli ifoda bo'lishi kerak (lekin const kalit so'zi bilan e'lon qilingan ob'ekt emas), bunday iboralar chapga ruxsat berilgan deb ataladi:

butun va suzuvchi tiplarning ma'lumotlar identifikatorlari, ko'rsatkich turlari, tuzilishi, birlashmasi;

qator yoki funksiya tipidagi ifodalar bundan mustasno, subscripts;

ob'ektni tanlash ifodalari (->) va (.) agar tanlangan element chap tomonda haqiqiy bo'lsa;

massiv yoki funksiyaga havola qiluvchi iboralar bundan mustasno, unar manzilli operator ifodalari (*);

cast ifodasi, agar natijada olingan tur asl turdagi hajmidan oshmasa.

Ifodalarni yozishda (*), (&), (!), (+) belgilar birlik yoki ikkilik amalni bildirishi mumkinligini yodda tuting.





Buyruq – amal kodi, ushbu amalda qatnashayotgan operanda yoki operandalar qayerdan olinishi va natija qayerga yozilishi kerakligi haqidagi axborotlardan iborat bo‘ladi. Quyida buyruqlar to‘plami sathiga oid buyruqlar formatlarining bir nechta xillari keltirilgan.
Yüklə 464,64 Kb.

Dostları ilə paylaş:




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin