วิธีการตั้งค่าประเภทของตัวแปรในโปรแกรม 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

อ่าน; จบ.

ฟังก์ชั่นมาตรฐาน

  1. ต่ำกำหนดค่าต่ำสุดของชนิดข้อมูล ฟันต์สเกีย
  2. สูงกำหนดค่าสูงสุด ด้วยฟังก์ชั่น
  3. เขียนลอ่านลน
  4. คุณรู้จักกันมาบ้างแล้ว เราจะพูดถึงรายละเอียดเพิ่มเติมเกี่ยวกับรูทีนย่อย (ขั้นตอนและฟังก์ชัน) ในส่วนที่เกี่ยวข้อง- ตัวเลขที่ขึ้นต้นด้วย % ตัวอย่างเช่น เลขฐานสอง %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 ไบต์ในหน่วยความจำคอมพิวเตอร์ คำ ถ่านกำหนดค่าประเภทนี้ มีหลายวิธีในการเขียนตัวแปรอักขระ (หรือค่าคงที่):

    1. เป็นอักขระตัวเดียวที่อยู่ในเครื่องหมายอะพอสทรอฟี: 'W', 'V', 'p';
    2. โดยระบุรหัสอักขระซึ่งค่าจะต้องอยู่ในช่วงตั้งแต่ 0 ถึง 255
    3. โดยใช้โครงสร้าง ^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 เป็นค่าคงที่ ซึ่งอาจเป็นจำนวนเต็ม อักขระ การแจงนับ หรือประเภทบูลีน ค่าของประเภทช่วงเวลาสามารถอธิบายได้ทั้งในส่วนประเภทและในส่วนคำอธิบายตัวแปร

    มุมมองทั่วไป:

    พิมพ์<имя_типа> = <мин. значение>..<макс. значение>;



    มีคำถามอะไรไหม?

    แจ้งการพิมพ์ผิด

    ข้อความที่จะส่งถึงบรรณาธิการของเรา: