Ma`lumotlar : 1092
Xabarlar soni: 314
Bugun: 18.4.2024
Soat: 1:52
Algoritmlarda ishlatiladigan tiplar
Muallif: Mengliyev Sh.
Qo`shilgan sana: 2017-11-24
Algoritmlarda ishlatiladigan tiplar
Ushbu mavzu boshlanishida ma’lumotlar tipi konsepsiyasi va ma’lumotlarning asosiy tiplari xossalari keltirilgan. Keyin sanaluvchi va cheklangan tiplar strukturasi ko‘rib chiqilgan. Bundan keyin ma’lumotlarning strukturali tiplari o‘rganib chiqilgan bo‘lib, asosiy e’tibor massivlar, yozuvlar va umumlashmalarga qaratilgan. Xulosada ko‘p turdagi va sslkali tiplar ko‘rib chiqilgan.
Tiplarning har bir kategoriyasi uchun ishlab chiqarish muammolari ko‘rib chiqilgan va kerakli tillar ishlab chiqaruvchilari tomonidan qabul qilinuvchi konstrukturaviy qarorlar tushuntirilgan. So‘ngra, ushbu tillarning strukturalariga baho berilgan.
Tiplar strukturasiga ularni amalga oshirish metodlari katta ta’sir ko‘rsatadi. Ushbu sababga ko‘ra ushbu mavzuga yana bir ahamiyatli bo‘lim qo‘shilgan bo‘lib, u ma’lumotlar, asosan massivlarni amalga oshirish muammolariga yo‘naltirilgandir.
Ma’lumotlarni qayta ishlash orqali kompyuter natijalarga erishadi. Ushbu jarayonni bajarishning osonligi ma’lumotlar tipi ushbu masalaga qanchalik muvofiqligi bilan o‘lchanadi. Buning natijasida, mos tiplarning xilmaxilligi va ma’lumotlar strukturalarini qo‘llabquvvatlash tilda oldindan ko‘rib chiqilishi juda muhim.
Ma’lumotlar tiplarining zamonaviy konsepsiyalari oxirgi 40 yillardan beri rivojlanib kelmoqda. Boshlang‘ich dasturlash tillarida aniq bir masalalarga mos keluvchi barcha ma’lumotlarning strukturalari ushbu tilda qo‘llaniluvchi ma’lumotlarning asosiy strukturalarining kichik miqdori bilan shakllantirilgan. Masalan, FORTRAN 90 tiligacha ishlab chiqilgan FORTRAN tili versiyalarida aloqa ro‘yxati va ikkilik daraxtlar, odatda, massivlar yordamida modellashtirilgan.
FORTRAN I tilida qo‘llanilgan modeldan tashqariga qo‘yilgan birinchi qadam COBOL tilidagi ma’lumotlar bazasi strukturasini ishlab chiqaruvchilari tomonidan amalga oshirilgan bo‘lib, bu dasturchilarga o‘nlik sanoq sistemasidagi sonlar aniqligini o‘rnatish va axborot saqlovchi yozuvlarni taqdim etish uchun ma’lumotlarning strukturaviy tiplarini qo‘llash imkonini bergan. PL/I tilida butun sonli qiymatlar va haqiqiy sonlar aniqligini o‘rnatish imkoniyati yanada mukammallashtirildi. Keyinchalik, ushbu imkoniyatni taqdim etuvchi vositalar Ada va FORTRAN 90 tillariga kiritildi. Ilovalar sohasini kengaytirish maqsadida, PL/I tiliga turli tipdagi ma’lumotlar kiritildi. Fikrimizcha, dasturchiga asosiy tipdagi opreatorlar hamda ma’lumotlarni bergan yaxshi edi, bu esa foydalanuvchi tomonidan aniqlanuvchi ma’lumotlar tipini yaratishga imkon berardi, ularga struktura biriktirilar edi, xuddi bu ALGOL 68 tilida bajarilganidek. Bu ko‘rinib turganidek, ma’lumotlar tiplarini shakllantirish sohasidagi eng katta yutuqlardan biri hisoblanadi. Foydalanuvchi tomonidan aniqlanuvchi ma’lumotlar tiplarining afzalliklarini aytib o‘tamiz. Ushbu tiplar dasturlarning o‘qiluvchanligini oshiradi, chunki ularga ma’noli ismlarni qo‘llash mumkin. Foydalaluvchi tomonidan aniqlanuvchi tiplar o‘zgaruvchilar tiplarini tekshiradi. Foydalaluvchi tomonidan aniqlanuvchi tiplar mavjud bo‘lmasligi mumkin emas. Bundan tashqari, ushbu tiplar dastur modifikatsiyasini yaxshilaydi: dasturchi dasturdagi o‘zgaruvchilar kategoriyalarining tiplarini e’lon qilish operatorini o‘zgartirish orqali o‘zgartirishi mumkin.
1970yillar oxirlarida paydo bo‘lgan ma’lumotlar tiplarini shakllantirish konsepsiyasi foydalanuvchi tomonidan aniqlanuvchi tiplar g‘oyalarini birlashtirish natijasida Ada 83 tiliga kiritilgan edi. Foydalaluvchi tomonidan aniqlanuvchi ma’lumotlar tiplari asosida yotuvchi metodologiyasi shundan iboratki, dasturchi o‘zgaruvchilarning har bir alohida sinflari uchun alohia tip yaratishi lozim va u vazifaning predmetli sohasida aniqlanadi. Bundan tashqari, vazifaning predmetli sohasidan o‘zgaruvchilar abstraksiyasi bo‘lgan tiplar unikalligini dasturlash tili ta’minlashi lozim. Bu etarli darajada kuchli konsepsiya bo‘lib, dasturiy ta’minot ishlab chiqarilish jarayoniga katta ta’sir ko‘rsatadi. Yana bir qadam bosib Ada 83 tilida modellashtirilishi mumkin bo‘lgan ma’lumotlarning mavhum tirlariga o‘tamiz. Ma’lumotlarning mavhum tiplari asosida yotuvchi g‘oya tipni qo‘llashdan ushbu tipdagi o‘zgaruvchilarni e’lon qilish usuli hamda ular ustida bajariluvchi amallardan ajratishdan iborat. Yuqori bosqichli dasturlash tillarida ko‘rib chiqilgan ma’lumotlarning barcha tiplari mavhum hisoblanadi. Foydalanuvchi tomonidan aniqlanuvchi mavhum tipli ma’lumotlar 10 mavzuda ko‘rib chiqilgan.
Ma’lumotlarning eng ko‘p tarqalgan ikki strukturaviy (noskalyar) tiplari massivlar hamda qaydlar hisoblanadi. Ma’lumotlarning boshqa bir nechta turlari kabi tip operatorlari yoki konstruktorlar orqali beriladi. Ulardan ushbu tipdagi o‘zgaruvchilarni yaratish uchun foydalaniladi. Tip operatorlariga misol qilib C tilida mavjud aylana hamda kvadrat qavslarni, yulduzchalarni keltirish mumkin. YUlduzchalardan massivlar, funksiyalar va ko‘rsatkichlarni berish uchun foydalaniladi.
Deskriptorlar terminlarida o‘zgaruvchilar haqida mavhum ham, aniq ham o‘ylash qulay. Deskriptor o‘zgaruvchilar atributlarining umumlashmasi bo‘lib, ular ushbu atributlarni saqlovchi xotira katakchalari to‘plami ko‘rinishida amalga oshiriladi. Agar barcha o‘zgaruvchilar statistik bo‘lsa, u holda deskriptorlar faqat kompilyasiya vaqtidagina kerak. Statik deskriptorlar identifikatorlar jadvali bo‘lagi ko‘rinishida kompilyator orqali yaratiladi va kompilyasiya davrida qo‘llaniladi. Dinamik atributlar yoki uning bo‘laklari, o‘z navbatida, dastur bajarilish paytida dinamik deskriptorga muhtoj. Bu holda deskriptordan dasturlar bajarilishini qo‘llabquvvatlash tizimi foydalanadi. Statik deskriptorlar ham, dinamik deskriptorlar ham tiplarni tekshirish hamda xotirada o‘zgaruvchilarni joylash va o‘chirish amallarida foydalaniladi.
O‘zgaruvchi qiymati va u egallovchi xotira deganda, “ob’ekt” so‘zi tushuniladi. Ushbu kitobda “ob’ekt” deganda foydalanuvchi tomonidan aniqlanuvchi mavhum tipli ma’lumotlar nusxalari tushuniladi va biz undan o‘rnatilgan tiplar o‘zgaruvchilari qiymatlarini tavsiflashda foydalanmadik. Dasturlashning ob’ektga yo‘naltirilgan tillarida har qanday o‘rnatilgan yoki foydalanuvchi tomonidan aniqlangan sinf nusxasi ob’ekt deganidir. Bunday ob’ektlar 10 va 11 mavzularda to‘liq ko‘rib chiqiladi.
Keyingi bo‘limlarda keng tarqalib borayotgan ma’lumotlar tiplari ko‘rib chiqilgan. Ulardan ko‘pchiligi uchun ular bilan bog‘liq ishlab chiqarish muammolari shakllantiriladi. Ularning barchasi uchun kamida bitta misol keltirilgan. Ma’lumotlarning barcha tiplari uchun quyidagi muammo umumiydir: mavjud tipli o‘zgaruvchilar bilan qanday amallar ko‘rib chiqilgan va ular qanday beriladi?
Ma’lumotlarning elementar tiplari
Boshqa tiplar ta’riflarida aniqlanmaydigan ma’lumotlar tiplari ma’lumotlarning elementar tiplari deyiladi. Dasturlash tillarining deyarli barchasi ma’lumotlarning elementar tiplarining aniq to‘plamini ko‘rib chiqadi. Ushbu tiplaridan bir xillari uskunaviy ta’minot xususiyatlarining akslantiruvlari hisoblanadi – masalan, butun sonlar. Boshqa tiplarni amalga oshirish ahamiyatsiz dasturiy to‘xtalishni talab qiladi.
Ma’lumotlarning strukturaviy tiplarini yaratish uchun tilda ma’lumotlarning asosiy tiplari bir yoki bir nechta konstruktorlari bilan birga qo‘llaniladi.
Sonli tiplar
Ko‘pchilik boshlang‘ich dasturlash tillarida faqat sonli elementar tiplar mavjud bo‘lgan. Zamonaviy tillarda ushbu tiplar oldingidek asosiy rolni o‘ynaydi.
Butun sonlar
Eng ko‘p tarqalgan elementar sonli tip butun son hisoblanadi. Hozirda ko‘p kompyuterlar butun sonlarning bir qancha o‘lchamlarini qo‘llaydi va ushbu imkoniyatlar dasturlashning ba’zi tillarida o‘z aksini topgan. Ada tili amalga oshirilganda, masalan, butun sonlarning uch o‘lchamliligiga yo‘l qo‘yiladi: SHORT INTEGER, INTEGER va LONG INTEGER. S kabi ba’zi dasturlash tillari butun sonlarning ishorasiz tiplariga ega va ushbu tiplar o‘zida ishorasiz butun sonlarni taqdim etadi.
Barcha butun sonlar bitlar satrlari ko‘rinishida kompyuterda beriladi, bunda bitlardan biri (qoidaga ko‘ra, chapdan oxirgisi) ishora taqdim etadi. Ma’lumotlarning butun tiplari uskunaviy ta’minot orqali ta’minlanadi.
Manfiy butun sonlar ishorali son yozuvi ko‘rinishida xotirada saqlanadi, bunda ishora biti son manfiyligini ko‘rsatib, qolgan bitlar sonlarning absolyut qiymatlarini taqdim etadi. Ishorali sonni yozish kompyuter arifmetikasida qo‘llanilmaydi. Ko‘pgina zamonaviy kompyuterlarda manfiy sonlarni saqlash uchun hisoblash va sanash uchun qulay bo‘lgan ikkilik sanoq sistemasida sonning qo‘shimcha kodi qo‘llaniladi. Manfiy butun sonning qo‘shimcha kodi ikkilik sanoq sistemasida mantiqan unga musbat son va bir qo‘shish orqali bajariladi. Bir qancha kompyuterlarda quyidagi kabi boshqacha usul qo‘llaniladi: ikkilik sanoq sistemasidagi sonning teskari kodi. Bunday yozishda butun sonning manfiy qiymati uning absolyut qiymatiga mantiqiy qo‘shilish hisoblanadi. Teskari aloqa ko‘rinishida taqdim etishning kamchiligi shundaki, u 0 sonini yozishning ikki usuli mavjudligidir. Agar sizni butun sonlarni taqdim etish muammosi qiziqtirsa, assembler tilidagi har qanday dasturlash kitobidan o‘qib olishingiz mumkin.
Haqiqiy (suzuvchi nuqtali) sonlar tiplari
Haqiqiy sonlar tiplari bunday sonlarning ko‘pchiligining taqdimoti faqat approksimatsiya bo‘lishiga qaramay haqiqiy sonlarni modellashtiradi. Masalan, pi va e (natural logarifm asosi) asosiy sonlaridan hech biri haqiqiy sonlar tiplari ko‘rinishida aniq taqdim etilishi mumkin emas. Ushbu sonlardan hech qaysisi yozuvning hech qanday aniq ko‘rinishida taqdim etila olmaydi. Ko‘pchilik kompyuterlarda haqiqiy sonlar ikkilik kodlarda saqlanadi, bu esa ularni yozish muammosini yanada murakkablashtiradi. Masalan, hattoki o‘nlik kattalik bo‘lgan 0.1 ni ham ikkilik sonlarning aniq bir to‘plami ko‘rinishida taqdim etib bo‘lmaydi. haqiqiy sonlarini qo‘llashning boshqa muammosi arifmetik amallar bajarilishida aniqlikni yo‘qotish hisoblanadi. haqiqiy sonlarni taqdim etish muammolari to‘g‘risida kitobdan (Knuth, 1981) to‘liq bilish mumkin.
Haqiqiy sonlar ilmiy yozuvdan olingan formada mantiss va bosqich ko‘rsatkiqlari kabi taqdim etiladi. Ilgari kompyuterlar haqiqiy kattaliklarni turlicha taqdim etgan, ammo hozirgi paytda ko‘pchilik mashinalar IEEE Floating-Point Standard 754 standarti bilan tavsiflangan formatni qo‘llaydi. Dasturlash tillarini amalga oshirish vositalarini ishlab chiqaruvchilar uskunaviy ta’minot orqali qo‘llaniluvchi har qanday taqdimotni qo‘llaydi. Dasturlash tillarining ko‘pchiligi haqiqiy sonlarning ikki tipini saqlaydi, float va double. float tipli o‘zgaruvchilar xotiraning to‘rt baytiga teng bo‘lgan standart o‘lchamga ega. double tipidan o‘lcham jihatdan katta mantissalar talab qilinuvchi sohalarda foydalaniladi. O‘zgaruvchilarning ushbu tiplariga tegishli yozuvlar, odatda, ikki marta katta xotirani egallaydi va mantissada minimum ikki marta ko‘p bitlarga ega.
Haqiqiy sonlar yordamida taqdim etish mumkin bo‘lgan ko‘pgina kattaliklar ularning aniqlishi hamda diapazoni orqali aniqlanadi. Son aniqligi – bu uning mantissasining aniqligi bo‘lib, u bitlar soni bilan o‘lchanadi, diapazon tushunchasiga esa mantissa o‘zgarishi diapazoni va bosqich ko‘rsatkichi o‘zgarish diapazoni kiradi.
Ba’zi kichik kompyuterlarning uskunaviy ta’minoti haqiqiy amallarni o‘zida saqlamaydi. Bunday mashinalarda ushbu amallar dasturiy ta’minot yordamida modellashtiriladi, bu esa 10100 marta ularning bajarilishini sekinlashtiradi.
O‘nli sonlar
Ko‘pgina yirik kompyuterlar, kommersiya ilovalari uchun ishlab chiqarilgan bo‘lib, o‘nli sonlar tiplarini qo‘llovchi uskunaviy ta’minotga ega. Bunday tipli ma’lumotlarga chekli o‘nli sonlar va o‘nli nuqtadan iborat bo‘lib, ular o‘rnatilgan joyida bo‘ladi va butun qismdan kasr qismini ajratadi. Bunday tipli ma’lumotlar kommersiya ilovalarida asosiy hisoblanadi, shuning uchun ular COBOL tilining asosini tashkil qiladi.
O‘nli sonlarning ( haqiqiy tiplardan farqli ravishda) afzalliklari shundaki ular, o‘nli kattaliklarning aniq qiymatiga ega, bu albatta, chekli diapazonda bo‘ladi. Ularning kamchiliklari bosqich ko‘rsatkichi yo‘qligi sabab o‘zgaruvchilarning o‘zgarish diapazonining cheklanganligi va ularni xotirada taqdim etishda isrofgarchilikka yo‘l qo‘yilishi hisoblanadi.
O‘nli sonlar, belgilar satri kabi, xotirada o‘nli shifrlarning ikkilik kodlari orqali yoziladi. Bunday taqdimotlar ikkilik kodlangan o‘nli sonlar (BCD – binary-coded decimal). Ba’zi hollarda o‘nli kattaliklar 1 baytga bir shifr ko‘rinishida beriladi, boshqalarida esa bayt ikkita shifrga ega. Buni misolda ko‘rsatamiz. O‘nlik shifrni kodlashtirish eng kamida 4 bit talab qiladi. Natijada, kodlangan olti razryadli o‘nlik sonni saqlash uchun 24 bit xotira kerak bo‘ladi. Buni ikkilik ko‘rinishda saqlash atigi 20 bit talab qiladi. O‘nlik kattaliklar ustida amallar mashinalarning uskunaviy ta’minoti orqali amalga oshiriladi yoki dasturiy ta’minot orqali modellashtiriladi.
Mantiqiy tiplari
Mantiqiy tiplari tiplarning orasida eng oddiysi hisoblanadi. Ularning qiymati diapazoni faqat ikkita elementdan iborat bo‘lib, birinchisi rostlik ikkinchisi yolg‘onlik belgisidir. Birinchi bo‘lib ushbu tiplar ALGOL 60 tilida paydo bo‘ldi va 1960 yildan boshlab dasturlashning ko‘pgina universal tillariga qo‘shildi. Keng tarqalgan S tili bundan mustasnodir, bunda shart o‘rniga sonli ifodalar qo‘llanilishi mumkin. Bunday ifodalarda nol bo‘lmagan qiymatli barcha operandlar to‘g‘ri, nol esa yolg‘on qiymat hisoblanadi. C++ tilida mantiqiy tipi ko‘rib chiqilganiga qaramay, bu tilda mantiqiy tiplari o‘rniga sonli tiplarni qo‘llash ham mumkin.
Mantiqiy tiplari ko‘pincha o‘zgartirishlar yoki ishoralarni taqdim etish uchun qo‘llaniladi. Ushbu maqsadlar uchun boshqa tiplar ham ishlatilishi mumkinligiga qaramay, mantiqiy tiplari dasturning o‘qiluvchanligini oshiradi.
Mantiqiy qiymatlar yagona bit bo‘lib taqdim etilishi mumkin, ammo ko‘pgina mashinalarda xotiraning alohida bitiga samarali qarashning iloji bo‘lmagani uchun, ushbu qiymatlar xotiraning minimal katakchasida saqlanadi.
Belgili tiplar
Belgili ma’lumotlar kompyuterlarda raqamli kodlash orqali saqlanadi. Kodlashning eng ko‘p tarqalgan tizimi ASCII (American Standard Code for Information Interchange – Axborot almashinuvi uchun Amerika standart kodi) bo‘lib, bunda 128 turli belgilarni kodlash uchun 0127 qiymatli diapazon qo‘llaniladi. Alohida belgilar kodlarini qayta ishlashni ta’minlovchi vositalar sifatida ko‘pchilik dasturlash tillari ular uchun alohida asosiy tip ko‘rib chiqadi.
Kommersiya dunyoviylashuvi va kompyuterlar orasidagi aloqalarning zaruriyligi natijasida, butun dunyo bo‘ylab ASCII belgilar to‘plami tezroq keraksiz bo‘lib bormoqda. Yaqinda alternativ 16 bitli belgilar to‘plami ishlab chiqildi, u Unicode nomini oldi. Ushbu to‘plamda dunyoning ko‘pgina tabiiy tillarining belgilari kiritilgan. Masalan, unda kirilcha belgilar va taycha raqamlar mavjud. Unicode belgilar to‘plamini birinchi bo‘lib qo‘llagan dasturlash tili Java tili hisoblanadi, ammo ushbu to‘plam albatta boshqa keng tarqalgan tillarda ham qo‘llanila boshlaydi.
Belgili satrlar
Belgili satrlar belgilar ketmaketligi hisoblanadi. O‘zgarmas belgili satrlar natijalar chiqarilishini o‘zi bilan birga olib keladi, barcha ma’lumot tiplarini kiritish va chiqarish ko‘pincha satrlar orqali bajariladi. Albatta, belgili satrlar barcha dasturlarda asosiy rol o‘ynaydi.
Ishlab chiqarish muammolari
Quyida belgili satrlar bilan bog‘liq ishlab chiqarishning ikkita asosiy muammosi keltirilgan.
Satrlar oddiygina belgilardan iborat bo‘lgan massivlar xilmaxilligi yoki elementar tip (massivga xos indeksatsiyasiz) bo‘lishi mumkinmi?
Satrlar statistik yoki dinamik uzunlikka ega bo‘lishi kerakmi?
Satrlar va ular ustida amallar
Agar satrlar elementar tip kabi aniqlanmagan bo‘lsa, satrli ma’lumotlar, odatda, alohida belgilardan iborat massivlarda saqlanadi va ularga massiv elementi bo‘libgina ssыlkalanish mumkin. Bunday yondashuv Pascal, C, C++ va Ada dasturlash tillarida qabul qilingan. Pascal tilida satrlar asosiy tip bo‘lmaydi va packed atributiga ega char massivlariga qiymatlar berish mumkin va ular munosabatlar operatorlari orqali o‘zaro taqqoslanishi mumkin.
Ada tilida STRING tipi o‘rnatilgan hisoblanadi va bir o‘lchamli elementlar massivini aniqlaydi, ular CHARACTER tipiga tegishli. Quyi satrni chaqirish butun sonli diapazon orqali beriladi, ular aylana qavsga olingan hamda kerakli belgilar joylashuvini ko‘rsatadi. Masalan, NAME1 (2:4) buyrug‘i ikkinchi, uchinchi va to‘rtinchi satr belgiidan iborat quyi satrni beradi.
Ada tilida belgilar satri konkatenatsiyasi operatsiya bo‘lib, & belgii bilan beriladi. Keyingi operator NAME2 o‘zgaruvchisini NAME1 o‘zgaruvchisi qiymati bo‘lgan satrning o‘ng oxiriga oxiriga qo‘yishni bajaradi:
NAME1 := NAME1 & NAME2;
Masalan, agar NAME1 o‘zgaruvchisi “PEACE” satriga ega bo‘lib, NAME2 o‘zgaruvchisi “FUL” satriga ega bo‘lsa, qabul qilish operatsiyasidan so‘ng NAME1 o‘zgaruvchisi “PEACEFUL” satriga ega bo‘ladi.
C va C++ tillarida belgilar satrini saqlash uchun char massivlaridan foydalaniladi; satrlar bilan amallar to‘plami esa string.h sarlavhali faylli odatiy kutubxonada ko‘rib chiqilgan. Satrlar bilan bajariluvchi amallar va kutubxona funksiyalarining ko‘pchiligida belgilar satrlari alohida belgi bilan tugallanadi deyiladi: nolli bayt bo‘lib, 0 soni bilan taqdim etiladi.
char *str = “apples”;
Ushbu misolda str – char tipining ko‘rsatkichi bo‘lib, apples0 belgilar satrini manzillaydi, bu erda 0 – nol belgii. str ko‘rsatkichini initsializatsiyalashga ruxsat berilgan, chunki belgilar satrlarining literallari char tipi ko‘rsatkichliari orqali taqdim etiladi.
C va C++ tillarida keng tarqalgan kutubxona funksiyalarining ba’zilarini aytib o‘tamiz, ular belgilar satrlari bilan amallar bajaradi. Ushbu strcpy funksiyasi satrlarni joyini o‘zgartiradi; strcat funksiyasi bir mavjud satrni boshqasi bilan konkatenlashtiradi; strcmp funksiyasi ikki berilgan starlarni taqqoslaydi (ASCII kodi bo‘yicha).
FORTRAN 77, FORTRAN 90 va BASIC tillarida satralr asosiy tiplar kabi interpretatsiya qilinadi va ular uchun qaabul qilish, konkatenatsiya, ssыlka va munosabatlar operatorlari ko‘ri chiqilgan.
Quyidagi dastur bo‘lagini ko‘rib chiqamiz:
LETTER = ‘abcdefghijklmnopqrstuvwxyz’
WORDPAT = BREAK (LETTER) SPAN (LETTER) . WORD
LETTER – bu tezkor xarflarning baridan iborat satr qiymati hisoblangan qiymatdir. WORDPAT – bu namuna bo‘lib, u quyidagicha so‘zlarni tavsiflaydi: harf topilmaguncha boshida barcha belgilar qo‘yiladi, keyin esa to harf bo‘lmagan belgi topilmaguncha ushbu harflar birlashtiriladi. Namuna “.” operatoriga ham ega.
Ushbu namuna operatorda ham qo‘llanilishi mumkin
TEXT WORDPAT
“+” belshisi ismda kamida bitta belgi bo‘lishi lozimligini bildiradi. SHunday qilib, butun etalon satrga mos, bundan so‘ng esa kamida bitta harflar yoki sonlar keladi.
Quyidagi iboraviy namuna ko‘rib chiqamiz:
/\d+\.?\d*|\.\d+/
Ushbu namuna sonli o‘zgarmaslarga mos. \. belgilari sonning o‘nlik kattaligida nuqta beradi.
Satrlar uzunligi namunalari
Satrli kattaliklar uzunligiga tegishli bir qancha loyihaviy echimlar mavjud. Birinchidan, uzunlik statistik bo‘lishi mumkin va e’londa berilishi mumkin. Bunday satr statik uzunlikli satr deyiladi. Bunday satrlar FORTRAN 77, FORTRAN 90, COBOL, Pascal va Ada tillarida mavjud. Masalan, FORTRAN 90 tilining quyidagi operatori NAME1 va NAME2 o‘zgaruvchilarini e’lon qiladi:
CHARACTER (LEN = 15) NAME1, NAME2
Statistik uzunlikdagi satrlar doimo to‘liq; agar satrli o‘zgaruvchiga kichik uzunlikdagi satr berilsa, bo‘sh joylar 0 belgilari bilan to‘ldiriladi.
Baholash
Satrli tiplar dasturlarning yozish osonligini oshiradi. Satrlarni chaqirish, elementar satrli tiplarni chaqirishdan osonroq.
Satrlar bilan amallar zaruriy hamda satrli tiplarga tegishli kattaliklarda mavjud bo‘lishi shart.
Belgili satrlarni amalga oshirish
Bog‘langan ro‘yxatli metodlarni qo‘llash katta hajmdagi xotirani talab qilgani bilan, bunda yuz beruvchi hodisalar oddiydir. Bunga qaramay, xotirada joylashtirish amali sekin bajariladi. Qo‘shilgan katakchalar metodi tarqatilgan va bo‘shatilgan katakchalarni boshqarish muammosini keltirib chiqaradi. Bu muammo 5.10.10.3 bo‘limda to‘liq ko‘rib chiqilgan.
Foydalanuvchi tomonidan aniqlanuvchi ketmaket tiplar
Ketmaket tip deb, ehtimol qiymatlar sohasi natural raqamlar ketmaketligi bilan bog‘liq bo‘lishi mumkin. Pascal va Ada tillarida asosiy ketmaketlikli tiplar butun, belgili va mantiqiy tiplari hisoblanadi. Ko‘pgina tillarda foydalanuvchilarning o‘zi ikkita turli ketmaket tiplarini aniqlashlari mumkin: sanaluvchi va cheklangan tiplar.
Sanaluvchi tiplar
Sanaluvchi tiplar deb, uni tavsiflashda barcha ehtimol qiymatlar sanab o‘tilgan tipga aytiladi. Oddiy sanaluvichi tip quyidagicha:
type DAYS is (Mon, Tue, Wed, Thu, Fri, Sat, Sun);
Sanaluvchi tiplarga xos muammo quyidagicha: literal o‘zgarmas bir nechta tip tavsifida kelishi mumkinmi va agar javob ha bo‘lsa, aniq literal tipi dasturda qanday aniqlanadi?
Strukturalar
Pascal tilida literal konstantani sanaluvchi tiplarning bir qancha tavsiflarida keltirish mumkin emas. Sanaluvchi tiplarga tegishli o‘zgaruvchilar massivlar indeksi kabi qo‘llanilishi mumkin, ammo kiritilishi yoki chiqarilishi mumkin emas.
type colortype = (red, blue, green, yellow);
var color : colortype;
…
color:=blue;
if color>red …
Bu erda bul ifodasi if operatorida rost deb berilgan.
Massivlar
Massivlar deb bir turdagi ma’lumotlarga aytiladi va bunda har bir alohida element birinchi elementga muvofiq holda identifikatsiyalanadi. Massiv elementini chaqirish dasturda ko‘pincha bir yoki bir nechta indeks o‘zgaruvchilarini saqlaydi. Bunday ssыlkalarni bajarish vaqtida hisoblash mumkin.
Ishlab chiqarish muammolari
Quyida massivlarga xos bo‘lgan ishlab chiqarishda kelib chiquvchi muammolar keltirilgan:
Indekslar qanday tipda bo‘lishi mumkin?
Kerakli diapazondan indeksning chiqishiga yo‘l qo‘yiladimi?
Indekslar qiymatlar sohasi cheklanganmi?
Qachon massiv xotirada joylashadi?
Indekslarning qanchasiga yo‘l qo‘yilgan?
Massivlar ular xotiraga joylashtirilganidan so‘ng initsializatsiyalanishi mumkinmi?
Massivlarning qanday kesishmasiga yo‘l qo‘yiladi yoki bunga umuman ruxsat berilganmi o‘zi?
Keyingi bo‘limlarda loyihaviy echimlarga misollar keltirilgan bo‘lib, dasturlashning eng keng tarqalgan tillarida qo‘llaniladi.
Assotsiatsiativ massivlar
Assotsiatsiativ massivlar deb, tekislanmagan ma’lumotlarning bir qancha elementlari tushuniladi, kalit deb nomlanuvchi xuddi shuncha kattaliklar bilan indekslanadi. Assotsiatsiativ bo‘lmagan massivlarda indekslarni saqlab bo‘lmaydi. Assotsiatsiativ massivlarda esa foydalanuvchi tomonidan aniqlanuvchi kalitlar massiv strukturasida saqlanishi lozim. SHunday qilib, assotsiatsiativ massivlarning har bir elementi elementlar juftligi bo‘ladi: kalit va kattalik.
Assotsiatsiativ massivlar uchun quyidagi ishlab chiqarish savollari xos hisoblanadi:
Elementlarni chaqirish formasi qanday?
Assotsiatsiativ massiv o‘lchami qanday: statistikmi yoki dinamikmi?
Strukturalar va amallar
Perl tilining assotsiatsiativ massivlari xesh deb ataladi, chunki ularning elementlari xotiraga joylanadi va xesh funksiyasi orqali ulardan chiqariladi. Perl tilida xesh ismlar fazosi aniq belgilangan: har bir xeshlangan o‘zgaruvchi protsent belgisi bilan boshlanishi kerak.
salaries = (“Cedric” => 7500, “Perry” => 57000,
“Mary” => 55750, “Gary” => 47850);
Pascal, Modula-2 va Ada tillari yozuvlarda COBOL tilida tasdiqlangan bosqichlar nomerini emas, balki o‘zinining sintaktik qoidalarini qo‘llaydi: ushbu tillarda yozuvlar strukturasini yaratish uchun ortogonal struktura qo‘llaniladi, u bir e’lonlarni boshqalariga kiritishga ruxsat beradi. Ada tilidagi quyidagi e’lonni ko‘rib chiqamiz:
EMPLOYEE_RECORD :
record
EMPLOYEE_NAME :
record
FIRST : STRING (1..20);
MIDDLE : STRING (1..10);
LAST : STRING (1..20);
end record
HOURLY_RATE : FLOAT;
end record;
C tilida yozuvlar ham ko‘rib chiqilgan va struktura deb nomlanadi. Ular ko‘p narsada Pascal tilidagi yozuvlarga o‘xshaydi. 5.8 bo‘limda ko‘rib chiqilgan variantli yozuvlar yoki birlashuvlarni strukturalar o‘zida saqlamasligi bundan mustasnodir.
FORTRAN 90 tilida yozuvlarni e’lon qilish har qanday kiritilgan yozuvlarni tip kabi tavsiflashni talab qiladi. Shunday qilib, yuqorida keltirilgan ishchi haqidagi yozuvlarja ishchi nomini yozish oldinan tavsiflashni talab qiladi, bundan keyin esa ishchi yozuvi maydonida u shunchaki tip deyiladi.
8077 marta o`qildi.