محتويات الكتاب

  1. مقدمة الكتاب
  2. نبذة عن لغة بايثون
  3. المبادئ الأساسية للغة بايثون
  4. التعامل مع البيانات التجميعية
  5. اتخاذ القرارات
  6. حلقات التكرار
  7. كتابة الدوال
  8. التعامل مع الملفات
  9. التعامل مع المكتبات
  10. البرمجة الكائنية في بايثون
  11. برمجة واجهة المستخدم

المبادئ الأساسية للغة بايثون

بعد ان تأكدنا من ان نظام التشغيل الذي نعمل عليه يحتوي على احدى اصدارات لغة بايثون ذو الإصدارة الثالثة يمكننا الان ان نبدأ رحلة التعلم والتى اتمنى ان تكون حافلة بالمتعة والفائدة.

أهداف الفصل

عند اتمام هذا الفصل يجب ان يكون لديك المام بعدة مبادئ اساسية عن لغة بايثون والتي من اهمها:

  1. معرفة المقصود بالبرنامج والمبرمج
  2. طريقة كتابة المتغيرات
  3. طريقة تدوين الملاحظات على الكود البرمجي
  4. كيفية طباعة نص على شاشة الكمبيوتر
  5. الفرق بين استخدام الاحرف الصغيرة والكبيرة في كتابة الكود البرمجي.
  6. اجراء العمليات الحسابية الاساسية
  7. انواع البيانات الاساسية في لغة بايثون.
  8. القاعدة التي تحكم عدد المسافات الفارغة المتروكة قبل بداية كل سطر برمجي

تعريف البرنامج

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

طريقة كتابة برنامج بلغة بايثون

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

هناك عدة طرق يمكن للمبرمج ان يتخاطب بها مع مفسر بايثون ومن أهم هذه الطرق:

اولاً: الطريقة التفاعلية

تتطلب الطريقة التفاعلية كتابة التعليمات في بيئة برمجية خاصة معدة لهذا الغرض والتي يشار اليها في اللغة الانجليزية بـ REPL وهي اوائل الكلمات الانجليزية Read Evaluate Print Loop والتي تعني ان هذه البيئة البرمجية تقوم بقراءة التعليمات التي يكتبها المبرمج اولا ومن ثم تقوم بتنفيذها ومن ثم تطبع النتائج على الشاشة وأحيراً ترجع مؤشر الكتابة مرة اخرى للمبرمج ليكتب تعليمات جديدة. ويمكن الدخول لبيئة بايثون التفاعلية من خلال كتابة كلمة بايثون في محث اوامر الجهاز الذي تعمل عليه كما هو موضح في الفيديو التالي:

هناك بيئات تفاعلية محسنة للغة بايثون غير تلك التي شاهدتها في الفيديو السابق مثل بيئة IPython و Spyder وغيرها من البيئات التفاعلية الاخرى التي لا يسع المجال للحديث عنها هنا.

تمارين استيعابية

  1. قم بفتح البيئة التفاعلية لمفسر بايثون المنصب على حهازك واكتب العمليات الحسابية التالية:
    1. اكتب 3+5 ومن ثم اضغط على زر الادخال
    2. اكتب 4*2 ومن ثم اضغط على زر الادخال
    3. اكتب 2**3 ومن ثم اضغط على زر الادخال
  2. استكشف النتائج التي يعرضها لك مفسر بايثون لعلك تهتدي للرموز التي يستخدمها بايثون لإجراء عملية الجمع والضرب والرفع للأس؟
  3. قم بكتابة التعليمات السابقة في البيئة التفاعلية التالية والتي تسمى PyScript REPL. هذه البيئة التفاعلية للغة بايثون تم تصميمها للعمل في متصفح الانترنت بشكل مباشر دون الحاجة الي تنصيب مفسر بايثون على الجهاز الذي تعمل عليه. اتبع الخطوات التالية:
    1. ادخل العملية الحسابية كما هو معطى في الفقرة الاولى

    2. اضغط على زر التشغيل في اقصى اليمين (تأكد من استخدامك للارقام العربية 1,2,3,4,5 وليس الارقام الهندية ١,٢,٣,٤ عند كتابتك للعمليات الحسابية في البيئة التفاعلية ادناه)

ثانياً: الطريقة التقليدية (كتابة الكود داخل ملف)

تعتمد هذه الطريقة على كتابة التعليمات او الكود البرمجي في ملف نصي ينتهي اسمه بالاحقة py. ومن ثم يتم تشغيل هذا الملف من قبل مفسر بايثون ليقوم بقراءته وتنفيذ التعليمات الموجدة به. وتعتمد طريقة تشغيل هذا الملف بحسب نوع محرر النصوص المستخدم في تحرير و كتابة الكود البرمجي داخل الملف. فهناك محررات بسيطة مثل notepad في نظام ويندوز و gedit في نظام ماك ولينكس حيث تقتصر وظيفة هذه المحررات على كتابة الكود البرمجي داخل الملف فقط. اما عملية تشغيل الملف فتتم من خلال محرر الاوامر الموجود على الجهاز الذي نعمل عليه كما هو موضح في الفيديو التالي:
أما اذا تم استخدام محررات متقدمة ومخصصة لكتابة الاكواد البرمجية مثل pycharm و visual studio code . فإن عملية تشغيل ملفات بايثون تتم من داخل المحرر نفسه دون الحاجة الى الذهاب لمحث اوامر الجهاز الذي نعمل عليه لتشغيل الملف كما هو الحال مع المحررات البسيطة. يطلق على هذه المحررات المتقدمة "بيئة التطوير المتكاملة" IDE (Integrated Development Environment). الفيديو التالي يوضح طريقة استخدام visual studio code لكتابة وتشغيل كود برمجي بلغة بايثون.

ثالثاً: الطريقة الشبه تفاعلية

تعتبر هذه الطريقة خليط بين الطريقة التفاعلية والطريقة المعتمدة على كتابة الكود داخل ملف. وتتمثل هذه الطريقة في دفتر ملاحظات جوبتر حيث يتم كتابة الكود البرمجي في ملف ينتهي باللاحقة ipynb. مقسم الى خلايا بحيث يمكن تنفيذ كل خلية مكتوب فيها كود برمجي على حده. للتعرف اكثر على طريقة كتابة الكود في بيئة دفتر ملاحظات جوبتر يمكنك الرجوع الى الدليل الخاص باستخدام دفتر ملاحظات جوبتر الموجود في الملحقات.

العمليات الحسابية

بعد أن تعلمنا كيف نتخاطب مع مفسر بايثون بثلاث طرق مختلفة سوف نكمل هنا ما تعلمته في التمارين الاستكشافية حول عملية إجراء العمليات الحسابية. فبايثون يمكن ان يعمل كآلة حاسبة ولكنه يستخدم رموزاً مختلفة قليلاً عن تلك الموجودة في الآلة الحاسبة.
ملاحظة: اضغط على زر التشغيل الأخضر في اقصى اليمين لإطهار ناتج العملية الحسابية. خذ فرصتك في الاستكشاف وتغيير الارقام المستخدمة في العملية الحسابية.
اولاً: تسخدم العلامة "+" لاجراء عمليات الجمع
مثال:

5+4

ثانياً: تسخدم علامة "-" (الشرطة الاعتيادية وليست السفلية) لاجراء عمليات الطرح
مثال:

5-4

ثالثاً: استخدام علامة النجمة "*" لاجراء عمليات الضرب
مثال:

5*4

رابعاً: تستخدم الشرطة المائلة "/" لاجراء عمليات القسمة
مثال:

5/4

خامساً: تستخدم النجمتين "**" لرفع عدد لأس أو قوة معينه
مثال:

5**4

في المثال السابق تم رفع العدد 5 للقوة او الاس 4

سادساً: تستخدم الشرطتين المائلتين "//" لحساب ناتج القسمة بعد اهمال الباقي
مثال:

5//4

سابعاً: تستخدم علامة النسبة المئوية "%" لحساب باقي القسمة
مثال:

5%4

قواعد الاسبقية في تنفيذ العمليات الحسابية

كما هو متعارف عليه في علم الرياضيات فان عمليتي القسمة والضرب تسبق كلا من عمليتي الطرح والجمع وعملية الاس تسبق عمليتي الضرب والقسمة الا اذا استخدمت الاقواس لتحديد اسبقية العمليات الحسابية. وهذه امثلة توضح هذا المفهوم:

10/2-1
10**2/5+4
(3+4)*2
15/(6-3)

المتغيرات

المتغيرات هي اسماء تستخدم للدلالة على قيم البيانات التي يراد حفظها في ذاكرة الكمبيوتر. واستخدام المتغيرات في كتابة الأكواد البرمجية ذو أهمية قصوى بحيث لا يكاد يخلو برنامج من وجود متغير واحد أو أكثر وذلك للأسباب التلية:

  1. تسهل على المبرمج تذكر البيانات باسماء يسهل حفظها بدلاً من استخدام قيم البيانات ذاتها. فمثلا بدلا من استخدام ثابت الدائرة 3.14159 في كل مرة احتاج الي استخدامه في عملية حسابية يمكن ان اسند قيمة هذا الثابت الي المتغير pi ومن ثم استخدام الحرفين pi للدلالة على قيمة الثابت في العملية الحسابية كما في المثال التالي:
    pi=3.14159 pi*2
    في المثال السابق مجرد كتابة pi في اي عملية حسابية راح يقوم بايثون بتعويض القيمة 3.14159 المسندة للمتغير pi في العملية الحسابية. هل لاحظت مقدار السهولة في استخدام المتغير سواءً كانت على مستوى المجهود المستخدم في الكتابة او على مستوى سهولة التذكر. يجب ملاحظة ان عملية اسناد قيمة الى متغير تتم من خلال اختيار اسم مناسب للمتغير ومن ثم وضع علامة يساوي بعد الاسم واخيراً كتابة القيمة المراد اسنادها للمتغير كما هو موضح في المثال السابق.
  2. التعامل مع البيانات المختلفة: تسهل المتغيرات التعامل مع البيانات المختلفة مثل الأرقام، النصوص، القوائم، وغيرها، مما يجعل البرمجة أسهل وأكثر مرونة. كما هو موضح في المثال التالي:
    name="I am Al. " hobby="I like to play football" name+hobby
    اذا لم تستطع فهم الكود السابق فلا تقلق. كل ما عليك ادراكه الآن هو أن المتغيرات تستطيع الاحتفاظ ببيانات مختلفة. وسوف نتطرق الى الكيفية التي يتعامل بها بايثون مع البيانات النصية في فصول لاحقة ان شاء الله.

كما يجب التنويه إلى أن قيمة pi قابلة للتغيير. فعند تكرار المثال السابق باستخدام القيمة 10 فإن pi اﻵن تصبح تشير للقيمة 10 عوضاً عن القيمة 3.14159 كما في المثال التالي:

pi=3.141595 pi=10 pi

القواعد التي تحكم كتابة اسماء المتغيرات

ان لغة بايثون تتطلب التقيد بقواعد اساسية عند كتابة أسماء المتغيرات وتتلخص هذه القواعد فيما يلي:

  1. لا يمكن استخدام اي رمز في كتابة المتغيرات عدا الاحرف والارقام والشرطة السفلية. كما في الامثلة التالية
    y_2=5 y_2
    y$="Saeed" y$
    y&="Waleed"
    لاحظ انه عند استخدامنا للرمزين $ و & كجزء من اسم المتغير فان مفسر بايثون اعطانا رسالة بوجود خطأ في التركيب اللغوي "Invalid syntax"
  2. المتغيرات يجب ان تبدأ بحرف او شرطة سفلية. عدا ذلك فان مفسر بايثون يعطي رسالة بوجود خطأ. وهذه بعض الامثلة على هذه القاعدة:
    number=20 number
    _number=30 _number
    2y=5 2y
    لاحظ ان في المثال الاخير حاولنا كتابة متغير يبدأ اسمه برقم 2 لكن مفسر بايثون رفض ذلك واعطانا رسالة تفيد بوجد خطأ في التركيب اللغوي "invalid syntax"
  3. يمكن استخدام الارقام في كتابة أسماء المتغيرات ولكن لايمكن استخدامها في بداية الاسم كما في الامثلة التالية:
    number2=7 number2
    one2one=1 one2one
  4. أسماء المتغيرات يمكن ان تكون حرف كما وضحنا سابقا بالمتغير x او كلمة كما وضحنا ذلك بالمتغير name او مجموعة كلمات مربوطة بشرطة سفلية كما في المثال التالي:
    student_number=1234 student_number
    tag number= 444 tag number
    لاحظ انه عندما حاولنا كتابة اسم المتغير من كلمتين بترك فراغ يين الكلمتين رفض مفسر بايثون هذه العملية واعطانا رسالة مشابه للرسالة السابقة تفيد بوجود خطأ في التركيب اللغوي
  5. أسماء المتغيرات يجب ان لا تكون احد الكلمات المستخدمة في التركيب اللغوي للغة بايثون والجدول التالي يبين الكلمات المحجوزة من قبل لغة بايثون:
    continue class break assert as and
    exec except else elif del def
    import if global from for finally
    pass or nor lambda is in
    with while try return raise print
    yield
    pass=45 pass
    لاحظ عند استخدامنا لكلمة pass وهي كلمة مججوزة تستخدم في التركيب اللغوي للغة بايثون والتي سوف نتعرف على طريقة استخدامها لاحقا اعطانا مفسر بايثون رسالة بوجود خطأ في التركيب اللغوي

تمرين: اسند القيمة 100 للمتغير n. في سطر ثاني قم بتغير قيمة n الى القيمة 50. في سطر ثالث حاول ان تعرف القيمة النهائية للمتغير n ؟

# اكتب الكود هنا

تدوين الملاحظات

تسمح لغة بايثون كغيرها من لغات البرمجة الاخرى بان يكتب المبرمج ملاحظاته داخل الكود البرمجي من اجل ان تساعدة على تذكر وظيفة الكود البرمجي او من اجل اعطاء شروحات وافيه للمبرمجين الاخرين الذين قد يعملون على صيانة وتطوير الكود البرمجي في المستقبل. ويمكن كتابة ملاحظة من سطر واحد في اي مكان من الكود البرمجي ولكن بعد ان يسبق الملاحظة علامة هاش تاق (#). فعند كتابة علامة (#) في بداية السطر فان بايثون يعتبر جميع محتويات هذا السطر ملاحظات للمستخدم وليست كود برمجي كما موضح في المثال التالي:

# ملاحظات وتعليقات على الكود تكتب هنا x=10

فمفسر بايثون هنا يتعامل مع الجزء الذي يسبق علامة (#) على انه كود برمجي يتحاج الى تفسير والجزء الذي يقع بعد علامة (#) يعتبره ملاحظات وتعليقات للمبرمج لاتحتاج الى تفسير فيتجاهلها. كما يمكن كتابة ملاحظة متعددة السطور باستخادام علامة التنصيص الثلاثية كما في المثال التالي:

""" تعليقات وملاحظات تعليقات وملاحظات تعليقات وملاحظات """ x=10

وسوف نتحدث بشىئ من التفصيل عن انواع علامات التنصيص واستخداماتها ولكن ليس الان بل عند بدء الحديث عن البيانات النصية.

الطباعة على الشاشة

ان من المعتاد عند تعلم اي لغة برمجة جديدة ان يتم البدء بتعلم كيفية الطباعة على شاشة الكمبيوتر و ذلك لانها تعتبر وظيفة اساسية في جميع لغات البرمجة.ونحن سوف نسير على هذا العرف هنا على الرغم من تأخيرنا له قليلا. فامر الطباعة على الشاشة في بايثون يكون باسيتخدام الدالة ()print متبوعا بما يراد طباعته داخل قوسي الدالة. وبما اننا في بداية المشوار ولم نتطرق لمفوهم المتغيرات فسوف نبدأ بطباعة قيم رقمية اولا. فالسطر البرمجي التالي يقوم بطباعة القيمة 5 على الشاشة:

print(5)

تمرين: قم باسناد القيمة 25 للمتغير m وفي سطر ثاني قم بطباعة قمية m؟

# اكتب الكود هنا

الأحرف الكبيرة والأحرف الصغيرة

لغتنا العربية الجميلة لاتحوي على مفهوم الحروف الصغيرة والكبيرة بعكس ما هو موجود في اللغة الانجليزية. وبما ان لغة بايثون مكتوبة باللغة الانجليزية فان هذه اللغة تهتم بما اذا كان الكود البرمجي او جزء منه مكتوب بالاحرف الصغيرة او الكبيرة. فالمتغير b يتعامل معه مفسر بايثون على انه مختلف عن B. فعندما نسند القيمة 5 مثلا للمتغير b فان اسناد القيمة 10 للمتغير B لا يغير من قيمة b لان مفسر بايثون يتعامل معهما على انهما متغيرين مختلفين كما في المثال التالي:

b=5 B=10 print(b) print(B)

أنواع البيانات

العمليات المنطقية

ترك المسافات

ملخص الفصل

اسئلة استيعابية