1/21
الوحدة الأولى: المعالجة الرقمية

الدوال — الجزء ٢

الدرس السابق تعلمنا نصنع الدالة ونستدعيها
اليوم بنخليها أذكى! ⚽🎮

أ. حسين الصفار — مدرسة دعيج السلمان الصباح الثانوية — مارس ٢٠٢٦

🎮 مراجعة سريعة — وصّل!

اضغط على الكلمة من اليمين، بعدين اضغط على معناها من اليسار

نوعين دوال في بايثون

مثل كرة القدم: حركات جاهزة وحركات تتعلمها بنفسك

جاهزة (Built-in)

مثل التسديدة العادية — موجودة من الأول
ما تحتاج تسويها

print() len() input()
🎯

تسويها بنفسك (User-defined)

مثل حركة خاصة تتدرب عليها — أنت تصنعها

goal() score()

🎮 صنّف الدالة!

هالدالة جاهزة ولا أنت سويتها؟

المدرب يقول: "مرر الكرة لـ _____" ⚽

في البرمجة نفس الشي — الدالة فيها مكان فاضي ننزل فيه اسم فعلي

football.py
1# المدرب جهّز الخطة: 2def pass_ball(player): # ← المكان الفاضي 3 print("الكرة رايحة لـ", player) 4 5# وقت المباراة — حطينا الاسم الفعلي: 6pass_ball("محمد") # ← الاسم الفعلي
الكرة رايحة لـ محمد
المكان الفاضي (Parameter)
اللي في التعريف
player
الاسم الفعلي (Argument)
اللي نرسله وقت التشغيل
"محمد"

🏭 مصنع حساب الدرجات

أرسل درجاتك للدالة وشوف المجموع!

الدرجات
?
الدالة
total(a, b)
return a + b
المجموع
?

return — اللاعب يرجع الكرة 🔄

شنو الفرق بين print و return؟

📢

print = لاعب يصيح "سجلت!"

يقول النتيجة بصوت عالي بس
ما يقدر أحد يستخدمها بعدين

🤝

return = لاعب يرجع الكرة للمدرب

يسلّم النتيجة للبرنامج
تقدر تخزنها وتستخدمها!

score.py
1def total_score(a, b): 2 return a + b # يرجع المجموع 3 4result = total_score(85, 90) 5print("مجموعك:", result)
مجموعك: 175

🖥️ جرب بنفسك — غيّر الدرجات!

حط درجتك واضغط Run

my_grades.py
1def total(a, b): 2 return a + b 3 4result = total(, ) 5print("مجموعك:", result)
TERMINAL
$ انتظر الطالب...

🐛 صيد الباق! (لعبة)

الكود فيه غلطة — لقاها وصلحها!

🐛 buggy.py
الخطأ:

🎮 شنو الناتج؟ شغّل الكود في راسك!

brain_run.py
1def double_score(grade): 2 return grade * 2 3 4result = double_score(45) 5print(result)

الدالة تاخذ الدرجة وتضربها بـ ٢ — شنو يطلع؟

وين المتغير يشتغل؟ 🏠🌍

مو كل متغير يشتغل بكل مكان!

🏠

محلي (Local)

مثل لاعب يلعب بس بملعب مدرسته
ما يطلع بره — يشتغل داخل الدالة فقط

🌍

عام (Global)

مثل لاعب المنتخب
يلعب بأي ملعب — يشتغل بكل مكان

🔬 أشعة النطاق — اضغط وشوف!

اضغط على اسم المتغير وشوف وين يشتغل ✅ ووين لا ❌

🌍 خارج الدالة (المنتخب)
team = "Kuwait"
🏠 داخل الدالة (ملعب المدرسة)
def match():
  goals = 3
  print(team, goals)
print(team) # ?
print(goals) # ?

🐛 صيد الباق ٢: مشكلة النطاق!

هالكود يعطي خطأ — ليش؟

🐛 scope_bug.py
1def my_score(): 2 grade = 95 3 4print(grade) # ← خطأ!
NameError: name 'grade' is not defined

ملخص الدرس

المفهومبالبسيط
جاهزةدوال موجودة من الأول (print, len)
تسويها بنفسكأنت تصنعها بـ def
المكان الفاضيParameter — في التعريف
القيمة الفعليةArgument — وقت التشغيل
returnيرجع النتيجة (مو بس يعرضها)
محلي 🏠يشتغل داخل الدالة بس
عام 🌍يشتغل بكل مكان

⬅️ الحين وقت المراجعة — اضغط التالي!

📝

مراجعة الدرس

٥ أسئلة بسيطة — اكتب الكود بنفسك!
بالنهاية بتشوف نتيجتك مع نصائح 💡

المراجعة السؤال ١ من ٥

اكمل الكود: شنو الكلمة اللي نستخدمها عشان نعرّف دالة؟

1 greet(): 2 print("يلا يا فريق!")
المراجعة السؤال ٢ من ٥

شغّل الكود في راسك — شنو الناتج؟

1def total(a, b): 2 return a + b 3 4print(total(20, 30))
المراجعة السؤال ٣ من ٥

شغّل الكود في راسك — شنو اللي يطبع print؟ (الدالة ترجع مربع الرقم)

1def square(n): 2 return n * n 3 4print(square(4))
المراجعة السؤال ٤ من ٥

هالكود ناتجه None بدل رقم! شنو الناقص بالسطر ٢؟

1def triple(n): 2 n * 3 3 4print(triple(5)) # None ← ليش؟!
None
المراجعة السؤال ٥ من ٥ (الأخير!)

هالكود بيعطي خطأ — ليش؟

1def my_func(): 2 x = 10 3 4print(x) # ← Error!
NameError: name 'x' is not defined

اختر السبب:

أ. حسين الصفار — مدرسة دعيج السلمان الصباح الثانوية | مارس ٢٠٢٦