Reja: Adres (manzil) operatori



Yüklə 51,35 Kb.
səhifə8/8
tarix24.05.2023
ölçüsü51,35 Kb.
#121326
1   2   3   4   5   6   7   8
8 mavzu (1)

1 - usul:
#include
float Sonlar_kupaytmasi(float arg,...)
{
float p=1.0;
float *ptr=&arg;
if(*prt==0.0) return 0.0;
for(;*prt;prt++)p*=*prt;
return p;
}
void main()
{
cout<
cout<
}

Natija:
24

480

2 - usul:

#include
int Yigindi(int,...);
void main()
{
cout<<“\nYigindi(2,6,4)=”<
cout<<“\nYigindi(6,1,2,3,4,5,6)=”
cout<
}
int Yigindi(int k,...)
{
int *ptr=&k
int s=0;
for(;k;k--)s+=*(++ptr);
return s;
}

Natija:
Yigindi(2,6,4)=10


Yigindi(6,1,2,3,4,5,6)=21
Ikkala misolda ham noma’lum parametrlar berilgan maxsus parametr turini qabul qilgan. Har xil turdagi parametrlarni ishla-tish uchun turni aniqlaydigan parametr kiritish kerak:#include
float Summa(char,int,…);
void main()
{
cout<
cout<
cout<
}
int Summa(char z,int k,…)
{
switch(z)
{
case ’i’:
{
int *ptr=&k+1; int s=0;
for (;k--;ptr++) s+=*(ptr);
return (float)s;
}
case ’f’:
{
float*ptr=(float *)(&k+1); float s=0.0;
for (;k--;ptr++) s+=*(ptr);
return s;
}
default:
{
cout<<”\n parametr hato berilgan”;
return 9999999.0;
}
}
}
1.5. O‘zgaruvchan parametrli funksiyalar
YUqorida keltirilgan misolda noma’lum parametrlarni turini aniqlash masalasi kompilyator tomonidan emas, balki prog-ramma tuzuvchisi tomonidan hal qilingan.
Quyidagi dastur ko’rsatkichning xatti harakatini aniqlab beradi. Biz bir hil qaytarishni amalga oshiramiz ikki marta, lekin hisob ko’rsatkichi uchun turi xil qiymatlar bilan bir hil hisob o’zgartiriladi.
ch07/accounts.cpp
1 #include
2
3 using namespace std;
4
5 int main()
6 {
7 double harrys_account = 0;
8 double joint_account = 2000;
9 double* account_pointer = &harrys_account;
10
11 *account_pointer = 1000; // Dastlabki jamg'arma
12
13 *account_pointer = *account_pointer - 100; // qaytarish $100 ga 14 cout << "Balance: " << *account_pointer <chiquvchi balans 15
16 / / korsatkich qiymatini o'zgartirish
17 account_pointer = &joint_account;
18
19 / / bitte yozuv boshqa boshqa hisob raqamlarini ifodalaydi
20 *account_pointer = *account_pointer - 100; // qaytish $100
21 cout << "Balance: " << *account_pointer<chiquvchi balans 15
23 return 0;
24 }
Natija:
Balance: 900
Balance: 1900
1. Bu to'plam operatorlarini ko'rib chiqamiz.
int a = 1;
int b = 2;
int* p = &a;
cout << *p << endl;
p = &b;
cout << *p << endl;
2. Bu to'plam operatorlarini ko'rib chiqamiz.
int a = 1;
int b = 2;
Ma'lumotning qaysidir ko'rsatgichlari uchun inkor ko'rsatgichlari Ko'rsatgichning xotira manzillari — xotirada joylashgan qator qiymatlarini aytadi. Bu xulosaning umumiy xatosi bo'ladi
double* account_pointer = &joint_account;
account_pointer = 1000; // Error
Belgilash bayonotida 1000 hisobot balansi belgilanmagan. Buning o'rniga, faqat o'zgaruvchan qo'shma hisob ko'rsatgichlarini tasvirlab programma zimmasiga ishora markerini sozlaydi va faqatgina 1000 manzilni emas . Ko'p kompilyatorlar bu topshiriq uchun xato xisobot beradi.
Aslida o'zgaruvchi, foydalanishi uchun*account_pointer ishlatiladi:
*account_pointer = 1000; // OK
Xar bir ko'rsatkich o'zgaruvchilari uchun alohida tarifi bilan ishlatish
Bu kabi bir nechta o'zgaruvchilarni aniqlashda C++ huquqiy hisoblanadi:
int i = 0, j = 1;
Bu usulda ko'rsatgichlardan foydalanish, chalkashliklarga olib keladi:
double* p, q;
* faqat boshlang'ich o'zgaruvchilar bilan bog'laydi. Yani, p qo'shaloq * qiymat bo'lib, q
unga qo'shaloq qiymat bo'ladi. Kelib chiqishi mumkin bo'lgan tartibsizlikni oldini olish uchun ko'rsatgichlarni alohida aniqlash kerak:
double* p; double* q;
Nazorat savollari

  1. Ko’rsatgichlar nima?

  2. Nimaga ko’rsatgichlar qulay emas?

  3. Kompyuter o’yinlari yaratish uchun dasturchi qay darajada malakali bo’lishi kerak deb o’ylaysiz?

  4. Joriy bajarilayotgan ko’rsatgichlar qayerda saqlanadi?

  5. Kompyuterni arifmetik amallarni bajaradi?

  6. kompilyator apparat ta’minotmi yoki dasturiymi?

  7. Qasyi jihati uchun C++ foydalanuvchilarga juda muhim



Yüklə 51,35 Kb.

Dostları ilə paylaş:
1   2   3   4   5   6   7   8




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