ตัวเลือกของบรรณาธิการ:

การโฆษณา

บ้าน - อุปกรณ์เคลื่อนที่
ประเภทข้อมูลพื้นฐานและโครงสร้างหลัก 2 ประเภท การออกแบบอัลกอริทึมพื้นฐาน

3.2.1 ประเภทข้อมูลที่ง่ายและมีโครงสร้าง โครงสร้างข้อมูล - เรคคอร์ด อาร์เรย์ รายการ

ตัวแปร

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

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

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

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

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

อาร์เรย์

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

อาร์เรย์อาจเป็นมิติเดียว (แถว แถว) สองมิติ (ตาราง เมทริกซ์) สามมิติ (ลูกบาศก์) ฯลฯ

ตัวอย่าง (C#, Java)

ภายใน มวล =ใหม่ - //สร้างอาร์เรย์เพื่อเก็บจำนวนเต็มสิบจำนวน

มวล=1; // ค่า 1 เขียนที่ดัชนี 0

อ่านเพิ่มเติม: http://enos.itcollege.ee/~jpoial/java/i200loeng4.html

กระทู้

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

ตัวอย่าง (C#)

โครงสร้าง {

สตริงสาธารณะ อีสนิมิ;

สตริงสาธารณะ เปเรนิมี;

บูลสาธารณะ เพศ;

ลอยสาธารณะ น้ำหนัก;

ด้วยรายการนี้ เราสามารถสร้างตัวแปร kasutaja(ผู้ใช้) และกำหนดค่าให้กับชื่อ นามสกุล เพศ และน้ำหนัก:

ใกล้เข้ามาแล้ว คาสุทาจา;

คาสุตาจา.อีสนิมิ=“จัน” ;

คาซูทาจา.เปเรนิมิ="เม็ตส์" ;

kasutaja.sex = 1;

น้ำหนักน้ำหนัก = 80.0;

รายการและต้นไม้

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

สแต็กคือรายการที่เชื่อมโยงซึ่งองค์ประกอบสุดท้ายที่เพิ่มจะถูกอ่านก่อน (LIFO - เข้าก่อนออกก่อน)

คิวคือรายการที่เชื่อมโยงซึ่งองค์ประกอบที่เพิ่มก่อนจะถูกอ่านก่อน (FIFO - เข้าก่อนออกก่อน)

อ่านเพิ่มเติม: http://www.cs.tlu.ee/~inga/alg_andm/linked_list_C_2011.pdf

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

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

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

อ่านเพิ่มเติม: http://www.cs.tlu.ee/~inga/alg_andm/tree_gen_2011.pdf

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

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

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

ต้นไม้ B เป็นแผนผังการค้นหาซึ่งจำนวนลูกในแต่ละโหนดอยู่ในช่วงตั้งแต่ (t-1) ถึง (2t-1) โดยที่ t เป็นค่าคงที่ใดๆ

ต้นไม้ B* คือต้นไม้ B ซึ่งจุดยอดจะถูกเติมเป็น 2/3 โดยเติมจุดยอดลูกสองจุดก่อนโดยการกระจายคีย์ใหม่ จากนั้นแยกออกเป็น 3 จุดยอด

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

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

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

  • ประเภทปกติ (อาร์เรย์);
  • ประเภทรวม (บันทึก);
  • ประเภทไฟล์ (ไฟล์);
  • หลายประเภท;
  • ประเภทสตริง (สตริง);
  • ประเภทวัตถุ (วัตถุ)

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

วรรณกรรม

  1. โปปอฟ วี.บี. ปาสกาลและเดลฟี คู่มือการใช้งาน - เซนต์ปีเตอร์สเบิร์ก: Peter, 2004. - 544 หน้า: ป่วย

บทที่ 6 โครงสร้าง
ประเภทข้อมูล ประเภทข้อมูลที่มีโครงสร้างกำหนดชุดของส่วนประกอบประเภทเดียวกันหรือต่างกัน ประเภทส่วนประกอบถูกสร้างขึ้นจากประเภทข้อมูลอื่น (แบบง่าย มีโครงสร้าง พอยน์เตอร์ ฯลฯ) ในภาษาปาสคาลมีประเภทโครงสร้างดังต่อไปนี้: - ประเภทอาเรย์; - ประเภทบันทึก;มีโครงสร้างอีกสองประเภท: - ประเภทสตริง string และ - ประเภทสตริง PChar ซึ่งเป็นประเภทของอาร์เรย์ ต่อไปนี้ เพื่อความกระชับ ออบเจ็กต์ประเภทที่มีโครงสร้างจะถูกเรียกด้วยชื่อเดียวกันกับประเภท โดยไม่ต้องระบุคำว่า "ประเภท": อาร์เรย์ บันทึก ชุด ไฟล์ สตริง ในมาตรฐานภาษา มีประเภทโครงสร้างแบบแพ็กเกจและแบบไม่มีแพ็กเกจ ใน Turbo Pascal คำว่า บรรจุ ซึ่งเป็นลักษณะของประเภทบรรจุ ไม่มีผลใดๆ เมื่อใดก็ตามที่เป็นไปได้ การบรรจุข้อมูลจะดำเนินการโดยอัตโนมัติ 6.1. Array Type-array คือจำนวนคงที่ของส่วนประกอบที่เรียงลำดับเป็นประเภทเดียวกัน พร้อมด้วยดัชนี อาจเป็นมิติเดียวหรือหลายมิติก็ได้ หากต้องการระบุประเภทอาร์เรย์ ให้ใช้อาร์เรย์คำที่สงวนไว้ หลังจากนั้นคุณควรระบุประเภทของดัชนีของส่วนประกอบ (ในวงเล็บเหลี่ยม) จากนั้นตามด้วยคำว่า - ประเภทของส่วนประกอบเอง: พิมพ์<имя типа>= อาร์เรย์[<тип индекса(индексов)>] ของ<тип компонент>- ตัวอย่าง. พิมพ์ Arr = อาร์เรย์ของ Real; (ประเภทอาร์เรย์ของจำนวนจริง 3 จำนวน) เมทริกซ์ = อาร์เรย์ของจำนวนเต็ม; (พิมพ์ - อาร์เรย์สองมิติจำนวนเต็มประกอบด้วย 3 แถว 2 คอลัมน์) เมื่อแนะนำประเภทอาร์เรย์ คุณจะสามารถกำหนดตัวแปรหรือพิมพ์ค่าคงที่ประเภทนั้นได้ มิติข้อมูลอาเรย์สามารถเป็นประเภทใดก็ได้ ส่วนประกอบอาเรย์สามารถเป็นประเภทใดก็ได้ รวมถึงองค์ประกอบที่มีโครงสร้าง ดัชนีสามารถเป็นประเภทลำดับใดก็ได้ ยกเว้นประเภท Longint เมื่อกำหนดค่าให้กับอาร์เรย์คงที่ ส่วนประกอบจะถูกระบุในวงเล็บและคั่นด้วยเครื่องหมายจุลภาค และหากอาร์เรย์มีหลายมิติ วงเล็บด้านนอกจะสอดคล้องกับดัชนีด้านซ้าย วงเล็บที่ซ้อนอยู่ภายในจะสอดคล้องกับดัชนีถัดไป เป็นต้น ดังนั้น สำหรับประเภทที่แนะนำข้างต้น คุณสามารถระบุตัวแปรและค่าคงที่ต่อไปนี้ได้ เช่น var Ml, M2: Arr; Matr: เมทริกซ์; const M3: Arr =(1, 2, 3); เสื่อ: เมทริกซ์ = ((1, 2), (3, 4), (5, 6)); ค่าคงที่สุดท้ายสอดคล้องกับโครงสร้างต่อไปนี้: 1 2 3 4 5 6 หมายเหตุ นอกจากนี้ยังสามารถป้อนประเภทอาร์เรย์ได้โดยตรงเมื่อกำหนดตัวแปรที่สอดคล้องกันหรือพิมพ์ค่าคงที่ ตัวอย่างเช่น: var Ml, M2: อาร์เรย์ของ Real; Matr: อาร์เรย์ของจำนวนเต็ม; อาร์เรย์เดียวกันนี้ถูกกำหนดไว้ที่นี่เช่นเดียวกับในตัวอย่างก่อนหน้านี้ เมื่อประกาศอาร์เรย์ด้วยวิธีนี้ โปรดจำไว้ว่าประเภทของอาร์เรย์จะไม่เหมือนกับประเภทอื่นๆ แม้ว่าจะมีโครงสร้างที่เหมือนกันก็ตาม ดังนั้นคุณไม่สามารถส่งผ่านเป็นพารามิเตอร์ไปยังรูทีนย่อยได้ (ดูหัวข้อ 10.3) คุณไม่สามารถกำหนดค่าของอาร์เรย์อื่น ๆ ได้ (และในทางกลับกัน) แม้ว่าโครงสร้างจะเหมือนกันก็ตาม เข้าถึงส่วนประกอบอาร์เรย์ได้โดยการระบุชื่ออาร์เรย์ตามด้วยค่าของดัชนีส่วนประกอบในวงเล็บเหลี่ยม โดยทั่วไป ดัชนีส่วนประกอบแต่ละรายการสามารถระบุได้ด้วยนิพจน์ประเภทที่เหมาะสม เช่น M1, เมทริกซ์, M2 เป็นต้น อาร์เรย์หนึ่งสามารถกำหนดค่าของอาร์เรย์อื่นได้ แต่จะต้องเป็นประเภทที่เหมือนกันเท่านั้น ดังนั้นหากได้รับอาร์เรย์ต่อไปนี้: var A, B: อาร์เรย์ของ Integer; C: อาร์เรย์ของจำนวนเต็ม; สมมติว่ามีโอเปอเรเตอร์ต่อไปนี้: A:= B; ในทางกลับกัน ตัวดำเนินการ C:= A; ไม่ถูกต้อง เนื่องจากอาร์เรย์ A และ C ไม่ใช่ประเภทที่เหมือนกัน มีความแตกต่างบางประการในการทำงานกับอาร์เรย์อักขระหนึ่งมิติ (เพื่อไม่ให้สับสนกับค่าสตริง - ดูหัวข้อ 6.2) ดังนั้น ค่าคงที่ที่พิมพ์ประเภทนี้จึงสามารถกำหนดค่าได้เหมือนกับค่าคงที่สตริงทั่วไป โดยการระบุสตริงของอักขระในเครื่องหมายอะพอสทรอฟี เช่น const A: array of Char="aaaaa"; B: อาร์เรย์ของ Char = "bbb"; สำหรับอาร์เรย์ดังกล่าว สำหรับสตริง สามารถใช้การดำเนินการเปรียบเทียบได้ (แม้ว่าจะไม่ใช่ประเภทที่เหมือนกันและแม้ว่าจะมี) และการต่อข้อมูล (การเชื่อมโยง) - ดูข้อ 6.2 สามารถใช้ในคำสั่งเอาต์พุต Write และ WriteLn ตัวอย่างเช่น สำหรับอาร์เรย์ที่ป้อนด้านบน คุณสามารถเขียนได้ถ้า A > B แล้ว WriteLn(A) อย่างอื่น WriteLn(B); 6.2. สตริงของประเภทสตริง ใน Turbo Pascal ประเภทสตริง (ประเภทสตริงมาตรฐาน) คือลำดับของอักขระที่มีความยาวตามต้องการ (สูงสุด 255 อักขระ) สตริงสามารถถือเป็นอาร์เรย์ของอักขระได้ แต่เนื่องจากการใช้สตริงอย่างแพร่หลายและคุณลักษณะบางอย่างเมื่อเปรียบเทียบกับอาร์เรย์มาตรฐาน สตริงจึงถูกแยกออกเป็นประเภทข้อมูลที่แยกจากกัน ประเภทสตริงสามารถระบุขนาดได้ในวงเล็บเหลี่ยม (ตั้งแต่ 1 ถึง 255) หากไม่ได้ระบุขนาดสตริง จะถือว่าเป็น 255 ตัวอย่างเช่น: var Str: string; MaxStr: สตริง; (สตริงอักขระ 255 ตัว) const มกราคม: string = "มกราคม"; การต่อข้อมูล (+) และการดำเนินการเปรียบเทียบใช้ได้กับสตริง การดำเนินการต่อข้อมูลจะเพิ่มสตริงที่สองเข้ากับสตริงแรก ตัวอย่าง. เชื่อมต่อสองสายเข้าด้วยกัน Str, Strl, Str2:สตริง; เริ่ม Strl:= "เทอร์โบ"; Str2:= "ปาสคาล"; Str:= Strl + Str2; (ในตัวแปร Str - "Turbo Pascal") สิ้นสุด คุณสามารถเปรียบเทียบสายที่มีความยาวต่างกันได้ การเปรียบเทียบจะดำเนินการจากซ้ายไปขวาตามรหัส ASCII ของอักขระที่เกี่ยวข้อง อักขระที่หายไปในสตริงที่สั้นกว่าจะถือว่ามีโค้ดน้อยกว่าอักขระที่ถูกต้องใดๆ เช่น "XS" มากกว่า "X" ตัวอย่าง. ตรวจสอบว่าชุดอักขระที่ป้อนเป็นชื่อของเดือนในภาษารัสเซียหรือไม่ โปรแกรม EXAMPLE11; const Instance: array of string!10]= ("มกราคม", "กุมภาพันธ์", "มีนาคม", "เมษายน", "พฤษภาคม", "มิถุนายน", "กรกฎาคม", "สิงหาคม", "กันยายน", "ตุลาคม" , "พฤศจิกายน", "ธันวาคม"); เดือน: บูลีน = เท็จ; var Str: สตริง; ฉัน: จำนวนเต็ม; start Writeln("ใส่อักษรตัวใหญ่: "); ReadLn(Str); สำหรับ i:= 1 ถึง 12 ทำถ้า Str = Instance[i] แล้วเดือน:=True; ถ้าเดือนแล้ว WriteLn("ป้อนชื่อของเดือน") มิฉะนั้น WriteLn("ไม่ได้ป้อนชื่อของเดือน") สิ้นสุด ในความเป็นจริง สตริงที่มีอักขระ N คืออาร์เรย์ของอักขระ N+1: string[N] = อาร์เรย์ของ Char อักขระ Null มีวัตถุประสงค์เพื่อระบุจำนวนอักขระในสตริงที่จะใช้และอาจแตกต่างจากอักขระที่มีรหัส 0 ไปจนถึงอักขระที่มีรหัส N คุณสามารถทำงานกับอักขระดังกล่าวได้เหมือนกับอักขระอื่นๆ ในสตริง (เขียนและอ่านค่าของมัน ฯลฯ) แต่ไม่ลืมจุดประสงค์หลัก 6.3. สตริง ASCIIZ ในเวอร์ชัน 7.0 เพื่อความเข้ากันได้กับภาษาโปรแกรมอื่นและ สภาพแวดล้อมของวินโดวส์มีการแนะนำสตริงประเภทอื่น - สตริงที่ลงท้ายด้วยศูนย์ไบต์ - อักขระที่มีรหัส 0 (ที่เรียกว่าสตริง ASCIIZ) ต่างจากสตริงตรงที่สตริงเหล่านี้ไม่มีการจำกัดขนาด (อันที่จริง ขนาดสามารถมีได้ถึง 65535 ไบต์) สตริงเหล่านี้ได้รับ PChar ประเภทมาตรฐาน ในความเป็นจริงประเภทนี้เป็นตัวชี้ไปยังอักขระ (เกี่ยวกับพอยน์เตอร์ดูย่อหน้าที่ 7): PChar = ^Char; อย่างไรก็ตาม การใช้ไวยากรณ์แบบขยาย (คีย์ (X+) - ดูหัวข้อ 17.7.1) ทำให้คุณสามารถใช้ตัวแปรดังกล่าวเป็นสตริงที่เทียบเท่ากับอาร์เรย์ประเภท pChar = อาร์เรย์ของ Char โดยที่ K คือจำนวนอักขระใน สตริงไม่นับอักขระต่อท้ายด้วยรหัส 0 ต่างจากประเภทสตริง อักขระที่มีดัชนี 0 ที่นี่คืออักขระตัวแรกของสตริง และอักขระสุดท้ายที่มีดัชนี K คืออักขระสุดท้ายที่มีโค้ด 0 เมื่อทำงานกับ ASCIIZ สตริง ขอแนะนำให้ระบุไวยากรณ์เพิ่มเติม ในกรณีนี้ จะไม่มีปัญหาในการใช้รูทีนมาตรฐานต่างๆ ที่ทำงานกับสตริง ตัวอย่าง. การใช้สตริง PChar พร้อมไวยากรณ์เพิ่มเติม โปรแกรม EXAMPLE12; ($X+) (ไม่จำเป็นเนื่องจากเป็นค่าเริ่มต้น) พิมพ์ T = array ของ Char; (อาร์เรย์สำหรับสตริงอักขระ 7 ตัว) var Str: PChar; const A: T = "สวัสดี!"#0; เริ่มต้น Str:= "สวัสดี!"; WriteLn(Str); (สายสัญญาณออก: HI Str:= @А; {допустимо также: Str:=A} WriteLn(Str); {вывод строки: привет!} WriteLn(Str);{вывод символа "р"} ReadLn end. Если используется ключ {$Х-}, !} ตัวแปรประเภท PChar ในกรณีนี้จะถือเป็นตัวชี้ไปยังอักขระตัวเดียว ในกรณีนี้ ไม่มีตัวดำเนินการใดในตัวอย่างก่อนหน้านี้ ยกเว้นตัวดำเนินการ Str:=@A; และ ReadLn ไม่ถูกต้อง และคำสั่ง WriteLn(Str^) ดำเนินการหลังจากคำสั่ง Str:=@A; จะสร้างอักขระ "n" ตัวเดียว ในการทำงานกับสตริง ASCIIZ ในเวอร์ชัน 7.0 จะใช้โมดูลมาตรฐานพิเศษ Strings (ดูหัวข้อ 16.2) และ WinDos (ดูหัวข้อ 16.6) 6.4. เรคคอร์ดประเภทเรคคอร์ด เรคคอร์ดประกอบด้วยส่วนประกอบจำนวนหนึ่งที่เรียกว่าฟิลด์ ซึ่งสามารถมีได้หลายประเภท เมื่อระบุประเภทเรคคอร์ด หลังจากบันทึกคำที่สงวนไว้ คุณควรแสดงรายการฟิลด์ทั้งหมดของประเภทเรคคอร์ด โดยระบุประเภทโดยคั่นด้วยเครื่องหมายทวิภาค และจบคำจำกัดความประเภทด้วยคำลงท้าย ช่องต่างๆ จะถูกแยกออกจากกันด้วยเครื่องหมายอัฒภาค จำนวนฟิลด์ในเรกคอร์ดสามารถเป็นเท่าใดก็ได้ ตัวอย่าง. ประเภท Complex = record (ประเภทจำนวนเชิงซ้อน) Re: Real; ฉัน: จบจริงๆ; ข้อมูล = บันทึก (ประเภท - วันเกิด) ปี: จำนวนเต็ม; เดือน: 1..12; วัน: 1..31 สิ้นสุด; บุคคล = บันทึก (ประเภท - ข้อมูลเกี่ยวกับพนักงาน) ชื่อ: สตริง; เพศ: (ชาย, หญิง); อายุ: จำนวนเต็ม; แต่งงานแล้ว: ปลายบูลีน; บันทึก. หากฟิลด์ประเภทเรคคอร์ดหลายประเภทมีประเภทเดียวกัน คุณสามารถแสดงรายการชื่อโดยคั่นด้วยเครื่องหมายจุลภาค จากนั้นระบุประเภททั่วไปนั้น ดังนั้นประเภทของจำนวนเชิงซ้อนที่พิจารณาในตัวอย่างจึงสามารถแนะนำได้ด้วยวิธีอื่น: พิมพ์ Complex = บันทึก Re, Im: สิ้นสุดจริง; หลังจากแนะนำประเภทเรคคอร์ดแล้ว คุณสามารถกำหนดตัวแปรหรือพิมพ์ค่าคงที่ของประเภทเรคคอร์ดนั้นได้ เมื่อกำหนดค่าให้กับค่าคงที่ ฟิลด์ของค่านั้นจะถูกเขียนในวงเล็บโดยคั่นด้วยเครื่องหมายอัฒภาค หากต้องการตั้งค่าของแต่ละฟิลด์ ให้ระบุชื่อฟิลด์ก่อน จากนั้นให้คั่นด้วยเครื่องหมายทวิภาค ดังนั้น สำหรับประเภทที่แนะนำข้างต้น คุณสามารถตั้งค่าได้ เช่น ตัวแปรและค่าคงที่ต่อไปนี้: var X, Y, Z: ซับซ้อน; ข้อมูล:ข้อมูล; const วันเกิด: ข้อมูล = (ปี: 1971; เดือน: 12; วัน: 9); Ivanov: บุคคล = (ชื่อ: "Ivanov"; เพศ: ชาย; อายุ: 40; แต่งงานแล้ว: จริง); บันทึก. นอกจากนี้ยังสามารถป้อนประเภทบันทึกได้โดยตรงเมื่อกำหนดตัวแปรหรือพิมพ์ค่าคงที่ ตัวอย่างเช่น ส่วน var X, Y, Z: บันทึก Re, Im: สิ้นสุดจริง; กำหนดตัวแปรที่ซับซ้อนเช่นเดียวกับในตัวอย่างก่อนหน้านี้ การเข้าถึงฟิลด์ของบันทึกทำได้โดยการระบุชื่อของตัวแปร (ค่าคงที่) และชื่อของฟิลด์ที่เขียนผ่านจุด เช่น Ivanov.Age, X.Re, Dat.Day เป็นต้น ตัวอย่าง . การใช้เขตข้อมูลบันทึก XRe:= 1.5; X.Im:=1.7; Y.Re:= -X.Re; Y.Im:= -X.Im; Ivanov แต่งงานแล้ว:= เท็จ; เพื่อไม่ให้เขียนชื่อของบันทึกในแต่ละครั้งเมื่อเข้าถึงฟิลด์ คุณสามารถใช้ตัวดำเนินการ WITH กับบันทึกได้ โครงสร้างของมันมีลักษณะดังนี้:<имя записи>ทำ<оператор>- ในกรณีนี้ สามารถระบุได้เฉพาะฟิลด์บันทึกภายในคำสั่งเท่านั้น ตัวอย่างเช่น แฟรกเมนต์: ด้วย X จะเริ่มต้น Re:= 1.5; ฉัน:= 1.7; บันทึกที่ระบุประเภทของพวกเขา จำเป็นต้องมีวงเล็บแม้ว่าจะไม่มีส่วนที่ต่างกันสำหรับตัวเลือกที่กำหนดก็ตาม ควรสังเกตว่าส่วนที่แปรผันไม่ได้ถูกปิดท้ายด้วยคำสั่งปิดท้ายของตัวเอง ดังเช่นในโครงสร้าง CASE ทั่วไป เนื่องจากจะตามด้วยคำสั่งปิดท้ายของประเภททั้งหมด ในมาตรฐานภาษาปาสคาล ก่อนที่จะใช้ตัวเลือกการบันทึกตัวใดตัวหนึ่ง จะต้องกำหนดค่าตัวแปรการเลือกตัวเลือกให้เหมาะสม: Fig:= Square; MySquare.Side:=5.0; รูป:= วงกลม; MyCircle.Radius:=7.5; ใน Turbo Pascal การดำเนินการนี้ไม่จำเป็น แม้ว่าจะมีการระบุตัวแปรตัวเลือกไว้ก็ตาม ก็สามารถดูได้ในโปรแกรมเพื่อพิจารณาว่าตัวเลือกใดถูกตั้งค่าไว้ นอกจากนี้ การตั้งค่าของตัวแปรการเลือกไม่มีผลกระทบต่อสิ่งใดๆ และแฟรกเมนต์ต่อไปนี้จะเทียบเท่ากับส่วนที่กล่าวถึงข้างต้น: Fig:= Circle; MySquare.Side:= 5.0; รูป:= สี่เหลี่ยมจัตุรัส; MyCircle.รัศมี:-7.5; ในประเภทบันทึก ไม่อนุญาตให้ป้อนตัวแปรสำหรับการเลือกตัวเลือก แต่ให้แสดงรายการเฉพาะตัวเลือกที่แตกต่างกัน เช่น: Transf = กรณีบันทึก จำนวนเต็ม 1: (_Word: Word); 2: (_TwoSymb: อาร์เรย์ของ Char) สิ้นสุด; 6.5. เซต ในภาษาปาสคาล ประเภทเซตคือระดับเซตของชุดออบเจ็กต์ดั้งเดิมของประเภทลำดับ กล่าวคือ เซตของการรวมกันที่เป็นไปได้ทั้งหมดของออบเจ็กต์ของเซตดั้งเดิม จำนวนองค์ประกอบของชุดดั้งเดิมใน Turbo Pascal ต้องไม่เกิน 256 และหมายเลขลำดับขององค์ประกอบ (นั่นคือค่าของฟังก์ชัน Ord) ต้องอยู่ในช่วงตั้งแต่ 0 ถึง 255 เพื่อระบุประเภทชุด คุณควรใช้ชุดคำสงวน และ of จากนั้นระบุองค์ประกอบของชุดนี้ โดยปกติจะอยู่ในรูปแบบของการแจงนับหรือช่วง เช่น: พิมพ์ Alfa = set of "A".."Z"; จำนวน = ชุดของ (บวก, ลบ, Mult, หาร); สิบ = ชุดของ 0..9; จำนวน = ชุดของ "0".."9" ; ด้วยการป้อนประเภทชุด คุณสามารถกำหนดตัวแปรหรือพิมพ์ค่าคงที่ของประเภทชุดนั้นได้ เมื่อกำหนดค่าให้กับชุดค่าคงที่ องค์ประกอบจะถูกแสดงรายการโดยคั่นด้วยเครื่องหมายจุลภาค (สามารถระบุช่วงได้) และวางไว้ในวงเล็บเหลี่ยม ตัวอย่างเช่น สำหรับประเภทที่แนะนำข้างต้น คุณสามารถตั้งค่าตัวแปรต่อไปนี้และค่าคงที่ที่พิมพ์ได้: var CharVal: Alfa; การดำเนินงาน: นับ; ดัชนี const: สิบ = ; หลัก: หมายเลข = ["0".."9"]; บันทึก. เช่นเดียวกับประเภทที่มีโครงสร้างอื่นๆ ประเภทชุดสามารถนำมาใช้ได้โดยตรงเมื่อกำหนดตัวแปรหรือพิมพ์ค่าคงที่: var CharVal: set of "A."."Z"; การดำเนินการ: ชุดของ (บวก ลบ Mult หาร); ดัชนี const: ชุดของ 0..9 = ; หลัก: ชุดของ "0".."9"=["0".."9"]; ชุดสามารถกำหนดค่าหนึ่งหรือค่าอื่นในโปรแกรมได้ โดยปกติแล้วค่าจะถูกตั้งค่าโดยใช้ตัวสร้างชุด ตัวสร้างกำหนดชุดขององค์ประกอบโดยการแสดงรายการนิพจน์ในวงเล็บเหลี่ยมที่มีค่ากำหนดโดยองค์ประกอบของชุดนี้ เป็นที่ยอมรับในการใช้ช่วงขององค์ประกอบ ตัวอย่าง. โครงสร้างต่อไปนี้เป็นตัวสร้างชุด: แต่ละชุดประกอบด้วยสิ่งที่เรียกว่า เซตว่างที่ไม่มีองค์ประกอบ ตัวสร้างชุดยังสามารถนำมาใช้โดยตรงในการดำเนินการกับชุดได้อีกด้วย การดำเนินการต่อไปนี้ถูกกำหนดไว้สำหรับชุด: + - การรวมกันของชุด; - - ความแตกต่างของชุด; * - จุดตัดของชุด; = - ตรวจสอบความเท่าเทียมกันของสองชุด;<>- การตรวจสอบความไม่เท่ากันของสองชุด<= - проверка, является ли левое множество подмножеством правого множества; >= - ตรวจสอบว่าเซตที่ถูกต้องเป็นสับเซตของเซตซ้ายหรือไม่ ใน - ตรวจสอบว่าองค์ประกอบที่ระบุทางด้านซ้ายรวมอยู่ในชุดที่ระบุทางด้านขวาหรือไม่ ผลลัพธ์ของการดำเนินการของสหภาพ ผลต่างหรือจุดตัดเป็นเซตที่สอดคล้องกัน การดำเนินการอื่นให้ผลลัพธ์ของประเภทตรรกะ ตัวอย่าง. ป้อนสตริงอักขระที่ประกอบด้วยตัวอักษรละติน ตัวเลข และช่องว่าง ตรวจสอบความถูกต้องของตัวอักษรที่ป้อน โปรแกรม EXAMPLE13; var Str: สตริง; L: ไบต์; ทรู: บูลีน; start WriteLn("ป้อนบรรทัด"); ReadLn(Str); L:= ความยาว(str); (จำนวนตัวอักษรที่ป้อน) Tru:= L > 0; (จริงถ้าไม่ใช่สตริงว่าง) ในขณะที่ Tru และ (L > 0) ทำ (ตรวจสอบจากท้ายบรรทัด) เริ่มต้น Tru:=Str[L] ใน ["0".."9", "A"., "Z" , "a".."z", " "];ตามรูปแบบภายในของข้อมูล ในกรณีนี้ ส่วนประกอบที่แท้จริงของไฟล์อาจมีประเภทต่างกันได้ ตัวอย่าง. พิมพ์ UnType = ไฟล์; ประเภทไฟล์สามารถกำหนดได้โดยตรงเมื่อประกาศตัวแปรไฟล์: var Fl, F2: ไฟล์ของ Integer; ตัวแปรไฟล์มีการใช้งานเฉพาะ คุณไม่สามารถดำเนินการใดๆ กับสิ่งเหล่านี้ได้ (กำหนดค่า เปรียบเทียบ ฯลฯ) สามารถใช้เพื่อดำเนินการกับไฟล์เท่านั้น (การอ่าน เขียน การลบไฟล์ ฯลฯ) การทำงานกับไฟล์จะกล่าวถึงในย่อหน้าที่ 11 นอกจากนี้ คุณสามารถรับข้อมูลเกี่ยวกับไฟล์เฉพาะ (ประเภท พารามิเตอร์ ชื่อไฟล์ ฯลฯ) ผ่านทางตัวแปรไฟล์

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

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

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

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

ก) ทั้งหมด

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

พิมพ์ชื่อ

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

ช่วงของค่า

32 768...+32 767

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

ข) ตรรกะ

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

ค) สัญลักษณ์

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

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

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

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

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

จำนวนหลักสำคัญของชนิดข้อมูลตัวเลข

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

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

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

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

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

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

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

1. อาร์เรย์

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

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

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

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

Array, of – คำสงวน (array, from);

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

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

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

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

2. บันทึก

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

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

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

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

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

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

3. ชุด

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

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

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

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

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

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

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

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

4. ไฟล์

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

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

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

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

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

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

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

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

<имя>= ไฟล์;

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

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

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

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

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

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

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

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

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

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

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

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

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

ถึง ประเภทง่ายๆซึ่งรวมถึงประเภทลำดับ จริง และวันที่และเวลา

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

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

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

ประเภทลำดับ

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

ข้าว. 1.1

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

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

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

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

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

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

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

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

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

ชื่อ

ความยาว, ไบต์

ช่วงของค่า

0. .. 2 147 483 647

32 768...+32 767

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

9*1018...+9*1018

0. . .4 294 967 295

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

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

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

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

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

อุทธรณ์

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

การกระทำ

ส่งคืนโมดูล x

ส่งกลับอักขระตามรหัส

ลดค่าของ vx ลงด้วย i และในกรณีที่ไม่มี i - ลง 1

เพิ่มค่าของ vx ด้วย i และในกรณีที่ไม่มี i - 1

ส่งกลับธนูสูงสุดของการโต้แย้ง

ส่งกลับไบต์ที่สาม

ส่งกลับค่าไบต์ต่ำของอาร์กิวเมนต์

ส่งกลับค่า True หากอาร์กิวเมนต์เป็นเลขคี่

เช่นเดียวกับพารามิเตอร์

ส่งกลับตัวเลขสุ่มเทียมที่กระจายสม่ำเสมอในช่วง 0...(w-l)

ส่งกลับกำลังสองของอาร์กิวเมนต์

สลับไบต์ในคำเดียว

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

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

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

Ord(True) = +1 ในขณะที่ประเภทอื่นๆ (Bool, WordBool ฯลฯ)

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 นิวโรมันเพื่อแสดงอักขระซีริลลิก (ไม่มีตัวอักษร "ё" และ "Ё") ใช้รหัส 64 ตัวสุดท้าย (จาก 192 ถึง 256): "A"... "I" ถูกเข้ารหัสด้วยค่า 192..223 “ก”... “ฉัน ” - 224...255 สัญลักษณ์ “Ё” และ “е” มีรหัส 168 และ 184 ตามลำดับ

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

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

ประเภทถ่านใช้การดำเนินการเชิงสัมพันธ์ เช่นเดียวกับฟังก์ชันในตัว:

Сhar (в) - ฟังก์ชั่นประเภทถ่าน; แปลงนิพจน์ประเภท Byte ให้เป็นอักขระและส่งกลับพร้อมกับค่าของมัน

UpCase(CH) - ฟังก์ชั่นประเภท char; ผลตอบแทน อักษรตัวใหญ่ถ้า сн เป็นตัวอักษรละตินตัวพิมพ์เล็ก มิฉะนั้นจะส่งกลับสัญลักษณ์ сн เอง (สำหรับตัวอักษรซีริลลิก ก็จะส่งกลับอักขระดั้งเดิม)

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

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

การใช้ประเภทที่แจกแจงทำให้โปรแกรมมองเห็นได้ชัดเจนยิ่งขึ้น

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

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

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

ประเภทช่วงถูกกำหนดโดยขอบเขตของค่าภายในประเภทฐาน:

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

ที่นี่<мин. знач. >- ค่าต่ำสุดของช่วงประเภท<макс. знач. >- ค่าสูงสุดของมัน

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

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

อักขระ “..” สองตัวจะถือเป็นอักขระตัวเดียว ดังนั้นจึงไม่อนุญาตให้มีช่องว่างระหว่างอักขระเหล่านั้น ขอบด้านซ้ายของช่วงไม่ควรเกินขอบด้านขวา

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

ไลบรารีมาตรฐาน Object Pascal ประกอบด้วยสองฟังก์ชันที่รองรับการทำงานกับประเภทช่วง:

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

ต่ำ (x) - ส่งคืนค่าต่ำสุดของประเภทช่วง

ประเภทจริง

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

ตารางที่ 1.4 - ประเภทจริง

ในครั้งก่อน รุ่นเดลฟี 1...3 ประเภทจริงมีขนาด 6 ไบต์และมีช่วงค่าตั้งแต่ 2.9*10-39 ถึง 1.7*1038 ในเวอร์ชัน 4 และ 5 ประเภทนี้เทียบเท่ากับประเภท Double หากคุณต้องการ (เพื่อเหตุผลด้านความเข้ากันได้) เพื่อใช้ Reals ขนาด 6 ไบต์ คุณจะต้องระบุคำสั่งคอมไพเลอร์ (SREALCOMPATIBILITY ON)

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

นี่คือหลักเครื่องหมายของตัวเลข e - ส่วนเอ็กซ์โปเนนเชียล; มีลำดับไบนารี m คือแมนทิสซาของตัวเลข

mantissa m มีความยาวตั้งแต่ 23 (สำหรับเลขฐานเดียว) ถึง 63 (สำหรับเลขฐานสองแบบขยาย) ซึ่งช่วยให้มั่นใจได้ถึงความแม่นยำ 7...8 สำหรับเลขฐานสิบเดี่ยวและ 19...20 สำหรับเลขฐานสิบแบบขยาย จุดทศนิยม (ลูกน้ำ) จะแสดงเป็นนัยก่อนหลักซ้าย (สำคัญที่สุด) ของแมนทิสซา แต่เมื่อทำงานกับตัวเลข ตำแหน่งจะเลื่อนไปทางซ้ายหรือขวาตามลำดับไบนารี่ของตัวเลขที่เก็บไว้ในส่วนเอ็กซ์โปเนนเชียล ดังนั้นการดำเนินการกับจำนวนจริงจึงเรียกว่าเลขคณิตจุดลอยตัว (ลูกน้ำ)

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

ตำแหน่งพิเศษใน Object Pascal ถูกครอบครองโดยประเภท comp และสกุลเงิน ซึ่งถือเป็นตัวเลขจริงที่มีเศษส่วนของความยาวคงที่: ใน comp ส่วนที่เศษส่วนมีความยาว 0 หลัก กล่าวคือ ขาดไปในสกุลเงิน ความยาวของส่วนที่เป็นเศษส่วนคือทศนิยม 4 ตำแหน่ง ในความเป็นจริง ทั้งสองประเภทกำหนดจำนวนเต็มขนาดใหญ่ที่มีลายเซ็นซึ่งเก็บเลขทศนิยมที่สำคัญ 19...20 หลัก (ภายในมี 8 ไบต์ที่ต่อเนื่องกัน) ในเวลาเดียวกัน นิพจน์คอมพ์และสกุลเงินเข้ากันได้อย่างสมบูรณ์กับประเภทจริงอื่น ๆ: การดำเนินการจริงทั้งหมดถูกกำหนดไว้ สามารถใช้เป็นอาร์กิวเมนต์ของฟังก์ชันทางคณิตศาสตร์ ฯลฯ พื้นที่ที่เหมาะสมที่สุดของการใช้งานสำหรับประเภทเหล่านี้คือ การคำนวณทางบัญชี



 


อ่าน:


ใหม่

วิธีฟื้นฟูรอบประจำเดือนหลังคลอดบุตร:

การใช้สไตล์ใน Excel วิธีสร้างสไตล์ใหม่ของคุณเอง

การใช้สไตล์ใน Excel วิธีสร้างสไตล์ใหม่ของคุณเอง

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

เกิดข้อผิดพลาดอะไรระหว่างการติดตั้ง?

เกิดข้อผิดพลาดอะไรระหว่างการติดตั้ง?

หมายเหตุ: โปรแกรม AutoLISP สามารถทำงานได้บน AutoCAD เวอร์ชันเต็มเท่านั้น โดยจะไม่ทำงานภายใต้ AutoCAD LT (ไม่รวมกรณีโหลด...

สถานภาพทางสังคมของบุคคลในสังคม

สถานภาพทางสังคมของบุคคลในสังคม

เสนอแนะสิ่งที่กำหนดการเลือกสถานะหลักของบุคคล การใช้ข้อความและข้อเท็จจริงของชีวิตทางสังคม ตั้งสมมติฐานสองข้อ และ...

การตีความข้อผิดพลาดแบบเต็ม

การตีความข้อผิดพลาดแบบเต็ม

มีผู้ใช้จำนวนไม่น้อยที่ต้องเผชิญกับปรากฏการณ์หน้าจอสีน้ำเงินแห่งความตาย จะทำอย่างไร (Windows 7 มักเกิดปัญหานี้บ่อยที่สุด)...

ฟีดรูปภาพ อาร์เอสเอส