ชนิดข้อมูลลำดับ ประเภทเรียบง่าย ชนิดข้อมูลที่สร้างขึ้น

ประเภทลำดับได้แก่ (ดูรูปที่ 4.1) ประเภทจำนวนเต็ม ตรรกะ อักขระ แจงนับ และประเภทช่วง สามารถใช้ฟังก์ชัน ORD(X) กับฟังก์ชันใดก็ได้ซึ่งจะส่งคืน หมายเลขซีเรียลค่าของนิพจน์ X สำหรับประเภทจำนวนเต็ม ฟังก์ชัน ORD(X) จะส่งกลับค่าของ X เอง กล่าวคือ ORD(X) = X สำหรับ X ที่เป็นของเชลล์ประเภทใดก็ได้ การใช้ ORD(X) กับประเภทบูลีน อักขระ และการแจงนับจะสร้างจำนวนเต็มบวกในช่วง 0 ถึง 1 (บูลีน), 0 ถึง 155 (อักขระ), 0 ถึง 65535 (การแจงนับ) ประเภทช่วงจะรักษาคุณสมบัติทั้งหมดของประเภทลำดับพื้นฐาน ดังนั้นผลลัพธ์ของการใช้ฟังก์ชัน ORD(X) กับประเภทนั้นจะขึ้นอยู่กับคุณสมบัติของประเภทนั้น

คุณยังสามารถใช้ฟังก์ชันกับประเภทลำดับได้:

PRED (X) - ส่งกลับค่าก่อนหน้าของประเภทลำดับ (ค่าที่สอดคล้องกับเลขลำดับ ORD(X) - 1) เช่น

อ๊อด(PRED(X)) = อ๊อด(X) - 1;

SUCC(X) - ส่งคืน ค่าถัดไปประเภทลำดับซึ่งสอดคล้องกับหมายเลขลำดับ ORD(X) +1 เช่น

อ๊อด(SUCC(X)) = อ๊อด(X) + 1

เช่น ถ้าโปรแกรมกำหนดตัวแปร

จากนั้นฟังก์ชัน PRED(C) จะส่งกลับค่า "4" และฟังก์ชัน SUCC(C) จะส่งกลับค่า "6"

หากเราจินตนาการว่าประเภทลำดับใดๆ เป็นชุดของค่าที่เรียงลำดับกัน โดยเพิ่มขึ้นจากซ้ายไปขวาและครอบครองส่วนใดส่วนหนึ่งบนแกนตัวเลข ฟังก์ชัน PRED(X) จะไม่ถูกกำหนดไว้สำหรับด้านซ้าย และ SUCC(X) จะอยู่ทางด้านขวา จุดสิ้นสุดของส่วนนี้

ทั้งประเภท. ช่วงของค่าที่เป็นไปได้ของประเภทจำนวนเต็มขึ้นอยู่กับการเป็นตัวแทนภายในซึ่งอาจเป็นหนึ่ง สอง หรือสี่ไบต์ ในตาราง 4.1 แสดงชื่อของประเภทจำนวนเต็ม ความยาวของการแสดงภายในเป็นไบต์ และช่วงของค่าที่เป็นไปได้

ตารางที่ 4.1

เมื่อใช้ขั้นตอนและฟังก์ชันกับพารามิเตอร์จำนวนเต็ม คุณควรได้รับคำแนะนำจากประเภท "การซ้อน" เช่น ทุกที่ที่สามารถใช้ WORD ได้ BYTE ก็สามารถใช้ได้ (แต่ไม่ใช่ในทางกลับกัน) LONGINT “รวม” INTEGER ซึ่งในทางกลับกันจะรวม SHORTINT ด้วย

รายการขั้นตอนและฟังก์ชันที่ใช้กับประเภทจำนวนเต็มแสดงไว้ในตารางที่ 4.2 จดหมาย ข, ส, ว, ฉัน, ลนิพจน์ประเภท BYTE, SHORTINT, WORD, INTEGER และ LONGINT ถูกกำหนดตามลำดับ x คือนิพจน์ของประเภทใด ๆ เหล่านี้ ตัวอักษร vb, กับ, vw, vi, vl, vxแสดงถึงตัวแปรประเภทที่สอดคล้องกัน พารามิเตอร์ทางเลือกจะแสดงอยู่ในวงเล็บเหลี่ยม

ตารางที่ 4.2

ขั้นตอนมาตรฐานและฟังก์ชันที่ใช้ได้กับทุกประเภท
อุทธรณ์ ประเภทผลลัพธ์ การกระทำ
หน้าท้อง(x) x ส่งคืนโมดูล x
CH(ข) ถ่าน ส่งกลับอักขระตามรหัส
ธ.ค. (vx [, i]) - ลดค่าของ vx ลงด้วย i และในกรณีที่ไม่มี i - ลง 1
อิงค์(vx[, i]) - เพิ่มค่าของ vx ด้วย i และในกรณีที่ไม่มี i - 1
สวัสดี(ฉัน) ไบต์ ส่งกลับค่าไบต์สูงของอาร์กิวเมนต์
สวัสดี(ญ) เดียวกัน เดียวกัน
แท้จริง(ฉัน) " ส่งกลับค่าไบต์ต่ำของอาร์กิวเมนต์
ต่ำ) " เดียวกัน
คี่(ลิตร) บูลีน ส่งกลับค่า True ถ้าอาร์กิวเมนต์เป็นเลขคี่
สุ่ม (ญ) เช่นเดียวกับพารามิเตอร์ ส่งกลับตัวเลขสุ่มเทียมที่กระจายสม่ำเสมอในช่วง 0...(w-l)
เอสจีอาร์(x) เอ็กซ์ ส่งกลับกำลังสองของอาร์กิวเมนต์
แลกเปลี่ยน(i) จำนวนเต็ม สลับไบต์ในคำเดียว
สลับ(ญ) คำ

เมื่อดำเนินการกับจำนวนเต็ม ประเภทของผลลัพธ์จะสอดคล้องกับประเภทของตัวถูกดำเนินการ และหากตัวถูกดำเนินการมีประเภทจำนวนเต็มต่างกัน ประเภทของตัวถูกดำเนินการที่มีกำลังสูงสุด (ช่วงค่าสูงสุด) ผลลัพธ์ที่ล้นออกมาที่เป็นไปได้นั้นไม่ได้ถูกควบคุมในทางใดทางหนึ่ง ซึ่งอาจนำไปสู่ความเข้าใจผิดได้ เช่น:

ก:= 32767; (ค่า INTEGER สูงสุดที่เป็นไปได้)

x:= ก + 2; (ล้นขณะประเมินนิพจน์นี้ !}

y:= LongInt(ก)+2; (ไม่มีการล้นหลังจากส่งตัวแปรเป็นประเภทที่ทรงพลังกว่า)

WriteLn(x:10:0, y:10:0)

จากการรันโปรแกรมที่เราได้รับ

ประเภทบูลีน - ค่าบูลีนสามารถเป็นหนึ่งในค่าคงที่ที่ประกาศไว้ล่วงหน้า FALSE หรือ TRUE กฎมีผลกับพวกเขา:

เท็จ< True;

succ(เท็จ)= จริง;

pred(จริง) = เท็จ

เนื่องจากประเภทบูลีนเป็นประเภทลำดับ จึงสามารถใช้ในตัวดำเนินการประเภทที่นับได้ ตัวอย่างเช่น:

สำหรับ 1:= เท็จถึงจริง ทำ ....

ประเภทตัวละครค่าของประเภทอักขระคือชุดของอักขระ PC ทั้งหมด อักขระแต่ละตัวถูกกำหนดให้เป็นจำนวนเต็มในช่วง 0...255 หมายเลขนี้ทำหน้าที่เป็นรหัสสำหรับการแสดงสัญลักษณ์ภายใน ซึ่งจะถูกส่งกลับโดยฟังก์ชัน ORD

รหัส ASCII ใช้สำหรับการเข้ารหัส ( อเมริกันสแตนดาร์ด รหัสสำหรับ การแลกเปลี่ยนข้อมูล - อเมริกัน รหัสมาตรฐานเพื่อแลกเปลี่ยนข้อมูล) นี่คือรหัส 7 บิตเช่น สามารถใช้เข้ารหัสได้เพียง 128 อักขระในช่วงตั้งแต่ 0 ถึง 127 ในเวลาเดียวกันในไบต์ 8 บิตที่จัดสรรไว้สำหรับจัดเก็บอักขระใน Turbo Pascal คุณสามารถเข้ารหัสได้สองครั้ง ตัวละครเพิ่มเติมในช่วงตั้งแต่ 0 ถึง 255 อักขระ PC ครึ่งแรกของรหัส 0...127 สอดคล้องกับมาตรฐาน ASCII (ตาราง 4.3) อักขระครึ่งหลังที่มีรหัส 128...255 ไม่ได้ถูกจำกัดด้วยกรอบที่เข้มงวดของมาตรฐาน และสามารถเปลี่ยนแปลงได้บนพีซี ประเภทต่างๆ(ภาคผนวก 2 แสดงตัวเลือกการเข้ารหัสทั่วไปสำหรับอักขระเหล่านี้)

ตารางที่ 4.3

การเข้ารหัสอักขระตามมาตรฐาน ASCII
รหัส เครื่องหมาย รหัส เครื่องหมาย รหัส เครื่องหมาย รหัส เครื่องหมาย
น.ล บี.แอล. ® "
ซอน !
เอสทีเอ็กซ์ " ใน
อีทีเอ็กซ์ # กับ กับ
อีโอที $ ดี
ENQ % อี
ถาม & เอฟ
เบล "
บี.เอส. ( ชม ชม.
นท ) ฉัน ฉัน
แอลเอฟ * เจ เจ
เวอร์มอนต์ + เค เค
เอฟเอฟ , ฉัน
CR -
ดังนั้น . เอ็น n
เอสไอ / เกี่ยวกับ
เดล พี
ดีซี1 ถาม ถาม
ดีซี2
ดีซี3
ดีซี4 ที
นาเค คุณ คุณ
ซิน วี วี
อีทีบี
สามารถ เอ็กซ์ เอ็กซ์
อี.เอ็ม. คุณ คุณ
ย่อย : z z
เอสซี / [ {
เอฟเอส < \
จี.เอส. = ] }
อาร์.เอส. > ^ ~
เรา ? - n

ตัวอักษรที่มีรหัส 0...31 หมายถึง รหัสบริการ- หากใช้รหัสเหล่านี้ในข้อความอักขระของโปรแกรม จะถือว่าเป็นช่องว่าง เมื่อใช้ในการดำเนินการ I/O การดำเนินการเหล่านี้สามารถมีความหมายอิสระต่อไปนี้:

เครื่องหมาย รหัส ความหมาย
เบล เรียก; การแสดงสัญลักษณ์นี้มาพร้อมกับ สัญญาณเสียง
นท การจัดตารางแนวนอน เมื่อแสดงบนหน้าจอให้เลื่อนเคอร์เซอร์ไปยังตำแหน่งที่เป็นผลคูณของ 8 บวก 1 (9, 17, 25 เป็นต้น)
แอลเอฟ ป้อนเส้น; เมื่อแสดงบนหน้าจอตัวอักษรที่ตามมาทั้งหมดจะแสดงโดยเริ่มจากตำแหน่งเดียวกัน แต่ที่ บรรทัดถัดไป
เวอร์มอนต์ แท็บแนวตั้ง เมื่อแสดงบนหน้าจอก็จะถูกแทนที่ เครื่องหมายพิเศษ
เอฟเอฟ วิ่งหน้า; เมื่อส่งออกไปยังเครื่องพิมพ์ จะเกิดเป็นหน้า เมื่อส่งออกไปยังหน้าจอ จะถูกแทนที่ด้วยอักขระพิเศษ
CR ส่งคืนรถ; เข้ามาโดยการกด ใส่รหัส(เมื่อป้อนโดยใช้ READ หรือ READLN หมายถึงคำสั่ง "Enter" และไม่พอดีกับบัฟเฟอร์อินพุต เมื่อเอาต์พุตหมายถึงคำสั่ง "ดำเนินการต่อจากจุดเริ่มต้น" เส้นปัจจุบัน»)
ย่อย สิ้นสุดไฟล์; ป้อนจากแป้นพิมพ์โดยกด Ctrl-Z; เมื่อเอาต์พุตจะถูกแทนที่ด้วยเครื่องหมายพิเศษ
สสส สิ้นสุดการทำงาน เข้ามาจากแป้นพิมพ์โดยการกด คีย์เอสซี- เมื่อเอาต์พุตจะถูกแทนที่ด้วยเครื่องหมายพิเศษ

การดำเนินการเชิงสัมพันธ์ รวมถึงฟังก์ชันในตัว สามารถใช้ได้กับประเภท CHAR: СNR(В) - ฟังก์ชันของประเภท CHAR; แปลงนิพจน์ B ประเภท BYTE ให้เป็นอักขระและส่งกลับพร้อมกับค่าของมัน

UPCASE(CH) - ฟังก์ชันประเภท CHAR; ผลตอบแทน อักษรตัวใหญ่ถ้า CH เป็นตัวพิมพ์เล็ก อักษรละตินมิฉะนั้นจะส่งคืนอักขระ CH เอง ตัวอย่างเช่น:

cl:= UpCase("s" ;

c2:= UpCase ("Ф" ;

WriteLn(cl," ",c2)

เนื่องจากฟังก์ชัน UPCASE ไม่ประมวลผล Cyrillic ผลลัพธ์ของการรันสิ่งนี้

โปรแกรมต่างๆ จะแสดงบนหน้าจอ

ประเภทอีนัม- ประเภทที่ระบุจะถูกระบุโดยการแจงนับค่าที่สามารถรับได้ แต่ละค่าจะถูกตั้งชื่อตามตัวระบุบางตัว และอยู่ในรายการที่ล้อมรอบด้วยวงเล็บ ตัวอย่างเช่น:

สี =(แดง ขาว น้ำเงิน);

การใช้ประเภทที่แจกแจงทำให้โปรแกรมมองเห็นได้ชัดเจนยิ่งขึ้น ตัวอย่างเช่น หากโปรแกรมใช้ข้อมูลที่เกี่ยวข้องกับเดือนของปี ดังนั้นส่วนของโปรแกรมต่อไปนี้:

TypeMonth=(ม.ค.,ก.พ.,มี.ค.,เม.ย.,พ.ค.,มิ.ย.,ก.ค.,ส.ค.,ก.ย.,ต.ค.,พ.ย.,ธ.ค.);

เดือน: ประเภทเดือน;

ถ้าเดือน = ส.ค. แล้ว WriteLn("ไปทะเลคงจะดี!");

คงจะชัดเจนมาก อนิจจา ใน Turbo Pascal คุณไม่สามารถใช้ Cyrillic ในตัวระบุได้ ดังนั้นเราจึงถูกบังคับให้เขียนดังนี้:

TypeMonth=(ม.ค.,ก.พ.,มี.ค.,พ.ค.,มิ.ย.,ก.ค.,ส.ค.,ก.ย.,ต.ค.,พ.ย.,ธ.ค.);

เดือน: ประเภทเดือน;

ถ้าเดือน = ส.ค. แล้ว WriteLn("ไปทะเลคงจะดี!");

ความสอดคล้องระหว่างค่าของประเภทที่แจงนับและหมายเลขลำดับของค่าเหล่านี้ถูกกำหนดโดยลำดับการแจงนับ: ค่าแรกในรายการจะได้รับหมายเลขลำดับ 0, ค่าที่สอง - 1 เป็นต้น ความจุสูงสุดของประเภทที่แจงนับคือค่า 65536 ดังนั้นในความเป็นจริงประเภทแจงนับจะกำหนดชุดย่อยบางส่วนของประเภท WORD ทั้งหมด และถือได้ว่าเป็นการประกาศแบบกะทัดรัดของกลุ่มค่าคงที่จำนวนเต็มที่มีค่า 0, 1 เป็นต้น

การใช้ประเภทที่แจกแจงจะเพิ่มความน่าเชื่อถือของโปรแกรมโดยอนุญาตให้คุณควบคุมค่าที่ตัวแปรที่เกี่ยวข้องได้รับ ตัวอย่างเช่น ให้ระบุประเภทที่แจกแจงต่อไปนี้:

สี = (ดำ, แดง, ขาว);

ลำดับ= (หนึ่ง สอง สาม);

วัน = (วันจันทร์ วันอังคาร วันพุธ);

ในด้านอำนาจและการเป็นตัวแทนภายใน ทั้งสามประเภทมีความเท่าเทียมกัน:

ลำดับ(สีดำ)=0, ..., ลำดับ(สีขาว)=2,

ลำดับ(หนึ่ง)=0, ...ลำดับ(สาม)=2,

ออร์ด(วันจันทร์)=0, ...ออร์ด(วันพุธ)=2.

อย่างไรก็ตามหากมีการกำหนดตัวแปรไว้

สี:สี; หมายเลข:ลำดับ;

จากนั้นผู้ปฏิบัติงานจะได้รับอนุญาต

num:= succ(สอง);

วัน:= ก่อน (วันอังคาร);

แต่เป็นที่ยอมรับไม่ได้

ดังที่ได้กล่าวไปแล้ว มีการติดต่อกันแบบหนึ่งต่อหนึ่งระหว่างค่าของประเภทที่แจกแจงและชุดของจำนวนเต็มที่ระบุโดยฟังก์ชัน ORD(X) ใน Turbo Pascal ก็สามารถทำได้เช่นกัน การแปลงผกผัน: นิพจน์ประเภท WORD ใดๆ สามารถแปลงเป็นค่าประเภทการแจงนับได้ ตราบใดที่ค่าของนิพจน์จำนวนเต็มไม่เกิน power1™ ของประเภทการแจงนับ การแปลงนี้ทำได้โดยใช้ฟังก์ชันที่ประกาศโดยอัตโนมัติพร้อมชื่อประเภทที่แจงนับ (ดูหัวข้อ 4.4) ตัวอย่างเช่น สำหรับการประกาศประเภทที่กล่าวถึงข้างต้น งานต่อไปนี้จะเทียบเท่ากัน:

สี:= สี(0);

แน่นอนว่าการมอบหมายงาน

จะเป็นที่ยอมรับไม่ได้

ตัวแปรประเภทที่ระบุใดๆ สามารถประกาศได้โดยไม่ต้องประกาศประเภทนั้นก่อน ตัวอย่างเช่น:

สี: (ดำ, ขาว, เขียว);

ประเภท-ช่วง ประเภทช่วงคือชุดย่อยของประเภทฐาน ซึ่งสามารถเป็นประเภทลำดับใดก็ได้ ยกเว้นประเภทช่วง ประเภทช่วงถูกกำหนดโดยขอบเขตของค่าภายในประเภทฐาน:

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

ที่นี่<мин.знач. > - ค่าต่ำสุดประเภทช่วง;

<макс.знач.>- ค่าสูงสุดของมัน

ตัวอย่างเช่น:

หลัก = "0".."9";

ไม่จำเป็นต้องอธิบายประเภทช่วงในส่วน TYPE แต่สามารถระบุได้โดยตรงเมื่อประกาศตัวแปร ตัวอย่างเช่น:

Ichr: "A".."Z";.

เมื่อพิจารณาประเภทช่วง จะต้องได้รับคำแนะนำจาก กฎต่อไปนี้:

  • อักขระ ".." สองตัวจะถือเป็นอักขระตัวเดียว ดังนั้นจึงไม่อนุญาตให้มีช่องว่างระหว่างอักขระเหล่านั้น
  • ขอบด้านซ้ายของช่วงไม่ควรเกินขอบด้านขวา ประเภทช่วงจะสืบทอดคุณสมบัติทั้งหมดของประเภทพื้นฐาน แต่มีข้อจำกัดด้านพลังงานที่ต่ำกว่า โดยเฉพาะหากมีการกำหนดตัวแปรไว้

วัน = (โม,ทู,เรา,ท,เ,สา,ซู);

สุดสัปดาห์ = ส .. su;

จากนั้น ORD(W) จะส่งกลับค่า 5 ในขณะที่ PRED(W) จะส่งผลให้เกิดข้อผิดพลาด

ใน ห้องสมุดมาตรฐาน Turbo Pascal มีสองฟังก์ชันที่รองรับการทำงานกับประเภทช่วง:

สูง(X) - ผลตอบแทน ค่าสูงสุดประเภทช่วงที่ตัวแปร X อยู่

LOW(X) - ส่งกลับค่าต่ำสุดของประเภทช่วง

ต่อไป โปรแกรมสั้นจะแสดงเส้น

WriteLn(ต่ำ(k),"..",สูง(k))

เซตของจำนวนเต็มนั้นไม่มีที่สิ้นสุด แต่เราสามารถเลือกจำนวนบิตเพื่อแสดงจำนวนเต็มใดๆ ที่เกิดขึ้นเมื่อแก้โจทย์ได้เสมอ งานเฉพาะ- เซตของจำนวนจริงไม่เพียงแต่เป็นอนันต์เท่านั้น แต่ยังต่อเนื่องกันด้วย ดังนั้นไม่ว่าเราจะรับไปกี่บิต เราก็จะพบตัวเลขที่ไม่ได้เป็นตัวแทนอย่างหลีกเลี่ยงไม่ได้ ตัวเลขทศนิยมเป็นหนึ่งในนั้น วิธีที่เป็นไปได้การแสดงจำนวนจริงซึ่งเป็นการแลกเปลี่ยนระหว่างความแม่นยำและช่วงของค่าที่ยอมรับ

จำนวนจุดลอยตัวประกอบด้วยชุดของหลักแต่ละหลัก ซึ่งแบ่งออกเป็นเครื่องหมาย เลขชี้กำลัง และแมนทิสซาตามอัตภาพ เลขชี้กำลังและแมนทิสซาเป็นจำนวนเต็มซึ่งเมื่อรวมกับเครื่องหมายแล้ว ให้การแสดงจำนวนจุดลอยตัวดังต่อไปนี้:

ในทางคณิตศาสตร์มันเขียนดังนี้:

(-1) s × M × B E โดยที่ s คือเครื่องหมาย B คือฐาน E คือเลขชี้กำลัง และ M คือแมนทิสซา

ฐานกำหนดระบบตัวเลขหลัก ได้รับการพิสูจน์ทางคณิตศาสตร์แล้วว่าจำนวนจุดลอยตัวที่มีฐาน B=2 (การแทนค่าไบนารี่) สามารถทนต่อข้อผิดพลาดในการปัดเศษได้มากที่สุด ดังนั้นในทางปฏิบัติจะมีเพียงฐาน 2 เท่านั้น และโดยทั่วไปน้อยกว่าจะพบ 10 สำหรับการนำเสนอต่อไป เราจะถือว่า B= เสมอ 2 และสูตรสำหรับตัวเลขที่มีจุดลอยตัวจะมีลักษณะดังนี้:

(-1) ส × ม × 2 จ

แมนทิสซาและคำสั่งซื้อคืออะไร? แมนทิสซาคือจำนวนเต็มความยาวคงที่ซึ่งแสดงถึงบิตที่สำคัญที่สุดของจำนวนจริง สมมติว่าแมนทิสซาของเราประกอบด้วยสามบิต (|M|=3) ยกตัวอย่างเช่น ตัวเลข “5” ซึ่ง ระบบไบนารี่จะเท่ากับ 101 2. บิตที่สำคัญที่สุดสอดคล้องกับ 2 2 =4 บิตตรงกลาง (ซึ่งเรามี เท่ากับศูนย์) 2 1 =2 และอายุน้อยที่สุด 2 0 =1 คำสั่ง– นี่คือกำลังของฐาน (สอง) ของหลักสูงสุด ในกรณีของเรา E=2 สะดวกในการเขียนตัวเลขดังกล่าวในสิ่งที่เรียกว่า "วิทยาศาสตร์" แบบฟอร์มมาตรฐานเช่น "1.01e+2" เป็นที่ชัดเจนทันทีว่าแมนทิสซาประกอบด้วยสัญญาณสามประการและลำดับคือสอง

สมมติว่าเราอยากได้ จำนวนเศษส่วนโดยใช้แมนทิสซา 3 บิตเดียวกัน เราสามารถทำได้ถ้าเราหา E=1 แล้วจำนวนเราจะเท่ากัน

1.01e+1 = 1×2 1 +0×2 0 +1×2 -1 =2+0.5=2.5

แน่นอนว่าด้วยวิธีนี้ จึงสามารถแสดงจำนวนเดียวกันได้หลายวิธี ลองพิจารณาตัวอย่างเกี่ยวกับความยาวของแมนทิสซา |M|=4 ตัวเลข "2" สามารถแสดงได้ดังนี้:

2 = 10 (ในรูปแบบไบนารี่) = 1.000e+1 = 0.100e+2 = 0.010e+3

ดังนั้นในเครื่องแรกสุดจึงมีการแสดงตัวเลขในสิ่งที่เรียกว่า แบบฟอร์มปกติเมื่อแมนทิสซาบิตแรกถือว่ามีค่าเท่ากับหนึ่งเสมอ

วิธีนี้จะประหยัดหนึ่งบิต (เนื่องจากไม่จำเป็นต้องจัดเก็บไว้ในหน่วยความจำ) และช่วยให้มั่นใจได้ว่าตัวเลขจะแสดงไม่ซ้ำกัน ในตัวอย่างของเรา “2” มีการแสดงค่าเดียว (“1.000e+1”) และแมนทิสซาถูกเก็บไว้ในหน่วยความจำเป็น “000” เนื่องจาก หน่วยนำมีนัยโดยปริยาย แต่ในการแทนตัวเลขปกติก็เกิดขึ้น ปัญหาใหม่- เป็นไปไม่ได้ที่จะแสดงศูนย์ในรูปแบบนี้

  • การวิเคราะห์ข้อมูลโดยใช้คำสั่งการเลือกพารามิเตอร์และการค้นหาโซลูชัน
  • การวิเคราะห์และตีความข้อมูลการวิจัยทางจิตวิทยาเชิงทดลอง
  • การวิเคราะห์แหล่งข้อมูล มาตรฐานทางเทคนิคสำหรับถนนในเมือง
  • การวิเคราะห์ข้อมูลที่ได้รับ การตัดสินใจเกี่ยวกับความเพียงพอหรือความไม่เพียงพอของลักษณะการจัดหาน้ำเพื่อรองรับความต้องการของระบบชลประทาน
  • อุปกรณ์สายสื่อสาร: อุปกรณ์ส่งข้อมูล อุปกรณ์ปลายทาง อุปกรณ์ระดับกลาง

  • ชนิดข้อมูลกำหนดชุดของค่าที่ถูกต้องและชุดของการดำเนินการที่ถูกต้อง

    ประเภทเรียบง่าย

    ประเภทง่าย ๆ แบ่งออกเป็น ORDINAL และ REAL

    1. ประเภทการสั่งซื้อ , ในทางกลับกันก็มี:

    ก) ทั้งหมด

    Pascal กำหนดประเภทจำนวนเต็ม 5 ประเภท ซึ่งถูกกำหนดขึ้นอยู่กับเครื่องหมายและค่าที่ตัวแปรจะใช้

    พิมพ์ชื่อ

    ความยาว (เป็นไบต์)

    ช่วงของค่า

    32 768...+32 767

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

    ข) ตรรกะ

    ชื่อของประเภทนี้คือ BOOLEAN ค่าบูลีนสามารถเป็นหนึ่งในค่าคงที่เชิงตรรกะ: TRUE (จริง) หรือ FALSE (เท็จ)

    ค) สัญลักษณ์

    ชื่อประเภทนี้คือ CHAR - มีพื้นที่ 1 ไบต์ ค่าของประเภทอักขระคือชุดของอักขระ PC ทั้งหมด อักขระแต่ละตัวถูกกำหนดให้เป็นจำนวนเต็มในช่วง 0…255 หมายเลขนี้ทำหน้าที่เป็นรหัสสำหรับการแสดงสัญลักษณ์ภายใน

    2. ประเภทจริง .

    ต่างจากประเภทลำดับซึ่งค่าจะถูกแมปกับชุดจำนวนเต็มเสมอและดังนั้นจึงแสดงอย่างแม่นยำในพีซี ค่าของประเภทจริงจะกำหนด หมายเลขใดก็ได้มีความแม่นยำจำกัดเพียงบางส่วนเท่านั้น ทั้งนี้ขึ้นอยู่กับรูปแบบภายในของจำนวนจริง

    ความยาวของชนิดข้อมูลตัวเลข ไบต์

    ชื่อชนิดข้อมูลตัวเลข

    ปริมาณ ตัวเลขสำคัญชนิดข้อมูลตัวเลข

    ช่วงลำดับทศนิยมของชนิดข้อมูลตัวเลข

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

    ประเภทที่มีโครงสร้าง

    ประเภทข้อมูลที่มีโครงสร้างจะกำหนดการเก็บรวบรวมตัวแปรสเกลาร์ตามลำดับและมีลักษณะเฉพาะตามประเภทของส่วนประกอบ

    ประเภทข้อมูลที่มีโครงสร้างต่างจากประเภทข้อมูลธรรมดาที่กำหนดค่าที่ซับซ้อนจำนวนมากด้วยชื่อสามัญเพียงชื่อเดียว เราสามารถพูดได้ว่าประเภทโครงสร้างกำหนดวิธีการสร้างประเภทใหม่จากสิ่งที่มีอยู่

    มีวิธีการจัดโครงสร้างหลายวิธี ตามวิธีการจัดองค์กรและประเภทของส่วนประกอบในประเภทข้อมูลที่ซับซ้อน มีความหลากหลายดังต่อไปนี้: ประเภทปกติ (อาร์เรย์); ประเภทรวม (บันทึก); ประเภทไฟล์ (ไฟล์); หลายประเภท; ประเภทสตริง (สตริง); ในภาษา Turbo Pascal เวอร์ชัน 6.0 และเก่ากว่า มีการแนะนำประเภทอ็อบเจ็กต์ (อ็อบเจ็กต์)

    ต่างจากประเภทข้อมูลธรรมดา ข้อมูลประเภทที่มีโครงสร้างมีลักษณะเฉพาะด้วยองค์ประกอบหลายหลากที่ก่อตัวเป็นประเภทนี้ เช่น ตัวแปรหรือค่าคงที่ประเภทที่มีโครงสร้างมักจะมีองค์ประกอบหลายส่วนเสมอ แต่ละส่วนประกอบสามารถอยู่ในประเภทที่มีโครงสร้างได้ กล่าวคือ สามารถทำรังได้

    1. อาร์เรย์

    อาร์เรย์ใน Turbo Pascal มีความคล้ายคลึงกับประเภทข้อมูลที่คล้ายคลึงกันในภาษาโปรแกรมอื่นๆ หลายประการ คุณลักษณะที่โดดเด่นของอาร์เรย์คือส่วนประกอบทั้งหมดเป็นข้อมูลประเภทเดียวกัน (อาจมีโครงสร้าง) ส่วนประกอบเหล่านี้สามารถจัดระเบียบได้อย่างง่ายดาย และสามารถเข้าถึงส่วนประกอบใดส่วนหนึ่งได้อย่างง่ายดายโดยการระบุหมายเลขซีเรียล

    คำอธิบายอาร์เรย์มีการระบุดังนี้:

    <имя типа>= อาร์เรย์[<сп.инд.типов>] ของ<тип>

    ที่นี่<имя типа>- ตัวระบุที่ถูกต้อง

    อาร์เรย์ของ – คำที่สงวนไว้(อาร์เรย์จาก);

    <сп.инд.типов>- รายการประเภทดัชนีตั้งแต่หนึ่งรายการขึ้นไป คั่นด้วยเครื่องหมายจุลภาค วงเล็บเหลี่ยมที่จัดกรอบรายการเป็นข้อกำหนดด้านไวยากรณ์

    <тип>- Turbo Pascal ทุกรุ่น

    ประเภทลำดับใดๆ สามารถใช้เป็นประเภทดัชนีใน Turbo Pascal ยกเว้นประเภท LongInt และช่วงที่มี ประเภทพื้นฐานลองอินท์.

    ความลึกของการซ้อนของประเภทที่มีโครงสร้างโดยทั่วไปและของอาร์เรย์นั้นขึ้นอยู่กับอำเภอใจ ดังนั้นจำนวนองค์ประกอบในรายการดัชนีประเภท (ขนาดอาร์เรย์) จึงไม่ถูกจำกัด อย่างไรก็ตาม ความยาวรวมของการแสดงภายในของอาร์เรย์ใดๆ ไม่สามารถ มีขนาดมากกว่า 65520 ไบต์

    2. บันทึก

    เรกคอร์ดคือโครงสร้างข้อมูลที่ประกอบด้วยส่วนประกอบจำนวนคงที่ที่เรียกว่าเขตข้อมูลเรกคอร์ด ส่วนประกอบ (ฟิลด์) ของเรกคอร์ดสามารถแตกต่างจากอาร์เรย์ได้ ประเภทต่างๆ- ฟิลด์ต่างๆ จะถูกตั้งชื่อเพื่อให้สามารถอ้างอิงถึงส่วนประกอบหนึ่งหรือส่วนประกอบอื่นของเรกคอร์ดได้

    โครงสร้างของการประกาศประเภทโพสต์คือ:

    < ชื่อพิมพ์>=บันทึก< การร่วมทุน. สาขา>สิ้นสุด

    ที่นี่<имя типа>- ตัวระบุที่ถูกต้อง

    RECORD, END – คำสงวน (บันทึก, สิ้นสุด);

    <сп.полей>- รายชื่อสาขา; คือลำดับของส่วนของบันทึกที่คั่นด้วยเครื่องหมายอัฒภาค

    3. ชุด

    ชุดคือชุดของออบเจ็กต์ประเภทเดียวกันที่เชื่อมต่อกันในเชิงตรรกะ ลักษณะของการเชื่อมต่อระหว่างอ็อบเจ็กต์นั้นเป็นเพียงโปรแกรมเมอร์เท่านั้นที่บ่งบอกเป็นนัย และ Turbo Pascal จะไม่ถูกควบคุมแต่อย่างใด จำนวนองค์ประกอบที่รวมอยู่ในชุดอาจแตกต่างกันตั้งแต่ 0 ถึง 256 (ชุดที่ไม่มีองค์ประกอบเรียกว่าว่างเปล่า) มันเป็นความไม่แน่นอนของจำนวนองค์ประกอบที่ชุดแตกต่างจากอาร์เรย์และบันทึก

    สองเซตจะถือว่าเท่ากันก็ต่อเมื่อองค์ประกอบทั้งหมดเหมือนกัน และลำดับขององค์ประกอบของเซตนั้นไม่แยแส หากองค์ประกอบทั้งหมดของชุดหนึ่งรวมอยู่ในอีกชุดหนึ่งด้วย พวกเขาบอกว่าชุดแรกจะรวมอยู่ในชุดที่สอง

    คำอธิบายของประเภทชุดคือ:

    < ชื่อพิมพ์> = ชุดของ< ฐาน. พิมพ์>

    ที่นี่<имя типа>- ตัวระบุที่ถูกต้อง

    SET, OF – คำสงวน (ชุด, จาก);

    <баз.тип>- ประเภทพื้นฐานขององค์ประกอบชุด ซึ่งสามารถเป็นประเภทลำดับใดก็ได้ ยกเว้น WORD, INTEGER และ LONGINT

    ในการกำหนดเซ็ต จะใช้สิ่งที่เรียกว่าตัวสร้างเซ็ต: รายการข้อกำหนดขององค์ประกอบของเซ็ต คั่นด้วยเครื่องหมายจุลภาค รายการจะล้อมรอบด้วยวงเล็บเหลี่ยม ข้อมูลจำเพาะขององค์ประกอบอาจเป็นค่าคงที่หรือนิพจน์ของประเภทฐาน เช่นเดียวกับประเภทช่วงของประเภทฐานเดียวกัน

    4. ไฟล์

    ไฟล์อ้างอิงถึงพื้นที่ที่มีชื่อ หน่วยความจำภายนอกพีซีหรืออุปกรณ์ลอจิคัลเป็นแหล่งหรือรับข้อมูลที่เป็นไปได้

    ไฟล์ใด ๆ มีคุณสมบัติสามประการ

      มีชื่อซึ่งช่วยให้โปรแกรมทำงานกับไฟล์หลายไฟล์พร้อมกันได้

      ประกอบด้วยส่วนประกอบประเภทเดียวกัน ประเภทส่วนประกอบสามารถเป็นประเภท Turbo Pascal ใดก็ได้ ยกเว้นไฟล์ กล่าวอีกนัยหนึ่ง คุณไม่สามารถสร้าง "ไฟล์ของไฟล์"

      ความยาวอีกครั้ง สร้างไฟล์ไม่ได้ระบุไว้ในทางใดทางหนึ่งเมื่อมีการประกาศ และถูกจำกัดด้วยความจุของอุปกรณ์หน่วยความจำภายนอกเท่านั้น

    ประเภทไฟล์หรือตัวแปร ประเภทไฟล์สามารถตั้งค่าได้ด้วยวิธีใดวิธีหนึ่งจากสามวิธี:

    < ชื่อ>= ไฟล์ของ< พิมพ์>;

    < ชื่อ>=ข้อความ;

    <имя>= ไฟล์;

    ที่นี่<имя>- ชื่อประเภทไฟล์ (ตัวระบุที่ถูกต้อง)

    FILE, OF – คำสงวน (ไฟล์, จาก);

    TEXT – ชื่อของประเภทไฟล์ข้อความมาตรฐาน

    <тип>- Turbo Pascal ทุกประเภท ยกเว้นไฟล์

    ขึ้นอยู่กับวิธีการประกาศ ไฟล์สามประเภทสามารถแยกแยะได้:

    · ไฟล์ที่พิมพ์ (กำหนดโดยคำสั่ง FILE OF...);

    · ไฟล์ข้อความ(กำหนดโดยประเภท TEXT);

    · ไฟล์ที่ไม่ได้พิมพ์ (กำหนดโดยประเภท FILE)

    เกี่ยวกับการแปลง ประเภทตัวเลขข้อมูลปาสคาล

    ในภาษาปาสคาล การแปลงประเภทข้อมูลตัวเลขโดยนัย (อัตโนมัติ) แทบจะเป็นไปไม่ได้เลย มีข้อยกเว้นสำหรับประเภทจำนวนเต็มเท่านั้น ซึ่งอนุญาตให้ใช้ในนิพจน์ประเภท real ได้ ตัวอย่างเช่น หากมีการประกาศตัวแปรดังนี้:

    Var X: จำนวนเต็ม; Y: จริง;

    จากนั้นผู้ดำเนินการ

    จะถูกทางวากยสัมพันธ์แม้ว่าจะมีนิพจน์จำนวนเต็มทางด้านขวาของเครื่องหมายมอบหมายและมีตัวแปรจริงทางด้านซ้าย แต่คอมไพลเลอร์จะแปลงชนิดข้อมูลตัวเลขโดยอัตโนมัติ การแปลงแบบย้อนกลับโดยอัตโนมัติจากประเภทจริงเป็น ประเภทจำนวนเต็มเป็นไปไม่ได้ในภาษาปาสคาล โปรดจำไว้ว่ามีการจัดสรรจำนวนไบต์สำหรับตัวแปรประเภทจำนวนเต็มและจำนวนจริง: สำหรับ ประเภทจำนวนเต็มหน่วยความจำ 2 ไบต์ได้รับการจัดสรรสำหรับข้อมูลจำนวนเต็ม และ 6 ไบต์สำหรับข้อมูลจริง มีฟังก์ชันในตัวสองฟังก์ชันสำหรับการแปลงจำนวนจริงเป็นจำนวนเต็ม: การปัดเศษ (x) ปัดเศษจำนวนจริง x เป็นจำนวนเต็มที่ใกล้ที่สุด การตัดทอน (x) ตัดทอนจำนวนจริงโดยการละทิ้งส่วนที่เป็นเศษส่วน

    ชนิดข้อมูล

    ความเข้ากันได้ของประเภท

    ชนิดข้อมูลที่สร้างขึ้น

    ชนิดข้อมูลจริง

    ประเภทลำดับข้อมูล

    ชนิดข้อมูล

    วางแผน

    การบรรยายครั้งที่ 8

    หัวข้อ: ชนิดข้อมูล

    คอมไพเลอร์ ภาษาปาสคาลต้องการให้ข้อมูลเกี่ยวกับจำนวนหน่วยความจำที่จำเป็นในการรันโปรแกรมก่อนที่จะเริ่มทำงาน ในการดำเนินการนี้ ในส่วนคำอธิบายตัวแปร (var) คุณจะต้องแสดงรายการตัวแปรทั้งหมดที่ใช้ในโปรแกรม นอกจากนี้คุณยังต้องบอกคอมไพเลอร์ด้วยว่าตัวแปรแต่ละตัวจะใช้หน่วยความจำเท่าใด นอกจากนี้ยังเป็นการดีที่จะตกลงล่วงหน้าเกี่ยวกับ การดำเนินงานต่างๆใช้ได้กับตัวแปรบางตัว...

    ทั้งหมดนี้สามารถสื่อสารไปยังโปรแกรมได้โดยการระบุประเภทของตัวแปรในอนาคต เมื่อมีข้อมูลเกี่ยวกับประเภทของตัวแปร คอมไพลเลอร์จะ "เข้าใจ" ว่าต้องจัดสรรไบต์จำนวนเท่าใด การดำเนินการใดที่สามารถทำได้กับตัวแปร และโครงสร้างใดบ้างที่สามารถมีส่วนร่วมได้

    ประเภทกำหนดชุด ค่าที่ยอมรับได้ซึ่งสิ่งนี้หรือวัตถุนั้นสามารถมีได้ เช่นเดียวกับชุดของการดำเนินการที่ถูกต้องที่ใช้กับวัตถุนั้น นอกจากนี้ ประเภทนี้ยังกำหนดรูปแบบของการแสดงข้อมูลภายในในหน่วยความจำพีซีอีกด้วย

    ประเภทข้อมูลพื้นฐานเป็นประเภทมาตรฐาน ดังนั้นจึงไม่จำเป็นต้องอธิบายในส่วนประเภท อย่างไรก็ตาม หากต้องการ ก็สามารถทำได้เช่นกัน เช่น โดยให้คำจำกัดความที่ยาว ชื่อสั้น ๆ- สมมติว่าโดยการเข้าไป ชนิดใหม่ข้อมูล

    พิมพ์ Int = จำนวนเต็ม;

    คุณสามารถย่อข้อความโปรแกรมให้สั้นลงได้เล็กน้อย

    การแบ่งออกเป็นประเภทข้อมูลพื้นฐานและประเภทข้อมูลที่สร้างขึ้นใน Pascal แสดงอยู่ในตาราง:

    ในบรรดาประเภทข้อมูลพื้นฐาน ประเภทลำดับมีความโดดเด่น ชื่อนี้สามารถพิสูจน์ได้สองวิธี:

    1. แต่ละองค์ประกอบของประเภทลำดับสามารถเชื่อมโยงกับหมายเลขเฉพาะ (ลำดับ) ได้ การนับค่าเริ่มจากศูนย์ ข้อยกเว้นคือประเภทข้อมูล ShortInt, Integer และ LongInt การกำหนดหมายเลขสอดคล้องกับค่าขององค์ประกอบ



    2. นอกจากนี้องค์ประกอบของลำดับประเภทใด ๆ จะมีลำดับที่กำหนดไว้ (ในความหมายทางคณิตศาสตร์ของคำ) ซึ่งขึ้นอยู่กับการกำหนดหมายเลขโดยตรง ดังนั้น สำหรับสององค์ประกอบใดๆ ของประเภทลำดับ เราสามารถบอกได้อย่างแน่ชัดว่าองค์ประกอบใดเล็กกว่าและองค์ประกอบใดมากกว่า 2

    D Pascal ขยาย CF Pascal อย่างมีนัยสำคัญโดยการเพิ่มชนิดข้อมูลใหม่ให้กับสัญลักษณ์และไฟล์ ชนิดข้อมูลลำดับจะอธิบายวัตถุที่เรียบง่ายและแบ่งแยกไม่ได้ ประเภทการแจงนับประกอบด้วยชุดของวัตถุที่มีชื่อคงที่ ประเภทบูลีนมีเพียงสองวัตถุเท่านั้น - TRUE และ FALSE ประเภทจำนวนเต็มใช้จำนวนเต็มบวกและลบ ในที่สุด ส่วนหนึ่งของประเภทก็สามารถเป็นประเภทหรือประเภทช่วงได้เช่นกัน แน่นอนว่าประเภทต่างๆ รวมถึงการดำเนินการที่กำหนดสิ่งที่สามารถทำได้กับออบเจ็กต์ สำหรับตรรกะ จำนวนเต็ม ฯลฯ การดำเนินการเหล่านี้เป็นที่เข้าใจกันโดยสัญชาตญาณ

    ชนิดข้อมูลอธิบายชุดของค่าและการดำเนินการที่สามารถนำไปใช้กับชุดเหล่านั้นได้ ประเภทข้อมูลที่ CF Pascal แนะนำคือ CHAR และ TEXT ค่าประเภท CHAR คือชุดของสัญลักษณ์ Pascal ที่ถูกต้อง และการดำเนินการกับค่าเหล่านี้คือตัวดำเนินการเปรียบเทียบ:

    = < > <= >= <>

    ซึ่งมีค่าสอดคล้องกัน การดำเนินการทางคณิตศาสตร์ซึ่งสะท้อนถึงตำแหน่งต่างๆ ของอักขระตามลำดับตัวอักษร ค่าประเภทข้อมูล TEXT คือลำดับของสตริง โดยแต่ละบรรทัดจะเป็นลำดับอักขระ การดำเนินการกับข้อมูลดังกล่าว:

    รีเซ็ต เขียนใหม่ อ่าน เขียน เขียน OEF EOLN

    ชนิดข้อมูลมีประโยชน์ สิ่งที่เป็นนามธรรม, การจำลองแบบและ การรับรองความถูกต้อง.

    ชนิดข้อมูลเป็นนามธรรมคุณสมบัติที่สำคัญของข้อมูล เช่น เพื่อให้เข้าใจการเปรียบเทียบ

    'เอ'< ‘B’

    ไม่จำเป็นต้องรู้ว่าสัญลักษณ์เหล่านี้แสดงอย่างไรในเครื่อง Pascal ลำดับการเรียงลำดับจะกำหนดความหมายของการดำเนินการเหล่านี้ ผู้ใช้ไม่จำเป็นต้องทราบจำนวนบิตที่แสดงถึงค่าอักขระ เกิดอะไรขึ้นกับบิตที่ซ้ำซ้อน หรือค่าบิตของอักขระนั้นถูกต้องหรือไม่ บีมากกว่าสำหรับ ฯลฯ

    โมดูลจัดให้มีประเภทของข้อมูลที่เป็นนามธรรม แต่ประเภทข้อมูลมีมากกว่านั้น การประกาศตัวแปรประเภทข้อมูลช่วยให้คุณสามารถจัดเก็บและจัดการค่าประเภทข้อมูลจำนวนเท่าใดก็ได้ผ่านตัวแปรเหล่านี้ การใช้ตัวแปรในโปรแกรมทุกครั้งทำให้เรารับประกันได้ว่าจะมีเพียงการดำเนินการที่ถูกต้องเท่านั้นที่จะนำไปใช้กับตัวแปรนั้น

    บริบทของตัวถูกดำเนินการในโปรแกรมหมายถึงประเภทของตัวถูกดำเนินการ ประเภทโดยนัยนี้เป็นข้อมูลที่ซ้ำซ้อนที่สามารถตรวจสอบกับประเภทตัวถูกดำเนินการที่ประกาศไว้เพื่อป้องกันการดำเนินการกับค่าประเภทที่ไม่ถูกต้อง พิจารณาส่วนของโปรแกรมต่อไปนี้:

    ประเภทโปรแกรมx(อินพุต,เอาต์พุต);

    เนื่องจากตัวดำเนินการ = ถูกกำหนดไว้ใน CF Pascal สำหรับตัวถูกดำเนินการอักขระเท่านั้น การปรากฏตัวของ Ch และ F เป็นตัวถูกดำเนินการจึงหมายความว่าทั้งสองประเภทเป็น CHAR พิมพ์ Ch อย่างถูกต้องและมีการประกาศ F เป็น TEXT ดังนั้นระบบจะตรวจพบความไม่ตรงกัน


    มีประเภทข้อมูลสองประเภทใน D Pascal: ประเภทข้อมูลแบบธรรมดาและประเภทข้อมูลรวม ค่าประเภทง่าย ๆ ไม่สามารถประกอบด้วยส่วนเล็ก ๆ ที่สามารถจัดการแยกกันได้ CHAR เป็นแบบเรียบง่าย ค่าของประเภทข้อมูลที่ซับซ้อนเกิดขึ้นจากการรวมค่าของประเภทข้อมูลอย่างง่าย ข้อความ - ประเภทคอมโพสิตเนื่องจากบรรทัดไฟล์ประกอบด้วยอักขระ

    มีการเรียงลำดับค่าประเภทง่าย ๆ นั่นคือสำหรับคู่ของค่าประเภทนี้ x, y มีเพียงตัวเลือกเดียวเท่านั้นที่เป็นไปได้: x< y, x = y, x >ย. ดังนั้นประเภทเหล่านี้จึงเรียกว่าลำดับ

    Pascal มีประเภทลำดับที่กำหนดไว้ล่วงหน้าสามประเภท ซึ่งระบุโดยตัวระบุ CHAR, INTEGER และ BOOLEAN นอกเหนือจากประเภทลำดับที่กำหนดไว้ล่วงหน้าแล้ว Pascal ยังมีสองวิธีสำหรับโปรแกรมเมอร์ในการกำหนดประเภทลำดับใหม่ กล่าวคือ:

    1. ประเภทแจกแจงที่มีค่าเป็นตัวระบุที่ไม่ซ้ำกัน
    2. ประเภทช่วงที่มีค่าเป็นค่าต่อเนื่องของประเภทลำดับอื่น

    นั่นคือประเภทข้อมูลลำดับใหม่สามารถกำหนดได้โดยการแจกแจงค่าคงที่ของประเภทหรือโดยระบุว่าค่าของประเภทนั้นเป็นช่วงย่อยของค่า ประเภทที่มีอยู่- ไวยากรณ์สำหรับแสดงประเภทลำดับดังกล่าวมีดังนี้:

    <обозначение типа> ::= <идентификатор типа> | <новый тип>

    <идентификатор типа> ::= <идентификатор>

    <новый тип> ::= <перечислимый тип> | <тип диапазон>

    วิธีการอธิบายสำหรับ<перечислимый тип>และ<тип диапазон>จะได้รับในส่วนที่เกี่ยวข้องด้านล่าง

    เมื่อมีการกำหนดประเภทใหม่ อาจได้รับชื่อในการประกาศประเภท การประกาศนี้ต้องอยู่ก่อนการประกาศตัวแปรบล็อก

    <блок> ::= <раздел объявлений типов> <раздел объявлений переменных>

    <раздел объявлений процедур> <раздел операторов>

    <раздел объявлений типов>::= ประเภท<объявления типов> |

    กฎข้อนี้แสดงให้เห็นว่า<раздел объявлений типов>อาจว่างเปล่า (เหมือนเช่นเคยในทุกโปรแกรมก่อนหน้านี้ สถานที่แห่งนี้)

    <объявления типов> ::= <объявления типов> <объявление типа> | <объявление типа>

    <объявление типа> ::=<идентификатор > = <обозначение типа>

    กฎบริบทที่มาพร้อมกับกฎไวยากรณ์เหล่านี้ระบุว่ามีเฉพาะตัวระบุบางตัวเท่านั้น<объявлением типа>:

    CR เพื่อใช้เป็น<идентификатор типа>, <идентификатор>คงจะเคยปรากฏตัวมาแล้วใน<объявлениях типов>.

    ดังนั้นเพื่อ

    ทั้ง T1 และ T2 เป็นตัวระบุประเภทและสามารถใช้ในบล็อกปัจจุบันเพื่อประกาศตัวแปรและพารามิเตอร์ที่เป็นทางการ เนื่องจากก่อนหน้านี้ใช้ CHAR

    ในภาษาปาสคาลตัวแปรมีลักษณะเฉพาะด้วย พิมพ์- ประเภทคือคุณสมบัติของตัวแปรที่ตัวแปรสามารถรับค่าต่างๆ ที่อนุญาตโดยประเภทนั้น และมีส่วนร่วมในการดำเนินการต่างๆ ที่อนุญาตในประเภทนั้น

    ประเภทจะกำหนดชุดของค่าที่ถูกต้องที่ตัวแปรสามารถรับได้ ประเภทนี้- นอกจากนี้ยังกำหนดชุดของการดำเนินการที่ถูกต้องกับตัวแปรประเภทที่กำหนดและกำหนดการแทนข้อมูลด้วย แรมคอมพิวเตอร์.

    ตัวอย่างเช่น:

    n:จำนวนเต็ม;

    ปาสคาลเป็นภาษาคงที่ ซึ่งหมายความว่าประเภทของตัวแปรจะถูกกำหนดเมื่อมีการประกาศและไม่สามารถเปลี่ยนแปลงได้ ภาษาปาสคาลมีระบบประเภทที่พัฒนาขึ้น - ข้อมูลทั้งหมดจะต้องมีการเป็นเจ้าของล่วงหน้า ประเภทที่รู้จักข้อมูล (ทั้งประเภทมาตรฐานที่สร้างขึ้นระหว่างการพัฒนาภาษาหรือประเภทที่กำหนดเองที่กำหนดโดยโปรแกรมเมอร์) โปรแกรมเมอร์สามารถสร้างประเภทของตัวเองด้วยโครงสร้างความซับซ้อนตามอำเภอใจ ประเภทมาตรฐานหรืออยู่แล้ว ผู้ใช้กำหนดประเภท ปริมาณ ประเภทที่สร้างขึ้นไม่จำกัด ประเภทที่กำหนดเองในโปรแกรมจะถูกประกาศในส่วน TYPE โดยใช้รูปแบบ:

    [ชื่อ] = [ประเภท]

    ระบบประเภทมาตรฐานมีโครงสร้างแบบแยกย่อยและเป็นลำดับชั้น

    หลักในลำดับชั้นคือ ประเภทง่ายๆ- ประเภทดังกล่าวมีอยู่ในภาษาโปรแกรมส่วนใหญ่และเรียกว่าง่าย แต่ในภาษาปาสคาลมีโครงสร้างที่ซับซ้อนกว่า

    ประเภทที่มีโครงสร้างถูกสร้างขึ้นตามกฎบางอย่างจากประเภทธรรมดา

    ป้ายบอกทางถูกสร้างขึ้นจาก ประเภทง่ายๆและใช้ในโปรแกรมเพื่อกำหนดที่อยู่

    ประเภทขั้นตอนเป็นนวัตกรรมในภาษา Turbo Pascal และอนุญาตให้เข้าถึงรูทีนย่อยราวกับว่าเป็นตัวแปร

    วัตถุยังเป็นนวัตกรรมและมีจุดมุ่งหมายเพื่อใช้ภาษาเป็นภาษาเชิงวัตถุ

    ในภาษาปาสกาล ประเภทจำนวนเต็มมี 5 ประเภท แต่ละคนกำหนดลักษณะช่วงของค่าที่ยอมรับและพื้นที่ที่ใช้ในหน่วยความจำ

    เมื่อใช้ตัวเลขจำนวนเต็ม คุณควรได้รับคำแนะนำจากการซ้อนประเภทต่างๆ เช่น ประเภทที่มีช่วงที่เล็กกว่าสามารถซ้อนกันภายในประเภทที่มีช่วงที่ใหญ่กว่าได้ ประเภทไบต์สามารถซ้อนกันได้ทุกประเภทขนาด 2 และ 4 ไบต์ ในเวลาเดียวกัน แบบสั้น int ที่มีขนาด 1 ไบต์ไม่สามารถซ้อนกันได้ ประเภทคำเนื่องจากไม่มีค่าลบ

    มี 5 ประเภทจริง:

    ประเภทจำนวนเต็มจะแสดงอย่างแม่นยำในคอมพิวเตอร์ ต่างจากประเภทจำนวนเต็ม ค่าของประเภทจริงจะกำหนดตัวเลขที่ต้องการด้วยความแม่นยำจำกัดบางประการเท่านั้น ขึ้นอยู่กับรูปแบบของตัวเลข จำนวนจริงจะแสดงในคอมพิวเตอร์เป็นจุดคงที่หรือจุดลอยตัว

    2358.8395

    0.23588395*10 4

    0.23588395*E 4

    ประเภท Comp มีตำแหน่งพิเศษในภาษาปาสคาล อันที่จริงมันเป็นจำนวนเต็มที่มีเครื่องหมายขนาดใหญ่ ประเภทนี้เข้ากันได้กับประเภทจริงทั้งหมดและสามารถใช้กับจำนวนเต็มขนาดใหญ่ได้ เมื่อนำเสนอ ตัวเลขจริงจุดลอยตัว จุดทศนิยมจะแสดงเป็นนัยก่อนแมนทิสซาทางซ้ายหรือสูงเสมอ แต่เมื่อดำเนินการกับตัวเลข จะเลื่อนไปทางซ้ายหรือขวา

    ประเภทลำดับ

    ประเภทลำดับจะรวมประเภทง่ายๆ หลายประเภทเข้าด้วยกัน ซึ่งรวมถึง:

    • จำนวนเต็มทุกประเภท
    • ประเภทตัวละคร
    • ประเภทบูลีน
    • ประเภทช่วง;
    • ประเภทแจกแจง

    ลักษณะทั่วไปสำหรับประเภทลำดับคือ แต่ละประเภทมีค่าที่เป็นไปได้ในจำนวนจำกัด ค่าของประเภทเหล่านี้สามารถเรียงลำดับได้ด้วยวิธีใดวิธีหนึ่งและสามารถเชื่อมโยงหมายเลขเฉพาะซึ่งเป็นหมายเลขซีเรียลกับแต่ละหมายเลขได้ ค่าที่อยู่ติดกันของประเภทลำดับจะแตกต่างกันไป

    สำหรับค่าประเภทลำดับสามารถใช้ฟังก์ชัน ODD(x) ซึ่งจะส่งคืนเลขลำดับของอาร์กิวเมนต์ x

    ฟังก์ชัน PRED(x) - ส่งคืนค่าก่อนหน้าของประเภทลำดับ เปร็ด(A) = 5.

    ฟังก์ชัน SUCC(x) - ส่งกลับค่าลำดับถัดไป SUCC(A) = 5

    ประเภทตัวละคร

    ค่าของประเภทอักขระคือ 256 อักขระจากชุดอักขระที่ถูกต้อง ตารางรหัสคอมพิวเตอร์ที่คุณใช้ พื้นที่เริ่มต้นของชุดนี้นั่นคือช่วงตั้งแต่ 0 ถึง 127 สอดคล้องกับชุดรหัส ASCII โดยที่โหลดอักขระตัวอักษร ตัวเลขอารบิก และอักขระพิเศษ อักขระพื้นที่เริ่มต้นจะปรากฏบนแป้นพิมพ์พีซีเสมอ พื้นที่อาวุโสเรียกว่าอัลเทอร์เนทีฟซึ่งมีสัญลักษณ์อักษรประจำชาติและต่างๆ อักขระพิเศษและอักขระที่ไม่ใช่ ASCII

    ค่าประเภทอักขระใช้หนึ่งไบต์ใน RAM ในโปรแกรมความหมายจะอยู่ในเครื่องหมายอะพอสทรอฟี สามารถระบุค่าในรูปแบบของรหัส ASCII ได้ ในกรณีนี้คุณต้องใส่เครื่องหมาย # หน้าหมายเลขที่มีรหัสสัญลักษณ์

    ค:= 'ก'

    ประเภทลอจิคัล (บูลีน)

    มีค่าบูลีนสองค่า: จริงและเท็จ ตัวแปรประเภทนี้ระบุโดยใช้คำฟังก์ชัน BOOLEAN ค่าบูลีนครอบครองหนึ่งไบต์ใน RAM ค่าจริงและเท็จสอดคล้องกัน ค่าตัวเลข 1 และ 0

    ประเภท-ช่วง

    มีเซตย่อยของประเภทพื้นฐาน ซึ่งสามารถเป็นประเภทลำดับใดก็ได้ ประเภทช่วงถูกกำหนดโดยขอบเขตภายในประเภทฐาน

    [ค่าขั้นต่ำ]…[ค่าสูงสุด]

    ประเภทช่วงสามารถระบุได้ในส่วนประเภทเป็น บางประเภทหรือคุณสามารถโดยตรงในส่วน Var

    เมื่อพิจารณาช่วงประเภท คุณจะต้องได้รับคำแนะนำจาก:

    • ขอบด้านซ้ายไม่ควรเกินขอบด้านขวา
    • ประเภทช่วงจะสืบทอดคุณสมบัติทั้งหมดของประเภทพื้นฐาน แต่มีข้อจำกัดที่เกี่ยวข้องกับกำลังที่ต่ำกว่า

    ประเภทอีนัม

    ประเภทนี้เป็นของประเภทลำดับและระบุโดยการแจกแจงค่าที่สามารถระบุได้ แต่ละค่าเรียกว่าตัวระบุเฉพาะและอยู่ในรายการโดยอยู่ในวงเล็บ ประเภทที่ระบุระบุไว้ในประเภท:

    ประชาชน = (ชายหญิง);

    ค่าแรกคือ 0 ค่าที่สองคือ 1 เป็นต้น

    กำลังไฟสูงสุด 65535 ค่า

    ประเภทสตริง

    ประเภทสตริงเป็นของกลุ่มประเภทที่มีโครงสร้างและประกอบด้วยประเภทพื้นฐาน Char ประเภทสตริงไม่ใช่ประเภทลำดับ มันกำหนดสตริงอักขระจำนวนมากที่มีความยาวตามต้องการสูงสุด 255 อักขระ

    ในโปรแกรม ประเภทสตริงจะถูกประกาศด้วยคำว่า String เนื่องจาก String เป็นประเภทพื้นฐาน จึงถูกกำหนดในภาษาและประกาศ ประเภทตัวแปรสตริงถูกนำมาใช้ใน Var เมื่อประกาศตัวแปร ประเภทสตริงขอแนะนำให้ระบุความยาวของสตริงที่อยู่ด้านหลังสตริงในวงเล็บเหลี่ยม มีการใช้จำนวนเต็มตั้งแต่ 0 ถึง 255 เพื่อระบุ

    ครอบครัว: สตริง;

    การระบุความยาวของสตริงทำให้คอมไพเลอร์สามารถจัดสรรจำนวนไบต์ที่ระบุใน RAM สำหรับตัวแปรนี้ได้ หากไม่ได้ระบุความยาวของสตริง คอมไพลเลอร์จะจัดสรรจำนวนไบต์สูงสุดที่เป็นไปได้ (255) สำหรับค่าของตัวแปรนี้