ข้ามไปเนื้อหา

สายอักขระว่าง

จากวิกิพีเดีย สารานุกรมเสรี

ในวิทยาการคอมพิวเตอร์และภาษารูปนัย สายอักขระว่าง (อังกฤษ: empty string, null string[1]) หมายถึงสายอักขระที่มีหนึ่งเดียวที่มีความยาวเป็นศูนย์

ทฤษฎีรูปนัย

[แก้]

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

ไม่ควรสับสนระหว่างสายอักขระว่าง λ กับภาษาว่าง ∅ เพราะภาษาว่างหมายถึงภาษารูปนัยที่ไม่มีสายอักขระใด ๆ อยู่เลย ไม่มีแม้กระทั่งสายอักขระว่าง

สายอักขระว่างมีสมบัติหลายประการดังนี้

  • สายอักขระว่างมีความยาวเท่ากับศูนย์
  • สายอักขระว่างเป็นสมาชิกเอกลักษณ์ของการต่อกันของสายอักขระ (concatenation) (ซึ่งทำให้เกิดโมนอยด์อิสระ (free monoid) บนอักษร Σ)
  • การเรียงลำดับย้อนกลับของสายอักขระว่างก็ได้สายอักขระว่าง
  • สายอักขระว่างจะอยู่ลำดับแรกสุดในการจัดลำดับแบบพจนานุกรม (lexicographical order) เพราะว่ามันมีความยาวสั้นที่สุดจากสายอักขระทั้งหมด [2]

การใช้ในภาษาโปรแกรม

[แก้]

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

ภาษาโปรแกรมส่วนใหญ่สามารถใช้ "" หรือ '' แทนสายอักขระว่าง λ แต่ก็ยังมีบางภาษาที่สามารถเขียนในรูปแบบอื่นได้อีก เช่น

ตัวแทนของ λ ภาษาโปรแกรม
"" ซี, ซีพลัสพลัส, เพิร์ล, ไพทอน, ซีชาร์ป, โก, พีเอชพี, วิชวลเบสิกดอตเน็ต, จาวา, ทัวริง, จาวาสคริปต์, แฮสเคลล์, อ็อบเจกทีฟ-ซี (แบบสายอักขระภาษาซี), โอแคเมล, มาร์กอัป (แบบมาตรฐาน), สกาลา, ทีซีแอล
'' เพิร์ล, พีเอชพี, ไพทอน, จาวาสคริปต์, เดลไฟ, ปาสกาล
{'\0'} ซี, ซีพลัสพลัส, อ็อบเจกทีฟ-ซี (แบบสายอักขระภาษาซี)
std::string() ซีพลัสพลัส
@"" อ็อบเจกทีฟ-ซี (แบบวัตถุ NSString)
[NSString string] อ็อบเจกทีฟ-ซี (แบบวัตถุ NSString)
qw() เพิร์ล
""""""
str()
ไพทอน
string.Empty ซีชาร์ป
String.Empty วิชวลเบสิกดอตเน็ต
String.make 0 '-' โอแคเมล
{} ทีซีแอล

อ้างอิง

[แก้]
  1. Kernighan and Ritchie, C, p. 38
  2. "CSE1002 Lecture Notes - Lexicographic" (PDF). คลังข้อมูลเก่าเก็บจากแหล่งเดิม (PDF)เมื่อ 2009-12-29. สืบค้นเมื่อ 2012-06-27.

ดูเพิ่ม

[แก้]