• undef Belgini aniqlashga imkon beradi. 3 if
  • Sr.No. Bu belgi deb nomlangan belgilar ketma-ketligini belgilaydi




    Download 25.64 Kb.
    bet2/3
    Sana20.06.2022
    Hajmi25.64 Kb.
    #24068
    1   2   3
    Bog'liq
    Preprotsessorlar C# tilida
    фанлар фарқи Халқаро 2 курс, 1-Amaliy mashg\'ulot uchun topshiriqlar, 2 labaratoriya 15-21 ELEKTRONIKA 022431, 1-Mustaqil ish, 9-Mavzu Gipermurojaat va uning turlari. Web, Oraliq nazorat.kompyuter tizimlari va dast, MATEMATIKA O’QITISH METODIKASI AMALIY MASHGULOT 1 MODULQO\'LLANMA, SARDOR, 13-maruza, 13-mavzu. Kalsinatsiyalangan soda ishlab chiqarish usullari-hozir.org, 16-mavzu cms (content management systems — kontentni boshqaruv -fayllar.org, Ochiq dars, Axborot texnologiya mavzulari, falsafa savollari
    Sr.No.

    Bu belgi deb nomlangan belgilar ketma-ketligini belgilaydi.

    1

    #define
    Bu belgi deb nomlangan belgilar ketma-ketligini belgilaydi.

    2

    #undef
    Belgini aniqlashga imkon beradi.

    3

    #if
    Bu belgi yoki belgilarni ularning haqiqiyligini baholaganligini sinashga imkon beradi.

    4

    #else
    Bu #if bilan birga aralash shartli direktivani yaratishga imkon beradi.

    5

    #elif
    Bu aralash shartli direktivani yaratishga imkon beradi.

    6

    #endif
    Shartli direktivaning oxirini belgilaydi.

    7

    #line
    Xatolar va ogohlantirishlar uchun kompilyatorning satr raqamini va (ixtiyoriy ravishda) fayl nomini o'zgartirishga imkon beradi.

    8

    #error
    Bu sizning kodingizda ma'lum bir joydan xato keltirib chiqarishga imkon beradi.

    9

    #warning
    Bu sizning kodingiz ma'lum bir joydan bir darajali ogohlantirishni olish imkonini beradi.

    10

    #region
    Bu sizga Visual Studio Code Editor-ning o'ziga xos xususiyatidan foydalanganda siz kengaytirishingiz yoki yiqitishingiz mumkin bo'lgan kod blokini belgilashga imkon beradi.

    11

    #endregion
    Bu # mintaqa blokining tugashini belgilaydi.

    #Define Preprocessor


    #Define preprosessor ko'rsatmasi ramziy konstantalarni hosil qiladi.
    #define belgini belgilashga imkon beradi, masalan, #if direktivasiga berilgan ibora sifatida belgidan foydalanib, "true" ni ifodalovchi belgi. Uning sintaksisi quyidagicha –
    #define symbol
    Quyidagi dastur buni tasvirlaydi –
    #define PI
    using System;

    namespace PreprocessorDAppl {


    class Program {
    static void Main(string[] args) {
    #if (PI)
    Console.WriteLine("PI is defined");
    #else
    Console.WriteLine("PI is not defined");
    #endif
    Console.ReadKey();
    }
    }
    }
    Yuqoridagi kod tuzilib, bajarilganda u quyidagi natijani beradi –
    PI is defined
    Shartli ko'rsatmalar
    Shartli direktivani yaratish uchun siz #if direktivasidan foydalanishingiz mumkin. Shartli ko'rsatmalar ramz yoki belgilarni haqiqiyligini tekshirib ko'rish uchun foydalidir. Agar ular "true" ga baho berishsa, kompilyator #if va keyingi ko'rsatmalar o'rtasidagi barcha kodlarni baholaydi.
    Shartli direktivaning sintaksisi bu
    #if symbol [operator symbol]...

    Bu erda, belgi - siz sinab ko'rmoqchi bo'lgan ramzning nomi. Bundan tashqari, siz "true" va "false" dan foydalanishingiz yoki belgini rad etish operatori yordamida ishlatishingiz mumkin.


    Operator belgisi - bu belgini baholash uchun ishlatiladigan operator. Operatorlar quyidagilardan biri bo'lishi mumkin -


    == (tenglik)


    ! = (tengsizlik)
    && (va)
    || (yoki)
    Qavslar yordamida siz simvollar va operatorlarni guruhlashingiz mumkin. Shartli ko'rsatmalar disk raskadrovka uchun kodni tuzishda yoki ma'lum konfiguratsiyani tuzishda foydalaniladi. #If direktivasi bilan boshlanadigan shartli direktivani aniq #endif direktivasi bilan tugatish kerak.
    Quyidagi dastur shartli ko'rsatmalardan foydalanishni namoyish etadi –
    #define DEBUG
    #define VC_V10
    using System;

    public class TestClass {


    public static void Main() {
    #if (DEBUG && !VC_V10)
    Console.WriteLine("DEBUG is defined");
    #elif (!DEBUG && VC_V10)
    Console.WriteLine("VC_V10 is defined");
    #elif (DEBUG && VC_V10)
    Console.WriteLine("DEBUG and VC_V10 are defined");
    #else
    Console.WriteLine("DEBUG and VC_V10 are not defined");
    #endif
    Console.ReadKey();
    }
    }
    Yuqoridagi kod tuzilib, bajarilganda u quyidagi natijani beradi –
    DEBUG and VC_V10 are defined

    Ushbu bo'limda C # protsessorining quyidagi ko'rsatmalari to'g'risida ma'lumotlar mavjud.


    #if
    #else
    #elif
    #endif
    #define
    #undef
    #warning
    #error
    #line
    #region
    #endregion
    #pragma
    #pragma warning
    #pragma checksum

    Qo'shimcha ma'lumot va misollar uchun individual mavzularga qarang.


    Kompilyatorda alohida protsessor yo'q bo'lsa ham, ushbu bo'limda tavsiflangan ko'rsatmalar xuddi shunday bo'lganidek ishlanadi. Ular shartli ravishda tuzishda yordam berish uchun ishlatiladi. C va C ++ ko'rsatmalaridan farqli o'laroq, ushbu ko'rsatmalardan so'llarni yaratishda foydalana olmaysiz.
    Chiziqdagi yagona ko'rsatma bo'lishi kerak bo'lgan protsessor ko'rsatmasi.
    Nomi isbotlaganidek, preprosessor ko'rsatmalari haqiqiy kompilyatsiya boshlanishidan oldin ishlov beriladigan ko'rsatmalar blokidir. C # preprosessor ko'rsatmalari kompilyator uchun kompilyatsiya jarayoniga ta'sir ko'rsatadigan buyruqlardir.
    Ushbu buyruqlar kodning qaysi qismlarini kompilyatsiya qilish kerakligini yoki aniq xatolar va ogohlantirishlarni qanday bajarishni aniqlaydi.
    C # protsessor protsedurasi # (hash) belgisi bilan boshlanadi va barcha protsessor ko'rsatmalari bitta satrda davom etadi. Protsessor protseduralari nuqta-vergul bilan emas, balki yangi qator bilan tugatiladi.
    C # da mavjud bo'lgan protsessor protseduralari:

    C # preprosessor printsipial jihatdan C preprotsessoriga juda o'xshash va C # tarkibidagi butun tushuncha C tilining spetsifikatsiyasidan olingan.


    "C preprosessor - bu C kompilyator tomonidan avtomatik ravishda foydalaniladigan dasturni haqiqiy kompilyatsiya qilishdan oldin o'zgartirish uchun ishlatiladigan so'l protsessor. Bu makro protsessor deb nomlanadi, chunki u uzoqroq tuzilishlar uchun qisqartmalar bo'lgan makroslarni aniqlashga imkon beradi."
    Ammo C # kontseptsiyasidan faqat C tushunchasi olingan, ammo C # kompilyatorida alohida protsessor mavjud emas, ushbu C # da tavsiflangan ko'rsatmalar mavjud bo'lganidek ishlanadi. C va C ++ ko'rsatmalaridan farqli o'laroq, ushbu ko'rsatmalardan so'llarni yaratishda foydalana olmaysiz.
    Chiziqdagi yagona ko'rsatma bo'lishi kerak bo'lgan protsessor ko'rsatmasi. Dasturda ishlov berish bo'yicha ko'rsatmalar '#' bilan boshlanadigan qatorlardir. Bo'sh joy '#' dan oldin va keyin ruxsat etiladi. '#' Raqamidan keyin direktiv nom bo'lgan identifikator mavjud. Masalan, '#define' direktivadir
    C # tilining protsessor protseduralari quyidagicha
    #if
    #else
    #elif
    #endif
    # aniqlik
    #undef
    # ogohlantirish
    #error
    # chiziq
    # mintaqa
    #endregion
    Asosiy ko'rsatmalar quyidagilardan iborat
    Shartli kompilyatsiya. Dastlabki qayta ishlash ko'rsatmalaridan foydalanib, siz turli xil sharoitlarga ko'ra dasturning qismlarini qo'shishingiz yoki chiqarib tashlashingiz mumkin.
    Chiziqni boshqarish. Agar siz boshlang'ich fayllarni keyinchalik tuziladigan oraliq faylga birlashtirish yoki o'zgartirish uchun dasturdan foydalansangiz, kompilyatorga har bir manba liniyasi qayerdan kelib chiqqanligi to'g'risida ma'lumot berish uchun chiziq boshqaruvidan foydalanishingiz mumkin.
    Xato va ogohlantirish haqida xabar berish: "#error" direktivasi protsessorga halokatli xato haqida xabar beradi va "# ogohlantirish" direktivasi "#error" direktivasiga o'xshaydi, lekin protsessorni ogohlantirishga va qayta ishlashni davom ettirishga majbur qiladi.
    Region and Regregion - bu yangi ko'rsatmalar. Bu C va C ++ ko'rsatmalar ro'yxatida bo'lmagan. C # C dasturchilarining C va C ++ ro'yxatlaridan ko'rsatmalar sonini olib tashlash niyatini bilmayman, lekin odamlar C va C ++ ko'rsatmalaridan atmostdan foydalanadigan narsalarni tanladilar. Har bir protsessor ko'rsatmalarining ma'nosini tushuntirishdan oldin men qanday qilib protsessor ko'rsatmalarini aniqlash kerakligini tushuntirmoqchiman. Direktivani aniqlashning ikkita usuli mavjud.
    1. C # dasturingizda aniqlang.
    2. ularni kompilyatsiya vaqtidagi buyruq satrida aniqlang.
    Birinchi usul uchun misol
    #define TEST
    using System;
    public class MyClass
    {
    public static void Main()
    {
    #if (TEST)
    Console.WriteLine("TEST is defined");
    #else
    Console.WriteLine("TEST is not defined");
    #endif
    }
    }
    1-misol: #define, #if, #else va #endif-dan foydalanish Keling, ushbu tushunchani bir nechta misollar bilan tushunaylik. Quyida berilgan kodda biz #define-dan forma deb nomlangan belgini aniqlash uchun foydalanamiz. Demak, bu "shakl" haqiqiy deb baholaydi. Ichkarida biz #if-dan foydalanmasligimiz yoki yo'qligini tekshiramiz. U mavjud va kompilyator buni oldindan bilganligi sababli #else qismi hech qachon bajarilmaydi va kompilyator tomonidan sharh sifatida ko'rib chiqiladi. #Endif if derativining oxirini ko'rsatish uchun ishlatiladi.
    // C# Program to show the use of
    // preprocessor directives

    // Defining a symbol shape


    #define shape

    using System;


    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.IO;

    namespace Preprocessor {


    class Program {


    static void Main(string[] args)


    {
    // Checking if symbol shape exists or not
    #if (shape)
    Console.WriteLine("Shape Exists");
    #else
    Console.WriteLine("Shape does not Exist");

    // Ending the if directive


    #endif
    }
    }
    }
    2-misol: #warning va #define-dan foydalanish Boshqa misolni ko'rib chiqing. Quyidagi kodda biz shakli va shakli_ belgilari atamalarini ataylab olib tashlaymiz. Tuzuvchi bularni topa olmagani uchun u #else direktivasini bajaradi. Bu erda biz foydalanuvchi tomonidan aniqlangan ogohlantirish va xatolarni yaratamiz.
    // C# program to show the Removal of
    // definition of shape and shape_

    #undef shape_


    using System;


    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.IO;

    namespace preprocessor2


    {
    class Program
    {
    static void Main( string[] args )
    {
    // Checking if shape exists
    #if (shape)
    Console.WriteLine("Shape Exists");

    // Or if shape_ exists
    #elif (shape_)
    Console.WriteLine("Shape_ Exists" );

    #else

    // using #warning to display message that


    // none of the symbols were found
    #warning "No Symbols found"

    // Generating user defined error


    #error "Check use of preprocessors"

    // Ending if


    #endif
    }
    }
    } Ushbu kod kompilyatsiya qilmaydi, chunki kodda xato mavjud. Ogohlantirishlar va xatolar asosan bir xil ishni bajaradi, ammo xato kodni tuzish jarayonini to'xtatadi. Vizual studiya sizga quyidagi natijani beradi:
    C # usul - bu sinf xususiyatlarining shunchaki qiymatni ushlab turish qobiliyati emas, balki funktsiya (ko'rsatmalar ketma-ketligi) sifatida chaqirilishi mumkin bo'lgan sinf a'zosi. C ++ va ANSI C singari boshqa sintaktik o'xshash tillarda bo'lgani kabi, usulning imzosi ham tartibni o'z ichiga olgan deklaratsiya hisoblanadi: istalgan ixtiyoriy doirani o'zgartiradigan kalit so'zlar (masalan, shaxsiy), uni qaytarish turining aniq tavsifi (masalan, int, yoki agar kalit so'z qaytarilmasa, void bekor qilinadi), usulning nomi va nihoyat, vergul bilan ajratilgan parametr spetsifikatsiyalarining parantezlangan ketma-ketligi, har biri parametr turidan, uning rasmiy nomi va ixtiyoriy ravishda, ishlatilmaydigan standart qiymat. taqdim etiladi. Qayta tiklanadigan qiymat yoki topshiriq bo'yicha klass mulkini olgan yoki o'rnatgan usullar kabi ba'zi bir muayyan turdagi turlari to'liq imzoni talab qilmaydi, ammo umumiy holda, sinfning ta'rifi uning usullarining to'liq imzosi deklaratsiyasini o'z ichiga oladi.
    C ++ singari va Java-dan farqli o'laroq, C # dasturchilari usullarni subklasslar tomonidan bekor qilinishiga imkon berish uchun virtual doirani o'zgartiruvchi kalit so'zdan foydalanishlari kerak.
    C # dagi kengaytma usullari dasturchilarga statik usullarni xuddi sinf metodlari jadvalidagi usul kabi ishlatishga imkon beradi, bu esa dasturchilarga ushbu ob'ektda va uning hosilalarida mavjud bo'lishi kerak deb hisoblagan narsalarga metodlarni qo'shish imkonini beradi.

    Xulosa
    Xulosa qilib aytganda, C #, CLR uchun dastur darajasida dasturlash tili sifatida ishlab chiqilgan va, asosan, CLRning o'ziga bog'liq. Bu asosan BCLni aks ettiradigan C # tipli tizimga tegishli. Tilning ma'lum bir ekspressiv xususiyatlarining mavjudligi yoki yo'qligi ma'lum bir til xususiyatini mos keladigan CLR konstruktsiyalariga tarjima qilish mumkinmi yoki yo'qmi bilan belgilanadi. Shunday qilib, CLR-ning 1.1-dan 2.0-gacha versiyalari rivojlanishi bilan C # o'zi sezilarli darajada boyitildi; kelajakda shunga o'xshash shov-shuvni kutish kerak (ammo bu model C # 3.0 versiyasi bilan buzilgan, bu tilning kengaytmasi .NET platformasiga asoslanmagan). CLR boshqa barcha .NET tillariga o'xshab C + dasturini taqdim etadi, "klassik" dasturlash tillarida etishmayotgan ko'plab xususiyatlar. Masalan, axlat yig'ish C # ning o'zida amalga oshirilmaydi, lekin CLR C # da yozilgan dasturlar uchun xuddi VB.NET, J # va boshqa dasturlar singari bajariladi.
    Ushbu turdagi dinamik ish vaqtini bog'lab qo'yish, JavaScript-ga o'xshash usulda qo'ng'iroqlarni amalga oshirish va ob'ektning vaqtini tuzish imkoniyatini beradi.
    C # kalit so'z vakili orqali kuchli yozilgan funktsional ko'rsatkichlarni qo'llab-quvvatlaydi. Qt platformasining soxta C ++ signali va uyasi singari, C # nashr etish va obuna bo'lish uslubidagi tadbirlarni o'z ichiga olgan semantikaga ega, ammo C # buni amalga oshirish uchun vakillardan foydalanadi. C # Java-ga o'xshash sinxronlashtirilgan usulda qo'ng'iroqlarni [MethodImpl (MethodImplOptions.Synchronized)] atributi orqali taklif etadi va kalit so'zni qulflash orqali o'zaro eksklyuziv qulflarni qo'llab-quvvatlaydi.

    Download 25.64 Kb.
    1   2   3




    Download 25.64 Kb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    Sr.No. Bu belgi deb nomlangan belgilar ketma-ketligini belgilaydi

    Download 25.64 Kb.