บทคัดย่อ: ชนิดข้อมูลในภาษาปาสคาล จำนวนเต็มในภาษาปาสคาล

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

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

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

มีข้อมูลหลายประเภทในภาษาการเขียนโปรแกรม Pascal นอกจากนี้ผู้ใช้สามารถกำหนดประเภทของตนเองได้

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

ประเภทตัวแปร จำนวนเต็มสามารถเชื่อมโยงกับค่าจำนวนเต็มโดยทั่วไปในช่วง -32768 ถึง 32767 ปาสคาลมีประเภทจำนวนเต็มอื่น ๆ (ไบต์, longint)

ประเภทตัวแปร จริงเก็บจำนวนจริง (เศษส่วน)

ตัวแปร บูลีน(บูลีน) ชนิด (บูลีน) สามารถรับได้เพียงสองค่าเท่านั้น - จริง(1, จริง) หรือ เท็จ(0, เท็จ)

ประเภทตัวละคร (ตัวอักษร)สามารถรับค่าจากลำดับอักขระเฉพาะได้

ประเภทช่วงเวลากำหนดโดยผู้ใช้และสร้างขึ้นจากประเภทลำดับเท่านั้น แสดงถึงชุดย่อยของค่าในช่วงเฉพาะ

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

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

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

สตริงเป็นลำดับของตัวอักษร นอกจากนี้ จำนวนอักขระเหล่านี้ต้องรวมกันไม่เกิน 255 ตัว ข้อจำกัดนี้เป็นคุณลักษณะเฉพาะของ Pascal

บันทึกเป็นโครงสร้างที่ประกอบด้วยส่วนประกอบจำนวนคงที่ที่เรียกว่าฟิลด์ ข้อมูลในฟิลด์ต่างๆ ของเรกคอร์ดอาจมีประเภทต่างกันได้

ชุดเป็นตัวแทนของชุดขององค์ประกอบจำนวนเท่าใดก็ได้ แต่เป็นประเภทที่แจกแจงเหมือนกัน

ไฟล์สำหรับ Pascal เป็นลำดับของข้อมูลประเภทเดียวกันที่จัดเก็บไว้ในอุปกรณ์หน่วยความจำภายนอก (เช่น ฮาร์ดไดรฟ์)

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

บทเรียนครอบคลุมถึงประเภทข้อมูลมาตรฐานหลักในภาษาปาสคาล แนวคิดของตัวแปรและค่าคงที่ อธิบายวิธีการทำงานกับการดำเนินการทางคณิตศาสตร์

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

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

มาดูประเภทข้อมูลที่พบบ่อยที่สุดใน Pascal

ชนิดข้อมูลจำนวนเต็มในภาษาปาสคาล

พิมพ์ พิสัย หน่วยความจำที่ต้องการ (ไบต์)
ไบต์ 0..255 1
ย่อ -128..127 1
จำนวนเต็ม -32768.. 32767 2
คำ 0..65535 2
ยาว -2147483648..2147483647 4

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

ตัวอย่างวิธีการอธิบายตัวแปร (ประกาศ) ในภาษาปาสคาล:

โปรแกรม a1; var x,y:จำนวนเต็ม; (ชนิดจำนวนเต็ม) myname:string; (ประเภทสตริง) เริ่มต้น x:=1; ย:=x+16; myname:="ปีเตอร์"; writeln("ชื่อ: ",ชื่อของฉัน, ", อายุ: ", y) สิ้นสุด

ผลลัพธ์:
ชื่อ : ปีเตอร์ อายุ : 17 ปี

ความเห็นในภาษาปาสคาล

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

ภารกิจที่ 3ประชากรของมอสโก = 9,000,000 คน ประชากรของ New Vasyuki คือ b=1,000 คน เขียนโปรแกรมที่กำหนดความแตกต่างของจำนวนผู้อยู่อาศัยระหว่างสองเมือง ใช้ตัวแปร

ชนิดข้อมูลจริงในภาษาปาสคาล

จำนวนจริงในภาษาปาสคาลและในการเขียนโปรแกรมโดยทั่วไปเป็นชื่อของเศษส่วน

พิมพ์ พิสัย หน่วยความจำที่ต้องการ (ไบต์)
จริง 2.9 * 10E-39 .. 1.7 * 10E38 6
เดี่ยว 1.5*10 อี-45 .. 3.4 * 10E38 4
สองเท่า 5 * 10E-324 .. 1.7 * 10E308 8
ขยาย 1.9 * 10E-4951 .. 1.1 * 10E4932 10

ประเภทจริงใน Pascal เป็นประเภทจริงที่ใช้บ่อยที่สุด

ข้างต้นได้ถูกนำเสนอ ชนิดข้อมูลอย่างง่ายในภาษา Pascal ซึ่งรวมถึง:

  • ลำดับ
  • ทั้งหมด
  • ตรรกะ
  • อักขระ
  • แสดงรายการได้
  • ช่วงเวลา
  • จริง

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

  • รูปแบบจะใช้ตัวเลขตัวใดตัวหนึ่งซึ่งระบุจำนวนตำแหน่งที่จัดสรรให้กับตัวเลขนี้ในรูปแบบเลขชี้กำลัง
  • หน้า:=1234.6789; เขียน(p:6:2); (1234.68)

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

    ค่าคงที่ในภาษาปาสคาล

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

    การประกาศค่าคงที่ในภาษาปาสคาลเกิดขึ้นก่อนการประกาศตัวแปร (ก่อนคำบริการ var) และมีลักษณะดังนี้:

    ตัวอย่างของคำอธิบายคงที่ในภาษาปาสคาล:

    1 2 3 4 5 6 ค่าคงที่ x= 17 ;

    var myname: สตริง ;

    เริ่มต้น myname: = "ปีเตอร์" ;

    writeln("name: ", myname, ", age: ", x) จบ


    ค่าคงที่ x=17; var myname:สตริง; เริ่มต้น myname:="ปีเตอร์"; writeln("name: ",myname, ", age: ", x) จบ

    ผลลัพธ์ "สวยงาม" ของจำนวนเต็มและจำนวนจริง

    1. เพื่อให้แน่ใจว่าหลังจากแสดงค่าของตัวแปรแล้วจะมีการเยื้องเพื่อให้ค่าไม่ "รวม" เข้าด้วยกันเป็นเรื่องปกติที่จะระบุผ่านโคลอนว่าต้องระบุอักขระจำนวนเท่าใดเพื่อแสดง ค่า:
    2. การดำเนินการทางคณิตศาสตร์ในภาษาปาสคาล
    3. ลำดับการดำเนินงาน

    การประเมินนิพจน์ในวงเล็บ

    การคูณ การหาร div mod จากซ้ายไปขวา

    • การบวกและการลบจากซ้ายไปขวา
    • ขั้นตอนและฟังก์ชันทางคณิตศาสตร์มาตรฐานปาสคาล

      ที่นี่คุ้มค่าที่จะดูรายละเอียดเพิ่มเติมเกี่ยวกับการดำเนินการทางคณิตศาสตร์บางอย่าง

      การดำเนินการ inc ในภาษา Pascal ซึ่งมีการเพิ่มขึ้นอย่างเด่นชัด เป็นขั้นตอนมาตรฐานของ Pascal ซึ่งหมายถึงการเพิ่มขึ้นทีละหนึ่ง
      ตัวอย่างการดำเนินการ inc:

    • ขั้นตอน Dec ใน Pascal ทำงานในลักษณะเดียวกัน: Dec(x) - ลดลง x คูณ 1 (ลดลง) หรือ Dec(x,n) - ลดลง x คูณ n
    • ตัวดำเนินการ abs แสดงถึงโมดูลัสของตัวเลข มันทำงานเช่นนี้:
    • ก: =- 9;

      ข:=หน้าท้อง(ก) ;

    • (ข=9)
    • ก:=-9; ข:=หน้าท้อง(ก); (ข=9)
    • ตัวดำเนินการ div ใน Pascal มักใช้ เนื่องจากงานจำนวนหนึ่งเกี่ยวข้องกับการดำเนินการของส่วนทั้งหมด
    • ส่วนที่เหลือของการหารหรือตัวดำเนินการ mod ใน Pascal ก็ขาดไม่ได้ในการแก้ปัญหาหลายประการ

      สิ่งที่น่าสังเกตคือฟังก์ชันคี่มาตรฐานของ Pascal ซึ่งกำหนดว่าจำนวนเต็มเป็นเลขคี่หรือไม่ นั่นคือ คืนค่าเป็นจริงสำหรับเลขคี่ เท็จสำหรับเลขคู่

    • ตัวอย่างการใช้ฟังก์ชันคี่: var x:จำนวนเต็ม; เริ่มต้น x:=3; writeln(sqr(x)); (คำตอบ 9) จบ
    • การดำเนินการของการยกกำลังในภาษาปาสคาล

      หายไปเช่นนี้ แต่หากต้องการเพิ่มจำนวนให้เป็นกำลัง คุณสามารถใช้ฟังก์ชัน exp ได้

      สูตรคือ: exp(ln(a)*n) โดยที่ a คือตัวเลข n คือดีกรี (a>0)

    อย่างไรก็ตาม ในคอมไพเลอร์ Pascal abc การยกกำลังนั้นง่ายกว่ามาก: var x:จำนวนเต็ม; เริ่ม x:=9; writeln(sqrt(x)); (คำตอบ 3) สิ้นสุด
    ภารกิจที่ 4

    ทราบขนาดของกล่องไม้ขีด: ความสูง - 12.41 ซม., ความกว้าง - 8 ซม., ความหนา - 5 ซม. คำนวณพื้นที่ฐานของกล่องและปริมาตร(S=กว้าง*หนา, V=พื้นที่*สูง)

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

    เค

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


    พิมพ์ด้านล่างนี้เป็นตารางสองตารางที่มีประเภทจำนวนเต็ม ก่อนอื่นเราจะเขียนออกมาประเภทจำนวนเต็มลงนาม
    ย่อ1 -128 ... 127
    ไบต์2 -32768 ... 32767
    ช่วงของค่า4 -2147483648 ... 2147483647
    ตัวเล็ก8 -9223372036854775808 ... 9223372036854775807

    จำนวนเต็ม, ลองจินต์ int64:


    พิมพ์ด้านล่างนี้เป็นตารางสองตารางที่มีประเภทจำนวนเต็ม ก่อนอื่นเราจะเขียนออกมาประเภทจำนวนเต็มลงนาม
    ไบต์1 0 ... 255
    คำ2 0 ... 65535
    และสิ่งนี้4 0 ... 4294967295
    ประเภทจำนวนเต็มที่ไม่ได้ลงนาม8 0 ... 18446744073709551615

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

    ในทำนองเดียวกัน ในตารางที่สอง (จำนวนเต็มที่ไม่ใช่ลบในภาษาปาสคาล) ยังมีประเภทจำนวนเต็มคำพ้องความหมาย 4 ไบต์สองประเภท ได้แก่ คำยาว และ พระคาร์ดินัล ดังนั้นให้ใช้อย่างใดอย่างหนึ่ง

    นอกจากนี้คุณยังสามารถสังเกตได้ว่าหากเราย้ายตัวเลขของตารางแรกไปทางด้านขวาอย่างมีเงื่อนไขโดยสัมพันธ์กับศูนย์ (เลื่อนช่วงเวลาไปทางขวาเพื่อให้จำนวนขั้นต่ำคือ 0) จากนั้นเราจะได้ช่วงเวลาของจำนวนเต็มจากตารางที่สองที่วางอยู่ ในแถวที่เกี่ยวข้อง ดังนั้น หากในประเภท shortint ขนาด 1 ไบต์ เราบวก 128 เข้ากับขอบเขตด้านซ้ายและขวา เราจะได้ประเภทไบต์ (0..255) ถ้าในประเภท 2 ไบต์ smallint เราเพิ่ม 32768 เข้าไปในขอบเขต เราจะได้คำประเภท 2 ไบต์ที่ไม่ได้ลงนามที่สอดคล้องกัน (0..65535) เป็นต้น

    ทั้งหมดนี้เกิดขึ้นเพราะในประเภทจำนวนเต็มที่ไม่ได้ลงนาม ตัวเลขสามารถแบ่งออกเป็นสองส่วนได้พอดี คือ ครึ่งหนึ่งของตัวเลขเป็นส่วนลบ และครึ่งหนึ่งเป็นส่วนบวก เหตุใดในตัวเลขที่เซ็นชื่อ ขอบซ้ายในค่าสัมบูรณ์ 1 จึงมากกว่าขอบขวา? – คุณถาม ตัวอย่างเช่น ในประเภท shortint ค่าต่ำสุดคือ -128 ในขณะที่ค่าสูงสุดคือ 127 เท่านั้น (น้อยกว่าแบบโมดูโล 1) นี่เป็นเพราะว่าด้านขวามี 0 ด้วย และคุณต้องรู้และจำอันนี้

    แล้วเหตุใดจำนวนเต็มในภาษาปาสคาลจึงต้องถูกแบ่งออกเป็นหลายประเภท? ทำไมไม่ลองผ่านประเภทจำนวนเต็มที่ใหญ่ที่สุดใน PascalABC.Net และ Free Pascal – int64 – ซึ่งมีค่าเกือบ 9.5 ล้านล้าน (!) โดยมีทั้งลบและบวก ใช่ ด้วยเหตุผลซ้ำซาก (?) - ประหยัดหน่วยความจำ หากคุณต้องการเพิ่มตัวเลขบวกหนึ่งไบต์เล็กๆ สองตัว (0..255) และคุณอธิบายตัวเลขเหล่านี้เป็น int64 (8 ไบต์) การดำเนินการนี้ต้องใช้หน่วยความจำเพิ่มขึ้น 8 เท่า และหากโปรแกรมมีขนาดใหญ่และมีตัวแปรจำนวนมาก การประหยัดหน่วยความจำก็จะเพิ่มขึ้นอย่างรวดเร็ว ยิ่งไปกว่านั้น ไม่มีประโยชน์ในการใช้ประเภทจำนวนเต็มแบบมีเครื่องหมาย หากปัญหาเกี่ยวข้องกับปริมาณ เช่น ความยาว มวล ระยะทาง เวลา ฯลฯ

    ในส่วนหนังสือปัญหาอับราฮัมยานของไซต์ (ส่วนย่อยจำนวนเต็ม) ให้สังเกตการใช้จำนวนเต็มประเภทต่างๆ ในภาษาปาสคาล

    หน่วยงานกลางเพื่อการศึกษา

    เชิงนามธรรม

    "ประเภทข้อมูลในภาษาปาสคาล"

    1. ประเภทข้อมูล

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

    โดยทั่วไป ภาษา Object Pascal มีลักษณะเป็นโครงสร้างแยกย่อยของประเภทข้อมูล (รูปที่ 1.1) ภาษาเป็นกลไกในการสร้างประเภทใหม่ ซึ่งจะทำให้จำนวนประเภทที่ใช้ในโปรแกรมมีมากตามที่ต้องการ

    ข้อมูลที่ประมวลผลในโปรแกรมแบ่งออกเป็นตัวแปร ค่าคงที่ และตัวอักษร:

    ค่าคงที่ เป็นตัวแทนข้อมูลที่มีค่ากำหนดไว้ในส่วนการประกาศค่าคงที่และไม่เปลี่ยนแปลงระหว่างการทำงานของโปรแกรม

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

    ตัวอักษร ไม่มีตัวระบุและแสดงเป็นค่าในข้อความโปรแกรมโดยตรง

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

    บทนี้และบทต่อๆ ไปอีกสี่บทจะให้คำอธิบายโดยละเอียดของแต่ละประเภท

    1.1 ประเภทง่าย ๆ

    ประเภทอย่างง่ายได้แก่ประเภทลำดับ จริง และวันที่และเวลา

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

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

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

    1.1.1 ประเภทลำดับ

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


    ข้าว. 1.1 - โครงสร้างชนิดข้อมูล

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

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

    เปร็ด(x)- ส่งกลับค่าก่อนหน้าของประเภทลำดับ (ค่าที่สอดคล้องกับเลขลำดับ ord(x) -1 เช่น ord(pred(x)) = ord(x) - 1;

    สำเร็จ(x)- ส่งกลับค่าถัดไปของประเภทลำดับ ซึ่งสอดคล้องกับเลขลำดับ ord(x) +1 เช่น ord(Succ(x)) = ord(x) + 1

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

    จากนั้นฟังก์ชัน PRED(c) จะส่งกลับอักขระ "4" และฟังก์ชัน SUCC(c) จะส่งกลับอักขระ "6"

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

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

    ตารางที่ 1.1 - ประเภทจำนวนเต็ม

    ชื่อ ความยาว, ไบต์ ประเภทจำนวนเต็มลงนาม
    พระคาร์ดินัล 4 0. .. 2 147 483 647
    ไบต์ 1 0...255
    สั้น 1 -128...+127
    สมอลท์ 2 -32 768...+32 767
    คำ 2 0...65 535
    จำนวนเต็ม 4
    ลองจินต์ 4 -2 147 483 648...+2 147 483 647
    Int64 8 -9*1018...+9*1018
    คำยาว 4 0. . .4 294 967 295

    ประเภท คำยาวและ Int64เปิดตัวครั้งแรกในเวอร์ชัน 4 และประเภทต่างๆ สมอลท์และ พระคาร์ดินัลไม่มีใน Delphi 1. ประเภท จำนวนเต็มสำหรับเวอร์ชันนี้ใช้ขนาด 2 ไบต์และมีช่วงค่าตั้งแต่ -32768 ถึง +32767 เช่นเดียวกันกับ สมอลท์ .

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

    รายการขั้นตอนและฟังก์ชันที่ใช้กับประเภทจำนวนเต็มแสดงไว้ในตาราง 1.2. ตัวอักษร b, s, w, i, l แสดงถึงสำนวนประเภทต่อไปนี้: ไบต์ , Shortint, Word, จำนวนเต็ม และ Longint ,

    x คือนิพจน์ประเภทใดๆ เหล่านี้ ตัวอักษร vb, vs, vw, vi, vl, vx แสดงถึงตัวแปรประเภทที่เกี่ยวข้อง พารามิเตอร์ทางเลือกจะแสดงอยู่ในวงเล็บเหลี่ยม

    ตารางที่ 1.2 - ขั้นตอนมาตรฐานและฟังก์ชันที่ใช้กับทุกประเภท

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

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

    ประเภทบูลีน - ประเภทลอจิคัล ได้แก่ บูลีน, ByteBool, บูล, เวิร์ดบูลและ ลองบูล- ใน Pascal มาตรฐาน จะมีการกำหนดเฉพาะประเภทเท่านั้น บูลีนประเภทลอจิคัลอื่น ๆ จะถูกนำมาใช้ใน Object Pascal เพื่อความเข้ากันได้กับ Windows: ประเภท บูลีนและ ByteBoolแต่ละอันใช้หนึ่งไบต์ บูลและ เวิร์ดบูล- ละ 2 ไบต์ ลองบูล- 4 ไบต์ ค่าบูลีนสามารถเป็นหนึ่งในค่าคงที่ที่ประกาศไว้ล่วงหน้าเป็นเท็จหรือจริง

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

    Ord (True) = +1 ในขณะที่ประเภทอื่นๆ ( บูล, เวิร์ดบูลฯลฯ)

    Ord(True) = -1 ดังนั้นตัวดำเนินการประเภทนี้ควรใช้ด้วยความระมัดระวัง! ตัวอย่างเช่น สำหรับเวอร์ชัน Delphi 6 คำสั่ง showMessage(" --- ") ที่ปฏิบัติการได้ในลูปต่อไปนี้ สำหรับจะไม่มีวันถูกดำเนินการ:

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

    ShowMessage("--);

    หากเราแทนที่พารามิเตอร์ลูปประเภท L ในตัวอย่างก่อนหน้าด้วย บูลีนลูปจะทำงานและข้อความจะปรากฏบนหน้าจอสองครั้ง [สำหรับ Delphi เวอร์ชัน 1 และ 2 ord (True) =+1 สำหรับประเภทบูลีนใดๆ]

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

    สำหรับการเข้ารหัสใน Windows จะใช้รหัส ANSI (ตั้งชื่อตาม American National Standard Institute ซึ่งเป็นสถาบันมาตรฐานของอเมริกาที่เสนอรหัสนี้) อักขระ PC ครึ่งแรกที่มีรหัส 0... 127 สอดคล้องกับตารางที่ 1.3 อักขระครึ่งหลังที่มีรหัส 128...255 จะแตกต่างกันไปตามแบบอักษรต่างๆ แบบอักษรมาตรฐานของ Windows Arial Cyr, Courier New Cyr และ Times New Roman ใช้รหัส 64 ตัวสุดท้าย (ตั้งแต่ 192 ถึง 256) เพื่อแสดงอักขระซีริลลิก (ไม่มีตัวอักษร "ё" และ "Ё"): "A"... "Z" เป็นค่าที่เข้ารหัส 192..223, “a”... “i” - 224...255 สัญลักษณ์ “Ё” และ “е” มีรหัส 168 และ 184 ตามลำดับ

    ตารางที่ 1.3 - การเข้ารหัสอักขระตามมาตรฐาน ANSI

    รหัส เครื่องหมาย รหัส. เครื่องหมาย รหัส. เครื่องหมาย รหัส เครื่องหมาย
    0 น.ล 32 บี.แอล. 64 @ 96 "
    1 ซอน 33 ! 65 97
    2 เอสทีเอ็กซ์ 34 66 ใน 98
    3 อีทีเอ็กซ์ 35 # 67 กับ 99 กับ
    4 อีโอที 36 $ 68 ดี 100
    5 ENQ 37 % 69 อี 101
    6 อ๊ากก 38 & 70 เอฟ 102
    7 เบล 39 " 71 103
    8" บี.เอส. 40 ( 72 เอ็น 104 ชม.
    9 HT 41 ) 73 ฉัน 105 ฉัน
    10 แอลเอฟ 42 * 74 เจ 106 เจ
    11 เวอร์มอนต์ 43 + 75 ถึง 107
    12 เอฟเอฟ 44 เอฟ 76 108 1
    13 CR 45 - 77 109
    14 ดังนั้น 46 78 เอ็น 110 n
    15 เอสไอ 47 / 79 0 111 โอ
    16 เดล 48 0 80 112
    17 ดีซี1 49 1 81 ถาม 113 ถาม
    18 ดีซี2 50 2 82 114
    19 ดีซี3 51 3 83 115
    20 ดีซี 4 52 4 84 116 ที
    21 นาเค 53 5 85 คุณ 117 คุณ
    22 ซิน 54 6 86 วี 118 โวลต์
    23 อีทีบี 55 7 87 119
    24 สามารถ 56 8 88 เอ็กซ์ 120 ภารกิจที่ 6
    25 อี.เอ็ม. 57 9 89 121 คุณ
    26 ย่อย 58 : 90 ซี .122 z
    27 เอสซี 59 ; 91 ที 123 {
    28 เอฟเอส 60 < 92 \ 124 1
    29 จี.เอส. 61 = 93 ] 125 }
    30 อาร์.เอส. 62 > 94 126 ~
    31 เรา 63 เอฟ 95 127

    อักขระที่มีรหัส 0...31 หมายถึงรหัสบริการ หากใช้รหัสเหล่านี้ในข้อความอักขระของโปรแกรม จะถือว่าเป็นช่องว่าง

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

    พื้นฐานของการเขียนโปรแกรม

    ความรู้เบื้องต้นเกี่ยวกับปาสคาล ชนิดข้อมูล การดำเนินงาน

    ตัวอักษรภาษาปาสคาล

    ภาษาธรรมชาติใดๆ ก็ตามประกอบด้วยองค์ประกอบต่างๆ เช่น สัญลักษณ์ คำ วลี และประโยค ภาษาโปรแกรมยังมีองค์ประกอบที่คล้ายกัน: สัญลักษณ์ คำ สำนวน (วลี) ตัวดำเนินการ (ประโยค)

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

    อักษรปาสคาลประกอบด้วย:

    1.อักษรตัวพิมพ์ใหญ่และตัวพิมพ์เล็กของอักษรละตินซึ่งประกอบด้วยอักขระต่อไปนี้:

    A B C D E F G H I J K L M N O P Q R S T U V W X Y Z - ตัวพิมพ์ใหญ่;

    A b c d e f g h i j k l m n o p q r s t u v w x y z - ตัวอักษรตัวพิมพ์เล็ก;

    2. เลขอารบิกทศนิยม: 0 1 2 3 4 5 6 7 8 9;

    3. เลขฐานสิบหก (สร้างจากเลขฐานสิบและตัวอักษรตั้งแต่ A ถึง F)

    4. ตัวอักษรตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก 32 ตัวของตัวอักษรรัสเซีย

    5. ตัวอักษรพิเศษ:

    การผสมอักขระพิเศษสามารถสร้างอักขระผสมได้:

    : = งานที่ได้รับมอบหมาย;

    < >ไม่เท่ากัน;

    >= มากกว่าหรือเท่ากับ;

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

    ช่วงของค่า

    (* *) หรือ ( ) - ความคิดเห็น

    โครงสร้างโปรแกรมปาสคาล

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

    โปรแกรม Pascal ใดๆ สามารถประกอบด้วยบล็อกต่อไปนี้ (ส่วนเสริมจะมีเครื่องหมายวงเล็บเหลี่ยมต่อจากนี้):

    โปรแกรม<имя_программы>;

    [ใช้<имена_подключаемых_модулей>;]

    [ ฉลาก<список_меток>;]

    [ต่อ<имя_константы> = <значение_константы>;]

    [ พิมพ์<имя_типа> = <определение_типа>;]

    [วาร์<имя_переменной> : <тип_переменной>;]

    [ ขั้นตอน<имя_процедуры> <описание_процедуры>;]

    [ การทำงาน<имя_функции> <описание_функции>;]

    start (จุดเริ่มต้นของเนื้อหาหลักของโปรแกรม)

    <операторы>

    จบ. (* ส่วนท้ายของเนื้อหาหลักของโปรแกรม *)

    คอมไพเลอร์ภาษา Pascal เวอร์ชันใหม่กว่าไม่จำเป็นต้องระบุชื่อโปรแกรมอีกต่อไป ซึ่งก็คือบรรทัดโปรแกรม<имя_программы>- สามารถละเว้นได้ แต่จะเป็นไปได้ก็ต่อเมื่อโปรแกรมทั้งหมดอยู่ในไฟล์โมดูลเดียว หากโปรแกรมประกอบด้วยโมดูลแยกกันหลายส่วน แต่ละโมดูลจะต้องมีส่วนหัว (โปรแกรมหรือหน่วย)

    ส่วนตัวเลือกใดๆ ที่ระบุไว้สามารถปรากฏได้มากกว่าหนึ่งครั้งในข้อความโปรแกรม ลำดับทั่วไปของส่วนเหล่านั้นสามารถเปลี่ยนแปลงได้เช่นกัน แต่ต้องปฏิบัติตามกฎหลักของภาษาปาสคาลเสมอ: ก่อนที่จะใช้วัตถุ จะต้องประกาศและอธิบายก่อน

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

    คำสั่งคอมไพเลอร์

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

    ตัวอย่างเช่น บรรทัด ($I-,Q+) ปิดใช้งานการตรวจสอบ I/O แต่เปิดใช้งานการควบคุมโอเวอร์โฟลว์การคำนวณ

    ตัวระบุ

    ชื่อที่กำหนดให้กับอ็อบเจ็กต์โปรแกรม (ค่าคงที่ ชนิด ตัวแปร ฟังก์ชันและโพรซีเดอร์ และทั้งโปรแกรม) เรียกว่า ตัวระบุ ประกอบด้วยตัวเลข ตัวอักษรละติน และเครื่องหมาย "_" (ขีดล่าง) เท่านั้น อย่างไรก็ตาม ตัวเลขไม่สามารถขึ้นต้นชื่อได้ ตัวระบุสามารถมีความยาวเท่าใดก็ได้ แต่หากชื่อสองชื่อมีอักขระ 63 ตัวแรกเหมือนกัน ชื่อนั้นจะถือว่าเหมือนกัน

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

    ต่อไปนี้คือรายการคำสงวนที่พบบ่อยที่สุด:

    การใช้งานอาร์เรย์ shl

    สตริงอินเตอร์เฟสเคส

    ป้ายกำกับ const แล้ว

    การใช้ตัวชี้ไฟล์

    ขั้นตอนไกล var

    สำหรับโปรแกรมในขณะนั้น

    บันทึกส่งต่อด้วย

    ฟังก์ชั่นทำซ้ำ xor

    ตัวแปรและชนิดข้อมูล

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

    ชนิดข้อมูลเป็นลักษณะของช่วงของค่าที่ตัวแปรที่อยู่ในประเภทข้อมูลนั้นสามารถรับได้

    ตัวแปรทั้งหมดที่ใช้ในโปรแกรมจะต้องอธิบายไว้ในส่วน var พิเศษโดยใช้เทมเพลตต่อไปนี้:

    var<имя_переменной_1> [, <имя_переменной_2, _>] : <имя_типа_1>;

    <имя_переменной_3> [, <имя_переменной_4, _>] : <имя_типа_2>;

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

    ค่าคงที่

    ค่าคงที่คือวัตถุที่ทราบค่าก่อนที่โปรแกรมจะเริ่มทำงาน

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

    ค่าคงที่ในภาษาปาสคาลมีสามประเภท:

    ค่าคงที่ที่ไม่มีชื่อ (ตัวเลขและตัวเลข สัญลักษณ์และสตริง ชุด)

    ชื่อค่าคงที่ที่ไม่ได้พิมพ์

    ค่าคงที่ที่พิมพ์ชื่อ

    ค่าคงที่ที่ไม่มีชื่อ

    ค่าคงที่ที่ไม่มีชื่อไม่มีชื่อ ดังนั้นจึงไม่จำเป็นต้องประกาศ

    ประเภทของค่าคงที่ที่ไม่มีชื่อจะถูกกำหนดโดยอัตโนมัติตามค่าเริ่มต้น:

    ลำดับของตัวเลขใด ๆ (อาจนำหน้าด้วยเครื่องหมาย "-" หรือ "+" หรือแบ่งออกเป็นจุดเดียว) คอมไพเลอร์จะรับรู้ว่าเป็นค่าคงที่ที่ไม่มีชื่อ - ตัวเลข (จำนวนเต็มหรือจำนวนจริง)

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

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

    นอกจากนี้ ยังมีค่าคงที่พิเศษสองค่าจริงและเท็จที่เกี่ยวข้องกับชนิดข้อมูลบูลีน

    ตัวอย่างของการใช้ค่าคงที่ที่ไม่มีชื่อรวมถึงตัวดำเนินการต่อไปนี้:

    real2:= 12.075 + x;

    string4:= "abc" + string44;

    set5:= * set55;

    boolean6:= จริง;

    ค่าคงที่ที่ไม่ได้พิมพ์

    ค่าคงที่ที่มีชื่อจะต้องมีชื่อตามชื่อ ดังนั้น จะต้องรายงานชื่อเหล่านี้ไปยังคอมไพลเลอร์ ซึ่งอธิบายไว้ในส่วน const พิเศษ

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

    พิมพ์ค่าคงที่

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

    ค่าคงที่ที่พิมพ์จะอธิบายโดยใช้เทมเพลตต่อไปนี้:

    ค่าคงที่<имя_константы> : <тип_константы> = <начальное_значение>;

    ตัวอย่างด้านล่างแสดงวิธีดำเนินการนี้:

    const n: จำนวนเต็ม = -10;

    b: บูลีน = จริง;

    เราจะให้ตัวอย่างของค่าคงที่ประเภทอื่นๆ ในขณะที่เราศึกษาประเภทข้อมูลที่เกี่ยวข้อง

    ชนิดข้อมูลปาสคาล

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

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

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

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

    ชนิดข้อมูลลำดับ (ไม่ต่อเนื่อง)

    ชนิดข้อมูลที่อยู่

    ประเภทข้อมูลที่มีโครงสร้าง

    ชนิดข้อมูลทางคณิตศาสตร์

    ประเภทข้อมูลพื้นฐาน

    ตรรกะ

    สัญลักษณ์

    จริง

    เนติปิซี

    ดัชนีที่จัดทำดัชนี

    ประเภทที่สร้างขึ้น

    แสดงรายการได้

    สัปดาห์ = (su, mo, tu, เรา, th, fr,sa);

    ตัวชี้ที่พิมพ์

    อาร์เรย์

    สตริงสตริง

    บันทึกบันทึก

    ขั้นตอน

    วัตถุ

    ช่วงเวลา (ช่วง)

    โปรแกรมเมอร์สร้างประเภทข้อมูล

    ชนิดข้อมูลลำดับ

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

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

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

    รูทีนมาตรฐานที่จัดการประเภทข้อมูลลำดับ

    ฟังก์ชันและขั้นตอนต่อไปนี้ถูกกำหนดไว้สำหรับประเภทลำดับเท่านั้น:

    1.ฟังก์ชัน ord(x) ส่งกลับเลขลำดับของค่าของตัวแปร x (สัมพันธ์กับประเภทที่มีตัวแปร x อยู่)

    2.ฟังก์ชัน pred(x) ส่งกลับค่าก่อนหน้า x (ใช้ไม่ได้กับองค์ประกอบแรกของประเภท)

    3.ฟังก์ชัน succ(x) ส่งคืนค่าตาม x (ใช้ไม่ได้กับองค์ประกอบสุดท้ายของประเภท)

    4.ขั้นตอน inc(x) ส่งกลับค่าตามหลัง x (สำหรับประเภทข้อมูลทางคณิตศาสตร์ จะเทียบเท่ากับตัวดำเนินการ x:=x+1)

    5.ขั้นตอน inc(x,k) ส่งกลับค่า kth ตามหลัง x (สำหรับประเภทข้อมูลทางคณิตศาสตร์ จะเทียบเท่ากับตัวดำเนินการ x:=x+k)

    6.ขั้นตอน dec(x) ส่งกลับค่าก่อนหน้า x (สำหรับประเภทข้อมูลทางคณิตศาสตร์ จะเทียบเท่ากับตัวดำเนินการ x:=x-1)

    7. ขั้นตอน dec(x,k) ส่งคืนค่า k-e ที่อยู่ก่อนหน้า x (สำหรับประเภทข้อมูลทางคณิตศาสตร์ จะเทียบเท่ากับตัวดำเนินการ x:=x-k)

    เมื่อดูเผินๆ ดูเหมือนว่าผลลัพธ์ของการใช้โพรซีเดอร์ inc(x) จะเหมือนกับผลลัพธ์ของการใช้ฟังก์ชัน succ(x) ทุกประการ อย่างไรก็ตามความแตกต่างระหว่างสิ่งเหล่านี้จะปรากฏที่ขอบเขตของช่วงที่อนุญาต ฟังก์ชัน succ(x) ไม่สามารถใช้ได้กับองค์ประกอบสูงสุดของประเภท แต่ขั้นตอน inc(x) จะไม่ทำให้เกิดข้อผิดพลาดใดๆ แต่การดำเนินการตามกฎการเพิ่มเครื่องจักร จะเพิ่มองค์ประกอบถัดไปให้กับหมายเลของค์ประกอบ . แน่นอนว่าตัวเลขจะออกนอกช่วงและเนื่องจากการตัดทอน จะกลายเป็นจำนวนค่าต่ำสุดของช่วง ปรากฎว่าโพรซีเดอร์ inc() และ dec() รับรู้ประเภทลำดับใด ๆ ราวกับว่า "ปิดอยู่ในวงแหวน": ทันทีหลังจากค่าสุดท้ายกลับมาค่าแรกอีกครั้ง

    ให้เราอธิบายทุกสิ่งที่กล่าวพร้อมตัวอย่าง สำหรับประเภทข้อมูล

    ประเภทที่สิบหก = 0..15;

    การพยายามบวก 1 เข้ากับหมายเลข 15 จะได้ผลลัพธ์ดังนี้:

    หน่วยเริ่มต้นจะถูกตัดออกไป ดังนั้นปรากฎว่า inc(15)=0

    สถานการณ์ที่คล้ายกันที่ขีดจำกัดล่างของช่วงที่อนุญาตของชนิดข้อมูลลำดับที่กำหนดเองจะถูกสังเกตสำหรับโพรซีเดอร์ dec(x) และฟังก์ชัน pred(x):

    ธ.ค. (min_element) = max_element

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

    1. ประเภทบูลีนมีสองค่า: เท็จและจริง และความเท่าเทียมกันต่อไปนี้มีไว้สำหรับค่าเหล่านี้:

    ลำดับ(เท็จ)=0, ลำดับ(จริง)=1, เท็จ

    pred(true)=false, succ(false)=true,

    รวม(จริง)=เท็จ รวม(เท็จ)=จริง

    ธ.ค.(จริง)=เท็จ ธ.ค.(เท็จ)=จริง

    2. อักขระประเภทอักขระประกอบด้วยอักขระ ASCII แบบขยาย 256 ตัว (เช่น "a", "b", "i", "7", "#") หมายเลขอักขระที่ส่งคืนโดยฟังก์ชัน ord() จะเหมือนกับหมายเลขอักขระในตาราง ASCII

    3. มาสรุปประเภทข้อมูลจำนวนเต็มในตาราง:

    ชนิดข้อมูล

    จำนวนไบต์

    พิสัย

    2147483648..2147483647

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

    พิมพ์ สัปดาห์ =(อาทิตย์ จันทร์ อังคาร พุธ พฤหัส ศุกร์ เสาร์)

    โปรดจำไว้ว่าสำหรับประเภทข้อมูลนี้:

    inc(เสาร์) = อาทิตย์, ธ.ค.(อาทิตย์) = วันเสาร์

    5. ชนิดข้อมูลช่วงจะระบุตามขอบเขตของช่วงเท่านั้น ตัวอย่างเช่น:

    พิมพ์เดือน = 1..12;

    บุดนี = จันทร์..ศุกร์;

    6. ประเภทข้อมูลที่สร้างโดยโปรแกรมเมอร์มีอธิบายไว้ในส่วนประเภทตามรูปแบบต่อไปนี้:

    พิมพ์<имя_типа> = <описание_типа>;

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

    พิมพ์ lat_bukvy = "a".."z", "A".."Z";

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

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

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

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

    โปรดจำไว้ว่าประเภทข้อมูลเหล่านี้เป็นเลขคณิต ไม่ใช่ลำดับ

    ชนิดข้อมูล

    จำนวนไบต์

    ช่วง (ค่าสัมบูรณ์)

    1.5*10-45..3.4*1038

    2.9*10-39..1.7*1038

    5.0*10-324..1.7*10308

    3.4*10-4932..1.1*104932

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

    เราจะพิจารณาประเภทข้อมูลเหล่านี้ (พร้อมกับการดำเนินการที่กำหนดไว้) เพิ่มเติมในระหว่างการบรรยายหลายครั้ง

    การดำเนินงานและการแสดงออก

    การดำเนินการทางคณิตศาสตร์

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

    หมายเหตุ: ตัวดำเนินการทั้งหมดที่แสดงด้านล่าง (ยกเว้น unary "-" และไม่ใช่) จำเป็นต้องมีตัวถูกดำเนินการสองตัว

    1. การดำเนินการทางลอจิคัล (และ - ลอจิคัล AND หรือ - ลอจิคัลหรือไม่ใช่ - ลอจิคัล NOT, xor - เอกสิทธิ์เฉพาะ OR) ใช้ได้กับค่าประเภทบูลีนเท่านั้น นอกจากนี้ยังให้ผลลัพธ์เป็นค่าบูลีนด้วย นี่คือตารางค่าสำหรับการดำเนินการเหล่านี้:

    จริงเท็จจริง

    เท็จเท็จเท็จ

    จริงเท็จเท็จ

    2. การดำเนินการเปรียบเทียบ (=,<>, >, <, <=, >=) ใช้กับทุกประเภทพื้นฐาน ผลลัพธ์ของพวกเขายังเป็นค่าบูลีนอีกด้วย

    3. การดำเนินการของเลขคณิตจำนวนเต็มใช้ได้กับประเภทจำนวนเต็มเท่านั้น ผลลัพธ์ที่ได้คือจำนวนเต็มซึ่งมีประเภทขึ้นอยู่กับประเภทของตัวถูกดำเนินการ

    a div b - การหาร a ด้วย b อย่างสมบูรณ์ (อาจไม่จำเป็นต้องเตือนคุณว่าห้ามหารด้วย 0 ดังนั้นในกรณีเช่นนี้ การดำเนินการจะทำให้เกิดข้อผิดพลาด) ผลลัพธ์จะเป็นประเภทข้อมูลร่วมกับประเภทที่ตัวถูกดำเนินการอยู่

    ตัวอย่างเช่น (shortint div byte = integer) สิ่งนี้สามารถอธิบายได้ด้วยวิธีนี้: จำนวนเต็มเป็นประเภทขั้นต่ำที่ทั้งไบต์และ shortint เป็นส่วนย่อย

    a mod b - นำเศษที่เหลือมาหาร a ด้วย b ประเภทของผลลัพธ์ดังเช่นในกรณีก่อนหน้านี้ ถูกกำหนดโดยประเภทของตัวถูกดำเนินการ และ 0 เป็นค่าที่ไม่ถูกต้องสำหรับ b แตกต่างจาก mod การดำเนินการทางคณิตศาสตร์ซึ่งผลลัพธ์จะเป็นตัวเลขที่ไม่เป็นลบเสมอเครื่องหมายของผลลัพธ์ของ mod การดำเนินการ "โปรแกรมเมอร์" จะถูกกำหนดโดยเครื่องหมายของตัวถูกดำเนินการตัวแรก ดังนั้น หากในทางคณิตศาสตร์ (-2 mod 5) = 3 เราก็จะได้ (-2 mod 5) = -2

    shl k - เลื่อนค่าของ a คูณ k บิตไปทางซ้าย (ซึ่งเทียบเท่ากับการคูณค่าของตัวแปร a ด้วย 2k) ผลลัพธ์ของการดำเนินการจะเป็นประเภทเดียวกับตัวถูกดำเนินการแรก

    shr k - เลื่อนค่าของบิต a คูณ k ไปทางขวา (ซึ่งเทียบเท่ากับการหารค่าของตัวแปร a ด้วย 2k ทั้งหมด) ผลลัพธ์ของการดำเนินการจะเป็นประเภทเดียวกับตัวถูกดำเนินการแรก

    และหรือไม่ใช่ xor - การดำเนินการเลขคณิตแบบไบนารีที่ทำงานกับบิตของการแทนค่าเลขฐานสองของจำนวนเต็ม ตามกฎเดียวกันกับการดำเนินการเชิงตรรกะที่สอดคล้องกัน

    4. การคำนวณทางคณิตศาสตร์ทั่วไป (+, -, *, /) ใช้กับคณิตศาสตร์ทุกประเภท ผลลัพธ์จะเป็นประเภทข้อมูลที่เหมือนกันกับตัวถูกดำเนินการทั้งสองตัว (ข้อยกเว้นเดียวคือการดำเนินการหารเศษส่วน / ซึ่งผลลัพธ์จะเป็นประเภทข้อมูลจริงเสมอ)

    การดำเนินงานอื่น ๆ

    มีการดำเนินการอื่นๆ ที่เฉพาะเจาะจงกับค่าของประเภทข้อมูลมาตรฐานของ Pascal บางประเภท เราจะพิจารณาการดำเนินการเหล่านี้ในส่วนที่เหมาะสม:

    #, ใน, +, *, : ดูการบรรยายที่ 5 “สัญลักษณ์. เส้น. มากมาย”

    @, ^: ดูการบรรยายที่ 7 “ที่อยู่และตัวชี้”

    ฟังก์ชันทางคณิตศาสตร์มาตรฐาน

    การดำเนินการทางคณิตศาสตร์ยังรวมถึงฟังก์ชันทางคณิตศาสตร์มาตรฐานด้วย เรามีรายการพร้อมคำอธิบายสั้น ๆ ไว้ในตาราง

    การทำงาน

    คำอธิบาย

    ประเภทอาร์กิวเมนต์

    ประเภทผลลัพธ์

    ค่าสัมบูรณ์ (โมดูลัส) ของตัวเลข

    เลขคณิต

    เช่นเดียวกับประเภทอาร์กิวเมนต์

    อาร์กแทนเจนต์ (เป็นเรเดียน)

    เลขคณิต

    จริง

    โคไซน์ (เป็นเรเดียน)

    เลขคณิต

    จริง

    เลขชี้กำลัง (เช่น)

    เลขคณิต

    จริง

    การหาเศษส่วนของตัวเลข

    เลขคณิต

    จริง

    การหาส่วนของตัวเลขทั้งหมด

    เลขคณิต

    จริง

    ลอการิทึมธรรมชาติ (ฐาน e)

    เลขคณิต

    จริง

    ตรวจสอบว่าตัวเลขเป็นเลขคี่หรือไม่

    ความหมายตัวเลข

    จริง

    ปัดเศษให้เป็นจำนวนเต็มที่ใกล้ที่สุด

    เลขคณิต

    การปัดเศษลง - เป็นจำนวนเต็มที่น้อยกว่าที่ใกล้ที่สุด

    เลขคณิต

    ไซน์ (เป็นเรเดียน)

    เลขคณิต

    จริง

    กำลังสอง

    เลขคณิต

    จริง

    สแควร์รูท

    เลขคณิต

    จริง

    นิพจน์ทางคณิตศาสตร์

    การดำเนินการทางคณิตศาสตร์ทั้งหมดสามารถนำมารวมกันได้ โดยคำนึงถึงประเภทข้อมูลที่อนุญาตสำหรับตัวถูกดำเนินการด้วย

    ตัวถูกดำเนินการของการดำเนินการใดๆ อาจเป็นตัวแปร ค่าคงที่ การเรียกฟังก์ชัน หรือนิพจน์ที่สร้างจากการดำเนินการอื่นๆ ทั้งหมดรวมกันเรียกว่าการแสดงออก

    ตัวอย่างนิพจน์ทางคณิตศาสตร์:

    (x<0) and (y>0) - นิพจน์ที่ผลลัพธ์เป็นประเภทบูลีน

    z shl abs(k) - ตัวถูกดำเนินการที่สองคือการเรียกไปยังฟังก์ชันมาตรฐาน

    (x mod k) + min(a,b) + trunc(z) - การรวมกันของการดำเนินการทางคณิตศาสตร์และการเรียกใช้ฟังก์ชัน

    คี่(รอบ(x/abs(x))) - การแสดงออก "หลายเรื่อง"

    ลำดับการคำนวณ

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

    ตารางที่ 2.1. ลำดับความสำคัญ (สำหรับทั้งหมด) การดำเนินการของ Pascal