امتحان JS 1: المتغيرات، الأنواع، والدوال (10 تمارين مركبة)
امتحان JS 1: أساسيات جافاسكريبت
اختبر مهاراتك في أساسيات لغة JavaScript، بدءاً من تعريف المتغيرات وصولاً إلى كتابة الدوال البسيطة.
تمرين 1
المتغيرات (Variables)
قم بتعريف المتغيرات التالية باستخدام الكلمات المفتاحية المناسبة (let, const):
- متغير باسم `userName` قيمته "أحمد" (قابل للتغيير).
- متغير باسم `PI` قيمته 3.14 (غير قابل للتغيير).
- حاول تغيير قيمة `PI` إلى 3.15 واشرح ماذا سيحدث في تعليق.
الحل
let userName = "أحمد";
const PI = 3.14;
// PI = 3.15;
// سيحدث خطأ (TypeError) لأن المتغيرات المعرفة بـ const لا يمكن إعادة تعيين قيمتها.
تمرين 2
أنواع البيانات (Data Types)
أنشئ متغيرات تمثل الأنواع التالية:
- سلسلة نصية (String) باسم `message` تحتوي على "مرحباً".
- رقم (Number) باسم `age` قيمته 25.
- قيمة منطقية (Boolean) باسم `isStudent` قيمتها true.
- تحقق من نوع المتغير `age` باستخدام `typeof` واطبع النتيجة في الكونسول.
الحل
let message = "مرحباً";
let age = 25;
let isStudent = true;
console.log(typeof age); // سيطبع: "number"
تمرين 3
العمليات الحسابية (Arithmetic Operators)
قم بإجراء العمليات التالية:
- عرف متغيرين `x = 10` و `y = 5`.
- اطبع ناتج جمعهما.
- اطبع ناتج ضربهما.
- اطبع باقي قسمة `x` على `3` (Modulus).
الحل
let x = 10;
let y = 5;
console.log(x + y); // 15
console.log(x * y); // 50
console.log(x % 3); // 1 (لأن 10 تقسيم 3 يساوي 3 والباقي 1)
تمرين 4
دمج النصوص (String Concatenation)
كون جملة كاملة:
- لديك المتغيرات: `firstName = "علي"`, `lastName = "محمد"`.
- أنشئ متغيراً `fullName` يجمع الاسمين مع مسافة بينهما.
- استخدم "Template Literals" (التي تستخدم `` ` ``) لطباعة جملة "مرحباً يا [الاسم الكامل]".
الحل
let firstName = "علي";
let lastName = "محمد";
let fullName = firstName + " " + lastName;
console.log(`مرحباً يا ${fullName}`);
تمرين 5
الدوال البسيطة (Functions)
أنشئ دالة باسم `greet`:
- تستقبل وسيطاً (parameter) واحد هو `name`.
- تعيد (return) جملة "Hello, [name]!".
- استدعِ الدالة مع الاسم "سارة" واطبع النتيجة في الكونسول.
الحل
function greet(name) {
return "Hello, " + name + "!";
}
console.log(greet("سارة")); // Hello, سارة!
تمرين 6
عوامل المقارنة (Comparison Operators)
ما ناتج العمليات التالية (true/false)؟ اكتب الكود للتحقق:
- هل `5 == "5"` (مساواة في القيمة)؟
- هل `5 === "5"` (مساواة في القيمة والنوع)؟
- هل `10 > 5` و `5 < 2` (استخدم AND `&&`)؟
الحل
console.log(5 == "5"); // true
console.log(5 === "5"); // false
console.log(10 > 5 && 5 < 2); // false (لأن الشرط الثاني خطأ)
تمرين 7
الكائنات البسيطة (Objects)
أنشئ كائناً (Object) يمثل سيارة:
- يحتوي على الخصائص: `brand` (تويوتا)، `model` (كورولا)، `year` (2020).
- قم بتغيير خاصية `year` لتصبح 2022.
- اطبع جملة "سيارتي هي [brand] [model]" باستخدام خصائص الكائن.
الحل
let car = {
brand: "تويوتا",
model: "كورولا",
year: 2020
};
car.year = 2022;
console.log(`سيارتي هي ${car.brand} ${car.model}`);
تمرين 8
المصفوفات (Arrays)
تعامل مع قائمة من الألوان:
- أنشئ مصفوفة `colors` تحتوي على: "أحمر"، "أخضر"، "أزرق".
- اطبع العنصر الأول في المصفوفة.
- أضف لوناً جديداً "أصفر" إلى نهاية المصفوفة (push).
- اطبع طول المصفوفة (length).
الحل
let colors = ["أحمر", "أخضر", "أزرق"];
console.log(colors[0]); // أحمر
colors.push("أصفر");
console.log(colors.length); // 4
تمرين 9
العمليات المختصرة (Assignment Operators)
استخدم العمليات المختصرة لتحديث قيمة متغير:
- عرف متغيراً `score` قيمته 10.
- أضف 5 إلى `score` باستخدام `+=`.
- اضرب `score` في 2 باستخدام `*=`.
- أنقص 1 من `score` باستخدام `--`.
الحل
let score = 10;
score += 5; // أصبحت 15
score *= 2; // أصبحت 30
score--; // أصبحت 29
console.log(score);
تمرين 10
التعليقات والطباعة (Comments & Console)
قم بتنفيذ ما يلي:
- اكتب تعليقاً من سطر واحد.
- اكتب تعليقاً متعدد الأسطر.
- استخدم `console.error()` لطباعة رسالة خطأ وهمية "حدث خطأ ما".
- استخدم `console.warn()` لطباعة تحذير "انتبه".
الحل
// هذا تعليق من سطر واحد
/*
هذا تعليق
متعدد الأسطر
*/
console.error("حدث خطأ ما");
console.warn("انتبه");