Professional Documents
Culture Documents
البرمجة عن
طريفففق لغفففة
مقدمة في البرمجة عن طريق لغة بايثون
thebsom@hotmail.com
تم بحمد ا بتاريخ
١٤٣٣/٠٩/٠٤
٢٠١٢/٠٧/٢٣
http://creativecommons.org/licenses/by-sa/3.0/deed.en
الفتتاحية
انتشللللار الحواسللللب بمختلللللف أشللللكالها مللللن الحواسللللب الشخصللللية إلللللى
المحموللة إللى الهواتلف الذكيلة زاد ملن اهتملام النلاس بالبرمجلة و حلب تعلمهلا
خصوصا بين أولئك الذين في المرحلة الثانوية ،من أكثر المور الللتي شللدتني
و غيللري للبرمجللة هللي اللعللاب اللكترونيللة الللتي كنللت ألعبهللا و أتسللاءل كللثيرا
كيف يتم إنشاءها.
بعد دخلولي لعلالم البرمجلة عرفلت أن المبرملج مسلؤول علن الكلثير ملن الملور
فللي مختلللف المجللال ت و أنللله يفكللر بطريقلللة قلللد تختلللف عمللا يللراه مسللتخدم
البرنامج ،من أهم فوائد البرمجة تنفيذ المهام بطريقة تلقائيلة دون القيلام بهلا
يدويا.
لللم أتخيللل أنللي سللأحتاج البرمجللة يومللا فللي الحيللاة العمليللة ،خلل دراسللتي
الجامعيللة وصلللت لمرحلللة التللدريب العملللي و بللدأ ت أعمللل فللي إحللدى شللركا ت
التصللال ت و لللم تكللن شللركة برمجللة ،يومللا مللا احتجنللا ترتيللب عللدد هائللل مللن
الملفللا ت ،لللم تكللن مشللكلة معقللدة و لكللن عللدد الملفللا ت و طريقللة ترتيبهللا يأخللذ
وقتللللا طللللويل جللللدا و قيامنللللا بترتيبهللللا يللللدويا يللللؤدي للكللللثير مللللن الخطللللاء ،
استغرقت ساعتين في أول يوم لترتيب جزء منها و كللان أملرا ممل جلدا ،فللي
اليوم التالي قرر ت أن أجعل الحاسب يقلوم بهلذه المهملة ،اسلتغرقت فلي ذللك
اليوم نصف ساعة فقط لكتابة برنامج صغير و التأكد من عمله بشلكل صلحيح
يقوم بالبحث في الملفا ت و يقوم بترتيبها بالطريقة المطلوبة في وقت قصلير
و بأخطللاء أقللل ،عنللدها علمللت أن كللثيرا مللن المشللاكل الللتي تللواجه النللاس و
المؤسسا ت يستطيع المبرمج حلها بشكل أسرع و أكثر كفاءة.
فللي نهايللة هللذه الكلمللا ت أحمللد ال الللذي أنعللم علللي بمعرفللة أسللأله أن يللوفقني
لنفع بها الناس ،أود أن أشكر كل من ساهم في هذا العمل ابتلداء مللن واللدتي
الحبيبة التي وقفت معي في مختلف مراحل الحيللاة ،شللكري و تقللديري أيضللا
لخللي العزيللز حسللين المطللوع الللذي كللان للله فضللل كللبير فللي بدايللة مسلليرتي
البرمجية ،الشكر موصول أيضا لل خ الفاضل معاذ ساّمان الذي يعود له الفضللل
فلللي مراجعلللة اللللدروس لتظهلللر بأفضلللل صلللورة و لل خ العزيلللز محملللد الشلللاّمري
لمساهمته في إزالة بعض العوائق التي وقفت في طريقللي خلل كتللابتي لهللذه
المادة ،أشكر أيضا كل من ساهم في تصميم الدوا ت التي تم استخدامها في
هلللللذا الكتلللللاب و منهلللللم فريلللللق برناملللللج ليلللللبر أوفيلللللس و مصلللللمموا الخطلللللوط
المستخدمة و هي خطوط ديجافو و خطوط درويد و خط سلالم ،لهلم جميعلا
و لكل من ساهم ممن لم نذكره جزيل الشكر و خالص المتنان.
محمد الغافلي
thebsom@hotmail.com
نبذة عن الكاتب
بللدايتي فللي البرمجللة كللانت فللي الفيجللوال بيسللك فللي عللام ١٤٢6للهجللرة
الموافلللق ٢٠٠5للميلد ملللن أحلللد الكتلللب اللللتي اشلللتريتها ،قفزتلللي فلللي البرمجلللة
كللانت بلغللة جافللا فللي عللام ٢٠٠6مللع أحللد أصللدقائي الللذي تعللب معللي و أدخلنللي
عالم البرمجة ،تعلمت لغة سي ++عام ٢٠٠8مللن أحللد المواقللع و بقيللت أبرمللج
بهللا بيللن فللترة و أخللرى ،كتبللت دروس سللي ++و نشللرتها فللي شللبكة النللترنت
نهايلللة علللام ٢٠١٠متخلللذا اسلللم "روح سلللامية" اسلللما مسلللتعارا ،تعلملللت برمجلللة
تطبيقا ت آندرويد و بعدها تعلمت لغة بايثون بعد نصيحة من أحد أصدقائي ،
مللن أعملللالي خلل حيللاتي الجامعيللة تصلللميم معالللج و تصللميم لغلللة تجميللع و
مجملع ) (Assemblerلله ،قملت بكتابلة براملج علدة معظمهلا كلان لتعللم برمجلة
مهام محددة منها برنامج صور ذا ت بعدين و مشغل صوتيا ت بسيط.
مقدمة الكتاب
مقدمللة فللي البرمجللة عللن طريلق لغلة بلايثون ،أردنللا أن نضللع فكرتيللن فللي
عنللوان الكتللاب ،الولللى هللي "مقدمللة فللي البرمجللة" أي أن هللذا الكتللاب يعطللي
مقدمللة فللي البرمجللة و أفكارهللا ليللس بلغللة برمجللة محللددة بللل أفكللار مشللتركة
في مختلف لغا ت البرمجة ،الفكرة الثانية هي "عن طريلق لغلة بلايثون" أي أن
لغة بايثون ستكون وسيلة ليصال هذه الفكار.
يمكللن أن تحللل أي لغللة أخللرى محللل لغللة بللايثون للتعريللف بالبرمجللة لكللن لغللة
بايثون لها ميزا ت كثيرة كلغة أولى تساعد الدارس و الكاتب في الللتركيز علللى
أفكار البرمجة أكثر من اللغة بحد ذاتها ،من هذه الميزا ت السهولة و الترتيب.
على أن لغة بايثون لغة سهلة مقارنة بلغا ت أخرى مثل جافا و سي و سللي++
إل أنهللا تبقللى قويللة و مفيللدة ،هنللاك جهللا ت و مؤسسللا ت تسللتخدم لغللة بللايثون
لغللراض عللدة و مللن أبرزهللا بحسللب موقللع بللايثون شللركة جوجللل الللتي تحتللل
بايثون جزءا من محرك بحثها.
الصللدار الثللاني مللن لغللة بللايثون هللو الكللثر اسللتخدام وقللت كتابللة هللذا الكتللاب
لكللن الكتللاب يسللتخدم الصللدار الثللالث مللن اللغللة لنلله أحللدث إصللدار و يعتللبر
مستقبل اللغة و هو الصدار اللذي نتوقلع انتشلاره فلي الفلترة القادملة و نتوقلع
أن يستخدمه الدارس إذا قرر الستمرار في تعلم لغة بايثون.
يبدأ الكتاب في الدروس الثلةثة الولى بشرح تنصيب البرامللج الللتي نحتاجهللا
للبرمجللة بلغللة بللايثون كتمهيللد لبدايللة التعلللم ،بعللدها يبللدأ بشللرح بعللض أوامللر
البسلليطة فللي اللغللة تللدريجها حللتى يصللل إلللى كيفيللة التحكللم بتنفيللذ الوامللر ،
أخيرا يعطي الكتاب فكرة عن كيفية ترتيب البرنامج فيملا علدده خمسلة عشلر
درسا ،ينتهي الكتاب بمشروع بسيط يساعد الدارس في تطللبيق الفكللار الللتي
تعلمها.
ينقسم كل درس في هذا الكتلاب إللى علدة أقسلام يتحلدث كلل قسلم علن جلزء
مللن الفكللرة العامللة فللي الللدرس ،قللد تحتللاج بعللض الللدروس ملفللا ت يتللم إرفللاق
روابط لها مع الدرس لتحميلها من النترنت ،يتم استخدام هللذا الخللط لتعليللم
النللص الللذي يحتللوي علللى رابللط ،يتللم تعليللم بعللض المللور المهمللة فللي الللدرس
بهذا الخلط ،معظلم اللدروس سلتحتوي عللى أواملر بلغلة بلايثون ،سليتم كتابلة
هذه الوامر بالخط التالي :
) 'print ( 'this is a python program
هذا الكتلاب يعتلبر خطلوة أوللى فلي المسليرة البرمجيلة لللدارس ،بعلد النتهلاء
مللن هللذه الللدروس بإمكللان الللدارس الكمللال فللي تعلللم خصللائص لغللة بللايثون و
كيفية الستفادة منها أكثر و بإمكانه أيضا التحلول إللى لغلة أخلرى و سليلحظ
التشللابه الكللبير بيلللن الفكلللار فلللي لغلللة بلللايثون و فلللي مختللللف اللغلللا ت و يتعلللم
الختلف بينهللا ،سللواء اختللار الللدارس التعمللق فللي لغللة بللايثون أو تعلللم لغللة
أخرى و استخدامها بإمكانه زيادة معرفته و مهاراته في البرمجة.
الفهرس
- ١تنصيب بايثون ١.................................................................................
-تنصيب بايثون في أنظمة أوبونتو ٢.................................................. ١.١
-تنصيب بايثون في أنظمة ماك 6...................................................... ١.٢
-تنصيب بايثون في أنظمة ويندوز ١٠................................................. ١.٣
-تعلمنا في هذا الدرس ١٢................................................................ ١.٤
- ٢تنصيب برنامج جي إد ت ١٣...................................................................
-تنصيب المحرر في أنظمة أوبونتو ١٤................................................ ٢. ١
-تنصيب المحرر في أنظمة ماك ١٤..................................................... ٢. ٢
-تنصيب المحرر في أنظمة ويندوز ١5................................................. ٢.٣
-استخدام المحرر ١6..................................................................... ٢. ٤
-تعلمنا في هذا الدرس ١٧................................................................ ٢. 5
- ٣تشغيل بايثون ١8................................................................................
-تشغيل مفسر بايثون ١٩................................................................ ٣. ١
-تشغيل أوامر بايثون عن طريق المفسر ٢١.......................................... ٣.٢
-تشغيل أوامر بايثون من ملف ٢١..................................................... ٣.٣
-تعلمنا في هذا الدرس ٢٢............................................................... ٣. ٤
- ٤العمليا ت الحسابية ٢٣...........................................................................
-الجمع و الطرح والضرب و القسمة ٢٤................................................ ٤.١
-القسمة الصحيحة و باقي القسمة ٢5................................................. ٤.٢
-أولوية تنفيذ العمليا ت الحسابية ٢6.................................................. ٤.٣
-تعلمنا في هذا الدرس ٢٧............................................................... ٤.٤
- 5الطباعة ٢8........................................................................................
-أمر الطباعة ٢٩............................................................................ 5. ١
-النصوص ٣٠............................................................................... 5. ٢
-رموز الفل ت ٣٠......................................................................... 5.٣
-كتابة برنامج في ملف ٣١............................................................... 5. ٤
-تعلمنا في هذا الدرس ٣٢............................................................... 5. 5
- 6المتغيرا ت ٣٣.....................................................................................
-المتغيرا ت ٣٤............................................................................. 6.١
-متغيرا ت النصوص ٣6.................................................................. 6.٢
-جمع النصوص ٣6....................................................................... 6.٣
-تعلمنا في هذا الدرس ٣٧............................................................... 6.٤
- ٧الدخال ٣8........................................................................................
-الدخال ٣٩................................................................................ ٧. ١
-إدخال العداد ٤٠........................................................................ ٧. ٢
-تعلمنا في هذا الدرس ٤٠............................................................... ٧.٣
- 8التعامل مع الملفا ت ٤١...........................................................................
-فائدة الملفا ت ٤٢......................................................................... 8. ١
-فتح ملف ٤٢.............................................................................. 8. ٢
-الكتابة في ملف ٤٣...................................................................... 8.٣
-القراءة من ملف ٤٤...................................................................... 8. ٤
-تعلمنا في هذا الدرس ٤6............................................................... 8. 5
- ٩الجمل الشرطية ٤٧............................................................................ ١
-القيم المنطقية ٤8........................................................................ ٩.١
-عمليا ت المقارنة ٤8...................................................................... ٩.٢
-عبارة 5٠................................................................................ if ٩.٣
-تعدد الوامر في عبارة 5١............................................................ if ٩.٤
-تعلمنا في هذا الدرس 5٢............................................................... ٩.5
- ١٠الجمل الشرطية 5٣........................................................................... ٢
-الوامر المنطقية 5٤..................................................................... ١٠.١
-عبارة 55............................................................................. elif ١٠.٢
-عبارة 56........................................................................... else ١٠.٣
-تعلمنا في هذا الدرس 58.............................................................. ١٠.٤
- ١١الحلقا ت 5٩..................................................................................... ١
-أمر 6٠............................................................................. while ١١.١
-مقاطعة أوامر الحلقة 6١............................................................... ١١.٢
-تعلمنا في هذا الدرس 6٢.............................................................. ١١.٣
- ١٢القوائم 6٣........................................................................................
-القوائم 6٤................................................................................ ١٢.١
-التوصل لعناصر القائمة 65............................................................ ١٢.٢
-التوصل لحرف العبارا ت النصية 66................................................ ١٢.٣
-تعلمنا في هذا الدرس 6٧.............................................................. ١٢.٤
- ١٣الحلقا ت 68.................................................................................... ٢
-تعديل قيم القائمة باستخدام 6٩............................................while ١٣.١
-معرفة عدد عناصر القائمة ٧٠......................................................... ١٣.٢
-حذف العناصر من القائمة ٧٠......................................................... ١٣.٣
-تعلمنا في هذا الدرس ٧١.............................................................. ١٣.٤
- ١٤الاّدوال ٧٢........................................................................................
-الاّدوال ٧٣................................................................................ ١٤.١
-إعطاء قيمة للدالة ٧٤.................................................................. ١٤.٢
-إرجاع قيمة من الاّدالة ٧5............................................................. ١٤.٣
-تعلمنا في هذا الدرس ٧6.............................................................. ١٤.٤
- ١5الوحدا ت ٧٧.....................................................................................
-الوحدا ت ٧8.............................................................................. ١5.١
-استيراد الوحدا ت ٧8................................................................... ١5.٢
-استخدام أوامر الوحدة ٧٩............................................................ ١5.٣
-تعلمنا في هذا الدرس 8٠.............................................................. ١5.٤
- ١6مشروع السلسلة 8١............................................................................
-فكرة المشروع 8٢....................................................................... ١6.١
-أقسام المشروع 8٢..................................................................... ١6.٢
-مهمة المشارك في المشروع 8٧...................................................... ١6.٣
-ملخص المشروع 88................................................................... ١6.٤
-حل المشروع 8٩........................................................................ ١6.5
الدرس اللول
1تنصيب بايثون
تحتاج برامج بايثون إلى برنامج خاص يقوم بتشغيلها ،ل يمكن تشغيل
برامللج بللايثون إل بوجللود هللذا البرنامللج ،هللذا الللدرس يغطللي كيفيللة تنصلليب
برنامج بايثون في كل من أنظمة أوبونتو و مللاك و وينللدوز ،بإمكانللك النتقللال
للقسم الذي يشرح طريقة التنصيب على نظامك ،يأتي هذا الدرس مع ملفلا ت
تسللاعدك فللي تنصلليب و تشللغيل بللايثون لكللل نظللام ،بإمكانللك تحميللل الملفللا ت
الخاصة بنظام أوبونتو و ماك و ويندوز.
بإمكانلللك أيضلللا تحميلللل مللللف تنصللليب بلللايثون ملللن هلللذا الرابلللط و اتبلللاع
الخطوا ت التالية :
.٢فللللك ضللللغط الملللللف الللللذي قمللللت بتحميللللله و سللللتجد فيلللله ملفللللا اسللللمه
، python-install.shقم بتشغيله في الصورة رقم .١
٢
.٣ستظهر لك خيارا ت تشغيل الملف ،اختر الخيار Run in Terminalكما
في الصورة رقم .٢
.٤سيتم طلب كلمة السر لمشرف الجهاز حتى يتللم تنصلليب البرنامللج ،قللم
بإدخللال كلمللة السللر ةثللم اضللغط مفتللاح الدخللال Enterكمللا فللي الصللورة
رقم .٣
إذا كتبللت كلمللة السللر فللإن البرنامللج يقرأهللا لكنلله ل يظهللر الحللرف بللل
يبقيها مخفية.
٣
.5سيسألك البرنامج إذا كنت تستخدم بروكسي لتصالك أو ل.
إذا للللم تكلللن تسلللتخدم بروكسلللي اكتلللب الحلللرف nةثلللم اضلللغط مفتلللاح
الدخال Enterكما في الصور .٤
إذا كنت تستخدم بروكسي اكتب الحرف yةثلم اضللغط مفتللاح الدخللال
، Enterسيسألك البرناملج علن عنلوان البروكسللي ةثلم منفلذ البروكسلي ،
قم بإدخالها كما في الصورة .5
٤
.6انتظللر حللتى يتللم تنصلليب بللايثون و تظهللر لللك رسللالة إنهللاء التنصلليب
بعدها اضغط مفتاح الدخال Enterكما في الصورة .6
إذا ظهر ت لك رسالة خطلأ كملا فلي الصلورة ٧فللم يتلم تنصليب بلايثون
بسبب مشكلة على الغلب تكون متعلقة باتصالك بالنترنت.
5
1.2تنصيب بايثون في أنظمة ماك
بإمكانك تحميل ملف تنصليب بلايثون ملن هلذا الرابلط و اتبلاع الخطلوا ت
التالية :
.١فك ضغط الملف الذي قمت بتحميله و ستجد ملفين للتنصيب :
6
.٤اضللغط علللى زر Continueفللي جميللع النوافللذ التاليللة الللتي سللتظهر كمللا
فللي الصللورة رقللم ، ٩ستصللل بعللد عللدة نوافللذ إلللى نافللذة الموافقللة علللى
الرخصة.
٧
الصورة :١١اضغط على Install
.٧سيطلب البرنامللج منللك كلمللة السللر لمشللرف الجهللاز ،اكتللب كلمللة السللر و
اضغط على زر Install Softwareكما في الصورة رقم .١٢
8
.8اضغط على زر Closeبعد انتهاء التنصيب كما في الصورة .١٣
٩
1.3تنصيب بايثون في أنظمة ويندوز
بإمكانك تحميل ملف تنصليب بلايثون ملن هلذا الرابلط و اتبلاع الخطلوا ت
التالية :
.١فك ضغط الملف الذي قمت بتحميله و ستجد ةثلث ملفا ت :
١٠
.٤في النافذة الثانية تأكللد ملن اختيللار "\ "C:\Python32فلي مربلع الكتابلة
ةثم اضغط زر التالي أو Nextكما في الصورة .١5
١١
.6انتظللر حللتى ينتهللي تنصلليب بللايثون ةثللم اضللغط زر إنهللاء أو Finishكمللا
في الصورة .١٧
هللذا الللدرس كللان تمهيللدا لبدايللة تعلمنللا للبرمجللة ،فللي الللدرس القللادم سللنقوم
بتنصيب برنامج يساعدنا في كتابة برامج بايثون.
١٢
الدرس الثاني
2تنصيب برنامج جي إدت
نقلللوم بكتابلللة براملللج بلللايثون باسلللتخدام محلللرر نصلللوص مثللللل برناملللج
المفكللرة ،برنامللج المفكللرة -علللى أنلله يسللتطيع كتابللة البرامللج -يفتقللر لميللزا ت
تسلللهل علينلللا كتابلللة البراملللج كلللثيرا ،بعلللض محلللررا ت النصلللوص تجعلللل كتابلللة
البرامج أسهل من غيرها ،بعضها يساعد في كتابة لغلة محلددة بينملا يسلاعدنا
البعللض الخللر فللي كتابللة أكللثر مللن لغللة ،يمكنللك اسللتخدام أي محللرر نصللوص
تحلللب لكننلللا فلللي هلللذا اللللدرس نقلللترح عليلللك اسلللتخدام برناملللج geditاللللذي
يساعدنا في كتابة برامج بمختلف اللغا ت و منها لغة بايثون يأتي هذا الللدرس
مع ملفين :
١٤
الصورة :١8اسحب اليقونة اليسرى إلى أيقونة المجلد اليمنى
.٢حللللدد الخيللللار " "I accept the agreementةثللللم اضللللغط "التللللالي" أو
" "Nextكما في الصورة رقم .٢
١5
.٣اسللتمر بالضللغط علللى "التللالي" أو " "Nextفللي كللل النوافللذ التاليللة حللتى
تصل النافذة الخيرة ةثم اضغط الخيار "إنهاء" أو "."Finish
2.4استخدام المحرر
برنامللج geditمثللل أي محللرر نصللوص آخللر يسللتطيع كتابللة ملللف نصللي و
حفظ الملف لكننا في هذا القسم نريد التنبيه على بعض النقاط الللتي تسللاعدنا
في الدروس القادمة و هي :
.٢حيللن تحفللظ الملللف تأكللد اجعللل اسللم الملللف الللذي تريللد حفظلله ينتهللي
بامتداد .pyكما في الصورة رقم .٣
الخطوا ت السابقة تجعل البرنامللج يلللون الكلمللا ت الللتي لهللا معللان فللي لغللة
بللايثون ممللا يسللهل علينللا قللراءة البرامللج ،سللتلحظ هللذا حيللن نقللوم بكتابللة
برامج بايثون.
١6
2.5تعلمنا في هذا الدرس
• تنصيب برنامج .gedit
في الدرس القادم سنتعلم تشغيل مفسر بللايثون و كتابللة الوامللر عليلله و أيضللا
تشلللغيل البراملللج المكتوبلللة بلغلللة بلللايثون.كيفيلللة تشلللغيل ملفللا ت تحلللوي أواملللر
بايثون.
١٧
الدرس الثالث
3تشغيل بايثون
بعللد تنصلليب بللايثون ننتقللل فللي هللذا الللدرس إلللى تشللغيل بللايثون ،هللذا
الدرس يوضح فكرة بللايثون و طريقللة اسللتخدامها و البرمجللة بهللا ،نشللرح فللي
هللذا الللدرس نقطللتين رئيسلليتين :تشللغيل أوامللر بللايثون عللن طريللق المفسللر و
تشغيل أوامر بايثون من ملف ،يأتي هذا الدرس مع عدة ملفا ت :
١٩
.٢إذا كنت تستخدم نظام أوبونتللو أو مللاك اكتللب المللر python3و سلليتم
تشللغيل المفسللر ،إذا اشللتغل المفسللر سللتجد فللي بدايللة السللطر الخيللر
ةثلث علما ت أكبر من >>> كما في الصورة رقم .١
.٣إذا كنللت تسللتخدم نظللام وينللدوز اكتللب المللر pythonو سلليتم تشللغيل
المفسر ،إذا اشتغل المفسر ستجد في السطر الخير ةثلث علما ت أكبر
من >>> كما في الصورة رقم .٢
٢٠
3.2تشغيل أوامر بايثون عن طريق المفسر
المفسر يتيلح لنلا كتابلة أوامللر لبلايثون و برناملج بلايثون يقلوم بتنفيلذها ،
شغل المفسر و اكتب أي شيء ةثم اضللغط زر الدخللال Enterكمللا فللي الصللورة
رقم .٣
بعللد كتابتنللا للمللر السللابق تللم تنفيللذ المللر ،ظهللر ت لنللا رسللالة خطللإ لن
العبللارة الللتي كتبناهللا خاطئللة و ل معنللى لهللا فللي لغللة بللايثون ،خلل الللدروس
سنتعلم عددا من الوامر في لغة بايثون تمكننا من القيام بالعديد من المهام.
٢١
بللللايثون ) python3إذا كنللللت تسللللتخدم أوبونتللللو أو مللللاك و pythonإذا كنللللت
تستخدم ويندوز( بعده مسافة ةثم اسم الملف الذي تريد تشغيله ،الملف الللذي
نريللد تشللغيله هللو python-test.pyلللذلك كتبنللا اسللمه بعللد أمللر بللايثون كمللا فللي
الصللورة رقللم ، ٤البرنامللج يرسللم كلمللة "بللايثون" فللي الطرفيللة ،هللذا برنامللج
بايثون بسيط جدا و خلل الدروس سنتعلم كتابة برامج تقوم بمهام أكثر.
هللذا الللدرس كللان تمهيللدا لبدايللة تعلمنللا للبرمجللة ،فللي الللدرس القللادم سللنتعلم
تنفيذ العمليا ت الحسابية الللتي تشللكل أمللرا أساسلليا فللي أي لغللة برمجللة و منهللا
بالتأكيد لغة بايثون.
٢٢
الدرس الرابع
4العمليات الحسابية
البرنامج عبارة عن عدد من الوامر يتللم تنفيللذها و لتعلللم البرمجللة يجللب
علينا تعلم هذه الوامر ،ابتداء من هذا الدرس سنبدأ البرمجللة بلغللة بللايثون و
تعلم عدد من الوامر في كل درس ،نتعلم في هللذا الللدرس عمليللا ت الحسللابية
مهمللة حللتى فللي لغللا ت البرمجللة الخللرى ،سللنتطرق فللي الللدرس لسللت عمليللا ت
حسللابية بعضللها مشللهور و هللي الجمللع و الطللرح و الضللرب و القسللمة ،البعللض
الخر من العمليا ت الحسابية قد ل يكلون مشلهورا و هلي القسللمة الصللحيحة و
بللاقي القسللمة ،هنللاك عمليللا ت أخللرى فللي بللايثون لكننللا لللن نتطللرق لهللا فللي هللذا
الدرس و قد نتعلمها و نستخدمها في دروس لحقة.
إذا أدخلت السطر السابق سيكتب المفسللر فللي السللطر الللذي يليلله العللدد ، ١١إذا
أدخلنا أي عملية حسابية يقوم المفسر بتنفيللذها و طباعللة الناتللج ،جللرب جملع
أعداد أكثر في سطر واحد ،مثل اكتب :
>>> 8+4+12+3
سلليقوم المفسللر بطباعللة نتيجللة جمللع العللداد ،هنللاك العديللد مللن العمليللا ت فللي
لغة بايثون نعطي هنا بعضها مع رمز كل عملية و مثال عليها و ناتجها :
٢٤
• عملية القسمة ) : ( /
>>> 7 / 4
1.75
لحظ أننللا نسللتخدم رمللوزا للضللرب و القسللمة تختلللف عللن الرمللوز المسللتخدمة
عادة في الرياضيا ت ،في الضرب نستخدم رمللز النجمللة * بللدل الرمللز × و فللي
القسمة نستخدم الخللط المائللل /بللدل اسللتخدام الرمللز ÷ لكللن معنللى العمليللة ل
يتغير فالضرب و القسمة في بايثون و الرياضيا ت لهما نفس المعنى تماما.
• باقي القسمة :هذه العمليللة تعطللي بللاقي قسللمة العللدد الول علللى العللدد
الثللاني ،نسللتخدم رمللز النسللبة المئويللة %للقيللام بعمليللة بللاقي القسللمة ،
مثل ٤ % ٧يسلللاوي ٣لن العلللدد ٣هلللو بلللاقي قسلللمة ٧عللللى ، ٤الملللر
التالي مثال على عملية باقي القسمة و بعده يظهر ناتج العملية :
>>> 7 % 4
3
٢5
4.3أولوية تنفيذ العمليات الحسابية
بإمكاننا كتابة أكللثر مللن عمليللة فللي أمللر واحللد ،مثل نسللتطيع كتابللة المللر
التالي :
>>> 3 % 2 + 5 * 2
يتم تنفيذ العمليا ت الحسابية بترتيب معين فبعض العمليا ت لهلا أولويلة أعللى
ملللن الخلللرى و يتلللم تنفيلللذها أول ،فلللي هلللذا اللللدرس سلللنذكر ترتيلللب العمليلللا ت
الستة التي تم ذكرهللا فللي هلذا الللدرس لكللن هنلاك عمليللا ت أخللرى قللد يكلون لهللا
أولويللة أعلللى أو أقللل مللن العمليللا ت المللذكورة ،أولويللة تنفيللذ العمليللا ت الللتي
تطرقنا لها في الدرس كما يلي :
.٢الجمع و الطرح.
يتم تنفيذ كل العمليا ت من المستوى الول قبل تنفيذ عمليتي الجمع و الطرح
اللتين في المستوى الثاني ،في السطر السابق نجد ةثلث عمليا ت و هي بللاقي
القسمة و الجمع و الضرب ،يتم تنفيذ بللاقي القسللمة و الضللرب أول قبللل تنفيللذ
الجمع ،بعد حساب ناتجي باقي القسمة و الضللرب يتلم بعلد ذللك تنفيلذ الجملع
بين الناتجين.
إذا وجللد ت أكللثر مللن عمليللة بنفللس مسللتوى التنفيللذ يتللم تنفيللذ العمليللا ت مللن
اليسار إلى اليمين ،مثل :
2 * 7 // 3
لن المر السابق يحوي عمليلتين ملن نفلس المسلتوى و هملا الضلرب و القسلمة
الصحيحة يتم تنفيذ العملية التي على اليسار أول و هللي ضللرب ٧ × ٢و يتللم
حساب النتيجة ،بعد ذلك تتم عملية القسمة الصحيحة بيللن نتيجللة الضللرب و
العدد .٣
بإمكاننلللا تجميلللع بعلللض العمليلللا ت بيلللن قوسلللين ليتلللم تنفيلللذها قبلللل العمليلللا ت
٢6
الخرى بغض النظر عن أولوية تنفيذها ،مثل :
) 5 * ( 2 + 1
مللع أن عمليللة الضللرب تتللم قبللل عمليللة الجمللع إل أن عمليللة الجمللع فللي المللر
السابق تتم أول لنها داخل قوسين.
◦ الجمع.
◦ الطرح.
◦ الضرب.
◦ القسمة.
◦ القسمة الصحيحة.
◦ باقي القسمة.
فلللي هلللذا اللللدرس تعلمنلللا الحسللاب بلغلللة بلللايثون و تعاملنلللا بشلللكل أساسلللي مللع
المفسللر ،قمنللا بكتابللة أوامللر صللحيحة و مشللاهدة ناتجهللا ،فللي الللدرس القللادم
سنتعلم أوامر لكتابة جمل على الطرفيللة و هلذا مللن أبسللط أشللكال التفاعللل مللع
المستخدم.
٢٧
الدرس الخامس
5الطباعة
سنتعلم فلي هلذا اللدرس معنلى الطباعلة فلي البرمجلة و نتعلرف علللى أملر
الطباعة ،سنستخدم أمر الطباعة في مفسللر بللايثون ةثلم نكتللب أول برنامللج لنللا
في ملف و سنستخدم فيه أيضا أمر الطباعة.
الطباعة في البرمجة تعني الكتابة على شاشة الوامر ،هذا مختلف كثيرا عللن
الطباعللة بالطابعللة ،إذا سللمعت عبللارة "طباعللة" فللي أي لغللة برمجللة فهللي تعنللي
الطباعة على شاشة الوامر.
5.1أمر الطباعة
شغل مفسر بايثون و اكتب المر التالي ةثم اضغط زر الدخال :
) '>>> print ( 'hello world
كللل مللا سلليفعله المفسللر هللو كتابللة العبللارة " "hello worldفللي الطرفيللة ،تللذكر
طريقلللة كتابلللة الملللر :نكتلللب printبعلللدها قوسلللان و نكتلللب بينهملللا ملللا نريلللد
طباعته مثللل الجملللة السللابقة " ، "hello worldبإمكاننللا طباعللة الرقللام أيضللا ،
اكتب السطر التالي في مفسر بايثون :
) >>> print ( 29
سلليقوم المفسللر بطباعللة العللدد ، ٢٩جللرب كتابللة أي عللدد و سللتجد أنلله سلليقوم
بطباعته ،نستطيع أيضا طباعة ناتج العمليا ت الحسابية ،مثل :
) >>> print ( 11 + 7
سلليقوم المفسللر بطباعللة ناتللج العمليللة الحسللابية تمامللا كمللا حصللل فللي الللدرس
الماضي حين قمنللا بالعمليللا ت الحسللابية ،أمللر الطباعللة يسللتطيع أن يطبللع أكللثر
من شيء في السطر الواحد ،خذ هذا المثال :
)'>>> print ( 'I am', 12, 'years old
فللي السللطر السللابق قمنللا بطباعللة عبللارة تخللبر أن عمرنللا ١٢سللنة ،قمنللا بطباعللة
جملللتين و رقللم ،بإمكاننللا طباعللة أي عللدد مللن العبللارا ت و العللداد و العمليللا ت
الحسابية و غيرها بأن نفصل بين كلل شليء نطبعله و اللذي يليله بفاصللة ،أملر
الطباعللة يفصللل بيللن كللل أمللر و آخللر بمسللافة واحللدة ،فللي مثالنللا السللابق مثل
٢٩
نجد عند الطباعة في شاشللة الوامللر أن العبللارة " "I amمفصللولة بمسللافة عللن
العدد ١٢و العدد أيضا مفصول بمسافة عن العبارة "."years old
5.2النصوص
فللي القسللم السللابق طبعنللا جملللة علللى الشاشللة و حيللن كتبنللا الجملللة فللي
بايثون وضعناها بين علملتي اقتبلاس مفردتيللن ) ' ( ،كللل الكلملا ت الموجلودة
بدون علما ت اقتباس تفسر علللى أنهللا أوامللر بللايثون و أي عبللارة بيللن علمللتي
اقتبلللاس تعتلللبر عبلللارة نصلللية و ليسلللت أملللرا ،لهلللذا السلللبب تجلللد أننلللا إذا أردنلللا
طباعة أي جملة نضعها بين علمتي اقتباس ،بإمكاننا أيضا استخدام علما ت
القتباس المزدوجة ) " ( ،نستطيع أن نكتب مثل :
) ">>> print ( "hello world
علما ت القتباس المفردة و المزدوجة لها نفس المعنللى تمامللا فللي لغللة بللايثون
و بإمكاننا أن نستخدم أي نوع من علما ت القتباس لكتابة نص معين ،المهم
فللي المللر أن ننهللي النللص بنفللس علمللة القتبللاس الللتي فتحنللا النللص بهللا ،إذا
بدأنا النص بعلمة اقتباس مفردة يجب أن ننهيه بعلمة اقتبللاس مفللردة و إذا
بدأنا النص بعلمة اقتباس مزدوجة يجللب أن ننهيلله بعلمللة اقتبللاس مزدوجللة ،
خلل الدروس سنستخدم علما ت القتبللاس المفللردة لتحديللد النصللوص و لللن
نستخدم علما ت القتباس المزدوجة.
5.3رموز الفلت
قمنللا فللي القسللم السللابق بطباعللة نللص معيللن بللأن كتبنللاه فللي أمللر الطباعللة
بيللن علمللتي اقتبللاس مفردتيللن ،هنللاك رمللوز خاصللة تسللمى رمللوز الفل ت لهللا
معللان خاصللة ،سللنتعلم فللي هللذا القسللم رمللزا واحللدا فقللط و هللو ، \nخللذ هللذا
المر مثل و الجملة التي يطبعها :
)'>>> print ( 'Hello\nI am Mohammad
hello
I am Mohammad
٣٠
لحظ أننللا كتبنللا رمللز الفل ت \nبعللد كلمللة " "Helloمباشللرة ،هللذا الرمللز يعنللي
سللطرا جديللدا أي أن أمللر الطباعللة سللينزل سللطرا بعللد كلمللة " "Helloمباشللرة ،
نستطيع استخدام أمر الطباعة مرتين لطباعة الجملل فلي أسلطر مختلفلة دون
استخدام رمز الفل ت :
)'>>> print ( 'Hello
hello
)'>>> print ( 'I am Mohammad
I am Mohammad
افتللح برنامللج محللرر النصللوص جللي إد ت لكتابللة برنامللج بللايثون ،الفضللل أن
تقللوم بحفللظ الملللف أول قبللل أن تبللدأ الكتابللة فيلله ،احفللظ الملللف و سللمه بللأي
اسلللم لكلللن تأكلللد أن السلللم يتكلللون ملللن حلللروف أو أرقلللام انجليزيلللة و ينتهلللي
بلللل " ، ".pyتسلللتطيع مثل أن تسلللميه " ، "lesson1.pyاكتلللب فلللي المللللف النلللص
التالي :
)'print ( 'hello world
هذا نفس المر الذي كتبناه في بداية الدرس ،بإمكانك كتابة أي أوامر أخرى ،
احفظ الملف بعلد التعلديل و شلغل الطرفيلة ،تأكلد أن مللف تشلغيل الطرفيلة و
ملف بايثون الذي كتبته في نفس المجلد كما تم شرحه في الدرس الثاني.
٣١
شغل الطرفية و بعدها شغل الملف كما تم شرحه في الدرس الثاني :
في هذا الدرس تعلمنا الطباعة في لغة بايثون ،سنستفيد أكثر و أكثر من هللذا
المللر أكللثر فللي الللدروس القادمللة ،الللدرس القلادم يغطللي المتغيللرا ت و هلي مللن
أهم مبادئ البرمجة.
٣٢
الدرس السادس
6المتغيرات
تعلمنا في الدرسين السابقين تنفيللذ العمليللا ت الحسللابية و طباعللة الجمللل
و العللداد ،كللل الجمللل و العللداد الللتي تعاملنللا معهللا هللي قيللم ةثابتللة ل تتغيللر ،
أحيانا نريد حفللظ عللدد أو عبللارة معينللة فللي البرنامللج لنسللتخدمها لحقلا و هنلا
تلللللأتي فائلللللدة المتغيلللللرا ت ،سلللللتلحظ أن اسلللللتخدام المتغيلللللرا ت يشلللللبه جلللللدا
اسلللتخدام الجملللل و الرقلللام اللللتي اسلللتخدمناها فلللي اللللدروس السلللابقة ،للللن
نستفيد من المتغيرا ت كثيرا في هلذا اللدرس لكننلا سنسلتفيد منهللا أكللثر فلأكثر
خلل الدروس القادمة.
6.1المتغيرات
شغل مفسر بايثون و اكتب المر التالي ةثم اضغط زر الدخال :
>>> var = 13
في الدروس السابقة تعلمنا بعض الكلما ت التي لها معنى في لغللة بللايثون مثللل
أمللر الطباعللة ، printكلمللة varليللس لهللا أي معنللى فللي لغللة بللايثون لكننللا فللي
السلطر السلابق عرفنلا متغيلرا و أسلميناه varو حلددنا أن قيمتله ، ١٣فلي الملر
السابق أعطينا معنى لكلمة varو نستطيع استخدامها في الوامر التالية على
أنها رقم مثل أي رقم آخر ،في الدروس السلابقة قمنلا بعمليللا ت علللى الرقللام و
طباعة الرقام ،نستطيع أيضا أن نفعل هذا مع المتغير : var
>>> var
13
>>> var * 2 + 1
27
>>> var * var
169
>>> ) print ( var
13
نستخدم المتغير لحفللظ قيمللة معينللة ،لحللظ فللي السللطر السللابقة أننللا حفظنلا
قيمللة ١٣فللي المتغيللر و قمنللا باسللتخدام المتغيللر مثلمللا نسللتخدم أي رقللم فللي
سواء في الحساب أو الطباعة.
بإمكاننللا تغييللر قيمللة المتغيللر فللي أي وقللت بتعريفلله مللرة أخللرى كمللا فعلنللا فللي
٣٤
المرة السابقة ،أدخل السطر التالي في المفسر :
>>> var = 5
في السطر السلابق غيرنلا قيملة varإللى ، 5إذا اسللتخدمنا varبعلد هلذا السلطر
فسيأخذ القيمة الجديدة ،المتغير يأخذ قيمة واحللدة و بتغييللر قيمتلله تختفللي
قيمتلله السللابقة و ل يمكننللا أن نسللتخرجها مللن المتغيللر بعللد ذلللك ،قللم بطباعللة
المتغير و شاهد قيمته بنفسك :
>>> var
5
بإمكاننللا أيضللا تغييللر قيمللة varاعتمللادا علللى قيمتلله السللابقة ،مثل لللو أردنللا أن
نضاعف قيمة varمرتين نستطيع كتابة المر التالي :
>>> var = var * 2
في السطر السابق جعلنا قيملة varهلي قيملت varمضلروبة فللي ، ٢دائملا يتلم
حساب الطرف اليمن فلي المللر أول قبللل أن تتغيللر قيملة المتغيلر ،فللي السلطر
السابق مثل يتم حسللاب varضللرب ٢و النتيجللة تصلبح ، ١٠بعلد الحسلاب يتللم
تعييللن القيمللة للمتغيللر فتصللبح قيمللة varالجديللدة هللي ، ١٠بإمكانللك طبللاعته
لتتأكد من قيمته.
بإمكاننا اختيار أي اسم للمتغير لكن علينا مراعاة بعض الشروط :
٣5
6.2متغيرات النصوص
فللي القسللم السللابق أعطينللا مثللال لمتغيللر أعطينللاه قيمللة عدديللة ،العللداد
ليست القيم الوحيدة التي يمكن أن نخزنهلا فلي متغيلر بلل نسللتطيع أن نحفلظ
الجمل و النصوص أيضا ،خذ هذا المثال :
'>>> name = 'Mohammad
في المر السابق عرفنا المتغيلر nameو خزنلا فيله جمللة نصللية و ليلس رقملا ،
يمكننللا أن نعامللل هللذا المتغيللر مثللل أي عبللارة نصللية أخللرى ،بإمكاننللا طبللاعته
مثل :
6.3جمع النصوص
درسلللنا علللدة عمليلللا ت و قمنلللا باسلللتخدامها ملللع العلللداد ،بعلللض العمليلللا ت
يمكلللن اسلللتخدامها أيضلللا ملللع النصلللوص و منهلللا عمليلللة الجملللع ،جملللع العلللداد
معلللروف لكلللن جملللع النصلللوص يعنللللي فقللللط إنتللللاج نللللص مكلللون مللللن النصللللين
المجموعين ،مثل :
'>>> 'hello' + 'world
''helloworld
لحللظ أن جمللع العبللارتين تللم بللدون الفصللل بينهمللا بللأي مسللافة ،للفصللل بيللن
الكلمتين علينا أن نضع المسافة في عملية الجمع ،في المر التالي مثل أضفنا
مسافة بعد كلمة : hello
'>>> 'hello ' + 'world
''hello world
بملا أننلا نسلتطيع أن نعاملل المتغيللر اللذي يحلوي نصلا مثلل أي متغيللر فبإمكاننلا
جمع المتغير nameمع النصوص :
'? >>> 'hello ' + name + ', how are you
'? 'hello Mohammad, how are you
٣6
لكللن انتبلله ! عمليللة الجمللع تحصللل بيللن النصللوص مللع بعضللها و مللع الرقللام مللع
بعضها لكن ل يمكن جمع أرقام و نصوص معا ،إذا قمت بجمع عدد و نص معللا
ستظهر لك رسائل أخطاء ،بإمكانك تجربة هذا :
>>> name + 1
Traceback (most recent call last):
>File "<stdin>", line 1, in <module
TypeError: Can't convert 'int' object to str implicitly
• متغيرا ت النصوص.
في الدرس القادم بإذن ا سنتعلم التفاعل مللع المسللتخدم ،سللنكتب برنامجللا
يطلب من المستخدم إدخال بيانا ت عن نفسه و نحفظها فللي البرناملج و نقللوم
بطاعتها و استخدامها.
٣٧
الدرس السابع
7الدخال
قمنللا فللي كللل الللدروس السللابقة بطباعللة قيللم كتبناهللا فللي البرنامللج ،كللثير
من البرامج تتفاعل مع المستخدم بمعنى أنهللا تطلللب منلله إدخللال قيللم معينللة ،
فللي برامللج التصللفح علللى سللبيل المثللال يكتللب المسللتخدم رابللط الموقللع الللذي
يريد زيارته ،سنتعلم فلي هلذا اللدرس كيلف نجعلل البرناملج يطللب عبلارة ملن
المسللتخدم و يقللوم المسللتخدم بكتبتهللا عللن طريللق لوحللة المفاتيللح ،مثل قللد
يطلب البرنامج من المستخدم أن يكتب اسمه.
7.1الخدخال
بإمكاننللا طلللب عبللارة مللن المسللتخدم عللن طريللق أمللر الدخللال )( ، input
على سبيل المثال :
)( >>> var = input
المر السابق يطلب من المستخدم كتابة عبارة بلوحة المفاتيح و يخزنها علللى
شللكل نللص فللي المتغيللر ، varإذا كتللب المسللتخدم اسللمه مثل فللإن قيمللة var
تصبح اسم المستخدم و بإمكاننا طباعة المتغير varللتأكد من ذلك :
)( >>> var = input
mohammad
) >>> print ( var
mohammad
بإمكاننا حين نسللتخدم أملر inputأن نكتلب جملللة نصللية بيللن القللواس لتظهللر
عند تنفيللذ المللر ،هلذا مفيلد حيلن نريللد ذكللر رسلالة معينللة قبلل طللب الدخلال
من المستخدم ،مثل قد نريد أن نظهر رسالة "ما هو اسمك " :و بعدها ننتظللر
من المستخدم أن يكتب اسمه ،للقيام بهذا نكتب المر التالي :
) ' >>> var = input ( 'what is your name :
what is your name : mohammad
في المثال السابق أظهرنا رسالة طلب السللم للمسللتخدم و افترضللنا أنلله أدخللل
" "mohammadفأصبحت الكلمة " "mohammadمخزنة في المتغير .var
٣٩
7.2إخدخال العداخد
المر inputيقوم بإدخال الجمل فقط ،نستطيع أن ندخل أرقامللا لكننللا ل
نستطيع أن نقوم بعمليا ت حسللابية بهللا كالضللرب و القسللمة ،نسللتطيع فقللط أن
نجمعها مع الجمل الخرى مثللل أي عبللارة نصللية ،إذا أردنللا إدخلال علدد نحتلاج
استخدام المللر )( intلدخللال أعللداد صللحيحة بللدون فواصللل عشللرية أو المللر
)( floatإذا أردنلللا إدخلللال علللدد بفاصللللة عشلللرية ،نكتلللب الملللر intأو floatو
نكتب داخل القواس المر inputفي المثال التللالي سللندخل عللددا صللحيحا و
نطبع نتيجة جمعه مع : ١
) )( >>> var = int ( input
33
) >>> print ( var + 1
34
إذا لم نستخدم المر intحاولنا طباعة نتيجة جمع المتغيللر ملع ١سلتظهر
لنا رسالة خطإ :
)( >>> var = input
33
) >>> print ( var + 1
Traceback (most recent call last):
>File "<stdin>", line 1, in <module
TypeError: Can't convert 'int' object to str implicitly
في الدرس القادم سنتعلم التعامل مع الملفا ت ،سنقرأ محتويا ت ملللف و نقللوم
بطباعتها و سنقوم أيضا بكتابة عبارا ت نصية داخل ملف.
٤٠
الدرس الثامن
8التعامل مع الملفات
معظللم البرامللج الللتي نتعامللل معهللا يوميللا تتعامللل مللع الملفللا ت ،فللي هللذا
اللللدرس سلللنتعلم كيفيلللة فتلللح ملفلللا ت فلللي لغلللة بلللايثون ،سلللنتعلم كيلللف نقلللرأ
محتويا ت الملف و كيف نكتب في الملف.
8.1فائدة الملفات
تعلمنا فلي اللدروس السللابقة كيفيللة إدخلال قيمللة ملن لوحلة المفاتيللح ملن
قبل المستخدم ،إذا انتهى البرنامج تختفي هذه القيمة و ل يمكن أن نعرفهللا ،
تخيلللل مثل أن المسلللتخدم أدخلللل اسلللمه فلللي البرناملللج ،إذا انتهلللى البرناملللج
تختفللي هللذه القيمللة و ل يمكللن اسللترجاعها ،أحيانللا نريللد أن نسللترجع بعللض
البيانا ت في وقت لحق حتى بعد انتهاء البرنامللج ،هنللا تللأتي فائللدة الملفللا ت ،
الملفللا ت تحفللظ البيانللا ت مللن البرنامللج و يمكللن بعللد ذلللك قراءتهللا حللتى بعللد
إغلق البرنامج أو إطفاء الحاسب.
8.2فتح ملف
لفتح ملف نستخدم المر )( ، openالصيغة العامة لمر openهي :
) 'open ( 'file-name
نكتب بين القوسين عدة أمور سنذكر في هذا الدرس اةثنين منها :
.١اسم الملف ،هذا القسم إجباري و يجب أن نكتب اسم الملف الذي نريللد
فتحه ،لو أردنا مثل فتح ملف اسمه " "example.txtنكتب ما يلي :
) '>>> open ( 'example.txt
بالتأكيد نريد أن نتعامل مع أي ملف نقلوم بفتحله ،ل يمكلن التعامللل ملع
الملللف الللذي نفتحلله إل إذا حفظنللاه فللي متغيللر لللذلك عللادة نقللوم عللادة
باستخدام أمر openفي تعريف متغير ،مثل :
) '>>> var = open ( 'example.txt
٤٢
.٢وضلللع فتلللح المللللف ،هنلللاك وضلللعان رئيسللليان عنلللد فتلللح المللللف :وضلللع
الكتابللة و وضللع القللراءة ،عنللد فتللح ملللف بوضللع الكتابللة فيمكننللا فقللط
الكتابللة فللي الملللف و ل يمكننللا القللراءة منلله ،أمللا إذا فتحنللا ملفللا بوضللع
القراءة يمكننا فقط القراءة من الملف و ل يمكننا الكتابة فيلله ،لتحديللد
الوضللع الللذي نريللده نضللع فاصلللة بعللد اسللم الملللف و نكتللب بعللدها حرفللا
يحدد الوضع :
◦ إذا أردنا تحديد وضع الكتابة نضع الحرف " ، "wمثل :
) '>>> var = open ( 'example.txt', 'w
◦ إذا أردنا تحديد وضع القراءة نضع الحرف " ، "rمثل :
) '>>> var = open ( 'example.txt', 'r
تذكر أن تكتب الوضع بين علمتي اقتباس فل يجوز أن نكتب الحللرف rأو w
بدون علما ت اقتباس.
إذا لم نحدد وضعا يتم فتح المللف بوضلع القلراءة للذلك ل فلرق أبلدا بيلن فتلح
المللللف بوضلللع القلللراءة و بيلللن فتحللله بلللدون تحديلللد الوضلللع ،الملللران التاليلللان
متماةثلن تماما :
) '>>> var = open ( 'example.txt', 'r
) '>>> var = open ( 'example.txt
8.3الكتابة في ملف
للكتابة في ملف علينا أول فتللح الملللف بوضللع الكتابللة كمللا تللم شللرحه فللي
القسم السابق ،افتح مفسر بايثون و اكتب المر التالي :
) '>>> wf = open ( 'example.txt', 'w
نكتب اسم المتغير بعده نقطة بعدها كلمة writeو بعدها قوسلان ،نكتلب بيللن
القوسلللين العبلللارة اللللتي نريلللد كتابتهلللا كعبلللارة نصلللية بيلللن علملللتي اقتبلللاس ،
٤٣
نستطيع استخدام أمر writeأكثر من مرة ،بإمكاننا مثل كتابة ما يلي :
) '>>> wf.write ( 'hello
) '>>> wf.write ( 'i am mohammad
تلحللظ مللن العبللارة الموجللودة فللي الملللف أن أمللر writeل يفصللل بيللن الجمللل
بمسلللافا ت و ل يكتلللب كلللل جمللللة فلللي سلللطر ،إذا أردنلللا أن نفصلللل بيلللن الجملللل
بمسافا ت أو نقط أو ما شاكل علينا أن نكتللب المسللافا ت و السللطر فللي الجملللة
اللتي نكتبهلا فلي المللف ،الواملر التاليلة هلي نفلس الوامللر السلابقة لكنهلا تزيلد
سطرا جديدا في كل جملة يتم كتابتها :
) '>>> wf.write ( 'hello\n
) '>>> wf.write ( 'i am mohammad\n
بعلللد إغلق المللللف ل يمكننلللا الكتابلللة فيللله و اسلللتخدام أملللر writeبعلللد الغلق
يسبب أخطاء في البرنامج.
8.4القراءة من ملف
للقراءة من ملف علينا أول فتح الملف بوضللع القللراءة كمللا تللم شللرحه فللي
القسم الول ،في القسم السابق كتبنا ملفلا اسللمه ، example.txtلنفتللح الملللف
و نقرأ محتوياته ،اكتب المر التالي في مفسر بايثون :
) '>>> rf = open ( 'example.txt
قمنللا بتعريللف المتغيللر rfو نسللتطيع الن اسللتخدامه للقللراءة مللن الملللف ،أمللر
٤٤
القللراءة مللن ملللف هللو )( ، readlineهللذا المللر يقللرأ سللطرا واحللدا مللن الملللف ،
صللليغة الملللر مثلللل صللليغة أملللر )( writeلكننلللا ل نكتلللب شللليئا بيلللن القلللواس ،
بإمكاننا استخدام المر readlineكما يلي :
)( >>> text = rf.readline
في المر السابق عرفنا متغيرا اسمه textو خزنا فيه سطرا واحدا من الملف ،
بإمكاننا بعد ذلك طباعة المتغير textلنعرف الجملة المكتوبة :
) >>> print ( text
helloi am mohammadhello
العبلللارا ت السلللابقة كلللانت عبلللارا ت كتبناهلللا دون أن نكتلللب سلللطرا جديلللدا ،إذا
استخدمنا المر readlineمرة أخرى سيعطينا اسطر الثاني من الملف :
)( >>> text = rf.readline
) >>> print ( text
i am mohammad
إذا كانت هناك أسطر أكثر فإن أمر readlineيقرأ لنا سطرا جديدا في كل مرة
نسللتخدمه ،إذا وصلللنا لنهايللة الملللف و اسللتخدمنا المللر readlineفللإن المللر
يعطينللا نصللا فارغللا ،فللي الوامللر السللابقة قمنللا بقللراءة كللل السللطر مللن الملللف
الذي فتحناه ،لنجرب استخدام أمر القراءة مرة أخرى :
)( >>> text = rf.readline
) >>> rf = print ( text
لحظ أن أمر الطباعة لم يطبع شيئا على الطلق لننا وصلنا لنهاية الملف.
بعد إغلق الملف ل يمكننا القراءة منه و اسللتخدام أمللر readlineبعللد الغلق
يسبب أخطاء في البرنامج.
٤5
8.5تعلمنا في هذا الدرس
• فتح الملف :نستخدم المر )( : open
فللي الللدرس القللادم سللنتعلم كيفيللة التحكللم فللي البرنامللج بشللكل أكللبر و كتابللة
أوامللر يتللم تنفيللذها فللي حللال ت معينللة فقللط بينمللا يتللم تجاهلهللا فللي حللال ت
أخرى.
٤6
الدرس التاسع
9الجمل الشرطية 1
فلللي هلللذا اللللدرس سلللنتعلم التحكلللم بشلللكل أكلللبر فلللي البرناملللج ،سلللنقوم
بتحديد أوامر يقلوم بهلا البرنامللج فللي حلال ت معينللة و ل يقلوم بهللا فللي حلال ت
أخرى ،مثل قد نريد من البرنامج أن يطلب درجة ،إذا كانت الدرجة أكبر مللن
٩٠نخبر الطالب أنه ممتاز ،إذا كانت الدرجة أقل من ذلك ل نطبع شيئا.
9.1القيم المنطقية
في البرمجة توجد عدة أنللواع للقيللم ،تعلمنللا فللي الللدروس السللابقة القيللم
العدديلة و هلي العلداد مثلل ١و ، ٢تعلمنلا أيضلا القيلم النصلية و هلي الجملل و
كنا نضعها بين علما ت اقتباس و من أمثلتها عبارة "."hello world
بالضلللافة للقيلللم العدديلللة و النصلللية هنلللاك نلللوع آخلللر ملللن القيلللم و هلللي القيلللم
المنطقيلللة ،القيلللم المنطقيلللة يمكلللن أن تكلللون واحلللدة ملللن اةثنلللتين :إملللا قيملللة
صللواب أو خطللأ ،هللذا النللوع مللن القيللم يصللف تعللبيرا مللا بللأنه صللحيح أو غيللر
صلللحيح ،مثل عبلللارة ١5أكلللبر ملللن ، ٩العبلللارة السلللابقة صلللحيحة إذا قيمتهلللا
المنطقيلللة صلللائبة ،تعلللبير آخلللر يمكلللن أن نسلللتخدمه هلللو أن ١5أصلللغر ملللن ، ٩
العبارة السابقة ليست صحيحة فالعدد ١5ليس أصغر من العدد ، ٩إذا فالقيمة
المنطقية للعبارة خاطئة.
9.2عمليات المقارنة
درسنا في الدرس الرابع العمليللا ت الحسللابية مثللل الجمللع و الطللرح ،هنللاك
عمليلللا ت أخلللرى فلللي لغلللة بلللايثون و هلللي عمليلللا ت المقارنلللة ،عمليلللا ت المقارنلللة
تستخدم لمقارنة العللداد و نتيجتهللا قيمللة منطقيللة أي إمللا أن تكللون صللائبة أو
خاطئة ،سنأخذ مثال على هذه العمليا ت :
>>> 15 > 9
True
المر السابق يقارن العدد ١5و ، ٩الرمز > يعني أكبر من ،بإمكاننا تخيل المللر
السللابق كعبللارة ١5أكللبر مللن ٩و هللي نفللس العبللارة الللتي شللرحناها فللي القسللم
٤8
السابق و نتيجة هذا المر صائبة ،نجللد أن مفسللر بللايثون طبللع نتيجللة العمليللة
و هي كلمة Trueو تعني صائب ،نستطيع استخدام عملية مقارنة أخرى مثللل
< و تعني أصغر من :
>>> 15 < 9
False
المللر السللابق يعنللي أن ١5أصللغر مللن ، ٩هللذه المقارنللة خاطئللة لللذلك يعطينللا
المفسر نتيجة Falseو تعني خاطئ.
• =! :علمللة تعجللب ةثللم يسللاوي تعنللي عللدم المسللاواة ،هللذه العمليللة هللي
عكلللس العمليلللة السلللابقة و تعطلللي نتيجلللة صلللائبة إذا كلللان العلللددان غيلللر
متسلللاويين بينملللا تعطلللي نتيجلللة خاطئلللة إذا كلللان العلللددان متسلللاويان ،
مثل :
>>> 15 != 9
• > :أكبر من ،تعطي نتيجة صائبة فقط إذا كان العدد الول ) الذي عللى
اليسار ( أكبر من الثاني ) الذي على اليمين (.
• < :أصغر من ،تعطي نتيجة صائبة فقط إذا كان العدد الول أصللغر مللن
الثاني.
• => :أكبر من أو يساوي ،تعطي نتيجة صائبة إذا كللان العللدد الول أكللبر
من الثاني أو يساويه.
٤٩
• =< :أصللغر مللن أو يسللاوي ،تعطللي نتيجللة صللائبة إذا كللان العللدد الول
أصغر من الثاني أو يساويه.
if 9.3عبارة
أمر ifيجعلنا نتحكم في تنفيذ بعض الوامر اعتمادا على قيمللة منطقيللة
،يتللم تنفيللذ الوامللر فقللط إذا كللانت القيمللة المنطقيللة صللائبة ،صلليغة عبللارة if
هي كما يلي :
if condition :
instruction
rest_of_program
نكتللب المللر ifبعللده شللرط و هللو قيمللة منطقيللة ةثللم نقطللتين رأسلليتين ،فللي
السطر الذي يليه نكتب مسافا ت قبلل كتابلة المللر ،بإمكاننلا كتابلة أي علدد ملن
المسللافا ت حللتى لللو كللانت مسللافة واحللدة علللى القللل ،المللر الللذي نكتللب قبللله
مسافا ت يتم تنفيللذه فقللط إذا كللان الشللرط صللائبا ،أمللا إذا كللان الشللرط خاطئللا
فل يتللم تنفيللذ أي المللر ،إذا كتبنللا أمللرا بللدون أن نضللع مسللافا ت قبللله يعتللبر
خارج عبارة ifو يتم تنفيذه سواء كللان الشللرط خاطئللا أو صللائبا ،لنأخللذ مثللال
درجة الطالب الذي ذكرناه فللي بدايللة الللدرس ،بإمكانللك كتابللة البرنامللج التللالي
في ملف ةثم تشغيله :
) ) ' ? mark = int ( input ( 'what is your mark
if mark > 90 :
) '^_^ print ( 'you are excellent
) 'print ( 'good bye
في المثال السابق يدخل المستخدم درجته ،بعدها يفحص البرنامج إذا كانت
الدرجلللللة أكلللللبر ملللللن أو تسلللللاوي ٩٠أو ل ،إذا كلللللذلك يطبلللللع البرناملللللج عبلللللارة
"^_^ ، "you are excellentفحص الدرجة هو السطر الثاني :
if mark >= 90 :
استخدمنا أمر ifبعللده الشللرط ،الشللرط هنللا هللو عمليللة مقارنللة ،المتغيللر mark
أكبر من أو تساوي العدد ، ٩٠إذا كانت قيمة عمليللة المقارنللة صللائبة يتلم تنفيللذ
5٠
المر التالي أما إذا كانت خاطئة ل يتم تنفيلذه ،لحلظ أننللا زدنلا مسلافا ت قبللل
كتابة المر الذي يلي سطر : if
if mark > 90 :
) '^_^ print ( 'you are excellent
لحللظ فللي المثللال السللابق أننللا زدنللا أمللرا داخللل عبللارة ، ifبإمكاننللا أن نضللع أي
عدد من الوامر داخل عبللارة ifسللواء كللان ةثلث أوامللر أو أربللع أو أكللثر ،المهللم
أن نكتلللب نفلللس علللدد المسلللافا ت قبلللل كلللل أملللر ،ل يجلللوز مثل أن نكتلللب أربلللع
مسافا ت قبل المر الول و ةثلث مسافا ت قبل المر الثاني.
5١
9.5تعلمنا في هذا الدرس
• القيم المنطقية :إما صائبة و إما خاطئة.
• عمليا ت المقارنة.
• عبارة : if
if condition :
instruction
rest_of_program
في الدرس القادم سنتعلم إضافا ت إلى عبارة ifتمكننا من التحكم بشكل أكللبر
في البرنامج.
5٢
الدرس العاشر
10الجمل الشرطية 2
تعلمنا في الللدرس السلابق كيلف نتحكلم فللي تنفيللذ بعلض الوامللر اعتملادا
على شرط معين ،ماذا لو كان معنا أكثر من شرط واحللد و أردنلا القيلام بللأوامر
مختلفللة اعتمللادا علللى الشللرط الللذي تحقللق ،مثل قللد نريللد أن نطبللع عبللارة إذا
كانت درجة المستخدم أكلبر ملن ٩٠لكننلا نريلد أن نطبلع عبللارة أخللرى إذا كلانت
الدرجللة أقللل مللن ، 6٠فللي هللذا الللدرس سللنتعلم كيللف ننفللذ أوامللر اعتمللادا علللى
عدة شروط و ليس شرطا واحدا ،سنتعلم أيضا كيف نستخدم علدة شلروط و
ننفذ أمرا معينا اعتمادا على الشرط الذي يتحقق منها.
10.1الوامر المنطقية
تعلمنلللا القيلللم المنطقيلللة و أنهلللا إملللا تكلللون صلللائبة أو خاطئلللة ،اسلللتخدمنا
عمليللا ت المقارنللة لتحديللد بعللض الشللروط و تعلمنللا كيللف أن عمليللا ت المقارنللة
تعطللي نتيجللة منطقيلة ،أحيانللا يكلون للدينا علدة شلروط و نريللد أن نتأكللد أنهلا
جميعا صائبة ،أحيانا أخرى يكون لدينا عدة شروط و نريد أن نفصللح إذا كللان
واحد منها على القل صائبا.
هناك عدة أوامر منطقية في لغة بايثون تفيدنا في التحكم بالشروط :
• : orهلللذا الملللر يأخلللذ شلللرطين ،إذا كلللان أحلللد الشلللرطين صلللائبا تكلللون
نتيجة المر صائبة ،لو أردنا مثل أن نفحص ما إذا كان متغيلر ملا ،مثل
، xيساوي ٣أو ٧نكتب :
if x == 3 or x == 7 :
) 'print ( 'x equals 3 or 7
المللر السللابق يفحللص إذا كللان xيسللاوي ٣أو ٧و ينفللذ أمللر الطباعللة إذا
كان أي من الشرطين صائبا.
5٤
• : andهلللذا الملللر يأخلللذ شلللرطين و يعطلللي نتيجلللة صلللائبة إذا كلللان كل
الشللرطين صللائبان ،لللو أردنللا مثل أن نفحللص أن متغيللرا ،مثل ، xأكللبر
من ٠لكنه في نفس الوقت ل يساوي ٣نكتب التي :
if x > 0 and x != 3 :
) 'print ( 'x is more than 0 and is not 3
يتم تنفيذ أمر الطباعة السلابق فقلط إذا كلان المتغيلر xأكلبر ملن ٠و فلي
نفس الوقت ل يساوي .٣
يتم تنفيذ أمر الباعة فقط إذا لم يكن المتغير xأكبر من .٠
elif 10.2عبارة
أحيانا يكون للدينا شلرطان ،نريلد أن ننفلذ أواملر إذا تحقلق الشلرط الول
لكننا نريد أن ننفللذ أوامللر أخللرى إذا تحقللق الشللرط الثللاني ،فللي مقدمللة الللدرس
ذكرنا مثال ،لنفترض أننا نريد أن نخبر المستخدم أنه ممتاز إذا كللانت الدرجللة
أكللبر أو تسللاوي ٩٠لكننللا نريللد أن نخللبره أنلله كسللول إذا كللانت الدرجللة أقللل مللن
، 6٠أمللر elifيمكننللا مللن القيللام بهللذا ،هللذا المللر مشللابه لمللر ifإلللى حللد كللبير
فلديه شرط و لديه أوامر يتم تنفيذها إذا كان الشرط صائبا ،لنأخذ مثال على
هذا المر ،بإمكانك كتابة البرنامج التالي في ملف و تشغيله :
) ) ' ? mark = int ( input ( 'what is your mark
if mark >= 90 :
) '^_^ print ( 'you are excellent
elif mark < 60 :
) 'print ( 'you are very bad x_x
55
البرنامج السابق يطلب درجة من المسللتخدم ،فللي عبللارة ifفللي السللطر الثللاني
يفحللص البرنامللج إذا كللانت الدرجللة أكللبر أو تسللاوي ، ٩٠إذا كللان ذلللك صللحيحا
يطبع البرنامج عبارة "^_^ "you are excellentو ل يقوم بتنفيذ عبللارة ، elif
أما إذا كان الشرط خاطئللا ينتقللل البرنامللج إلللى عبللارة elifو يفحلص شللرطها و
هو أن الدرجة أقل من ، 6٠إذا كان الشرط صلائبا يقلوم البرناملج بتنفيلذ أمرهلا
و هللو طباعللة عبللارة " ، "you are very bad x_xأمللا إذا كللان الشللرط خاطئلا ل
يقوم البرنامج بطباعة أي شيء.
لحظ أن أمر elifيبدأ في بداية السللطر مثللل المللر ، ifأيضللا نكتللب قبللل أوامللر
elifمسافا ت تماما مثل أوامر ، ifالفرق بين المرين أن أمر elifل يتللم فحللص
شرطه و ل تنفيذ أوامره إل إذا كان الشرط في أمر ifخاطئا.
بإمكاننللا كتابللة عللدة أوامللر elifو يتللم فحللص شللروطها بللالترتيب ،يتللم تنفيللذ
أواملللر أول عبلللارة يكلللون شلللرطها صلللائبا و تجاهلللل كلللل العبلللارا ت التاليلللة ،هلللذا
البرنامج مثال على ذلك :
( mark = int ( input ) ) ' ? 'what is your mark
if mark >= 90 :
print ( 'you are ) '^_^ excellent
elif mark >= 80 :
print ( 'you are ) 'good
elif mark < 60 :
print ( 'you are ) 'very bad x_x
يتم أول فحلص شللرط ، ifل يتللم فحلص شلرط elifالوللى إل إذا كلان شللرط if
خاطئا و ل يتللم فحللص شللرط عبللارة elifالثانيللة إل إذا كللانت كللل الشللروط فللي
عبارة ifو elifالتي فوقها خاطئة.
else 10.3عبارة
إذا كان لدينا عبارة ifو أردنا تنفيللذ أمللر إذا كللان شللرطها خاطئللا نسللتخدم
أمر ، elseأمر elseمثل أمر elifلكنه ل يأخذ شللرطا بللل يتللم تنفيللذ أوامللره إذا
كانت شروط العبارا ت السابقة خاطئة.
56
لنفللترض مثل أننللا نريللد أن نفحللص إذا كللانت الدرجللة أكللبر مللن أو تسللاوي ٩٠و
نخللبر المسللتخدم أنلله ممتللاز ،نخللبره أنلله سلليء إذا كللانت الدرجللة أقللل مللن ، 6٠
لدينا أيضا عبارة نطبعهلا فلي كلل الحلال ت الخلرى أي إذا للم تكلن الدرجلة أكلبر
أو تساوي ٩٠و لم تكن أيضا أقللل مللن ، 6٠نسللتطيع القيللام بهللذا باسللتخدام أمللر
elseكما يلي :
( mark = int ( input ) ) ' ? 'what is your mark
if mark >= 90 :
print ( 'you are ) '^_^ excellent
elif mark < 60 :
print ( 'you are ) 'very bad x_x
else :
print ( 'you are ) 'ok
تلحظ أن عبارة elseمماةثلللة لعبلارة elifو ifباسلتثناء أن المللر هللو elseو أن
الشرط غير موجود ،بإمكاننا استخدام أمر elseحتى لو لم نسللتخدم أمللر elif
أي أن نكتب ifبعدها ، elseمثل :
) ) ' ? mark = int ( input ( 'what is your mark
if mark >= 90 :
) '^_^ print ( 'you are excellent
else :
) 'print ( 'you are not excellent
5٧
10.4تعلمنا في هذا الدرس
• الوامر المنطقية :
◦ or
◦ and
◦ not
• عبارة : elif
if condition :
instruction
elif condition :
instruction
• عبارة : else
if condition :
instruction
else :
instruction
في الدرس القادم سنتعلم كيفية التحكم في تكرار الوامر و تنفيذها أكثر مللن
مرة.
58
الدرس الحادي عشر
11الحلقات 1
تعلمنللا فللي الدرسللين السللابقين كيفيللة التحكللم فللي تنفيللذ الوامللر اعتمللادا
على شروط معينة ،في هذا الدرس سنتعلم كيفيللة اسللتخدام الشللروط لتكللرار
عللدد مللن الوامللر أكللثر مللن مللرة ،مثل قللد نكتللب برنامجللا يطلللب كلمللة سللر مللن
المستخدم ،إذا أدخل المسللتخدم كلملة سللر خاطئلة يعيللد البرناملج طللب كلمللة
السلر ،ل يتوقلف البرناملج عللن طللب كلملة السلر حلتى يلدخل المسلتخدم كلملة
سر صحيحة ،هذا مثال على تكرار الوامر.
while 11.1أمر
أمللر ifيقللوم بتنفيللذ أوامللر اعتمللادا علللى شللرط ،أمللر whileيقللوم أيضللا
بتنفيللذ أوامللر اعتمللادا علللى شللرط لكللن بللدل تنفيللذ الوامللر مللرة واحللدة يقللوم
بتكرارهللا حللتى تصللبح قيمللة الشللرط خاطئللة ،تسللمى جملللة whileحلقللة لن
أوامرها تتكلرر علدة ملرا ت بخلف جمللة ifاللتي ُتنفلذ ملرة واحلدة فقلط ،قبلل
أن نأخذ مثال على whileلنتعلم صيغته و هي :
while condition :
instruction
rest_of_program
صلليغة أمللر whileمماةثلللة تمامللا لصلليغة أمللر ifباسللتثناء كتابتنللا لكلمللة while
بدل ، ifيمكننا أيضا كتابة أكثر من أمر للحلقة تماما مثل جملة .if
لنطبق مثال كلمة السر الذي ذكرناه في مقدمللة الللدرس ،لنفللترض أن البرنامللج
يريد كلمة سر من المستخدم ،كلمة السر الصحيحة هي " ، "secretإذا أدخللل
المسللتخدم كلمللة أخللرى يعيللد البرنامللج السللؤال عللن كلمللة السللر حللتى يللدخل
المسللتخدم كلمللة السللر الصللحيحة ،فللي هللذا البرنامللج تكللرار حيللث أنلله يكللرر
السؤال عن كلمة السر ،نستطيع استخدام أمر whileفي مثل هذه الحالة :
'' = password
while password != 'secret' :
) ' ? password = input ( 'what is the password
) 'print ( 'you entered the correct password
6٠
البرناملللللج السلللللابق يتأكلللللد ملللللن الشلللللرط أول و هلللللو أن passwordل يسلللللاوي
" ، "secretالمتغيللللر passwordفللللي بدايللللة البرنامللللج هللللو نللللص فللللارغ لللللذلك
فالشرط صائب ،ينفللذ البرنامللج أوامللر whileو فيهللا أمللر واحللد :طللب إدخلال
كلملللة السلللر و يتلللم حفظهلللا فلللي المتغيلللر ، passwordبعلللدها تنتهلللي الحلقلللة و
يفحلللص البرناملللج الشلللرط ملللرة أخلللرى ،إذا أدخلللل المسلللتخدم كلملللة ""secret
يصلللبح الشلللرط خاطئلللا و تنتهلللي الحلقلللة و ينفلللذ البرناملللج الملللر التلللالي و هلللو
طباعللة العبللارة " ، "you entered the correct passwordإذا لللم تكللن كلمللة
السلللر " "sercretيعيلللد البرناملللج طللللب كلملللة السلللر و ل يتوقلللف حلللتى يلللدخل
المستخدم كلمة السر الصحيحة.
سللنذكر مثللال علللى اسللتخدام المللر breakفقلط فللي هللذا الللدرس ،لنفللترض أن
البرنامج يسمح للمستخدم بأن يتوقف عن إدخلال كلمللة السلر إذا أدخلل عبللارة
" ، "cancelنستطيع أن نقطع الحلقللة إذا أدخللل المسللتخدم العبللارة "، "cancel
بإمكاننلللللا القيلللللام بهلللللذا بكتابلللللة جمللللللة ifداخلللللل الحلقلللللة و يكلللللون شلللللرطها أن
passwordيساوي" ، "cancelننفذ أمر breakالذي يقطع الحلقلة داخلل جمللة
6١
، ifالمثال التالي تطبيق لما سبق :
'' = password
while password != 'secret' :
if password == 'cancel' :
break
) ' ? password = input ( 'what is the password
إذا أدخلللل المسلللتخدم كلملللة " "cancelيتلللم تنفيلللذ أملللر breakو بهلللذا تتوقلللف
الحلقة و يكمل البرنامج بعدها.
• أمر .break
• أمر continue
فللي الللدرس القللادم سللنتعلم القللوائم فللي لغللة بللايثون ،القللوائم تنفعنللا إذا كللان
لدينا عدد كبير من المتغيرا ت.
6٢
الدرس الثاني عشر
12القوائم
كثيرا ما نحتاج حفظ عدد كبير من القيللم يكللون بينهللا أمللر مشللترك ،مثل
قد نريد حفظ أعمار عدد كبير من الشخاص ،تخيل أن لدينا ١٠٠شخص نريد
حفظ أعمارهم في متغيرا ت ،من الصعب تعريف ١٠٠متغير و استخدام قيمهللا
،القللوائم تحللل هللذه المشللكلة ،قبللل بللدايتنا للللدرس ننللوه أن كللثيرا مللن لغللا ت
البرمجة تستخدم تعبير "المصللفوفا ت" للشللارة إلللى القللوائم لكللن المصللفوفا ت
فللي لغللة بللايثون لهللا ميللزا ت أكللثر مللن المصللفوفا ت فللي تلللك اللغللا ت و إن كللان
المبدأ مشابها ،إذا صادفت مصطلح "المصفوفا ت" فتذكر القوائم في بايثون.
12.1القوائم
القائمة في لغة بايثون عبلارة علن مجموعلة قيلم ،يمكننلا حفلظ مجموعلة
القيم هذه في متغير واحد و يمكننا استخراج أي قيمة نريد من هذا المتغيللر ،
نكتب كل القيم في القائمة بين قوسللين مربعيللن ) ][ ( ،نفصللل بيللن كللل قيمللة
و أخللرى بفاصلللة ) ، ( ,فللي المثللال التللالي نعللرف متغيللرا و نحفللظ فيلله قائمللة
بأعداد صحيحة :
] >>> var = [ 10, 2, -31
المتغيللر varأصللبح قائمللة فيهللا ةثلةثللة أعللداد و هللي ١٠و ٢و ، ٣١بإمكاننللا وضللع
أعداد أكثر لو أردنا ذلك ،بإمكاننا أيضا حفظ عبارا ت نصية في القائمة :
] '>>> text = [ 'hello', 'football', 'nice cat
بهللذه الطريقللة نسللتطيع حفللظ العديللد مللن القيللم فللي متغيللر واحللد و تغييرهللا
باستخدام ذلك المتغير.
6٤
12.2التوصل لعناصر القائمة
ذكرنللا أن وظيفللة القللوائم هللي حفللظ عللدة قيللم فللي متغيللر واحللد و تعلمنللا
في القسم السابق من الدرس كيللف ننشللئ قائمللة و نخللزن فيهللا قيمللا ،فللي هللذا
القسم سنتعلم كيف نغير قيم العناصر فللي القائمللة و نسللتخدمها فللي العمليللا ت
الحسابية.
نكتللب اسللم المتغيللر و بعللده قوسللان مربعللان ) ][ ( لتحديللد العنصللر الللذي نريللد
التوصللل إليلله ،نكتللب رقللم العنصللر الللذي نريللده بيللن القوسللين ،المللر التللالي
يعطي مثال لتغيير قيمة عنصر في قائمة اسمها : var
] >>> var = [ 4, 10, 12
>>> var [ 0 ] = 33
المللر السللابق يغيللر قيمللة أول عنصللر فللي القائمللة varإلللى ، ٣٣قيمللة العنصللر
الول قبل التغيير كانت ، ٤لحظ أن رقلم العنصللر الول هلو ٠و ليلس ، ١يبلدأ
تعداد عناصر أي قائملة بلالرقم ، ٠بإمكاننللا أيضلا اسللتخدام عناصلر القائملة فللي
العمليا ت الحسابية ،المثال التالي يطبلع ناتلج ضللرب العنصلر الثلاني فلي العلدد
:٣
>>> var [ 1 ] * 3
30
بإمكاننللا تحديللد العنصللر باسللتخدام متغيللر عللددي بللدل كتابللة العللدد مباشللرة ،
مثل :
>>> x = 1
>>> var [ x ] * 3
30
في المثال السابق حددنا العنصر xمن القائمة ،يتم تحديد العنصر الذي رقملله
يساوي قيمة المتغير ، xلن قيمللة المتغيللر xهللي ١تللم تحديللد العنصللر رقللم ، ١
تذكر أن رقم العنصر الول هو ٠و رقم العنصر الثاني هو .١
65
بعده نقطة بعدها كلمة appendةثم قوسين ،نكتب بين القوسين القيمة التي
نريد إضافتها للقائمة ،المثال التالي يضيف العدد ٩إلى القائمة : var
) >>> var.append ( 9
بإمكاننا التوصل للحرف الول من النص كما نتوصل للعنصر الول من القائمللة
،المثال التالي يطبع الحرف الول :
) ) ] >>> print ( var [ 0
h
بإمكاننللا طباعللة جللزء مللن النللص باسللتخدام عمليللة الجمللع بيللن الحللرف الللتي
نريدها ،المثال التالي يوضح هذا بطباعة أول ةثلةثة أحرف من النص :
) ] >>> print ( var [ 0 ] + var [ 1 ] + var [ 2
جمعنا في المثال السللابق الحللرف الول و الثللاني و الثللالث مللن النللص فنتللج لنللا
نص يحوي الحرف الثلةثة الولى منه و قمنا بطباعتها.
66
12.4تعلمنا في هذا الدرس
• القوائم.
في الدرس القادم سلنتعلم طريقلة نسلتفيد بهلا ملن أملر whileفلي التعامللل ملع
القوائم.
6٧
الدرس الثالث عشر
13الحلقات 2
في الدرس السابق تعلمنا القوائم و كيفية تعديل عناصللرها ،أحيانللا نريللد
تغييللر قيللم كللل عناصللر القائمللة ،تخيللل أن لللدينا قائمللة فيهللا ١٠٠عنصللر و نريللد
تغيير قيمهلا كلهلا ،ملن الصلعب تغييلر قيلم العناصلر واحلدا واحلدا و كتابلة أملر
لكل عنصر ،إذا قمنا بذلك فعلينا كتابة ١٠٠أمللر لتغييللر قيللم العناصللر ،الحلقللا ت
تفيدنا في مثل هذه الحالة لتعديل قيللم عناصللر كللثيرة فللي القائمللة دون كتابللة
أمر لكل عنصر ،في هذا الدرس سنتعلم القيام بذلك.
فللي المثللال السللابق لللدينا قائمللة اسللمها varو فيهللا ةثلث عناصللر ،لللدينا أيضللا
متغير اسمه xقيمته ، ٠المتغير xيمثل عاّدادا يزيد كل مرة يتللم تنفيلذ الحلقلة
فيهللا ،نسللتطيع اسللتخدام هللذا العللداد لنمللر علللى كللل عنصللر مللن القائمللة ،ينفللذ
البرنامج حلقة whileو شرطها أن xأصغر من ، ٣الشرط صائب فللي أول مللرة
يتللم تنفيللذ الحلقللة فيهللا ،أوامللر الحلقللة هللي تغييللر قيمللة العنصللر xمللن القائمللة
إلى ، 5٠٠لن xيحمل القيمة ٠يتم تغيير العنصر رقم ٠من القائمة ،بعدها يتم
زيادة المتغير xبقيمة ، ١تصبح قيمة المتغير ١ xو يبقللى شللرط الحلقللة صللائبا
و يتم تنفيذها مرة أخرى لكللن هللذه المللرة يتللم تغييللر العنصللر ١مللن القائمللة لن
6٩
قيمة xأصبحت ، ١يزيد المتغير xو يصللبح ٢و يتللم تغييللر العنصللر رقللم ٢مللن
القائمة ،بعد أن يحمل المتغير xقيمة ٣يصبح شرط الحلقة خاطئللا و تتوقللف
الحلقة ،هكذا نكون قد غيرنا قيم كل عناصر القائمة إلى .5٠٠
بإمكاننللا القيللام بللأمور أكللثر تعقيللدا ،مثل نسللتطيع أن نجعللل قيمللة كللل عنصللر
ضعف قيمته الولى ،نقوم بذلك بأن نضرب كل عنصر في ، ٢البرنامللج التللالي
يظهر هذا المر :
[ = var ] 10, 2, -31
x = 0
while x < 3 :
var [ x ] = var [ x ] * 2
= x x + 1
في المثال السابق بدل أن نغير قيمة العناصر إلى 5٠٠غيرناهللا إلللى نفللس قيمللة
العنصر القديمة مضروبة في ٢و بهذا نضاعف كل العناصر.
٧٠
باسللتخدام العمليللة = فللي المثللال التللالي نعللرف قائمللة فيهللا ةثلث عناصللر ةثللم
نحللذف العنصللر الثللاني منهللا و نحفظلله فللي المتغيللر ، xبعللد ذلللك نقللوم بطباعللة
المتغير xو القائمة لمعرفة القيم المخزنة في كل منهما :
في الدرس القادم سللنتعلم نوعللا جديللدا مللن الحلقللا ت يسللهل علينللا التعامللل مللع
القوائم.
٧١
الدرس الرابع عشر
14الّدلوال
فلللي اللللدروس السلللابقة تعلمنلللا كتابلللة الواملللر ،فلللي هلللذا اللللدرس سلللنتعلم
كيفية تقسيم برامجنا بشكل مرتب و إنشاء أوامر أكثر ،سنتعلم كتابة الاّدوال
التي تساعدنا في هذا المر.
14.1الّدوال
الاّدالللة فللي لغللة البرمجللة مجموعللة أوامللر يتللم تنفيللذها معللا ،اسللتخدمنا
الكلللثير ملللن اللللدوال فلللي اللللدروس الماضلللية ،قبلللل إعطلللاء مثلللال عللللى اللللدوال
سنتعلم الصيغة العامة للدالة و هي :
def name () :
instructions
نكتب كلمة defبعدها اسم الاّدالة التي نريد كتابتهللا ،بإمكاننللا اختيللار أي اسللم
كما نختار أسماء المتغيرا ت تماما ،بعد اسم الدالة نكتب قوسللين ةثللم نقطللتين
رأسيتين ،في السطر التالي نكتب أوامر الدالة ،يجب أن نكتب مسافا ت قبل
أواملللر الداللللة تماملللا مثلملللا نفعلللل ملللع جملللل ifو ، whileإذا كتبنلللا سلللطرا فارغلللا
بدون مسافا ت فهذا يعني أن تعريف الدالة انتهى ،بإمكاننا كتابة أكثر من أمللر
فللي الدالللة و هللو مللا نقللوم بلله عللادة ،المثللال التللالي هللو مثللال علللى دالللة اسللمها
funcتقوم بطباعة ةثلةثة جمل :
>>> def func () :
... ) 'print ( 'hello
... ) 'print ( 'my name is Mohammad
... ) '? print ( 'how are you
...
بعللللد تعريفنللللا للدالللللة نسللللتطيع تنفيللللذ أوامرهللللا ،يسللللمى تنفيللللذ أوامللللر الدالللللة
استدعاء الدالة ،نستدعي الدالة بأن نكتب اسم الدالة بعده قوسان ،نسلتطيع
مثل استدعاء دالة funcالتي عرفناها في المثال السابق كما يلي :
)( >>> func
hello
my name is Mohammad
? how are you
بكتابتنللا للمللر السللابق نكللون اسللتدعينا الدالللة السللابقة funcو ينفللذ البرنامللج
٧٣
أوامر الدالة ،أوامر الدالة هي ةثلث أوامر طباعة بثلث عبارا ت لللذلك تجللد أن
البرنامج قام بطباعة العبارا ت الثلث في الدالة.
فللي تعريللف و اسللتدعاء الدالللة كتبنللا قوسللين بعللد اسللم الدالللة ،لللم نكتللب بيللن
القللواس شلليئا ،كللل الللدوال تكتللب بهللذه الطريقللة و كللل الوامللر الللتي بعللدها
قوسللان تكللون دوااّل ،اسللتخدمنا دوال كللثيرة فللي الللدروس السللابقة مثللل دالللة
printو ، inputتلحللظ أننللا دائمللا نكتللب قوسللين فللارغين بعللد المللر و أحيانللا
نكتب شيئا داخل القوسين ،سنتعلم هذا في القسم التالي من هذا الدرس.
العبللارة " "helloكللانت القيمللة الللتي أعطيناهللا للدالللة و الدالللة تقللوم بطباعتهللا ،
كللثيرا مللا نحتللاج كتابللة دالللة تأخللذ قيمللا ،لتعريللف دالللة تأخللذ قيمللا نكتللب فللي
تعريلللف الداللللة بيلللن القوسلللين أسلللماء متغيلللرا ت ،بإمكاننلللا اسلللتخدام أي اسلللم
متغير نريد ،مثل قد نريد كتابة دالة ترحب بالشخاص كما يلي :
>>> def greet ( name ) :
... ) print ( 'hello', name
...
٧٤
لحظ كيف طبعت الدالة السللم اللذي أعطينللاه إياهلا ،بإمكاننلا تجربللة أي اسلم
آخر :
) '>>> greet ( 'Ahmad
hello Ahmad
) '>>> greet ( 'Arwa
hello Arwa
بإمكاننللا أن نعللرف دالللة تأخللذ أكللثر مللن قيمللة ،للقيللام بللذلك علينللا فللي تعريللف
الدالة أن نكتب أسماء متغيرا ت بيللن القوسللين و نفصللل بيللن كللل متغيللر و آخللر
بفاصلللة ، ,بإمكاننللا اختيللار أي أسللماء نريللدها لكللن يجللب أن تكللون مختلفللة ،
مثل قللللد نريللللد كتابللللة داللللة تطبلللع ناتلللج ضللللرب علللددين ،نكتللللب الدالللللة بهللللذه
الطريقة :
>>> def multiply ( a, b ) :
... ) print ( a * b
...
الداللللة السلللابقة تأخلللذ علللددين و تسلللميهما aو ، bتقلللوم الداللللة بطباعلللة ناتلللج
ضربهما ،يجب إعطاء قيمتين للدالة حين استدعائها ،مثل :
) >>> multiply ( 3, 7
21
) >>> multiply ( 22, 35
770
بإمكاننا كتابة دالة تأخذ أعداد أكثر من القيم ،علينا فقللط أن نعطللي كللل قيمللة
اسما و نفصل بين كل اسم و آخر بفاصلة في تعريف الدالة.
لحللظ أننللا اسللتخدمنا الدالللة inputفللي إعطللاء قيمللة لمتغيلللر ،هللذا لن دالللة
inputترجللع لنللا العبللارة الللتي يللدخلها المسللتخدم ،هللذا مثللال علللى دالللة ترجللع
قيملة ،أمللر returnيقلوم بإرجلاع قيملة ،قبللل شللرح صلليغة هلذا الملر سللنعطي
٧5
مثال على دالة تستخدمه :
>>> def double ( a ) :
... return 2 * a
...
الدالللة السللابقة تأخللذ قيمللة واحللدة و ترجللع ضللعف القيمللة ،بإمكاننللا اسللتخدام
الدالة لنخزن قيمة في متغير كما يلي :
) >>> n = double ( 5
الملللر السلللابق يخلللزن قيملللة ١٠فلللي المتغيلللر ، nهلللذا لننلللا اسلللتدعينا الداللللة و
أعطيناهللا العللدد ، 5تقللوم الدالللة بإرجللاع ناتللج ضللرب العللدد 5مللع ، ٢مللن هللذا
المثللال تلحللظ أن صلليغة المللر returnهللي أن نكتللب الكلمللة returnو بعللدها
القيمة التي نريد إرجاعها :
return value
القيملللة يمكلللن أن تكلللون قيملللة مباشلللرة كلللأن نكتلللب العلللدد ٢و يمكلللن أن تكلللون
متغيرا أو عملية رياضية ،يمكن أيضا أن تكون القيمة جملة نصية.
فللي معظللم الللدروس السللابقة كتبنللا أوامللر تقللوم بمهللام بسلليطة ،فللي الللدرس
القلللادم سلللنتعلم كيفيلللة القيلللام بلللأوامر أكلللثر تعقيلللدا و سلللنكتب برنامجلللا يقلللوم
بضغط الملفا ت بصيغة .zip
٧6
الدرس الخامس عشر
15الوحدات
في الدروس السللابقة تعلمنللا عللددا مللن الوامللر الساسللية فللي لغللة بللايثون
لكننللا لللم نكتللب برنامجللا للله وظيفللة محللددة ،فللي هللذا الللدرس سللنتعلم القيللام
ببعللض المهللام المعقللدة و سللنكتب برنامجللا يقللوم بضللغط الملفللا ت بصلليغة ، zip
البرنامج الذي سنكتبه في هذا الدرس يقوم فقط بإضافة ملفا ت إلى ملف zip
و ل يسللللتطيع اسللللتخراجها و ل حللللذفها ،البرنامللللج ل يسللللتطيع أيضللللا إضللللافة
المجلدا ت.
هذا الدرس يأتي مع ملفين :الول هو write_zip.pyو تجده في هذا الرابط ،
المللللف الثلللاني هلللو lesson15.bmpو تجلللده فلللي هلللذا الرابلللط ،قلللم بتحميلللل
الملفيللن قبللل البللدء فللي الللدرس ،تأكللد أن جميللع الملفللا ت موجللودة فللي نفللس
المجلد الذي فيه ملف تشغيل بايثون الذي تستخدمه لتشغيل المفسر.
15.1الورحدات
في الدروس السابقة تعلمنا عدة أوامر تقوم بالطباعللة و كتابللة الملفللا ت و
التحكللم بالحلقللا ت و غيرهللا ،كللل تلللك الوامللر كللانت أوامللر موجللودة فللي لغللة
بللايثون ،هللذه الواملللر مللع أنهللا مفيلللدة لكنهللا ل تعطينللا قللدرا ت كافيللة لكتابلللة
براملللج معقلللدة ،هنلللا تلللأتي فائلللدة الوحلللدا ت ،الوحلللدا ت هلللي مجموعلللة دوا اّ
ل
جاهزة تعطينا قدرة للقيام بأمر معين ،الدوال مكتوبة مسللبقا بمعنللى أن هنللاك
من برمجها و كل ما علينا فعله هو استخدامها في برنامجنا ،فللي هللذا الللدرس
سنستخدم وحدة تساعدنا على ضغط الملفا ت بصيغة .zip
15.2استيراخد الورحدات
قبل استخدام أوامر أي وحللدة علينللا اسللتيرادها ،اسللتيراد الوحلدا ت يتلم
بلللالمر ، importإذا أردنلللا اسلللتيراد وحلللدة اسلللمها moduleفلللإن صللليغة أملللر
استيرادها هي :
>>> import module
٧8
نكتللللب المللللر importبعللللده اسللللم الوحللللدة الللللتي نريللللد اسللللتيرادها ،الملللللف
write_zip.pyالللذي قمللت بتحميللله هللو وحللدة ،لسللتيراده نكتللب أمللر import
ةثم اسم الملف لكننا ل نكتب مقطع .pyالذي ينتهي به الملف :
>>> import write_zip
نكتب أول اسم الوحدة بعده نقطة بعللدها اسللم الدالللة ،وحللدة write_zipالللتي
استوردناها توفر لنا دااّلة واحدة فقللط و هللي )( ، compressهللذه الدااّلللة تقللوم
بضغط الملفا ت بصيغة ، zipصيغة الاّدالة هي :
) '>>> write_zip.compress ( 'filename.ext
مثل الصيغة العامة نكتب أول اسم الوحدة و هو write_zipبعده نقطة بعللدها
اسم الدالة compressةثم قوسين ،هذه الدالة تأخللذ قيمللة واحلدة و هلي اسللم
الملف الذي نريد ضغطه لللذلك نكتللب السللم بيللن القوسللين ،جلرب ضلغط مللف
الصورة lesson15.bmpالذي أتى مع الدرس بكتابة المر التالي :
) '>>> write_zip.compress ( 'lesson15.bmp
تلللللذكر دائملللللا أن تضلللللع اسلللللم المللللللف كلللللامل ملللللع امتلللللداده فمثل فلللللي المللللللف
lesson15.bmpكتبنا المقطع .bmpالذي ينتهي به الملف.
إذا نفللذ ت أمللر ضللغط الملللف فسلليظهر ملللف جديللد اسللمه lesson15.zipبحجللم
أصغر من حجم ملف الصورة الصلي ،إذا قمت بفك ضغطه ستجد الصورة.
في المثال السابق قمنا بضغط ملف محدد ،نسللتطيع أن نسلأل المسلتخدم علن
الملللف الللذي يريللد أن يقللوم بضللغطه ،فللي الللدرس السللابع درسللنا المللر ، input
٧٩
بإمكاننللا اسللتخدامه لكتابللة برنامللج يسللأل المسللتخدم عللن الملللف الللذي يريللد
ضغطه :
) ' name = input ( 'file name :
) >>> write_zip.compress ( name
تعلمنا في هذا القسم استخدام وحدة write_zipالتي أتللت مللع الللدرس ،هنللاك
الكثير من الوحدا ت الموجودة في لغة بللايثون و الللتي تسللاعدنا للقيللام بللالكثير
من المهام ،وحللدة write_zipنفسللها تسللتخدم وحللدا ت أخللرى للقيللام بالمهمللة ،
لن تتطرق هذه السلسلللة للوحلدا ت اللتي توفرهللا بلايثون لكلن معظلم الوحلدا ت
لها شروح خاصة بها و بإمكان الدارس البحث عنها و قراءتها.
• استيراد الوحدا ت
import module
• استخدام دوا اّ
ل الوحدة.
هللذا الللدرس كللان آخللر درس فللي هللذه السلسلللة ،بعللد هللذا الللدرس سلليتم طللرح
مشللللروع يعطللللي تجربللللة أكللللثر واقعيللللة مللللن المثلللللة الللللتي تللللم طرحهللللا خلل
السلسلة ،سيطبق الدارس في المشروع عددا من المفاهيم الللتي تعلمهللا خلل
هذه السلسلة.
8٠
16مشرلوع السلسلة
بعد نهاية الدروس في هلذه السلسللة نقلدم مشلروعا برمجلة بلغلة بلايثون
يقللوم بلله الللدارس ،سلليعطي هللذا المشللروع تجربللة أكللثر واقعيللة مللن المثلللة
الموجللللللللودة ضللللللللمن السلسلللللللللة ،المشللللللللروع يتطلللللللللب ملفيللللللللن :الول هللللللللو
، dlserver.pycبإمكانللللك تحميللللله مللللن هللللذا الرابللللط ،الثللللاني هللللو dlc.pycو
بإمكانك تحميله من هذا الرابط.
فللي هللذا الشللرح سللنذكر ةثلةثللة نقللاط ،بدايللة فكللرة المشللروع ،بعللدها سللنذكر
أقسللللام المشللللروع ،أخيللللرا سللللنتحدث عللللن المطلللللوب مللللن الللللدارس فللللي هللللذا
المشروع.
16.1فكرة المشروع
فكللرة المشلروع هلي مللدير تحميللل يقلوم بتحميللل الملفلا ت ملن النللترنت ،
يستكمل أيضا تحميل الملفا ت إذا كنا بدأنا تحميلهللا و توقفنللا فللي وقللت سللابق
ةثم أردنا إكمال التحميل.
16.2أقسام المشروع
المشروع مقسم إلى ةثلةثة أقسام :
8٢
البرنامج بأي شيء حين نشغله و ل يبدأ تحميل أي ملف ،بعد التشغيل
ينتظر مدير التحميل أوامر من برنامج آخر يرسل له الروابط و الملفا ت
اللي يحملها ،البرنامج الثاني هو القسم الثاني من المشروع.
◦ : get
◦ : info
8٣
◦ : del
إذا أرسلللنا أمللر الحللذف فللإن مللدير التحميللل يرسللل لبرنامللج التحكللم
رسالة يذكر فيها إذا تم حذف التحميل بنجاح أم أن هناك خطأ.
◦ : disconnect
إذا أغلقنللا برنامللج التحكللم يمكللن تشللغيله مللرة أخللرى لرسللال أوامللر
أخرى.
◦ : exit
8٤
هذا المر هي كتابة كلمة exitفقط :
exit
الدالللة الثانيللة هللي دالللة الرسللال ، sendهللذه الدالللة ترسللل أمللرا لمللدير
التحميللل و مللدير التحميللل ينفللذ المللر ،الدالللة تأخللذ العبللارة الللتي نريللد
إرسللللللالها لمللللللدير التحميللللللل ،نسللللللتطيع مثل إرسللللللال المللللللر infoبهللللللذا
الستدعاء :
) 'dlc.send ( 'info
الدالة الثالثة دالة الستقبال ،نستخدم هذه الدالللة لسللتقبال رسللالة مللن
مدير التحميل ،كما شرحنا سابقا فإن لدينا خمسة أوامر في المشروع ،
في أمرين من هذه الوامر الخمسة يأتينلا رد ملن ملدير التحميللل ،الملر
infoيرسل إلينا ردا يحوي معلومللا ت عللن التحميل ت الجاريللة ،أمللر del
85
يرسل إلينا ردا يخبرنا إن كان حذف الرابط تم بنجاح أو ل ،هذه الدالللة
ل تأخللذ أي قيمللة ،نسللتطيع حفللظ الرسللالة فللي متغيللر الللتي نتلقاهللا مللن
ملللدير التحميلللل فلللي متغيلللر ،نسلللتطيع تخزيلللن اللللرد فلللي متغيلللر اسلللمه
messageبهذا الشكل :
)( message = dlc.recv
الدالة الرابعلة فلي الوحلدة هلي داللة الفصلل ،هلذه الداللة تفصلل برناملج
الوامللر عللن مللدير التحميللل و ل يمكللن التواصللل مللع مللدير التحميللل بعللد
اسللتدعاء هللذه الدالللة ،نسللتدعي هللذه الدالللة قبللل الخللروج مللن برنامللج
الوامر ،ل تأخذ هذه الدالة أي قيمة و يمكن استدعاءها بهذا الشكل :
)( dlc.disconnect
86
16.3مهمة المشارك في المشروع
مهملللة المشلللارك هلللي برمجلللة القسلللم الثلللاني ملللن المشلللروع و هلللو برناملللج
التحكللم ،سللنعطيكم برنامللج مللدير التحميللل جللاهزا و قللابل للتشللغيل لكنلله كمللا
شرحنا ل يعمل إل بأوامر تلأتي ملن برناملج التحكلم ،أيضلا وحلدة dlcسلتكون
جاهزة ليستخدمها المشارك خلل كتابته لبرنامللج التحكللم فللي إرسللال الوامللر
و استقبال الرسللائل ،بإمكللان المسللتخدم تحميللل أي ملللف إذا كللان الللبروتوكول
المسللتخدم هللو httpأو httpsلكللن لتسللهيل المللر علللى الللدارس تللم رفللع ةثلث
ملفا ت صور بإمكللان الللدارس تحميلهللا للتأكللد مللن عمللل المشللروع تجللدونها فللي
الروابط التالية :
الصورة الولى
الصورة الثانية
الصورة الثالثة
8٧
16.4ملخص المشروع
• مدير تحميل.
◦ مدير التحميل.
◦ برنامج الوامر.
◦ get
◦ info
◦ del
◦ disconnect
◦ exit
• مهمة المشارك هي كتابة برنامج الومر.
88
16.5رحل المشروع
في هذا الجزء سليتم علرض حلل المشلروع فلي أقسلام ،كلل قسلم يحلوي
جزء من الحل.
أول شللليء نحتلللاجه هلللو إرسلللال الواملللر ،علينلللا أول أخلللذ الواملللر ملللن
المسلللتخدم بعلللدها نرسلللل الواملللر باسلللتخدام الداللللة sendملللن الوحلللدة
، dlcتللللذكر أننللللا ل نسللللتطيع اسللللتخدام أي دالللللة مللللن الوحللللدة إل بعللللد
استيرادها بالمر ، importأيضا ل نستطيع إرسال و استقبال أي شلليء
ملللع ملللدير التحميلللل إل بعلللد التصلللال بللله باسلللتخدام الداللللة ، connect
استيراد الوحدة و التصال بها يجب أن يكونا أول شيئين في برنامجنا
،نستطيع ترتيب خطوا ت برنامجنا كما يلي :
8٩
.٢استقبال الرسائل و قطع التصال :
لللدينا خمسللة أوامللر فللي البرنامللج ،أمللر getيتللم إرسللاله فقللط و يتكفللل
مدير التحميل بالتنفيذ دون أي عملية أخرى من برنامللج الوامللر ،علينللا
في بقية الوامر تنفيذ عمليا ت أخرى فللي برنامللج الوامللر ،المللران del
و infoيجعلن ملللدير التحميلللل يرسلللل رسلللالة لبرناملللج التحكلللم ،علينلللا
اسلللللتقبال الرسلللللالة و طباعتهلللللا إذا صلللللادفنا أحلللللدهما ،الملللللران exitو
disconnectيقومان بالخروج من برنامج التحكم ،علينللا أن نخللرج مللن
برنامللج التحكللم إذا صللادفنا أحللدهما ،لحللظ فللي حالللة اسلللتخدام أمللر
الحلذف أن المسلتخدم يكتلب الملر delو يكتلب بعلده رقلم التحميللل أو
اسم الملف أو رابللط الملللف لكننللا نريللد فقللط التأكللد أن أول ةثلةثللة أحللرف
هي المر ، delنستطيع ترتيب الكلم السابق في الخطوا ت التالية :
▪ استقبل رسالة.
▪ اطبع الرسالة.
▪ اقطع التصال.
نقللوم بللالوامر السللابقة بعللد أخللذ المللر مللن المسللتخدم ،لحللظ أننللا فللي
المر delل نفحص كللل المللر بللل فقللط نفحللص أنلله يبللدأ بللالحرف ، del
نسللللتطيع القيللللام بللللذلك بللللأن نعامللللل العبللللارة الللللتي يللللدخلها المسللللتخدم
كمصفوفة و نجمع أول ةثلةثة أحرف فيها ،بهذا الشللكل نكللون قللد أخللذنا
أول ةثلةثللة أحللرف فقللط مللن العبللارة و نفحللص إذا كللانت delو نحللدد مللا
إذا احتجنا استقبال رسالة أم ل.
٩٠
الول كما يلي :
import dlc
)( dlc.connect
)( message = input
) dlc.send ( message
لحظ أننا عرفنا متغيرا و حفظنا فيه أول ةثلةثة أحرف من العبارة الللتي
أدخلها المستخدم لنفحص إذا كان المر delأم ل.
بقيت مشكلة أن البرنامج يرسل أمرا واحدا و يتوقلف حلتى للو للم يكلن
الملللر exitو ل ، disconnectعلينلللا أن نجعلللل البرناملللج يسلللتمر بطللللب
المر من المستخدم حتى يكتب المستخدم المر exitأو .disconnect
٩١
تسلتمر لكلن الشللرط الللذي ذكرنلاه هلو شللرط التوقلف ،نسللتطيع أن نقللول
أننللا نريللد أن تسللتمر الحلقللة إذا لللم يكللن المللر disconnectو ل ، exit
نستطيع كتابة شرط استمرار الحلقة في لغة بايثون بهذا الشكل :
'message != 'disconnect' and message != 'exit
'' = message
while message != 'disconnect' and message!='exit' :
)( message = input
) dlc.send ( message
هكللذا يسللتمر البرنامللج فللي طلللب الوامللر مللن المسللتخدم طللوال الللوقت حللتى
يكتللب المسللتخدم أحللد أمللري الخللروج disconnectأو ، exitالحللل السللابق هللو
طريقللة تعطللي النتيجللة المطلوبللة و قللد يختلللف الحللل مللن مبرمللج لخللر لكللن
الفكرة مقاربة على الغلب بين مختلف الحلول.
٩٢
خاتمة الكتاب
هذا الكتاب حلاول اللتركيز علللى الفكلار الساسللية للبرمجلة بشلكل علام و
لم تتطرق الدروس لميزا ت تخص لغة بللايثون بالتحديللد ولللم تشللرح الوحللدا ت
المتلللوفرة فلللي هلللذه اللغلللة ،عللللى الغللللب يتسلللاءل اللللدارس فلللي نهايلللة هلللذه
الللدروس :مللاذا بعللد ؟ مللا هللي الخطللوة التاليللة ؟ كيللف أطللور مللن نفسللي فللي
مجال البرمجة ؟
بعلللد تعلملللك لساسللليا ت البرمجلللة فلللالخطوة التاليلللة هلللي إتقلللان إحلللدى لغلللا ت
البرمجللة ،أكمللل تعلمللك للغللة بللايثون و تعلللم ميزاتهللا ،هللذه السلسلللة لللم تللذكر
الكثير من أوامر بايثون و الميزا ت المتوفرة فيها ،لللن تحتللاج لللدروس مفصلللة
بعد هلذا فهللذه الللدروس غطللت المللور الساسللية و كللل مللا تحتللاجه هللو دروس
مختصلللرة تلللذكر الميلللزا ت و كيفيلللة اسلللتخدامها بشلللكل سلللريع يلللوفر وقتلللك ،
تستطيع أن تختار لغة أخرى غير بايثون و إن كانت بلايثون أفضلل حيلث أنلك
بدأ ت تعلمها لكن في كل الحوال تذكر أن تركز على لغة برمجة واحدة فقلط ،
ل تشتت تفكيرك في عدة لغا ت تجعلك تفكر في الختلف بينها بدل أن تركلز
فلللي الفكلللار و كيفيلللة بنلللاء البرناملللج و إنجلللاز المهلللام فلغلللا ت البرمجلللة عللللى
اختلفها تحوي شبها كبير و كلها تؤدي نفس الوظيفة.
بعللد إتقانللك لحللدى لغللا ت البرمجللة ابللدأ تعلللم الوحللدا ت المتللوفرة فيهللا ،خلل
الدروس عرضنا كيفية استخدام الوحدا ت ،فكر في مهمة معينة و ابحث عللن
الوحدة التي تقللوم بهللذه المهمللة ،تعلللم تلللك الوحللدة و اسللتخدمها للقيللام بهللذه
المهمللة ،فللي مشللروع السلسلللة مثل كللان مللدير التحميللل يحاّمللل الملفللا ت مللن
النترنت و قلد تلم اسللتخدام وحلدة urllibللقيلام بلذلك ،بإمكانلك تعللم كيفيلة
تحميل الملفا ت باستخدامها.
بعلللد تعللللم علللدد ملللن الوحلللدا ت بإمكانلللك النتقلللال للغلللا ت البرمجلللة المختلفلللة و
تعلمها ،تعلمك للغة برمجة يعتمد على ما تريد القيام بلله فبعللض اللغللا ت تكللون
مصممة للقيام بمهمة معينة و تكون أسهل من اللغا ت الخللرى فللي تلللك المهمللة
بالتحديد.
في أمان ا
أخوكم محمد الغافلي