0% found this document useful (0 votes)
26 views105 pages

Python Ingtro

Uploaded by

aissa
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
26 views105 pages

Python Ingtro

Uploaded by

aissa
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 105

‫مقدمة فففي‬

‫البرمجة عن‬

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

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

‫‪[email protected]‬‬
‫تم بحمد ا بتاريخ‬

‫‪١٤٣٣/٠٩/٠٤‬‬

‫‪٢٠١٢/٠٧/٢٣‬‬

‫هذا العمل منشور بموجب رخصة‬


‫المشاع البداعي‪ :‬نسب العمل – المشاركة بالمثل ‪٣,٠‬‬

‫‪http://creativecommons.org/licenses/by-sa/3.0/deed.en‬‬
‫الفتتاحية‬
‫انتشللللار الحواسللللب بمختلللللف أشللللكالها مللللن الحواسللللب الشخصللللية إلللللى‬
‫المحموللة إللى الهواتلف الذكيلة زاد ملن اهتملام النلاس بالبرمجلة و حلب تعلمهلا‬
‫خصوصا بين أولئك الذين في المرحلة الثانوية ‪ ،‬من أكثر المور الللتي شللدتني‬
‫و غيللري للبرمجللة هللي اللعللاب اللكترونيللة الللتي كنللت ألعبهللا و أتسللاءل كللثيرا‬
‫كيف يتم إنشاءها‪.‬‬

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

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

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

‫محمد الغافلي‬
‫‪[email protected]‬‬
‫نبذة عن الكاتب‬
‫بللدايتي فللي البرمجللة كللانت فللي الفيجللوال بيسللك فللي عللام ‪ ١٤٢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