Vakillik va xulq-atvor
Tur uning ko'rinishi va bu tasvirlarni boshqaradigan operatorlar to'plami sifatida aniqlanadi.
Qiymat maydoni
Tur bu o'zgaruvchi ega bo'lishi mumkin bo'lgan qiymatlar to'plamidir. Bunday ta'riflar (ajratilgan) uyushmalar yoki turdagi dekart mahsulotlari haqida gapirishga imkon beradi.
Makon va xatti-harakatni qadrlang
Tur - bu o'zgaruvchi ega bo'lishi mumkin bo'lgan qiymatlar to'plami va ushbu qiymatlarga qo'llanilishi mumkin bo'lgan funktsiyalar to'plami.
Vakillik nuqtai nazaridan ta'rif ko'pincha ALGOL va Paskal kabi imperativ tillarda qilingan, qiymat maydoni va xatti-harakati nuqtai nazaridan ta'rif esa Simula va CLU kabi yuqori darajadagi tillarda ishlatilgan. Xulq-atvorni o'z ichiga olgan turlar ob'ektga yo'naltirilgan modellar bilan ko'proq mos keladi, ammo tuzilgan dasturlash modeli odatda kodni o'z ichiga olmaydi va oddiy eski ma'lumotlar tuzilmalari deb ataladi.
Ma'lumotlar turlari klassifikatsiyasi
Primitiv ma'lumotlar turlari. Primitiv ma'lumotlar turlari odatda o'rnatilgan yoki tilni amalga oshirish uchun asosiy bo'lgan turlardir.
Mashina ma'lumotlari turlari. Raqamli elektronikaga asoslangan kompyuterlardagi barcha ma'lumotlar eng past darajadagi bitlar (muqobil 0 va 1) sifatida taqdim etiladi. Ma'lumotlarning eng kichik manzilli birligi odatda bayt deb ataladigan bitlar guruhidir (odatda oktet, bu 8 bit). Mashina kodi ko'rsatmalari bilan ishlov berilgan birlik so'z deb ataladi (2011 yil holatiga ko'ra, odatda 32 yoki 64 bit). Ko'pgina ko'rsatmalar so'zni ikkilik son sifatida izohlaydi, shunday qilib 32 bitli so'z 0 dan {\displaystyle 2^{32}-1}2^{{32}}-1 gacha bo'lgan belgisiz butun son qiymatlarini yoki dan belgili tamsayı qiymatlarini ifodalashi mumkin. {\displaystyle -2^{31}}-2^{{31}} dan {\displaystyle 2^{31}-1}2^{{31}}-1. Ikkalasini to'ldiruvchisi tufayli mashina tili va mashina bu imzosiz va imzolangan ma'lumotlar turlarini ko'p jihatdan farqlashi shart emas.
Suzuvchi nuqtali arifmetika uchun ishlatiladigan suzuvchi nuqtali raqamlar so'zdagi bitlarning boshqa talqinidan foydalanadi. Tafsilotlar uchun suzuvchi nuqta arifmetikasiga qarang.
Mashina ma'lumotlari turlari ochiq bo'lishi yoki tizimlarda yoki past darajadagi dasturlash tillarida mavjud bo'lishi kerak, bu esa apparat ustidan nozik nazorat qilish imkonini beradi. Masalan, C dasturlash tili qisqa va uzun kabi har xil kenglikdagi butun son turlarini taqdim etadi. Agar maqsadli platformada mos keladigan mahalliy tur mavjud bo'lmasa, kompilyator mavjud turlardan foydalangan holda ularni kodlarga ajratadi. Misol uchun, agar 16 bitli platformada 32 bitli butun son so'ralgan bo'lsa, kompilyator uni ikki 16 bitli butun sonlar massivi sifatida ko'rib chiqadi.
Yuqori darajadagi dasturlashda mashina ma'lumotlari turlari ko'pincha amalga oshirish detali sifatida yashiriladi yoki mavhumlashtiriladi, bu esa ochiq bo'lsa, kodni kamroq portativ qiladi. Masalan, ma'lum bir bit kengligidagi butun sonlar o'rniga umumiy raqamli tur berilishi mumkin.
Boolean turi. Mantiqiy tip true va false qiymatlarini ifodalaydi. Faqat ikkita qiymat mumkin bo'lsa-da, samaradorlik sababli ular kamdan-kam hollarda bitta ikkilik raqam sifatida qo'llaniladi. Ko'pgina dasturlash tillarida aniq mantiqiy tip mavjud emas, buning o'rniga (masalan) 0 ni noto'g'ri va boshqa qiymatlarni rost deb izohlaydi. Mantiqiy ma'lumotlar tilning mashina tiliga talqin qilinishining mantiqiy tuzilishini anglatadi. Bu holda mantiqiy 0 qiymati False mantiqiga ishora qiladi. To'g'ri har doim nol emas, ayniqsa mantiqiy 1 deb nomlanuvchi.
Ro'yxatlar. Sanab o'tilgan tur o'ziga xos qiymatlarga ega bo'lib, ularni solishtirish va belgilash mumkin, lekin ular kompyuter xotirasida har qanday aniq tasvirga ega bo'lishi shart emas; kompilyatorlar va tarjimonlar ularni o'zboshimchalik bilan ifodalashlari mumkin. Masalan, o'yin kartalari to'plamidagi to'rtta kostyum kostyum deb nomlangan sanab o'tilgan turga tegishli CLUB, DIAMOND, HEART, SPADE nomli to'rtta hisoblagich bo'lishi mumkin. Agar V o'zgaruvchisi ma'lumotlar turi sifatida mos deb e'lon qilinsa, unga to'rtta qiymatdan istalgan birini belgilash mumkin. Ba'zi ilovalar dasturchilarga sanab qiymatlariga butun son qiymatlarini belgilashga yoki hatto ularni butun sonlarga ekvivalent sifatida ko'rib chiqishga imkon beradi.
Raqamli turlar. Butun son ma'lumotlar turlari yoki "kasr bo'lmagan sonlar". Salbiy qiymatlarni o'z ichiga olish qobiliyatiga ko'ra (masalan, C va C++ da unsigned) pastki turdagi bo'lishi mumkin. Bundan tashqari, oz sonli oldindan belgilangan subtiplarga ega boʻlishi mumkin (masalan, C/C++ da qisqa va uzun); yoki foydalanuvchilarga 1..12 (masalan, Paskal/Ada) kabi pastki diapazonlarni erkin belgilashga ruxsat bering.\
Suzuvchi nuqtali ma'lumotlar turlari odatda qiymatlarni yuqori aniqlikdagi kasr qiymatlari (matematik jihatdan ratsional sonlar) sifatida ifodalaydi, lekin ba'zida chalg'ituvchi tarzda reallar (matematik haqiqiy sonlarni chaqiruvchi) deb ataladi. Ular odatda maksimal qiymatlari va aniqligi bo'yicha oldindan belgilangan chegaralarga ega. Odatda a × 2b (a va b butun sonlar) shaklida saqlanadi, lekin tanish kasr shaklida ko'rsatiladi.
Ruxsat etilgan nuqta ma'lumotlar turlari pul qiymatlarini ifodalash uchun qulaydir. Ular ko'pincha butun sonlar sifatida ichkarida amalga oshiriladi, bu esa oldindan belgilangan chegaralarga olib keladi.
Bignum yoki o'zboshimchalik bilan aniq sonli turlari oldindan belgilangan chegaralarga ega emas. Ular ibtidoiy turlar emas va samaradorlik uchun juda kam ishlatiladi.
Kompozit turlari
Kompozit tiplar bir nechta ibtidoiy turlardan olingan. Buni bir necha usul bilan amalga oshirish mumkin. Ularni birlashtirish usullari ma'lumotlar tuzilmalari deb ataladi. Ibtidoiy turni qo‘shma turga sozlash, odatda, yangi turga olib keladi, masalan. array-of-integer butun sondan boshqa turdagi.
Massiv (vektor, roʻyxat yoki ketma-ketlik deb ham ataladi) bir qancha elementlarni saqlaydi va alohida elementlarga tasodifiy kirishni taʼminlaydi. Massivning elementlari odatda bir xil turdagi bo'lishi kerak (lekin barcha kontekstlarda emas). Massivlar o'zgarmas uzunlikdagi yoki kengaytiriladigan bo'lishi mumkin. Massivdagi indekslar odatda ma'lum bir diapazondan (agar bu diapazondagi barcha indekslar elementlarga to'g'ri kelmasa, u siyrak massiv bo'lishi mumkin) butun son bo'lishi talab qilinadi (agar bo'lmasa, assotsiativ massiv haqida gapirish orqali bu yengillikni ta'kidlash mumkin).
Yozuv (shuningdek, kortej yoki struktura deb ataladi) Yozuvlar eng oddiylari qatoriga kiradi ma'lumotlar tuzilmalari. Yozuv odatda belgilangan raqam va ketma-ketlikda va odatda nomlar bo'yicha indekslangan boshqa qiymatlarni o'z ichiga olgan qiymatdir. Yozuvlar elementlari odatda maydonlar yoki a'zolar deb ataladi.
ittifoq. Birlashma turi ta'rifi ruxsat etilgan ibtidoiy turlarning qaysi biri o'z misollarida saqlanishi mumkinligini aniqlaydi, masalan. "suzuvchi yoki uzun butun son". Float va butun sonni o'z ichiga olishi mumkin bo'lgan yozuvdan farqli o'laroq; holbuki, ittifoqda bir vaqtning o'zida faqat bitta turga ruxsat beriladi.
Belgilangan birlashma (shuningdek, variant, variant yozuvi, diskriminatsiyalangan birlashma yoki ajratilgan birlashma deb ataladi) kengaytirilgan turdagi xavfsizlik uchun joriy turini ko'rsatadigan qo'shimcha maydonni o'z ichiga oladi.
To‘plam mavhum ma’lumotlar strukturasi bo‘lib, u ma’lum qiymatlarni hech qanday maxsus tartibsiz va takroriy qiymatlarsiz saqlashi mumkin. Qiymatlarning o'zi to'plamlardan olinmaydi, aksincha, mantiqiy "in" yoki "in emas" olish uchun a'zolik qiymatini sinab ko'radi.
Ob'ekt yozuv kabi bir qancha ma'lumotlar maydonlarini, shuningdek, usullar deb ataladigan ularga kirish yoki o'zgartirish uchun bir qator pastki dasturlarni o'z ichiga oladi.
String va matn turlari
Satrlar - bu so'zlarni yoki oddiy matnni saqlash uchun ishlatiladigan belgilar ketma-ketligi, ko'pincha formatlangan matnni ifodalovchi matn belgilash tillari. Belgilar ba'zi alifboning harfi, raqam, bo'sh joy, tinish belgisi va boshqalar bo'lishi mumkin. Belgilar ASCII kabi belgilar to'plamidan chiziladi. Belgilar va satr turlari belgilar kodlashiga ko'ra turli xil kichik tiplarga ega bo'lishi mumkin. Asl 7-bitli keng ASCII cheklanganligi aniqlandi va uning oʻrnini 8, 16 va 32-bitli toʻplamlar egalladi, ular turli xil lotin boʻlmagan alifbolarni (masalan, ibroniy va xitoy tillari kabi) va boshqa belgilarni kodlashi mumkin. Satrlar o'zgaruvchan uzunlikdagi yoki qat'iy uzunlikda bo'lishi mumkin va ba'zi dasturlash tillarida ikkala tur ham mavjud. Ular, shuningdek, maksimal o'lchamlari bo'yicha subtipatsiyalanishi mumkin.
Ko'pgina belgilar to'plami raqamlarni o'z ichiga olganligi sababli, "1234" kabi raqamli qatorga ega bo'lish mumkin. Ushbu raqamli satrlar odatda 1234 kabi raqamli qiymatlardan farq qiladi, garchi ba'zi tillar ular o'rtasida avtomatik ravishda aylanadi.
Boshqa turlar
Boshqa ko'plab turlar mumkin, ammo ular yuqoridagilarning boshqa o'zgarishlari va birikmalari bo'lishga moyil. Xususan, agar yozuvning maydoni boshqa yozuvga ko'rsatgich bo'lishi mumkin bo'lsa, unda juda murakkab turlarni qurish mumkin. Ma'lumotlar strukturasida ko'rsatgichlardan o'zboshimchalik bilan foydalanish dastur kodidagi o'zboshimchalik bilan sakrashlar kabi chalkashliklarga olib kelishi mumkin.
Misol uchun, bog'langan ro'yxat bir xil ma'lumotlarni massiv bilan saqlashi mumkin, lekin tasodifiy emas, balki ketma-ket kirishni ta'minlaydi va dinamik xotiradagi yozuvlardan iborat. Bunday bog'langan ro'yxat navbatni ko'rsatish uchun ishlatilishi mumkin. Yana bir tez-tez ishlatiladigan tur - bu ikkilik daraxt bo'lib, u juda tez qidirish imkonini beradi. Stack ro'yxat yoki massiv yordamida amalga oshirilishi mumkin va oxirgi marta birinchi bo'lib chiqish holatlarini hal qilishda ishlatilishi mumkin.
Abstrakt ma'lumotlar turlari
Ma'lumotlarning aniq ko'rinishini belgilamaydigan har qanday ma'lumotlar turi mavhum ma'lumotlar turi hisoblanadi. Buning o'rniga, uni tavsiflash uchun ma'lumotlar turining operatsiyalariga asoslangan rasmiy spetsifikatsiya qo'llaniladi. Spetsifikatsiyaning har qanday amalga oshirilishi belgilangan qoidalarga javob berishi kerak. Mavhum ma'lumotlar turlari rasmiy semantika va dasturlarni tekshirishda, kamroq qat'iy ravishda dizaynda qo'llaniladi.
Tekshiruvdan tashqari, spetsifikatsiya darhol dasturga aylanishi mumkin. Masalan, OBJ dasturlash tillari oilasi spetsifikatsiya va ularni ishga tushirish uchun qayta yozish uchun tenglamalardan foydalangan holda ushbu variantga asoslanadi. Algebraik spetsifikatsiya taxminan 1980-yillarda CSda tadqiqotning muhim mavzusi bo'lgan va o'sha paytda mavhum ma'lumotlar turlarining deyarli sinonimi edi. U universal algebrada matematik asosga ega. Spetsifikatsiya tilini faqat tenglamalarga emas, balki boshqa formulalarga ruxsat berish orqali yanada ifodali qilish mumkin.
Ikkilik daraxt, roʻyxat, sumka va toʻplam maʼlumotlar turlarining Boom ierarxiyasi odatiy misoldir. Ushbu ma'lumotlar turlarining barchasi uchta operatsiya bilan e'lon qilinishi mumkin: bo'sh konteynerni tuzadigan null, bitta elementdan konteyner quradigan va bitta turdagi ikkita konteynerni birlashtirgan qo'shimcha. To'rt turdagi ma'lumotlarning to'liq spetsifikatsiyasi ushbu operatsiyalarga quyidagi qoidalarni ketma-ket qo'shish orqali berilishi mumkin:
- null daraxt uchun chap va o'ng neytral hisoblanadi: append(null,A) = A, append(A,null) = A.
- ro'yxatlar ilovaning assotsiativ ekanligini qo'shadi: append(append(A,B),C) = append(A,append(B,C)).
- sumkalar kommutativlikni qo'shadi: append(B,A) = append(A,B).
- nihoyat, to'plamlar ham idempotentdir: append(A,A) = A.
Ma'lumotlarga kirish uchta operatsiya bo'yicha naqshlarni moslashtirish orqali aniqlanishi mumkin, masalan. Ushbu konteynerlar uchun a'zo funktsiyasi:
- a'zo(X,bit(Y)) = ek(X,Y)
- a'zo (X, null) = noto'g'ri
- a'zo (X, qo'shimcha (A, B)) = yoki (a'zo (X, A), a'zo (X, B))
Funktsiyaning ma'lumotlar turi uchun tegishli qoidalarga muvofiq o'zgarmasligini ta'minlash uchun ehtiyot bo'lish kerak.
Boshqa turlar
Turlar yuqorida bayon qilingan asosiy turlarga asoslanishi yoki ulardan kelib chiqishi mumkin. Ayrim tillarda, masalan, C, funksiyalar t turidan kelib chiqqan turga ega merosxo'rning qaytish qiymati.
Ko'rsatkichlar va havolalar
Asosiy kompozit bo'lmagan, hosila turi - bu ko'rsatkich, ma'lumotlar turi, uning qiymati to'g'ridan-to'g'ri kompyuter xotirasining boshqa joyida saqlanadigan boshqa qiymatga tegishli (yoki "ishora qiladi") manzili yordamida. Bu murojaatning ibtidoiy turi. (Kundalik nuqtai nazardan, kitobdagi sahifa raqami boshqasiga tegishli bo'lgan ma'lumotlar qismi deb hisoblanishi mumkin). Ko'rsatkichlar ko'pincha butun songa o'xshash formatda saqlanadi; ammo qiymati hech qachon haqiqiy xotira manzili bo'lmagan ko'rsatkichni yo'qotish yoki "izlash"ga urinish dasturning ishdan chiqishiga olib keladi. Ushbu potentsial muammoni hal qilish uchun ko'rsatgichlar, hatto asosiy vakillik bir xil bo'lsa ham, ular ko'rsatadigan ma'lumotlar turining alohida turi hisoblanadi.
Funktsiya turlari
Funktsiyalarga tur tayinlanishi mumkin bo'lsa-da, ularning turi ushbu maqola sozlamalarida ma'lumotlar turi hisoblanmaydi. Bu erda ma'lumotlar algoritmlardan farq qiladi. Dasturlashda funktsiyalar ikkinchisi bilan kuchli bog'liqdir. Ammo, universal ma'lumotlarni qayta ishlashning markaziy qoidasi algoritmlarni ma'lumotlar, masalan, matn tavsifi va ikkilik dasturlar sifatida taqdim etishi mumkinligi sababli, ma'lumotlar va funktsiyalar o'rtasidagi kontrast chegaralarga ega. Darhaqiqat, nafaqat funktsiyalarni ma'lumotlar bilan ifodalash mumkin, balki funktsiyalardan ma'lumotlarni kodlash uchun ham foydalanish mumkin. Ko'pgina zamonaviy tizimlar funktsiyalar turlariga katta e'tibor beradi va ko'plab zamonaviy tillar funktsiyalarni birinchi darajali fuqarolar sifatida ishlashga imkon beradi.
Funksiyalarni maʼlumotlar turi sifatida koʻrib chiqishdan istisno qilish tegishli sohalarda kam uchraydi. Masalan, predikat mantigʻi funksiya yoki predikat nomlarida kvant qoʻllashga ruxsat bermaydi.
Meta turlari. Ba'zi dasturlash tillari turdagi ma'lumotlarni ma'lumotlar sifatida ifodalaydi, bu esa turdagi introspektsiya va aks ettirish imkonini beradi. Bundan farqli o'laroq, yuqori tartibli turdagi tizimlar, boshqa turlardan turlarni yaratishga va qiymat sifatida funktsiyalarga o'tishga ruxsat berish bilan birga, odatda ular asosida hisoblash qarorlarini qabul qilishdan qochishadi
Do'stlaringiz bilan baham: |