🟢مبتدئ

من المنطق إلى الكود: أساسيات البرمجة

تعلم كيف نحول المشاكل إلى خطوات منطقية وأكواد برمجية، مع فهم المتغيرات والشروط والحلقات والدوال

45 دقيقة
4 أهداف تعليمية
الأساسيات

من المنطق إلى الكود: أساسيات البرمجة 💻🧠

🎯 الهدف من الدرس

بنهاية هذا الدرس ستتمكن من فهم:

  • كيف تعمل المتغيرات كصناديق لتخزين البيانات
  • كيف نحوّل القرارات المنطقية إلى أكواد (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)

🐍 Python
1age = 25          # عمر
2students = 100    # عدد الطلاب
3temperature = -5  # درجة الحرارة
📝
في الذاكرة:
"
25 بالنظام العشري
= 11001 بالنظام الثنائي
= 0001 1001 في 8 بتات

2️⃣ الأعداد العشرية (Floats)

🐍 Python
1pi = 3.14159      # الثابت باي
2price = 99.99     # السعر بالريال
3height = 1.75     # الطول بالمتر

3️⃣ النصوص (Strings)

🐍 Python
1name = "محمد"                    # الاسم
2city = "الرياض"                  # المدينة
3message = "مرحباً بالعالم!"      # رسالة
📝
كل حرف = رقم!
"
  • "A" = 65 (في ASCII)
  • "م" = 1605 (في Unicode)
  • كل حرف يُخزَّن كأرقام ثنائية!

4️⃣ القيم المنطقية (Boolean)

🐍 Python
1is_student = True      # هل طالب؟
2has_license = False    # هل يملك رخصة؟
3is_online = True       # هل متصل؟
📝
الرابط بالنظام الثنائي:
"
True  = 1 (البت مُشغَّل)
False = 0 (البت مُطفأ)

🔹 تسمية المتغيرات

📝
قواعد التسمية الجيدة:
"

جيد:

🐍 Python
1student_age = 20
2total_price = 150.50
3user_name = "أحمد"

سيئ:

🐍 Python
1x = 20        # غير واضح
2a1 = 150.50   # ما معناه؟
3n = "أحمد"    # اختصار مُربك

نصيحة ذهبية: اسم المتغير يجب أن يشرح ماذا يخزّن!

ملعب المتغيرات

name
string
age
number
is_student
boolean

إضافة متغير جديد

# الكود المقابل:
name = "محمد"
age = 25
is_student = true

🔀 الشروط المنطقية: صنع القرارات

من البوابات المنطقية إلى if/else

تذكر البوابات المنطقية من الدرس السابق:

  • AND: كلا المدخلَين صحيح
  • OR: أحدهما على الأقل صحيح
  • NOT: عكس القيمة
📝
الآن نستخدمها في البرمجة!
"

🔹 الشرط البسيط (if)

🐍 Python
1age = 18
2
3if age >= 18:
4    print("يمكنك قيادة السيارة")
📝
كيف يعمل الحاسوب:
"
  1. يقرأ قيمة age من الذاكرة (18)
  2. يقارنها مع 18 (باستخدام دوائر المقارنة)
  3. النتيجة: True أو False (1 أو 0)
  4. إذا True: ينفّذ الكود داخل if

🔹 الشرط مع البديل (if/else)

🐍 Python
1temperature = 30
2
3if temperature > 35:
4    print("الجو حار جداً! 🔥")
5else:
6    print("الجو معتدل ☀️")

🔹 شروط متعددة (elif)

🐍 Python
1grade = 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 (و)

🐍 Python
1age = 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 (أو)

🐍 Python
1is_student = True
2is_senior = False
3
4if is_student or is_senior:
5    print("لديك خصم 20%")

المعامل NOT (ليس)

🐍 Python
1is_raining = False
2
3if not is_raining:
4    print("يمكنك الخروج للنزهة")

مسار الشروط التفاعلي

102030

🔁 الحلقات: قوة التكرار

لماذا نحتاج الحلقات؟

📝
بدون حلقات:
"
🐍 Python
1print("مرحباً 1")
2print("مرحباً 2")
3print("مرحباً 3")
4print("مرحباً 4")
5print("مرحباً 5")
6# ... ماذا لو أردنا 1000 مرة؟
📝
مع الحلقات:
"
🐍 Python
1for i in range(1, 6):
2    print(f"مرحباً {i}")

🔹 حلقة for (العدد محدد)

🐍 Python
1# طباعة الأعداد من 1 إلى 10
2for number in range(1, 11):
3    print(number)
📝
مثال عملي: حساب المجموع
"
🐍 Python
1total = 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 (شرط مستمر)

🐍 Python
1count = 1
2
3while count <= 5:
4    print(f"العدد: {count}")
5    count = count + 1
📝
مثال: لعبة تخمين الرقم
"
🐍 Python
1secret_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

مصوّر الحلقات

0
التكرار الحالي
1
2
3
4
5
المجموع التراكمي
0
# الكود:
sum = 0
for i in range(1, 6):
sum = sum + i
print(f"المجموع: {sum}")

⚙️ الدوال: تقسيم المشاكل

ما هي الدالة؟

الدالة (Function) هي آلة صغيرة:

  • تأخذ مُدخَلات (Inputs)
  • تنفّذ عمليات (Process)
  • تُرجِع مُخرَجات (Outputs)
     ┌─────────────┐
     │   الدالة    │
مُدخَل │  [عمليات]  │ مُخرَج
────►  │             │ ───►
     └─────────────┘

🔹 تعريف الدالة

🐍 Python
1def greet(name):
2    message = f"مرحباً {name}! 👋"
3    return message
📝
استخدام الدالة:
"
🐍 Python
1result = greet("أحمد")
2print(result)
3# النتيجة: مرحباً أحمد! 👋

🔹 دالة بدون مُدخَلات

🐍 Python
1def say_hello():
2    print("مرحباً بالعالم!")
3
4say_hello()

🔹 دالة بدون مُخرَجات

🐍 Python
1def print_line():
2    print("=" * 50)
3
4print_line()
5print("عنوان")
6print_line()

🔹 دالة بمُدخَلات متعددة

🐍 Python
1def 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)

📝
بدون دوال:
"
🐍 Python
1# حساب مساحة 3 غرف
2area1 = 5 * 4
3area2 = 6 * 3
4area3 = 4 * 4
📝
مع دوال:
"
🐍 Python
1def 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️⃣ تنظيم الكود

🐍 Python
1def 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️⃣ إعادة الاستخدام

🐍 Python
1def 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} زوجي")

بناء الدوال

تعريف الدالة

def calculate_area(length, width):
result = length * width
return result

استدعاء الدالة

result = calculate_area(5, 4)

🧩 التفكير الخوارزمي

ما هي الخوارزمية؟

الخوارزمية = وصفة طبخ للحاسوب!

📝
خصائصها:
"
  1. محددة: كل خطوة واضحة
  2. مرتّبة: تُنفَّذ بالترتيب
  3. محدودة: لها نهاية
  4. فعّالة: تستخدم الموارد بحكمة

🔹 مثال: إيجاد أكبر رقم

المشكلة: لديك قائمة أرقام، أوجد الأكبر.

🐍 Python
1numbers = [45, 23, 89, 12, 67, 34]
📝
الخوارزمية:
"
1. افترض أن الرقم الأول هو الأكبر
2. لكل رقم في القائمة:
   - إذا كان أكبر من الرقم الحالي
   - اجعله الأكبر الجديد
3. أرجع الرقم الأكبر
📝
الكود:
"
🐍 Python
1def 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)

المشكلة: رتّب الأرقام من الأصغر إلى الأكبر.

🐍 Python
1numbers = [64, 34, 25, 12, 22, 11, 90]
📝
الخوارزمية:
"
1. ابدأ من أول رقمين
2. إذا الأول أكبر من الثاني، بدّلهما
3. انتقل للزوج التالي
4. كرر حتى ترتّب القائمة كاملة
📝
الكود:
"
🐍 Python
1def 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️⃣ حسّن الكود
   - هل يمكن تبسيطه؟
   - هل هو سريع كفاية؟
   - هل هو واضح ومقروء؟

سباق الخوارزميات

الخطوات المنفذة
0
العناصر المُرتبة
0 / 7
64
0
34
1
25
2
12
3
22
4
11
5
90
6
غير مُرتب
مقارنة
تبديل
مُرتب
# المصفوفة الحالية:
array = [64, 34, 25, 12, 22, 11, 90]

كيف تعمل Bubble Sort؟

  1. قارن كل عنصرين متجاورين
  2. إذا كان الأول أكبر من الثاني، بدّلهما
  3. كرر هذه العملية لكل أزواج العناصر
  4. بعد كل دورة، يصل أكبر عنصر إلى نهاية المصفوفة
  5. استمر حتى ترتيب جميع العناصر

🎓 مثال شامل: حاسبة الدرجات

دعنا نبني برنامجاً كاملاً يستخدم كل ما تعلمناه!

📝
المطلوب:
"
  • أدخل درجات 5 طلاب
  • احسب المعدل
  • حدد التقدير (ممتاز، جيد، مقبول، راسب)
  • عرض إحصائيات
🐍 Python
1def 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️⃣ اكتب كوداً نظيفاً

جيد:

🐍 Python
1def calculate_total_price(items, tax_rate):
2    """حساب السعر الإجمالي مع الضريبة"""
3    subtotal = sum(items)
4    tax = subtotal * tax_rate
5    total = subtotal + tax
6    return total

سيئ:

🐍 Python
1def calc(i,t):
2    s=sum(i)
3    x=s*t
4    return s+x

2️⃣ استخدم التعليقات

🐍 Python
1# حساب مساحة الدائرة
2radius = 5
3pi = 3.14159
4area = pi * radius * radius  # المساحة = π × نق²

3️⃣ اختبر كودك

🐍 Python
1def 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️⃣ ابدأ بسيطاً ثم طوّر

🐍 Python
1# النسخة 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️⃣ تعلم من الأخطاء

📝
خطأ شائع: نسيان المسافات البادئة
"

خطأ:

🐍 Python
1if age >= 18:
2print("بالغ")  # IndentationError!

صحيح:

🐍 Python
1if age >= 18:
2    print("بالغ")  # 4 مسافات

🚀 التطبيق العملي

مشروع: آلة حاسبة تفاعلية

🐍 Python
1def 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()

🧮 آلة حاسبة تفاعلية

جرب العمليات الحسابية الأساسية

0
جمع
Addition
طرح
Subtraction
✖️
ضرب
Multiplication
قسمة
Division

🎯 ماذا بعد؟

الآن أتقنت أساسيات البرمجة! 🎉

المهارات التي اكتسبتها:

✅ فهم المتغيرات وأنواع البيانات ✅ كتابة شروط منطقية (if/else) ✅ استخدام الحلقات (for/while) ✅ بناء دوال قابلة لإعادة الاستخدام ✅ التفكير الخوارزمي وحل المشاكل

الخطوة التالية:

📚 الدرس القادم: "مقدمة إلى بايثون للبيانات"

  • القوائم والقواميس (Lists & Dictionaries)
  • التعامل مع الملفات
  • مكتبات بايثون الأساسية
  • معالجة البيانات الحقيقية

تمارين للممارسة:

1️⃣ مستوى مبتدئ:

  • اكتب دالة تحسب مساحة المثلث
  • برنامج يطبع جدول الضرب لرقم معين
  • دالة تتحقق إذا كان الرقم أولياً

2️⃣ مستوى متوسط:

  • برنامج إدارة قائمة مشتريات
  • حاسبة معدل تراكمي (GPA)
  • لعبة حجر-ورقة-مقص

3️⃣ مستوى متقدم:

  • برنامج تحويل درجات الحرارة بين كل المقاييس
  • آلة حاسبة علمية بدوال متقدمة
  • نظام حجز مواعيد بسيط

📚 موارد إضافية

استكشف مجموعة مختارة من المصادر التعليمية لمساعدتك في رحلة تعلم البرمجة.

🌟 رسالة نهائية

📝
تذكر دائماً:
"

"أفضل طريقة لتعلم البرمجة هي... البرمجة!"

  • 💪 مارس يومياً - حتى 15 دقيقة تحدث فرقاً
  • 🤝 اطلب المساعدة - المجتمع البرمجي داعم جداً
  • 🐛 لا تخف من الأخطاء - كل مبرمج يواجهها
  • 🎯 ابنِ مشاريع - التطبيق العملي هو المفتاح
  • 📖 اقرأ كود الآخرين - تعلم من الأفضل

البرمجة ليست موهبة... إنها مهارة تُكتسب بالممارسة! 🚀


أكملت الدرس الثالث بنجاح!

جاهز للانتقال إلى مستوى أعمق مع Python؟ 🐍

🎓 ملخص الدرس

  • المتغيرات = صناديق لتخزين البيانات في الذاكرة
  • الشروط (if/else) = منح البرنامج القدرة على اتخاذ القرارات
  • الحلقات (for/while) = تكرار المهام بدون تعب
  • الدوال (functions) = تقسيم المشاكل الكبيرة لأجزاء صغيرة
  • الخوارزميات = خطوات واضحة لحل أي مشكلة برمجية