ส่วนของเว็บไซต์
ตัวเลือกของบรรณาธิการ:
- การสร้างทางลัดบนเดสก์ท็อปสำหรับเพื่อนร่วมชั้น
- หากรองเท้าไม่พอดีกับ Aliexpress: การกระทำที่ถูกต้องในกรณีนี้ ผลิตภัณฑ์ Aliexpress มีขนาดที่เหมาะสม
- ข้อพิพาทใน AliExpress เข้าร่วมข้อพิพาทใน AliExpress
- 3 ฐานข้อมูลแบบกระจาย
- ผู้จัดการเนื้อหา - ความรับผิดชอบ เงินเดือน การฝึกอบรม ข้อเสียและข้อดีของการทำงานเป็นผู้เชี่ยวชาญด้านเนื้อหา
- จะป้องกันตัวเองจากการขุดที่ซ่อนอยู่ในเบราว์เซอร์ของคุณได้อย่างไร?
- การกู้คืนรหัสผ่านใน Ask
- วิธีเปิดกล้องบนแล็ปท็อป
- ทำไมเพลงไม่เล่นบน VKontakte?
- วิธีเพิ่มขนาดของไดรฟ์ C โดยเสียค่าใช้จ่ายของไดรฟ์ D โดยไม่สูญเสียข้อมูล
การโฆษณา
ประเภทข้อมูลพื้นฐานและโครงสร้างหลัก 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 จึงช่วยให้คุณรักษาความลึกของต้นไม้ให้น้อยกว่าความลึกของต้นไม้ไบนารีได้ ด้วยการจำกัดช่องว่างภายใน ทำให้เป็นไปได้ที่ระดับกลางเพื่อรักษาจำนวนหน่วยความจำที่ใช้ภายในขีดจำกัดที่กำหนดไว้อย่างชัดเจน และในขณะเดียวกันก็สามารถเพิ่มข้อมูลไปยังตำแหน่งที่เหมาะสมได้ทันที คอมโพสิต, หรือ โครงสร้างประเภทข้อมูลตรงกันข้ามกับประเภทข้อมูลธรรมดา กำหนดชุดของค่าที่ซับซ้อนด้วยชื่อสามัญเพียงชื่อเดียว เราสามารถพูดได้ว่าประเภทโครงสร้างกำหนดวิธีการสร้างประเภทข้อมูลใหม่โดยอิงจากข้อมูลที่มีอยู่ ดังนั้นจึงเป็นไปได้ที่จะสร้างโครงสร้างข้อมูลที่มีความซับซ้อนตามอำเภอใจ ดังนั้นจึงเป็นไปได้ที่จะบรรลุการเป็นตัวแทนที่เพียงพอในโปรแกรมของข้อมูลที่ดำเนินการอยู่ มีหลายวิธีในการจัดโครงสร้าง ซึ่งแต่ละวิธีจะอ้างถึงส่วนประกอบแต่ละส่วนที่แตกต่างกัน ดังนั้น ในลักษณะที่อ้างถึงส่วนประกอบต่างๆ ที่รวมอยู่ในข้อมูลโครงสร้าง ตามวิธีการจัดองค์กรและประเภทของส่วนประกอบในประเภทข้อมูลที่ซับซ้อน มีความหลากหลายดังต่อไปนี้:
ต่างจากประเภทข้อมูลธรรมดา ข้อมูลประเภทที่มีโครงสร้างมีลักษณะเฉพาะด้วยองค์ประกอบหลายหลากที่ก่อตัวเป็นประเภทนี้ เช่น ตัวแปรหรือค่าคงที่ประเภทที่มีโครงสร้างมักจะมีองค์ประกอบหลายส่วนเสมอ แต่ละส่วนประกอบสามารถอยู่ในประเภทที่มีโครงสร้างได้ กล่าวคือ สามารถทำรังได้ วรรณกรรม
บทที่ 6 โครงสร้าง ชนิดข้อมูลกำหนดชุดของค่าที่ถูกต้องและชุดของการดำเนินการที่ถูกต้อง ประเภทเรียบง่าย ประเภทง่าย ๆ แบ่งออกเป็น ORDINAL และ REAL 1. ประเภทการสั่งซื้อ , ในทางกลับกันก็มี: ก) ทั้งหมด Pascal กำหนดประเภทจำนวนเต็ม 5 ประเภท ซึ่งถูกกำหนดขึ้นอยู่กับเครื่องหมายและค่าที่ตัวแปรจะใช้
ข) ตรรกะ ชื่อของประเภทนี้คือ BOOLEAN ค่าบูลีนสามารถเป็นหนึ่งในค่าคงที่บูลีน: TRUE (จริง) หรือ FALSE (เท็จ) ค) สัญลักษณ์ ชื่อประเภทนี้คือ CHAR - มีพื้นที่ 1 ไบต์ ค่าของประเภทอักขระคือชุดของอักขระ PC ทั้งหมด อักขระแต่ละตัวถูกกำหนดให้เป็นจำนวนเต็มในช่วง 0…255 หมายเลขนี้ทำหน้าที่เป็นรหัสสำหรับการแสดงสัญลักษณ์ภายใน 2. ประเภทจริง . ต่างจากประเภทลำดับซึ่งค่าจะถูกแมปกับชุดจำนวนเต็มเสมอและดังนั้นจึงแสดงอย่างแน่นอนในพีซี ค่าของประเภทจริงจะกำหนดตัวเลขที่กำหนดเองด้วยความแม่นยำจำกัดบางประการเท่านั้น ขึ้นอยู่กับรูปแบบภายในของจำนวนจริง .
ประเภทที่มีโครงสร้าง ประเภทข้อมูลที่มีโครงสร้างจะกำหนดการเก็บรวบรวมตัวแปรสเกลาร์ตามลำดับและมีลักษณะเฉพาะตามประเภทของส่วนประกอบ ประเภทข้อมูลที่มีโครงสร้างต่างจากประเภทข้อมูลธรรมดาที่กำหนดค่าที่ซับซ้อนจำนวนมากด้วยชื่อสามัญเพียงชื่อเดียว เราสามารถพูดได้ว่าประเภทโครงสร้างกำหนดวิธีการสร้างประเภทใหม่จากสิ่งที่มีอยู่ มีวิธีการจัดโครงสร้างหลายวิธี ตามวิธีการจัดองค์กรและประเภทของส่วนประกอบในประเภทข้อมูลที่ซับซ้อน มีความหลากหลายดังต่อไปนี้: ประเภทปกติ (อาร์เรย์); ประเภทรวม (บันทึก); ประเภทไฟล์ (ไฟล์); หลายประเภท; ประเภทสตริง (สตริง); ในภาษา 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 - ประเภทจำนวนเต็ม
ประเภท 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 - ขั้นตอนมาตรฐานและฟังก์ชันที่ใช้กับทุกประเภท
เมื่อดำเนินการกับจำนวนเต็ม ประเภทผลลัพธ์จะสอดคล้องกับประเภทของตัวถูกดำเนินการ และหากตัวถูกดำเนินการมีประเภทจำนวนเต็มต่างกัน ซึ่งเป็นประเภททั่วไปที่มีตัวถูกดำเนินการทั้งสองตัว ตัวอย่างเช่น เมื่อทำงานกับ 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 ไบต์ที่ต่อเนื่องกัน) ในเวลาเดียวกัน นิพจน์คอมพ์และสกุลเงินเข้ากันได้อย่างสมบูรณ์กับประเภทจริงอื่น ๆ: การดำเนินการจริงทั้งหมดถูกกำหนดไว้ สามารถใช้เป็นอาร์กิวเมนต์ของฟังก์ชันทางคณิตศาสตร์ ฯลฯ พื้นที่ที่เหมาะสมที่สุดของการใช้งานสำหรับประเภทเหล่านี้คือ การคำนวณทางบัญชี |
อ่าน: |
---|
ใหม่
- หากรองเท้าไม่พอดีกับ Aliexpress: การกระทำที่ถูกต้องในกรณีนี้ ผลิตภัณฑ์ Aliexpress มีขนาดที่เหมาะสม
- ข้อพิพาทใน AliExpress เข้าร่วมข้อพิพาทใน AliExpress
- 3 ฐานข้อมูลแบบกระจาย
- ผู้จัดการเนื้อหา - ความรับผิดชอบ เงินเดือน การฝึกอบรม ข้อเสียและข้อดีของการทำงานเป็นผู้เชี่ยวชาญด้านเนื้อหา
- จะป้องกันตัวเองจากการขุดที่ซ่อนอยู่ในเบราว์เซอร์ของคุณได้อย่างไร?
- การกู้คืนรหัสผ่านใน Ask
- วิธีเปิดกล้องบนแล็ปท็อป
- ทำไมเพลงไม่เล่นบน VKontakte?
- วิธีเพิ่มขนาดของไดรฟ์ C โดยเสียค่าใช้จ่ายของไดรฟ์ D โดยไม่สูญเสียข้อมูล
- สาเหตุของการทำงานผิดพลาดบนเมนบอร์ด หากชิปเซ็ตบนเมนบอร์ดเกิดไฟไหม้