Axborot texnologiyalari va jarayonlarni matematik modellashtirish


Funksiyada ishlatiladigan operatorlar



Yüklə 2,02 Mb.
səhifə41/68
tarix07.01.2024
ölçüsü2,02 Mb.
#203361
1   ...   37   38   39   40   41   42   43   44   ...   68
M.20Nurullayev20-20Axborot20texnologiyalari20va20jarayonlarni20matematik20modellashtirish[1]

Funksiyada ishlatiladigan operatorlar. Funksiyada ishlatiladigan operatorlar soni va tipiga hech qanday chegara yo`q. Funksiya ichida istalgancha boshqa funksiyalarni chaqirish mumkin bo`lsada, lekin funksiyalarni aniqlash mumkin emas.
C++ tilida funksiyaning hajmiga hech qanday talab qo`yilmasa ham, uni kichikroq tarzda tuzgan ma`quldir. Har bir funksiya tushunish oson bo`ladigan bitta masalani bajarishi lozim. Agarda funksiya hajmi kattalashayotganligini sezsangiz, bu funksiyani bir nechta kichikroq funksiyalarga ajratish haqida o`ylashingiz kerak.
Funksiya argumentlari. Funksiyaning argumentlari turli tipda bo`lishi mumkin. Shuningdek, argument sifatida C++ tilidagi biror bir qiymat qaytaradigan o`zgarmaslar, matematik va mantiqiy ifodalar va boshqa ixtiyoriy funksiyalarni berish mumkin.
Misol sifatida bizda biror bir qiymat qaytaruvchi double(), triple(), square() va cube() funksiyalari berilgan bo`lsin. Biz quyidagi ifodani yozishimiz mumkin:
Answer=(double(triple(square(my Value))))
Bu ifodada myValue o`zgaruvchisini qabul qilinadi va u cube()
funksiyasiga argument sifatida uzatiladi.
cube() funksiyasi qaytargan qiymat esa square() funksiyasiga argument sifatida uzatiladi. square() funksiyasi qiymat qaytargandan keyin, buning qiymati o`z navbatida triple() fukntsiyasiga argument sifatida beriladi. triple() funksiyasining qiymati esa double() funksiyasiga argument qilib beriladi va u Answer o`zgaruvchisiga o`zlashtiriladi.
Yangi stildagi e'lon fayllari va nomlar sohasi tushunchasi. C++ tilining standarti .h bilan tugaydigan (stdio.h ...) standart kutubxona e'lon fayllarini
yangidan nomlab chiqdi. Bunda .h qo'shimchasi olib tashlandi. C tilidan qolgan fayllar nomiga esa c harfi qo'shildi.
Misol uchun:
iostream.h -> iostream string.h -> cstring stdlib.h -> cstdlib time.h -> ctime
C tilidan meros qolgan kutubxona 18 ta e'lon fayli orqali berilgan. C++ tiliga tegishli standart kutubxonada esa 32 ta e'lon fayli bor. Fayllarni yangidan belgilashdan maqsad kutubxonadagi funksiya va ob'ektlarni std deb ataluvchi nomlar sohasiga (namespace) kiritish hisoblanadi.
Nomlar sohasining o'zi ham nisbatan yangi tushuncha. Nomlar sohasini alohida dastur qismlari deb faraz qilsak bo`ladi. Boshqa-boshqa sohalarda ayni nomli funksiya, o'zgaruvchi nomlari va ob'ektlar berilishi mumkin. Bunda hech qanday nomlar to'qnashuvi sodir bo'lmaydi. C++ tilida to'liq aniqlangan nom (fully qualified name) degan tushuncha bor. Shunga ko'ra har bir cout ob'ektinig to'liq nomi quyidagicha bo'ladi:
Nomlar sohasi ob'ekt
global ::cout
std std::cout
fun::obj fun::obj::cout
:: operatori sohalarni bog'lash uchun qo'llaniladi. fun::obj nomli nomlar sohasida obj fun ichida joylashgan nom sohasidir. Global nomlar sohasida aniqlangan funksiya va boshqa turdagi dastur birliklariga dasturning istalgan yeridan yetishsa bo'ladi. Masalan, global nomlar sohasida e'lon qilingan int tipidagi k o'zgaruvchi bol'sa, uning ustidan dasturning xohlagan blokida amal bajarish mumkin. Nomlar sohasi mexanizmi dasturchilarga yangi kutubxonalarni yozish ishini ancha osonlashtiradi. Chunki, yangi kutubxonada ayni nomlar qo'llanishiga qaramay, nomlar konflikti yuz bermaydi. Dastur yoki kutubxona yozganda yangi nomlar sohasini belgilash uchun
102
namespace istalgan_nom {
...
foo(); int k; String str;
...
}
deb yozish mumkin. Dasturda ushbu nomlar sohasida aniqlangan o'zgaruvchilarni ishlatish uchun ularning to'liq nomini yozish kerak. Masalan:
istalgan_nom::foo().
Ammo bu usul ancha mashaqqatli bo'ladi. Har bir funksiya yoki o'zgaruvchi oldiga uning to'liq aniqlangan nomini yozish ko'p vaqt oladi. Buning o'rniga using namespace istalgan_nom deb yozish kifoya qiladi. using (ishlatish, qo'llash) buyrug'i nomlar sohasini dastur ichiga tanishtiradi. C++ ning standart kutubxonasida aniqlangan ifodalarni qo'llash uchun using namespace std yoziladi. Bunda qo'llanilayotgan e'lon fayllari yangi tipda bo'lishi kerak.

  1. – misol.

//Yangi tipdagi e'lon fayllari va nomlar sohasini qo'llash.
# include using namespace std; int main() {
std::cout << "Hello!\n"; cout << "Salom!";
return (0); }
Ekranda:
Hello! Salom!
std::cout << "Hello\n"; satrida chiqish oqimi ob'ekti cout ning to'liq nomi qo'llanildi. Keyingi satrda esa yana ayni ob'ekt ishlatildi, lekin endi uni to'liq yozilmadi, chunki std nomlar sohasini using bilan e'lon qilib bo’lingan. Nomlarni global nomlar sohasida e'lon qilish uchun ularni blok va funksiyalar tashqarisida aniqlash kerak. Masalan:
# include int i;
int main() {
... int k; ... return 0; }
Bu yerda i global nomlar sohasida joylashgan, k esa main() funksiyasiga tegishli. O'zgaruvchilarni global nom sohasida aniqlashning boshqa yo'li, ularni nomsiz nomlar sohasida belgilash kerak. Yani:
namespace { int j; }
j o'zgaruvchisi global boldi. Uni ishlatish uchun:
::j = ::j + 7;
:: operatorini qo'llash mumkin, yoki oddiygina qilib faqat o'zini: j = j * 9;
kabi yozish mumkin.

Yüklə 2,02 Mb.

Dostları ilə paylaş:
1   ...   37   38   39   40   41   42   43   44   ...   68




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

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin