|
s inf a’zolariga murojat usullari. Ob’yektlar yaratish va ulardan foydalanishga doir masalalar yechish. Kalit so’zlar
|
bet | 3/6 | Sana | 22.02.2024 | Hajmi | 90,96 Kb. | | #160738 |
Bog'liq 1.1amaliy ishTashqi o’zgaruvchilar. Agar programma bir nechta moduldan iborat bo’lsa, ular qandaydir o’zgaruvchi orqali o’zaro qiymat alma-shishlari mumkin (fayllar orasida). Buning uchun o’zgaruvchi birorta modulda global tarzda e’lon qilinadi va u boshqa faylda (modulda) ko’rinishi uchun u erda extern modifikatori bilan e’lon qilinishi kerak bo’ladi. extern modifikatori o’zgaruvchini boshqa faylda e’lon qilinganligini bildiradi. Tashqi o’zgaruvchilar ishlatilgan prog-rammani ko’raylik.
//Sarlavha.h faylida
void Bayroq_Almashsin(void);
// modul_1.cpp faylida
bool Bayroq;
void Bayroq_Almashsin(void){Bayroq=!Bayroq;}
// masala.cpp faylida
#include < iostream.h>
#include
#include
extern bool Bayroq;
int main()
{
Bayroq_Almashsin();
if(Bayroq)
cout<<”Bayroq TRUE”<else cout<<”Bayroq FALSE”<return 0;
}
Oldin sarlavha.h faylida Bayroq_Almashsin( ) funksiya sarlav-hasi e’lon qilinadi, keyin modul_1.srr faylida tashqi o’zgaruvchi e’lon qilinadi va Bayroq_Almashsin() funksiyasining tanasi aniqla-nadi va nihoyat, masala.cpp faylida Bayroq o’zgaruvchisi tashqi deb e’lon qilinadi.
Statik o’zgaruvchilar. Statik o’zgaruvchilar static modifika-tori bilan e’lon qilinadi va o’z xususiyatiga ko’ra global o’zgaruvchi-larga o’xshaydi. Agar bu turdagi o’zgaruvchi global bo’lsa, uning amal qilish sohasi - e’lon qilingan joydan programma matnining oxirigacha bo’ladi. Agar statik o’zgaruvchi funksiya yoki blok ichida e’lon qilinadigan bo’lsa, u funksiya yoki blokka birinchi kirishda initsializatsiya qilinadi. O’zgaruvchining bu qiymati funksiya keyingi chaqirilganida yoki blokka qayta kirishda saqlanib qoladi va bu qiymatni o’zgartirish mumkin. Statik o’zgaruvchilarni tashqi deb e’lon qilib bo’lmaydi.
Agar statik o’zgaruvchi initsializatsiya qilinmagan bo’lsa, uning birinchi murojatdagi qiymati 0 hisoblanadi.
Misol tariqasida birorta funksiyani necha marotaba chaqiril-ganligini aniqlash masalasini ko’raylik:
#include
int Sanagich(void);
int main()
{
int natija;
for (int i=0; i<30; i++)
natija=Sanagich();
cout<return 0;
}
int Sanagich(void)
{
static short sanagich=0;
...
sanagich++;
return sanagich;
}
Bu erda asosiy funksiyadan counter statik o’zgaruvchiga ega Sanagicht() funksiyasi 30 marta chaqiriladi. Funksiya birinchi marta chaqirilganda sanagich o’zgaruvchiga 0 qiymatini qabul qiladi va uning qiymati birga ortgan holda funksiya qiymati sifatida qaytariladi. Statik o’zgaruvchilar qiymatlarini funksiyani bir chaqirilishidan ikkinchisiga saqlanib qolinishi sababli, keyingi har bir chaqirishlarda sanagich qiymati bittaga ortib boradi.
Masala. Berilgan ishorasiz butun sonning barcha tub bo’luv-chilari aniqlansin. Masalani echish algoritmi quyidagi takrorla-nuvchi jarayondan iborat bo’ladi: berilgan son tub songa (1-qadamda 2 ga) bo’linadi. Agar qoldiq 0 bo’lsa, tub son chop qilinadi va bo’linuv-chi sifatida bo’linma olinadi, aks holda navbatdagi tub son olinadi. Takrorlash navbatdagi tub son bo’linuvchiga teng bo’lguncha davom etadi.
Programma matni:
#include
#include
int Navb_tub();
int main()
{
unsigned int n,p;
cout<<”\nn qiymatini kiritng: ”;
cin>>n;
cout<<«\n1»;
p=Navb_tub();
while(n>=p)
{
if(n%p==0)
{
cout<<«*»<
n=n/p;
}
else p=Navb_tub();
}
return 0;
}
int Navb_tub()
{
static unsigned int tub=1;
for(;;)
{
tub++;
short int ha_tub=1;
for(int i=2;i<=tub/2;i++)
if(tub%i==0)ha_tub=0;
if(ha_tub)return tub;
}
return 0;
}
Programmada navbatdagi tub sonni hosil qilish funksiya ko’ri-nishida amalga oshirilgan. Navb_tub() funksiyasining har chaqirili-shida oxirgi tub sondan keyingi tub son topiladi. Oxirgi tub sonni «eslab» qolish uchun tub o’zgaruvchisi static qilib aniqlangan.
Programma ishga tushganda klaviaturadan n o’zgaruvchisining qiymati sifatida 60 soni kiritilsa, ekranga quyidagi ko’paytma chop etiladi:
1*2*2*3*5
|
|
Bosh sahifa
Aloqalar
Bosh sahifa
s inf a’zolariga murojat usullari. Ob’yektlar yaratish va ulardan foydalanishga doir masalalar yechish. Kalit so’zlar
|