Delphida ma’lumotlarning tiplari


Download 1.29 Mb.
Sana17.01.2023
Hajmi1.29 Mb.
#1096988
Bog'liq
19 variyant nazariy 3 ta savolga javob


  1. Delphida ma’lumotlarning tiplari

Delphi Paskal standart Paskal ma'lumotlar turlariga bir nechta kengaytmalarni qo'llab-quvvatlaydi . Har qanday Paskal tili kabi Delphi ham sanab o'tish, to'plamlar, massivlar, butun son va sanab o'tilgan pastki diapazonlar, yozuvlar va variant yozuvlarini qo'llab-quvvatlaydi. Agar siz C yoki C++ ga o'rgangan bo'lsangiz, ushbu standart Paskal turlarini tushunganingizga ishonch hosil qiling , chunki ular sizning vaqtingizni va bosh og'rig'ingizni tejaydi. Farqlar quyidagilarni o'z ichiga oladi:



  • Bit maskalari o'rniga, to'plamlarni o'qish odatda osonroq.

  • Siz massivlar o'rniga ko'rsatgichlardan foydalanishingiz mumkin, ammo massivlar osonroq va chegaralarni tekshirishni taklif qiladi.

  • Yozuvlar tuzilmalarning ekvivalentidir va variant yozuvlari birlashmalarga o'xshaydi.

8 1-bob - Delfi Paskal
Butun sonlar turlari
Asosiy butun son turi Integer. Integer turi operatsion tizim va platformani hisobga olgan holda butun sonning tabiiy hajmini ifodalaydi. Hozirda Integer 32 bitli butun sonni ifodalaydi, lekin siz bunga tayanmasligingiz kerak. Kelajakda, shubhasiz, 64-bitli uskunada ishlaydigan va 64-bitli Integer turini talab qiladigan 64-bitli operatsion tizim mavjud. Kelajakdagi o'zgarishlarni engishga yordam berish uchun Delphi o'lchamlari tabiiy tamsayı hajmiga bog'liq bo'lgan ba'zi turlarni va Delphi ning barcha kelajakdagi versiyalari uchun o'lchamlari belgilangan boshqa turlarni belgilaydi. 1-2-jadvalda standart tamsayılar turlari keltirilgan. Tabiiy o'lcham bilan belgilangan turlar Delphi ning kelajakdagi versiyalarida o'zgarishi mumkin, ya'ni diapazon ham o'zgaradi. Boshqa turlar har doim ko'rsatilgan o'lcham va diapazonga ega bo'ladi.



Turi

Hajmi

Delphi 5 da diapazon




Butun son

tabiiy

-2,147,483,648 .. 2,147,483,647




Kardinal

tabiiy

0 .. 4,294,967,295




Qisqasi

8 bit

-128 .. 127




Bayt

8 bit

0 .. 255




Smalllnt

16 bit

-32 768 .. 32 767




So'z

16 bit

0 .. 65,535




Longlnt

32 bit

-2,147,483,648 .. 2,147,483,647

LongWord

32 bit

0 .. 4,294,967,295

Int64

64 bit

-9,223,372,036,854,775,808 .. 9,223,372,036,854,775,807

Haqiqiy turlari
Delphi bir nechta suzuvchi nuqta turlariga ega. Asosiy turlar: Single, Double va Extended Single va Double IEEE-754 standarti uchun standart o'lchamlarga mos keladi, bu Intel platformalarida va Windowsda suzuvchi nuqta apparati uchun asosdir. Kengaytirilgan - kengaytirilgan ikki tomonlama aniqlik uchun IEEE-754 standartining minimal talablariga javob beradigan Intel kengaytirilgan aniqlik formati. Delphi standart Paskal Real turini Double ning sinonimi sifatida belgilaydi. Vakillik haqida batafsil ma'lumot uchun 5-bobdagi har bir turning tavsifiga qarang.
Suzuvchi nuqta apparati o'z hisob-kitoblari uchun Kengaytirilgan turdagi to'liq aniqlikdan foydalanadi, ammo bu raqamlarni saqlash uchun Kengaytirilgandan foydalanish kerak degani emas. Kengaytirilgan 10 baytni egallaydi, lekin Double turi bor-yo'g'i 8 baytni tashkil qiladi va suzuvchi nuqta birligiga kirish va undan chiqish uchun samaraliroq. Aksariyat hollarda Double-dan foydalanib, yaxshi ishlash va etarli aniqlikka erishasiz.
Suzuvchi nuqtali arifmetikadagi xatolar, masalan, nolga bo'lish, ish vaqti xatolariga olib keladi. Ko'pgina Delphi ilovalari ish vaqtidagi xatolarni istisnolarga ajratuvchi SysUtils blokidan foydalanadi, shuning uchun siz odatda bunday xatolar uchun suzuvchi nuqtali istisno olasiz. Istisnolar va xatolar haqida ko'proq ma'lumotni ushbu bobda "Istisnolarni qayta ishlash" bo'limida o'qing.
Suzuvchi nuqta turlari, shuningdek, cheksizlik va raqam bo'lmagan (NaN) uchun tasvirlarga ega. Agar siz suzuvchi nuqta boshqaruv so'zini o'rnatmasangiz, bu maxsus qiymatlar odatda paydo bo'lmaydi. Infinity va NaN haqida ko'proq ma'lumotni IEEE-dan sotib olish mumkin bo'lgan IEEE-754 standartida o'qishingiz mumkin
Delphida, shuningdek, belgilangan nuqta turi mavjud, Valyuta Bu tur -922,337,203,685,477 5808 dan 922,337,203,685,477 gacha bo'lgan to'rtta kasrli raqamlarni ifodalaydi. 5807, bu butun sayyora uchun yalpi daromadni saqlash uchun etarli, sentning yuzdan bir qismigacha. Valyuta turi suzuvchi nuqtali protsessorni qo'llaydi va ikkita to'ldiruvchi shaklida 64 bit aniqlikdan foydalanadi. Valyuta suzuvchi nuqta turi bo'lgani uchun siz butun son operatorlaridan foydalana olmaysiz (masalan, bitni siljitish yoki maskalash).
Suzuvchi nuqta birligi (FPU) bitta aniqlik, ikki aniqlik yoki kengaytirilgan aniqlik rejimida hisob-kitoblarni amalga oshirishi mumkin. Delphi FPU-ni kengaytirilgan aniqlikka o'rnatadi , bu kengaytirilgan va valyuta turlarini to'liq qo'llab-quvvatlaydi. Biroq, ba'zi Windows API funktsiyalari FPU ni ikki baravar aniqlikka o'zgartiradi. Ikki marta aniqlikda FPU 64 o'rniga atigi 53 bit aniqlikni saqlaydi.
FPU ikki tomonlama aniqlikdan foydalansa, kengaytirilgan qiymatlardan foydalanish uchun hech qanday sabab yo'q, bu ko'p hisoblashlar uchun Double dan foydalanishning yana bir sababidir. Kattaroq muammo bu Valyuta turi. Qaysi funksiyalar FPU boshqaruv soʻzini oʻzgartirishini kuzatishga harakat qilib koʻrishingiz va xato funksiyalar qaytgandan soʻng aniqlikni kengaytirilgan aniqlikka qaytarishingiz mumkin. (5-bobdagi Set8087CW funksiyasiga qarang) Yana bir yechim Valyuta o'rniga Int64 turidan foydalanish va 1-6-misolda ko'rsatilgan tarzda o'zingizning qattiq nuqtali masshtabni amalga oshirishdir.
Massivlar
Standart Paskal massivlariga qo'shimcha ravishda Delphi maxsus sharoitlarda foydalanish uchun bir nechta kengaytmalarni belgilaydi. Dinamik massivlar ish vaqtida hajmi o'zgarishi mumkin bo'lgan massivlardir. Ochiq massivlar har qanday kattalikdagi massivni haqiqiy argument sifatida qabul qila oladigan massiv parametrlaridir. Ochiq massivlarning maxsus holati bir xil turdagi massivni muntazam argument sifatida o'tkazish imkonini beradi. Delphi ISO standarti Paskalda bo'lgani kabi mos massivlarni qo'llab-quvvatlamaydi, lekin ochiq massivlar bir xil funksiyalarni taklif qiladi.
Dinamik massivlar
Dinamik massiv - bu ish vaqtida hajmi aniqlangan massiv. Dastur ishlayotgan vaqtda siz dinamik massivni kattalashtirishingiz yoki kichraytirishingiz mumkin. Indeks turisiz dinamik massivni e'lon qilish. Indeks har doim butun son bo'lib, har doim noldan boshlanadi. Ishlash vaqtida siz SetLength protsedurasi yordamida dinamik massiv hajmini o'zgartirishingiz mumkin. Dinamik massivni tayinlash bir xil massivga havolani tayinlaydi Satrlardan farqli o'laroq, dinamik massivlar yozishda nusxa ko'chirishdan foydalanmaydi, shuning uchun dinamik massivning elementini o'zgartirish ushbu massivga barcha havolalarga ta'sir qiladi Delphi dinamik massivlarni havolalarni hisoblash yordamida boshqaradi, shuning uchun massiv doiradan chiqib ketadi, uning xotirasi avtomatik ravishda bo'shatiladi. 1-7-misol dinamik massivni qanday e'lon qilish va undan foydalanishni ko'rsatadi
Misol 1- 7/ Dinamik massivdan foydalanish var
I: butun son;
Ma'lumotlar: Double massivi; // Double qiymatlarni saqlaydigan dinamik massiv F: TextFile; // Ushbu fayldan ma'lumotlarni o'qing
Qiymat: Double; boshlanishi
Eof (F) esa boshlanmaydi
ReadLn(F, Qiymat);
// Dinamik massivni o'stirishning samarasiz, ammo oddiy usuli. Haqiqiy // dasturida siz massiv hajmini bir vaqtning o'zida bitta element emas, balki kattaroq bo'laklarga bo'lishingiz kerak. SetLength(Maʼlumotlar, Uzunlik(Maʼlumotlar) + 1); Maʼlumotlar[Uzunlik(Maʼlumotlar)] := Qiymat; end;
Close File(F); end;
Delphi massiv indekslarini chegarada ekanligiga ishonch hosil qilish uchun tekshiradi. (Agar siz diapazonni tekshirishni o'chirib qo'ymagan bo'lsangiz; 8-bobdagi $R direktivasiga qarang.) Bo'sh dinamik massivlar bundan mustasno. Delphi bo'sh dinamik massivni nol ko'rsatkich sifatida ifodalaydi. Agar siz bo'sh dinamik massivning elementiga kirishga harakat qilsangiz, Delphi nil ko'rsatkichini yo'qotadi, natijada diapazonni tekshirish xatosi emas, kirish buzilishi sodir bo'ladi.
Ochiq massivlar
Siz funksiya yoki protseduraga parametrni ochiq massiv sifatida e'lon qilishingiz mumkin. Muntazam chaqirilganda, argument sifatida istalgan o'lchamli massivni (bir xil asosiy turdagi) o'tkazishingiz mumkin. Rutin massiv chegaralarini aniqlash uchun Low va High funksiyalaridan foydalanishi kerak (Delphi har doim pastki chegara sifatida noldan foydalanadi, lekin Low va High funksiyalari kodingizning saqlovchisiga aynan nima kod ekanligini aytadi.
12 1-bob - Delfi Paskal bajaradi. Qattiq kodlash 0 unchalik aniq emas.) Agar tartib massivni o'zgartirishga hojat bo'lmasa, parametrni const deb e'lon qilishni unutmang, agar tartib massiv tarkibini o'zgartirsa, var deb e'lon qiling.
Ochiq massiv argumenti deklaratsiyasi dinamik massiv deklaratsiyasiga o'xshaydi, bu ba'zi chalkashliklarni keltirib chiqarishi mumkin. Parametr sifatida foydalanilganda indeks turisiz massiv e’lonlari ochiq massiv hisoblanadi Lokal yoki global o‘zgaruvchini, sinfdagi maydonni yoki yangi turni e’lon qilish uchun foydalanilganda indekssiz massiv e’lonlari dinamik massivni bildiradi.
Dinamik massivni oʻz argumentini ochiq massiv sifatida eʼlon qiladigan dasturga oʻtkazishingiz mumkin va dastur dinamik massiv elementlariga kirishi mumkin, lekin massiv oʻlchamini oʻzgartira olmaydi. Ochiq massivlar va dinamik massivlar bir xil e'lon qilinganligi sababli, parametrni dinamik massiv sifatida e'lon qilishning yagona yo'li, quyida ko'rsatilgandek, dinamik massiv turi uchun yangi turdagi identifikatorni e'lon qilishdir CantGrow(var Data: array of integer); boshlanishi
// Ma'lumotlar ochiq massiv, shuning uchun u hajmini, endni o'zgartira olmaydi;
turi
TArrayOflnteger = butun sonlar massivi; // dinamik massiv tipidagi protsedura Grow (var Data: TArrayOflnteger); boshlanishi
// Ma'lumotlar dinamik massivdir, shuning uchun u hajmini o'zgartirishi mumkin. SetLength(Maʼlumotlar, Uzunlik(Maʼlumotlar) + 1); end;
Siz dinamik massivni CantGrow protsedurasiga o'tkazishingiz mumkin, lekin massiv dinamik massiv sifatida emas, ochiq massiv sifatida uzatiladi. Prosedur massiv elementlariga kirishi yoki o'zgartirishi mumkin, lekin u massiv hajmini o'zgartira olmaydi.



  1. Delphi dasturi ComboBox kampanetasi va uning xossalari

ComboBox — kiritish qatoriga ega ro‘yxatdan tanlash. Ro‘yxatdan kombinatsiya qilib tanlash.





















  1. Sikl operatorlari strukturasi va ishlash prinsiplarini












Download 1.29 Mb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling