جاري التحميل...
جاري التحميل...
كيف تحلل المشاكل وتحللها إلى أجزاء أصغر
أنماط التفكير هي مناهج منظمة لحل المشكلات. يغطي هذا الدرس أكثر النماذج العقلية فعالية لتفكيك التحديات المعقدة.
💡 ما سنتعلمه:
التفكيك، التعرف على الأنماط، التجريد، التفكير الخوارزمي، ومبادئ SOLID.
افصل المشكلات المعقدة إلى مشكلات فرعية أصغر وأسهل في الإدارة يمكن حلها بشكل مستقل.
💡 التقنية الرئيسية:
اسأل: ما هي الأجزاء الأصغر؟ هل يمكن حل كل جزء بشكل منفصل؟ كيف تتصل ببعضها؟
حدد التشابهات والاتجاهات والهياكل المتكررة عبر مشكلات مختلفة لتطبيق الحلول المعروفة.
💡 كيفية الممارسة:
بعد حل 5-10 مشكلات، راجعها معًا. ابحث عن الهياكل والمنهجيات الشائعة.
أزل التفاصيل غير الضرورية وركّز على المعلومات الأساسية التي تهم للحل.
💡 مستويات التجريد:
المستوى العالي (مفهوم) → المستوى المتوسط (بنية تحتية) → المستوى المنخفض (تفاصيل التنفيذ).
صمم إجراءات خطوة بخطوة لحل المشكلات بطريقة منهجية وقابلة للتكرار.
💡 الخطوات:
1. افهم المدخلات، 2. حدد المخرجات، 3. صمم الخطوات، 4. اختبر بالأمثلة.
SOLID هو مجموعة من خمسة مبادئ تصميم تساعد المطورين على إنشاء كود قابل للصيانة والمرونة.
💡 ronym SOLID:
S - المسؤولية الواحدة، O - المفتوح/المغلق، L - تعويض Liskov، I - فصل الواجهة، D - عكس التبعية.
حل كل مسألة في السطور أولاً، ثم اكتب الكود.
اكتب دالة تطبع الأرقام من 1 إلى N. مثال: printNumbers(5) تطبع 1 2 3 4 5.
📋 أمثلة:
printNumbers(5)
1 2 3 4 5
printNumbers(3)
1 2 3
💡 تلميح:
function printNumbers(n) {
for (let i = 1; i <= n; i++) {
console.log(i);
}
}
printNumbers(5); // 1, 2, 3, 4, 5اكتب دالة تُرجع أكبر عنصر في مصفوفة أرقام.
📋 أمثلة:
[3, 7, 2, 9, 4]
9
[1, 5]
5
💡 تلميح:
function findMax(arr) {
let max = arr[0];
for (let i = 1; i < arr.length; i++) {
if (arr[i] > max) max = arr[i];
}
return max;
}
console.log(findMax([3, 7, 2, 9, 4])); // 9اكتب دالة تُرجع النص معكوس. مثال: reverseString('hello') => 'olleh'.
📋 أمثلة:
"hello"
"olleh"
"abc"
"cba"
💡 تلميح:
function reverseString(str) {
let result = "";
for (let i = str.length - 1; i >= 0; i--) {
result += str[i];
}
return result;
}
console.log(reverseString("hello")); // "olleh"اكتب دالة تُرجع عدد الأحرف العلة (a, e, i, o, u) في النص.
📋 أمثلة:
"Hello World"
3
"aeiou"
5
💡 تلميح:
function countVowels(str) {
const vowels = "aeiou";
let count = 0;
for (let char of str.toLowerCase()) {
if (vowels.includes(char)) count++;
}
return count;
}
console.log(countVowels("Hello World")); // 3اكتب دالة تتحقق إذا كان النص يُقرأ بنفس الطريقة من اليمين واليسار.
📋 أمثلة:
"racecar"
true
"hello"
false
💡 تلميح:
function isPalindrome(str) {
const clean = str.toLowerCase().replace(/[^a-z0-9]/g, "");
return clean === clean.split("").reverse().join("");
}
console.log(isPalindrome("racecar")); // trueاكتب دالة تُرجع مجموع أرقام العدد. مثال: sumOfDigits(1234) => 10.
📋 أمثلة:
1234
10
999
27
💡 تلميح:
function sumOfDigits(n) {
let sum = 0;
while (n > 0) {
sum += n % 10;
n = Math.floor(n / 10);
}
return sum;
}
console.log(sumOfDigits(1234)); // 10اكتب دالة تُرجع مضروب العدد n. مثال: factorial(5) = 5*4*3*2*1 = 120.
📋 أمثلة:
5
120
1
1
💡 تلميح:
function factorial(n) {
if (n <= 1) return 1;
return n * factorial(n - 1);
}
console.log(factorial(5)); // 120اكتب دالة تُرجع أول N أعداد في تسلسل فيبوناتشي. كل عدد هو مجموع السابقين.
📋 أمثلة:
8
[0,1,1,2,3,5,8,13]
5
[0,1,1,2,3]
💡 تلميح:
function fibonacci(n) {
const fib = [0, 1];
for (let i = 2; i < n; i++) {
fib[i] = fib[i - 1] + fib[i - 2];
}
return fib;
}
console.log(fibonacci(8)); // [0,1,1,2,3,5,8,13]🔍 Dry Run
تتبع الكود يدوياً على ورقة قبل كتابته
📝 Pseudocode
كتابة الخطوات بلغة إنجليزية مبسطة
🧩 تفكيك المشكلة
تقسيمها لأجزاء أصغر قابلة للحل
🎯 التعرف على الأنماط
تحديد نوع المسألة وحلها بالنمط المناسب