uy - Mobil qurilmalar
2 asosiy asosiy va tuzilgan ma'lumotlar turlari. Asosiy algoritm dizaynlari

3.2.1 Oddiy va tuzilgan ma'lumotlar turlari. Ma'lumotlar tuzilmalari - yozuvlar, massivlar, ro'yxatlar.

O'zgaruvchilar

Dasturlash jarayonida odatda ma'lum miqdordagi ma'lumotlarni (oraliq natijalar, sodir bo'lgan voqealar, kiritilgan ma'lumotlar, chiqish ma'lumotlari va boshqalar) eslab qolish kerak. Ushbu qiymatlar xotirada saqlanishi kerak. Buning uchun xotirada ma'lumotlarni saqlash uchun foydalaniladigan joy e'lon qilinadi va bu e'lon qilingan joy o'zgaruvchi deb ataladi. Saqlanadigan ma'lumotlar juda xilma-xil bo'lishi mumkinligi sababli, o'zgaruvchini e'lon qilishda ushbu o'zgaruvchida (o'zgaruvchi turi) saqlanadigan ma'lumotlar turi ham e'lon qilinadi.

Oddiy turlar

Oddiy turdagi o'zgaruvchilar uchun kalit so'z ostida bitta qiymat (ko'pincha raqam sifatida o'qiladi) yashiringan va unga bevosita kirish mumkin. Eng mashhur oddiy turlar: belgili butun son, ishorasiz butun son, kasr son (vergul bilan), belgi, mantiqiy. Turli tillarda ular biroz farq qilishi mumkin.

Strukturaviy turlar

Strukturaviy turlar bo'lsa, bir nechta qo'shma qiymatlar nuqta koordinatalari yoki shaxsning ismi va familiyasi kabi bitta kalit so'z ostida guruhlangan. Ushbu shaklda ma'lumotlar to'plamini bir vaqtning o'zida uzatish osonroq. Shu bilan birga, struktura ichidagi ma'lumotlarni birma-bir ishlatishingiz yoki o'zgartirishingiz kerak.

Massivlar

Massiv - bir xil nomga ega bo'lgan va bir-biridan indeks bilan ajratilgan bir xil turdagi ma'lumotlar to'plami. Massivlar bir xil turdagi ma'lumotlarni qayta ishlashni sezilarli darajada osonlashtiradi. Qayta ishlashning qulayligi shundan kelib chiqadiki, dasturni bajarish jarayonida siz shunchaki indeksni o'zgartirishingiz va shu bilan kerakli o'zgaruvchiga osonroq kirishingiz mumkin. Tartib raqami yordamida massivdan o‘zgaruvchining qiymatini olish kompyuter uchun juda tez ishdir.

Massivlar bir o'lchovli (qator, qator), ikki o'lchovli (jadval, matritsa), uch o'lchovli (kub) va boshqalar bo'lishi mumkin.

Misol (C#, Java)

int massa = yangi ; //o'nta butun sonni saqlash uchun massiv yarating

massa=1; //1-qiymat 0 indeksida yoziladi

Qo'shimcha o'qish: http://enos.itcollege.ee/~jpoial/java/i200loeng4.html

Xabarlar

Yozuvlar birgalikda tegishli to'plamni tashkil etuvchi har xil turdagi ma'lumotlarni saqlash uchun ishlatiladi. Masalan, shaxsning yozuvi quyidagi ma'lumotlardan tuziladi: ism (matn), familiya (matn), jins (mantiqiy qiymat, 0 - ayol, 1 - erkak), vazni (kasr soni). Ushbu ma'lumotlar bir shaxsni tavsiflashda bir butunni tashkil qiladi, ammo ularning o'zlari juda xilma-xildir.

Misol (C#)

struktinimen {

publicstring eesnimi;

publicstring perenimi;

publicbool jinsiy aloqa;

ommaviy float vazn;

Ushbu yozuv bilan biz kasutaja (foydalanuvchi) o'zgaruvchisini yaratishimiz va foydalanuvchiga ism, familiya, jins va vazn qiymatlarini belgilashimiz mumkin:

inimene kasutaja;

kasutaja.eesnimi ="Jan" ;

kasutaja.perenimi ="Mets" ;

kasutaja.sex = 1;

kasutaja.weight = 80,0;

Ro'yxatlar va daraxtlar

Hozirgi vaqtda ro'yxatlar ko'pincha ma'lumotlarni saqlash uchun ishlatiladi. Agar ro'yxatning har bir elementi o'zidan keyingi elementga ishora qilsa, u bog'langan ro'yxatdir; bunday ro'yxatning oxiri bo'sh element bilan ko'rsatiladi (null). Har bir element faqat keyingisiga ishora qiluvchi bog'langan ro'yxat bir yo'nalishli ro'yxat deb ataladi. Har bir element keyingi va oldingi elementlarga ishora qiluvchi bog'langan ro'yxat ikki tomonlama deyiladi. Birinchi va oxirgi element bo'lmagan va har bir element keyingisiga ishora qiladigan bog'langan ro'yxat aylanma ro'yxat deb ataladi. Bog'langan ro'yxatning uzunligi uning elementlari soni bilan belgilanadi. Ro'yxatning birinchi elementi bosh, qolgan elementlar esa quyruqdir.

Stack - bu bog'langan ro'yxat bo'lib, unda oxirgi qo'shilgan element birinchi bo'lib o'qiladi (LIFO - Oxirgi kiruvchi birinchi chiqadi).

Navbat - bu bog'langan ro'yxat bo'lib, unda birinchi qo'shilgan element birinchi o'qiladi (FIFO - Birinchi kiruvchi birinchi chiqadi).

Qo'shimcha o'qish: http://www.cs.tlu.ee/~inga/alg_andm/linked_list_C_2011.pdf

Daraxt - bu ma'lumotlar daraxt shaklida joylashtiriladigan ma'lumotlar strukturasi bo'lib, cho'qqilarni (ko'rsatkichlarni) bog'laydigan uchlari (English Node) va yoylardan (English Edges) iborat. Yuqorida joylashgan cho'qqi bilan yoylar bilan bog'langan cho'qqilar bolalar deb ataladi va bu holda yuqorida joylashgan cho'qqi ota-ona hisoblanadi. Eng yuqori cho'qqi - ildiz. Bolalari bo'lmagan cho'qqiga barg deyiladi.

Yuqoridan ota-onaga, u erdan keyingi ota-onaga o'tish va hokazo. ildiziga etib boramiz. Ajdodlar - bu ko'rib chiqilayotgan cho'qqidan ildizgacha bo'lgan yo'lda joylashgan barcha cho'qqilar. Daraxt balandligi bargdan ildizgacha bo'lgan eng uzun yo'l bilan belgilanadi.

Tartibli daraxt bo'lsa, ildiz va unga to'g'ridan-to'g'ri bog'langan cho'qqilar birinchi darajali tugunlar (ildizning bolalari), to'g'ridan-to'g'ri birinchi darajali cho'qqilarga bog'langan cho'qqilar esa ikkinchi darajali cho'qqilar (birinchi darajali cho'qqilarning bolalari) va h.k. .; Bolalarning chapdan o'ngga tartibi ham muhimdir.

Qo'shimcha o'qish: http://www.cs.tlu.ee/~inga/alg_andm/tree_gen_2011.pdf

Ikkilik daraxt - har bir ota-onaning bitta farzandi bo'lishi mumkin bo'lgan, ikkita farzandi yoki umuman farzandi bo'lmagan daraxt bo'lib, bolalarning tartibi muhim ahamiyatga ega.

Ikkilik qidiruv daraxti tartiblangan ikkilik daraxtdir. Cho'qqining chap tomonida har doim kichikroq raqam va o'ng tomonda har doim kattaroq raqam mavjud.

Bunday daraxtni izlashda izlanayotgan qiymat ildiz bilan solishtiriladi va agar izlangan qiymat ildizga teng bo'lsa, u mavjud va topiladi. Agar kerakli qiymat ildizga teng bo'lmasa, taqqoslash operatsiyasi mos ravishda davom etadi, kerakli narsani o'ng yoki chap tomonda joylashgan cho'qqilar to'plami bilan ular barglarga yetguncha solishtiradi. Agar qidirilayotgan qiymat cho'qqilardan birining qiymatiga teng bo'lsa, u holda qidirilayotgan element topiladi va mavjud bo'ladi, lekin bunday cho'qqi topilmasa, bu daraxtda qidirilayotgan element mavjud emas. Ushbu qidirish usuli massiv yoki bog'langan ro'yxatni to'liq aylanib o'tishdan ko'ra ko'p marta tezroq.

B daraxti qidiruv daraxti bo'lib, unda har bir tugundagi bolalar soni (t-1) dan (2t-1) oralig'ida bo'ladi, bu erda t har qanday doimiydir.

B*-daraxt - bu B-daraxt bo'lib, uning cho'qqilari 2/3 ga to'ldirilgan bo'lib, avval tugmachalarni qayta taqsimlash yo'li bilan ikkita kichik cho'qqilarni to'ldirish va keyin ularni 3 ta burchakka bo'lish yo'li bilan to'ldiriladi.

Shu sababli, B-daraxt daraxt chuqurligini ikkilik daraxtga qaraganda kamroq saqlashga imkon beradi. To'ldirishni cheklash orqali, shuningdek, oraliq darajalarda ishlatiladigan xotira miqdorini aniq belgilangan chegaralar ichida ushlab turish va shu bilan birga ma'lumotlarni tegishli joyga darhol qo'shish mumkin.

Kompozit, yoki strukturaviy, ma'lumotlar turlari, oddiylaridan farqli o'laroq, bitta umumiy nom bilan murakkab qiymatlar to'plamini belgilaydi. Aytishimiz mumkinki, strukturaviy tiplar mavjud bo'lganlar asosida yangi ma'lumotlar turlarini yaratishning ma'lum bir usulini belgilaydi. Shunday qilib, o'zboshimchalik bilan murakkablikdagi ma'lumotlar tuzilmalarini shakllantirish mumkin, bu esa u ishlaydigan ma'lumotlar dasturida adekvat ko'rinishga erishish imkonini beradi.

Strukturalashning bir nechta usullari mavjud bo'lib, ularning har biri alohida komponentlarga taalluqli bo'lishi va shuning uchun struktura ma'lumotlariga kiritilgan komponentlarga taalluqli bo'lishi bilan farqlanadi. Murakkab ma'lumotlar turlarida tarkibiy qismlarni tashkil etish usuli va turiga ko'ra quyidagi navlar ajratiladi:

  • muntazam turdagi (massivlar);
  • birlashtirilgan turdagi (yozuvlar);
  • fayl turi (fayllar);
  • bir nechta tur(lar);
  • string turi (strings);
  • ob'ekt turi (ob'ektlar).

Oddiy ma'lumotlar turlaridan farqli o'laroq, tuzilgan turdagi ma'lumotlar ushbu turni tashkil etuvchi elementlarning ko'pligi bilan tavsiflanadi, ya'ni. tuzilgan turdagi o'zgaruvchi yoki doimiy har doim bir nechta komponentlarga ega. Har bir komponent, o'z navbatida, tuzilgan turga tegishli bo'lishi mumkin, ya'ni. turlarini joylashtirish mumkin.

Adabiyot

  1. Popov V.B. Paskal va Delphi. O'z-o'zini ko'rsatma qo'llanma - Sankt-Peterburg: Peter, 2004. - 544 pp.: kasal.

6-bob. TUZILGAN
MA'LUMOT TURLARI Strukturaviy ma'lumotlar turlari bir xil yoki har xil turdagi komponentlar to'plamini belgilaydi. Komponent turlari boshqa ma'lumotlar turlaridan (oddiy, tuzilgan, ko'rsatkichlar va boshqalar) hosil bo'ladi. Paskal tilida quyidagi strukturali tiplar mavjud: - massiv tipi; - yozuv turi; - turdagi to'plam; - fayl turi. Turbo Paskalda yana ikkita tuzilgan tur mavjud: - string tipidagi satr va - massiv turlari bo'lgan PChar string tipi. Quyida qisqachalik uchun tuzilgan turdagi ob'ektlar "tur" so'zini ko'rsatmasdan, ularning turlari bilan bir xil nomlar bilan chaqiriladi: massiv, yozuv, to'plam, fayl, satr. Til standartida qadoqlangan va qadoqlanmagan strukturali turlar mavjud. Turbo Paskalda qadoqlangan turni tavsiflovchi packed so'zi hech qanday ta'sir ko'rsatmaydi; Iloji bo'lsa, ma'lumotlarni qadoqlash avtomatik ravishda amalga oshiriladi. 6.1. Massiv turi-massiv - indekslar bilan jihozlangan bir xil turdagi tartiblangan komponentlarning belgilangan soni. Bu bir o'lchovli yoki ko'p o'lchovli bo'lishi mumkin. Massiv turini ko‘rsatish uchun ajratilgan massiv so‘zidan foydalaning, undan so‘ng komponentlar indeks(lari) turini (kvadrat qavs ichida) va so‘zdan keyin - komponentlarning o‘zi turini ko‘rsatishingiz kerak: turi<имя типа>= massiv[<тип индекса(индексов)>] ning<тип компонент> ; Misol. turi Arr = Real massivi; (3 ta haqiqiy sonli massiv turi) Matritsa = Integer massivi; (turi - 3 qator va 2 ustundan iborat ikki oʻlchovli butun sonlar massivi) Massiv turini kiritish orqali siz oʻsha turdagi oʻzgaruvchilar yoki tiplangan konstantalarni belgilashingiz mumkin. Massivning o'lchami har qanday bo'lishi mumkin, massivning komponentlari har qanday turdagi bo'lishi mumkin, shu jumladan tizimli, indeks (indekslar) Longint turidan tashqari har qanday tartibli turdagi bo'lishi mumkin. Doimiy massivga qiymatlarni belgilashda komponentlar qavslar ichida ko'rsatiladi va vergul bilan ajratiladi, agar massiv ko'p o'lchovli bo'lsa, tashqi qavslar chap indeksga mos keladi, ular ichida joylashgan qavslar keyingi indeksga mos keladi va hokazo. Shunday qilib, yuqorida keltirilgan turlar uchun, masalan, quyidagi o'zgaruvchilar va konstantalarni belgilashingiz mumkin: var Ml, M2: Arr; Matritsa: Matritsa; const M3: Arr =(1, 2, 3); Mat: Matritsa = ((1, 2), (3, 4), (5, 6)); Oxirgi konstanta quyidagi tuzilishga mos keladi: 1 2 3 4 5 6 Eslatma. Massiv turi ham mos keladigan o'zgaruvchilar yoki tiplangan konstantalarni aniqlashda bevosita kiritilishi mumkin. Masalan: var Ml, M2: Real massivi; Matr: Integer massivi; Xuddi shu massivlar bu erda oldingi misoldagi kabi aniqlanadi. Massivlarni shu tarzda e'lon qilganda, ularning turlari bir xil tuzilishga ega bo'lsa ham, boshqa turlarga o'xshash bo'lmasligini unutmang. Shuning uchun siz ularni pastki dasturga parametr sifatida o'tkaza olmaysiz (10.3-bo'limga qarang), shuningdek, tuzilmalari bir xil bo'lsa ham, siz ularga boshqa massivlarning qiymatlarini belgilashingiz mumkin emas (va aksincha). Massiv komponentlariga kirish massiv nomidan so‘ng kvadrat qavs ichida komponent indeks(lar)ining qiymatini ko‘rsatish orqali amalga oshiriladi. Umuman olganda, har bir komponent indeksi tegishli turdagi ifoda bilan belgilanishi mumkin, masalan: M1, Matritsa, M2 va boshqalar. Bitta massivga boshqa massivning qiymati berilishi mumkin, lekin faqat bir xil turdagi. Shunday qilib, agar quyidagi massivlar berilgan bo'lsa: var A, B: massiv Integer; C: Integer massivi; unda quyidagi operatorni aytaylik: A:= B; Boshqa tomondan, operator C:= A; yaroqsiz, chunki A va C massivlari bir xil tur emas. Bir o'lchovli belgilar massivlari bilan ishlashda ba'zi farqlar mavjud (satr qiymatlari bilan adashtirmaslik kerak - 6.2-bo'limga qarang). Shunday qilib, bu tipdagi terilgan konstantalarga apostrofdagi belgilar qatorini belgilash orqali oddiy satr konstantalari kabi qiymat berish mumkin, masalan const A: massivi Char="aaaaa"; B: Char="bbb" massivi; Bunday massivlar uchun, masalan, satrlar uchun, siz taqqoslash operatsiyalaridan foydalanishingiz mumkin (hatto ular bir xil turdagi bo'lmasa va hatto turli o'lchamlarga ega bo'lsa ham) va birlashtirish (birlashma) - qarang. 6.2-band. Ular Write va WriteLn chiqish bayonotlarida ishlatilishi mumkin. Masalan, yuqorida kiritilgan massivlar uchun agar A > B bo'lsa, keyin WriteLn(A) boshqa WriteLn(B); 6.2. Satr tipidagi satr Turbo Paskalda satr turi (standart qator tipi) ixtiyoriy uzunlikdagi (255 belgigacha) belgilar ketma-ketligidir. Satrni belgilar massivi deb qarash mumkin, lekin standart massivlarga nisbatan satrlarning keng qoʻllanilishi va baʼzi xususiyatlari tufayli ular alohida maʼlumotlar turiga ajratiladi. Satr turi o'lchami kvadrat qavs ichida ko'rsatilishi mumkin (1 dan 255 gacha). Agar satr o'lchami ko'rsatilmagan bo'lsa, u 255 deb qabul qilinadi, masalan: var Str: string; MaxStr: string; (255 belgili qator) const yanvar: string = "yanvar"; Birlashtirish (+) va taqqoslash amallari satrlarga nisbatan qo'llaniladi. Birlashtirish operatsiyasi birinchisiga ikkinchi qatorni qo'shadi. Misol. Ikki qatorni birlashtiring. Str, Strl, Str2:string; start Strl:= "Turbo"; Str2:= "Paskal"; Str:= Strl + Str2; (Str o'zgaruvchisida - "Turbo Paskal") tugaydi. Turli uzunlikdagi satrlarni solishtirishingiz mumkin. Taqqoslash mos keladigan belgilarning ASCII kodlariga muvofiq chapdan o'ngga amalga oshiriladi. Qisqaroq satrdagi etishmayotgan belgilar har qanday haqiqiy belgidan kamroq kodga ega deb hisoblanadi. Masalan, "XS" "X" dan kattaroqdir. Misol. Kiritilgan belgilar to'plami rus tilidagi oyning nomi ekanligini tekshiring. EXAMPLE11 dasturi; const Instance: string of array!10]= ("YANVAR", "FEVRAL", "MARCH", "APREL", "MAY", "IYUN", "IYUL", "AVGUST", "SENTYABR", "OKTYABR" , "NOYABR DEKABR"); Oy: mantiqiy = noto'g'ri; var Str: string; i: butun son; begin Writeln("Bosh belgilarni kiriting:"); ReadLn(Str); i:= 1 dan 12 gacha bajaring, agar Str = Instance[i] bo'lsa, Month:=True; agar Oy keyin WriteLn("Oy nomi kiritilgan") else WriteLn("Oy nomi kiritilmagan") tugaydi. Aslida, N ta belgidan iborat qator N+1 ta belgidan iborat massivdir: string[N] = Char massivi. Null belgisi foydalaniladigan satrdagi belgilar sonini ko'rsatish uchun mo'ljallangan va 0 kodli belgidan N kodli belgigacha farq qilishi mumkin. Siz u bilan qatordagi boshqa belgilar kabi ishlashingiz mumkin (uning qiymatini yozing va o'qing) va boshqalar), lekin uning asosiy maqsadini unutmasdan. 6.3. ASCIIZ satri 7.0 versiyasida boshqa dasturlash tillari va Windows muhiti bilan moslik uchun qatorning yana bir turi joriy etildi - nol bayt bilan tugaydigan satrlar - 0 kodli belgi (ASCIIZ satrlari deb ataladi). Satrlardan farqli o'laroq, bu satrlarda o'lcham chegarasi yo'q (aslida ular 65535 baytgacha bo'lishi mumkin). Ushbu satrlarga standart turdagi PChar beriladi. Aslida, bu tur belgiga ko'rsatgichdir (ko'rsatkichlar haqida, 7-bandga qarang): PChar = ^Char; Shu bilan birga, kengaytirilgan sintaksisdan foydalanish (kalit (X+) - 17.7.1-bo'limga qarang) bunday o'zgaruvchidan pChar = Char massivi tipidagi massivga ekvivalent qator sifatida foydalanish imkonini beradi, bu erda K - belgilar soni. satr, 0 kodli so'nggi belgini hisobga olmaganda Satr turidan farqli o'laroq, bu erda 0 indeksli belgi satrning birinchi belgisi, K indeksli oxirgi belgi esa 0 kodli yakuniy belgidir. ASCIIZ satrlari bilan ishlashda , kengaytirilgan sintaksisni ko'rsatish maqsadga muvofiqdir; bu holda, satrlar bilan ishlaydigan turli xil standart tartiblardan foydalanishda hech qanday qiyinchiliklar bo'lmaydi. Misol. Kengaytirilgan sintaksis bilan PChar satrlaridan foydalanish. EXAMPLE12 dasturi; ($X+) (sukut bo'lgani uchun kerak emas) turi T = Char massivi; (7 ta belgili qator uchun massiv) var Str: PChar; const A: T = "salom!"#0; begin Str:= "SAlom!"; WriteLn(Str); (chiqish liniyasi: HI Str:= @А; {допустимо также: Str:=A} WriteLn(Str); {вывод строки: привет!} WriteLn(Str);{вывод символа "р"} ReadLn end. Если используется ключ {$Х-}, переменная типа PChar в этом случае рассматривается как указатель на один единственный символ. В этом случае ни один из операторов предыдущего примера, за исключением операторов Str:=@A; и ReadLn, недопустимы, а оператор WriteLn(Str^), выполненный после оператора Str:=@A;, выдаст один символ "п". Для работы с ASCIIZ-строками в версии 7.0 используются специальные стандартные модули Strings (см. п. 16.2) и WinDos (см. п. 16.6). 6.4. Запись Тип-запись включает ряд компонент, называемых полями, которые могут быть разных типов. При задании типа-записи после зарезервированного слова record следует перечислить все поля типа-записи с указанием через двоеточие их типов и завершить задание типа словом end. Поля отделяются друг от друга точкой с запятой. Количество полей записи может быть любым. Пример. type Complex = record {Тип комплексных чисел} Re: Real; Im: Real end; Data = record {Тип - дата рождения} Year: Integer; Month: 1..12; Day: 1..31 end; Person = record {Тип - сведения о сотруднике} Name: string; Sex: (Male, Female); Age: Integer; Married: Boolean end; Примечание. Если несколько полей типа-записи имеют один и тот же тип, то их имена можно перечислить через запятую и затем указать этот общий тип. Так, рассмотренный в примере тип комплексных чисел можно ввести и другим образом: type Complex = record Re, Im: Real end; После введения типа-записи можно затем задать переменные или типизированные константы этого типа - записи. При задании значений константе ее поля записываются в круглых скобках через точку с запятой. Для задания значения каждого поля сначала указывается имя поля, а затем через двоеточие - его значение. Так, для введенных выше типов можно задать, например, следующие переменные и константы: var X, У, Z: Complex; Dat: Data; const Birthday: Data = (Year: 1971; Month: 12; Day: 9); Ivanov: Person = (Name: "Иванов"; Sex: Male; Age: 40; Married: True); Примечание. Тип-запись можно вводить и непосредственно при определении переменных или типизированных констант. Например, фрагмент var X, Y, Z: record Re, Im: Real end; определяет те же комплексные переменные, что и в предыдущем примере. Доступ к полям записи осуществляется указанием имени переменной (константы) и имени поля, записываемого через точку, например: Ivanov.Age, X.Re, Dat.Day и т. д. Пример. Использование полей записей. X.Re:= 1.5; X.Im:=1.7; Y.Re:= -X.Re; Y.Im:= -X.Im; Ivanov.Married:= False; Для того чтобы не выписывать каждый раз имя записи при обращении к ее полям, можно использовать оператор над записями WITH. Его структура выглядит следующим образом: with !}<имя записи>qil<оператор> ; Bunday holda, bayonot ichida faqat yozuv maydoni ko'rsatilishi mumkin. Masalan, fragment: X bilan do begin Re:= 1.5; Im:= 1,7; Y.Re:= -Re; Y.Im:= -Im end; bilan Ivanov do Uylangan:= Yolg'on; oldingi misoldagi fragmentga teng. Yozuv turi turli xil amallar bilan o'zgarib turadigan variant qismiga ega bo'lishi mumkin, masalan, geometrik figuralarning parametrlari uchun yozuv turida kvadrat uchun tomon, ikki tomon va uchburchak uchun ular orasidagi burchak, radius uchun radius ko'rsatilgan. aylana va boshqalar. Variant qismi faqat bitta bo'lishi mumkin va yozuv oxirida joylashgan bo'lishi kerak. Misol. Variant qismidan foydalanish. turi Rasm = (kvadrat, uchburchak, doira); Param = rekord X, Y: Real; (ankor nuqtasi koordinatalari) holat Shakl: Rasm (figura parametrlari) Kvadrat: (Yon: Haqiqiy); Uchburchak: (Sidel, Side2, Burchak: Haqiqiy); Doira: (Radius: Haqiqiy) oxiri; var MySquare, MyCircle: Param; Variant qismi case so'zi bilan boshlanadi, undan keyin turni ko'rsatuvchi variant tanlash o'zgaruvchisi (rasmdagi misolda) keladi. Keyinchalik parametr tanlash o'zgaruvchisi qiymatlarini olishi mumkin bo'lgan doimiylar (masalan, Kvadrat, Uchburchak, Doira). Har bir konstantadan keyin berilgan yozish variantining maydonlari ularning turlarini ko'rsatgan holda qavs ichida ikki nuqta bilan ajratilgan holda yoziladi. Berilgan variant uchun variant qismi bo'lmasa ham, qavslar talab qilinadi. Shuni ta'kidlash kerakki, variant qismi odatdagi CASE konstruktsiyasidagi kabi o'zining yakuniy bayonoti bilan tugamaydi, chunki undan keyin butun turdagi yakuniy bayonot keladi. Paskal tili standartida yozib olish variantlaridan birini qo'llashdan oldin variant tanlash o'zgaruvchisiga tegishli qiymat berilishi kerak: Rasm:= Kvadrat; MySquare.Side:=5,0; Rasm:= Doira; MyCircle.Radius:=7,5; Turbo Paskalda bu operatsiya shart emas, garchi tanlov o'zgaruvchisi ko'rsatilgan bo'lsa ham, dasturda qaysi tanlov o'rnatilganligini aniqlash uchun uni ko'rib chiqish mumkin. Bundan tashqari, tanlov o'zgaruvchisining qiymatini belgilash hech narsaga ta'sir qilmaydi va quyidagi fragment yuqorida muhokama qilinganga ekvivalentdir: Fig:= Circle; MySquare.Side:= 5.0; Rasm:= Kvadrat; MyCircle.Radius: -7,5; Yozuv turida variantlarni tanlash uchun o'zgaruvchini kiritmasdan, faqat turli xil variantlarni sanab o'tishga ruxsat beriladi, masalan: Transf = rekord ishi Integer of 1: (_Word: Word); 2: (_TwoSymb: Char massivi) end; 6.5. To'plam Paskal tilida to'plam turi - bu tartib tipdagi ob'ektlarning dastlabki to'plamining to'plam darajasi, ya'ni asl to'plam ob'ektlarining barcha mumkin bo'lgan kombinatsiyalari to'plami. Turbo Paskalda asl to'plam elementlari soni 256 dan ortiq bo'lishi mumkin emas va elementlarning tartib raqamlari (ya'ni Ord funksiyasining qiymati) 0 dan 255 gacha bo'lgan oraliqda bo'lishi kerak. To'plam turini ko'rsatish uchun. , siz to'plam va of deb ajratilgan so'zlarni ishlatishingiz kerak va keyin ushbu to'plamning elementlarini ko'rsatishingiz kerak, odatda sanab yoki diapazon ko'rinishida, masalan: Alfa turi = "A" to'plami.."Z"; Hisob = to'plami (Plyus, Minus, Multi, Divid); O'n = 0..9 to'plami; Raqam = "0" to'plami.."9" ; To'plam turini kiritish orqali siz ushbu to'plam turining o'zgaruvchilari yoki yozilgan konstantalarini belgilashingiz mumkin. Doimiy to'plamga qiymatlarni belgilashda uning elementlari vergul bilan ajratilgan (diapazonlarni belgilash mumkin) va kvadrat qavs ichiga joylashtiriladi. Masalan, yuqorida keltirilgan turlar uchun quyidagi o'zgaruvchilar va yoziladigan konstantalarni o'rnatishingiz mumkin: var CharVal: Alfa; Operatsiya: Count; const Indeks: Ten = ; Raqam: Raqam = ["0".."9"]; Eslatma. Boshqa tuzilgan turlarda bo'lgani kabi, to'plam turi o'zgaruvchilar yoki tiplangan konstantalarni aniqlashda bevosita kiritilishi mumkin: var CharVal: "A."."Z" to'plami; Operatsiya: to'plami (Plyus, Minus, Mult, Divid); const indeksi: 0..9 to'plami = ; Raqam: "0" to'plami.."9"=["0".."9"]; To'plamga dasturda u yoki bu qiymat berilishi mumkin. Odatda qiymat o'rnatilgan konstruktor yordamida o'rnatiladi. Konstruktor elementlar to'plamini kvadrat qavslar ichida qiymatlari ushbu to'plam elementlari tomonidan berilgan ifodalarni ro'yxatga olish orqali belgilaydi. Elementlar diapazonidan foydalanish maqbuldir. Misol. Quyidagi tuzilmalar to'plam konstruktorlari hisoblanadi: Har bir to'plamga shunday atalmishlar kiradi. hech qanday elementni o'z ichiga olmagan bo'sh to'plam. To'plam konstruktori to'plamlardagi operatsiyalarda ham bevosita ishlatilishi mumkin. To'plamlar uchun quyidagi amallar aniqlanadi: + - to'plamlar birlashuvi; - - to'plamlar farqi; * - ko'pchilikning kesishishi; = - ikkita to'plamning ekvivalentligini tekshirish;<>- ikkita to'plamning ekvivalent emasligini tekshirish;<= - проверка, является ли левое множество подмножеством правого множества; > = - o'ng to'plam chap to'plamning kichik to'plami ekanligini tekshirish; in - chapda ko'rsatilgan element o'ngda ko'rsatilgan to'plamga kiritilganligini tekshiradi. Birlashma, ayirma yoki kesishish operatsiyasining natijasi mos keladigan to'plamdir, boshqa operatsiyalar mantiqiy turdagi natijani beradi. Misol. Lotin harflari, raqamlar va bo'shliqlardan iborat belgilar qatorini kiriting. Kiritilgan belgilarning to'g'riligini tekshiring. EXAMPLE13 dasturi; var Str: string; L: bayt; Tru: mantiqiy; begin WriteLn("Qatorni kiriting"); ReadLn(Str); L:= Uzunlik(str); (kiritilgan belgilar soni) Tru:= L > 0; (bo'sh satr bo'lmasa, rost) Tru va (L > 0) bajarilganda (satr oxiridan belgilang) Tru:=Str[L] ni ["0".."9", "A"da boshlaydi., "Z" , "a".."z", ""]; (belgining haqiqiyligini tekshirish) Dec(L) (oldingi belgi) oxiri; agar Tru bo'lsa WriteLn("To'g'ri chiziq") boshqa WriteLn("Noto'g'ri qator") tugaydi. 6.6. Fayl tipidagi fayl tashqi qurilmada joylashgan bir xil turdagi komponentlar ketma-ketligidir (til standarti magnit lentalardagi ma'lumotlarning joylashishiga asoslanadi). Komponentlar har qanday turdagi bo'lishi mumkin, faqat fayl turi (yoki fayl tipidagi komponentlarni o'z ichiga olgan) va ob'ekt turi bundan mustasno. Fayldagi komponentlar soni e'lon qilinmagan. Fayl turini belgilash uchun zaxiralangan fayl va of so'zlaridan, keyin fayl komponenti turidan foydalaning. Misol. turi Number = Integer fayli; (butun fayl turi) Symb = "A".."Z" fayli; (katta fayl turi) Standart Matn turi qatorlarga birlashtirilgan belgilarni o'z ichiga olgan fayl turini belgilaydi. Shuni yodda tutingki, Turbo Paskaldagi Matn turi Char tipidagi faylga teng emas. Fayl turini kiritish orqali siz fayl tipidagi o'zgaruvchilarni belgilashingiz mumkin: var Fl, F2: Number; F3: Matn; FF4: Symb; Turbo Paskalda turi bo'lmagan fayldan foydalanish mumkin, uning ta'rifi komponent turini ko'rsatmaydi. Bunday holda, fayl bilan ishlash uning ma'lumotlarining ichki formatiga muvofiq jismoniy darajada amalga oshiriladi. Bunday holda, faylning haqiqiy komponentlari har xil turdagi bo'lishi mumkin. Misol. UnType = faylni yozing; Fayl turini to'g'ridan-to'g'ri fayl o'zgaruvchilari e'lon qilinganda ham aniqlash mumkin: var Fl, F2: file of Integer; Fayl o'zgaruvchilari maxsus foydalanishga ega. Siz ular ustida hech qanday amallarni bajara olmaysiz (qiymat belgilash, solishtirish va h.k.). Ulardan faqat fayllar ustida operatsiyalarni bajarish (o'qish, yozish, faylni o'chirish va hokazo) uchun ishlatilishi mumkin. Fayllar bilan ishlash 11-bandda muhokama qilinadi. Bundan tashqari, fayl o'zgaruvchisi orqali siz ma'lum bir fayl (turi, parametrlari, fayl nomi va boshqalar) haqida ma'lumot olishingiz mumkin. d.)

Ma'lumotlar turi haqiqiy qiymatlar to'plamini va amaldagi operatsiyalar to'plamini belgilaydi.

Oddiy turlar.

Oddiy turlar ORDINAL va REAL ga bo'linadi.

1. TARTIBI TURLARI , o'z navbatida quyidagilar mavjud:

a) butun

Paskal 5 ta butun son turini belgilaydi, ular o'zgaruvchi qabul qiladigan belgi va qiymatga qarab aniqlanadi.

Ismni yozing

Uzunlik (baytlarda)

Qiymatlar diapazoni

32 768...+32 767

2 147 483 648...+2 147 483 647

b) mantiqiy

Bu turning nomi BOOLEAN. Mantiqiy qiymatlar mantiqiy doimiylardan biri bo'lishi mumkin: TRUE (to'g'ri) yoki FALSE (noto'g'ri).

c) ramziy

Bu tipning nomi CHAR - 1 baytni egallaydi. Belgilar turining qiymati kompyuterning barcha belgilar to'plamidir. Har bir belgiga 0…255 oralig'ida butun son beriladi. Bu raqam belgining ichki ko'rinishi uchun kod bo'lib xizmat qiladi.

2. REAL TURLAR .

Qiymatlari har doim bir qator butun sonlar bilan taqqoslanadigan va shuning uchun shaxsiy kompyuterda mutlaqo aniq ifodalanadigan tartibli turlardan farqli o'laroq, haqiqiy turlarning qiymatlari ixtiyoriy sonni faqat haqiqiy sonning ichki formatiga qarab cheklangan aniqlik bilan belgilaydi. .

Raqamli ma'lumotlar turining uzunligi, baytlar

Raqamli ma'lumotlar turi nomi

Raqamli ma'lumotlar turining muhim raqamlari soni

Raqamli ma'lumotlar turining o'nlik tartib diapazoni

2*1063 +1..+2*1063 -1

TUZILGAN TURLAR

Strukturaviy ma'lumotlar turlari skalyar o'zgaruvchilarning tartiblangan to'plamini belgilaydi va ularning tarkibiy qismlari turi bilan tavsiflanadi.

Strukturaviy ma'lumotlar turlari, oddiylaridan farqli o'laroq, bitta umumiy nom bilan ko'plab murakkab qiymatlarni belgilaydi. Aytishimiz mumkinki, strukturaviy tiplar mavjud turlardan yangi turlarni shakllantirishning ma'lum bir usulini belgilaydi.

Bir nechta tuzilish usullari mavjud. Kompleks ma'lumotlar turlarida tashkil etish usuli va komponentlar turiga ko'ra quyidagi navlar ajratiladi: muntazam tip (massivlar); birlashtirilgan turdagi (yozuvlar); fayl turi (fayllar); bir nechta tur(lar); string turi (strings); Turbo Paskal tilining 6.0 va undan yuqori versiyalarida ob'ekt turi (ob'ektlar) kiritildi.

Oddiy ma'lumotlar turlaridan farqli o'laroq, tuzilgan turdagi ma'lumotlar ushbu turni tashkil etuvchi elementlarning ko'pligi bilan tavsiflanadi, ya'ni. tuzilgan turdagi o'zgaruvchi yoki doimiy har doim bir nechta komponentlarga ega. Har bir komponent, o'z navbatida, tuzilgan turga tegishli bo'lishi mumkin, ya'ni. turlarini joylashtirish mumkin.

1. Massivlar

Turbo Paskaldagi massivlar ko'p jihatdan boshqa dasturlash tillaridagi o'xshash ma'lumotlar turlariga o'xshaydi. Massivlarning o'ziga xos xususiyati shundaki, ularning barcha komponentlari bir xil turdagi (ehtimol tuzilgan) ma'lumotlardir. Ushbu komponentlar osongina tartibga solinishi mumkin va ulardan istalgan biriga oddiygina seriya raqamini ko'rsatish orqali kirish mumkin.

Massiv tavsifi quyidagicha belgilanadi:

<имя типа>= massiv[<сп.инд.типов>] ning<тип>

Bu yerga<имя типа>- to'g'ri identifikator;

Massiv, of – ajratilgan so‘zlar (massiv, dan);

<сп.инд.типов>- vergul bilan ajratilgan bir yoki bir nechta indeks turlarining ro'yxati; ro'yxatni belgilovchi kvadrat qavslar sintaksis talabidir;

<тип>- Turbo Paskalning istalgan turi.

Turbo Paskalda indeks turlari sifatida har qanday tartibli turlardan foydalanish mumkin, LongInt va asosiy LongInt tipidagi diapazon turlaridan tashqari.

Umuman tuzilgan tiplarni va shuning uchun massivlarni joylashtirish chuqurligi ixtiyoriydir, shuning uchun tip indekslari ro'yxatidagi elementlar soni (massiv o'lchami) cheklanmagan, ammo har qanday massivning ichki tasvirining umumiy uzunligini aniqlab bo'lmaydi. 65520 baytdan ortiq bo'lishi kerak.

2. Yozuvlar

Yozuv - bu yozuv maydonlari deb ataladigan qattiq miqdordagi komponentlardan tashkil topgan ma'lumotlar strukturasi. Massivdan farqli o'laroq, yozuvning komponentlari (maydonlari) har xil turdagi bo'lishi mumkin. Yozuvning u yoki bu komponentiga murojaat qilish imkoniyatini yaratish uchun maydonlar nomlanadi.

Post turi deklaratsiyasining tuzilishi:

< Ismturi>=YOZISH< Qo'shma korxona. dalalar>END

Bu yerga<имя типа>- to'g'ri identifikator;

RECORD, END – zahiralangan so‘zlar (record, end);

<сп.полей>- maydonlar ro'yxati; nuqta-vergul bilan ajratilgan yozuvning bo'limlari ketma-ketligi.

3. To'plamlar

To'plamlar bir-biri bilan mantiqiy bog'langan bir xil turdagi ob'ektlar to'plamidir. Ob'ektlar orasidagi bog'lanishlarning tabiati faqat dasturchi tomonidan nazarda tutiladi va Turbo Paskal tomonidan hech qanday tarzda boshqarilmaydi. to'plamga kiritilgan elementlar soni 0 dan 256 gacha o'zgarishi mumkin (elementlari bo'lmagan to'plam bo'sh deyiladi).Masivlar va yozuvlardan farq qiladigan narsa uning elementlari sonining nomuvofiqligidir.

Ikki to'plam, agar ularning barcha elementlari bir xil bo'lsa va to'plam elementlarining tartibi inferent bo'lsa, ekvivalent hisoblanadi. Agar bir to'plamning barcha elementlari boshqa to'plamga kiritilgan bo'lsa, birinchi to'plam ikkinchisiga kiritilgan deyiladi.

To'plam turining tavsifi:

< Ismturi>=SET OF< asoslar. turi>

Bu yerga<имя типа>- to'g'ri identifikator;

SET, OF – ajratilgan so‘zlar (to‘plam, ning);

<баз.тип>- WORD, INTEGER va LONGINT dan boshqa har qanday tartib tipdagi bo'lishi mumkin bo'lgan to'plam elementlarining asosiy turi.

To'plamni aniqlash uchun to'plam konstruktori deb ataladigan narsa qo'llaniladi: vergul bilan ajratilgan to'plam elementlarining spetsifikatsiyalari ro'yxati; ro'yxat kvadrat qavslar bilan o'ralgan. Element spetsifikatsiyalari asosiy turdagi konstantalar yoki ifodalar, shuningdek, bir xil asosiy turdagi diapazon turi bo'lishi mumkin.

4. Fayllar

Fayl deganda shaxsiy kompyuterning tashqi xotirasining belgilangan maydoni yoki mantiqiy qurilma - potentsial manba yoki ma'lumot qabul qiluvchisi tushuniladi.

Har qanday fayl uchta xarakterli xususiyatga ega

    uning nomi bor, bu dasturga bir vaqtning o'zida bir nechta fayllar bilan ishlash imkonini beradi.

    unda bir xil turdagi komponentlar mavjud. Komponent turi fayllardan tashqari har qanday Turbo Paskal turi bo'lishi mumkin. Boshqacha qilib aytganda, siz "fayllar faylini" yarata olmaysiz.

    yangi yaratilgan faylning uzunligi e'lon qilinganda hech qanday tarzda ko'rsatilmaydi va faqat tashqi xotira qurilmalarining sig'imi bilan cheklanadi.

Fayl turi yoki fayl turi o'zgaruvchisi uchta usuldan birida ko'rsatilishi mumkin:

< Ism>= FILE OF< turi>;

< Ism>=TEXT;

<имя>= FILE;

Bu yerga<имя>- fayl turi nomi (to'g'ri identifikator);

FILE, OF – zahiralangan so‘zlar (fayl, dan);

TEXT – standart matnli fayl turining nomi;

<тип>- Turbo Paskalning istalgan turi, fayllardan tashqari.

Deklaratsiya usuliga qarab, fayllarning uch turini ajratish mumkin:

· terilgan fayllar (FILE OF... bandi bilan o'rnatiladi);

· matnli fayllar (TEXT turi sifatida belgilanadi);

· tiplanmagan fayllar (FILE turi bilan belgilanadi).

Paskalning raqamli ma'lumotlar turlarini konvertatsiya qilish haqida

Paskalda raqamli ma'lumotlar turlarini yashirin (avtomatik) konvertatsiya qilish deyarli mumkin emas. Istisno faqat real turdagi ifodalarda foydalanishga ruxsat berilgan butun son turi uchun qilingan. Misol uchun, agar o'zgaruvchilar quyidagicha e'lon qilingan bo'lsa:

Var X: butun son; Y: haqiqiy;

keyin operator

sintaktik jihatdan to'g'ri bo'ladi, garchi tayinlash belgisining o'ng tomonida butun son ifodasi va chap tomonda haqiqiy o'zgaruvchi bo'lsa ham, kompilyator raqamli ma'lumotlar turlarini avtomatik ravishda o'zgartiradi. Paskalda avtomatik ravishda haqiqiy turdan butun son turiga teskari aylantirish mumkin emas. Integer va real tipidagi o‘zgaruvchilar uchun qancha bayt ajratilganligini eslaylik: integer tipli integer uchun xotira 2 bayt, real uchun 6 bayt ajratilgan. Haqiqiyni butun songa aylantirish uchun ikkita o'rnatilgan funksiya mavjud: round(x) haqiqiy x ni eng yaqin butun songa yaxlitlaydi, trunc(x) kasr qismini tashlab, haqiqiyni qisqartiradi.

Oddiy turlarga ordinal, real va datetime tiplari kiradi.

Tartibiy tiplar har birida mumkin bo'lgan qiymatlarning cheklangan soniga ega bo'lishi bilan farqlanadi. Ushbu qiymatlar ma'lum bir tarzda tartibga solinishi mumkin (shuning uchun turlarning nomi) va shuning uchun ularning har biri qandaydir butun son - qiymatning tartib raqami bilan bog'lanishi mumkin.

Haqiqiy turlar, aniq aytganda, haqiqiy sonning ichki ko'rinishi formati bilan belgilanadigan cheklangan miqdordagi qiymatlarga ega. Biroq, haqiqiy turlarning mumkin bo'lgan qiymatlari soni shunchalik kattaki, ularning har biri bilan butun sonni (uning raqamini) bog'lash mumkin emas.

Datetime turi sana va vaqtni saqlash uchun mo'ljallangan. Aslida, bu maqsadlar uchun haqiqiy formatdan foydalanadi.

Tartib turlari

Tartib turlarga (1.1-rasmga qarang) butun son, mantiqiy, belgi, sanab o‘tilgan va diapazon turlari kiradi. X ifoda qiymatining tartib raqamini qaytaruvchi Ord(x) funksiyasi ularning har qandayiga qo'llanilishi mumkin.

Guruch. 1.1

Butun sonlar turlari uchun ord(x) funksiyasi x ning o'zi qiymatini qaytaradi, ya'ni har qanday butun son turiga tegishli bo'lgan x uchun Ord(X) = x. Ord(x) ni mantiqiy, belgilar va sanab turlariga qo‘llash 0 dan 1 gacha (mantiqiy), 0 dan 255 gacha (belgi), 0 dan 65535 gacha (sanoq) oralig‘ida musbat butun son hosil qiladi. Diapazon turi asosiy tartib turining barcha xossalarini saqlab qoladi, shuning uchun unga ord(x) funksiyasini qo‘llash natijasi shu turning xususiyatlariga bog‘liq.

Funksiyalarni tartibli turlarga ham qoʻllashingiz mumkin:

pred(x) - tartib turining oldingi qiymatini qaytaradi (tartib raqami ord(x) -1 ga mos keladigan qiymat, ya'ni ord(pred(x)) = ord(x) - 1);

succ(x) - ord(x) +1 tartib raqamiga mos keladigan tartib turining keyingi qiymatini qaytaradi, ya'ni ord(Succ(x)) = ord(x) + 1.

Misol uchun, agar dastur o'zgaruvchini aniqlasa

keyin PRED(c) funksiyasi “4” belgisini, SUCC(c) funksiyasi esa “6” belgisini qaytaradi.

Agar biz har qanday tartibli turni chapdan o'ngga ortib boruvchi va raqamlar o'qida ma'lum bir segmentni egallagan tartiblangan qiymatlar to'plami sifatida tasavvur qilsak, u holda pred(x) funktsiyasi chap uchi uchun aniqlanmagan va succ (x) bo'ladi. ushbu segmentning o'ng uchi uchun aniqlanmagan.

Butun turlari. Butun son turlarining mumkin bo'lgan qiymatlari diapazoni ularning ichki ko'rinishiga bog'liq bo'lib, ular bir, ikki, to'rt yoki sakkiz bayt bo'lishi mumkin. Jadvalda 1.1 butun son turlarining nomlarini, ularning baytlarda ichki tasvirlash uzunligini va mumkin bo'lgan qiymatlar diapazonini ko'rsatadi.

1.1-jadval - Butun sonlar turlari

Ism

Uzunlik, baytlar

Qiymatlar diapazoni

0. .. 2 147 483 647

32 768...+32 767

2 147 483 648...+2 147 483 647

9*1018...+9*1018

0. . .4 294 967 295

LongWord va Int64 turlari birinchi marta 4-versiyada taqdim etilgan, biroq Smallint va Cardinal turlari Delphi 1da yo'q edi. Ushbu versiya uchun butun son turi 2 baytni egallaydi va -32768 dan +32767 gacha bo'lgan qiymat oralig'iga ega, ya'ni xuddi shunday. Smallint.

Butun son parametrlari bilan protseduralar va funktsiyalardan foydalanganda, siz turlarni "uya joylashtirish" ga amal qilishingiz kerak, ya'ni. Qayerda so'z ishlatilishi mumkin bo'lsa, Baytga ruxsat beriladi (lekin aksincha emas), Longint Smallintni "o'z ichiga oladi", bu esa o'z navbatida Shortintni o'z ichiga oladi.

Butun sonlar turlari uchun qo'llaniladigan protseduralar va funktsiyalar ro'yxati jadvalda keltirilgan. 1.2. b, s, w, i, l harflari mos ravishda Bayt, Shortint, Word, Integer va Longint tipidagi ifodalarni bildiradi.

x - bu turlarning har qandayining ifodasi; vb, vs, vw, vi, vl, vx harflari tegishli turdagi o'zgaruvchilarni bildiradi. Ixtiyoriy parametr kvadrat qavs ichida ko'rsatilgan.

1.2-jadval - Butun turlarga qo'llaniladigan standart protseduralar va funktsiyalar

Shikoyat qilish

Natija turi

Harakat

X modulini qaytaradi

Belgini kodi bo'yicha qaytaradi

vx qiymatini i ga, i bo'lmaganda esa 1 ga kamaytiradi

vx qiymatini i ga, i bo'lmaganda esa 1 ga oshiradi

Argumentning eng yuqori kamonini qaytaradi

Uchinchi baytni qaytaradi

Argumentning past baytini qaytaradi

Argument toq son bo'lsa, True qiymatini qaytaradi

Parametr bilan bir xil

0...(w-l) oralig‘ida bir xil taqsimlangan soxta tasodifiy sonni qaytaradi.

Argument kvadratini qaytaradi

Bir so'zda baytlarni almashtiradi

Butun sonlar bilan ishlaganda, natija turi operandlar turiga mos keladi, agar operandlar turli xil butun sonli bo'lsa, ikkala operandni o'z ichiga olgan umumiy tipga mos keladi. Masalan, shortint va so'z bilan ishlashda umumiy tip butun son bo'ladi. Standart sozlamada Delphi kompilyatori qiymat diapazondan tashqarida ekanligini tekshirish uchun kod ishlab chiqarmaydi, bu esa tushunmovchiliklarga olib kelishi mumkin.

Mantiqiy turlar. Mantiqiy turlarga Boolean, ByteBool, Bool, wordBool va LongBool kiradi. Standart Paskalda faqat mantiqiy tip aniqlanadi, qolgan mantiqiy tiplar Object Pascalda Windows bilan mosligi uchun kiritilgan: Boolean va ByteBool turlari har biri bir baytni, Bool va WordBool - 2 bayt, LongBool - 4 baytni egallaydi. Mantiqiy qiymatlar oldindan e'lon qilingan False yoki True konstantalaridan biri bo'lishi mumkin.

Mantiqiy tip tartibli tip boʻlgani uchun u sanaladigan tipdagi sikl operatorida ishlatilishi mumkin. Mantiqiy qiymat uchun Delphi 32 da

Ord(True) = +1, boshqa turlar uchun esa (Bool, WordBool va boshqalar)

Ord(True) = -1, shuning uchun bunday operatorlardan ehtiyotkorlik bilan foydalanish kerak! Masalan, Delphi 6 uchun quyidagi for tsiklidagi bajariladigan showMessage (" --- ") operatori bir marta ham bajarilmaydi:

L:= False to True uchun

ShowMessage("--);

Agar oldingi misoldagi halqa parametri L turini mantiqiyga o‘zgartirsangiz, sikl ishga tushadi va ekranda ikki marta xabar paydo bo‘ladi. [Delphining 1 va 2 versiyalari uchun ord (True) =+1 har qanday mantiqiy tur uchun.]

Belgi turi. Belgilar turining qiymati kompyuterning barcha belgilar to'plamidir. Har bir belgiga 0...255 oralig'ida butun son beriladi. Bu raqam belgining ichki ko'rinishi uchun kod bo'lib xizmat qiladi, u ord funktsiyasi tomonidan qaytariladi.

Windows-da kodlash uchun ANSI kodi ishlatiladi (Amerika Milliy Standartlar Instituti nomi bilan atalgan, Amerika standartlashtirish instituti ushbu kodni taklif qilgan). 0... 127 kodli kompyuter belgilarining birinchi yarmi 1.3-jadvalga mos keladi. 128...255 kodli belgilarning ikkinchi yarmi turli shriftlar uchun farq qiladi. Arial Cyr, Courier New Cyr va Times New Roman standart Windows shriftlari kirill alifbosidagi belgilarni (“yo” va “Yo” harflarisiz) ifodalash uchun oxirgi 64 ta koddan (192 dan 256 gacha) foydalanadi: “A”... “Z” kodlangan qiymatlar 192..223, “a”... “i” - 224...255. “Yo” va “e” belgilari mos ravishda 168 va 184 kodlariga ega.

1.3-jadval - ANSI standartiga muvofiq belgilarni kodlash

0...31 kodli belgilar xizmat kodlariga tegishli. Agar ushbu kodlar dasturning belgilar matnida ishlatilsa, ular bo'sh joy hisoblanadi.

Char tipi relyatsion operatsiyalarni, shuningdek o'rnatilgan funktsiyalarni qo'llaydi:

Shar (v) - char tipidagi funksiya; Bayt tipidagi ifodani belgiga aylantiradi va uni qiymati bilan qaytaradi;

UpCase(CH) - char tipidagi funksiya; agar sn kichik lotin harfi bo'lsa, bosh harfni qaytaradi, aks holda sn belgisini o'zini qaytaradi (kirill uchun asl belgini qaytaradi).

Ro'yxatga olingan tur. Sanab o'tilgan tur qabul qilishi mumkin bo'lgan qiymatlar ro'yxati bilan belgilanadi. Har bir qiymat ba'zi identifikator tomonidan nomlanadi va qavslar bilan o'ralgan ro'yxatda joylashgan, masalan:

ranglar = (qizil, oq, ko'k);

Sanab o'tilgan turlardan foydalanish dasturlarni ingl.

Sanab o'tilgan turdagi qiymatlar va bu qiymatlarning tartib raqamlari o'rtasidagi muvofiqlik sanab o'tish tartibi bilan belgilanadi: ro'yxatdagi birinchi qiymat 0 tartib raqamini oladi, ikkinchisi - 1 va hokazo. Maksimal kardinallik. sanab o'tilgan tur 65536 qiymatdir, shuning uchun aslida sanab o'tilgan tur butun turdagi so'zning ba'zi bir kichik to'plamini belgilaydi va 0, 1 va hokazo qiymatlarga ega bo'lgan butun son doimiylari guruhining ixcham deklaratsiyasi sifatida ko'rib chiqilishi mumkin.

Ro'yxatga olingan turlardan foydalanish mos keladigan o'zgaruvchilar qabul qiladigan qiymatlarni boshqarishga imkon berish orqali dasturlarning ishonchliligini oshiradi. Object Pascal teskari konvertatsiya qilishga imkon beradi: Word tipidagi har qanday ifodani enum tipidagi qiymatga aylantirish mumkin, agar butun son ifodasining qiymati ushbu turdagi kardinallikdan oshmasa. Ushbu konvertatsiya sanab o'tilgan tur nomi bilan avtomatik e'lon qilingan funksiyadan foydalanish orqali erishiladi.

Tur oralig'i. Diapazon turi uning asosiy turining kichik to‘plami bo‘lib, diapazon turidan tashqari har qanday tartibli tur bo‘lishi mumkin.

Diapazon turi uning asosiy turdagi qiymatlari chegaralari bilan belgilanadi:

<мин.знач.>..<макс.знач.>

Bu yerga<мин. знач. >- turdagi diapazonning minimal qiymati;<макс. знач. >- uning maksimal qiymati.

Diapazon turini turlar bo'limida tavsiflash shart emas, lekin o'zgaruvchini e'lon qilishda bevosita ko'rsatilishi mumkin.

Diapazon turini aniqlashda siz quyidagi qoidalarga amal qilishingiz kerak:

ikkita ".." belgisi bitta belgi sifatida ko'rib chiqiladi, shuning uchun ular orasidagi bo'shliqqa ruxsat berilmaydi; diapazonning chap chegarasi uning o'ng chegarasidan oshmasligi kerak.

Diapazon turi o'zining asosiy turining barcha xususiyatlarini meros qilib oladi, lekin uning pastki quvvati cheklovlari bilan. Xususan, agar o'zgaruvchi aniqlangan bo'lsa.

Object Pascal standart kutubxonasi diapazon turlari bilan ishlashni qo'llab-quvvatlaydigan ikkita funktsiyani o'z ichiga oladi:

High(x) - x o'zgaruvchisi tegishli bo'lgan diapazon tipining maksimal qiymatini qaytaradi;

Past (x) - diapazon turining minimal qiymatini qaytaradi.

Haqiqiy turlari

Qiymatlari har doim bir qator butun sonlar bilan taqqoslanadigan va shuning uchun shaxsiy kompyuterda mutlaqo aniq ifodalanadigan tartibli turlardan farqli o'laroq, haqiqiy turlarning qiymatlari ixtiyoriy sonni faqat haqiqiy sonning ichki formatiga qarab cheklangan aniqlik bilan belgilaydi. .

1.4-jadval - Haqiqiy turlari

Delphi 1...3 ning oldingi versiyalarida Real turi 6 baytni egallagan va 2,9*10-39 dan 1,7*1038 gacha bo'lgan qiymatlar oralig'iga ega edi. 4 va 5 versiyalarda bu tur Double turiga teng. Agar siz (moslik sabablarga ko'ra) 6 baytli Reallardan foydalanishni istasangiz, kompilyator direktivasini (SREALCOMPATIBILITY ON) belgilashingiz kerak.

Jadvaldan ko'rinib turibdiki. 1.4, Object Pascal tilidagi haqiqiy son 4 dan 10 tagacha yonma-yon baytni egallaydi va ShK xotirasida quyidagi tuzilishga ega.

Bu yerda s sonning ishora raqami; e - eksponensial qism; ikkilik tartibni o'z ichiga oladi; m - raqamning mantisasi.

Mantissa m uzunligi 23 (bitta uchun) dan 63 (kengaytirilgan uchun) ikkilik raqamlarga ega, bu birlik uchun 7...8 va Kengaytirilgan o'nlik raqamlar uchun 19...20 aniqligini ta'minlaydi. Kasr nuqtasi (vergul) mantisaning chap (eng muhim) raqamidan oldin nazarda tutilgan, ammo raqam bilan ishlaganda, uning pozitsiyasi eksponensial qismda saqlangan sonning ikkilik tartibiga muvofiq chap yoki o'ngga siljiydi. , shuning uchun haqiqiy sonlar ustida amallar deyiladi suzuvchi nuqta (vergul) arifmetik .

E'tibor bering, arifmetik protsessor har doim raqamlarni Kengaytirilgan formatda qayta ishlaydi va bu holda boshqa uchta haqiqiy tur natijalarni kerakli o'lchamga qisqartirish orqali olinadi va asosan xotirani tejash uchun ishlatiladi.

Object Pascal-da alohida o'rinni comp va Currency turlari egallaydi, ular qat'iy uzunlikdagi kasr qismlariga ega haqiqiy sonlar sifatida qaraladi: kompda kasr qismi 0 ta raqamga ega, ya'ni valyutada u shunchaki yo'q. kasr qismi uzunligi -4 kasr. Aslida, ikkala tur ham 19...20 muhim o'nlik raqamlarni saqlaydigan katta belgili butun sonni belgilaydi (ichki ular 8 ta qo'shni baytni egallaydi). Shu bilan birga, komp va valyuta ifodalari boshqa har qanday real turlarga to'liq mos keladi: ular bo'yicha barcha real operatsiyalar aniqlangan, ular matematik funktsiyalarga argument sifatida ishlatilishi mumkin va hokazo. Ushbu turlar uchun eng mos dastur sohasi. buxgalteriya hisob-kitoblari.



 


O'qing:



Eng yaxshi simsiz minigarnituralar reytingi

Eng yaxshi simsiz minigarnituralar reytingi

Universal quloqlarni arzon sotib olish mumkinmi? 3000 rubl - bunday pulga yuqori sifatli eshitish vositalarini sotib olish mumkinmi? Ma'lum bo'lishicha, ha. Va nutq ...

Mobil qurilmaning asosiy kamerasi odatda tananing orqa tomonida joylashgan bo'lib, fotosuratlar va videolarni olish uchun ishlatiladi

Mobil qurilmaning asosiy kamerasi odatda tananing orqa tomonida joylashgan bo'lib, fotosuratlar va videolarni olish uchun ishlatiladi

Yaxshilangan xarakteristikalar va yuqori avtonomiyaga ega planshetning yangilangan versiyasi.Acer smartfonlariga kamdan-kam tashrif buyuradi...

Raqamingizni saqlab qolgan holda boshqa operatorga qanday o'tish mumkin

Raqamingizni saqlab qolgan holda boshqa operatorga qanday o'tish mumkin

Rossiyada 1 dekabrdan boshlab abonent boshqa uyali aloqa operatoriga o‘tganda telefon raqamini saqlab qolish to‘g‘risidagi qonun kuchga kirdi. Biroq, ma'lum bo'lishicha, ...

phabletni ko'rib chiqish, qimmat, lekin juda malakali

phabletni ko'rib chiqish, qimmat, lekin juda malakali

Qimmatbaho, lekin juda malakali fablet sharhi 20.03.2015 Men dunyodagi etiksiz yagona poyabzalchiman, o'z smartfonimsiz smartfon sharhlovchisiman....

tasma tasviri RSS