วิธีการตั้งค่าประเภทของตัวแปรในโปรแกรม Pascal เทอร์โบปาสคาล. ประเภทข้อมูล
โปรแกรมใดๆ ที่เขียนด้วยภาษาการเขียนโปรแกรมใดๆ ได้รับการออกแบบมาเพื่อประมวลผลข้อมูลเป็นหลัก ข้อมูลอาจเป็นตัวเลข ข้อความ กราฟิก เสียง เป็นต้น ข้อมูลบางส่วนเป็นข้อมูลต้นฉบับ ส่วนข้อมูลอื่นๆ เป็นผลลัพธ์ ซึ่งได้มาจากการประมวลผลข้อมูลต้นฉบับโดยโปรแกรม
ข้อมูลจะถูกเก็บไว้ในหน่วยความจำของคอมพิวเตอร์ โปรแกรมเข้าถึงโดยใช้ชื่อตัวแปรที่เกี่ยวข้องกับตำแหน่งหน่วยความจำที่เก็บข้อมูล
ตัวแปรจะถูกอธิบายก่อนโค้ดโปรแกรมหลัก ชื่อของตัวแปรและประเภทของข้อมูลที่จัดเก็บไว้ในนั้นระบุไว้ที่นี่
มีข้อมูลหลายประเภทในภาษาการเขียนโปรแกรม Pascal นอกจากนี้ผู้ใช้สามารถกำหนดประเภทของตัวเองได้
ประเภทของตัวแปรจะกำหนดว่าข้อมูลใดที่สามารถจัดเก็บไว้ในตำแหน่งหน่วยความจำที่เกี่ยวข้องได้
ประเภทตัวแปร จำนวนเต็มสามารถเชื่อมโยงกับค่าจำนวนเต็มโดยทั่วไปในช่วง -32768 ถึง 32767 ปาสคาลมีประเภทจำนวนเต็มอื่น ๆ (ไบต์, longint)
ประเภทตัวแปร จริงเก็บจำนวนจริง (เศษส่วน)
ตัวแปร บูลีน(บูลีน) ชนิด (บูลีน) สามารถรับได้เพียงสองค่าเท่านั้น - จริง(1, จริง) หรือ เท็จ(0, เท็จ)
ประเภทตัวละคร (ตัวอักษร)สามารถรับค่าจากลำดับอักขระเฉพาะได้
ประเภทช่วงเวลากำหนดโดยผู้ใช้และสร้างขึ้นจากประเภทลำดับเท่านั้น แสดงถึงชุดย่อยของค่าในช่วงเฉพาะ
คุณสามารถสร้างประเภทข้อมูลของคุณเองได้โดยเพียงแค่แสดงรายการค่าที่ตัวแปรประเภทนั้นสามารถรับได้ นี่คือสิ่งที่เรียกว่า ประเภทข้อมูลที่แจกแจง.
ทั้งหมดข้างต้นเป็นประเภทข้อมูลอย่างง่าย แต่ก็ยังมีสิ่งที่ซับซ้อนและมีโครงสร้างซึ่งใช้ประเภทที่เรียบง่าย
อาร์เรย์เป็นโครงสร้างที่ใช้พื้นที่เดียวในหน่วยความจำและประกอบด้วยส่วนประกอบประเภทเดียวกันจำนวนคงที่
สตริงเป็นลำดับของตัวอักษร นอกจากนี้ จำนวนอักขระเหล่านี้ต้องรวมกันไม่เกิน 255 ตัว ข้อจำกัดนี้เป็นคุณลักษณะเฉพาะของ Pascal
บันทึกเป็นโครงสร้างที่ประกอบด้วยส่วนประกอบจำนวนคงที่ที่เรียกว่าฟิลด์ ข้อมูลในฟิลด์ต่างๆ ของเรกคอร์ดอาจมีประเภทต่างกันได้
ชุดเป็นตัวแทนของชุดขององค์ประกอบจำนวนเท่าใดก็ได้ แต่เป็นประเภทที่แจกแจงเหมือนกัน
ไฟล์สำหรับ Pascal เป็นลำดับของข้อมูลประเภทเดียวกันที่จัดเก็บไว้ในอุปกรณ์หน่วยความจำภายนอก (เช่น ฮาร์ดไดรฟ์)
แนวคิดของชนิดข้อมูลดังกล่าว เช่น ตัวชี้เกี่ยวข้องกับการจัดเก็บข้อมูลแบบไดนามิกในหน่วยความจำคอมพิวเตอร์ บ่อยครั้งที่การใช้ชนิดข้อมูลไดนามิกมีประสิทธิภาพในการเขียนโปรแกรมมากกว่าการใช้ชนิดข้อมูลคงที่
มืออาชีพทุกคนเคยเป็นกาน้ำชามาก่อน แน่นอนว่าคุณคงคุ้นเคยกับรัฐเมื่อ “คุณไม่รู้ว่าจะเริ่มคิดอย่างไรเพื่อให้ได้เรื่องแบบนั้นขึ้นมา” คุณอาจพบสถานการณ์ที่คุณไม่รู้ว่าจะเริ่มต้นอย่างไร หนังสือเล่มนี้มุ่งเป้าไปที่ผู้ที่ต้องการเป็นโปรแกรมเมอร์ แต่ไม่มีความคิดเลยว่าจะเริ่มต้นเส้นทางนี้อย่างไร
-
ชนิดข้อมูลจำนวนเต็มเกือบทั้งหมดจะเป็น . ประเภทข้อมูลเหล่านี้แสดงถึงจำนวนเต็มภายในช่วงที่กำหนด ชื่อเฉพาะของประเภทจำนวนเต็มและช่วงของค่าขึ้นอยู่กับภาษาการเขียนโปรแกรมเฉพาะ คอมไพลเลอร์ และโหมดการคอมไพล์ คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับสิ่งนี้ได้ในเอกสารประกอบของคอมไพเลอร์ เช่น ประเภทข้อมูลจำนวนเต็ม เช่น ประเภทข้อมูลใน Delphi มีช่วง -2147483648…2147483647 ในขณะที่ Turbo Pascal เป็นประเภทข้อมูล เช่น ประเภทข้อมูลหมายถึงตัวเลขในช่วง -35768…32767 ใน Free Pascal คือช่วงของค่าประเภท
กำหนดโดยโหมดที่เลือก
เนื่องจาก Lazarus ใช้คอมไพเลอร์ Free Pascal ทุกสิ่งที่กล่าวถึงเกี่ยวกับประเภทข้อมูลที่สัมพันธ์กับ Free Pascal จึงเป็นเรื่องจริงสำหรับ Lazarus เช่นกัน
ดังนั้น ประเภทข้อมูลจำนวนเต็มของ Free Pascal จะแสดงอยู่ในตารางที่ 13.1
ตารางที่ 13.1. ประเภทข้อมูลจำนวนเต็ม Pascal ฟรี (Lazarus) | พิมพ์ | ขนาดไบต์ |
ช่วงของค่า | 1 | 0…255 |
ไบต์ | 1 | -128…127 |
สั้น | 2 | -35768…32767 |
สมอลท์ | 2 | 0…65535 |
เช่น ประเภทข้อมูล | คำ | 2 หรือ 4 |
ขึ้นอยู่กับโหมดการคอมไพล์ | 4 | 0…4294967295 |
พระคาร์ดินัล | 4 | -2147483648…2147483647 |
ลองจินต์ | 4 | 0...4294967295 |
คำยาว | 8 | -9223372036854775808...9223372036854775807 |
Int64 | 8 | 0...18446744073709551615 |
คิวเวิร์ด
บันทึก คำยาวประเภทในภาษา Pascal ฟรี Int64และ
ไม่ได้! ซึ่งหมายความว่าคุณไม่สามารถใช้ตัวแปรเหล่านี้ได้ เช่น กับตัวแปรดัชนีในลูป อย่างไรก็ตาม ฉันนำเสนอไว้ที่นี่เพื่อไม่ให้อธิบายแยกกันในอนาคต และเพื่อรวบรวมประเภทจำนวนเต็ม Free Pascal ทั้งหมดในที่เดียว หากคุณไม่เข้าใจคำศัพท์บางคำก็ไม่ต้องตกใจ ในเวลาที่กำหนดฉันจะบอกคุณเกี่ยวกับทุกสิ่งโดยละเอียดยิ่งขึ้น
และตอนนี้คำอธิบายเล็กน้อยเกี่ยวกับตาราง ในคอลัมน์พิมพ์
และตอนนี้คำอธิบายเล็กน้อยเกี่ยวกับตาราง มีการระบุประเภทข้อมูล (คำหลักที่ระบุให้คอมไพเลอร์ทราบว่าข้อมูลใดเป็นของประเภทใด) คุณจะได้เรียนรู้วิธีใช้ตัวระบุเหล่านี้ในบทเรียนต่อไปนี้ขนาด ช่วงของค่า, สมอลท์, ขึ้นอยู่กับโหมดการคอมไพล์ระบุขนาดที่ชนิดข้อมูลครอบครองในหน่วยความจำคอมพิวเตอร์ ตัวอย่างเช่น จำนวนเต็มบวกสามารถแสดงเป็นประเภทต่างๆ ได้: ขึ้นอยู่กับโหมดการคอมไพล์จะใช้พื้นที่หน่วยความจำ 4 ไบต์ ในขณะที่ตัวเลขเช่น ช่วงของค่า– เพียง 1 ไบต์ ดังนั้น หากคุณทราบแน่ชัดว่าตัวเลขที่คุณใช้งานอยู่จะไม่มีค่ามากกว่า 255 ก็ควรกำหนดให้เป็นประเภทจะดีกว่า ช่วงของค่าเนื่องจากจะช่วยประหยัดพื้นที่ในหน่วยความจำของคอมพิวเตอร์ของคุณ แม้ว่าทุกอย่างจะไม่ง่ายนักที่นี่ (ความแตกต่างของการกระจายหน่วยความจำและทรัพยากรคอมพิวเตอร์อื่น ๆ นั้นอยู่นอกเหนือขอบเขต)
และตอนนี้คำอธิบายเล็กน้อยเกี่ยวกับตาราง พิสัยระบุช่วงของค่าที่ชนิดข้อมูลดำเนินการ ยกตัวอย่างตัวเลขเช่น ช่วงของค่าสามารถรับค่าได้ตั้งแต่ 0 ถึง 255
ตอนนี้สำหรับการปฏิบัติ เรามาเขียนโปรแกรมที่แสดงช่วงค่าของข้อมูลจำนวนเต็มทุกประเภท ซอร์สโค้ดสำหรับโปรแกรมนี้ได้รับด้านล่าง:
รายการ 13.1. โปรแกรมสำหรับแสดงช่วงจำนวนเต็มโปรแกรม td; ($mode objfpc)($H+) ใช้ ($IFDEF UNIX)($IFDEF UseCThreads) cthreads, ($ENDIF)($ENDIF) คลาส ( คุณสามารถเพิ่มหน่วยได้หลังจากนี้ ); เริ่มต้น Writeln("ไบต์: ", ต่ำ (ไบต์), "..", สูง (ไบต์));
Writeln("Shortint: ", ต่ำ(Shortint), "..", สูง (Shortint)); Writeln("Smallint: ", ต่ำ(Smallint), "..", สูง (Smallint)); Writeln("Word: ", ต่ำ(Word), "..", สูง(Word)); Writeln("จำนวนเต็ม: ", ต่ำ (จำนวนเต็ม), "..", สูง (จำนวนเต็ม)); Writeln("พระคาร์ดินัล: ", ต่ำ (พระคาร์ดินัล), "..", สูง (พระคาร์ดินัล)); Writeln("Longint: ", ต่ำ(Longint), "..", สูง (Longint));ประเภทในภาษา Pascal ฟรี Writeln("คำยาว: ", ต่ำ(คำยาว), "..", สูง (คำยาว)); Writeln("Int64: ", ต่ำ(Int64), "..", สูง (Int64));
Writeln("QWord: ", ต่ำ(QWord), "..", สูง (QWord));
10
178
35278
อ่าน; จบ.
ฟังก์ชั่นมาตรฐาน
- ต่ำกำหนดค่าต่ำสุดของชนิดข้อมูล ฟันต์สเกีย
- สูงกำหนดค่าสูงสุด ด้วยฟังก์ชั่น
- เขียนลอ่านลน
- คุณรู้จักกันมาบ้างแล้ว เราจะพูดถึงรายละเอียดเพิ่มเติมเกี่ยวกับรูทีนย่อย (ขั้นตอนและฟังก์ชัน) ในส่วนที่เกี่ยวข้อง- ตัวเลขที่ขึ้นต้นด้วย % ตัวอย่างเช่น เลขฐานสอง %10 เท่ากับเลขฐานสิบ 2
การบ้าน:
สร้างโปรแกรมที่แสดงช่วงค่าจำนวนเต็ม (รายการ 13.1) คอมไพล์โปรแกรมแล้วรัน ตรวจสอบให้แน่ใจว่าค่าเหล่านี้สอดคล้องกับค่าที่แสดงในตาราง 13.1
ในซอร์สโค้ดโปรแกรม ให้ค้นหาบรรทัดที่ตั้งค่าโหมดการคอมไพล์:
($โหมด objfpc)($H+)
ในบรรทัดนี้แทนที่จะเป็นคำว่า objfpcเขียนคำนั้น ทีพี- นั่นคือบรรทัดสุดท้ายควรมีลักษณะดังนี้:
($โหมด TP)($H+)
เปิดโปรแกรม ดูช่วงของค่าประเภท เช่น ประเภทข้อมูล- วาดข้อสรุป
เรียนรู้ที่จะคิดเหมือนโปรแกรมเมอร์นั่นคือมีเหตุผล จะไม่มีใครยอมเคี้ยวทุกอย่างให้คุณจนเกษียณอย่างฉันตอนนี้ คุณต้องคุ้นเคยกับการคิดด้วยตัวเอง มิฉะนั้น คุณจะหลุดเข้าไปใน “หลักการเรียนรู้ของลิง” แล้วโอกาสที่คุณจะเป็นโปรแกรมเมอร์ที่ยอดเยี่ยมก็แทบจะเป็นศูนย์ เพื่อช่วยให้คุณไม่เลื่อนเข้าสู่ระดับ "การยัดเยียด" ฉันจะเว้นช่องว่างในการเรียนรู้ของคุณเป็นระยะเพื่อให้คุณลองคิดหาบางสิ่งด้วยตัวเอง
จะดีกว่ามากถ้าคุณคิดออกเอง การตัดสินใจที่ผิดคุณจะพบข้อผิดพลาดด้วยตนเองและแก้ไขด้วยตนเอง แทนที่จะใช้วิธีแก้ปัญหาที่ถูกต้องของผู้อื่นและลอกเลียนแบบอย่างโง่เขลา
ประเภทลำดับได้แก่ (ดูรูปที่ 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 | การส่งคืนรถ; ป้อนโดยการกดปุ่ม Enter (เมื่อป้อนโดยใช้ READ หรือ READLN หมายถึงคำสั่ง “Enter” และไม่ได้วางไว้ในบัฟเฟอร์อินพุต เมื่อเอาต์พุตหมายถึงคำสั่ง “ต่อเอาต์พุตจากจุดเริ่มต้นของบรรทัดปัจจุบัน”) | |
ย่อย | สิ้นสุดไฟล์; ป้อนจากแป้นพิมพ์โดยกด Ctrl-Z; เมื่อเอาต์พุตจะถูกแทนที่ด้วยเครื่องหมายพิเศษ | |
สสส | สิ้นสุดการทำงาน ป้อนจากแป้นพิมพ์โดยกดปุ่ม ESC เมื่อเอาต์พุตจะถูกแทนที่ด้วยเครื่องหมายพิเศษ |
การดำเนินการเชิงสัมพันธ์ รวมถึงฟังก์ชันในตัว สามารถใช้ได้กับประเภท 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 ประกอบด้วยสองฟังก์ชันที่รองรับการทำงานกับประเภทช่วง:
HIGH(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” เนื่องจาก หน่วยนำมีนัยโดยปริยาย แต่ปัญหาใหม่เกิดขึ้นในการแทนตัวเลขแบบมาตรฐาน - เป็นไปไม่ได้ที่จะแทนศูนย์ในรูปแบบนี้
เพื่อให้เครื่องประมวลผลข้อมูลอินพุตใด ๆ จะต้อง "เข้าใจ" ว่าเป็นตัวแปรประเภทใดที่เก็บค่าไว้ ในกรณีที่ไม่มีข้อมูลเกี่ยวกับรูปแบบข้อมูลคอมพิวเตอร์จะไม่สามารถระบุได้ว่าการดำเนินการเฉพาะนั้นได้รับอนุญาตในกรณีใดกรณีหนึ่งหรือไม่ ตัวอย่างเช่น มีความชัดเจนโดยสัญชาตญาณว่าเป็นไปไม่ได้ที่จะยกจดหมายขึ้นยกกำลังหรือใช้ อินทิกรัลของสตริง ดังนั้นผู้ใช้จะต้องกำหนดว่าการดำเนินการใดบ้างที่อนุญาตกับตัวแปรแต่ละตัว
เช่นเดียวกับในภาษาการเขียนโปรแกรมระดับสูงอื่น ๆ ประเภทของตัวแปรใน Pascal ได้รับการปรับให้เหมาะสมเพื่อทำงานประเภทต่าง ๆ มีช่วงค่าและความยาวที่แตกต่างกันในหน่วยไบต์
การแบ่งประเภทของตัวแปร
ประเภทของตัวแปรในภาษา Pascal แบ่งออกเป็นแบบธรรมดาและมีโครงสร้าง ประเภทง่าย ๆ ได้แก่ ประเภทจริงและลำดับ โครงสร้างที่มีโครงสร้างประกอบด้วยอาร์เรย์ เรคคอร์ด ชุด และไฟล์ แยกพอยน์เตอร์ วัตถุ และประเภทขั้นตอนออกจากกัน
มาดูประเภทลำดับและประเภทจริงกัน ประเภทลำดับประกอบด้วยประเภทจำนวนเต็ม 5 ประเภท ประเภทการแจงนับ และประเภทช่วง
ประเภทลำดับ
จำนวนเต็มมี 5 ประเภท ซึ่งแตกต่างกันตามความยาวไบต์และช่วงของค่า
ความยาวของ Byte และ ShortInt คือ 1 ไบต์ ความแตกต่างระหว่างค่าเหล่านี้คือ Byte เก็บเฉพาะค่าที่ไม่ใช่ค่าลบ ในขณะที่ ShortInt ให้คุณจัดเก็บค่าลบ (ตั้งแต่ -128 ถึง +127) ประเภท Word และ Integer มีความสัมพันธ์กันในลักษณะเดียวกัน โดยมีความแตกต่างเพียงอย่างเดียวคือขนาดคือ 2 ไบต์
สุดท้ายนี้ LongInt ช่วยให้คุณสามารถจัดเก็บทั้งค่าลบและค่าบวกโดยใช้ขนาด 4 ไบต์ - อยู่ในกำลังที่ 16 ของมิติตัวเลขที่ด้านใดด้านหนึ่งของศูนย์ ตัวแปรประเภทต่างๆ ใน Pascal มีส่วนช่วยในการแก้ปัญหางานของผู้ใช้อย่างมีประสิทธิภาพ เนื่องจากในแต่ละกรณีอาจต้องใช้ทั้งค่าช่วงเล็กและช่วงกว้าง และอาจมีข้อจำกัดเกี่ยวกับจำนวนหน่วยความจำที่จัดสรรด้วย
สิ่งสำคัญคือต้องเข้าใจว่าศูนย์จะใช้พื้นที่หน่วยความจำมากเท่ากับตัวเลขอื่นๆ ดังนั้น เมื่อสร้างช่วงของค่า จำนวนลบขั้นต่ำในค่าสัมบูรณ์จะมากกว่าค่าบวกหนึ่งค่า เช่น จาก -128 ถึง +127
ตัวแปรที่เป็นของสามารถรับค่า TRUE (จริง) หรือ FALSE (เท็จ) และต้องใช้หน่วยความจำ 1 ไบต์
ประเภท CHAR ช่วยให้คุณสามารถจัดเก็บอักขระต่างๆ ที่มีอยู่ในหน่วยความจำคอมพิวเตอร์ได้ ในเวลาเดียวกัน ในตัวแปรสัญลักษณ์ในภาษาปาสกาล เฉพาะรหัสของเครื่องหมายเท่านั้นที่ถูกจัดเก็บตามรูปแบบกราฟิกที่แสดง
ประเภทจริง
ในบรรดาตัวแปรประเภทต่างๆ ในภาษาปาสคาล มีตัวแปรตัวเลขหลายตัวที่สามารถเขียนเศษส่วนได้ ความแตกต่างระหว่างประเภท Single, Real, Double และ Extended ขึ้นอยู่กับช่วงของค่าที่ยอมรับ จำนวนหลักที่มีนัยสำคัญหลังจุดทศนิยม และขนาดเป็นไบต์
ตามลำดับที่แสดงข้างต้น ตัวแปรแต่ละประเภทจะมีขนาด 4, 6, 8 หรือ 10 ไบต์
อาร์เรย์
ประเภทข้อมูลที่มีโครงสร้างมีความซับซ้อนและช่วยให้คุณสามารถรวมค่าง่ายๆ จำนวนหนึ่งไว้ในตัวแปรเดียวได้ ตัวอย่างที่สำคัญคืออาร์เรย์ซึ่งสามารถกำหนดได้ดังนี้:
String=อาร์เรย์ของถ่าน;
ดังนั้นเราจึงได้ประเภทที่เรียกว่า String ซึ่งช่วยให้เราสามารถกำหนดตัวแปรได้ยาวสูงสุด 100 อักขระ บรรทัดสุดท้ายระบุอาร์เรย์ Y ชนิดสตริงแบบหนึ่งมิติโดยตรง ตัวแปรในภาษาปาสกาลอธิบายได้โดยการวางตัวระบุทางด้านซ้ายและค่าตัวแปรทางด้านขวา หลังจากเครื่องหมายเท่ากับ
ช่วงของดัชนีที่เขียนช่วยให้สามารถเข้าถึงแต่ละองค์ประกอบเฉพาะของอาร์เรย์ได้:
ในกรณีนี้ เราจะอ่านองค์ประกอบที่สองของอาร์เรย์ Y ที่สร้างขึ้นก่อนหน้านี้
ตัวแปรสตริงใน Pascal ก็เป็นกรณีพิเศษของอาร์เรย์หนึ่งมิติเช่นกัน เนื่องจากสตริงคือลำดับของอักขระ เช่น องค์ประกอบของประเภทอักขระ
กระทู้
บันทึกประกอบด้วยหลายช่องที่เต็มไปด้วยข้อมูลทุกประเภทยกเว้นไฟล์ โดยทั่วไปแล้ว ตัวแปรประเภทนี้จะคล้ายกับองค์ประกอบฐานข้อมูล ตัวอย่างเช่น คุณสามารถป้อนชื่อและหมายเลขโทรศัพท์ของบุคคลได้:
พิมพ์ NTel = บันทึก
บรรทัดแรกทางด้านซ้ายระบุชื่อประเภทและทางด้านขวา - บันทึกคำบริการ บรรทัดที่สองประกอบด้วยฟิลด์ที่มีชื่อ บรรทัดที่สามคือหมายเลขโทรศัพท์ คำว่า "สิ้นสุด" หมายความว่าเราได้กรอกข้อมูลทุกช่องที่ต้องการแล้ว และทำให้กระบวนการสร้างบันทึกเสร็จสมบูรณ์
สุดท้าย ในบรรทัดสุดท้าย เรากำหนดตัวแปร One ซึ่งเป็นประเภท NTel
คุณสามารถเข้าถึงทั้งระเบียนโดยรวมและส่วนประกอบแต่ละรายการได้ เช่น one.NAME (เช่น Variable_name. Record_field_name)
ไฟล์
Pascal ช่วยให้คุณสามารถทำงานกับข้อความ ไฟล์ที่พิมพ์และไม่ได้พิมพ์ ซึ่งเป็นลำดับโครงสร้างของส่วนประกอบที่เป็นประเภทเดียวกัน
เมื่ออ่านหรือเขียนลงในไฟล์ สามารถใช้ที่อยู่แบบเต็มหรือแบบสั้นได้:
'C:\โฟลเดอร์\File2.txt'
แบบฟอร์มแบบสั้นจะใช้เมื่อไฟล์ถูกวางในโฟลเดอร์ที่จัดเก็บโปรแกรมที่เข้าถึงไว้ แบบฟอร์มเต็มสามารถใช้ได้ทุกกรณี
คุณสามารถตั้งค่าตัวแปรประเภทไฟล์ได้ดังนี้:
f1: ไฟล์จำนวนเต็ม;
ในการทำงานกับไฟล์ มีการใช้ฟังก์ชันและขั้นตอนต่างๆ ที่เชื่อมโยงตัวแปรกับไฟล์บนดิสก์ เปิดเพื่ออ่าน เขียน และเขียนทับ ปิดเมื่อเสร็จแล้ว ช่วยให้คุณสร้างชื่อใหม่และลบไฟล์ออกจากคอมพิวเตอร์ได้
สรุปแล้ว
หากไม่มีความสามารถในการใช้ตัวแปรประเภทต่างๆ ใน Pascal ผู้ใช้จะไม่สามารถดำเนินการได้แม้แต่งานที่ง่ายที่สุด เพื่อให้โปรแกรมดำเนินการอัลกอริทึมโดยไม่มีข้อผิดพลาด จำเป็นต้องเรียนรู้ทั้งคำฟังก์ชันและไวยากรณ์ เนื่องจากเครื่องสามารถ "เข้าใจ" คำสั่งได้เฉพาะในกรณีที่เขียนด้วยวิธีที่ถูกต้องเท่านั้น
แนวคิดเรื่องข้อมูลเป็นหนึ่งในแนวคิดสำคัญในการเขียนโปรแกรมและในวิทยาการคอมพิวเตอร์โดยทั่วไป กล่าวโดยคร่าวๆ ข้อมูลในวิทยาการคอมพิวเตอร์คือข้อมูลที่อยู่ในสถานะการจัดเก็บ ประมวลผล หรือส่งผ่านในช่วงเวลาหนึ่ง ในเครื่องทัวริง ข้อมูลมีประเภทหนึ่ง และจะขึ้นอยู่กับประเภทของข้อมูลตามลำดับ
ชนิดข้อมูลในภาษา Pascal จะกำหนดค่าที่เป็นไปได้ของตัวแปร ค่าคงที่ นิพจน์ และฟังก์ชัน มีอยู่แล้วภายในและกำหนดเอง ประเภทบิวท์อินจะแสดงในภาษาการเขียนโปรแกรมในตอนแรก และประเภทที่กำหนดเองจะถูกสร้างขึ้นโดยโปรแกรมเมอร์
ตามวิธีการนำเสนอและการประมวลผลประเภทข้อมูลคือ:
- เรียบง่าย
- มีโครงสร้าง
- พอยน์เตอร์
- วัตถุ
- ขั้นตอน
บทความนี้จะพิจารณาเฉพาะประเภทข้อมูลที่ง่ายที่สุด เนื่องจากในช่วงเริ่มต้นของการฝึกอบรม โปรแกรมของคุณจะดำเนินการโดยไม่ต้องใช้ไฟล์และบันทึกได้ง่ายกว่าหากไม่มีตัวแปรจำนวนเต็มหรือสตริง
ประเภทจำนวนเต็ม
ซึ่งรวมถึงประเภทจำนวนเต็มหลายประเภท ซึ่งแตกต่างกันในช่วงของค่า จำนวนไบต์ที่จัดสรรสำหรับการจัดเก็บ และคำที่ใช้ประกาศประเภท
ตารางที่ 13.1. ประเภทข้อมูลจำนวนเต็ม Pascal ฟรี (Lazarus) | พิสัย | ขนาดเป็นไบต์ |
ย่อ | -128…127 | 1 |
จำนวนเต็ม | -32 768…32 767 | 2 |
ยาว | -2 147 483 648…2 147 483 647 | 4 |
ไบต์ | 0…255 | 1 |
คำ | 0…65 535 | 2 |
คุณสามารถประกาศตัวแปรจำนวนเต็มได้ในส่วน Var เช่น:
การดำเนินการทางคณิตศาสตร์และตรรกะทั้งหมดสามารถดำเนินการกับตัวแปรในหมวดหมู่นี้ได้ ยกเว้นการหาร (/) ซึ่งต้องใช้ประเภทจริง อาจใช้ฟังก์ชันและขั้นตอนมาตรฐานบางอย่างด้วย
แบบจริงๆ
ใน Pascal มีประเภทข้อมูลจริงดังต่อไปนี้:
ตารางที่ 13.1. ประเภทข้อมูลจำนวนเต็ม Pascal ฟรี (Lazarus) | พิสัย | หน่วยความจำไบต์ | จำนวนหลัก |
จริง | 2.9e-39 … 1.7e38 | 6 | 11-12 |
เดี่ยว | 1.5e-45 … 3.4e38 | 4 | 7-8 |
สองเท่า | 5.0e-324…1.7e308 | 8 | 15-16 |
ขยาย | 3.4e-4932 … 1.1e493 | 10 | 19-20 |
คอมพ์ | -9.2e63…(9.2e63)-1 | 8 | 19-20 |
การดำเนินการและฟังก์ชันต่างๆ สามารถทำได้มากกว่าจำนวนเต็ม ตัวอย่างเช่น ฟังก์ชันเหล่านี้ส่งคืนผลลัพธ์จริง:
บาป(x) – ไซน์;
cos(x) – โคไซน์;
อาร์คแทน(x) – อาร์กแทนเจนต์;
ln(x) – ลอการิทึมธรรมชาติ;
sqrt(x) – รากที่สอง;
exp(x) – เลขชี้กำลัง;
ประเภทบูลีน
ตัวแปรประเภทข้อมูลบูลีนสามารถรับได้เพียงสองค่าเท่านั้น: จริงและเท็จ ในที่นี้ จริง สอดคล้องกับค่า 1 และเท็จ สอดคล้องกับศูนย์ คุณสามารถประกาศตัวแปรบูลีนได้ดังนี้:
การเปรียบเทียบและการดำเนินการเชิงตรรกะสามารถทำได้กับข้อมูลประเภทนี้: ไม่ใช่ และ หรือ หรือ xor
ประเภทตัวละคร
ชนิดข้อมูลอักขระคือชุดของอักขระที่ใช้ในคอมพิวเตอร์เครื่องใดเครื่องหนึ่ง ตัวแปรประเภทนี้รับค่าของอักขระตัวใดตัวหนึ่งและใช้พื้นที่ 1 ไบต์ในหน่วยความจำคอมพิวเตอร์ คำ ถ่านกำหนดค่าประเภทนี้ มีหลายวิธีในการเขียนตัวแปรอักขระ (หรือค่าคงที่):
- เป็นอักขระตัวเดียวที่อยู่ในเครื่องหมายอะพอสทรอฟี: 'W', 'V', 'p';
- โดยระบุรหัสอักขระซึ่งค่าจะต้องอยู่ในช่วงตั้งแต่ 0 ถึง 255
- โดยใช้โครงสร้าง ^K โดยที่ K คือโค้ดอักขระควบคุม ค่าของ K ต้องมากกว่าโค้ดอักขระควบคุมที่เกี่ยวข้อง 64
การดำเนินการเชิงสัมพันธ์และฟังก์ชันต่อไปนี้ใช้ได้กับค่าของประเภทข้อมูลอักขระ:
ซัคซี(x)- ส่งคืนอักขระถัดไป
เปร็ด(x)- ส่งคืนอักขระก่อนหน้า;
ออร์ด(x)- ส่งกลับค่าของรหัสอักขระ
ช(x)- ส่งคืนค่าของสัญลักษณ์ด้วยรหัส
อัพเคส(x)- แปลงตัวอักษรจากช่วง 'a'..'z' เป็นตัวพิมพ์ใหญ่
เพื่อให้ทำงานอย่างมีประสิทธิภาพกับประเภทอักขระ ฉันขอแนะนำให้ใช้ .
ประเภทสตริง
สตริงในภาษาปาสกาลคือลำดับของอักขระที่อยู่ในเครื่องหมายอะพอสทรอฟี และแสดงด้วยคำว่า สตริง- จำนวนอักขระ (ความยาวบรรทัด) ต้องไม่เกิน 255 ตัว หากไม่ได้ระบุความยาวของบรรทัด ระบบจะกำหนดเป็น 255 อักขระโดยอัตโนมัติ รูปแบบทั่วไปของการประกาศตัวแปรสตริงมีลักษณะดังนี้:
วาร์<имя_переменной>:สตริง[<длина строки>];
อักขระแต่ละตัวในบรรทัดมีดัชนี (ตัวเลข) ของตัวเอง ดัชนีของไบต์แรกคือ 0 แต่ไม่ได้เก็บอักขระตัวแรก แต่เก็บความยาวของสตริงทั้งหมด ซึ่งหมายความว่าตัวแปรประเภทนี้จะใช้พื้นที่มากกว่าจำนวนตัวแปรในนั้น 1 ไบต์ จำนวนอักขระตัวแรกคือ 1 เช่น หากเรามีสตริง S='stroka' ดังนั้น S=s; ในบทเรียนใดบทเรียนหนึ่งต่อไปนี้ เราจะพูดถึงประเภทข้อมูลสตริงโดยละเอียด
ชนิดข้อมูลที่แจกแจง
ชนิดข้อมูลที่แจกแจงแสดงถึงตัวระบุในจำนวนที่จำกัด ตัวระบุเหล่านี้จะอยู่ในวงเล็บและคั่นด้วยเครื่องหมายจุลภาค
พิมพ์วัน=(วันจันทร์ วันอังคาร วันพุธ วันพฤหัสบดี วันศุกร์ วันเสาร์ วันอาทิตย์);
ตัวแปร A สามารถรับเฉพาะค่าที่ระบุในส่วนประเภทเท่านั้น คุณยังสามารถประกาศตัวแปรประเภทแจกแจงได้ในส่วน Var:
วาร์ A: (วันจันทร์ วันอังคาร);
การดำเนินการเชิงสัมพันธ์ใช้ได้กับประเภทนี้ และจะมีการกำหนดไว้ล่วงหน้าในวันจันทร์นั้น เมื่อจำเป็นต้องระบุช่วงของค่า ในสถานการณ์เช่นนี้ จะใช้ชนิดข้อมูลช่วงเวลา การก่อสร้างที่ใช้ในการประกาศคือ ม..น, ที่ไหน มคือค่าต่ำสุด (เริ่มต้น) และ n– สูงสุด (สุดท้าย); โดยที่ m และ n เป็นค่าคงที่ ซึ่งอาจเป็นจำนวนเต็ม อักขระ การแจงนับ หรือประเภทบูลีน ค่าของประเภทช่วงเวลาสามารถอธิบายได้ทั้งในส่วนประเภทและในส่วนคำอธิบายตัวแปร มุมมองทั่วไป: พิมพ์<имя_типа> = <мин. значение>..<макс. значение>;ชนิดข้อมูลช่วงเวลา