קבוע (תכנות)

בתכנות, קבוע הוא מזהה שערכו נקבע פעם אחת בעת הגדרתו, ולא ניתן לשנותו לאחר מכן, בניגוד למשתנה, שניתן לשנות את ערכו שוב ושוב. בשפות תכנות רבות ניתן להגדיר קבוע באמצעות מילה שמורה המיועדת לו, כך שניסיון לשנות את ערכו יגרום לשגיאה.

שימוש בקבועים נפוץ כאשר מצהירים על ערכים קבועים, כמו קבועים מתמטיים, הגדרות תצורה, והגדרות נוספות של נתונים שאמורים להישאר קבועים במהלך כל ריצת התוכנה. שימוש בקבוע משפר את קריאות הקוד כיוון שהוא מציין בבירור אילו ערכים אמורים להישאר ללא שינוי, ויכול למנוע באגים על ידי מניעה של שינויים לא מכוונים.

קבוע יכול להיות מוגדר בזמן ריצה (Runtime constant), כך שהוא יוגדר מחדש בכל ריצה של התוכנית, ובשפות מקומפלות, ניתן להגדיר קבוע גם בזמן קומפילציה (Compile-time constant), כך שערכו יקבע מראש עבור כל הריצות של התוכנית. קבוע קומפילציה יכול לחסוך חישובים בזמן ריצה, ולכן אפשרות זו אופטימלית יותר, אולם לעיתים ערכו של הקבוע תלוי בגורמים ייחודים לכל ריצה, ויש צורך להגדיר אותו רק בזמן הריצה. כמו כן, ישנן שפות שאינן מקופלות לפני הריצה או שלא ניתן להגדיר בהן קבוע קומפילציה.

בשפות מסוימות לא קיימים קבועים. בפייתון למשל קיימים רק משתנים, אך קיימת מוסכמה לפיה שמם של משתנים רגילים יהיה באותיות קטנות, ושמם של קבועים יהיה באותיות גדולות. מנגנון זה משאיר בידי המתכנת אפשרות לשנות את הערך בהמשך התוכנית, אולם האותיות הגדולות יסמנו לו שהוא מנסה לשנות קבוע.

 דוגמה ב-JavaScript 
const SYMBOL = '*'
const MSG = 'Lets go!'
const HOUR = 1000 * 60 * 60
const LETTERS = 'abcdefghijklmnopqrstuvwxyz'
const PIN_CODE = '0796'ב-JavaScript, הקבוע הוא רדוד (Shallow), כלומר, הערך המוצבע אינו קבוע:const num = 9
// Changing const is not allowed:
// num = 11
const nums = [4, 8]
// Changing the pointer is not allowed:
// nums = []
// const is shallow, this works fine:
nums.push(11)
nums.splice(1, 1)
console.log(nums)דוגמה נוספת:const pet = { name: 'Bobi', age: 4 }

// Changing the pointer is not allowed:
// pet = null

// const is shallow, this works fine:
pet.age++
pet.score = 100
console.log(pet)

קטגוריה:תכנות