ค่า ในทางวิทยาการคอมพิวเตอร์ หมายถึงนิพจน์ที่ไม่สามารถประเมินค่าต่อได้อีก (รูปแบบบรรทัดฐาน) สมาชิกของแบบชนิดก็คือค่าของแบบชนิดนั้น ตัวอย่างเช่น นิพจน์ 1 + 2
ยังไม่เรียกว่าเป็นค่า เพราะยังสามารถลดทอนได้อีกเป็นนิพจน์ 3
แต่นิพจน์ 3
ก็ไม่สามารถลดทอนได้มากกว่านี้อีกแล้วดังนั้นมันจึงเป็นค่า
ค่าของตัวแปร จะถูกกำหนดโดยการจับคู่ที่สอดคล้องกันในสภาพแวดล้อมของแบบชนิด (typing environment) ในภาษาโปรแกรมที่ตัวแปรสามารถกำหนดค่าได้ การแยกออกเป็น ค่าทางขวา (r-value คือเนื้อหา) และค่าทางซ้าย (l-value คือตำแหน่ง) ในการกำหนดค่าของตัวแปรเป็นสิ่งจำเป็น
ในภาษาโปรแกรมเชิงประกาศ (ระดับสูง) ค่าจะต้องมีคุณสมบัติความโปร่งใสเชิงอ้างอิง (referential transparency) หมายความว่า ค่าผลลัพธ์เป็นอิสระจากตำแหน่งของหน่วยความจำที่เก็บบันทึกซึ่งนิพจน์ (หรือนิพจน์ย่อย) จำเป็นต้องใช้คำนวณหาค่า เฉพาะเนื้อหาที่ตำแหน่งนั้น (คือบิตต่าง ๆ อันประกอบด้วย 0 และ 1) และการตีความของมันเท่านั้นที่มีนัยสำคัญ
ค่าทางซ้ายและค่าทางขวา
ภาษาโปรแกรมบางภาษาใช้แนวคิด ค่าทางซ้าย (l-value) และ ค่าทางขวา (r-value) กล่าวคือ ค่าทางซ้ายมีตำแหน่งหน่วยความจำที่สามารถเข้าถึงได้โดยโปรแกรมที่กำลังทำงาน (ผ่านตัวดำเนินการตำแหน่งเช่น "&" ในภาษาซี/ซีพลัสพลัสเป็นต้น) หมายความว่าค่าทางซ้ายจะเป็นตัวแปร หรือตัวอ้างอิงที่ถูกอ้างอิงกลับไปยังตำแหน่งที่เจาะจง ส่วนค่าทางขวาอาจเหมือนค่าทางซ้ายหรือไม่เหมือนก็ได้ (ศัพท์ ค่าทางขวา ถูกใช้เพื่อแยกความหมายออกจาก ค่าทางซ้าย เท่านั้น) ให้ลองพิจารณานิพจน์ของภาษาซี 4 + 9
เมื่อทำงาน คอมพิวเตอร์จะสร้างค่าจำนวนเต็ม 13 ขึ้นมา แต่เนื่องจากโปรแกรมยังไม่ได้กำหนดอย่างชัดเจนว่าค่า 13 นี้จะเก็บไว้ที่ใดในคอมพิวเตอร์ ดังนั้นนิพจน์ดังกล่าวจึงเป็นค่าทางขวา ในทางตรงข้าม ถ้าโปรแกรมภาษาซีประกาศตัวแปร x และกำหนดค่า 13 ให้กับ x ดังนั้นนิพจน์ x
ก็จะมีค่าเป็น 13 และเป็นค่าทางซ้าย
ศัพท์ ค่าทางซ้าย ในภาษาซี เดิมทีหมายถึงบางสิ่งบางอย่างที่สามารถกำหนดค่าได้ (ด้วยชื่อของมันที่แสดงว่าอยู่ทางซ้ายของตัวดำเนินการกำหนดค่า) แต่ตั้งแต่มีคำสงวน const
(ค่าคงตัว) เพิ่มเข้ามาในภาษา ศัพท์ดังกล่าวกลายเป็น ค่าทางซ้ายที่ดัดแปรได้ (modifiable l-value)
นิพจน์ค่าทางซ้ายเป็นตัวกำหนด (หรืออ้างถึง) วัตถุ ค่าทางซ้ายประเภทดัดแปรไม่ได้ สามารถระบุตำแหน่งได้แต่เปลี่ยนแปลงค่าไม่ได้ ส่วนค่าทางซ้ายประเภทดัดแปรได้ อนุญาตให้วัตถุที่กำหนดสามารถระบุตำแหน่งและเปลี่ยนแปลงค่าได้ด้วย สำหรับค่าทางขวาสามารถเป็นนิพจน์อะไรก็ได้ รวมทั้งนิพจน์ที่ไม่มีการระบุตำแหน่ง
แนวคิดสัญกรณ์ค่าทางซ้ายและค่าทางขวาเสนอแนะขึ้นครั้งแรกในภาษาซีพีแอล
ค่าที่ใช้ในภาษาแอสเซมบลีสามารถเป็นข้อมูลเสมือนอะไรก็ได้โดยชนิดข้อมูลที่กำหนด ตัวอย่างเช่นสายอักขระ ตัวเลข หรือตัวอักษรตัวเดียว
ตัวประมวลผลส่วนใหญ่มีชุดคำสั่งหนึ่งชุดหรือมากกว่านั้นเพื่อเก็บบันทึก "ค่าใช้ทันที" (immediate value) ค่าใช้ทันทีที่เก็บไว้จะเป็นส่วนหนึ่งของชุดคำสั่งเมื่อเรียกใช้งาน ซึ่งมักจะบรรจุเข้า บวกเพิ่ม หรือลบออกจากเรจิสเตอร์ ชุดคำสั่งส่วนอื่นเป็นรหัสปฏิบัติการและเป้าหมาย อย่างหลังนี้บอกเป็นนัยว่า ค่าที่ไม่ได้ใช้ทันทีอาจยังหลงเหลืออยู่ในเรจิสเตอร์ หรือถูกเก็บอยู่ที่ใดสักแห่งในหน่วยความจำ ซึ่งจำเป็นต้องใช้ชุดคำสั่งที่มีการระบุตำแหน่งทางตรงหรือทางอ้อมไปยังค่านั้น
ตัวประมวลผลบางชนิดรองรับค่าใช้ทันทีที่มีขนาดมากกว่าหนึ่งหน่วย เช่น 8 บิตหรือ 16 บิต โดยใช้รหัสปฏิบัติการและรหัสช่วยจำที่เป็นเอกลักษณ์สำหรับแต่ละชุดคำสั่งที่แตกต่างกัน หากโปรแกรมเมอร์ให้ค่าของข้อมูลที่ไม่เหมาะสม แอสเซมเบลอร์จะแจ้งเตือนข้อความผิดพลาด "เกินพิสัย" (out of range) แอสเซมเบลอร์ส่วนมากอนุญาตให้ค่าใช้ทันทีแสดงออกเป็นข้อมูลแอสกี เลขฐานสิบ ฐานสิบหก ฐานแปด หรือฐานสอง ดังนั้นตัวอักขระ "A" จึงมีความหมายเหมือนกับ "65" หรือ "0x41" เป็นต้น ของสายอักขระอาจต่างกันไปในตัวประมวลผล ขึ้นอยู่กับแอสเซมเบลอร์และสถาปัตยกรรมคอมพิวเตอร์
หมายเหตุ
- Mitchell 1996, p. 92.
- Mitchell 1996, p. 9.
- Mitchell 1996, pp. 389–390.
อ้างอิง
แหล่งข้อมูลอื่น
- Value Object
- Transfer Object Pattern
wikipedia, แบบไทย, วิกิพีเดีย, วิกิ หนังสือ, หนังสือ, ห้องสมุด, บทความ, อ่าน, ดาวน์โหลด, ฟรี, ดาวน์โหลดฟรี, mp3, วิดีโอ, mp4, 3gp, jpg, jpeg, gif, png, รูปภาพ, เพลง, เพลง, หนัง, หนังสือ, เกม, เกม, มือถือ, โทรศัพท์, Android, iOS, Apple, โทรศัพท์โมบิล, Samsung, iPhone, Xiomi, Xiaomi, Redmi, Honor, Oppo, Nokia, Sonya, MI, PC, พีซี, web, เว็บ, คอมพิวเตอร์
kha inthangwithyakarkhxmphiwetxr hmaythungniphcnthiimsamarthpraeminkhatxidxik rupaebbbrrthdthan smachikkhxngaebbchnidkkhuxkhakhxngaebbchnidnn twxyangechn niphcn 1 2 yngimeriykwaepnkha ephraayngsamarthldthxnidxikepnniphcn 3 aetniphcn 3 kimsamarthldthxnidmakkwanixikaelwdngnnmncungepnkha khakhxngtwaepr cathukkahndodykarcbkhuthisxdkhlxngkninsphaphaewdlxmkhxngaebbchnid typing environment inphasaopraekrmthitwaeprsamarthkahndkhaid karaeykxxkepn khathangkhwa r value khuxenuxha aelakhathangsay l value khuxtaaehnng inkarkahndkhakhxngtwaeprepnsingcaepn inphasaopraekrmechingprakas radbsung khacatxngmikhunsmbtikhwamoprngisechingxangxing referential transparency hmaykhwamwa khaphllphthepnxisracaktaaehnngkhxnghnwykhwamcathiekbbnthuksungniphcn hruxniphcnyxy caepntxngichkhanwnhakha echphaaenuxhathitaaehnngnn khuxbittang xnprakxbdwy 0 aela 1 aelakartikhwamkhxngmnethannthiminysakhykhathangsayaelakhathangkhwaphasaopraekrmbangphasaichaenwkhid khathangsay l value aela khathangkhwa r value klawkhux khathangsaymitaaehnnghnwykhwamcathisamarthekhathungidodyopraekrmthikalngthangan phantwdaeninkartaaehnngechn amp inphasasi siphlsphlsepntn hmaykhwamwakhathangsaycaepntwaepr hruxtwxangxingthithukxangxingklbipyngtaaehnngthiecaacng swnkhathangkhwaxacehmuxnkhathangsayhruximehmuxnkid sphth khathangkhwa thukichephuxaeykkhwamhmayxxkcak khathangsay ethann ihlxngphicarnaniphcnkhxngphasasi 4 9 emuxthangan khxmphiwetxrcasrangkhacanwnetm 13 khunma aetenuxngcakopraekrmyngimidkahndxyangchdecnwakha 13 nicaekbiwthiidinkhxmphiwetxr dngnnniphcndngklawcungepnkhathangkhwa inthangtrngkham thaopraekrmphasasiprakastwaepr x aelakahndkha 13 ihkb x dngnnniphcn x kcamikhaepn 13 aelaepnkhathangsay sphth khathangsay inphasasi edimthihmaythungbangsingbangxyangthisamarthkahndkhaid dwychuxkhxngmnthiaesdngwaxyuthangsaykhxngtwdaeninkarkahndkha aettngaetmikhasngwn const khakhngtw ephimekhamainphasa sphthdngklawklayepn khathangsaythiddaeprid modifiable l value niphcnkhathangsayepntwkahnd hruxxangthung wtthu khathangsaypraephthddaeprimid samarthrabutaaehnngidaetepliynaeplngkhaimid swnkhathangsaypraephthddaeprid xnuyatihwtthuthikahndsamarthrabutaaehnngaelaepliynaeplngkhaiddwy sahrbkhathangkhwasamarthepnniphcnxairkid rwmthngniphcnthiimmikarrabutaaehnng aenwkhidsykrnkhathangsayaelakhathangkhwaesnxaenakhunkhrngaerkinphasasiphiaexlinphasaaexsesmblikhathiichinphasaaexsesmblisamarthepnkhxmulesmuxnxairkidodychnidkhxmulthikahnd twxyangechnsayxkkhra twelkh hruxtwxksrtwediyw twpramwlphlswnihymichudkhasnghnungchudhruxmakkwannephuxekbbnthuk khaichthnthi immediate value khaichthnthithiekbiwcaepnswnhnungkhxngchudkhasngemuxeriykichngan sungmkcabrrcuekha bwkephim hruxlbxxkcakercisetxr chudkhasngswnxunepnrhsptibtikaraelaepahmay xyanghlngnibxkepnnywa khathiimidichthnthixacynghlngehluxxyuinercisetxr hruxthukekbxyuthiidskaehnginhnwykhwamca sungcaepntxngichchudkhasngthimikarrabutaaehnngthangtrnghruxthangxxmipyngkhann twpramwlphlbangchnidrxngrbkhaichthnthithimikhnadmakkwahnunghnwy echn 8 bithrux 16 bit odyichrhsptibtikaraelarhschwycathiepnexklksnsahrbaetlachudkhasngthiaetktangkn hakopraekrmemxrihkhakhxngkhxmulthiimehmaasm aexsesmeblxrcaaecngetuxnkhxkhwamphidphlad ekinphisy out of range aexsesmeblxrswnmakxnuyatihkhaichthnthiaesdngxxkepnkhxmulaexski elkhthansib thansibhk thanaepd hruxthansxng dngnntwxkkhra A cungmikhwamhmayehmuxnkb 65 hrux 0x41 epntn khxngsayxkkhraxactangknipintwpramwlphl khunxyukbaexsesmeblxraelasthaptykrrmkhxmphiwetxrhmayehtuMitchell 1996 p 92 Mitchell 1996 p 9 Mitchell 1996 pp 389 390 xangxing 1996 Foundations for Programming Languages The MIT Press ISBN 0 262 13321 0 2000 Fundamental Concepts in Programming Languages 13 11 49 doi 10 1023 A 1010000313106 S2CID 14124601 aehlngkhxmulxunValue Object Transfer Object Pattern