• Ko’rinish sohasi. Lokal va global o’zgaruvchilar
  • s inf a’zolariga murojat usullari. Ob’yektlar yaratish va ulardan foydalanishga doir masalalar yechish. Kalit so’zlar




    Download 90,96 Kb.
    bet1/6
    Sana22.02.2024
    Hajmi90,96 Kb.
    #160738
      1   2   3   4   5   6
    Bog'liq
    1.1amaliy ish


    1.1 S inf a’zolariga murojat usullari. Ob’yektlar yaratish va ulardan foydalanishga doir masalalar yechish.


    Kalit so’zlar: ko’rchsatkich, tugun, adres olish &, bo’shatish, ko’rsatkich, virtual destruktor, xotira, xotira chiqishi, destruktor, toifani o’zlashtirish, resurslar chiqishi, a’zo destruktori.
    Ko’rinish sohasi. Lokal va global o’zgaruvchilar
    O’zgaruvchilar funksiya tanasida yoki undan tashqarida e’lon qilinishi mumkin. Funksiya ichida e’lon qilingan o’zgaruvchilarga lokal o’zgaruvchilar deyiladi. Bunday o’zgaruvchilar xotiradagi prog-ramma stekida joylashadi va faqat o’zi e’lon qilingan funksiya tanasida amal qiladi. Boshqaruv asosiy funksiyaga qaytishi bilan lokal o’zgaruvchilar uchun ajratilgan xotira bo’shatiladi (o’chiriladi).
    Har bir o’zgaruvchi o’zining amal qilish sohasi va yashash vaqti xususiyatlari bilan xarakterlanadi.
    O’zgaruvchi amal qilish sohasi deganda o’zgaruvchini ishlatish mumkin bo’lgan programma sohasi (qismi) tushuniladi. Bu tushuncha bilan o’zgaruvchining ko’rinish sohasi uzviy bog’langan. O’zgaruvchi amal qilish sohasidan chiqqanda ko’rinmay qoladi. Ikkinchi tomondan, o’zgaruvchi amal qilish sohasida bo’lishi, lekin ko’rinmas-ligi mumkin. Bunda ko’rinish sohasiga ruxsat berish amali «::» yordamida ko’rinmas o’zgaruvchiga murojat qilish mumkin bo’ladi.
    O’zgaruvchining yashash vaqti deb, u mavjud bo’lgan programma bo’lagining bajarilishiga ketgan vaqt intervaliga aytiladi.
    Lokal o’zgaruvchilar o’zlari e’lon qilingan funksiya yoki blok chegarasida ko’rinish sohasiga ega. Blokdagi ichki bloklarda xuddi shu nomdagi o’zgaruvchi e’lon qilingan bo’lsa, ichki bloklarda bu lokal o’zgaruvchi ham amal qilmay qoladi. Lokal o’zgaruvchi yashash vaqti - blok yoki funksiyani bajarish vaqti bilan aniqlanadi. Bu hol shuni anglatadiki, turli funksiyalarda bir-biriga umuman bog’liq bo’lma-gan bir xil nomdagi lokal o’zgaruvchilarni ishlatish mumkin.
    Quyidagi programmada main() va sum() funksiyalarida bir xil nomdagi o’zgaruvchilarni ishlatish ko’rsatilgan. Programmada ikkita sonning yig’indisi hisoblanadi va chop etiladi:
    #include
    // funksiyaprototipi
    int sum(int a;int b);
    int main()
    {
    // lokal o’zgaruvchilar
    int x=r;
    int y=4;
    cout<return 0;
    }
    int sum(int a,int b)
    {
    // lokal o’zgaruvchi
    int x=a+b;
    return x;
    }
    Global o’zgaruvchilar programma matnida funksiya aniqlanishi-dan tashqarida e’lon qilinadi va e’lon qilingan joyidan boshlab programma oxirigacha amal qiladi.
    #include
    int f1(); int f2();
    int main()
    {
    cout<return 0;
    }
    int f1()
    {
    return x;// kompilyasiya xatosi ro’y beradi
    }
    int x=10; // global o’zgaruvchi e’loni
    int f2(){ return x*x;}
    YUqorida keltirilgan programmada kompilyasiya xatosi ro’y beradi, chunki f1() funksiya uchun x o’zgaruvchisi noma’lum hisob-lanadi.
    Programma matnida global o’zgaruvchilarni ular e’lonidan keyin yozilgan ixtiyoriy funksiyada ishlatish mumkin. SHu sababli, global o’zgaruvchilar programma matnining boshida yoziladi. Funksiya ichidan global o’zgaruvchiga murojat qilish uchun funksiyada uning nomi bilan mos tushadigan lokal o’zgaruvchilar bo’lmasligi kerak. Agar global o’zgaruvchi e’lonida unga boshlang’ich qiymat berilmagan bo’lsa, ularning qiymati 0 hisoblanadi. Global o’zgaruvchining amal qilish sohasi uning ko’rinish sohasi bilan ustma-ust tushadi.
    SHuni qayd etish kerakki, tajribali programma tuzuvchilar imkon qadar global o’zgaruvchilarni ishlatmaslikka harakat qilishadi, chunki bunday o’zgaruvchilar qiymatini programmaning ixtiyoriy joyidan o’zgartirish xavfi mavjudligi sababli programma ishlashida mazmunan xatolar yuzaga kelishi mumkin. Bu fikrimizni tasdiqlovchi programmani ko’raylik.
    # include
    // global o’zgaruvchi e’loni
    inttest=100;
    void Chop_qilish(void );
    int main()
    {
    //lokal o’zgaruvchi e’loni
    int test=10;
    //global o’zgaruvchi chop qilish funksiyasini chaqirish
    Chop_qilish();
    sout<<”Lokal o’zgaruvchi: ”<return 0;
    }
    void Chop_qilish(void)
    {
    cout<<”Global o’zgaruvchi: ”<}
    Programma boshida test global o’zgaruvchisi 100 qiymati bilan e’lon qilinadi. Keyinchalik, main() funksiyasida test nomi bilan lokal o’zgaruvchisi 10 qiymati bilan e’lon qilinadi. Programmada, Chop_qilish() funksiyasiga murojaat qilinganida, asosiy funksiya tanasidan vaqtincha chiqiladi va natijada main() funksiyasida e’lon qilingan barcha lokal o’zgaruvchilarga murojaat qilish mumkin bo’lmay qoladi. SHu sababli Chop_qilish() funksiyasida global test o’zgaruvchisining qiymatini chop etiladi. Asosiy programmaga qaytilgandan keyin, main() funksiyasidagi lokal test o’zgaruvchisi global test o’zgaruvchisini «berkitadi» va lokal test o’zgaruvchini qiymati chop etiladi. Programma ishlashi natijasida ekranga quyidagi natijalar chop etiladi:

    Download 90,96 Kb.
      1   2   3   4   5   6




    Download 90,96 Kb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    s inf a’zolariga murojat usullari. Ob’yektlar yaratish va ulardan foydalanishga doir masalalar yechish. Kalit so’zlar

    Download 90,96 Kb.