Arabic:البرمجة بلغة بايثون

البرمجة بلغة بايثون
مقدمة
تساعدك البرمجة بلغة بايثون على تحويل مشكلة مهنية واضحة إلى خطوات يمكن للحاسوب تنفيذها. في بيئة التعليم والتدريب التقني والمهني قد تستخدم بايثون لحساب تكلفة مواد، أو فحص قراءات حساسات، أو تنظيم سجل صيانة، أو تلخيص نتائج فحص جودة، أو معالجة ملف يحتوي على أوامر عمل. الهدف هنا ليس حفظ الأوامر، بل تعلّم طريقة منظمة لحل المشكلات: فهم المدخلات، تحديد القواعد، كتابة خوارزمية، تنفيذها، اختبارها، ثم تحسينها.
لا تحتاج قبل البدء إلا إلى مهارات أساسية في استخدام الحاسوب والملفات وإجراء العمليات الحسابية البسيطة. ستحتاج إلى بيئة تشغّل Python 3، مثل IDLE أو محرر برمجي مناسب. اكتب الأمثلة بنفسك، غيّر القيم، وتوقّع النتيجة قبل تشغيل البرنامج. هذه العادة تحول القراءة إلى تدريب فعلي.

أهداف التعلم
بعد إكمال هذه الدورة تستطيع أن تشرح الفرق بين المتغير والقيمة ونوع البيانات، وأن تستخدم الأعداد والسلاسل النصية والقيم المنطقية والقوائم والقواميس في مواقف عملية.
تستطيع أن تبني قرارات باستخدام if وelif وelse، وأن تختار بين حلقات for وwhile وفق طبيعة المهمة.
تستطيع أن تكتب دوال ذات مدخلات وقيمة معادة، وأن تقسّم المشكلة المهنية الكبيرة إلى وحدات صغيرة قابلة للاختبار وإعادة الاستخدام.
تستطيع أن تقرأ ملفات نصية وتكتب إليها باستخدام with، وأن تتعامل مع أخطاء متوقعة باستخدام الاستثناءات.
تستطيع أن تتبع رسالة الخطأ، وتختبر فرضياتك، وتستخدم الطباعة المرحلية أو المصحح البرمجي لتحديد موضع الخلل.
تستطيع أن تصمم حلاً برمجياً صغيراً لمشكلة من ورشة أو مختبر أو مكتب فني، وأن تشرح مدخلاته ومعالجته ومخرجاته وحدوده.
بيئة العمل وطريقة التفكير البرمجي
البرنامج مجموعة تعليمات تنفذ بترتيب محدد. قبل كتابة الكود، اسأل: ما البيانات التي تدخل؟ ما النتيجة المطلوبة؟ ما القواعد التي تربط بينهما؟ وما الحالات غير العادية التي قد تحدث؟ هذه الأسئلة هي أساس الخوارزمية.

البرنامج الأول ومدخلات المستخدم
الدالة print تعرض مخرجات، بينما الدالة input تقرأ نصاً من المستخدم. من المهم أن تعرف أن input تعيد سلسلة نصية، حتى لو كتب المستخدم أرقاماً. لذلك نستخدم التحويل مثل int أو float عندما نحتاج إلى حسابات عددية.
# حساب زمن تشغيل آلة بالساعات
minutes = float(input("أدخل زمن التشغيل بالدقائق: "))
hours = minutes / 60
print(f"زمن التشغيل بالساعات: {hours:.2f}")
تحد برمجي فوري: غيّر البرنامج ليقرأ زمن تشغيل جهازين ثم يعرض مجموع الساعات. جرّب قيمة عشرية مثل 95.5 دقيقة، ثم فسّر سبب استخدام float بدلاً من int.
مخطط سير العمل
مخطط التدفق يساعدك على رؤية التسلسل والقرارات قبل كتابة الشفرة. المستطيل يمثل عادة خطوة معالجة، والمعين يمثل قراراً منطقياً له مسارات بديلة. في الصورة التالية تظهر فكرة القرار في مخطط تدفق؛ قد تكون الكتابة داخل الرسم بلغة أخرى، لكن الفكرة نفسها هي اختيار مسار وفق نتيجة شرط منطقي.

مثال مهني مبسط لمراقبة حرارة محرك:
ابدأ ↓ اقرأ درجة الحرارة ↓ هل الدرجة أكبر من حد التنبيه؟ ├─ نعم ← اعرض تحذيراً وسجل الحالة └─ لا ← اعرض أن الحالة طبيعية ↓ انتهِ
المتغيرات وأنواع البيانات
المتغير اسم يشير إلى قيمة. في بايثون لا تعلن نوع المتغير مسبقاً؛ يتحدد النوع من القيمة المرتبطة بالاسم في تلك اللحظة. استخدم أسماء واضحة مثل part_count أو machine_temperature، وتجنب الأسماء الغامضة مثل x1 عندما تكون للمعلومة دلالة مهنية واضحة.
الأنواع الأساسية
| النوع | مثال | استخدام مهني |
|---|---|---|
عدد صحيح int |
24 |
عدد القطع أو مرات الفحص |
عدد عشري float |
72.5 |
درجة حرارة أو طول أو تكلفة |
سلسلة نصية str |
"M-104" |
رمز آلة أو اسم مادة |
قيمة منطقية bool |
True |
هل اجتاز المنتج الفحص |
قائمة list |
[18, 20, 19] |
سلسلة قراءات مرتبة |
قاموس dict |
{"id": "M-104", "status": "جاهز"} |
حقول مترابطة لسجل واحد |
machine_id = "M-104" temperature = 72.5 is_running = True readings = [72.1, 72.5, 73.0] print(type(temperature)) print(readings[-1])
من الأخطاء الشائعة الخلط بين العدد والنص. التعبير "10" + "5" ينتج نصاً مركباً، بينما 10 + 5 ينتج عدداً. اسأل دائماً: هل هذه القيمة ستُحسب أم ستُعرض فقط؟
تطبيق مهني: فحص مخزون بسيط
stock = 14
minimum_stock = 20
part_name = "مرشح زيت"
needs_order = stock < minimum_stock
print(f"الصنف: {part_name}")
print(f"هل يلزم طلب جديد؟ {needs_order}")
جرّب بنفسك: أنشئ قاموساً يحتوي على رمز قطعة واسمها والكمية الحالية والحد الأدنى. بعد ذلك اطبع رسالة مفهومة للعامل أو المتدرب بدلاً من طباعة القيم الخام فقط.
الشروط واتخاذ القرار
الشرط يجعل البرنامج يختار بين مسارات. تستخدم if عندما يوجد اختبار أول، وelif عندما توجد حالات إضافية، وelse للحالة المتبقية. انتبه إلى المسافات البادئة؛ فهي جزء من بنية بايثون وليست مجرد تنسيق بصري.
temperature = 86
if temperature >= 90:
print("أوقف الجهاز واتبع إجراء السلامة المعتمد")
elif temperature >= 80:
print("تحذير: راقب الجهاز وراجع تعليمات التشغيل")
else:
print("القراءة ضمن المجال التشغيلي المحدد في هذا المثال")
في الواقع المهني لا تختر حدود السلامة من عندك؛ استمدها من تعليمات الشركة المصنعة أو إجراءات المؤسسة. البرمجة تطبق القاعدة، لكنها لا تستبدل المعيار الفني أو تقييم المختص.
يمكن جمع شروط متعددة باستخدام and وor وnot. مثال: قد يُسمح ببدء مهمة فقط إذا كان الفحص مكتملًا ومفتاح الحماية فعالًا.
تحد برمجي فوري: اكتب برنامجاً يصنف نتيجة فحص قياس إلى ثلاث حالات: مقبول، يحتاج مراجعة، ومرفوض. حدد القواعد أولاً في جمل عربية واضحة، ثم حوّلها إلى شروط، واختبر القيم الواقعة على الحدود نفسها.
الحلقات والتكرار
نستخدم الحلقات عندما نريد تكرار عملية. حلقة for مناسبة عند المرور على عناصر مجموعة أو نطاق معروف. حلقة while مناسبة عندما يستمر التكرار ما دام شرط معين صحيحاً.

measurements = [19.8, 20.1, 19.9, 20.4]
for value in measurements:
print(f"القياس: {value}")
يمكن استخدام range لتكرار عدد معروف من المرات:
for inspection_number in range(1, 6):
print(f"بدء الفحص رقم {inspection_number}")
أما while فتحتاج إلى الانتباه إلى تحديث الشرط حتى لا تنشأ حلقة لا نهائية:
remaining = 3
while remaining > 0:
print(f"تبقى {remaining} عناصر")
remaining -= 1
من الأخطاء الشائعة تعديل قائمة أثناء المرور عليها بطريقة تجعل بعض العناصر تُتخطى. إذا كنت تحتاج إلى ترشيح بيانات، فمن الأفضل غالباً بناء قائمة جديدة أو استخدام أسلوب واضح يمكن اختباره.
تحد برمجي فوري: لديك قراءات اهتزاز [2.1, 2.4, 3.8, 2.2, 4.1]. اكتب حلقة تحسب عدد القراءات التي تتجاوز حداً تدريبياً تختاره لأغراض التمرين، ثم غيّر الحد ولاحظ النتيجة.
الدوال وبناء حلول قابلة لإعادة الاستخدام
الدالة تجمع منطقاً له اسم واضح. تساعدك الدوال على تجنب تكرار الكود، وعلى اختبار جزء صغير من البرنامج، وعلى جعل الحل مفهوماً لزميل سيقرأه لاحقاً. تبدأ الدالة بالكلمة def، ويمكنها استقبال معاملات وإعادة قيمة باستخدام return.
def calculate_material_cost(quantity, unit_price):
total = quantity * unit_price
return total
cost = calculate_material_cost(12, 7.5)
print(f"التكلفة: {cost:.2f}")
من الأفضل فصل الحساب عن العرض عندما يكون ذلك ممكناً. الدالة السابقة تحسب وتعيد قيمة، ثم تتولى سطر آخر مهمة العرض. هذا الفصل يجعل الاختبار أسهل.
def is_within_range(value, minimum, maximum):
return minimum <= value <= maximum
print(is_within_range(24.8, 24.0, 25.0))
تحد برمجي فوري: اكتب دالة average_reading تستقبل قائمة قراءات وتعيد المتوسط. أضف شرطاً يعالج القائمة الفارغة بطريقة واضحة بدلاً من ترك البرنامج يقع في خطأ قسمة على صفر.
الملفات وحفظ بيانات العمل
الملفات تسمح للبرنامج بحفظ البيانات بين جلسات التشغيل. في المهام المهنية قد يكون لديك سجل فحوص، أو نتائج قياس، أو قائمة أوامر عمل. عند التعامل مع ملف نصي، من الجيد استخدام with لأنها تدير إغلاق الملف تلقائياً بعد انتهاء الكتلة.
log_line = "M-104,تم الفحص,2026-08-29\n"
with open("inspection_log.txt", "a", encoding="utf-8") as file:
file.write(log_line)
للقراءة:
with open("inspection_log.txt", "r", encoding="utf-8") as file:
for line in file:
print(line.strip())
وضع الفتح r للقراءة، وw للكتابة مع استبدال المحتوى السابق، وa للإضافة في نهاية الملف. لذلك قد يؤدي اختيار w خطأً إلى فقدان محتوى سابق. احفظ نسخة تدريبية من الملفات المهمة، ولا تجرب على بيانات إنتاج حقيقية.
تحد برمجي فوري: أنشئ ملفاً تدريبياً يحوي ثلاث قراءات، ثم اكتب برنامجاً يقرأه ويحسب عدد الأسطر غير الفارغة. بعد ذلك أضف سطراً جديداً باستخدام وضع الإضافة وتحقق أن السجلات السابقة بقيت موجودة.
تتبع الأخطاء والتصحيح
الخطأ ليس نوعاً واحداً. خطأ الصياغة يمنع بايثون من فهم بنية البرنامج، مثل نسيان النقطتين بعد if. أما الاستثناء فيحدث أثناء التنفيذ، مثل محاولة تحويل نص غير رقمي إلى عدد. وهناك خطأ منطقي يعمل معه البرنامج لكنه يعطي نتيجة غير صحيحة بسبب منطق الحل.
ابدأ التصحيح بقراءة رسالة الخطأ من السطر الأخير، ثم راجع نوع الاستثناء ورقم السطر والسياق. لا تغيّر عدة أشياء في الوقت نفسه؛ ضع فرضية صغيرة، اختبرها، ثم تابع. يمكنك استخدام print مؤقتاً لرؤية القيم، أو استخدام المصحح المدمج pdb أو مصحح بيئة التطوير للتوقف عند نقطة وفحص الحالة خطوة خطوة.
raw_value = "سبعة"
try:
quantity = int(raw_value)
print(quantity)
except ValueError:
print("تعذر تحويل القيمة إلى عدد صحيح؛ تحقق من المدخلات")
لا تستخدم except عاماً لإخفاء كل الأخطاء دون فهمها، لأن ذلك قد يخفي عيباً مهماً. التقط الاستثناء المتوقع بقدر الإمكان، وأظهر رسالة تساعد المستخدم على التصحيح.
تحد برمجي فوري: اكتب برنامجاً فيه ثلاثة أخطاء مقصودة: خطأ صياغة، واستثناء أثناء التشغيل، وخطأ منطقي في حساب ضريبة تدريبية. أصلحها واحداً واحداً، وسجل لكل خطأ: العرض، والسبب، وطريقة التحقق من الإصلاح.
حل المشكلات المهنية بطريقة برمجية
الحل الجيد يبدأ بالمشكلة لا بالكود. استخدم دورة عمل من ست خطوات: صغ الهدف، وحدد المدخلات والمخرجات، واكتب القواعد، وقسّم الحل إلى وظائف صغيرة، واختبر حالات عادية وحدّية وخاطئة، ثم وثق القيود. عندما يتعامل البرنامج مع قياسات أو قرارات قد تؤثر في السلامة أو الجودة، يجب أن تبقى القواعد الفنية معتمدة من الجهة المختصة.
مثال: تريد إعداد أداة تدريبية تلخص نتائج فحص مجموعة قطع. المدخلات قائمة قيم قياس، والقاعدة نطاق قبول محدد في التمرين، والمخرجات عدد المقبول وعدد المرفوض ومتوسط القياسات. يمكن تقسيم الحل إلى دالة لاختبار قياس واحد، ودالة للمتوسط، ودالة لتلخيص النتائج.
def is_accepted(value, low, high):
return low <= value <= high
def summarize(values, low, high):
accepted = 0
rejected = 0
for value in values:
if is_accepted(value, low, high):
accepted += 1
else:
rejected += 1
average = sum(values) / len(values) if values else 0
return accepted, rejected, average
measurements = [24.9, 25.1, 25.7, 24.8]
accepted, rejected, average = summarize(measurements, 24.5, 25.5)
print(f"مقبول: {accepted}")
print(f"مرفوض: {rejected}")
print(f"المتوسط: {average:.2f}")
تأمل هذا الحل: ماذا يحدث إذا كانت القائمة فارغة؟ هل يجب اعتبار القيمة الواقعة تماماً على الحد مقبولة؟ كيف ستتغير الدالة إذا كانت القواعد مختلفة بين أنواع المنتجات؟ هذه الأسئلة هي جزء من هندسة الحل وليست تفاصيل ثانوية.
مهام تفاعلية
اختبار: اختبر معرفتك
ماذا يعني السطر temperature = 72 في بايثون؟ (يربط الاسم temperature بالقيمة 72) (!ينشئ ملفاً اسمه temperature) (!يطبع الرقم 72 تلقائياً) (!يحول القيمة إلى سلسلة نصية)
ما نوع القيمة التي تعيدها الدالة input عادة قبل إجراء أي تحويل؟ (سلسلة نصية) (!عدد صحيح) (!قيمة منطقية) (!قائمة)
أي بنية تستخدم لاختيار مسار وفق شرط منطقي؟ (if) (!import) (!def) (!with)
أي حلقة تناسب المرور على كل قراءة داخل قائمة؟ (for) (!if) (!try) (!return)
ما الخطر الشائع عند استخدام while دون تحديث المتغير المؤثر في شرطها؟ (قد تستمر الحلقة بلا نهاية) (!يتحول الملف إلى قائمة) (!تختفي المتغيرات المحلية) (!تتحول الأعداد إلى نصوص)
ما وظيفة return داخل الدالة؟ (يعيد قيمة من الدالة إلى موضع الاستدعاء) (!ينشئ حلقة جديدة) (!يفتح ملفاً للكتابة) (!يلتقط جميع الاستثناءات)
لماذا يعد استخدام with مناسباً عند فتح ملف؟ (يساعد على إغلاق الملف تلقائياً بعد انتهاء الكتلة) (!يحول الملف إلى عدد صحيح) (!يمنع كتابة أي بيانات في الملف) (!يجعل كل سطر شرطاً منطقياً)
أي استثناء متوقع عند محاولة تحويل نص غير رقمي إلى عدد صحيح؟ (ValueError) (!IndexError) (!KeyError) (!StopIteration)
أي نوع بيانات يناسب حفظ عدة قراءات مرتبة يمكن المرور عليها؟ (قائمة) (!قيمة منطقية) (!دالة) (!استثناء)
ما أفضل بداية لحل مشكلة مهنية برمجياً؟ (تحديد الهدف والمدخلات والمخرجات والقواعد) (!كتابة أكبر عدد ممكن من الأسطر فوراً) (!إخفاء رسائل الخطأ قبل قراءتها) (!تغيير عدة أجزاء من البرنامج في اختبار واحد)
لعبة الذاكرة
| متغير | اسم يشير إلى قيمة يمكن أن يستخدمها البرنامج |
| قائمة | بنية تحفظ عناصر مرتبة يمكن المرور عليها |
| شرط | اختبار منطقي يحدد مسار التنفيذ |
| حلقة | بنية تكرر مجموعة من التعليمات |
| دالة | وحدة مسماة تجمع منطقاً قابلاً لإعادة الاستخدام |
| استثناء | خطأ يحدث أثناء التنفيذ ويمكن التعامل معه برمجياً |
السحب والإفلات
| طابق الأداة البرمجية مع استخدامها الصحيح. | الاستخدام |
|---|---|
| input | قراءة قيمة نصية من المستخدم |
| عرض نتيجة للمستخدم | |
| for | المرور المتكرر على عناصر مجموعة |
| def | تعريف دالة جديدة |
| with | إدارة سياق فتح ملف وإغلاقه |
| try | تنفيذ كود قد يثير استثناء متوقعاً |
كلمات متقاطعة
| متغير | ما الاسم الذي يشير إلى قيمة داخل البرنامج؟ |
| سلسلة | ما نوع البيانات المستخدم للنصوص؟ |
| تكرار | ما الفكرة العامة التي تنفذها الحلقات؟ |
| دالة | ما الوحدة المسماة التي تجمع منطقاً قابلاً لإعادة الاستخدام؟ |
| استثناء | ما الاسم الذي يطلق على خطأ يحدث أثناء التنفيذ ويمكن التعامل معه؟ |
| قاموس | ما البنية التي تربط مفاتيح بقيم؟ |
مهام مفتوحة
سهل
- حاسبة وقت التشغيل: أنشئ برنامجاً يقرأ دقائق تشغيل ثلاث آلات، يحولها إلى ساعات، ويعرض مجموع الزمن بتنسيق واضح، ثم اختبره بقيم صحيحة وعشرية.
- بطاقة بيانات قطعة: أنشئ قاموساً لقطعة مهنية يحتوي على الرمز والاسم والكمية والحالة، ثم اطبع تقريراً عربياً منسقاً يشرح هذه البيانات.
- مصنف نتائج الفحص: اكتب شروطاً تصنف قيمة قياس إلى ثلاث فئات تدريبية، وارسم مخطط تدفق صغيراً على الورق أو بأداة رسم مجانية قبل كتابة الكود.
- تتبع خطأ بسيط: أنشئ برنامجاً قصيراً يحتوي عمداً على خطأ صياغة واحد واستثناء واحد، ثم التقط صورة أو اكتب وصفاً لرسالة الخطأ وفسر كيف قادتك إلى الحل.
متوسط
- محلل قراءات متكررة: اكتب برنامجاً يمر على قائمة قياسات ويحسب المتوسط وأعلى قيمة وعدد القيم خارج نطاق تدريبي، ثم اختبر قائمة فارغة وقائمة من عنصر واحد.
- سجل صيانة نصي: صمم برنامجاً يضيف سجلات صيانة إلى ملف نصي ثم يقرأها ويعرض عدد السجلات، مع استخدام ترميز يدعم العربية ووضع إضافة يحافظ على البيانات السابقة.
- مكتبة دوال الورشة: أنشئ ثلاث دوال لحساب تكلفة مواد، والتحقق من نطاق قياس، وتحويل دقائق إلى ساعات، ثم اكتب حالات اختبار صغيرة لكل دالة.
- مقابلة حول مشكلة مهنية: أجر مقابلة قصيرة مع مدرب أو زميل حول مهمة متكررة يمكن أتمتتها، ولا تسجل بيانات شخصية، ثم حوّل وصف المهمة إلى مدخلات وقواعد ومخرجات ومخطط خوارزمي.
متقدم
- نظام فحص جودة مصغر: ابن برنامجاً يقرأ قياسات من ملف، يتحقق من صحة البيانات، يصنف النتائج، ويكتب ملخصاً جديداً، مع معالجة القيم غير الرقمية وشرح حدود الحل.
- لوحة أوامر عمل نصية: أنشئ تطبيقاً نصياً بسيطاً يتيح إضافة أمر عمل وتغيير حالته وعرض الأوامر المفتوحة، واستخدم دوالاً وقائمة أو قاموساً وملفاً لحفظ البيانات التدريبية.
- تحقيق برمجي في عطل: أنشئ برنامجاً من عدة دوال يتضمن خطأ منطقياً مقصوداً، ثم استخدم الطباعة المرحلية أو المصحح لتحديد السبب، ووثّق سلسلة الفرضيات والاختبارات حتى الإصلاح في تقرير قصير أو فيديو تعليمي.
- مشروع مهني متكامل ببايثون: اختر مشكلة آمنة من تخصصك مثل تلخيص مخزون تدريبي أو بيانات قياس غير حساسة، وصمم الحل ونفذه واختبره، ثم قيّم قابلية استخدامه ودقته والقيود التي تمنع استخدامه مباشرة في بيئة إنتاج دون مراجعة مختص.
مجالات تعلم مرتبطة
ترتبط هذه الدورة بالرياضيات التطبيقية عند بناء الصيغ والتحقق من النتائج، وبالإحصاء الأساسي عند تلخيص القياسات، وبالجودة والصيانة عند أتمتة السجلات والفحوص، وبأمن المعلومات عند التفكير في حماية الملفات والبيانات وعدم استخدام بيانات شخصية أو إنتاجية حساسة في تمارين غير مخصصة لذلك.
مسرد
| المصطلح | التعريف |
|---|---|
| متغير | اسم يرتبط بقيمة يستخدمها البرنامج ويمكن أن يتغير ارتباطه أثناء التنفيذ. |
| نوع البيانات | وصف يحدد طبيعة القيمة والعمليات المناسبة لها، مثل عدد أو نص أو قائمة. |
| سلسلة نصية | تسلسل من المحارف يستخدم لتمثيل النصوص. |
| قائمة | مجموعة مرتبة قابلة للتعديل من العناصر. |
| قاموس | بنية تربط مفاتيح فريدة بقيم. |
| شرط | تعبير منطقي يحدد أي مسار من مسارات البرنامج سيُنفذ. |
| حلقة | بنية تكرر تعليمات وفق عناصر أو شرط استمرار. |
| دالة | وحدة برمجية مسماة تستقبل مدخلات اختيارية وقد تعيد قيمة. |
| معامل | اسم داخل تعريف الدالة يستقبل قيمة عند استدعائها. |
| ملف | مورد تخزين يمكن للبرنامج القراءة منه أو الكتابة إليه. |
| استثناء | حدث خطأ أثناء التنفيذ يمكن التقاطه ومعالجته بطريقة محددة. |
| تصحيح | عملية منهجية لتحديد سبب الخطأ والتحقق من إصلاحه. |
| خوارزمية | سلسلة خطوات واضحة لتحويل المدخلات إلى المخرجات المطلوبة. |
مشروعات aiMOOC
MOOCwiki · Deutsch
Nach dem Lernen ist vor dem Lernen
Entdecke direkt den nächsten Lernkurs. Weitere Inhalte erscheinen, wenn Du weiter nach unten scrollst.
Zur MOOCwiki-HauptseiteMediathek
Mediathek
Mediathek wird aus dem Wiki geladen ...
Keine passenden Inhalte gefunden. Bitte ändere Suche oder Filter.
NEWSLernweltNOAH fragen