simvolik konstantalar va makroslar

DOCX 9 pages 34.2 KB Free download

Page preview (5 pages)

Scroll down 👇
1 / 9
7-ma'ruza simvolik konstantalar va makroslar. makroslar. parametrli makrolar. #define direktivasi bilan ishlash. shartli kiritish. makroslar bilan ishlash uchun standart makroslar. standart kirish va chiqishni qayta yo'naltirish reja: 1. simvolik konstantalar va makroslar 2. makroslar. parametrli makrolar 3. #define direktivasi bilan ishlash. shartli kiritish. 4. makroslar bilan ishlash uchun standart makroslar. 5. standart kirish va chiqishni qayta yo'naltirish 1. simvolik konstantalar va makroslar ramziy (yoki hali ham ramziy) doimiy bir xil literal (sehrli raqam), faqat identifikator bilan. c++ da ramziy konstantalarni e’lon qilishning ikki yo‘li mavjud. ulardan biri yaxshi, biri unchalik yaxshi emas. keling, ikkalasini ham ko'rib chiqaylik. yomon yo'l: o'rnini bosuvchi matn bilan so'l ob'ektlarni belgilar konstantalari sifatida ishlatish ushbu usul o'tmishda keng qo'llanilgan, shuning uchun uni eski kodlarda ko'rishingiz mumkin. preprotsessorlar va direktivalar bo'yicha 22-darsda biz so'l ob'ektlarning ikkita ko'rinishga ega ekanligini aytdik - almashtiriladigan matnli va matnsiz. birinchi holatni ko'rib chiqing (almashtirish matni bilan). bu shunday ko'rinadi: #define …
2 / 9
di, hatto sharhlarsiz ham. ikkinchidan, agar raqamni o'zgartirish kerak bo'lsa, faqat #define direktivasiga o'zgartirish kiritish kifoya qiladi, dasturdagi boshqa barcha max_students_per_class identifikatorlari qayta kompilyatsiya qilinganda avtomatik ravishda yangi qiymat bilan almashtiriladi. o'ylab ko'ring ko'proq bitta misol : #bir_sinfda_maks_talabalarni 30 tani aniqlang #max_name_length 30 ni aniqlang int max_students = numclassrooms * max_students_per_class; setmax(max_name_length); #bir_sinfda_maks_talabalarni 30 tani aniqlang #max_name_length 30 ni aniqlang int max_students = numclassrooms * max_students_per_class; setmax(max_name_length); bu erda max_students_per_class va max_name_length bir xil qiymatlarga ega bo'lsa ham, turli xil ob'ektlar bo'lishi kerakligi aniq (30). xo'sh, nega bu usul yomon? buning ikkita sababi bor. birinchidan, makrolar identifikatorlarni ma'lum qiymatlar bilan almashtiradigan preprotsessor tomonidan qayta ishlanadi. ushbu qiymatlar tuzatuvchida ko'rinmaydi (u sizning haqiqiy kodingizni ko'rsatadi). kompilyatsiya qilinganda int max_students = numclassrooms * 30; tuzatuvchida siz int max_students = numclassrooms * max_students_per_class; ni ko'rasiz. max_students_per_class qiymatini bilishingiz kerak bo'lsa-chi? siz uni kodda o'zingiz topishingiz kerak bo'ladi. va bu dastur hajmiga qarab biroz …
3 / 9
dan, qamrov) barcha qoidalariga amal qiladi. qoida: belgi konstantalarini yaratish uchun const dan foydalaning. dasturda ramziy konstantalardan foydalanish ko'pgina dasturlarda belgilar konstantasi butun kod davomida ishlatilishi kerak (faqat bir joyda emas). ular o'zgarmas fizik yoki matematik konstantalar (masalan, pi yoki avogadro) yoki dasturingizdagi o'ziga xos qiymatlar bo'lishi mumkin. har safar kerak bo'lganda ularni yozmaslik uchun - ularni bir joyda aniqlang va kerak bo'lganda foydalaning. shunday qilib, agar siz ularni o'zgartirishingiz kerak bo'lsa, bitta faylga o'tish va u erda o'zgartirishlar kiritish kifoya qiladi va butun dasturni tozalamaydi. buni qanday qilish kerak? juda onson: konstantalarni saqlash uchun sarlavha faylini yarating. sarlavha faylida nom maydonini e'lon qiling (53-dars). yaratilgan nomlar maydoniga barcha konstantalaringizni qo'shing (ularning barchasi const kalit so'zi bilan ekanligiga ishonch hosil qiling). #include sarlavha fayli kerak bo'lganda. masalan , konstantalar.h fayli : #ifndef constants_h #constants_h ni aniqlang // doimiylarni saqlash uchun o'z nomlar maydonini belgilang nom maydoni konstantalari { const double …
4 / 9
sturga fizik konstantalarga ega faylni kiritishingiz mumkin. makroslar va funksiyalar bir qarashda makroslar oddiy funktsiya chaqiruvi kabi ko'rinishi mumkin. albatta, ular biroz g'alati sintaksisga ega, ammo ular oddiy funktsiyalar kabi "o'zini tutadi". keyin nima farqi bor? makroni shartli ravishda dastur kodini qayta ishlash va almashtirish funktsiyasi deb atash mumkin: dastur yig'ilgandan so'ng, makrolar makro ta'riflar bilan almashtiriladi. bu yerda qanday bu o'xshaydi : #include #sum(x, y) (x + y) ni aniqlang int main(int argc, char *argv[]) { int a = 5; int b = 10; int sum = sum(a, b); printf("%d\n", summa); } ushbu kod quyidagilarga aylantiriladi: /* qayta ishlangan kod o'tkazib yuborilgan */ int main(int argc, char *argv[]) { int a = 5; int b = 10; int sum = (a + b); printf("%d\n", summa); } funktsiya chaqirilganda, u uchun yangi stek ramkasi ajratiladi va u mustaqil ravishda bajariladi va kodning qaysi joydan chaqirilganiga bog'liq emas. shunday qilib, turli …
5 / 9
lmaydi. tuzatish vositasida siz funktsiyani kiritishingiz va uning kodini o'rganishingiz mumkin, ammo bu makroslar bilan ishlamaydi. shuning uchun, agar biron sababga ko'ra so'l muvaffaqiyatsiz bo'lsa, muammoni aniqlashning yagona yo'li uning ta'rifiga o'tish va u erda tartiblashdir. eslatma. tarjima. har bir makrosning ta'rifiga o'tish o'rniga, siz kompilyatordan makrolarni kengaytirishni so'rashingiz mumkin - bu gcc -e source.c buyrug'i yordamida amalga oshirilishi mumkin . yodda tutingki, agar siz kodingizga standart sarlavhali fayllarni kiritsangiz, oldindan ishlov berishdan so'ng kodingizda minglab qatorlar bo'lishi mumkin, shuning uchun kompilyator chiqishini faylga qayta yo'naltirishga arziydi. shu bilan birga, makrolarning funktsiyalarga nisbatan bir aniq afzalligi aniqlanishi mumkin - ishlash. makro funksiyadan tezroq. yuqorida aytib o'tilganidek, funktsiyaga qo'shimcha resurslar ajratiladi, ularni makrolar yordamida saqlash mumkin. bu afzallik cheklangan resurslarga ega tizimlarda muhim rol o'ynashi mumkin (masalan, juda eski mikrokontrollerlarda). ammo zamonaviy tizimlarda ham dasturchilar kichik tartiblar uchun makroslar yordamida optimallashtirishni amalga oshiradilar. eslatma. tarjima. c dasturida resurslardan foydalanishni optimallashtirishning qiziqarli …

Want to read more?

Download all 9 pages for free via Telegram.

Download full file

About "simvolik konstantalar va makroslar"

7-ma'ruza simvolik konstantalar va makroslar. makroslar. parametrli makrolar. #define direktivasi bilan ishlash. shartli kiritish. makroslar bilan ishlash uchun standart makroslar. standart kirish va chiqishni qayta yo'naltirish reja: 1. simvolik konstantalar va makroslar 2. makroslar. parametrli makrolar 3. #define direktivasi bilan ishlash. shartli kiritish. 4. makroslar bilan ishlash uchun standart makroslar. 5. standart kirish va chiqishni qayta yo'naltirish 1. simvolik konstantalar va makroslar ramziy (yoki hali ham ramziy) doimiy bir xil literal (sehrli raqam), faqat identifikator bilan. c++ da ramziy konstantalarni e’lon qilishning ikki yo‘li mavjud. ulardan biri yaxshi, biri unchalik yaxshi emas. keling, ikkalasini ham ko'rib chiqaylik. yomon yo'l: o'rnini bosuvchi matn bilan so'l ...

This file contains 9 pages in DOCX format (34.2 KB). To download "simvolik konstantalar va makroslar", click the Telegram button on the left.

Tags: simvolik konstantalar va makros… DOCX 9 pages Free download Telegram