Variables and Constants — متغیرات اور مستقلات
This document covers how to declare, assign, and work with variables and constants in the Urdu Programming Language.
اردو: یہ دستاویز اردو پروگرامنگ لینگویج میں متغیرات اور مستقلات کو ڈکلیئر کرنے، اسائن کرنے اور استعمال کرنے کا طریقہ بیان کرتی ہے۔
Table of Contents
- متغیر — Variables
- مستقل — Constants
- Naming Rules
- Multiple Assignment
- Destructuring Assignment — Objects
- Destructuring Assignment — Arrays
- Default Values in Destructuring
- Nested Destructuring
- Swap Variables
- Practical Examples
متغیر — Variables
The keyword متغیر declares a variable. Variables declared with متغیر can be reassigned at any time. They are block-scoped.
اردو:
متغیرکلیدی لفظ متغیر ڈکلیئر کرتا ہے۔متغیرسے بنائے گئے متغیرات کو کسی بھی وقت دوبارہ اسائن کیا جا سکتا ہے۔ یہ بلاک سکوپڈ ہوتے ہیں — یعنی صرف اس بلاک میں دستیاب ہوتے ہیں جہاں بنائے گئے۔
Syntax:
Basic examples:
متغیر عمر = 25;
متغیر نام = "احمد";
متغیر قیمت = 99.5;
متغیر فعال = سچ;
متغیر خالی_قدر = خالی;
لکھو(عمر); // 25
لکھو(نام); // احمد
لکھو(قیمت); // 99.5
لکھو(فعال); // true
لکھو(خالی_قدر); // null
Reassigning a variable:
اردو: متغیر کو کسی بھی وقت نئی قدر دی جا سکتی ہے۔ پہلے صفر ہے، پھر 10، پھر 15 ہو گیا۔
Declaring without an initial value:
A variable declared without a value is غیر_معرف (undefined) until assigned.
اردو: اگر متغیر بناتے وقت قدر نہ دیں تو وہ
غیر_معرف(undefined) ہوتا ہے۔ بعد میں جب چاہیں قدر دے سکتے ہیں۔
مستقل — Constants
The keyword مستقل declares a constant. Once assigned, a constant cannot be reassigned. It is also block-scoped.
اردو:
مستقلکلیدی لفظ مستقل ڈکلیئر کرتا ہے۔ ایک بار قدر دینے کے بعد اسے تبدیل نہیں کیا جا سکتا۔ یہ بھی بلاک سکوپڈ ہے۔
Syntax:
Basic examples:
مستقل پائی = 3.14159;
مستقل زبان = "اردو";
مستقل سال = 2024;
لکھو(پائی); // 3.14159
لکھو(زبان); // اردو
لکھو(سال); // 2024
Note: Attempting to reassign a constant will throw a
TypeErrorat runtime.اردو: نوٹ: مستقل کو دوبارہ اسائن کرنے کی کوشش کرنے پر پروگرام چلتے وقت
TypeErrorغلطی آئے گی۔
Constants with objects and arrays:
The reference is constant, but the contents of objects and arrays can still be mutated.
مستقل شخص = { نام: "فاطمہ", عمر: 30 };
شخص.عمر = 31; // جائز — object contents changed
لکھو(شخص.عمر); // 31
مستقل اعداد = [1, 2, 3];
اعداد.شامل(4); // جائز — array contents changed
لکھو(اعداد); // [1, 2, 3, 4]
اردو: مستقل کے ساتھ شے (object) یا فہرست (array) کی صورت میں — حوالہ مستقل ہے، لیکن اندر کا مواد تبدیل ہو سکتا ہے۔ یعنی
شخص.عمرتبدیل کر سکتے ہیں، لیکنشخصکو بالکل نئی شے نہیں دے سکتے۔
Naming Rules — نام رکھنے کے قواعد
Variable and constant names follow these rules:
| Rule | Details |
|---|---|
| Urdu identifiers | Names can be written entirely in Urdu script |
| Latin identifiers | Standard ASCII letters, digits, _ are also allowed |
| Mixed | Mixing Urdu and ASCII characters is allowed |
| Start character | Must start with a letter (Urdu or Latin) or _; not a digit |
| Reserved words | Language keywords (e.g., اگر, جبکہ) cannot be used as names |
| Case sensitive | نام and نام2 are different; x and X are different |
اردو: متغیر اور مستقل کے نام رکھنے کے قواعد: نام مکمل اردو میں، مکمل لاطینی میں یا دونوں ملا کر لکھ سکتے ہیں۔ نام کا پہلا حرف ہمیشہ حرف (اردو یا لاطینی) یا
_ہونا چاہیے — عدد سے شروع نہیں ہو سکتا۔ زبان کے کلیدی الفاظ (جیسےاگر،جبکہ) نام کے طور پر نہیں ہو سکتے۔ بڑے اور چھوٹے حروف الگ الگ سمجھے جاتے ہیں۔
Valid names:
متغیر نام_طالب_علم = "زینب";
متغیر _وقت = 0;
متغیر رقم1 = 500;
متغیر totalPrice = 1200;
متغیر قیمت_کل = 1200;
متغیر userName = "admin";
متغیر کاؤنٹر = 0;
Invalid names (will cause errors):
// متغیر 3رنگ = "سرخ"; // غلط — starts with digit
// متغیر اگر = 5; // غلط — reserved keyword
// متغیر نام رنگ = "سبز"; // غلط — space in name
اردو: اوپر کے درست نام قابلِ قبول ہیں — اردو، انگریزی یا ملے جلے۔ نیچے کے غلط نام: عدد سے شروع، کلیدی لفظ، یا نام میں خالی جگہ — یہ سب غلطی دیں گے۔
Multiple Assignment — متعدد اسائنمنٹ
You can declare multiple variables on a single line or assign the same value to multiple variables.
اردو: ایک ہی لائن میں کئی متغیرات ڈکلیئر کر سکتے ہیں یا ایک ہی قدر کئی متغیرات کو دے سکتے ہیں۔
Multiple declarations:
Chained assignment:
Declaring multiple constants:
مستقل چوڑائی = 800, اونچائی = 600;
مستقل رنگ_پس_منظر = "سفید", رنگ_سرخی = "#FF0000";
لکھو(چوڑائی, اونچائی);
اردو: زنجیری اسائنمنٹ میں
x = y = z = 10سے تینوں متغیرات ایک ساتھ 10 ہو جاتے ہیں۔
Destructuring Assignment — Objects — شے سے توڑنا
Object destructuring extracts properties from an object into named variables. The variable names must match the property keys.
اردو: شے سے توڑنا (object destructuring) کسی شے کی خاصیتوں کو نامدار متغیرات میں نکالتا ہے۔ متغیرات کے نام شے کی کلیدوں سے ملنے چاہیں۔
Note: Object destructuring (
متغیر { نام } = شے) is currently not supported. Use bracket notation instead:متغیر نام = شے["نام"].اردو: نوٹ: شے توڑنا (
متغیر { نام } = شے) فی الحال سپورٹ نہیں ہے۔ اس کی بجائے بریکٹ نوٹیشن استعمال کریں:متغیر نام = شے["نام"]۔
Basic object destructuring:
مستقل شخص = { نام: "عمر", عمر: 28, شہر: "کراچی" };
متغیر { نام, عمر, شہر } = شخص;
لکھو(نام); // عمر
لکھو(عمر); // 28
لکھو(شہر); // کراچی
Rename while destructuring (aliasing):
مستقل ملازم = { نام: "سارہ", عہدہ: "مینیجر" };
متغیر { نام: ملازم_نام, عہدہ: ملازم_عہدہ } = ملازم;
لکھو(ملازم_نام); // سارہ
لکھو(ملازم_عہدہ); // مینیجر
اردو: نام بدل کر توڑنے میں
نام: ملازم_نامکا مطلب ہے: شے سےنامنکالو اور اسےملازم_ناممتغیر میں رکھو۔
Destructuring in function parameters:
فنکشن تعارف({ نام, عمر }) {
لکھو(`میرا نام ${نام} ہے اور عمر ${عمر} سال ہے`);
}
تعارف({ نام: "حسن", عمر: 22 });
// میرا نام حسن ہے اور عمر 22 سال ہے
Collecting remaining properties with rest:
مستقل گاڑی = { برانڈ: "ٹویوٹا", ماڈل: "کورولا", رنگ: "سفید", سال: 2022 };
متغیر { برانڈ, ماڈل, ...باقی } = گاڑی;
لکھو(برانڈ); // ٹویوٹا
لکھو(ماڈل); // کورولا
لکھو(باقی); // { رنگ: "سفید", سال: 2022 }
اردو:
...باقیسے شے کی بچی ہوئی تمام خاصیتیں ایک نئی شے میں جمع ہو جاتی ہیں۔
Destructuring Assignment — Arrays — فہرست سے توڑنا
Array destructuring extracts elements by position.
اردو: فہرست سے توڑنا عناصر کو ان کی جگہ (position) کے حساب سے نکالتا ہے۔
Basic array destructuring:
مستقل رنگ = ["سرخ", "سبز", "نیلا"];
متغیر [پہلا, دوسرا, تیسرا] = رنگ;
لکھو(پہلا); // سرخ
لکھو(دوسرا); // سبز
لکھو(تیسرا); // نیلا
Skip elements:
مستقل اعداد = [10, 20, 30, 40, 50];
متغیر [پہلا, , تیسرا, , پانچواں] = اعداد;
لکھو(پہلا); // 10
لکھو(تیسرا); // 30
لکھو(پانچواں); // 50
اردو: درمیانی خانہ خالی چھوڑ کر عناصر چھوڑ سکتے ہیں —
[پہلا, , تیسرا]میں دوسرا عنصر نظرانداز ہو گیا۔
Rest element in arrays:
Destructuring from a function return:
اردو: فنکشن سے فہرست واپس کرنے پر اسے سیدھا توڑ کر الگ متغیرات میں رکھ سکتے ہیں — بہت صاف طریقہ!
Default Values in Destructuring — توڑنے میں پہلے سے طے قدریں
If a property or element is missing or غیر_معرف, a default value is used.
اردو: اگر کوئی خاصیت یا عنصر موجود نہ ہو یا
غیر_معرفہو تو پہلے سے طے قدر (default value) استعمال ہوتی ہے۔
Object destructuring with defaults:
مستقل ترتیبات = { تھیم: "گہرا" };
متغیر { تھیم = "روشن", زبان = "اردو", سائز = 14 } = ترتیبات;
لکھو(تھیم); // گہرا (موجود تھا)
لکھو(زبان); // اردو (پہلے سے طے)
لکھو(سائز); // 14 (پہلے سے طے)
Array destructuring with defaults:
مستقل رنگ = ["سرخ"];
متغیر [پہلا = "کالا", دوسرا = "سفید"] = رنگ;
لکھو(پہلا); // سرخ (موجود تھا)
لکھو(دوسرا); // سفید (پہلے سے طے)
Combined alias and default:
مستقل ڈیٹا = { قدر: خالی };
متغیر { قدر: نتیجہ = "ناپید" } = ڈیٹا;
لکھو(نتیجہ); // null (خالی موجود تھا — default only applies to undefined)
Note: Default values apply only when the value is
غیر_معرف. If the value isخالی(null), the default is NOT used.اردو: نوٹ: پہلے سے طے قدر صرف اس وقت استعمال ہوتی ہے جب قدر
غیر_معرف(undefined) ہو۔ اگر قدرخالی(null) ہو تو پہلے سے طے قدر نہیں لگتی —خالیوہاں رہتا ہے۔
Nested Destructuring — گہرا توڑنا
Destructuring can be nested to extract values from deeply nested structures.
اردو: توڑنے کو ایک دوسرے کے اندر لگا کر گہرے ڈھانچوں سے قدریں نکالی جا سکتی ہیں۔
Nested object destructuring:
مستقل کمپنی = {
نام: "ٹیک لیب",
پتہ: {
شہر: "لاہور",
ملک: "پاکستان"
}
};
متغیر { نام, پتہ: { شہر, ملک } } = کمپنی;
لکھو(نام); // ٹیک لیب
لکھو(شہر); // لاہور
لکھو(ملک); // پاکستان
Nested array destructuring:
مستقل میٹرکس = [[1, 2], [3, 4], [5, 6]];
متغیر [[الف, ب], [ج, د]] = میٹرکس;
لکھو(الف, ب); // 1 2
لکھو(ج, د); // 3 4
Mixed nested destructuring:
مستقل صارف = {
نام: "علی",
پتہ: { شہر: "اسلام آباد" },
ہنر: ["پروگرامنگ", "ڈیزائن"]
};
متغیر {
نام: صارف_نام,
پتہ: { شہر },
ہنر: [پہلا_ہنر]
} = صارف;
لکھو(صارف_نام); // علی
لکھو(شہر); // اسلام آباد
لکھو(پہلا_ہنر); // پروگرامنگ
اردو: گہرا توڑنا بہت طاقتور ہے — شے، فہرست اور ملے جلے ڈھانچے سب کو ایک ہی بار میں توڑا جا سکتا ہے۔
Swap Variables — متغیرات بدلنا
Array destructuring makes swapping two variables concise without a temporary variable.
اردو: فہرست توڑنا دو متغیرات کی قدریں بدلنے کا بہت آسان طریقہ ہے — کسی عارضی متغیر کی ضرورت نہیں!
متغیر الف = "پہلا";
متغیر ب = "دوسرا";
لکھو(الف, ب); // پہلا دوسرا
[الف, ب] = [ب, الف];
لکھو(الف, ب); // دوسرا پہلا
Rotating three variables:
اردو: تین متغیرات کو گھمانا بھی اتنا ہی آسان — ایک ہی لائن میں سب بدل جاتے ہیں۔
Practical Examples — عملی مثالیں
Storing user profile data:
مستقل صارف = {
نام: "مریم",
ای_میل: "maryam@example.com",
عمر: 27,
فعال: سچ
};
متغیر { نام, ای_میل, عمر, فعال } = صارف;
لکھو(`صارف: ${نام}`);
لکھو(`ای میل: ${ای_میل}`);
لکھو(`عمر: ${عمر}`);
لکھو(`فعال: ${فعال}`);
اردو: صارف کا ڈیٹا شے میں رکھ کر توڑنے سے صاف اور پڑھنے میں آسان کوڈ بنتا ہے۔
Configuration with defaults:
فنکشن ترتیب_دو(اختیارات = {}) {
متغیر {
میزبان = "localhost",
بندرگاہ = 3000,
محفوظ = جھوٹ,
ٹائم_آؤٹ = 5000
} = اختیارات;
لکھو(`${محفوظ ? "https" : "http"}://${میزبان}:${بندرگاہ}`);
لکھو(`ٹائم آؤٹ: ${ٹائم_آؤٹ}ms`);
}
ترتیب_دو({ میزبان: "example.com", محفوظ: سچ });
// https://example.com:3000
// ٹائم آؤٹ: 5000ms
اردو: یہ ایک عام نمونہ ہے — ترتیبات کی شے پاس کریں، جو نہ دی ہو وہ پہلے سے طے قدر استعمال کرے۔
Processing a list of students:
مستقل طلباء = [
{ نام: "احمد", نمبر: 85 },
{ نام: "بیا", نمبر: 92 },
{ نام: "ثمر", نمبر: 78 }
];
کے_لیے (متغیر { نام, نمبر } کا طلباء) {
متغیر درجہ = نمبر >= 90 ? "A" : نمبر >= 80 ? "B" : "C";
لکھو(`${نام}: ${نمبر} (${درجہ})`);
}
// احمد: 85 (B)
// بیا: 92 (A)
// ثمر: 78 (C)
Coordinate unpacking:
فنکشن مرکز_حاصل_کرو(شکل) {
مستقل { x = 0, y = 0, چوڑائی = 100, اونچائی = 100 } = شکل;
واپس [x + چوڑائی / 2, y + اونچائی / 2];
}
متغیر [مرکز_x, مرکز_y] = مرکز_حاصل_کرو({ x: 50, y: 50, چوڑائی: 200, اونچائی: 100 });
لکھو(`مرکز: (${مرکز_x}, ${مرکز_y})`);
// مرکز: (150, 100)
اردو: یہ آخری مثال دکھاتی ہے کہ شے توڑنا (پہلے سے طے قدروں کے ساتھ) اور فہرست توڑنا دونوں ایک ساتھ کیسے استعمال ہوتے ہیں — ایک نقطے کا مرکز نکالنا بہت آسان ہو گیا۔