Windows.  Viruslar.  Noutbuklar.  Internet.  Idora.  Utilitalar.  Haydovchilar

Laboratoriya ishi № 3

Mavzu: Mantiqiy tip (boolean).

Paskalda ikkita mantiqiy konstanta mavjud: TRUE (to'g'ri) va FALSE (noto'g'ri). Mantiqiy o'zgaruvchi ushbu qiymatlarning istalganini olishi mumkin va mantiqiy turdagi. Mantiqiy ma'lumotlardan ma'lum shartlarning to'g'riligini tekshirishda va miqdorlarni taqqoslashda keng qo'llaniladi. Natija "to'g'ri" yoki "noto'g'ri" bo'lishi mumkin. Mantiqiy ma'lumotlarda quyidagi operatsiyalarga ruxsat beriladi:

Mantiqiy operatsiyalar:

Operator

Operatsiya

Operand turi

Natija turi

inkor qilish

mantiqiy VA

mantiqiy OR

mantiqiy eksklyuziv OR

Mantiqiy ma'lumotlar bo'yicha operatsiyalar natijalari jadvalda jamlangan:

(A) va (B)

(A) yoki (B)

Mantiqiy turdagi ma'lumotlardan taqqoslash operatsiyalari va mantiqiy operatsiyalar tuziladi mantiqiy ifodalar, mantiqiy turdagi qiymatlarga ega. Masalan: (c10) yoki (d

Mantiqiy ifodalarning qiymatlarini baholashda siz mantiqiy operatsiyalarni bajarish tartibini hisobga olishingiz kerak. NOT operatori eng yuqori ustuvorlikka ega, undan keyin AND operatori, keyin esa OR operatori. Taqqoslash operatsiyalari eng past ustuvorlikka ega.

Mantiqiy tipdagi oʻzgaruvchilar standart identifikator BOOLEAN yordamida oʻzgaruvchilarni eʼlon qilish boʻlimida tasvirlangan.

Misol: a, R1, f: mantiqiy;.

Paskalda mantiqiy tipni qabul qiluvchi funksiyalar mavjud:

1. ODD(A)- qiymat A juft son bo'lmaganda to'g'ri bo'ladi.

2. EOLN- agar satr oxiri bo'lsa, true matn fayli.

3. EOF- matn faylining oxiri bo'lsa, true.

Misol dastur:

var a,b,c:integer;

writeln('uchta butun sonni kiriting');

write(‘s=’,s);

Dasturning bajarilishi natijasida s o'zgaruvchisiga mantiqiy ifoda noto'g'ri yoki rost bo'lganiga qarab TRUE yoki FALSE qiymati beriladi va ekranda s o'zgaruvchining qiymati ko'rsatiladi, ya'ni. Ekranda TRUE yoki FALSE paydo bo'ladi.

No3 laboratoriya ishiga topshiriqlar.

Amalga oshirish uchun laboratoriya ishi Belgilangan shartlar bajarilgan yoki bajarilmasligiga qarab, rost yoki noto'g'ri chop etadigan dasturlarni yozish kerak:

    Ixtiyoriy a, b va c haqiqiy sonlar uchun kvadrat tenglama kamida bitta haqiqiy yechimga ega ekanligini aniqlang.

    Berilgan to‘rt xonali sonning dastlabki ikki raqamining yig‘indisi uning oxirgi ikki raqamining yig‘indisiga teng yoki yo‘qligini aniqlang.

    Berilgan uch xonali sonning kvadrati shu son raqamlari yig‘indisining kubiga teng yoki yo‘qligini aniqlang.

    Berilgan musbat haqiqiy sonning kasr qismining dastlabki uchta raqami orasida 0 raqami bor yoki yo‘qligini aniqlang.

    Berilgan uch xonali sonning raqamlari orasida bir xil raqamlar bor yoki yo'qligini aniqlang.

    Uchta ixtiyoriy raqam berilgan. Ushbu tomonlar uzunliklari bilan uchburchak qurish mumkinligini aniqlang.

    Ekranda ko'rsatilgan mantiqiy o'zgaruvchi bilan barcha mantiqiy amallar yordamida mantiqiy tenglama tuzing.

    Kvadrat kattaroq yoki yo'qligini aniqlang berilgan raqam kvadrat ildiz boshqa berilgan raqam.

    Qavariq to'rtburchak tomonlarining uzunliklari ifodalangan a,b,c,d raqamlari. Unga doira yozish mumkinligini aniqlang.

No3 laboratoriya ishiga topshiriqlar.

Laboratoriya ishini yakunlash uchun belgilangan shartlar bajarilgan yoki bajarilmasligiga qarab rost yoki noto‘g‘ri chop etadigan dasturlarni yozishingiz kerak:

    Ixtiyoriy a, b va c haqiqiy sonlar uchun kvadrat tenglama kamida bitta haqiqiy yechimga ega ekanligini aniqlang.

    Berilgan to‘rt xonali sonning dastlabki ikki raqamining yig‘indisi uning oxirgi ikki raqamining yig‘indisiga teng yoki yo‘qligini aniqlang.

    Berilgan uch xonali sonning kvadrati shu son raqamlari yig‘indisining kubiga teng yoki yo‘qligini aniqlang.

    Berilgan musbat haqiqiy sonning kasr qismining dastlabki uchta raqami orasida 0 raqami bor yoki yo‘qligini aniqlang.

    Berilgan uch xonali sonning raqamlari orasida bir xil raqamlar bor yoki yo'qligini aniqlang.

    Uchta ixtiyoriy raqam berilgan. Ushbu tomonlar uzunliklari bilan uchburchak qurish mumkinligini aniqlang.

    Ekranda ko'rsatilgan mantiqiy o'zgaruvchi bilan barcha mantiqiy amallar yordamida mantiqiy tenglama tuzing.

    Berilgan sonning kvadrati boshqa berilgan sonning kvadrat ildizidan katta yoki yo‘qligini aniqlang.

    Qavariq to'rtburchak tomonlarining uzunliklari a,b,c,d sonlari bilan ifodalanadi. Unga doira yozish mumkinligini aniqlang.

Dasturiy ta'minot - Paskal Paskal tilidagi operatsiyalar

Paskal tilidagi operatsiyalar

Amallar operandlar bo'yicha amallarni belgilaydi. Paskal tilida ikkilik va unar amallar mavjud. Birlik operatsiyalar 1 ta operandni o'z ichiga oladi, oldiga operator belgisi qo'yilgan. Binar operatsiyalar 2 ta operandga ega bo'lib, ular orasiga operatsiya belgisi yoki belgisi qo'yiladi. Harakatlarning tabiati bo'yicha Paskal tilidagi amallarni 7 guruhga bo`lish mumkin:

  • arifmetik;
  • munosabat;
  • aql o'yini;
  • ip;
  • bit, siljish;
  • to'plamlar bo'yicha operatsiyalar;
  • manzillarni olish operatsiyalari.

Arifmetik amallar. Paskal tilida minus belgisini belgilash va ortiqcha belgisini ikkinchi belgilash deb ataladigan bitta unar amal mavjud. Ikkilik:

  • qo'shimcha (+);
  • ayirish (-);
  • ko'paytirish (*);
  • haqiqiy bo'linish (/);
  • butun songa bo'linish (div);
  • butun son bo'linishining qolgan qismi (mod).

Paskalda uchta bo'lish amallari mavjud, bo'lish amalining natijasi (/) kasr qismi bo'lgan son, div operatsiyasining natijasi faqat butun son, mod operatsiyasi natijasi esa butun son bo'linishining qolgan qismidir. Misollar:

Arifmetik amallarda faqat sonli turdagi operandlar qatnashishi mumkin. Ularning natijasi ham raqam bo'ladi. Raqam butun yoki haqiqiy bo'lishi mumkin.

Aloqa operatsiyalari. Bularga barcha ikkilik operatsiyalar kiradi:

  • Ko'proq;
  • Ozroq;
  • ko'proq yoki teng;
  • kamroq yoki teng
  • teng
  • teng emas.

Relyatsion amallarning natijasi faqat mantiqiy tipdagi o'zgaruvchi bo'lishi mumkin, u True yoki False qiymatini qabul qilishi mumkin; Relyatsion operatsiyadagi operandlar sonli turlar yoki sonli turlarga qisqartirilishi mumkin bo'lgan turlar bo'lishi mumkin. Raqamli turlar:

  • ramziy - bog'liq operatsiyalarda kodlar jadvaliga muvofiq belgilar kodlari taqqoslanadi;
  • mantiqiy - mos ravishda 1 - rost va 0 - noto'g'ri qiymatlarni qabul qilib, True va False qiymatlari ishlatiladi;
  • string - belgilar turidan tashkil topgan kompozit tur. Shuning uchun satrlardan foydalanilganda ikki qatordagi ketma-ket belgilar solishtiriladi.

Masalan:

5.6 > 7 — notoʻgʻri;

"P"< ‘Б’ — False;

"Petrov" > "Ivanov" - To'g'ri;

"Ivanov"< ‘Иван’ — False.

Natija mantiqiy operatsiyalar mantiqiy qiymatlar True yoki False bo'ladi.

Birlik: EMAS - inkor.

Ikkilik: AND - ko'paytirish (va); OR - qo'shish (yoki); XOR - qo'shimcha modul 2 (eksklyuziv OR).

Mantiqiy ifodaning operandlari faqat mantiqiy turdagi operatsiyalar bo'lishi mumkin.

String operatsiyalari. Konkatenatsiya (birlashtirish) ikkilik amaldir. Operandlar faqat satr tipidagi o'zgaruvchilar bo'lishi mumkin. Natijada satr hosil bo'ladi va operatsiya harakati ikkita satrni bittaga birlashtirishdir:

A:="Ivanov"

B:= "Iskandar"

Natija: Ivanov Aleksandr.

Paskalda amallar ketma-ketligi 3 omil bilan belgilanadi:

  • operatsiyalarning ustuvorligi;
  • operatsiyalar tartibi;
  • qavslardan foydalanish.

Amalga oshirilgan operatsiyalarning ustuvor darajalari:

  • Birinchi navbatdagi operatsiyalar birinchi navbatda amalga oshiriladi;
  • Kam ustuvor operatsiyalar oxirgi marta amalga oshiriladi;
  • teng ustuvorliklarga ega bo'lgan operatsiyalar ular yozilish tartibida chapdan o'ngga amalga oshiriladi.

Shu bilan birga, kompilyator ba'zan bir xil ustuvorlikdagi operandlarni qayta tartiblashi mumkin. Qavslar ustuvorlikni o'zgartirish uchun ishlatiladi (uni oshirish). Qavslar ichidagi ifoda avval baholanadi, keyin esa qavs tashqarisida baholanadi.

Har qanday ma'lumotlar - konstantalar, o'zgaruvchilar, funktsiya qiymatlari - Paskalda ma'lumotlar turi bilan tavsiflanadi.

Keling, kontseptsiyani aniqlaylik ma'lumotlar turi. Ma'lumki, barcha dastur ob'ektlari (o'zgaruvchilar, doimiylar va boshqalar) tavsiflanishi kerak.

Ta'riflar tarjimonga, birinchidan, o'zgaruvchilar va foydalaniladigan boshqa ob'ektlarning mavjudligi haqida ma'lumot beradi, ikkinchidan, ular ushbu ob'ektlarning xususiyatlarini ko'rsatadi. Masalan, qiymati raqam bo'lgan o'zgaruvchining tavsifi raqamlarning xususiyatlarini ko'rsatadi. Rasmiy ravishda raqamlar butun va haqiqiy (kasr) bo'lishi mumkin. Paskal tilida, boshqa dasturlash tillarida bo'lgani kabi, raqamlar ikki turga bo'linadi: butun(zahiralangan butun so'z) va haqiqiy(real so'z zaxiralangan).

Butun sonlarni alohida turga ajratish shu bilan izohlanadi: in kompyuter butun sonlar va haqiqiy sonlar turlicha ifodalanadi: butun son mutlaqo aniq ifodalanishi mumkin, lekin haqiqiy son muqarrar ravishda tarjimonning xususiyatlari bilan belgilanadigan qandaydir chekli xato bilan ifodalanishi mumkin.

Masalan, x o'zgaruvchisi real tipda bo'lsin va uning qiymati bittaga teng bo'lsin: x=1 . Kompyuter xotirasida mos keladigan qiymat 0,999999999, 1,000000001 yoki 1,000000000 bo'lishi mumkin. Ammo agar x o'zgaruvchisi butun son tipidagi o'zgaruvchi sifatida e'lon qilingan bo'lsa, u holda kompyuterdagi birlik mutlaqo aniq ifodalanadi va x o'zgaruvchisi haqiqiy (kasr) qiymatlarni qabul qila olmaydi - axir, u shunday tasvirlangan edi butun son tipidagi o'zgaruvchi.

Shunday qilib, ma'lumotlar turi quyidagilarni belgilaydi:

  • kompyuter xotirasida ma'lumotlarni ichki tasvirlash;
  • ushbu turdagi miqdorlar olishi mumkin bo'lgan qiymatlar to'plami;
  • ushbu turdagi qiymatlar bo'yicha bajarilishi mumkin bo'lgan operatsiyalar.

Ma'lumotlar turlarini joriy qilish Paskal tilining asosiy tushunchalaridan biri bo'lib, bu topshiriq operatsiyasini bajarishda. qiymat o'zgaruvchisi ifodalar, o'zgaruvchi va ifoda bir xil turdagi bo'lishi kerak. Ushbu tekshirish kompilyator tomonidan amalga oshiriladi, bu xatolarni qidirishni sezilarli darajada soddalashtiradi va dastur ishonchliligini oshiradi.

Turbo Paskal tilining ko'plab ma'lumotlar turlarini ikki guruhga bo'lish mumkin:

  • standart (oldindan belgilangan) turlari ;
  • foydalanuvchi tomonidan belgilangan turlar (foydalanuvchi tomonidan belgilangan turlar) .

Standart Turbo Paskal turlariga quyidagilar kiradi:

  • butun son turi – butun son;
  • haqiqiy turi - haqiqiy;
  • belgilar turi - char;
  • mantiqiy turi - mantiqiy;
  • string turi – string;
  • ko'rsatgich turi - ko'rsatgich;
  • matn turi - matn.

Maxsus ma'lumotlar turlari standart turlarning har xil birikmalaridir.

Maxsus turlarga quyidagilar kiradi:

  • sanab o'tilgan turi;
  • interval turi;
  • ko'rsatkich turi;
  • tuzilgan turlari;
  • protsessual turi.

Izoh. Ma'lumotlar turlarining yana bir tasnifi mumkin, unga ko'ra turlar oddiy va murakkab bo'linadi.

Oddiy turlarga quyidagilar kiradi: butun son tipi, haqiqiy tip, belgilar tipi, mantiqiy tip, sanab o'tilgan tip va interval turi.

Murakkab tur turli xil kombinatsiyalarni ifodalaydi oddiy turlari(massivlar, yozuvlar, to'plamlar, fayllar va boshqalar)

Standart turlari

Standart ma'lumotlar turi Paskal tilining o'zi tomonidan belgilanadi. Dasturda standart tiplardan foydalanilganda kerakli tiplarning (const, var) kichik bo'limlarini ko'rsatish, so'ngra dasturda qo'llaniladigan konstantalar va o'zgaruvchilarni tavsiflash kifoya. Turi bo'limini ishlatishning hojati yo'q.

Masalan, agar dastur faqat o'zgaruvchilardan foydalansa:

i,j – butun son (butun sonlar);

x,y - haqiqiy (haqiqiy);

t,s - belgi (belgi);

a,b - mantiqiy (mantiqiy),

u holda faqat o'zgaruvchilarning kichik bo'limi kerak - Var. Shuning uchun dasturning tavsif qismida o'zgaruvchilar e'lonlari quyidagicha yoziladi:

Butun sonlar turlari

Ushbu turdagi ma'lumotlar faqat butun son qiymatlarini qabul qilishi mumkin. Kompyuterda butun son tipidagi qiymatlar mutlaqo aniq ifodalanadi. Agar o'zgaruvchi manfiy bo'lsa, uning oldiga "-" belgisi qo'yilishi kerak, agar o'zgaruvchi ijobiy bo'lsa, "+" belgisi qoldirilishi mumkin. Bu tur ba'zi miqdorni taxminan haqiqiy son sifatida ifodalash mumkin bo'lmaganda zarur. Masalan, odamlar, hayvonlar va boshqalar soni.

Butun qiymatlarni yozishga misollar: 17, 0, 44789, -4, -127.

Butun son turidagi ma'lumotlarning o'zgarishi diapazoni beshta standart turdagi butun sonlar bilan belgilanadi va jadvalda keltirilgan:

Turi Diapazon Baytlarda o'lcham
Qisqasi -128...+128 1
Butun son -32768...32767 2
Longint -2147483648...2147483647 4
Bayt 0...255 1
So'z 0...65535 2

Oxirgi ikki tur faqat ijobiy raqamlarni, birinchi uchtasi esa ijobiy va salbiy sonlarni ifodalaydi.

Dastur matnida yoki butun son turidagi ma'lumotlarni kiritishda qiymatlar yoziladi kasrsiz . Haqiqiy o'zgaruvchan qiymatlar ruxsat etilgan qiymatlardan oshmasligi kerak o'zgaruvchini tavsiflash uchun foydalanilgan tur (Qisqa, Integer, Longint, Bayt, Word). Hisob-kitoblar paytida mumkin bo'lgan ortiqcha narsalar hech qanday tarzda nazorat qilinmaydi, bu dasturning noto'g'ri ishlashiga olib keladi.

Butun o'zgaruvchidan foydalanishga misol

Var a:integer; b: so'z; c:bayt; Boshlang a:=300; (a ga 300 qiymat beriladi) b:=300; (b 300 ga o'rnatiladi) c:=200; (c 200 ga o'rnatiladi) a:=b+c; (a 500 ga o'rnatiladi) c:=b; (Xato! c o'zgaruvchisi faqat 255 qiymatlarini qabul qilishi mumkin. Bu erda c o'zgaruvchisi 500 ga o'rnatiladi, bu esa natijaning to'lib ketishiga olib keladi.) End.

Haqiqiy turlari

Haqiqiy turdagi qiymatlar taxminan kompyuterda ifodalanadi. Haqiqiy turdagi ma'lumotlarning o'zgarishi diapazoni beshta standart tur bilan belgilanadi: haqiqiy (Real), bitta aniqlik (Yagona), ikki tomonlama aniqlik (Double), kengaytirilgan aniqlik (kengaytirilgan), murakkab (Comp) va jadvalda keltirilgan:

Turi Diapazon Muhim raqamlar soni Baytlarda o'lcham
Haqiqiy 2.9E-39...1.7E+38 11-12 6
Yagona 1.5E-45...3.4E+38 >7-8 4
Ikki marta 5E-324...1.7E+308 15-16 8
Kengaytirilgan 3.4E-4951...1.1E+4932 19-20 10
Comp -2E+63+1...+2E+63-1 19-20 8

Haqiqiy raqamlar ikki formatda ifodalanishi mumkin: sobit nuqta va suzuvchi nuqta.

Ruxsat etilgan nuqtali raqamni yozish formati oddiy matematik belgilar bilan bir xil kasrli raqam kasr qismi bilan. Kasr qismi, masalan, nuqta yordamida butun qismdan ajratiladi

34.5, -4.0, 77.001, 100.56

Suzuvchi nuqtali yozuv formati juda katta yoki juda kichik raqamlarni yozishda ishlatiladi. Ushbu formatda "E" dan oldingi raqam "E" dan keyingi kuchga 10 raqamiga ko'paytiriladi.

1E-4 1*10-4
3.4574E+3 3.4574*10+3
4.51E+1 4.51*10+1

O'zgaruvchan nuqtali raqamlarga misollar:

Raqam Paskalda yozish
0,0001 1E-4
3457,4 34574E-1
45,1 451E-1
40000 4E+4
124 0,124E+3
124 1.24E+2
124 12.4E+1
124 1240E-1
124 12400E-2

5 dan 9 qatorgacha bo'lgan jadval bir xil raqamning yozuvini ko'rsatadi 124. Mantisdagi o'nli kasr o'rnini o'zgartirish orqali (nuqta "suzadi", shuning uchun "suzuvchi nuqta raqamini yozish" nomi) va bir vaqtning o'zida buyurtma qiymatini o'zgartirib, siz eng mos yozuv raqamlarini tanlashingiz mumkin.

Haqiqiy turdagi o'zgaruvchilarni tavsiflashga misol.

Belgi turi

Belgilar turi qiymatlari kompyuter klaviaturasida terilishi mumkin bo'lgan belgilardir. Bu sizga dasturda matnni taqdim etish va unda turli xil operatsiyalarni bajarish imkonini beradi: alohida harflar va so'zlarni kiritish, o'chirish, formatlash va h.k.

Belgi turi bilan belgilanadi ajratilgan so'z Char va bitta belgi saqlash uchun mo'ljallangan. Belgilar ma'lumotlari xotirada bir baytni egallaydi.

Simvolik o'zgaruvchilar deklaratsiyasi formati:

<имя переменной>: Char;

Belgi o'zgaruvchining qiymatini belgilashda belgi apostroflar bilan yoziladi. Bundan tashqari, to'g'ridan-to'g'ri raqamli ASCII kod qiymatini ko'rsatish orqali kerakli belgini belgilashingiz mumkin. Bunday holda siz # belgisi bilan kerakli belgining ASCII kodini ko'rsatadigan raqamdan oldin qo'yishingiz kerak.

Belgilar tipidagi o'zgaruvchilardan foydalanishga misol:

Var c:char; (c - belgilar tipidagi o'zgaruvchi) Begin c:=’A’; (c o'zgaruvchisiga 'A' belgisi berilgan) c:=#65; (c o'zgaruvchiga A belgisi ham berilgan. Uning ASCII kodi 65) c:=’5’; (c o'zgaruvchisiga 5 belgisi beriladi, End. Bu erda 5 endi raqam emas)

Boolean turi

Mantiqiy ma'lumotlar turi matematika sohasi - matematik mantiqni yaratuvchisi ingliz matematigi Jorj Bul nomi bilan Boolean deb ataladi.

Mantiqiy turdagi o'zgaruvchini e'lon qilish formati:

<имя переменной>: mantiqiy;

Ushbu turdagi ma'lumotlar faqat ikkita qiymatni qabul qilishi mumkin:

  • To'g'ri - haqiqat;
  • Yolg'on yolg'on.

Mantiqiy ma'lumotlardan ma'lum shartlarning to'g'riligini tekshirishda va miqdorlarni taqqoslashda keng qo'llaniladi. Natija to'g'ri yoki noto'g'ri bo'lishi mumkin.

Ma'lumotlarni solishtirish uchun quyidagi relyatsion operatsiyalar taqdim etiladi:

Relyatsion operatsiyalardan foydalanishga misol:

munosabat 5>3, natija rost;

munosabat 5=3, natija noto'g'ri.

Mantiqiy turdagi o'zgaruvchilardan foydalanishga misol.

Var a,b:boolean; (a,b mantiqiy tipdagi o'zgaruvchilar) Begin a:=True; (a o'zgaruvchisiga “true” qiymati beriladi) b:=false; (b o'zgaruvchisi noto'g'ri o'rnatilgan) End.

Konstantalar

Konstantalar sifatida butun sonlar, haqiqiy sonlar, belgilar, belgilar qatorlari va mantiqiy doimiylardan foydalanish mumkin.

Konstanta o'zining tavsif qismida ajratilgan const so'zidan foydalangan holda e'lon qilinishi kerak.

Doimiy deklaratsiya formati

Const<имя константы>= <значение>;

Agar dastur bir nechta konstantalardan foydalansa, faqat bittasiga ruxsat beriladi. kalit so'z Const , har bir doimiyning tavsifi nuqta-vergul bilan tugaydi. Doimiy blok boshqa bo'limni e'lon qilish yoki bajariladigan bayonotlar blokini e'lon qilish bilan tugaydi.

Const (doimiy bo'lim deklaratsiyasi) yil=2003; (butun tipdagi konstanta, chunki yozuvda kasrli nuqta yo'q) vaqt=14,05; (haqiqiy turdagi konstanta) N=24; (butun tipdagi konstanta, chunki yozuvda kasr yo'q) P=3,14; (haqiqiy turdagi konstanta) A=to'g'ri; (mantiqiy doimiy) str1=’7’; (belgi turi konstantasi) str2=’A’; (belgi turi konstantasi) str3=‘Turbo’; (satr turi konstantasi) Var (o'zgaruvchi bo'lim deklaratsiyasi) X,y:integer; (butun sonli o'zgaruvchilar)

Maxsus turlar

Foydalanuvchi turlari to'plamidan biz faqat ko'rib chiqamiz

  • sanab o'tilgan turi;
  • interval turi.

Massivlarni o'rganishda bizga bu ikki tur kerak bo'ladi.

Enum turi

Ro'yxatga olingan ma'lumotlar turi qiymatlari dasturchi tomonidan belgilanadigan yangi ma'lumotlar turlarini tavsiflaydi. Sanab o'tilgan tur qabul qilishi mumkin bo'lgan qiymatlar ro'yxati bilan belgilanadi. Har bir qiymat ba'zi bir identifikator tomonidan nomlanadi va qavslar bilan o'ralgan ro'yxatda joylashgan. Sanab o'tilgan tur foydalanuvchi tomonidan belgilangan ma'lumotlar turidir, shuning uchun uning turini e'lon qilish zahiralangan TYPE so'zidan boshlanadi.

Enum turi formati:

<имя типа>= (doimiy1, doimiy2,..., doimiyN);

Qayerda
doimiy1 , doimiy2 ,..., konstantaN - doimiylar sifatida qabul qilingan identifikator qiymatlarining tartiblangan to'plami.

Sanoqlangan tur tavsifiga misol:

To'p turi=(bir, ikki, uch, to'rt, besh); var t:ball;

Bu erda to'p - sanab o'tilgan turning nomi; bir, ikki, uch, to'rt, besh - doimiylar; t har qanday doimiy qiymatni qabul qila oladigan o'zgaruvchidir.

Sanab o'tilgan turda doimiy identifikator hisoblanadi, shuning uchun u kotirovka qilinmaydi va raqam bo'la olmaydi. Shunday qilib, sanab o'tilgan turda doimiy doimiyning maxsus turi bo'lib, quyidagi bo'lishi mumkin emas:

  • raqamli tipdagi konstantalar: 1, 2, 3, 4 va boshqalar;
  • belgilar tipidagi konstantalar: "a", "s", "1", "3" va boshqalar;
  • satr tipidagi konstantalar: "birinchi", "ikkinchi" va boshqalar.

Bundan tashqari, ushbu turdagi qiymatlar qo'llanilmaydi arifmetik amallar Va standart protseduralar kiritish va chiqarish O'qish, yozish.

Ro'yxatga olingan o'zgaruvchilardan foydalanishga misol:

Turi kunlar = (dushanba, seshanba, chorshanba, payshanba, juma, shanba, yakshanba); Var kun: kunlar; begin if day = Sunday then writeln(‘Bugun yakshanba!’); Oxiri.

Sanab o'tilgan turning ta'rifiga kiritilgan elementlar ular sanab o'tilgan tartibda tartiblangan deb hisoblanadi. Raqamlash noldan boshlanadi. Shuning uchun, keltirilgan misolda haftaning kunlari quyidagi seriya raqamlariga ega

Tartib sonni dasturiy jihatdan aniqlash uchun Ord() funksiyasidan foydalaniladi.

Bizning misolimizda ketma-ketlik raqamlari teng:

Ord(dushanba) = 0;

Ord(shanba) = 5;

Ord (yakshanba) = 6.

Interval turi

Agar o'zgaruvchi o'z turidagi barcha qiymatlarni qabul qilmasa, faqat ma'lum diapazondagi qiymatlarni qabul qilsa, bu ma'lumotlar turi intervalli tip deb ataladi. Interval turi ko'pincha cheklangan tip va diapazon turi deb ataladi. Interval turi uning qiymatlari chegaralari bilan belgilanadi:

<минимальное значение>..<максимальное значение>

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

Interval turi foydalanuvchi tomonidan belgilangan ma'lumotlar turidir, shuning uchun uning turini e'lon qilish TYPE funktsiya so'zidan boshlanadi.

Interval tipi tavsifiga misol:

Raqamni yozing = 1..10; oy = 1..31; lat = 'A'..'Z';

Tavsif: var n: boolean;

Mantiqiy ma'lumotlar faqat ikkita qiymatni qabul qilishi mumkin: haqiqiy va noto'g'ri. Mantiqiy turdagi qiymatlarga ruxsat beriladi taqqoslash operatsiyalari, va rost> yolg'on.Shuningdek amal qiling 4 mantiqiy operatsiyalar:

va mantiqiy ko'paytirish

yoki mantiqiy qo'shimcha

xor eksklyuziv "yoki"

emas inkor qilish

Mantiqiy amallarni bajarish qoidalari quyidagi haqiqat jadvallari yordamida aniqlanadi:

X va Y

X yoki Y


Misol 1:

emas (5>2) = noto'g'ri

(5>2) va (3<10) = true

(8<>9) yoki (4>5) = rost

emas (5=2) xor (3>2) = noto'g'ri

Misol 2:

BOOLEAN ma'lumotlarini taqqoslashda Turbo Paskalning ichki konventsiyasi hisobga olinadi, unga ko'ra FALSE nol bayt, TRUE esa eng kam ahamiyatli bitda bitta baytdir. E'tibor bering, ORD funktsiyasi nafaqat belgilarni, balki mantiqiy qiymatlarni ham butun songa aylantiradi

2.5 Cheklangan turlar

Standart turlarga asoslanib, mumkin bo'lgan qiymatlar oralig'ini cheklab, o'zingizning turlaringizni qurishingiz mumkin: 1..10, -100..10, 'a'..'z' va boshqalar.

Misol:

b: ‘a’..’z’;

b:=0; (xato: turdagi nomuvofiqlik - butun son belgilar tipidagi o'zgaruvchiga tayinlangan)

a:=0; (xato: 2..5 diapazondan tashqarida)

2.6 Enum turlari

Ular nomlar bilan ko'rsatilgan barcha mumkin bo'lgan qiymatlarni aniq ro'yxatga olish orqali shakllantiriladi. Masalan, svetoforni boshqarish dasturi uchun quyidagi turni aniqlash mumkin:

var nuri: (qizil, sariq, yashil);

oper: (ortiqcha, minus);

Boolean turi sanab o'tilgan turdagi maxsus holatdir.

2.7 Turlarning tavsifi

Paskal tilidagi yangi ma'lumotlar turlari TYPE so'zi bilan boshlangan deklaratsiyalar bilan belgilanadi. Tavsif “=” belgisi bilan ajratilgan tur nomi va tur qiymatidan iborat.

Misol:

abc='A'..'z';

2.8 Turni o'zgartirish

Yuqorida aytib o'tilganidek, o'zgaruvchining turi nafaqat uning ichki tasvirining uzunligini belgilashga, balki dasturda unga nisbatan bajariladigan amallarni boshqarishga ham imkon beradi. Dasturni kompilyatsiya qilish bosqichida ham o'zgaruvchilardan foydalanishni nazorat qilish Turbo Paskalning boshqa dasturlash tillariga nisbatan muhim afzalligi bo'lib, u avtomatik turlarni o'zgartirish imkonini beradi. Turbo Paskalda yashirin (avtomatik) turdagi konvertatsiya qilish deyarli mumkin emas. Istisno faqat INTEGER (integer) tipidagi konstantalar va o'zgaruvchilar uchun amalga oshiriladi, ulardan REAL (real) tipidagi ifodalarda foydalanishga ruxsat beriladi. Agar, masalan, X va Y o'zgaruvchilari quyidagicha aniqlangan bo'lsa:

var x: integer;

keyin operator

sintaktik jihatdan to'g'ri bo'ladi: tayinlash belgisining o'ng tomonida butun son ifodasi va chap tomonda haqiqiy o'zgaruvchi mavjud bo'lsa-da, kompilyator avtomatik ravishda kerakli konvertatsiyalarni amalga oshiradi. Ayni paytda operator

noto'g'ri bo'ladi, chunki Turbo Paskalda REAL turini (doimiy 2.0 o'nli kasrni o'z ichiga oladi va shuning uchun REAL turiga tegishli) INTEGER turiga avtomatik o'zgartirish taqiqlangan.

Shunday qilib, o'zgaruvchilarga faqat o'z turidagi qiymatlar berilishi mumkin; faqat istisno bu o'zgaruvchi real tipda va qiymat integer tipida bo'lsa (bu holda butun son kasr qismi 0 ga teng bo'lgan realga aylantiriladi).

Albatta, avtomatik turdagi konvertatsiya qilishni taqiqlash Turbo Paskalda ma'lumotlarni o'zgartirish vositalari mavjud emas degani emas. Albatta, ular mavjud, lekin ular aniq ishlatilishi kerak. Tildagi ma'lumotlarni o'zgartirish uchun bir turdagi qiymatni parametr sifatida qabul qiladigan va natijani boshqa turdagi qiymat sifatida qaytaradigan o'rnatilgan funktsiyalar mavjud. Xususan, REALni INTEGER ga aylantirish uchun hatto ikkita o'rnatilgan bunday funksiya mavjud: ROUND REALni eng yaqin butun songa yaxlitlaydi va TRUNC kasr qismini olib tashlash orqali REALni qisqartiradi (1.5-bo'limga qarang).

Masalan, operator xato qiladi

lekin to'g'ri

x:= dumaloq (y/x);

(yuqoridagi o'zgaruvchan deklaratsiyalarga qarang).

Masalan, CHAR (belgi) tipidagi ma'lumotlarni butun songa aylantirish uchun ORD funksiyasi mo'ljallangan va INTEGERni CHAR ga teskari o'zgartirish CHR funktsiyasi tomonidan amalga oshiriladi.

Ikki bo'linish operatsiyalarining mavjudligi Turbo Paskalning asosiy printsipining yana bir ko'rinishidir: dasturchi kompilyatorga turni o'zgartirishning mumkin bo'lgan oqibatlariga tayyor ekanligini aniq tasdiqlashi kerak. Agar, masalan, Fortran tilida 1/2 ifodasi ishlatilsa, u holda bu ifodaning natijasi qaysi turdagi o‘zgaruvchiga tayinlanishiga bog‘liq bo‘ladi: agar N butun son tipidagi o‘zgaruvchi bo‘lsa, X esa real turi, keyin Fortran dasturida topshiriqlar

N uchun 0 va X uchun 0,5 qiymatlarini beradi. Turbo Paskalda bunday noaniqlik yo'q: 1/2 ifodasi har doim 0,5 qiymatiga ega va shuning uchun operator

shunchaki qabul qilinishi mumkin emas. Shu bilan birga, Turbo Paskalda ruxsat etilgan operatorlar quyidagilardir:

Va nihoyat, relyatsion va mantiqiy operatsiyalar haqida.

REAL, INTEGER, CHAR, STRING maʼlumotlar turlari uchun quyidagi relyatsion (taqqoslash) operatsiyalari aniqlanadi:

<>- teng emas;

< - меньше;

> - ko'proq;

<= - меньше или равно,

>= - dan katta yoki teng.

Taqqoslash operatsiyalari bir xil turdagi operandlarni o'z ichiga olishi kerak. REAL va INTEGER uchun yana istisno qilinadi, ularni bir-biri bilan solishtirish mumkin. Har qanday operandlarga munosabat operatorini qo'llash natijasi BOOLEAN tipiga ega.

Dastur chiziqli bo'lmagan bo'lishi uchun (ya'ni, vaziyatga qarab, turli ko'rsatmalar) dasturlash tillari mantiqiy ifodalardan foydalanadi, ularning natijasi to'g'ri (to'g'ri) yoki noto'g'ri (noto'g'ri) bo'lishi mumkin. Mantiqiy ifodalarning natijasi odatda dasturning bajarilish yo'lini aniqlash uchun ishlatiladi.

Oddiy mantiqiy ifodalar ikki operand (qiymat) orasidagi munosabat amallari natijasidir. Quyidagi misollarda operandlar x va y o'zgaruvchilarning qiymatlari hisoblanadi. Operandlar raqamlar, belgilar yoki boshqa ma'lumotlar turlari bo'lishi mumkin. Bir-biri bilan solishtirish mumkin bo'lgan hamma narsa. Biroq, haqiqiy sonlarni kompyuter xotirasida saqlash xususiyatiga ko'ra taqqoslash tavsiya etilmaydi.

Paskal quyidagi relyatsion operatorlarni taqdim etadi:

  • dan kichik: x< y
  • kattaroq: x > y
  • teng: x = y
  • ga teng emas: x<>y
  • dan kichik yoki teng: x<= y
  • dan katta yoki teng: x >= y

Boolean turlari

Mantiqiy ifodaning natijasi har doim mantiqiy (mantiqiy) qiymatdir. Mantiqiy ma'lumotlar turi faqat ikkita qiymatni qabul qilishi mumkin (to'g'ri yoki noto'g'ri). Ushbu qiymatlar quyidagicha tartiblangan: noto'g'ri< true. Это значит, что данные булевого типа являются не только результатом операций отношения, но и могут выступать в роли операндов операции отношения. Также к ним можно применять функции ord, succ, pred, процедуры inc и dec.

Boolean qiymat xotirada 1 bayt joy oladi.

Misolda, oltita mantiqiy o'zgaruvchilarga oddiy mantiqiy ifodalarning qiymatlari berilgan. Bunday o'zgaruvchilarda saqlangan qiymatlar keyin ekranda ko'rsatiladi.

Paskal mantiqiy tipdan tashqari yana uchta mantiqiy turni kiritdi - bytebool (1 baytni egallaydi), wordbool (2 baytni egallaydi) va longbool (4 baytni egallaydi).
Barcha mantiqiy turlari uchun false 0, true esa nolga teng bo'lmagan har qanday qiymatdir. Turli mantiqiy tiplarga mansub mantiqiy o'zgaruvchilar, ular ustida amallar bajarilganda o'zini boshqacha tutadi. Quyida FreePascal-da amalga oshirilgan misol keltirilgan (natija sharhlarda ko'rsatiladi).

var b: boolean ; wb: wordbool; start b: = false ; b: = pred(b) ; writeln(b, "", ord(b)); // TRUE 255 writeln (b= true ) ; // TRUE wb: = noto'g'ri ; wb:=pred(wb); writeln(wb, " ", ord(wb)); // TRUE -1 b: = rost ; b:=succ(b) ; writeln(b, "", ord(b)); // TRUE 2 wb: = rost ; wb:=succ(wb); writeln(wb, " ", ord(wb)); // FALSE 0 oxiri.

Mantiqiy operatsiyalar

Murakkab mantiqiy ifodalarni shakllantirish uchun mantiqiy operatorlardan foydalanishingiz mumkin. Mantiqiy operatorlar ko'pincha oddiy mantiqiy ifodalarga nisbatan qo'llaniladi.

Tilda Paskal dasturlash Quyidagi mantiqiy operatsiyalar taqdim etiladi:

rost xor rost = noto'g'ri
rost yoki noto'g'ri = rost
noto'g'ri yoki rost = rost
false xor false = noto'g'ri

  • Bog'lovchi (mantiqiy ko'paytirish, kesishish) - va. a va b ifodasi a va b rost bo'lsagina rost deb baholanadi. Boshqa barcha hollarda a va b ifodaning qiymati noto'g'ri.

    rost va to'g'ri = rost rost va yolg'on = noto'g'ri noto'g'ri va rost = noto'g'ri noto'g'ri va noto'g'ri = noto'g'ri

  • Diszyunksiya (mantiqiy qo'shish, birlashma) - yoki. a yoki b ifodasi faqat a va b noto'g'ri bo'lsa, yolg'on deb baholanadi. Boshqa barcha holatlarda natija to'g'ri.

    rost yoki to'g'ri = rost rost yoki noto'g'ri = rost noto'g'ri yoki rost = rost noto'g'ri yoki noto'g'ri = noto'g'ri

  • Inkor qilish (inversiya) - yo'q. a emas ifodasi a ga qarama-qarshi ma'noga ega.

    rost emas = noto'g'ri emas = rost

  • Eksklyuziv OR – xor. a xor b ifodasi faqat bitta operand rost bo'lsagina rost deb baholanadi.

Mantiqiy operatorlarning bajarilish ketma-ketligi: emas, va, yoki.

Paskalda birinchi qadamlar mantiqiy operatorlar(va, yoki, xor, emas) va shundan keyingina relyatsion operatorlar (>, >=,<, <=, <>, =), shuning uchun murakkab mantiqiy ifodalarda qavs qo'yishni unutmang.

Agar davom etgan baholash natijani o'zgartirmasa, murakkab mantiqiy ifodalar to'liq qayta ishlanmasligi mumkin. Agar mantiqiy ifodani yakunlash uchun qayta ishlash kerak bo'lsa, bu kompilyatsiya direktivasini (B+) kiritish orqali ta'minlanadi.

Standart mantiqiy funktsiyalar

  • toq(x) = rost agar x toq bo'lsa (x butun son turi);
  • eoln(x) = to'g'ri, agar x matnli fayl satrining oxiri uchrasa;
  • eof(x) = agar x faylining oxiri uchrasa, rost.

Boshqa hollarda bu funksiyalar false qiymatini oladi.

Agar xatolikni sezsangiz, matn qismini tanlang va Ctrl+Enter tugmalarini bosing
ULOSING: