يونيو 07، 2009

سلسلة بايثون للمبتدئين - 01

سواءا سمعت العالم كله يتحدث عن لغة البرمجة بايثون (python) و أردت أن تعرف عنها المزيد و ربما أردت تعلمها لكن لا تريد أن تخسر المزيد من شعر رأسك محاولا تعلم لغة جديدة، أو أنك تريد تعلم لغة برمجة مرنة و قوية تصلح للعامة و لا تتطلب منك أن تكون متخصصا، أو أنك تريد تعلم لغة برمجة تعمل على مجموعة من المنصات و تسمح لك بالتركيز على المهمة التي تريد إنجازها بدلا من ملاحقة الأخطاء الناتجة عن نسيان نقطة فاصلة في أخر سطر أو مزدوجة { أو قوص )، فستجد في لغة بايثون كل هذا و أكثر. و ستجد في هذه التدوينات كل الخطوات التي ستسمح لك باكتساب المهارات الأساسية بشكل عملي، بسيط و سريع.


1. كيف يمكن الحصول على لغة بايثون؟
لغة بايثون مفتوحة المصدر (بإمكان كل فرد أن يساهم في تطويرها) و هي مجانية يمكن تحميلها من الشبكة و تثبيتها كأي برنامج عادي. و هي متوفرة على منصة ويندوز، ماك و لينوكس. يمكن تحميلها من هنا.

ملاحظة 1: بايثون مثبت بشكل افتراضي على أغلب توزيعات لينوكس و على نظام ماك.


2. قمت بتثبتها، ثم ماذا بعد؟
كل ما تحتاجه هو تشغيل محرر IDLE المرفق مع لغة بايثون لتبدأ البرمجة.


3. أسسيات الكتابة بلغة بايثون:
  • يفضل أن تكتب دائما بالحروف اللاتينية الصغرى a,b,c لأن بايثون يميز بين الحروف الصغيرة و الكبيرة A,B,C. و بالتالي فإن كل من Name و name و NAME ترمز إلى محتوى مختلف.

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

  • هنالك بعض الكلمات المفتحية (Keywords) المحجوزة التي يجب عليك ألا تستخدمها أثناء تعريف المتغيرات.


4.كلمات مفتحية، أجزاء كود، تفريق بين حروف صغيرة و كبيرة، يبدوا أنني سأتوقف هنا.
انتظر!! قم بتحرير هذا السطر على المحرر التفاعلي IDLE:

print  "Hi, this is my first hello world using python"

رأيت، لقد قمت بعرض أول رسالة نصية :)



الأساسيات:

جيد، الآن سنبدأ بتعلم بايثون :)

قم بتحرير:
5 * 5

ثم:
160 - 3

ثم:
200/10

كما ترى إجراء العمليات الحسابية بسيط للغاية. ماذا عن الرسائل النصية؟
"I Love " + "Python!"
لقد قمنا بعرض رسالة مكونة من جزأين.


ماذا عن:
"7" * 3
النتيجة هي "777"

الآن حرر:
"777" - 7
نعم، حدث خطأ و ظهرت لك رسالة باللون الأحمر. ستتضح لنا الأمور بعد قليل.

في الأمثلة التي قمنا بتحريرها نلاحظ أحيانا استعمال "" و أحيانا لا. ما هو الفرق؟
عند إستخدام "" نقول لبايثون أن ما يجد بينهما هو محتوي نصي. فمثلا استخدمنا "I Love" و هي محتوي نصي، و نستنتج ذلك بكل بداهة. بينما عند إستخدام "777" فنحن نعرف أنه عدد لكن و رغم كونه كذلك في أعيننا إلا أنه محاط بـ "" مما يجعل بايثون يتعامل معه كنص.

> لذلك عندما تريد عرض أو التعامل مع المحتوى النصي يجب أن نحيطه بـ "" و المحتوى العددي يكتب بدونها.


ماذا عن العمليات الحسابية؟
بين الأعداد يمكن إستخدام علامة + - / * و علامات أخرى سنتعرف عليها عندما نحتاجها.
و بين المحتوى النصي يجوز إستخدام + بين محتوى نصي و آخر: "I love" + " Python!"
و علامة * لتكرار نفس المحتوى عدد المرات التي تريد: "Hello " * 5
النتيجة هي: "Hello Hello Hello Hello Hello"


المتغيرات:

الآن، ماذا إذا كنا نريد أن نحتفظ بقيمة معينة من أجل إستخدامها في أكثر من مكان؟  ماذا لو أردنا أن نعطي لأية قيمة - سواءا كانت رقمية أو نصية أو أي شيء أخر - اسم يرمز إلى تلك القيمة مثلا كأن نقول pi=3.14 ؟

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

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


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

طرقية الإستعمال هي كالتالي:
name = "Ahmed"
age = 26
كما تلاحظ نكتب الإسم ثم علامة = ثم القيمة (إن كانت نصية فيجب أن تكون بين "" و إن كانت عددية يكفي أن نكتب العدد مباشرة.

الآن ماذا نفعل إن أردنا أن نعرض محتوى المتغيرة؟
نستعمل print لعرض محتوي المتغيرة. مثال:
print  name
print  age

أو
print  12 * 3
print  45 / 5

و يمكن عرض أكثر من متغيرة في سطر واحد من خلال التفريق بينهم بالفاصلة. مثال:
print  "Your name is", name
print  "You are", age
أو
print  "Your name is", name, "and you are", age


الآن، ماذا لو كنا نريد أن نحصل على معلومة من المستخدم، كأن يدخل إسمه؟
في هذه الحالة نستخدم raw_input، مثال:
name = raw_input("Your name please: ")
print "Welcome back", name

أو
age = raw_input("Your age please: ")
print "You are", age

raw_input() تقوم بعرض رسالة إلى المستخدم و تنتظر منه أن يدخل المعلومة. و بعدها يتم تخزين نتيجة هذه العملية في المتغيرة التي تسبق raw_input()

ملاحظة: تعتبر raw_input() من الدوال لأنها بعد الإنتهاء من عملها تخرج بنتيجة معينة (قيمة متغيرة على حسب المعطيات التي عملت بهم الدالة في البداية) سوف نتطرق للدوال فيما بعد :)


هذا كل شيء الآن و لا تنسى أن تطلع على كتاب بايثون :)


ملاحظة: الكلمات المفتحية لبايثون هي كالتالي:
and   elif   if   print   as   else   import   raise   assert   except   in   return   break   exec   is   try   class   finally   lambda   while   continue   for   not   with   def   from   or   yield   del   global   pass

هناك 5 تعليقات:

  1. الدرس رائع جدا وفي غاية السهولة.. خصوصا للمبتدئين مثلي..


    شكرا لك.. وبانتظار المزيد..

    ردحذف
  2. رائع جدا ..
    أفدتني جدا و نفذت برنامجي الأول ..
    متابع معك.

    شكرا لك ~

    ردحذف
  3. السلام عليكم
    لم اتصور أبدا أني سأجرب تعلم البرمجة في حياتي، باستثناء بعض أكواد css التي أستعملها في تعديل قوالب المدونات :)
    شرحك مريح جدا ويأتي أكله بسهولة...
    بارك الله فيك أخي :)

    ردحذف
  4. شكرا @معمر :)

    ردحذف