من المنطق إلى الكود: أساسيات البرمجة 💻🧠
🎯 الهدف من الدرس
بنهاية هذا الدرس ستتمكن من فهم:
- كيف تعمل المتغيرات كصناديق لتخزين البيانات
- كيف نحوّل القرارات المنطقية إلى أكواد (if/else)
- كيف نستخدم الحلقات لتكرار العمليات بكفاءة
- كيف نقسّم المشاكل الكبيرة إلى دوال صغيرة قابلة لإعادة الاستخدام
🏗️ من البتات إلى البرمجة
الرابط مع ما تعلمناه
في الدروس السابقة تعلمنا:
- النظام الثنائي: كل شيء في الحاسوب هو 0 و 1
- الترانزستورات: تحول الكهرباء إلى منطق رقمي
- البوابات المنطقية: AND, OR, NOT تصنع القرارات
الآن ننتقل إلى المستوى التالي: كيف نستخدم هذا المنطق لكتابة برامج تحل مشاكل حقيقية!
🔹 ما هي البرمجة؟
البرمجة هي فن كتابة تعليمات واضحة للحاسوب:
- خطوة بخطوة (Step by step)
- بترتيب منطقي (Logical order)
- بدون غموض (Unambiguous)
وصفة طبخ الأرز:
1. اغسل الأرز
2. أضف الماء (نسبة 1:2)
3. ضعه على النار
4. انتظر حتى يغلي
5. اخفض الحرارة
6. انتظر 15 دقيقة
7. أطفئ النار
هذه خوارزمية (Algorithm) — مجموعة خطوات محددة لحل مشكلة!
📦 المتغيرات: صناديق البيانات
ما هي المتغيرات؟
المتغير (Variable) هو صندوق في الذاكرة نخزن فيه قيمة.
صندوق العمر
├─ الاسم: age
└─ المحتوى: 25
🔹 في الذاكرة
تذكر: الترانزستورات تخزن البتات!
- كل متغير يحجز مكاناً في الذاكرة (Memory)
- يُعطى عنواناً (Address) فريداً
- يخزّن قيمة محددة
أنواع البيانات الأساسية
1️⃣ الأعداد الصحيحة (Integers)
🐍 Python1age = 25 # عمر 2students = 100 # عدد الطلاب 3temperature = -5 # درجة الحرارة
25 بالنظام العشري
= 11001 بالنظام الثنائي
= 0001 1001 في 8 بتات
2️⃣ الأعداد العشرية (Floats)
🐍 Python1pi = 3.14159 # الثابت باي 2price = 99.99 # السعر بالريال 3height = 1.75 # الطول بالمتر
3️⃣ النصوص (Strings)
🐍 Python1name = "محمد" # الاسم 2city = "الرياض" # المدينة 3message = "مرحباً بالعالم!" # رسالة
- "A" = 65 (في ASCII)
- "م" = 1605 (في Unicode)
- كل حرف يُخزَّن كأرقام ثنائية!
4️⃣ القيم المنطقية (Boolean)
🐍 Python1is_student = True # هل طالب؟ 2has_license = False # هل يملك رخصة؟ 3is_online = True # هل متصل؟
True = 1 (البت مُشغَّل)
False = 0 (البت مُطفأ)
🔹 تسمية المتغيرات
✅ جيد:
🐍 Python1student_age = 20 2total_price = 150.50 3user_name = "أحمد"
❌ سيئ:
🐍 Python1x = 20 # غير واضح 2a1 = 150.50 # ما معناه؟ 3n = "أحمد" # اختصار مُربك
نصيحة ذهبية: اسم المتغير يجب أن يشرح ماذا يخزّن!
ملعب المتغيرات
إضافة متغير جديد
🔀 الشروط المنطقية: صنع القرارات
من البوابات المنطقية إلى if/else
تذكر البوابات المنطقية من الدرس السابق:
- AND: كلا المدخلَين صحيح
- OR: أحدهما على الأقل صحيح
- NOT: عكس القيمة
🔹 الشرط البسيط (if)
🐍 Python1age = 18 2 3if age >= 18: 4 print("يمكنك قيادة السيارة")
- يقرأ قيمة
ageمن الذاكرة (18) - يقارنها مع 18 (باستخدام دوائر المقارنة)
- النتيجة: True أو False (1 أو 0)
- إذا True: ينفّذ الكود داخل if
🔹 الشرط مع البديل (if/else)
🐍 Python1temperature = 30 2 3if temperature > 35: 4 print("الجو حار جداً! 🔥") 5else: 6 print("الجو معتدل ☀️")
🔹 شروط متعددة (elif)
🐍 Python1grade = 85 2 3if grade >= 90: 4 print("ممتاز! 🌟") 5elif grade >= 80: 6 print("جيد جداً 👍") 7elif grade >= 70: 8 print("جيد ✓") 9elif grade >= 60: 10 print("مقبول") 11else: 12 print("راسب ❌")
🔹 الشروط المركّبة
المعامل AND (و)
🐍 Python1age = 20 2has_license = True 3 4if age >= 18 and has_license: 5 print("يمكنك استئجار سيارة")
بوابة AND:
المدخل 1: age >= 18 → True (1)
المدخل 2: has_license → True (1)
المخرج: True AND True → True (1)
المعامل OR (أو)
🐍 Python1is_student = True 2is_senior = False 3 4if is_student or is_senior: 5 print("لديك خصم 20%")
المعامل NOT (ليس)
🐍 Python1is_raining = False 2 3if not is_raining: 4 print("يمكنك الخروج للنزهة")
مسار الشروط التفاعلي
🔁 الحلقات: قوة التكرار
لماذا نحتاج الحلقات؟
🐍 Python1print("مرحباً 1") 2print("مرحباً 2") 3print("مرحباً 3") 4print("مرحباً 4") 5print("مرحباً 5") 6# ... ماذا لو أردنا 1000 مرة؟
🐍 Python1for i in range(1, 6): 2 print(f"مرحباً {i}")
🔹 حلقة for (العدد محدد)
🐍 Python1# طباعة الأعداد من 1 إلى 10 2for number in range(1, 11): 3 print(number)
🐍 Python1total = 0 2 3for number in range(1, 101): 4 total = total + number 5 6print(f"مجموع الأعداد من 1 إلى 100 = {total}") 7# النتيجة: 5050
الدورة 1: total = 0 + 1 = 1
الدورة 2: total = 1 + 2 = 3
الدورة 3: total = 3 + 3 = 6
الدورة 4: total = 6 + 4 = 10
...
الدورة 100: total = 4950 + 100 = 5050
🔹 حلقة while (شرط مستمر)
🐍 Python1count = 1 2 3while count <= 5: 4 print(f"العدد: {count}") 5 count = count + 1
🐍 Python1secret_number = 7 2guess = 0 3 4while guess != secret_number: 5 guess = int(input("خمّن الرقم (1-10): ")) 6 7 if guess < secret_number: 8 print("أعلى! ⬆️") 9 elif guess > secret_number: 10 print("أقل! ⬇️") 11 12print("صحيح! 🎉")
🔹 متى نستخدم أيهما؟
| الحالة | الحلقة المناسبة |
|---|---|
| عدد التكرارات معروف مسبقاً | for |
| التكرار يعتمد على شرط | while |
| المرور على قائمة | for |
| انتظار حدث معين | while |
مصوّر الحلقات
⚙️ الدوال: تقسيم المشاكل
ما هي الدالة؟
الدالة (Function) هي آلة صغيرة:
- تأخذ مُدخَلات (Inputs)
- تنفّذ عمليات (Process)
- تُرجِع مُخرَجات (Outputs)
┌─────────────┐
│ الدالة │
مُدخَل │ [عمليات] │ مُخرَج
────► │ │ ───►
└─────────────┘
🔹 تعريف الدالة
🐍 Python1def greet(name): 2 message = f"مرحباً {name}! 👋" 3 return message
🐍 Python1result = greet("أحمد") 2print(result) 3# النتيجة: مرحباً أحمد! 👋
🔹 دالة بدون مُدخَلات
🐍 Python1def say_hello(): 2 print("مرحباً بالعالم!") 3 4say_hello()
🔹 دالة بدون مُخرَجات
🐍 Python1def print_line(): 2 print("=" * 50) 3 4print_line() 5print("عنوان") 6print_line()
🔹 دالة بمُدخَلات متعددة
🐍 Python1def calculate_area(length, width): 2 area = length * width 3 return area 4 5# حساب مساحة غرفة 6room_area = calculate_area(5, 4) 7print(f"مساحة الغرفة: {room_area} متر مربع")
🔹 لماذا نستخدم الدوال؟
1️⃣ تجنب التكرار (DRY - Don't Repeat Yourself)
🐍 Python1# حساب مساحة 3 غرف 2area1 = 5 * 4 3area2 = 6 * 3 4area3 = 4 * 4
🐍 Python1def calculate_area(length, width): 2 return length * width 3 4area1 = calculate_area(5, 4) 5area2 = calculate_area(6, 3) 6area3 = calculate_area(4, 4)
2️⃣ تنظيم الكود
🐍 Python1def login_user(username, password): 2 # كود تسجيل الدخول 3 pass 4 5def send_email(recipient, message): 6 # كود إرسال البريد 7 pass 8 9def process_payment(amount): 10 # كود معالجة الدفع 11 pass
3️⃣ إعادة الاستخدام
🐍 Python1def is_even(number): 2 return number % 2 == 0 3 4# يمكن استخدامها في أي مكان! 5if is_even(10): 6 print("10 عدد زوجي") 7 8for num in range(1, 11): 9 if is_even(num): 10 print(f"{num} زوجي")
بناء الدوال
تعريف الدالة
استدعاء الدالة
🧩 التفكير الخوارزمي
ما هي الخوارزمية؟
الخوارزمية = وصفة طبخ للحاسوب!
- محددة: كل خطوة واضحة
- مرتّبة: تُنفَّذ بالترتيب
- محدودة: لها نهاية
- فعّالة: تستخدم الموارد بحكمة
🔹 مثال: إيجاد أكبر رقم
المشكلة: لديك قائمة أرقام، أوجد الأكبر.
🐍 Python1numbers = [45, 23, 89, 12, 67, 34]
1. افترض أن الرقم الأول هو الأكبر
2. لكل رقم في القائمة:
- إذا كان أكبر من الرقم الحالي
- اجعله الأكبر الجديد
3. أرجع الرقم الأكبر
🐍 Python1def find_max(numbers): 2 max_number = numbers[0] 3 4 for number in numbers: 5 if number > max_number: 6 max_number = number 7 8 return max_number 9 10result = find_max([45, 23, 89, 12, 67, 34]) 11print(f"أكبر رقم: {result}") 12# النتيجة: 89
🔹 مثال: ترتيب الأرقام (Bubble Sort)
المشكلة: رتّب الأرقام من الأصغر إلى الأكبر.
🐍 Python1numbers = [64, 34, 25, 12, 22, 11, 90]
1. ابدأ من أول رقمين
2. إذا الأول أكبر من الثاني، بدّلهما
3. انتقل للزوج التالي
4. كرر حتى ترتّب القائمة كاملة
🐍 Python1def bubble_sort(arr): 2 n = len(arr) 3 4 for i in range(n): 5 for j in range(0, n-i-1): 6 if arr[j] > arr[j+1]: 7 # تبديل الأرقام 8 arr[j], arr[j+1] = arr[j+1], arr[j] 9 10 return arr 11 12sorted_numbers = bubble_sort([64, 34, 25, 12, 22, 11, 90]) 13print(sorted_numbers) 14# النتيجة: [11, 12, 22, 25, 34, 64, 90]
🔹 خطوات حل أي مشكلة برمجية
1️⃣ افهم المشكلة
- ما المُدخَلات؟
- ما المُخرَجات المطلوبة؟
- ما القيود والحدود؟
2️⃣ خطط للحل
- اكتب الخوارزمية بلغة عادية
- ارسم مخططاً (Flowchart)
- قسّم المشكلة لأجزاء صغيرة
3️⃣ اكتب الكود
- ابدأ بأبسط نسخة
- اختبر كل جزء لوحده
- استخدم دوال للتنظيم
4️⃣ اختبر الحل
- جرّب حالات مختلفة
- ابحث عن الأخطاء (Debug)
- حسّن الأداء
5️⃣ حسّن الكود
- هل يمكن تبسيطه؟
- هل هو سريع كفاية؟
- هل هو واضح ومقروء؟
سباق الخوارزميات
كيف تعمل Bubble Sort؟
- قارن كل عنصرين متجاورين
- إذا كان الأول أكبر من الثاني، بدّلهما
- كرر هذه العملية لكل أزواج العناصر
- بعد كل دورة، يصل أكبر عنصر إلى نهاية المصفوفة
- استمر حتى ترتيب جميع العناصر
🎓 مثال شامل: حاسبة الدرجات
دعنا نبني برنامجاً كاملاً يستخدم كل ما تعلمناه!
- أدخل درجات 5 طلاب
- احسب المعدل
- حدد التقدير (ممتاز، جيد، مقبول، راسب)
- عرض إحصائيات
🐍 Python1def get_grade_letter(score): 2 """دالة لتحديد التقدير من الدرجة""" 3 if score >= 90: 4 return "ممتاز" 5 elif score >= 80: 6 return "جيد جداً" 7 elif score >= 70: 8 return "جيد" 9 elif score >= 60: 10 return "مقبول" 11 else: 12 return "راسب" 13 14def calculate_average(scores): 15 """دالة لحساب المعدل""" 16 total = 0 17 for score in scores: 18 total = total + score 19 return total / len(scores) 20 21def find_highest(scores): 22 """دالة لإيجاد أعلى درجة""" 23 highest = scores[0] 24 for score in scores: 25 if score > highest: 26 highest = score 27 return highest 28 29def find_lowest(scores): 30 """دالة لإيجاد أقل درجة""" 31 lowest = scores[0] 32 for score in scores: 33 if score < lowest: 34 lowest = score 35 return lowest 36 37# البرنامج الرئيسي 38def main(): 39 print("=" * 50) 40 print("برنامج حاسبة الدرجات") 41 print("=" * 50) 42 43 # إدخال الدرجات 44 scores = [] 45 for i in range(1, 6): 46 score = float(input(f"أدخل درجة الطالب {i}: ")) 47 scores.append(score) 48 49 # الحسابات 50 average = calculate_average(scores) 51 highest = find_highest(scores) 52 lowest = find_lowest(scores) 53 54 # عرض النتائج 55 print("\n" + "=" * 50) 56 print("النتائج:") 57 print("=" * 50) 58 59 print(f"\nالمعدل: {average:.2f}") 60 print(f"التقدير: {get_grade_letter(average)}") 61 print(f"أعلى درجة: {highest}") 62 print(f"أقل درجة: {lowest}") 63 64 # إحصائيات إضافية 65 passed = 0 66 for score in scores: 67 if score >= 60: 68 passed = passed + 1 69 70 print(f"\nعدد الناجحين: {passed} من {len(scores)}") 71 print(f"نسبة النجاح: {(passed / len(scores)) * 100:.1f}%") 72 73# تشغيل البرنامج 74main()
==================================================
برنامج حاسبة الدرجات
==================================================
أدخل درجة الطالب 1: 85
أدخل درجة الطالب 2: 92
أدخل درجة الطالب 3: 78
أدخل درجة الطالب 4: 65
أدخل درجة الطالب 5: 88
==================================================
النتائج:
==================================================
المعدل: 81.60
التقدير: جيد جداً
أعلى درجة: 92.0
أقل درجة: 65.0
عدد الناجحين: 5 من 5
نسبة النجاح: 100.0%
💡 نصائح ذهبية للمبتدئين
1️⃣ اكتب كوداً نظيفاً
✅ جيد:
🐍 Python1def calculate_total_price(items, tax_rate): 2 """حساب السعر الإجمالي مع الضريبة""" 3 subtotal = sum(items) 4 tax = subtotal * tax_rate 5 total = subtotal + tax 6 return total
❌ سيئ:
🐍 Python1def calc(i,t): 2 s=sum(i) 3 x=s*t 4 return s+x
2️⃣ استخدم التعليقات
🐍 Python1# حساب مساحة الدائرة 2radius = 5 3pi = 3.14159 4area = pi * radius * radius # المساحة = π × نق²
3️⃣ اختبر كودك
🐍 Python1def divide(a, b): 2 """قسمة رقمين""" 3 if b == 0: 4 return "خطأ: لا يمكن القسمة على صفر!" 5 return a / b 6 7# اختبارات 8print(divide(10, 2)) # 5.0 ✓ 9print(divide(10, 0)) # خطأ: لا يمكن القسمة على صفر! ✓
4️⃣ ابدأ بسيطاً ثم طوّر
🐍 Python1# النسخة 1: بسيطة 2def greet(name): 3 print(f"Hello {name}") 4 5# النسخة 2: محسّنة 6def greet(name, language="ar"): 7 if language == "ar": 8 print(f"مرحباً {name}") 9 elif language == "en": 10 print(f"Hello {name}") 11 else: 12 print(f"Hola {name}")
5️⃣ تعلم من الأخطاء
❌ خطأ:
🐍 Python1if age >= 18: 2print("بالغ") # IndentationError!
✅ صحيح:
🐍 Python1if age >= 18: 2 print("بالغ") # 4 مسافات
🚀 التطبيق العملي
مشروع: آلة حاسبة تفاعلية
🐍 Python1def add(x, y): 2 return x + y 3 4def subtract(x, y): 5 return x - y 6 7def multiply(x, y): 8 return x * y 9 10def divide(x, y): 11 if y == 0: 12 return "خطأ: قسمة على صفر" 13 return x / y 14 15def calculator(): 16 print("=" * 40) 17 print("آلة حاسبة تفاعلية") 18 print("=" * 40) 19 20 while True: 21 print("\nالعمليات المتاحة:") 22 print("1. جمع (+)") 23 print("2. طرح (-)") 24 print("3. ضرب (×)") 25 print("4. قسمة (÷)") 26 print("5. خروج") 27 28 choice = input("\nاختر العملية (1-5): ") 29 30 if choice == "5": 31 print("شكراً لاستخدامك الآلة الحاسبة! 👋") 32 break 33 34 if choice in ["1", "2", "3", "4"]: 35 num1 = float(input("أدخل الرقم الأول: ")) 36 num2 = float(input("أدخل الرقم الثاني: ")) 37 38 if choice == "1": 39 result = add(num1, num2) 40 print(f"\nالنتيجة: {num1} + {num2} = {result}") 41 elif choice == "2": 42 result = subtract(num1, num2) 43 print(f"\nالنتيجة: {num1} - {num2} = {result}") 44 elif choice == "3": 45 result = multiply(num1, num2) 46 print(f"\nالنتيجة: {num1} × {num2} = {result}") 47 elif choice == "4": 48 result = divide(num1, num2) 49 print(f"\nالنتيجة: {num1} ÷ {num2} = {result}") 50 else: 51 print("خيار غير صحيح! حاول مرة أخرى.") 52 53# تشغيل الآلة الحاسبة 54calculator()
🧮 آلة حاسبة تفاعلية
جرب العمليات الحسابية الأساسية
🎯 ماذا بعد؟
الآن أتقنت أساسيات البرمجة! 🎉
المهارات التي اكتسبتها:
✅ فهم المتغيرات وأنواع البيانات ✅ كتابة شروط منطقية (if/else) ✅ استخدام الحلقات (for/while) ✅ بناء دوال قابلة لإعادة الاستخدام ✅ التفكير الخوارزمي وحل المشاكل
الخطوة التالية:
📚 الدرس القادم: "مقدمة إلى بايثون للبيانات"
- القوائم والقواميس (Lists & Dictionaries)
- التعامل مع الملفات
- مكتبات بايثون الأساسية
- معالجة البيانات الحقيقية
تمارين للممارسة:
1️⃣ مستوى مبتدئ:
- اكتب دالة تحسب مساحة المثلث
- برنامج يطبع جدول الضرب لرقم معين
- دالة تتحقق إذا كان الرقم أولياً
2️⃣ مستوى متوسط:
- برنامج إدارة قائمة مشتريات
- حاسبة معدل تراكمي (GPA)
- لعبة حجر-ورقة-مقص
3️⃣ مستوى متقدم:
- برنامج تحويل درجات الحرارة بين كل المقاييس
- آلة حاسبة علمية بدوال متقدمة
- نظام حجز مواعيد بسيط
📚 موارد إضافية للتعلم
اختر ما يناسبك من كتب، مواقع، وقنوات يوتيوب لتطوير مهاراتك البرمجية
مواقع للتعلم الذاتي
كتب مقترحة
قنوات يوتيوب
💡 نصيحة: ابدأ بمصدر واحد وأتقنه قبل الانتقال للتالي. التنوع مفيد لكن التركيز أهم!
📚 موارد إضافية
استكشف مجموعة مختارة من المصادر التعليمية لمساعدتك في رحلة تعلم البرمجة.
🌟 رسالة نهائية
"أفضل طريقة لتعلم البرمجة هي... البرمجة!"
- 💪 مارس يومياً - حتى 15 دقيقة تحدث فرقاً
- 🤝 اطلب المساعدة - المجتمع البرمجي داعم جداً
- 🐛 لا تخف من الأخطاء - كل مبرمج يواجهها
- 🎯 ابنِ مشاريع - التطبيق العملي هو المفتاح
- 📖 اقرأ كود الآخرين - تعلم من الأفضل
البرمجة ليست موهبة... إنها مهارة تُكتسب بالممارسة! 🚀
أكملت الدرس الثالث بنجاح! ✅
جاهز للانتقال إلى مستوى أعمق مع Python؟ 🐍
🎓 ملخص الدرس
- ✓المتغيرات = صناديق لتخزين البيانات في الذاكرة
- ✓الشروط (if/else) = منح البرنامج القدرة على اتخاذ القرارات
- ✓الحلقات (for/while) = تكرار المهام بدون تعب
- ✓الدوال (functions) = تقسيم المشاكل الكبيرة لأجزاء صغيرة
- ✓الخوارزميات = خطوات واضحة لحل أي مشكلة برمجية








