You are on page 1of 105

‫مقدمة فففي‬

‫البرمجة عن‬

‫طريفففق لغفففة‬
‫مقدمة في البرمجة عن طريق لغة بايثون‬

‫ألفه ‪ :‬محمد الغافلي‬

‫‪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‬تنصيب بايثون‬
‫تحتاج برامج بايثون إلى برنامج خاص يقوم بتشغيلها ‪ ،‬ل يمكن تشغيل‬
‫برامللج بللايثون إل بوجللود هللذا البرنامللج ‪ ،‬هللذا الللدرس يغطللي كيفيللة تنصلليب‬
‫برنامج بايثون في كل من أنظمة أوبونتو و مللاك و وينللدوز ‪ ،‬بإمكانللك النتقللال‬
‫للقسم الذي يشرح طريقة التنصيب على نظامك ‪ ،‬يأتي هذا الدرس مع ملفلا ت‬
‫تسللاعدك فللي تنصلليب و تشللغيل بللايثون لكللل نظللام ‪ ،‬بإمكانللك تحميللل الملفللا ت‬
‫الخاصة بنظام أوبونتو و ماك و ويندوز‪.‬‬

‫‪ 1.1‬تنصيب بايثون في أنظمة أوبونتو‬


‫بإمكانك تنصيب الصدار الثالث من بايثون من مستودعا ت البرامللج فللي‬
‫النظلللام باسلللتخدام ‪ Ubuntu Software Center‬أو ‪ ، Synaptic‬تجلللد الصلللدار‬
‫الثالث من بايثون باسم ‪.python3‬‬

‫بإمكانلللك أيضلللا تحميلللل مللللف تنصللليب بلللايثون ملللن هلللذا الرابلللط و اتبلللاع‬
‫الخطوا ت التالية ‪:‬‬

‫‪ .١‬تأكد من اتصالك بالنترنت‪.‬‬

‫‪ .٢‬فللللك ضللللغط الملللللف الللللذي قمللللت بتحميللللله و سللللتجد فيلللله ملفللللا اسللللمه‬
‫‪ ، python-install.sh‬قم بتشغيله في الصورة رقم ‪.١‬‬

‫الصورة ‪ :١‬انقر مرتين على الملف ‪python-install.sh‬‬

‫‪٢‬‬
‫‪ .٣‬ستظهر لك خيارا ت تشغيل الملف ‪ ،‬اختر الخيار ‪ Run in Terminal‬كما‬
‫في الصورة رقم ‪.٢‬‬

‫الصورة ‪:٢‬اختر ‪Run in Terminal‬‬

‫‪ .٤‬سيتم طلب كلمة السر لمشرف الجهاز حتى يتللم تنصلليب البرنامللج ‪ ،‬قللم‬
‫بإدخللال كلمللة السللر ةثللم اضللغط مفتللاح الدخللال ‪ Enter‬كمللا فللي الصللورة‬
‫رقم ‪.٣‬‬

‫إذا كتبللت كلمللة السللر فللإن البرنامللج يقرأهللا لكنلله ل يظهللر الحللرف بللل‬
‫يبقيها مخفية‪.‬‬

‫الصورة ‪ :٣‬اكتب كلمة السر ةثم اضغط مفتاح ‪Enter‬‬

‫‪٣‬‬
‫‪ .5‬سيسألك البرنامج إذا كنت تستخدم بروكسي لتصالك أو ل‪.‬‬

‫إذا للللم تكلللن تسلللتخدم بروكسلللي اكتلللب الحلللرف ‪ n‬ةثلللم اضلللغط مفتلللاح‬
‫الدخال ‪ Enter‬كما في الصور ‪.٤‬‬

‫الصورة ‪ :٤‬اكتبا الحرف ‪ n‬إذا لم تكن تستخدم بروكسي‬

‫إذا كنت تستخدم بروكسي اكتب الحرف ‪ y‬ةثلم اضللغط مفتللاح الدخللال‬
‫‪ ، Enter‬سيسألك البرناملج علن عنلوان البروكسللي ةثلم منفلذ البروكسلي ‪،‬‬
‫قم بإدخالها كما في الصورة ‪.5‬‬

‫الصورة ‪ :5‬اكتب عنوان البروكسي و المنفذ‬

‫‪٤‬‬
‫‪ .6‬انتظللر حللتى يتللم تنصلليب بللايثون و تظهللر لللك رسللالة إنهللاء التنصلليب‬
‫بعدها اضغط مفتاح الدخال ‪ Enter‬كما في الصورة ‪.6‬‬

‫إذا ظهر ت لك رسالة خطلأ كملا فلي الصلورة ‪ ٧‬فللم يتلم تنصليب بلايثون‬
‫بسبب مشكلة على الغلب تكون متعلقة باتصالك بالنترنت‪.‬‬

‫الصورة ‪ :6‬رسالة إنهاء التنصيب‬

‫الصورة ‪ :٧‬رسالة خطأ في التنصيب‬

‫‪5‬‬
‫‪ 1.2‬تنصيب بايثون في أنظمة ماك‬
‫بإمكانك تحميل ملف تنصليب بلايثون ملن هلذا الرابلط و اتبلاع الخطلوا ت‬
‫التالية ‪:‬‬

‫‪ .١‬فك ضغط الملف الذي قمت بتحميله و ستجد ملفين للتنصيب ‪:‬‬

‫◦ ‪ : python-3.2.3-macosx10.3.dmg‬للتنصلليب فللي أنظمللة مللاك ‪١٠.٣‬‬


‫إلى ‪١٠.6‬‬

‫◦ ‪ : python-3.2.3-macosx10.6.dmg‬للتنصلليب فللي أنظمللة مللاك ‪١٠.6‬‬


‫و ‪.١٠.٧‬‬

‫‪ .٢‬شغل ملف التنصيب المناسب لنظامك بحسب ما تم شرحه فللي النقطللة‬


‫السابقة‪.‬‬

‫‪ .٣‬سللتظهر لللك نافللذة فيهللا عللدة ملفللا ت ‪ ،‬شللغل الملللف ‪ Python.mpkg‬كمللا‬


‫في الصورة رقم ‪.8‬‬

‫الصورة ‪ :8‬شغل الملف ‪Python.mpkg‬‬

‫‪6‬‬
‫‪ .٤‬اضللغط علللى زر ‪ Continue‬فللي جميللع النوافللذ التاليللة الللتي سللتظهر كمللا‬
‫فللي الصللورة رقللم ‪ ، ٩‬ستصللل بعللد عللدة نوافللذ إلللى نافللذة الموافقللة علللى‬
‫الرخصة‪.‬‬

‫الصورة ‪ :٩‬اضغط على ‪Contimue‬‬

‫‪ .5‬اضللللغط علللللى زر ‪ Agree‬فللللي نافللللذة الموافقللللة علللللى الرخصللللة كمللللا فللللي‬


‫الصورة رقم ‪.١٠‬‬

‫الصورة ‪ :١٠‬اضغط على ‪Agree‬‬

‫‪ .6‬اضغط على زر ‪ Install‬في النافذة التالية كما في الصورة ‪.١١‬‬

‫‪٧‬‬
‫الصورة ‪ :١١‬اضغط على ‪Install‬‬

‫‪ .٧‬سيطلب البرنامللج منللك كلمللة السللر لمشللرف الجهللاز ‪ ،‬اكتللب كلمللة السللر و‬
‫اضغط على زر ‪ Install Software‬كما في الصورة رقم ‪.١٢‬‬

‫الصورة ‪ :١٢‬اكتب كلمة السر و اضغط‬


‫‪Install Software‬‬

‫‪8‬‬
‫‪ .8‬اضغط على زر ‪ Close‬بعد انتهاء التنصيب كما في الصورة ‪.١٣‬‬

‫الصورة ‪ :١٣‬اضغط ‪Close‬‬

‫‪٩‬‬
‫‪ 1.3‬تنصيب بايثون في أنظمة ويندوز‬
‫بإمكانك تحميل ملف تنصليب بلايثون ملن هلذا الرابلط و اتبلاع الخطلوا ت‬
‫التالية ‪:‬‬

‫‪ .١‬فك ضغط الملف الذي قمت بتحميله و ستجد ةثلث ملفا ت ‪:‬‬

‫◦ ‪ : python-3.2.3.amd64.msi‬اسللتخدم هللذا الملللف إذا كللان نظامللك‬


‫وينلدوز ‪ 6٤‬بلت ‪ ،‬كلثير ملن أنظملة وينلدوز ‪ ٧‬أنظملة ‪ 6٤‬و تحتلاج هلذا‬
‫الملف‪.‬‬

‫◦ ‪ : python-3.2.3.msi‬اسللتخدم هللذا الملللف إذا كللان نظامللك وينللدوز‬


‫‪ ، ٣٢‬معظم أنظمة ويندوز إكس بي و فيستا أنظمة ‪ ٣٢‬و تحتاج هذا‬
‫الملف‪.‬‬

‫‪ .٢‬شغل ملف التنصيب المناسب لنظامك بحسب ما تم شرحه فللي النقطللة‬


‫السابقة‪.‬‬

‫‪ .٣‬اضغط زر التالي أو ‪ Next‬في النافذة الولى كما في الصورة ‪.١٤‬‬

‫الصورة ‪ :١٤‬اضغط ‪Next‬‬

‫‪١٠‬‬
‫‪ .٤‬في النافذة الثانية تأكللد ملن اختيللار "\‪ "C:\Python32‬فلي مربلع الكتابلة‬
‫ةثم اضغط زر التالي أو ‪ Next‬كما في الصورة ‪.١5‬‬

‫الصورة ‪ :١5‬تأكد من اختيار \‪C:\Python32‬‬

‫‪ .5‬اضغط زر التالي أو ‪ Next‬في النافذة التالية كما في الصورة ‪.١6‬‬

‫الصورة ‪ :١6‬اضغط ‪Next‬‬

‫‪١١‬‬
‫‪ .6‬انتظللر حللتى ينتهللي تنصلليب بللايثون ةثللم اضللغط زر إنهللاء أو ‪ Finish‬كمللا‬
‫في الصورة ‪.١٧‬‬

‫الصورة ‪ :١٧‬اضغط ‪Finish‬‬

‫‪ 1.4‬تعلمنا في هذا الدرس‬


‫• تنصيب بايثون‪.‬‬

‫هللذا الللدرس كللان تمهيللدا لبدايللة تعلمنللا للبرمجللة ‪ ،‬فللي الللدرس القللادم سللنقوم‬
‫بتنصيب برنامج يساعدنا في كتابة برامج بايثون‪.‬‬

‫‪١٢‬‬
‫الدرس الثاني‬
‫‪2‬تنصيب برنامج جي إدت‬
‫نقلللوم بكتابلللة براملللج بلللايثون باسلللتخدام محلللرر نصلللوص مثللللل برناملللج‬
‫المفكللرة ‪ ،‬برنامللج المفكللرة ‪-‬علللى أنلله يسللتطيع كتابللة البرامللج‪ -‬يفتقللر لميللزا ت‬
‫تسلللهل علينلللا كتابلللة البراملللج كلللثيرا ‪ ،‬بعلللض محلللررا ت النصلللوص تجعلللل كتابلللة‬
‫البرامج أسهل من غيرها ‪ ،‬بعضها يساعد في كتابة لغلة محلددة بينملا يسلاعدنا‬
‫البعللض الخللر فللي كتابللة أكللثر مللن لغللة ‪ ،‬يمكنللك اسللتخدام أي محللرر نصللوص‬
‫تحلللب لكننلللا فلللي هلللذا اللللدرس نقلللترح عليلللك اسلللتخدام برناملللج ‪ gedit‬اللللذي‬
‫يساعدنا في كتابة برامج بمختلف اللغا ت و منها لغة بايثون يأتي هذا الللدرس‬
‫مع ملفين ‪:‬‬

‫‪ : gedit-3.2.6.dmg‬ملف تنصيب ‪ gedit‬لنظمة ماك ‪ ،‬بإمكانك تحميللله‬ ‫•‬


‫من هذا الرابط‪.‬‬

‫‪ : gedit-setup-2.30.1-1.exe‬مللللللف تنصللللليب ‪ gedit‬لنظملللللة وينلللللدوز ‪،‬‬ ‫•‬


‫بإمكانك تحميله من هذا الرابط‪.‬‬

‫‪ 2.1‬تنصيب المحرر في أنظمة أوبونتو‬


‫برناملللج ‪ gedit‬يلللأتي منصلللبا بشلللكل افتراضلللي فلللي أنظملللة أوبونتلللو و ل‬
‫تحتللاج إلللى تنصلليبه ‪ ،‬بإمكانللك البحللث عنلله بعبللارة ‪ gedit‬أو ‪ ، Text Editor‬إذا‬
‫كنلت تسلتخدم إصلدار أوبونتلو قلديما فهلي قلوائم للبراملج سلتجده فلي قائملة‬
‫‪ Accessories‬باسم ‪.Text Editor‬‬

‫‪ 2.2‬تنصيب المحرر في أنظمة ماك‬


‫حمل ملف تنصيب ماك و شللغله ‪ ،‬سللتظهر لللك نافللذة فيهللا أيقونتللان ‪ ،‬انقللر‬
‫على اليقونة اليسرى ذا ت الللون الحملر و اسلحبها بالفلأرة إللى أيقونلة المجللد‬
‫الللتي علللى يميللن النافللذة كمللا فللي الصللورة رقللم ‪ ، ١‬انتظللر حللتى تنتهللي عمليللة‬
‫التنصيب‪.‬‬

‫‪١٤‬‬
‫الصورة ‪ :١8‬اسحب اليقونة اليسرى إلى أيقونة المجلد اليمنى‬

‫‪ 2.3‬تنصيب المحرر في أنظمة ويندوز‬


‫حمل ملف تنصيب ويندوز و شغله ةثم اتبع الخطوا ت التالية ‪:‬‬

‫‪ .١‬اضغط "التالي" أو "‪ "Next‬في النافذة الولى‪.‬‬

‫‪ .٢‬حللللدد الخيللللار "‪ "I accept the agreement‬ةثللللم اضللللغط "التللللالي" أو‬
‫"‪ "Next‬كما في الصورة رقم ‪.٢‬‬

‫الصورة ‪ :١٩‬حدد ‪ I accept the agreement‬ةثم اضغط‬


‫‪next‬‬

‫‪١5‬‬
‫‪ .٣‬اسللتمر بالضللغط علللى "التللالي" أو "‪ "Next‬فللي كللل النوافللذ التاليللة حللتى‬
‫تصل النافذة الخيرة ةثم اضغط الخيار "إنهاء" أو "‪."Finish‬‬

‫‪ 2.4‬استخدام المحرر‬
‫برنامللج ‪ gedit‬مثللل أي محللرر نصللوص آخللر يسللتطيع كتابللة ملللف نصللي و‬
‫حفظ الملف لكننا في هذا القسم نريد التنبيه على بعض النقاط الللتي تسللاعدنا‬
‫في الدروس القادمة و هي ‪:‬‬

‫‪ .١‬قم بحفظ الملف أول قبل أن تبدأ بكتابة أي شيء‪.‬‬

‫‪ .٢‬حيللن تحفللظ الملللف تأكللد اجعللل اسللم الملللف الللذي تريللد حفظلله ينتهللي‬
‫بامتداد ‪ .py‬كما في الصورة رقم ‪.٣‬‬

‫الصورة ‪ :٢٠‬احفظ الملف باسم ينتهي بالمتداد ‪.py‬‬

‫الخطوا ت السابقة تجعل البرنامللج يلللون الكلمللا ت الللتي لهللا معللان فللي لغللة‬
‫بللايثون ممللا يسللهل علينللا قللراءة البرامللج ‪ ،‬سللتلحظ هللذا حيللن نقللوم بكتابللة‬
‫برامج بايثون‪.‬‬

‫‪١6‬‬
‫‪ 2.5‬تعلمنا في هذا الدرس‬
‫• تنصيب برنامج ‪.gedit‬‬

‫• ملحظا ت عن استخدام المحرر لكتابة برامج بايثون‪.‬‬

‫في الدرس القادم سنتعلم تشغيل مفسر بللايثون و كتابللة الوامللر عليلله و أيضللا‬
‫تشلللغيل البراملللج المكتوبلللة بلغلللة بلللايثون‪.‬كيفيلللة تشلللغيل ملفللا ت تحلللوي أواملللر‬
‫بايثون‪.‬‬

‫‪١٧‬‬
‫الدرس الثالث‬
‫‪3‬تشغيل بايثون‬
‫بعللد تنصلليب بللايثون ننتقللل فللي هللذا الللدرس إلللى تشللغيل بللايثون ‪ ،‬هللذا‬
‫الدرس يوضح فكرة بللايثون و طريقللة اسللتخدامها و البرمجللة بهللا ‪ ،‬نشللرح فللي‬
‫هللذا الللدرس نقطللتين رئيسلليتين ‪ :‬تشللغيل أوامللر بللايثون عللن طريللق المفسللر و‬
‫تشغيل أوامر بايثون من ملف ‪ ،‬يأتي هذا الدرس مع عدة ملفا ت ‪:‬‬

‫‪ : python-test.py‬برنامللج مكتللوب بلغللة بللايثون سللنقوم بتشللغيله فللي‬ ‫•‬


‫هذا الدرس ‪ ،‬بإمكانك تحميله من هذا الرابط‪.‬‬

‫‪ : run-python-ubuntu.tar‬قللم بتحميللل هللذا الملللف إذا كنللت تسللتخدم‬ ‫•‬


‫نظام أوبونتو من هذا الرابط ‪ ،‬قم بفك المللف بعلد تحميلله و سلتجد أنله‬
‫يحوي ملفا اسمه ‪ ، run-python.desktop‬احتفظ بلله لننللا سنسللتخدمه‬
‫باستمرار ابتداء من هذا الدرس‪.‬‬

‫‪ : run-python-mac.tar‬قللللم بتحميللللل هللللذا الملللللف إذا كنللللت تسللللتخدم‬ ‫•‬


‫نظللام مللاك مللن هللذا الرابللط ‪ ،‬قللم بفللك الملللف بعللد تحميللله و سللتجد أنلله‬
‫يحلللللللوي ملفلللللللا اسلللللللمه ‪ ، run-python.command‬احتفلللللللظ بللللللله لننلللللللا‬
‫سنستخدمه باستمرار ابتداء من هذا الدرس‪.‬‬

‫‪ : run-python.bat‬قلللم بتحميلللل هلللذا المللللف إذا كنلللت تسلللتخدم نظلللام‬ ‫•‬


‫ويندوز ملن هلذا الرابلط ‪ ،‬احتفلظ بله لننلا سنسلتخدمه باسلتمرار ابتلداء‬
‫من هذا الدرس‪.‬‬

‫‪ 3.1‬تشغيل مفسر بايثون‬


‫‪ .١‬قللم بتشللغيل ملللف ‪ run-python‬الللذي قمللت بتحميللله لنظامللك و سلليتم‬
‫فتح طرفية لكتابة الوامر‪.‬‬

‫‪١٩‬‬
‫‪ .٢‬إذا كنت تستخدم نظام أوبونتللو أو مللاك اكتللب المللر ‪ python3‬و سلليتم‬
‫تشللغيل المفسللر ‪ ،‬إذا اشللتغل المفسللر سللتجد فللي بدايللة السللطر الخيللر‬
‫ةثلث علما ت أكبر من >>> كما في الصورة رقم ‪.١‬‬

‫الصورة ‪ :٢١‬تشغيل المفسر في أنظمة أوبونتو و ماك‬

‫‪ .٣‬إذا كنللت تسللتخدم نظللام وينللدوز اكتللب المللر ‪ python‬و سلليتم تشللغيل‬
‫المفسر ‪ ،‬إذا اشتغل المفسر ستجد في السطر الخير ةثلث علما ت أكبر‬
‫من >>> كما في الصورة رقم ‪.٢‬‬

‫الصورة ‪ :٢٢‬تشغيل المفسر في نظام ويندوز‬

‫‪٢٠‬‬
‫‪ 3.2‬تشغيل أوامر بايثون عن طريق المفسر‬
‫المفسر يتيلح لنلا كتابلة أوامللر لبلايثون و برناملج بلايثون يقلوم بتنفيلذها ‪،‬‬
‫شغل المفسر و اكتب أي شيء ةثم اضللغط زر الدخللال ‪ Enter‬كمللا فللي الصللورة‬
‫رقم ‪.٣‬‬

‫الصورة ‪ :٢٣‬كتابة أمر للمفسر‬

‫بعللد كتابتنللا للمللر السللابق تللم تنفيللذ المللر ‪ ،‬ظهللر ت لنللا رسللالة خطللإ لن‬
‫العبللارة الللتي كتبناهللا خاطئللة و ل معنللى لهللا فللي لغللة بللايثون ‪ ،‬خلل الللدروس‬
‫سنتعلم عددا من الوامر في لغة بايثون تمكننا من القيام بالعديد من المهام‪.‬‬

‫‪ 3.3‬تشغيل أوامر بايثون من ملف‬


‫فللي القسللم السللابق قمنللا بتشللغيل المفسللر و كتابللة أمللر ‪ ،‬كللثيرا مللا نحتللاج‬
‫تنفيللذ العديللد مللن الوامللر و يصللعب علينللا كتابتهللا واحللدا واحللدا فللي المفسللر ‪،‬‬
‫يقوم المبرمجون عادة بكتابة كل الوامر في ملف ةثم يتم تشللغيل كللل الوامللر‬
‫الموجلللودة فلللي المللللف ‪ ،‬فلللي هلللذا القسلللم ملللن اللللدرس سلللنقوم بتشلللغيل المللللف‬
‫‪ python-test.py‬و هللو برنامللج بللايثون ‪ ،‬قبللل القيللام بتشللغيل الملللف تأكللد أنلله‬
‫فللي نفللس المجلللد الللذي فيلله الملللف ‪ run-python‬الللذي قمللت بتحميللله لفتللح‬
‫الطرفيللة ‪ ،‬افتللح الطرفيللة باسللتخدام ملللف ‪ run-python‬و اكتللب أمللر تشللغيل‬

‫‪٢١‬‬
‫بللللايثون )‪ python3‬إذا كنللللت تسللللتخدم أوبونتللللو أو مللللاك و ‪ python‬إذا كنللللت‬
‫تستخدم ويندوز( بعده مسافة ةثم اسم الملف الذي تريد تشغيله ‪ ،‬الملف الللذي‬
‫نريللد تشللغيله هللو ‪ python-test.py‬لللذلك كتبنللا اسللمه بعللد أمللر بللايثون كمللا فللي‬
‫الصللورة رقللم ‪ ، ٤‬البرنامللج يرسللم كلمللة "بللايثون" فللي الطرفيللة ‪ ،‬هللذا برنامللج‬
‫بايثون بسيط جدا و خلل الدروس سنتعلم كتابة برامج تقوم بمهام أكثر‪.‬‬

‫الصورة ‪ :٢٤‬تشغيل ملف أوامر بايثون‬

‫‪ 3.4‬تعلمنا في هذا الدرس‬


‫• تشغيل أوامر بايثون عن طريق المفسر‪.‬‬

‫• تشغيل أوامر بايثون من ملف‪.‬‬

‫هللذا الللدرس كللان تمهيللدا لبدايللة تعلمنللا للبرمجللة ‪ ،‬فللي الللدرس القللادم سللنتعلم‬
‫تنفيذ العمليا ت الحسابية الللتي تشللكل أمللرا أساسلليا فللي أي لغللة برمجللة و منهللا‬
‫بالتأكيد لغة بايثون‪.‬‬

‫‪٢٢‬‬
‫الدرس الرابع‬
‫‪4‬العمليات الحسابية‬
‫البرنامج عبارة عن عدد من الوامر يتللم تنفيللذها و لتعلللم البرمجللة يجللب‬
‫علينا تعلم هذه الوامر ‪ ،‬ابتداء من هذا الدرس سنبدأ البرمجللة بلغللة بللايثون و‬
‫تعلم عدد من الوامر في كل درس ‪ ،‬نتعلم في هللذا الللدرس عمليللا ت الحسللابية‬
‫مهمللة حللتى فللي لغللا ت البرمجللة الخللرى ‪ ،‬سللنتطرق فللي الللدرس لسللت عمليللا ت‬
‫حسللابية بعضللها مشللهور و هللي الجمللع و الطللرح و الضللرب و القسللمة ‪ ،‬البعللض‬
‫الخر من العمليا ت الحسابية قد ل يكلون مشلهورا و هلي القسللمة الصللحيحة و‬
‫بللاقي القسللمة ‪ ،‬هنللاك عمليللا ت أخللرى فللي بللايثون لكننللا لللن نتطللرق لهللا فللي هللذا‬
‫الدرس و قد نتعلمها و نستخدمها في دروس لحقة‪.‬‬

‫‪ 4.1‬الجمع و الطرح والضرب و القسمة‬


‫شغل مفسر بايثون كما تم شرحه في الدرس السابق ‪ ،‬اكتب المللر التللالي‬
‫ةثم اضغط زر الدخال ‪:‬‬
‫‪>>> 7+4‬‬

‫إذا أدخلت السطر السابق سيكتب المفسللر فللي السللطر الللذي يليلله العللدد ‪ ، ١١‬إذا‬
‫أدخلنا أي عملية حسابية يقوم المفسر بتنفيللذها و طباعللة الناتللج ‪ ،‬جللرب جملع‬
‫أعداد أكثر في سطر واحد ‪ ،‬مثل اكتب ‪:‬‬
‫‪>>> 8+4+12+3‬‬

‫سلليقوم المفسللر بطباعللة نتيجللة جمللع العللداد ‪ ،‬هنللاك العديللد مللن العمليللا ت فللي‬
‫لغة بايثون نعطي هنا بعضها مع رمز كل عملية و مثال عليها و ناتجها ‪:‬‬

‫• عملية الجمع ) ‪: ( +‬‬


‫‪>>> 7 + 4‬‬
‫‪11‬‬

‫• عملية الطرح ) ‪: ( -‬‬


‫‪>>> 7 - 4‬‬
‫‪3‬‬

‫• عملية الضرب ) * ( ‪:‬‬


‫‪>>> 7 * 4‬‬
‫‪28‬‬

‫‪٢٤‬‬
‫• عملية القسمة ) ‪: ( /‬‬
‫‪>>> 7 / 4‬‬
‫‪1.75‬‬

‫لحظ أننللا نسللتخدم رمللوزا للضللرب و القسللمة تختلللف عللن الرمللوز المسللتخدمة‬
‫عادة في الرياضيا ت ‪ ،‬في الضرب نستخدم رمللز النجمللة * بللدل الرمللز × و فللي‬
‫القسمة نستخدم الخللط المائللل ‪ /‬بللدل اسللتخدام الرمللز ÷ لكللن معنللى العمليللة ل‬
‫يتغير فالضرب و القسمة في بايثون و الرياضيا ت لهما نفس المعنى تماما‪.‬‬

‫‪ 4.2‬القسمة الصحيحة و باقي القسمة‬


‫هنللاك عمليتللان حسللابيتان مفيللدتان فللي البرمجللة إضللافة إلللى العمليللا ت‬
‫السابقة و هما القسمة الصحيحة و باقي القسمة‪.‬‬

‫• القسمة الصحيحة ‪ :‬هي قسمة عددين مع تجاهل أي قيمة بعد الفاصلللة‬


‫‪ ،‬إذا قسمنا مثل ‪ ٧‬على ‪ ٤‬فللي القسللمة العاديللة نجللد أن الناتللج هللو ‪، ١.٧5‬‬
‫فللللي القسللللمة الصللللحيحة يكللللون الناتللللج ‪ ١‬مللللع تجاهللللل كللللل القيللللم بعللللد‬
‫الفاصلة ‪ ،‬رمز القسمة الصحيحة هو خطان مائلن‪ ، //‬المر التالي مثللال‬
‫على القسمة الصحيحة و بعده يظهر ناتج العملية ‪:‬‬
‫‪>>> 7 // 4‬‬
‫‪1‬‬

‫• باقي القسمة ‪ :‬هذه العمليللة تعطللي بللاقي قسللمة العللدد الول علللى العللدد‬
‫الثللاني ‪ ،‬نسللتخدم رمللز النسللبة المئويللة ‪ %‬للقيللام بعمليللة بللاقي القسللمة ‪،‬‬
‫مثل ‪ ٤ % ٧‬يسلللاوي ‪ ٣‬لن العلللدد ‪ ٣‬هلللو بلللاقي قسلللمة ‪ ٧‬عللللى ‪ ، ٤‬الملللر‬
‫التالي مثال على عملية باقي القسمة و بعده يظهر ناتج العملية ‪:‬‬
‫‪>>> 7 % 4‬‬
‫‪3‬‬

‫‪٢5‬‬
‫‪ 4.3‬أولوية تنفيذ العمليات الحسابية‬
‫بإمكاننا كتابة أكللثر مللن عمليللة فللي أمللر واحللد ‪ ،‬مثل نسللتطيع كتابللة المللر‬
‫التالي ‪:‬‬
‫‪>>> 3 % 2 + 5 * 2‬‬

‫يتم تنفيذ العمليا ت الحسابية بترتيب معين فبعض العمليا ت لهلا أولويلة أعللى‬
‫ملللن الخلللرى و يتلللم تنفيلللذها أول ‪ ،‬فلللي هلللذا اللللدرس سلللنذكر ترتيلللب العمليلللا ت‬
‫الستة التي تم ذكرهللا فللي هلذا الللدرس لكللن هنلاك عمليللا ت أخللرى قللد يكلون لهللا‬
‫أولويللة أعلللى أو أقللل مللن العمليللا ت المللذكورة ‪ ،‬أولويللة تنفيللذ العمليللا ت الللتي‬
‫تطرقنا لها في الدرس كما يلي ‪:‬‬

‫‪ .١‬الضرب و القسمة و القسمة الصحيحة و باقي القسمة‪.‬‬

‫‪ .٢‬الجمع و الطرح‪.‬‬

‫يتم تنفيذ كل العمليا ت من المستوى الول قبل تنفيذ عمليتي الجمع و الطرح‬
‫اللتين في المستوى الثاني ‪ ،‬في السطر السابق نجد ةثلث عمليا ت و هي بللاقي‬
‫القسمة و الجمع و الضرب ‪ ،‬يتم تنفيذ بللاقي القسللمة و الضللرب أول قبللل تنفيللذ‬
‫الجمع ‪ ،‬بعد حساب ناتجي باقي القسمة و الضللرب يتلم بعلد ذللك تنفيلذ الجملع‬
‫بين الناتجين‪.‬‬

‫إذا وجللد ت أكللثر مللن عمليللة بنفللس مسللتوى التنفيللذ يتللم تنفيللذ العمليللا ت مللن‬
‫اليسار إلى اليمين ‪ ،‬مثل ‪:‬‬
‫‪2 * 7 // 3‬‬

‫لن المر السابق يحوي عمليلتين ملن نفلس المسلتوى و هملا الضلرب و القسلمة‬
‫الصحيحة يتم تنفيذ العملية التي على اليسار أول و هللي ضللرب ‪ ٧ × ٢‬و يتللم‬
‫حساب النتيجة ‪ ،‬بعد ذلك تتم عملية القسمة الصحيحة بيللن نتيجللة الضللرب و‬
‫العدد ‪.٣‬‬

‫بإمكاننلللا تجميلللع بعلللض العمليلللا ت بيلللن قوسلللين ليتلللم تنفيلللذها قبلللل العمليلللا ت‬

‫‪٢6‬‬
‫الخرى بغض النظر عن أولوية تنفيذها ‪ ،‬مثل ‪:‬‬
‫) ‪5 * ( 2 + 1‬‬

‫مللع أن عمليللة الضللرب تتللم قبللل عمليللة الجمللع إل أن عمليللة الجمللع فللي المللر‬
‫السابق تتم أول لنها داخل قوسين‪.‬‬

‫‪ 4.4‬تعلمنا في هذا الدرس‬


‫• بعض العمليا ت الحسابية ‪:‬‬

‫◦ الجمع‪.‬‬

‫◦ الطرح‪.‬‬

‫◦ الضرب‪.‬‬

‫◦ القسمة‪.‬‬

‫◦ القسمة الصحيحة‪.‬‬

‫◦ باقي القسمة‪.‬‬

‫• أولوية تنفيذ العمليا ت الحسابية‪.‬‬

‫فلللي هلللذا اللللدرس تعلمنلللا الحسللاب بلغلللة بلللايثون و تعاملنلللا بشلللكل أساسلللي مللع‬
‫المفسللر ‪ ،‬قمنللا بكتابللة أوامللر صللحيحة و مشللاهدة ناتجهللا ‪ ،‬فللي الللدرس القللادم‬
‫سنتعلم أوامر لكتابة جمل على الطرفيللة و هلذا مللن أبسللط أشللكال التفاعللل مللع‬
‫المستخدم‪.‬‬

‫‪٢٧‬‬
‫الدرس الخامس‬
‫‪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‬‬

‫‪ 5.4‬كتابة برنامج في ملف‬


‫قد تتساءل عن وظيفة أمر الطباعللة فنحللن نطبللع كلمللا نعرفله ‪ ،‬أيضلا قللد‬
‫تتسللاءل عللن فائللدة طباعللة الرقللام و العمليللا ت الحسللابية ملع أن المفسللر يقللوم‬
‫بطباعتهلللا تلقائيلللا ‪ ،‬سنسلللتغل هلللذا اللللدرس لنسلللتفيد قليل ملللن أملللر الطباعلللة و‬
‫نتعللللم كيفيلللة كتابلللة برناملللج بلللايثون فلللي مللللف بلللدل أن نكتبللله فلللي المفسلللر ‪،‬‬
‫سنستفيد أكثر من أمر الطباعة في الدروس القادمة‪.‬‬

‫افتللح برنامللج محللرر النصللوص جللي إد ت لكتابللة برنامللج بللايثون ‪ ،‬الفضللل أن‬
‫تقللوم بحفللظ الملللف أول قبللل أن تبللدأ الكتابللة فيلله ‪ ،‬احفللظ الملللف و سللمه بللأي‬
‫اسلللم لكلللن تأكلللد أن السلللم يتكلللون ملللن حلللروف أو أرقلللام انجليزيلللة و ينتهلللي‬
‫بلللل " ‪ ، ".py‬تسلللتطيع مثل أن تسلللميه "‪ ، "lesson1.py‬اكتلللب فلللي المللللف النلللص‬
‫التالي ‪:‬‬
‫)'‪print ( 'hello world‬‬

‫هذا نفس المر الذي كتبناه في بداية الدرس ‪ ،‬بإمكانك كتابة أي أوامر أخرى ‪،‬‬
‫احفظ الملف بعلد التعلديل و شلغل الطرفيلة ‪ ،‬تأكلد أن مللف تشلغيل الطرفيلة و‬
‫ملف بايثون الذي كتبته في نفس المجلد كما تم شرحه في الدرس الثاني‪.‬‬

‫‪٣١‬‬
‫شغل الطرفية و بعدها شغل الملف كما تم شرحه في الدرس الثاني ‪:‬‬

‫• إذا كنلللت تسلللتخدم أوبونتلللو أو ملللاك ‪ :‬اكتلللب ‪ python3‬بعلللدها مسلللافة‬


‫بعدها اسم الملف ‪ ،‬مثل ‪:‬‬
‫‪python3 lesson1.py‬‬

‫• إذا كنللت تسللتخدم وينللدوز ‪ :‬اكتللب ‪ python‬بعللدها مسللافة بعللدها اسللم‬


‫الملف ‪ ،‬مثل ‪:‬‬
‫‪python lesson1.py‬‬

‫تلحلللظ أن البرناملللج طبلللع عبلللارة "‪ "hello world‬ةثلللم توقلللف ‪ ،‬تسلللتطيع‬


‫كتابللة عللدة أوامللر طباعللة تظهللر فللي الطرفيللة كلمللا شللغلت الملللف و لللن تظهللر‬
‫الوامللر فللي الطرفيللة ‪ ،‬أيضللا إذا كتبللت عمليللا ت حسللابية فللي الملللف فلللن يتللم‬
‫طباعة ناتجها كما هو الحال فلي المفسلر بلل يجلب أن تكتبهلا فلي أملر الطباعلة‬
‫لكي تظهر في شاشة الوامر‪.‬‬

‫‪ 5.5‬تعلمنا في هذا الدرس‬


‫• أمر الطباعة ‪ print :‬بعدها قوسان بينهما جملة أو رقم نريد طباعته‪.‬‬

‫• رمز الفل ت ‪ \n‬و معناه سطر جديد‪.‬‬

‫• كتابة برنامج بايثون في ملف‪.‬‬

‫في هذا الدرس تعلمنا الطباعة في لغة بايثون ‪ ،‬سنستفيد أكثر و أكثر من هللذا‬
‫المللر أكللثر فللي الللدروس القادمللة ‪ ،‬الللدرس القلادم يغطللي المتغيللرا ت و هلي مللن‬
‫أهم مبادئ البرمجة‪.‬‬

‫‪٣٢‬‬
‫الدرس السادس‬
‫‪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‬و خزنلا فيله جمللة نصللية و ليلس رقملا ‪،‬‬
‫يمكننللا أن نعامللل هللذا المتغيللر مثللل أي عبللارة نصللية أخللرى ‪ ،‬بإمكاننللا طبللاعته‬
‫مثل ‪:‬‬

‫) ‪>>> print ( name‬‬


‫‪Mohammad‬‬

‫‪ 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‬‬

‫‪ 6.4‬تعلمنا في هذا الدرس‬


‫• المتغيرا ت ‪ :‬تستخدم لحفظ قيمة معينة‪.‬‬

‫• متغيرا ت النصوص‪.‬‬

‫• جملللع النصلللوص ‪ :‬جملللع النصلللوص يعطلللي نصلللا يحلللوي كلللل النصلللوص‬


‫المجموعة‪.‬‬

‫في الدرس القادم بإذن ا سنتعلم التفاعل مللع المسللتخدم ‪ ،‬سللنكتب برنامجللا‬
‫يطلب من المستخدم إدخال بيانا ت عن نفسه و نحفظها فللي البرناملج و نقللوم‬
‫بطاعتها و استخدامها‪.‬‬

‫‪٣٧‬‬
‫الدرس السابع‬
‫‪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‬‬

‫‪ 7.3‬تعلمنا في هذا الدرس‬


‫• الدخال ‪ :‬نستخدم المر ‪ input‬لطلب الدخال من المستخدم‪.‬‬

‫• إدخلللال العلللداد ‪ :‬نسلللتخدم الملللر ‪ int‬أو ‪ float‬ملللع الملللر ‪ input‬لدخلللال‬


‫العداد‪.‬‬

‫في الدرس القادم سنتعلم التعامل مع الملفا ت ‪ ،‬سنقرأ محتويا ت ملللف و نقللوم‬
‫بطباعتها و سنقوم أيضا بكتابة عبارا ت نصية داخل ملف‪.‬‬

‫‪٤٠‬‬
‫الدرس الثامن‬
‫‪8‬التعامل مع الملفات‬
‫معظللم البرامللج الللتي نتعامللل معهللا يوميللا تتعامللل مللع الملفللا ت ‪ ،‬فللي هللذا‬
‫اللللدرس سلللنتعلم كيفيلللة فتلللح ملفلللا ت فلللي لغلللة بلللايثون ‪ ،‬سلللنتعلم كيلللف نقلللرأ‬
‫محتويا ت الملف و كيف نكتب في الملف‪.‬‬

‫‪ 8.1‬فائدة الملفات‬
‫تعلمنا فلي اللدروس السللابقة كيفيللة إدخلال قيمللة ملن لوحلة المفاتيللح ملن‬
‫قبل المستخدم ‪ ،‬إذا انتهى البرنامج تختفي هذه القيمة و ل يمكن أن نعرفهللا ‪،‬‬
‫تخيلللل مثل أن المسلللتخدم أدخلللل اسلللمه فلللي البرناملللج ‪ ،‬إذا انتهلللى البرناملللج‬
‫تختفللي هللذه القيمللة و ل يمكللن اسللترجاعها ‪ ،‬أحيانللا نريللد أن نسللترجع بعللض‬
‫البيانا ت في وقت لحق حتى بعد انتهاء البرنامللج ‪ ،‬هنللا تللأتي فائللدة الملفللا ت ‪،‬‬
‫الملفللا ت تحفللظ البيانللا ت مللن البرنامللج و يمكللن بعللد ذلللك قراءتهللا حللتى بعللد‬
‫إغلق البرنامج أو إطفاء الحاسب‪.‬‬

‫‪ 8.2‬فتح ملف‬
‫لفتح ملف نستخدم المر )( ‪ ، open‬الصيغة العامة لمر ‪ open‬هي ‪:‬‬
‫) '‪open ( 'file-name‬‬

‫نكتب بين القوسين عدة أمور سنذكر في هذا الدرس اةثنين منها ‪:‬‬

‫‪ .١‬اسم الملف ‪ ،‬هذا القسم إجباري و يجب أن نكتب اسم الملف الذي نريللد‬
‫فتحه ‪ ،‬لو أردنا مثل فتح ملف اسمه "‪ "example.txt‬نكتب ما يلي ‪:‬‬
‫) '‪>>> open ( 'example.txt‬‬

‫بالتأكيد نريد أن نتعامل مع أي ملف نقلوم بفتحله ‪ ،‬ل يمكلن التعامللل ملع‬
‫الملللف الللذي نفتحلله إل إذا حفظنللاه فللي متغيللر لللذلك عللادة نقللوم عللادة‬
‫باستخدام أمر ‪ open‬في تعريف متغير ‪ ،‬مثل ‪:‬‬
‫) '‪>>> var = open ( 'example.txt‬‬

‫بإمكاننلللا بعلللدها اسلللتخدام المتغيلللر ‪ var‬لقلللراءة المللللف و التعاملللل معللله ‪،‬‬


‫سيتم شرح ذلك في القسام التالية‪.‬‬

‫‪٤٢‬‬
‫‪ .٢‬وضلللع فتلللح المللللف ‪ ،‬هنلللاك وضلللعان رئيسللليان عنلللد فتلللح المللللف ‪ :‬وضلللع‬
‫الكتابللة و وضللع القللراءة ‪ ،‬عنللد فتللح ملللف بوضللع الكتابللة فيمكننللا فقللط‬
‫الكتابللة فللي الملللف و ل يمكننللا القللراءة منلله ‪ ،‬أمللا إذا فتحنللا ملفللا بوضللع‬
‫القراءة يمكننا فقط القراءة من الملف و ل يمكننا الكتابة فيلله ‪ ،‬لتحديللد‬
‫الوضللع الللذي نريللده نضللع فاصلللة بعللد اسللم الملللف و نكتللب بعللدها حرفللا‬
‫يحدد الوضع ‪:‬‬

‫◦ إذا أردنا تحديد وضع الكتابة نضع الحرف "‪ ، "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‬‬

‫هكللللللذا عرفنللللللا المتغيللللللر ‪ wf‬و نسللللللتطيع أن نسللللللتخدمه للكتابللللللة فللللللي الملللللللف‬


‫‪ ، example.txt‬للكتابة في الملف نستخدم المر )( ‪ write‬و صيغته كالتالي ‪:‬‬
‫) '‪>>> wf.write ( 'text‬‬

‫نكتب اسم المتغير بعده نقطة بعدها كلمة ‪ write‬و بعدها قوسلان ‪ ،‬نكتلب بيللن‬
‫القوسلللين العبلللارة اللللتي نريلللد كتابتهلللا كعبلللارة نصلللية بيلللن علملللتي اقتبلللاس ‪،‬‬

‫‪٤٣‬‬
‫نستطيع استخدام أمر ‪ write‬أكثر من مرة ‪ ،‬بإمكاننا مثل كتابة ما يلي ‪:‬‬
‫) '‪>>> wf.write ( 'hello‬‬
‫) '‪>>> wf.write ( 'i am mohammad‬‬

‫الوامر الثلةثة السابقة تكتب العبارة التالية داخل الملف ‪:‬‬


‫‪hello i am mohammad‬‬

‫تلحللظ مللن العبللارة الموجللودة فللي الملللف أن أمللر ‪ write‬ل يفصللل بيللن الجمللل‬
‫بمسلللافا ت و ل يكتلللب كلللل جمللللة فلللي سلللطر ‪ ،‬إذا أردنلللا أن نفصلللل بيلللن الجملللل‬
‫بمسافا ت أو نقط أو ما شاكل علينا أن نكتللب المسللافا ت و السللطر فللي الجملللة‬
‫اللتي نكتبهلا فلي المللف ‪ ،‬الواملر التاليلة هلي نفلس الوامللر السلابقة لكنهلا تزيلد‬
‫سطرا جديدا في كل جملة يتم كتابتها ‪:‬‬
‫) '‪>>> wf.write ( 'hello\n‬‬
‫) '‪>>> wf.write ( 'i am mohammad\n‬‬

‫السطر السابقة تكتب التي في الملف ‪:‬‬


‫‪hello‬‬
‫‪i am mohammad‬‬

‫بعد كتابة كل ما نريده في الملف علينا أن نغلللق الملللف بللأمر )( ‪ ، close‬صلليغته‬


‫مثللل صلليغة ‪ write‬لكننللا نضللع القوسللين بللدون أي شلليء بينهمللا ‪ ،‬اكتللب المللر‬
‫التالي بعد النتهاء من كتابة العبارا ت السابقة في الملف ‪:‬‬
‫)( ‪wf.close‬‬

‫بعلللد إغلق المللللف ل يمكننلللا الكتابلللة فيللله و اسلللتخدام أملللر ‪ 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‬‬

‫لحظ أن أمر الطباعة لم يطبع شيئا على الطلق لننا وصلنا لنهاية الملف‪.‬‬

‫بعد النتهاء من القراءة من الملف علينا أن نتذكر إغلقه بالمر )( ‪ close‬تماما‬


‫مثلما فعلنا حين أغلقنا الملف بعد الكتابة ‪:‬‬
‫)( ‪>>> rf.close‬‬

‫بعد إغلق الملف ل يمكننا القراءة منه و اسللتخدام أمللر ‪ readline‬بعللد الغلق‬
‫يسبب أخطاء في البرنامج‪.‬‬

‫‪٤5‬‬
‫‪ 8.5‬تعلمنا في هذا الدرس‬
‫• فتح الملف ‪ :‬نستخدم المر )( ‪: open‬‬

‫◦ وضع الكتابة ‪:‬‬


‫) '‪var = open ( 'example.txt', 'w‬‬

‫◦ وضع القراءة ‪:‬‬


‫) '‪var = open ( 'example.txt', 'r‬‬

‫• الكتابة في ملف ‪ :‬نستخدم المر )( ‪: write‬‬


‫) '‪var.write ( 'text‬‬

‫• القراءة من ملف ‪ :‬نستخدم المر )( ‪: readline‬‬


‫)( ‪text = var.readline‬‬

‫• إغلق الملف ‪ :‬نستخدم المر )( ‪: close‬‬


‫)( ‪var.close‬‬

‫فللي الللدرس القللادم سللنتعلم كيفيللة التحكللم فللي البرنامللج بشللكل أكللبر و كتابللة‬
‫أوامللر يتللم تنفيللذها فللي حللال ت معينللة فقللط بينمللا يتللم تجاهلهللا فللي حللال ت‬
‫أخرى‪.‬‬

‫‪٤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‬‬

‫تعطي نتيجة خاطئة لن العدد ‪ ١5‬ل يساوي العدد ‪.٩‬‬

‫• =! ‪ :‬علمللة تعجللب ةثللم يسللاوي تعنللي عللدم المسللاواة ‪ ،‬هللذه العمليللة هللي‬
‫عكلللس العمليلللة السلللابقة و تعطلللي نتيجلللة صلللائبة إذا كلللان العلللددان غيلللر‬
‫متسلللاويين بينملللا تعطلللي نتيجلللة خاطئلللة إذا كلللان العلللددان متسلللاويان ‪،‬‬
‫مثل ‪:‬‬
‫‪>>> 15 != 9‬‬

‫تعطي نتيجة صائبة لن العدد ‪ ١5‬فعل ل يساوي العدد ‪.٩‬‬

‫• > ‪ :‬أكبر من ‪ ،‬تعطي نتيجة صائبة فقط إذا كان العدد الول ) الذي عللى‬
‫اليسار ( أكبر من الثاني ) الذي على اليمين (‪.‬‬

‫• < ‪ :‬أصغر من ‪ ،‬تعطي نتيجة صائبة فقط إذا كان العدد الول أصللغر مللن‬
‫الثاني‪.‬‬

‫• => ‪ :‬أكبر من أو يساوي ‪ ،‬تعطي نتيجة صائبة إذا كللان العللدد الول أكللبر‬
‫من الثاني أو يساويه‪.‬‬

‫‪٤٩‬‬
‫• =< ‪ :‬أصللغر مللن أو يسللاوي ‪ ،‬تعطللي نتيجللة صللائبة إذا كللان العللدد الول‬
‫أصغر من الثاني أو يساويه‪.‬‬

‫‪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‬‬

‫جرب تشغيل البرنامج و أدخل العدد ‪ ، ٧٠‬ستجد أن البرنامج لن يطبلع العبللارة‬


‫"^_^ ‪ "you are excellent‬لن المتغير ‪ mark‬ليس أكبر من ‪ ، ٩٠‬شغل البرنامج‬
‫مرة أخللرى و أدخللل هلذه المللرة العللدد ‪ ، ٩5‬فللي هلذه الحالللة سللتجد أن البرنامللج‬
‫سيطبع تلك العبارة لن الشرط صائب فقيمة المتغير ‪ mark‬أكبر من ‪ ، ٩٠‬المللر‬
‫الخير في البرنامج يبلدأ ملن بدايلة السلطر للذلك يتلم تنفيلذه دائملا و ل علقلة‬
‫له بعبارة ‪ if‬و ل بالشرط‪.‬‬

‫‪if‬‬ ‫‪ 9.4‬تعدخد الوامر في عبارة‬


‫بإمكاننا أن نكتب أكلثر مللن أملر داخللل عبللارة ‪ ، if‬يجلب أن نكتلب قبلل كللل‬
‫الوامللر داخللل عبللارة ‪ if‬مسللافا ت متسللاوية ‪ ،‬هللذا نفللس البرنامللج السللابق لكننللا‬
‫زدنا أمرا آخر داخل عبارة ‪: if‬‬
‫) ) ' ? ‪mark = int ( input ( 'what is your mark‬‬
‫‪if mark > 90 :‬‬
‫) '^_^ ‪print ( 'you are excellent‬‬
‫) '‪print ( 'keep up the good work‬‬
‫) '‪print ( 'good bye‬‬

‫لحللظ فللي المثللال السللابق أننللا زدنللا أمللرا داخللل عبللارة ‪ ، if‬بإمكاننللا أن نضللع أي‬
‫عدد من الوامر داخل عبللارة ‪ if‬سللواء كللان ةثلث أوامللر أو أربللع أو أكللثر ‪ ،‬المهللم‬
‫أن نكتلللب نفلللس علللدد المسلللافا ت قبلللل كلللل أملللر ‪ ،‬ل يجلللوز مثل أن نكتلللب أربلللع‬
‫مسافا ت قبل المر الول و ةثلث مسافا ت قبل المر الثاني‪.‬‬

‫‪5١‬‬
‫‪ 9.5‬تعلمنا في هذا الدرس‬
‫• القيم المنطقية ‪ :‬إما صائبة و إما خاطئة‪.‬‬

‫• عمليا ت المقارنة‪.‬‬

‫• عبارة ‪: if‬‬
‫‪if condition :‬‬
‫‪instruction‬‬
‫‪rest_of_program‬‬

‫• تعدد الوامر في عبارة ‪: if‬‬


‫‪if condition :‬‬
‫‪instruction‬‬
‫‪instruction‬‬
‫‪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‬أكلبر ملن ‪ ٠‬و فلي‬
‫نفس الوقت ل يساوي ‪.٣‬‬

‫• ‪ : not‬هلللذا الملللر يأخلللذ شلللرطا واحلللدا فقلللط و يعطلللي نتيجلللة معاكسلللة‬


‫لنتيجلللة الشلللرط ‪ ،‬إذا كلللان الشلللرط صلللائبا فلللإن نتيجلللة أملللر ‪ not‬تصلللبح‬
‫خائطة ‪ ،‬أما إذا كللان الشللرط خاطئللا تكللون نتيجللة أمللر ‪ not‬صللائبة ‪ ،‬مثل‬
‫إذا أردنا فحص ما إذا كان المتغير ‪ x‬ليس أكبر من ‪ ٠‬نكتب ‪:‬‬
‫‪if not x > 0 :‬‬
‫) '‪print ( 'x is not more than 0‬‬

‫يتم تنفيذ أمر الباعة فقط إذا لم يكن المتغير ‪ 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‬يعيلللد البرناملللج طللللب كلملللة السلللر و ل يتوقلللف حلللتى يلللدخل‬
‫المستخدم كلمة السر الصحيحة‪.‬‬

‫‪ 11.2‬مقاطعة أوامر الحلقة‬


‫يمكننا داخل الحلقللة أن نقاطعهللا قبللل انتهللاء تنفيللذ الوامللر ‪ ،‬هنللاك أمللران‬
‫لمقاطعة تنفيذ الوامر في الحلقة ‪:‬‬

‫• ‪ : break‬أملللر ‪ break‬يوقلللف الحلقلللة و يخلللرج منهلللا ‪ ،‬أي أملللر بعلللد ‪break‬‬


‫داخل حلقللة ‪ while‬ل يتللم تنفيللذه و يسللتمر البرنامللج فللي تنفيللذ الوامللر‬
‫التي بعد الحلقة‪.‬‬

‫• ‪ : continue‬أملللر ‪ continue‬يقلللاطع الحلقلللة و يعلللود إللللى بلللدايتها ‪ ،‬يتلللم‬


‫فحللللص الشللللرط مللللرة أخللللرى و تنفيللللذ أوامللللر الحلقللللة إذا كللللان الشللللرط‬
‫صحيحا‪.‬‬

‫سللنذكر مثللال علللى اسللتخدام المللر ‪ 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‬و بهلللذا تتوقلللف‬
‫الحلقة و يكمل البرنامج بعدها‪.‬‬

‫‪ 11.3‬تعلمنا في هذا الدرس‬


‫• أمر ‪: while‬‬
‫‪while condition :‬‬
‫‪instruction‬‬
‫‪rest_of_program‬‬

‫• أمر ‪.break‬‬

‫• أمر ‪continue‬‬

‫فللي الللدرس القللادم سللنتعلم القللوائم فللي لغللة بللايثون ‪ ،‬القللوائم تنفعنللا إذا كللان‬
‫لدينا عدد كبير من المتغيرا ت‪.‬‬

‫‪6٢‬‬
‫الدرس الثاني عشر‬
‫‪12‬القوائم‬
‫كثيرا ما نحتاج حفظ عدد كبير من القيللم يكللون بينهللا أمللر مشللترك ‪ ،‬مثل‬
‫قد نريد حفظ أعمار عدد كبير من الشخاص ‪ ،‬تخيل أن لدينا ‪ ١٠٠‬شخص نريد‬
‫حفظ أعمارهم في متغيرا ت ‪ ،‬من الصعب تعريف ‪ ١٠٠‬متغير و استخدام قيمهللا‬
‫‪ ،‬القللوائم تحللل هللذه المشللكلة ‪ ،‬قبللل بللدايتنا للللدرس ننللوه أن كللثيرا مللن لغللا ت‬
‫البرمجة تستخدم تعبير "المصللفوفا ت" للشللارة إلللى القللوائم لكللن المصللفوفا ت‬
‫فللي لغللة بللايثون لهللا ميللزا ت أكللثر مللن المصللفوفا ت فللي تلللك اللغللا ت و إن كللان‬
‫المبدأ مشابها ‪ ،‬إذا صادفت مصطلح "المصفوفا ت" فتذكر القوائم في بايثون‪.‬‬

‫‪ 12.1‬القوائم‬
‫القائمة في لغة بايثون عبلارة علن مجموعلة قيلم ‪ ،‬يمكننلا حفلظ مجموعلة‬
‫القيم هذه في متغير واحد و يمكننا استخراج أي قيمة نريد من هذا المتغيللر ‪،‬‬
‫نكتب كل القيم في القائمة بين قوسللين مربعيللن ) ][ ( ‪ ،‬نفصللل بيللن كللل قيمللة‬
‫و أخللرى بفاصلللة ) ‪ ، ( ,‬فللي المثللال التللالي نعللرف متغيللرا و نحفللظ فيلله قائمللة‬
‫بأعداد صحيحة ‪:‬‬
‫] ‪>>> var = [ 10, 2, -31‬‬

‫المتغيللر ‪ var‬أصللبح قائمللة فيهللا ةثلةثللة أعللداد و هللي ‪ ١٠‬و ‪ ٢‬و ‪ ، ٣١‬بإمكاننللا وضللع‬
‫أعداد أكثر لو أردنا ذلك ‪ ،‬بإمكاننا أيضا حفظ عبارا ت نصية في القائمة ‪:‬‬
‫] '‪>>> text = [ 'hello', 'football', 'nice cat‬‬

‫المتغيللللللللر ‪ text‬أصللللللللبح يحلللللللوي العبللللللللارا ت النصللللللللية "‪ "hello‬و "‪ "football‬و‬


‫"‪ ، "nice cat‬يمكننا أيضا في لغة بايثون أن نضع أعللدادا و عبللارا ت نصللية فللي‬
‫نفس القائمة لو أردنا ذلك ‪:‬‬
‫] '‪>>> text = [ 1, 'hello', 2, 3, '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‬هللي ‪ ١‬تللم تحديللد العنصللر رقللم ‪، ١‬‬
‫تذكر أن رقم العنصر الول هو ‪ ٠‬و رقم العنصر الثاني هو ‪.١‬‬

‫بإمكاننا إضافة عناصر للقائمللة باسللتخدام المللر ‪ ، append‬نكتللب اسللم القائمللة‬

‫‪65‬‬
‫بعده نقطة بعدها كلمة ‪ append‬ةثم قوسين ‪ ،‬نكتب بين القوسين القيمة التي‬
‫نريد إضافتها للقائمة ‪ ،‬المثال التالي يضيف العدد ‪ ٩‬إلى القائمة ‪: var‬‬
‫) ‪>>> var.append ( 9‬‬

‫بإمكاننللا إضللافة العللداد و العبللارا ت النصللية و أي قيمللة نريللد ‪ ،‬نسللتطيع أيضللا‬


‫إضافة المتغيرا ت و لسنا ملزمين بإضافة قيمة عددية مباشرة كمللا فللي المثللال‬
‫السابق ‪ ،‬المثال التالي يضيف المتغير ‪ x‬للقائمة ‪:‬‬
‫‪x = 14‬‬
‫) ‪var.append ( x‬‬

‫لن قيمة ‪ x‬هي ‪ ١٤‬يتم إضافة العدد ‪ ١٤‬إلى القائمة‪.‬‬

‫‪ 12.3‬التوصل لرحرف العبارات النصية‬


‫يمكننللا التوصللل لحللرف العبللارا ت النصللية كمللا نتوصللل لعناصللر القائمللة ‪،‬‬
‫مثل لو كان لدينا المتغير التالي ‪:‬‬
‫'‪>>> var = 'hello‬‬

‫بإمكاننا التوصل للحرف الول من النص كما نتوصل للعنصر الول من القائمللة‬
‫‪ ،‬المثال التالي يطبع الحرف الول ‪:‬‬
‫) ) ] ‪>>> print ( var [ 0‬‬
‫‪h‬‬

‫بإمكاننللا طباعللة جللزء مللن النللص باسللتخدام عمليللة الجمللع بيللن الحللرف الللتي‬
‫نريدها ‪ ،‬المثال التالي يوضح هذا بطباعة أول ةثلةثة أحرف من النص ‪:‬‬
‫) ] ‪>>> print ( var [ 0 ] + var [ 1 ] + var [ 2‬‬

‫جمعنا في المثال السللابق الحللرف الول و الثللاني و الثللالث مللن النللص فنتللج لنللا‬
‫نص يحوي الحرف الثلةثة الولى منه و قمنا بطباعتها‪.‬‬

‫‪66‬‬
‫‪ 12.4‬تعلمنا في هذا الدرس‬
‫• القوائم‪.‬‬

‫• التوصل لعناصر القائمة‪.‬‬

‫• إضافة عناصر للقائمة‪.‬‬

‫في الدرس القادم سلنتعلم طريقلة نسلتفيد بهلا ملن أملر ‪ while‬فلي التعامللل ملع‬
‫القوائم‪.‬‬

‫‪6٧‬‬
‫الدرس الثالث عشر‬
‫‪13‬الحلقات ‪2‬‬
‫في الدرس السابق تعلمنا القوائم و كيفية تعديل عناصللرها ‪ ،‬أحيانللا نريللد‬
‫تغييللر قيللم كللل عناصللر القائمللة ‪ ،‬تخيللل أن لللدينا قائمللة فيهللا ‪ ١٠٠‬عنصللر و نريللد‬
‫تغيير قيمهلا كلهلا ‪ ،‬ملن الصلعب تغييلر قيلم العناصلر واحلدا واحلدا و كتابلة أملر‬
‫لكل عنصر ‪ ،‬إذا قمنا بذلك فعلينا كتابة ‪ ١٠٠‬أمللر لتغييللر قيللم العناصللر ‪ ،‬الحلقللا ت‬
‫تفيدنا في مثل هذه الحالة لتعديل قيللم عناصللر كللثيرة فللي القائمللة دون كتابللة‬
‫أمر لكل عنصر ‪ ،‬في هذا الدرس سنتعلم القيام بذلك‪.‬‬

‫‪while‬‬ ‫‪ 13.1‬تعديل قيم القائمة باستخدام‬


‫تعلمنللا فللي الللدرس الحللادي عشللر حلقللة ‪ ، while‬نضللع فيهللا شللرطا و يتللم‬
‫تنفيللذ الوامللر إذا كللان الشللرط صللائبا و يتللم إعللادة تنفيللذ الوامللر حللتى يصللبح‬
‫الشرط خاطئللا ‪ ،‬بإمكاننللا اسللتخدام هللذه الحلقللة لتعللديل عناصللر قائمللة ‪ ،‬للقيللام‬
‫بذلك نستخدم متغيرا عدديا ‪ ،‬تخيل أن لدينا قائمللة فيهللا ةثلةثللة عناصللر هلي ‪١٠‬‬
‫و ‪ ٢‬و ‪ ، ٣١-‬نريد تعلديل قيملة كللل عنصلر إلللى العللدد ‪ ، 5٠٠‬المثللال التللالي يوضللح‬
‫كيفية القيام بذرك باستخدام ‪: while‬‬
‫[ = ‪var‬‬ ‫] ‪10, 2, -31‬‬
‫‪x‬‬ ‫‪= 0‬‬
‫‪while x‬‬ ‫‪< 3 :‬‬
‫‪var‬‬ ‫‪[ x ] = 500‬‬
‫= ‪x‬‬ ‫‪x + 1‬‬

‫فللي المثللال السللابق لللدينا قائمللة اسللمها ‪ 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٠٠‬غيرناهللا إلللى نفللس قيمللة‬
‫العنصر القديمة مضروبة في ‪ ٢‬و بهذا نضاعف كل العناصر‪.‬‬

‫‪ 13.2‬معرفة عدخد عناصر القائمة‬


‫أحيانا تكون لدينا قائمللة ل نعللرف عللدد عناصللرها بالتحديللد ‪ ،‬ربمللا نضلليف‬
‫إليهللا عللددا مللن العناصللر و نحللذف منهللا عللددا آخللر بشللكل عشللوائي ‪ ،‬أمللر ‪len‬‬
‫يسمح لنا بمعرفة عدد عناصر القائمة ‪ ،‬نكتب كلمة ‪ len‬بعدها قوسان و بينهمللا‬
‫اسللم القائمللة الللتي نريللد عللدد عناصللرها ‪ ،‬فللي المثللال التللالي نعللرف قائمللة فيهللا‬
‫ةثلةثة عناصر و نقوم بحساب عدد العناصر ‪:‬‬
‫] ‪>>> var = [ 10, 2, -31‬‬
‫) ‪>>> len ( var‬‬
‫‪3‬‬

‫‪ 13.3‬رحذف العناصر من القائمة‬


‫نستطيع حذف عناصر من القائمة باستخدام أمر ‪ ، pop‬صلليغة المللر هللي‬
‫كتابللة اسللم القائمللة بعللده نقطللة بعللدها كلمللة ‪ pop‬بعللدها قوسللان ‪ ،‬نكتللب بيللن‬
‫القوسين رقم العنصر الذي نريد حذفه ‪ ،‬إذا حذفنا العنصر يمكننا حفللظ قيمتلله‬
‫فلللي متغيلللر ‪ ،‬نقلللوم بلللذلك بكتابلللة أملللر ‪ pop‬بعلللد عمليلللة تعييلللن للمتغيلللر الثلللاني‬

‫‪٧٠‬‬
‫باسللتخدام العمليللة = فللي المثللال التللالي نعللرف قائمللة فيهللا ةثلث عناصللر ةثللم‬
‫نحللذف العنصللر الثللاني منهللا و نحفظلله فللي المتغيللر ‪ ، x‬بعللد ذلللك نقللوم بطباعللة‬
‫المتغير ‪ x‬و القائمة لمعرفة القيم المخزنة في كل منهما ‪:‬‬

‫] ‪>>> var = [ 10, 2, -31‬‬


‫) ‪>>> x = var.pop ( 1‬‬
‫) ‪>>> print ( var‬‬
‫]‪[10, -31‬‬
‫) ‪>>> print ( x‬‬
‫‪2‬‬

‫تلحظ أن المر ‪ pop‬حذف العنصر الثاني من القائمة و خزنه في المتغير ‪.x‬‬

‫‪ 13.4‬تعلمنا في هذا الدرس‬


‫• تعديل قيم القائمة باستخدام ‪.while‬‬

‫• معرفة عدد عناصر القائمة‪.‬‬

‫• حذف العناصر من القائمة‪.‬‬

‫في الدرس القادم سللنتعلم نوعللا جديللدا مللن الحلقللا ت يسللهل علينللا التعامللل مللع‬
‫القوائم‪.‬‬

‫‪٧١‬‬
‫الدرس الرابع عشر‬
‫‪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‬تلحللظ أننللا دائمللا نكتللب قوسللين فللارغين بعللد المللر و أحيانللا‬
‫نكتب شيئا داخل القوسين ‪ ،‬سنتعلم هذا في القسم التالي من هذا الدرس‪.‬‬

‫‪ 14.2‬إعطاء قيمة للدالة‬


‫أحيانا نحتاج إدخال قيمللة للللدوال ‪ ،‬مثل دالللة ‪ print‬تأخللذ العبللارا ت الللتي‬
‫نريد طباعتها ‪ ،‬على سبيل المثال ‪:‬‬
‫) '‪print ( 'hello‬‬

‫العبللارة "‪ "hello‬كللانت القيمللة الللتي أعطيناهللا للدالللة و الدالللة تقللوم بطباعتهللا ‪،‬‬
‫كللثيرا مللا نحتللاج كتابللة دالللة تأخللذ قيمللا ‪ ،‬لتعريللف دالللة تأخللذ قيمللا نكتللب فللي‬
‫تعريلللف الداللللة بيلللن القوسلللين أسلللماء متغيلللرا ت ‪ ،‬بإمكاننلللا اسلللتخدام أي اسلللم‬
‫متغير نريد ‪ ،‬مثل قد نريد كتابة دالة ترحب بالشخاص كما يلي ‪:‬‬
‫‪>>> def greet ( name ) :‬‬
‫‪...‬‬ ‫) ‪print ( 'hello', name‬‬
‫‪...‬‬

‫تأخلذ الداللة قيملة واحلدة و أسلميناها ‪ ، name‬بإمكاننلا اسلتخدام هلذا المتغيلر‬


‫داخل الداللة ليعنللي القيمللة اللتي تلم إدخالهللا للداللة ‪ ،‬تقللوم الداللة بطباعلة كلملة‬
‫"‪ "hello‬بعلدها اسلم الشلخص اللذي أعطينلاه للداللة ‪ ،‬إذا أردنلا اسلتدعاء الداللة‬
‫يجللللب علينللللا إعطاؤهللللا قيمللللة تحللللل محللللل المتغيللللر ‪ ، name‬هللللذا مثللللال علللللى‬
‫استدعاء الدالة ‪ greet‬و إعطائها السم "‪: "Mohammad‬‬
‫) '‪>>> greet ( 'Mohammad‬‬
‫‪hello Mohammad‬‬

‫‪٧٤‬‬
‫لحظ كيف طبعت الدالة السللم اللذي أعطينللاه إياهلا ‪ ،‬بإمكاننلا تجربللة أي اسلم‬
‫آخر ‪:‬‬
‫) '‪>>> 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‬‬

‫بإمكاننا كتابة دالة تأخذ أعداد أكثر من القيم ‪ ،‬علينا فقللط أن نعطللي كللل قيمللة‬
‫اسما و نفصل بين كل اسم و آخر بفاصلة في تعريف الدالة‪.‬‬

‫‪ 14.3‬إرجاع قيمة من الّدالة‬


‫أحيانا نحتاج كتابة دالة ترجع قيمة معينة ‪ ،‬على سللبيل المثللال نسللتخدم‬
‫دالة ‪ input‬عادة بهذا الشكل ‪:‬‬
‫)( ‪>>> var = input‬‬

‫لحللظ أننللا اسللتخدمنا الدالللة ‪ input‬فللي إعطللاء قيمللة لمتغيلللر ‪ ،‬هللذا لن دالللة‬
‫‪ input‬ترجللع لنللا العبللارة الللتي يللدخلها المسللتخدم ‪ ،‬هللذا مثللال علللى دالللة ترجللع‬
‫قيملة ‪ ،‬أمللر ‪ return‬يقلوم بإرجلاع قيملة ‪ ،‬قبللل شللرح صلليغة هلذا الملر سللنعطي‬

‫‪٧5‬‬
‫مثال على دالة تستخدمه ‪:‬‬
‫‪>>> def double ( a ) :‬‬
‫‪...‬‬ ‫‪return 2 * a‬‬
‫‪...‬‬

‫الدالللة السللابقة تأخللذ قيمللة واحللدة و ترجللع ضللعف القيمللة ‪ ،‬بإمكاننللا اسللتخدام‬
‫الدالة لنخزن قيمة في متغير كما يلي ‪:‬‬
‫) ‪>>> n = double ( 5‬‬

‫الملللر السلللابق يخلللزن قيملللة ‪ ١٠‬فلللي المتغيلللر ‪ ، n‬هلللذا لننلللا اسلللتدعينا الداللللة و‬
‫أعطيناهللا العللدد ‪ ، 5‬تقللوم الدالللة بإرجللاع ناتللج ضللرب العللدد ‪ 5‬مللع ‪ ، ٢‬مللن هللذا‬
‫المثللال تلحللظ أن صلليغة المللر ‪ return‬هللي أن نكتللب الكلمللة ‪ return‬و بعللدها‬
‫القيمة التي نريد إرجاعها ‪:‬‬
‫‪return value‬‬

‫القيملللة يمكلللن أن تكلللون قيملللة مباشلللرة كلللأن نكتلللب العلللدد ‪ ٢‬و يمكلللن أن تكلللون‬
‫متغيرا أو عملية رياضية ‪ ،‬يمكن أيضا أن تكون القيمة جملة نصية‪.‬‬

‫‪ 14.4‬تعلمنا في هذا الدرس‬


‫• الاّدوال‪.‬‬

‫• إعطاء قيمة للاّدالة‪.‬‬

‫• إرجاع قيمة من الاّدالة‪.‬‬

‫فللي معظللم الللدروس السللابقة كتبنللا أوامللر تقللوم بمهللام بسلليطة ‪ ،‬فللي الللدرس‬
‫القلللادم سلللنتعلم كيفيلللة القيلللام بلللأوامر أكلللثر تعقيلللدا و سلللنكتب برنامجلللا يقلللوم‬
‫بضغط الملفا ت بصيغة ‪.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‬‬

‫ل يمكننا استخدام أوامر الوحدة قبل استيرادها‪.‬‬

‫‪ 15.3‬استخدام أوامر الورحدة‬


‫بعد عملية الستيراد نستطيع استخدام الدوا اّ‬
‫ل التي توفرها لنا الوحللدة ‪،‬‬
‫ل مختلفللة و طريقللة اسللتخدام كللل دااّلللة قللد تختلللف عللن‬
‫كللل وحللدة تللوفر دوا اّ‬

‫الخرى ‪ ،‬الصيغة العامة لستدعاء دالة من وحدة هي كما يلي ‪:‬‬


‫)( ‪>>> module.function‬‬

‫نكتب أول اسم الوحدة بعده نقطة بعللدها اسللم الدالللة ‪ ،‬وحللدة ‪ 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‬نفسللها تسللتخدم وحللدا ت أخللرى للقيللام بالمهمللة ‪،‬‬
‫لن تتطرق هذه السلسلللة للوحلدا ت اللتي توفرهللا بلايثون لكلن معظلم الوحلدا ت‬
‫لها شروح خاصة بها و بإمكان الدارس البحث عنها و قراءتها‪.‬‬

‫‪ 15.4‬تعلمنا في هذا الدرس‬


‫• الوحدا ت‪.‬‬

‫• استيراد الوحدا ت‬

‫‪import module‬‬
‫• استخدام دوا اّ‬
‫ل الوحدة‪.‬‬

‫هللذا الللدرس كللان آخللر درس فللي هللذه السلسلللة ‪ ،‬بعللد هللذا الللدرس سلليتم طللرح‬
‫مشللللروع يعطللللي تجربللللة أكللللثر واقعيللللة مللللن المثلللللة الللللتي تللللم طرحهللللا خلل‬
‫السلسلة ‪ ،‬سيطبق الدارس في المشروع عددا من المفاهيم الللتي تعلمهللا خلل‬
‫هذه السلسلة‪.‬‬

‫‪8٠‬‬
‫‪16‬مشرلوع السلسلة‬
‫بعد نهاية الدروس في هلذه السلسللة نقلدم مشلروعا برمجلة بلغلة بلايثون‬
‫يقللوم بلله الللدارس ‪ ،‬سلليعطي هللذا المشللروع تجربللة أكللثر واقعيللة مللن المثلللة‬
‫الموجللللللللودة ضللللللللمن السلسلللللللللة ‪ ،‬المشللللللللروع يتطلللللللللب ملفيللللللللن ‪ :‬الول هللللللللو‬
‫‪ ، dlserver.pyc‬بإمكانللللك تحميللللله مللللن هللللذا الرابللللط ‪ ،‬الثللللاني هللللو ‪ dlc.pyc‬و‬
‫بإمكانك تحميله من هذا الرابط‪.‬‬

‫فللي هللذا الشللرح سللنذكر ةثلةثللة نقللاط ‪ ،‬بدايللة فكللرة المشللروع ‪ ،‬بعللدها سللنذكر‬
‫أقسللللام المشللللروع ‪ ،‬أخيللللرا سللللنتحدث عللللن المطلللللوب مللللن الللللدارس فللللي هللللذا‬
‫المشروع‪.‬‬

‫‪ 16.1‬فكرة المشروع‬
‫فكللرة المشلروع هلي مللدير تحميللل يقلوم بتحميللل الملفلا ت ملن النللترنت ‪،‬‬
‫يستكمل أيضا تحميل الملفا ت إذا كنا بدأنا تحميلهللا و توقفنللا فللي وقللت سللابق‬
‫ةثم أردنا إكمال التحميل‪.‬‬

‫‪ 16.2‬أقسام المشروع‬
‫المشروع مقسم إلى ةثلةثة أقسام ‪:‬‬

‫‪ .١‬مدير التحميل ‪:‬‬

‫القسم الول هو برناملج مللدير التحميللل ‪ ، dlserver.pyc‬هللذا القسلم هلو‬


‫اللللذي يقلللوم فعليلللا بتحميلللل الملفلللا ت ملللن النلللترنت إللللى الجهلللاز ‪ ،‬أيضلللا‬
‫يستكمل التحميل ت التي توقفت قبل أن تنتهي ‪ ،‬نسللتطيع تشللغيل هللذا‬
‫البرنامج مثلما شغل أي برنامللج بللايثون ‪ ،‬نشللغل الطرفيللة و نكتللب المللر‬
‫التالي ‪:‬‬
‫‪python dlserver.pyc‬‬

‫إذا كنلللت تسلللتخدم نظلللام أوبونتلللو أو ملللاك فل تنلللس أن تسلللتخدم أملللر‬


‫‪ python3‬بلللللدل ‪ python‬كملللللا شلللللرحنا فلللللي اللللللدرس الثلللللالث ‪ ،‬ل يقلللللوم‬

‫‪8٢‬‬
‫البرنامج بأي شيء حين نشغله و ل يبدأ تحميل أي ملف ‪ ،‬بعد التشغيل‬
‫ينتظر مدير التحميل أوامر من برنامج آخر يرسل له الروابط و الملفا ت‬
‫اللي يحملها ‪ ،‬البرنامج الثاني هو القسم الثاني من المشروع‪.‬‬

‫‪ .٢‬برنامج التحكم ‪:‬‬

‫القسم الثاني من المشروع هو برنامج التحكم ‪ ،‬وظيفة برنامللج التحكللم‬


‫هللي أخللذ أوامللر مللن المسللتخدم و إرسللالها إلللى مللدير التحميللل ‪ ،‬الوامللر‬
‫تطللللللب ملللللن ملللللدير التحميلللللل أن يبلللللدأ التحميل ت جديلللللدة أو يوقلللللف‬
‫تحميل ت جارية ‪ ،‬في هذا المشروع خمسة أوامر ‪:‬‬

‫◦ ‪: get‬‬

‫أول أمر التحميل ‪ ، get‬هذا المر يطلب من مدير التحميل أن يحمللل‬


‫رابطللا ‪ ،‬نسللتخدم هللذا المللر بللأن نكتللب المللر ‪ get‬بعللده مسللافة ةثللم‬
‫رابط الملف الذي نريد تحميله ‪ ،‬مثل ‪:‬‬
‫‪get http//www.google.com/images/logo.gif‬‬

‫مللدير التحميللل يللدعم التحميللل باسللتخدام بروتوكللول ‪ http‬و ‪https‬‬


‫فقط ‪ ،‬بالضافة إللى ذللك فلإن سلرعة تحميلل المللف الواحلد محلددة‬
‫بقيمة ‪ ١٠‬كيلو بايت لكل ةثانية كحد أقصى حتى يسهل على الللدارس‬
‫ملحظة الملفا ت حال تحميلها‪.‬‬

‫◦ ‪: info‬‬

‫المر الثاني هو ‪ ، info‬هذا المر يجعل ملدير التحميللل يرسلل رسلالة‬


‫لبرنامللج التحكللم فيهللا معلومللا ت عللن الحميل ت اللللي تعمللل ‪ ،‬يعطينللا‬
‫رقللم كللل تحميللل و اسللم الملللف و نسللبة التحميللل المنتهيللة ‪ ،‬يعطينللا‬
‫أيضلللا إجملللالي علللدد التحميل ت الجاريلللة ‪ ،‬اسلللتخدام هلللذا الملللر هلللو‬
‫مجرد كتابة كلمة ‪: info‬‬
‫‪info‬‬

‫‪8٣‬‬
‫◦ ‪: del‬‬

‫المر الثالث هو أملر الحلذف ‪ ، del‬هلذا الملر يحلذف تحميللل ‪ ،‬نكتلب‬


‫بعد المر مسافة ةثم رقم التحميل ‪ ،‬أرقام التحميل ت تبللدأ مللن العللدد‬
‫‪ ، ٠‬هذا يعني أن أول تحميل نضيفه يكون رقمه ‪ ٠‬و التحميللل الثللاني‬
‫يكون رقمه ‪ ، ١‬إذا أردنا حذف التحميل الول مثل نكتب ‪:‬‬
‫‪del 0‬‬

‫إذا أرسلللنا أمللر الحللذف فللإن مللدير التحميللل يرسللل لبرنامللج التحكللم‬
‫رسالة يذكر فيها إذا تم حذف التحميل بنجاح أم أن هناك خطأ‪.‬‬

‫نسلللتطيع أن نعطلللي أملللر الحلللذف اسلللم المللللف أو رابلللط المللللف بلللدل‬


‫الرقللللللللللللم ‪ ،‬مثل إذا قمنللللللللللللا بتحميللللللللللللل الصللللللللللللورة مللللللللللللن الربللللللللللللاط‬
‫‪ http//www.google.com/images/logo.gif‬فلللإن اسلللم المللللف هلللو‬
‫‪ ، logo.gif‬المران التاليان يقومان بنفس الشيء تماما ‪:‬‬
‫‪del http//www.google.com/images/logo.gif‬‬
‫‪del logo.gif‬‬

‫◦ ‪: disconnect‬‬

‫المللر الرابللع فللي المشللروع هللو أمللر الفصللل ‪ ، disconnect‬هللذا المللر‬


‫يغلق برنامج الوامر لكن مدير التحميل يكمل عمليا ت التحميللل و ل‬
‫يتوقف عن العمل ‪ ،‬صيغة المر هي كتابة كلمة ‪ disconnect‬فقط ‪:‬‬
‫‪disconnect‬‬

‫إذا أغلقنللا برنامللج التحكللم يمكللن تشللغيله مللرة أخللرى لرسللال أوامللر‬
‫أخرى‪.‬‬

‫◦ ‪: exit‬‬

‫المر الخير هو أملر الخلروج ‪ ، exit‬هلذا الملر يوقلف كلل التحميل ت‬


‫و يغلللق مللدير التحميللل و برنامللج التحكللم معللا ‪ ،‬إذا حاولنللا تشللغيل‬
‫برنامج التحكم و مدير التحميل مغلق تظهر لنا رسائل خطأ ‪ ،‬صلليغة‬

‫‪8٤‬‬
‫هذا المر هي كتابة كلمة ‪ exit‬فقط ‪:‬‬
‫‪exit‬‬

‫‪ .٣‬وحدة التصال بمدير التحميل‬

‫القسم الثالث من مشروعنا هو وحللدة فللي الملللف ‪ ، dlc.pyc‬هللذي الوحللدة‬


‫تللوفر دوال للتصللال بمللدير التحميللل و إرسللال الوامللر للله و اسللتقبال الرسللائل‬
‫منه ‪ ،‬نستخدم هلذه الوحللدة فللي برنامللج التحكللم ‪ ،‬قبللل اسللتخدام أي دالللة فللي‬
‫الوحدة يجب أن نستوردها باستخدام أمر ‪ import‬كما يلي ‪:‬‬
‫‪import dlc‬‬

‫توفر لنا الوحدة أربعة دوال ‪:‬‬

‫‪: connect .١‬‬

‫الدالللة الولللى هللي دالللة التصللال بمللدير التحميللل ‪ ،‬يجللب أن نسللتدعي‬


‫هللذي الدالللة قبللل إرسللال أو اسللتقبال أي شلليء بيللن برنامللج التحكللم و‬
‫مدير التحميل ‪ ،‬ل تأخذ أي قيمة و يمكننا استدعاءها بهذا الشكل ‪:‬‬
‫)( ‪dlc.connect‬‬

‫‪: send .٢‬‬

‫الدالللة الثانيللة هللي دالللة الرسللال ‪ ، send‬هللذه الدالللة ترسللل أمللرا لمللدير‬
‫التحميللل و مللدير التحميللل ينفللذ المللر ‪ ،‬الدالللة تأخللذ العبللارة الللتي نريللد‬
‫إرسللللللالها لمللللللدير التحميللللللل ‪ ،‬نسللللللتطيع مثل إرسللللللال المللللللر ‪ info‬بهللللللذا‬
‫الستدعاء ‪:‬‬
‫) '‪dlc.send ( 'info‬‬

‫‪: recv .٣‬‬

‫الدالة الثالثة دالة الستقبال ‪ ،‬نستخدم هذه الدالللة لسللتقبال رسللالة مللن‬
‫مدير التحميل ‪ ،‬كما شرحنا سابقا فإن لدينا خمسة أوامر في المشروع ‪،‬‬
‫في أمرين من هذه الوامر الخمسة يأتينلا رد ملن ملدير التحميللل ‪ ،‬الملر‬
‫‪ info‬يرسل إلينا ردا يحوي معلومللا ت عللن التحميل ت الجاريللة ‪ ،‬أمللر ‪del‬‬

‫‪85‬‬
‫يرسل إلينا ردا يخبرنا إن كان حذف الرابط تم بنجاح أو ل ‪ ،‬هذه الدالللة‬
‫ل تأخللذ أي قيمللة ‪ ،‬نسللتطيع حفللظ الرسللالة فللي متغيللر الللتي نتلقاهللا مللن‬
‫ملللدير التحميلللل فلللي متغيلللر ‪ ،‬نسلللتطيع تخزيلللن اللللرد فلللي متغيلللر اسلللمه‬
‫‪ message‬بهذا الشكل ‪:‬‬
‫)( ‪message = dlc.recv‬‬

‫بعدها يحوي المتغير ‪ message‬الرسالة التي أرسلها مدير التحميل‪.‬‬

‫‪: disconnect .٤‬‬

‫الدالة الرابعلة فلي الوحلدة هلي داللة الفصلل ‪ ،‬هلذه الداللة تفصلل برناملج‬
‫الوامللر عللن مللدير التحميللل و ل يمكللن التواصللل مللع مللدير التحميللل بعللد‬
‫اسللتدعاء هللذه الدالللة ‪ ،‬نسللتدعي هللذه الدالللة قبللل الخللروج مللن برنامللج‬
‫الوامر ‪ ،‬ل تأخذ هذه الدالة أي قيمة و يمكن استدعاءها بهذا الشكل ‪:‬‬
‫)( ‪dlc.disconnect‬‬

‫بإمكاننا تمثيل التواصل بين أجزاء المشروع بهذا الرسم ‪:‬‬

‫الصورة ‪ :٢5‬تمثيل التواصل بين أجزاء المشروع و النترنت و الحاسب‬

‫‪86‬‬
‫‪ 16.3‬مهمة المشارك في المشروع‬
‫مهملللة المشلللارك هلللي برمجلللة القسلللم الثلللاني ملللن المشلللروع و هلللو برناملللج‬
‫التحكللم ‪ ،‬سللنعطيكم برنامللج مللدير التحميللل جللاهزا و قللابل للتشللغيل لكنلله كمللا‬
‫شرحنا ل يعمل إل بأوامر تلأتي ملن برناملج التحكلم ‪ ،‬أيضلا وحلدة ‪ dlc‬سلتكون‬
‫جاهزة ليستخدمها المشارك خلل كتابته لبرنامللج التحكللم فللي إرسللال الوامللر‬
‫و استقبال الرسللائل ‪ ،‬بإمكللان المسللتخدم تحميللل أي ملللف إذا كللان الللبروتوكول‬
‫المسللتخدم هللو ‪ http‬أو ‪ https‬لكللن لتسللهيل المللر علللى الللدارس تللم رفللع ةثلث‬
‫ملفا ت صور بإمكللان الللدارس تحميلهللا للتأكللد مللن عمللل المشللروع تجللدونها فللي‬
‫الروابط التالية ‪:‬‬

‫الصورة الولى‬

‫الصورة الثانية‬

‫الصورة الثالثة‬

‫‪8٧‬‬
‫‪ 16.4‬ملخص المشروع‬
‫• مدير تحميل‪.‬‬

‫• أقسام المشروع ‪:‬‬

‫◦ مدير التحميل‪.‬‬

‫◦ برنامج الوامر‪.‬‬

‫◦ وحدة التصال مع مدير التحميل‪.‬‬

‫• أوامر المشروع ‪:‬‬

‫◦ ‪get‬‬
‫◦ ‪info‬‬
‫◦ ‪del‬‬
‫◦ ‪disconnect‬‬
‫◦ ‪exit‬‬
‫• مهمة المشارك هي كتابة برنامج الومر‪.‬‬

‫‪88‬‬
‫‪ 16.5‬رحل المشروع‬
‫في هذا الجزء سليتم علرض حلل المشلروع فلي أقسلام ‪ ،‬كلل قسلم يحلوي‬
‫جزء من الحل‪.‬‬

‫‪ .١‬إرسال الوامر ‪:‬‬

‫أول شللليء نحتلللاجه هلللو إرسلللال الواملللر ‪ ،‬علينلللا أول أخلللذ الواملللر ملللن‬
‫المسلللتخدم بعلللدها نرسلللل الواملللر باسلللتخدام الداللللة ‪ send‬ملللن الوحلللدة‬
‫‪ ، dlc‬تللللذكر أننللللا ل نسللللتطيع اسللللتخدام أي دالللللة مللللن الوحللللدة إل بعللللد‬
‫استيرادها بالمر ‪ ، import‬أيضا ل نستطيع إرسال و استقبال أي شلليء‬
‫ملللع ملللدير التحميلللل إل بعلللد التصلللال بللله باسلللتخدام الداللللة ‪، connect‬‬
‫استيراد الوحدة و التصال بها يجب أن يكونا أول شيئين في برنامجنا‬
‫‪ ،‬نستطيع ترتيب خطوا ت برنامجنا كما يلي ‪:‬‬

‫◦ استيراد وحدة ‪.dlc‬‬

‫◦ التصال بمدير التحميل‪.‬‬

‫◦ طلب المر من المستخدم‪.‬‬

‫◦ إرسال المر لمدير التحميل‪.‬‬

‫نستطيع ترتيب الخطوا ت السابقة في البرنامج التالي ‪:‬‬


‫‪import dlc‬‬
‫)( ‪dlc.connect‬‬
‫)( ‪message = input‬‬
‫) ‪dlc.send ( message‬‬

‫ل يقلللوم البرناملللج باسلللتقبال الرسلللائل ملللن ملللدير التحميلللل و ل يسلللتمر‬


‫بطللللب الواملللر ملللن المسلللتخدم بلللل يطللللب أملللرا واحلللدا و يرسلللله ةثلللم‬
‫يتوقلللف ‪ ،‬علينلللا تعلللديل البرناملللج ليلللدعم اسلللتقبال الرسلللائل و ليسلللتمر‬
‫بطلب الوامر من المستخدم حتى يكتب المستخدم أمرا للخروج‪.‬‬

‫‪8٩‬‬
‫‪ .٢‬استقبال الرسائل و قطع التصال ‪:‬‬

‫لللدينا خمسللة أوامللر فللي البرنامللج ‪ ،‬أمللر ‪ get‬يتللم إرسللاله فقللط و يتكفللل‬
‫مدير التحميل بالتنفيذ دون أي عملية أخرى من برنامللج الوامللر ‪ ،‬علينللا‬
‫في بقية الوامر تنفيذ عمليا ت أخرى فللي برنامللج الوامللر ‪ ،‬المللران ‪del‬‬
‫و ‪ info‬يجعلن ملللدير التحميلللل يرسلللل رسلللالة لبرناملللج التحكلللم ‪ ،‬علينلللا‬
‫اسلللللتقبال الرسلللللالة و طباعتهلللللا إذا صلللللادفنا أحلللللدهما ‪ ،‬الملللللران ‪ exit‬و‬
‫‪ disconnect‬يقومان بالخروج من برنامج التحكم ‪ ،‬علينللا أن نخللرج مللن‬
‫برنامللج التحكللم إذا صللادفنا أحللدهما ‪ ،‬لحللظ فللي حالللة اسلللتخدام أمللر‬
‫الحلذف أن المسلتخدم يكتلب الملر ‪ del‬و يكتلب بعلده رقلم التحميللل أو‬
‫اسم الملف أو رابللط الملللف لكننللا نريللد فقللط التأكللد أن أول ةثلةثللة أحللرف‬
‫هي المر ‪ ، del‬نستطيع ترتيب الكلم السابق في الخطوا ت التالية ‪:‬‬

‫◦ إذا كان المر ‪ info‬أو كان يبدأ بالحرف ‪: del‬‬

‫▪ استقبل رسالة‪.‬‬

‫▪ اطبع الرسالة‪.‬‬

‫◦ إذا كان المر ‪ exit‬أو ‪: disconnect‬‬

‫▪ اقطع التصال‪.‬‬

‫نقللوم بللالوامر السللابقة بعللد أخللذ المللر مللن المسللتخدم ‪ ،‬لحللظ أننللا فللي‬
‫المر ‪ del‬ل نفحص كللل المللر بللل فقللط نفحللص أنلله يبللدأ بللالحرف ‪، del‬‬
‫نسللللتطيع القيللللام بللللذلك بللللأن نعامللللل العبللللارة الللللتي يللللدخلها المسللللتخدم‬
‫كمصفوفة و نجمع أول ةثلةثة أحرف فيها ‪ ،‬بهذا الشللكل نكللون قللد أخللذنا‬
‫أول ةثلةثللة أحللرف فقللط مللن العبللارة و نفحللص إذا كللانت ‪ del‬و نحللدد مللا‬
‫إذا احتجنا استقبال رسالة أم ل‪.‬‬

‫نستطيع إضافة الخطوا ت السابقة في البرنامج اللذي كتبنلاه فلي القسلم‬

‫‪٩٠‬‬
‫الول كما يلي ‪:‬‬
‫‪import dlc‬‬
‫)( ‪dlc.connect‬‬
‫)( ‪message = input‬‬
‫) ‪dlc.send ( message‬‬

‫]‪start = message[0] + message[1] + message[2‬‬


‫‪if message == 'info' or start == 'del' :‬‬
‫)( ‪receive = dlc.recv‬‬
‫) ‪print ( receive‬‬
‫‪elif message == 'exit' or message == 'disconnect' :‬‬
‫)( ‪dlc.disconnect‬‬

‫لحظ أننا عرفنا متغيرا و حفظنا فيه أول ةثلةثة أحرف من العبارة الللتي‬
‫أدخلها المستخدم لنفحص إذا كان المر ‪ del‬أم ل‪.‬‬

‫بقيت مشكلة أن البرنامج يرسل أمرا واحدا و يتوقلف حلتى للو للم يكلن‬
‫الملللر ‪ exit‬و ل ‪ ، disconnect‬علينلللا أن نجعلللل البرناملللج يسلللتمر بطللللب‬
‫المر من المستخدم حتى يكتب المستخدم المر ‪ exit‬أو ‪.disconnect‬‬

‫‪ .٣‬الستمرار في طلب الوامر من المستخدم ‪:‬‬

‫فلللي القسلللم السلللابق جعلنلللا البرناملللج يسلللتقبل الرسلللائل أو يخلللرج فلللي‬


‫الوامللر الللتي تناسللب كللل عمليللة ‪ ،‬المشللكلة الباقيللة هللي السللتمرار فللي‬
‫طلب الوامر من المستخدم ‪ ،‬نتوقلف علن طللب الوامللر ملن المسللتخدم‬
‫فقللط إذا صللادفنا المللر ‪ disconnect‬أو المللر ‪ ، exit‬الحلقللا ت تسللتخدم‬
‫للتكرار و بما أننا نكرر عمليلة مللا و هللي طللب أمللر ملن المسللتخدم فعلينللا‬
‫اسللتخدام حلقللة ‪ ، while‬مللا نكللرره هللو طلللب المللر و إرسللاله و اسللتقبال‬
‫الرسللائل فللي حللال كللان المللر ‪ del‬أو ‪ ، info‬باختصللار نكللرر كللل العلميللا ت‬
‫التي قمنا بها في القسلم السلابق ملن الحلل باسللتثناء اسلتيراد الوحلدة و‬
‫التصللال بمللدير التحميللل ‪ ،‬إذا علينللا أن نضللع كللل الوامللر الباقيللة داخللل‬
‫حلقللة ‪ ، while‬يبقللى لنللا شللرط الحلقللة ‪ ،‬نريللد أن تتوقللف الحلقللة إذا كللان‬
‫المللللر ‪ disconnect‬أو ‪ ، exit‬الشللللرط الللللذي نكتبلللله فللللي الحلقللللة يجعلهللللا‬

‫‪٩١‬‬
‫تسلتمر لكلن الشللرط الللذي ذكرنلاه هلو شللرط التوقلف ‪ ،‬نسللتطيع أن نقللول‬
‫أننللا نريللد أن تسللتمر الحلقللة إذا لللم يكللن المللر ‪ disconnect‬و ل ‪، exit‬‬
‫نستطيع كتابة شرط استمرار الحلقة في لغة بايثون بهذا الشكل ‪:‬‬
‫'‪message != 'disconnect' and message != 'exit‬‬

‫يكون البرنامج بعد التعديل كما يلي ‪:‬‬


‫‪import dlc‬‬
‫)( ‪dlc.connect‬‬

‫'' = ‪message‬‬
‫‪while message != 'disconnect' and message!='exit' :‬‬
‫)( ‪message = input‬‬
‫) ‪dlc.send ( message‬‬

‫]‪start = message[0] + message[1] + message[2‬‬


‫‪if message == 'info' or start == 'del' :‬‬
‫)( ‪receive = dlc.recv‬‬
‫) ‪print ( receive‬‬
‫‪elif message == 'exit' or message == 'disconnect' :‬‬
‫)( ‪dlc.disconnect‬‬

‫لحللللظ أننللللا عرفنللللا المتغيللللر ‪ message‬قبللللل الحلقللللة ‪ ،‬هللللذا لننللللا قمنللللا‬


‫باستخدام المتغير في شرط الحلقة و ل يمكللن اسللتخدام متغيللر إل بعللد‬
‫تعريفه‪.‬‬

‫هكللذا يسللتمر البرنامللج فللي طلللب الوامللر مللن المسللتخدم طللوال الللوقت حللتى‬
‫يكتللب المسللتخدم أحللد أمللري الخللروج ‪ disconnect‬أو ‪ ، exit‬الحللل السللابق هللو‬
‫طريقللة تعطللي النتيجللة المطلوبللة و قللد يختلللف الحللل مللن مبرمللج لخللر لكللن‬
‫الفكرة مقاربة على الغلب بين مختلف الحلول‪.‬‬

‫‪٩٢‬‬
‫خاتمة الكتاب‬
‫هذا الكتاب حلاول اللتركيز علللى الفكلار الساسللية للبرمجلة بشلكل علام و‬
‫لم تتطرق الدروس لميزا ت تخص لغة بللايثون بالتحديللد ولللم تشللرح الوحللدا ت‬
‫المتلللوفرة فلللي هلللذه اللغلللة ‪ ،‬عللللى الغللللب يتسلللاءل اللللدارس فلللي نهايلللة هلللذه‬
‫الللدروس ‪ :‬مللاذا بعللد ؟ مللا هللي الخطللوة التاليللة ؟ كيللف أطللور مللن نفسللي فللي‬
‫مجال البرمجة ؟‬

‫بعلللد تعلملللك لساسللليا ت البرمجلللة فلللالخطوة التاليلللة هلللي إتقلللان إحلللدى لغلللا ت‬
‫البرمجللة ‪ ،‬أكمللل تعلمللك للغللة بللايثون و تعلللم ميزاتهللا ‪ ،‬هللذه السلسلللة لللم تللذكر‬
‫الكثير من أوامر بايثون و الميزا ت المتوفرة فيها ‪ ،‬لللن تحتللاج لللدروس مفصلللة‬
‫بعد هلذا فهللذه الللدروس غطللت المللور الساسللية و كللل مللا تحتللاجه هللو دروس‬
‫مختصلللرة تلللذكر الميلللزا ت و كيفيلللة اسلللتخدامها بشلللكل سلللريع يلللوفر وقتلللك ‪،‬‬
‫تستطيع أن تختار لغة أخرى غير بايثون و إن كانت بلايثون أفضلل حيلث أنلك‬
‫بدأ ت تعلمها لكن في كل الحوال تذكر أن تركز على لغة برمجة واحدة فقلط ‪،‬‬
‫ل تشتت تفكيرك في عدة لغا ت تجعلك تفكر في الختلف بينها بدل أن تركلز‬
‫فلللي الفكلللار و كيفيلللة بنلللاء البرناملللج و إنجلللاز المهلللام فلغلللا ت البرمجلللة عللللى‬
‫اختلفها تحوي شبها كبير و كلها تؤدي نفس الوظيفة‪.‬‬

‫بعللد إتقانللك لحللدى لغللا ت البرمجللة ابللدأ تعلللم الوحللدا ت المتللوفرة فيهللا ‪ ،‬خلل‬
‫الدروس عرضنا كيفية استخدام الوحدا ت ‪ ،‬فكر في مهمة معينة و ابحث عللن‬
‫الوحدة التي تقللوم بهللذه المهمللة ‪ ،‬تعلللم تلللك الوحللدة و اسللتخدمها للقيللام بهللذه‬
‫المهمللة ‪ ،‬فللي مشللروع السلسلللة مثل كللان مللدير التحميللل يحاّمللل الملفللا ت مللن‬
‫النترنت و قلد تلم اسللتخدام وحلدة ‪ urllib‬للقيلام بلذلك ‪ ،‬بإمكانلك تعللم كيفيلة‬
‫تحميل الملفا ت باستخدامها‪.‬‬

‫بعلللد تعللللم علللدد ملللن الوحلللدا ت بإمكانلللك النتقلللال للغلللا ت البرمجلللة المختلفلللة و‬
‫تعلمها ‪ ،‬تعلمك للغة برمجة يعتمد على ما تريد القيام بلله فبعللض اللغللا ت تكللون‬
‫مصممة للقيام بمهمة معينة و تكون أسهل من اللغا ت الخللرى فللي تلللك المهمللة‬
‫بالتحديد‪.‬‬

‫في أمان ا‬
‫أخوكم محمد الغافلي‬

You might also like