ประเภทลำดับได้แก่ (ดูรูปที่ 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 ยังมีสองวิธีสำหรับโปรแกรมเมอร์ในการกำหนดประเภทลำดับใหม่ กล่าวคือ:
- ประเภทแจกแจงที่มีค่าเป็นตัวระบุที่ไม่ซ้ำกัน
- ประเภทช่วงที่มีค่าเป็นค่าต่อเนื่องของประเภทลำดับอื่น
นั่นคือประเภทข้อมูลลำดับใหม่สามารถกำหนดได้โดยการแจกแจงค่าคงที่ของประเภทหรือโดยระบุว่าค่าของประเภทนั้นเป็นช่วงย่อยของค่า ประเภทที่มีอยู่- ไวยากรณ์สำหรับแสดงประเภทลำดับดังกล่าวมีดังนี้:
<обозначение типа> ::= <идентификатор типа> | <новый тип>
<идентификатор типа> ::= <идентификатор>
<новый тип> ::= <перечислимый тип> | <тип диапазон>
วิธีการอธิบายสำหรับ<перечислимый тип>และ<тип диапазон>จะได้รับในส่วนที่เกี่ยวข้องด้านล่าง
เมื่อมีการกำหนดประเภทใหม่ อาจได้รับชื่อในการประกาศประเภท การประกาศนี้ต้องอยู่ก่อนการประกาศตัวแปรบล็อก
<блок> ::= <раздел объявлений типов> <раздел объявлений переменных>
<раздел объявлений процедур> <раздел операторов>
<раздел объявлений типов>::= ประเภท<объявления типов> |
กฎข้อนี้แสดงให้เห็นว่า<раздел объявлений типов>อาจว่างเปล่า (เหมือนเช่นเคยในทุกโปรแกรมก่อนหน้านี้ สถานที่แห่งนี้)
<объявления типов> ::= <объявления типов> <объявление типа> | <объявление типа>
<объявление типа> ::=<идентификатор > = <обозначение типа>
กฎบริบทที่มาพร้อมกับกฎไวยากรณ์เหล่านี้ระบุว่ามีเฉพาะตัวระบุบางตัวเท่านั้น<объявлением типа>:
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) สำหรับค่าของตัวแปรนี้