E1 — مقيّم التعبيرات (الجزء 1: + و- من اليسار إلى اليمين)
نفّذوا مقيّمًا صغيرًا يتعامل مع + و- من اليسار إلى اليمين. وقسّموا الأرقام والعوامل إلى رموز، وتجاهلوا المسافات، وأضيفوا حواجز بسيطة
E1 — مقيّم التعبيرات (الجزء 1: + و- من اليسار إلى اليمين) درس مجاني في JavaScript Academy على CoddyKit. هذا هو الدرس 1 من أصل 3. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في JavaScript Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة JavaScript Academy 3 دروس في المجموع.
ما سنبنيه
الهدف: تقييم سلاسل رياضية صغيرة باستخدام + و- فقط.
- قسّم الأرقام والعوامل إلى رموز
- تجاهل المسافات
- احسب من اليسار إلى اليمين
- أضف حواجز بسيطة للتعامل مع الأخطاء

مقسّم الرموز: الأرقام والعوامل
ينشئ مقسّم الرموز الأرقام من الخانات، ويعيد مصفوفة مثل [12, "+", 3, "-", 4].
// Tokenize: split into numbers and operators; ignore spaces
function tokenize(expr) {
if (typeof expr !== "string") return null;
const tokens = [];
let num = "";
for (let i = 0; i < expr.length; i = i + 1) {
const ch = expr[i];
if (ch === " ") {
// skip spaces
continue;
}
if (ch >= "0" && ch <= "9") {
// build number
num = num + ch;
} else if (ch === "+" || ch === "-") {
// flush pending number
if (num.length > 0) {
tokens.push(Number(num));
num = "";
}
tokens.push(ch);
} else {
// unsupported character
return null;
}
}
if (num.length > 0) tokens.push(Number(num));
return tokens;
}
console.log("tokens:", tokenize("12 + 3 - 4"));
التقييم من اليسار إلى اليمين (+/-)
احسب من اليسار إلى اليمين. لا نتعامل بعد مع أولوية العمليات أو الأقواس.
// Evaluate tokens left-to-right for + and - only
function evalPlusMinus(tokens) {
if (!Array.isArray(tokens) || tokens.length === 0) return null;
// result starts with first number
let acc = tokens[0];
if (typeof acc !== "number") return null;
// step through [op, num] pairs
for (let i = 1; i < tokens.length; i = i + 2) {
const op = tokens[i];
const val = tokens[i + 1];
if ((op !== "+" && op !== "-") || typeof val !== "number") {
return null;
}
if (op === "+") acc = acc + val;
else acc = acc - val;
}
return acc;
}
console.log("eval 10-3-2:", evalPlusMinus([10, "-", 3, "-", 2]));
غلاف آمن
أنشئ غلافًا آمنًا يعيد إما قيمة أو سلسلة خطأ قصيرة مناسبة للمبتدئين.
// Glue the pieces: from string to result
function evalExprSimple(expr) {
const tokens = tokenize(expr);
if (tokens === null) {
return { ok: false, error: "Invalid character" };
}
const result = evalPlusMinus(tokens);
if (typeof result !== "number") {
return { ok: false, error: "Invalid sequence" };
}
return { ok: true, value: result };
}
console.log("12 + 3 - 4 =", evalExprSimple("12 + 3 - 4"));
console.log("bad char =", evalExprSimple("2 + a"));

شغّل حالات صغيرة
اجعل الأمثلة صغيرة. سنضيف أولوية العمليات والأقواس والناقص الأحادي في أجزاء لاحقة.
// A few quick checks
const cases = [
"0-3",
"7+5",
"10-3-2",
"2 + 2 + 2",
"9 - 1 + 1"
];
for (const c of cases) {
const r = evalExprSimple(c);
console.log(c, "=>", r.ok ? r.value : r.error);
}
// Note: unary minus (like "-3+2") not handled yet
// This simple version expects a number first

إرشادات للمبتدئين
نصائح:
- ابدأ بنطاق صغير، باستخدام + و- فقط.
- أعد أخطاء قصيرة بدلًا من إطلاق الاستثناءات.
- اكتب مساعدات صغيرة مثل tokenize وeval.
- أضف الميزات خطوةً فخطوة.

اختبار السلوك من اليسار إلى اليمين
تحقّق سريع: النتيجة من اليسار إلى اليمين.

مراجعة
مراجعة: قسّم الأرقام والعوامل + و- إلى رموز، وتجاهل المسافات، وقيّم من اليسار إلى اليمين. أعد أخطاء قصيرة. التالي: أولوية العمليات والأقواس.

الأسئلة الشائعة
هل درس «E1 — مقيّم التعبيرات (الجزء 1: + و- من اليسار إلى اليمين)» مجاني؟
نعم — نص درس «E1 — مقيّم التعبيرات (الجزء 1: + و- من اليسار إلى اليمين)» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة JavaScript Academy، انتقل إلى CoddyKit PRO. تتضمن دورة JavaScript Academy 3 دروس في المجموع.
ماذا ستتعلم في «E1 — مقيّم التعبيرات (الجزء 1: + و- من اليسار إلى اليمين)»؟
نفّذوا مقيّمًا صغيرًا يتعامل مع + و- من اليسار إلى اليمين. وقسّموا الأرقام والعوامل إلى رموز، وتجاهلوا المسافات، وأضيفوا حواجز بسيطة تتمرن على JavaScript Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ JavaScript Academy؟
لا تُشترط خبرة سابقة. JavaScript Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 3.
كم من الوقت يستغرق درس «E1 — مقيّم التعبيرات (الجزء 1: + و- من اليسار إلى اليمين)»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس JavaScript Academy هذا؟
نعم. كل درس في JavaScript Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- E1 — مقيّم التعبيرات (الجزء 1: + و- من اليسار إلى اليمين)
- E2 — محلّل السجلات (مرشحات وعدّادات بسيطة)
- E3 — مجموعة أو طابور Promise (التزامن غير المتزامن)