الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مدْخل إلى Python

رائج
بدأه ♥ حُوريّة ♥ في 9 مايو 2009 · 54 رد · 31,278 مشاهدة · في لغة Python
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بســم الله الـرحمــن الرحيــم

السلام عليكــم ورحمـة الله وبركاتــه ،،

♥♥♥♥♥♥♥

Python Programming Language

الحساب و المنطق مع لغة Python

♥♥♥♥♥♥♥

post-140583-1241897116_thumb.gif

حول الموضوع♥

 

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

اختكم رغــد

Bye

قائمة المحتويات(متجددة)

 

تم تعديل هذه المشاركة بواسطة Xacker في 18 يناير 2013 في 03:29

1

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#2

كلنا عيون شاخصه للشاشه

فى انتظار الدرس الاول

كيميائى / محمد طه

#3

الإستعداد للدورة

تثبيت الأدوات اللازمة

التعرف على النسخة المطلوبة

post-140583-1241897116_thumb.gif

ببساطة زيارة الموقع التالي و تثبيت بيئة Python:

Click on me... :wub:

النسخة المطلوبة تكون 2.5 أو أعلى

Bye...

1

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#4

طريقة الشرح في هذه الدورة

post-140583-1241897116_thumb.gif

بكل بساطة سأستعمل نموذج الشيفرة لعرض الشيفرة كالتالي:

  1. def sayHi(name):
  2. print "Hi", name
  3.  
  4.  

هذا النموذج سيكون للشيفرة المصدرية ذات الإمتداد .py

بخصوص المحاولات اثناء التعليم في نافذة Python shell ستكون على النحو التالي

السبورة: بتكون الأوامر باللون الرمادي و ستكون المخرجات باللون البمبي الباهت

>>> "Hi Python"

'Hi Python'

وبس هيك خلص...

Bye

تم تعديل هذه المشاركة بواسطة رغـد في 10 مايو 2009 في 22:38

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#5

التعرف على نافذة Python Shell

post-140583-1241897116_thumb.gif

بعد أن قمنا بتثبيت بيئة Python:

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

الآن و بعد التثبيت و في نظام Windows و من القائمة الرئيسية للنظام نشاهد بيئة Python مثبتة بجهازنا.

post-140583-1241916637_thumb.png

نقوم بالضغط من هذه القائمة على الأمر

--> IDLE (Python Gui).

لنشاهد أمامنا نافذة عادية و مألوفة بالنسبة لنا مكونة من زرارات الإغلاق بالركن الأعلى الأيمن و تكبير و تزغير و قوائم بالجهة اليسرى و هي قوائم عادية بالنسبة لنا و مألوفة ايضاً و عنوان هذه النافذة هو Python Shell.

التعرف على أهم نافذة في بيئة Python:

(Python Shell)

الآن نشاهد النافذة Python Shell مفتوحة أمامنا و هناك مساحة كبيرة بيضاء فيها نصوص باللغة الإنجليزية نزولاً لتحت لنشاهد علامة <<< و نشاهد مؤشر الكتابة بجانبه مباشرة و كأنه ينتظر منا كتابة شيء ما!

post-140583-1241917305_thumb.png

هذه العلامة تُسمى بصفة عامة Command Prompt و غالباً ما تكون في متل هذا النوع من النوافذ للإشارة بكتابة سطور أوامر برمجية. هذا يعني أن مؤشر الكتابة الغمّاز ينتظر منا كتابة أمر معين و ليس أي سطر عشوائي أو عبارة طبيعية بلغتنا الطبيعية.

ملاحظة:

سنستعمل كلمة مؤشر الأوامر للإشارة إلى Command Prompt

>>>

سنكمل لاحقاً

آسفة! لطاقتي بس الموضوع سيكون مشاركات مقسماً إلى مشاركات بسيطة و سيكتمل الموضوع بالنهاية إن شاء الله

Bye...

1

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#6

المحادثة الأولى مع Python

"Hello Python"

post-140583-1241897116_thumb.gif

تذكير:

حسناً توقفنا عند مؤشر الأوامر <<< و الذي هو عبارة عن ثلاثة اقواس حادة متجهةً إلى اليمين و نجد مسافة بسيطة ضرورية بعدها و يتوقف عندها مؤشر الكتابة. و كما أسلفنا هنا Python تنتظر منا كتابة أمر معين أو جملة معينة و لكن بشرط! أن يكون هذا الأمر و هذه الجملة مفهومة و معروفة لدى Python. أي أنها يجب أن تكون بلغة Python و التي هي موضوعنا هنا.

محادثة مملة مع Python:

الآن نقوم بكتابة سطر ترحيب و هو عبارة عن نص محصور بين علامتي التنصيص المعروفة "". و ليكن مرحبا Python. على النحو التالي "Hello Python". ثم نقوم بعد ذلك مباشرة بالضغط على مفتاح Enter. لنشاهد أن Python قامت بطباعة نفس النص و إعطائنا مؤشر أوامر جديد و فارغ يقف عنده مؤشر الكتابة لكتابة أي أمر نشاء.

هكذا:

>>> "Hello Python"

'Hello Python'

>>>

الآن نقوم بكتابة نص آخر "My name is Fatemah" و نقوم بالضغط على مفتاح الإدخال مرة أخرى. سنشاهد أن Python قامت بإجراء نفس العملية السابقة. نجرب مرة أخرى لكي نتآلف مع سطر الأوامر وكتابة عدد معين متل 123. سنشاهد نفس العملية و طباعة نفس العدد.

حاولوا كتابة التالي بنفس الطريقة السابقة مقابل كل سطر أوامر

  • 203
  • "Nothing is impossible"

  • "b"
  • 'Which came first, the chicken or the egg?'
  • True
  • False
  • None
  • -34

سنشاهد العملية و المخرجات على النحو التالي

>>> 203

203

>>> "Nothing is impossible"

'Nothing is impossible'

>>> "b"

'b'

>>> 'Which came first, the chicken or the egg?'

'Which came first, the chicken or the egg?'

>>> True

True

>>> False

False

>>> None

>>> -34

-34

>>>

نلاحظ أن Python تردد نفس السطور تارة و تارة تقوم بكتابة نفس القيمة و تارةً اخرى تتعامل مع بعض المدخلات بطريقة خاصة متل سطر الأمر None لاحظوا أنها لم تتفاعل مع الأمر. و لكنها في الحقيقة تفاعلت مع الأمر بطريقتها. سنتعرف على تلك العبارات و الكلمات.

إستنتاج:

نلاحظ ايضاً ان Python في هذا المسال السابق و كأنها مقلد و حتى أنها لم تجبنا على السؤال المشهور(ما الأول الدجاجة أم البيضة؟) و لا حتى بكلمة "لا أدري"

ابقوا معنا

Bye

1

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#7

إستعمال الأمر Print

لطباعة المعلومات بتنسيق و كفاءة

post-140583-1241897116_thumb.gif

إستعمال الأمر print:

تُرى ما الفائدة الأولى من الأمر print؟

أولاً هذا الأمر لتنسيق المخرجات (طباعتهن على الشاشة بشكل منسق) خاليةً من بعض الرموز الزائدة التي لا تفيدنا بشيء عندما تكون مخرجات. مثلاً, و من المشاركة السابقة عندما قمنا بكتابة "Hello Python" قامت Python بطباعة النص متضمنةً علامة تنصيص أخرى 'Hello Python' مشيرةً بذلك إلى أن نوع البيانات هو سلسلة حرفية string. سنأخذ أنواع البيانات إن شاء الله لاحقاً

>>> "Hello Python"

'Hello Python'

نلاحظ أن Python قامت بطباعة الجملة الترحبيية بين علامتي التنصيص الفردية ' '. و حتى لو كتبنا الجملة الترحبيية بين علامتي التنصيص الفردية عند سطر الأوامر فإن النتيجة لا تختلف ايضاً كما هو الحال في المشاركة السابقة ايضاً

>>> 'Which came first, the chicken or the egg?'

'Which came first, the chicken or the egg?'

الآن نجرب الأمر print لنشاهد نصوص مخرجة خاليةً من الرموز الزائدة.

>>> print "Hello Python"

Hello Python

>>> print 'Which came first, the chicken or the egg?'

Which came first, the chicken or the egg?

>>> |

و ايضاً للأمر print أهمية أخرى حيثُ يقوم بطباعة المعلومات التي تكون عبارة عن مجموعة أنواع بيانات مختلفة. مثلاً إسمي فاطمة و عمري 23 سنة, نلاحظ أنها جملة تتكون من حروف نصية و عدد(23) و هنا اختلاف في نوعية البيانات بين النصوص و الأعداد.

>>> print "My name is Fatemah, I am", 23,"years old."

My name is Fatemah, I am 23 years old.

>>> |

الجدير بالملاحظة هنا! هو أننا قمنا بتفريق البيانات بعلامة الفاصلة(في سطر الأمر print). و هذا ضرورياً لفصل أنواع البيانات اثناء عملية إخراج و طباعة المعلومات بواسطة الأمر print.

نعم نستطيع كتابة كامل الجملة في هذه الحالة بين علامتي التنصيص المزدوجة أو الفردية ببساطة "My name is Fateman, I am 23 years old". و سنشاهد النتائج تماماً متل العملية السابقة.

>>> print "My name is Fatemah, I am 23 years old."

My name is Fatemah, I am 23 years old.

>>>

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

Bye

تم تعديل هذه المشاركة بواسطة رغـد في 10 مايو 2009 في 22:43

1

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#8

التلميحات

Comments

post-140583-1241897116_thumb.gif

التلميحات:

هذه المشاركة ازغر مشاركة بالعالم بالنسبة لدرس في دورة معينة و هي حول التلميحات Comments. تكون الشيفرة البرمجية بعض الأحيان غامضة لذلك نجد إمكانية إيضاح هذا الغموض بواسطة نصوص طبيعية(بلغتنا الطبيعية عادة الإنجليزية). هذه الإيضاحات ليست لـ Python حيثُ أن Python لن تقرأها و لن تلقي لها بالاً. و إنما هي لمن يقرأ الشيفرة البرمجية(الإنسان). ربما يكون هو صاحب البرنامج نفسه ليتذكر فيما بعد ما فائدة السطر البرمجي الذي يأتي بعد التلميح, أو ما عمل هذا الجزء من الشيفرة؟. أو لأي شخص يريد قراءة الشيفرة للإستفادة منه او تطويره. هذه الفائدة الأساسية من وجود التلميحات بمختلف لغات البرمجة و ليست Python فقط.

في لغة Python التلميح يكون ذلك السطر المكتوب بلغة طبيعية يفهمها الإنسان و لكن بشرط! أن يبدأ هذا السطر بالعلامة(الحرف) #

تماماً كما هو واضح في المثال التالي من أجل شرح عمل جملة التكرار. و هي عبارة عن العد من 1 إلى 10.

  1. #The following is a for loop can count from 1 to 10.
  2. for i in range(1,11):
  3. print i
  4.  

لا تتهتموا الآن إلى الشيفرة السابقة كثيراً و إنما فقط إلى كيفية إنشاء تلميح في لغة Python في السطر رقم 1 من الشيفرة السابقة.

أيضاً نستطيع كتابة التلميح اسناء دراستنا و تطبيقاتنا السريعة في نافذة Python Shell.

>>> #Create an object reference that holds an integer value.

>>> x = 20

>>> #The following print statement will print x plus 2

>>> print x + 2

22

>>>

هذا كل شيء عن التلميحات في لغة Python.

Bye...

تم تعديل هذه المشاركة بواسطة رغـد في 10 مايو 2009 في 23:34

1

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#9

موجزاً لأهم ما سبق

post-140583-1241897116_thumb.gif

موجزاً لأهم ما سبق على شكل نقاط...

  • نافذة Python Shell هي تلك النافذة التي تعتمد على سطور الأوامر لكتابة شيفرات و نصوص برمجية بلغة Python.
  • نافذة Python Shell هي اسرع أداة تُستعمل للتعرف على لغة Python و على عمل إختبارات مباشرة و تطبيقات مباشرة ايضاً لبرامجنا.
  • سطر الأمر في نافذة Python Shell يكون مباشرة (بعد المسافة التلقائية) بعد علامة مؤشر الأوامر <<<.
  • بعد كتابة سطر الأمر بلغة Python و بشكل صحيح نضغط على مفتاح Enter لمشاهدة نتيجة الأمر.
  • نستعمل الأمر print لتنسيق المخرجات و طباعتهن بشكل منسق يخلو من أي علامات و رموز زائدة.
  • نستعمل الأمر print ايضاً لإخراج و طباعة معلومات قد تحتوي على أنواع بيانات مختلفة متل الأعداد, السلسلة الحرفية, قوائم و غير ذلك.
  • التلميحات comments تُستعمل غالباً في الملف المصدري أو داخل الدوال لكتابة سطور بلغة طبيعية يفهم عليها الإنسان ليسهل عليه مراجعة الشيفرة و تطويرها او ليسهل على القاريء للشيفرة فهم البرنامج.
  • يجب أن يبدأ سطر التلميح بالعلامة الحرفية المربعة #.

Bye...

تم تعديل هذه المشاركة بواسطة رغـد في 12 مايو 2009 في 01:35

1

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#10

لمحة سريعة عن أنواع البيانات

الرئيسية في لغة

Python

post-140583-1241897116_thumb.gif

أنواع البيانات في لغة Python:

مجموعة البيانات الرئيسية على شكل هيكل:

  • السلسلة الحرفية String
  • الأعداد Numbers
    • عدد صحيح integer
    • عدد ذو فاصلة عائمة float
    • عدد عشري Decimal Number
    • عدد مركب complix number

    [*]قيم بُول Boolean Values

    [*]القائمة list

    [*]tuple

    [*]القاموس Dictionary

التعرف على أنواع البيانات:

السلسلة الحرفية String:

"لغة Python بسيطة بالمراس و التعلم المباشر"

السطر المكتوب بالأعلى مباشرة عبارة عن سلسلة حرفية. تُرى لماذا؟ لأنها موجودة بين علامتي التنصيص المزدوجة. كذلك السلسلة التالية

'أن أحب لغة Python', لأنها موجودة بين علامتي تنصيص فردية.

نطبق!

>>> "Hi there..."

'Hi there...'

>>> 'Hello Python'

'Hello Python'

>>> |

الأعداد Numbers:

  • الأعداد الصحيحة integer

بنعرف الأعداد الصحيحة من الصفوف الدنيا المدرسية و هي مجموعة الأعداد التي تبدأ من الصفر إلى ما لا نهاية الموجبة و السالبة, متل:

1 , 0, 3498, -2, +2 ....

نطبق!

>>> 23

23

>>> -33

-33

>>> 4958

4958

>>> +34

34

>>>

  • الأعداد ذات الفاصلة العشرية العائمة Floating Numbers

و هي الأعداد التي تحتوي على الفاصلة العشرية العائمة (.) ليست كما في المنهاج العربي (,) و لكن النقطة و ليس الفاصلة, تماما على نحو:

1.0, 39.66654, ....

أيضاً السالبة و الموجبة

نطبق!

>>> 2.3

2.2999999999999998

>>> 1.0

1.0

>>> -44.4

-44.399999999999999

>>> 65.5432

65.543199999999999

>>> |

نلاحظ أن Python قامت بكتابة الأعداد بشكل آخر سنتعرف على ذلك لاحقاً إن شاء الله.

  • الأعداد العشرية Decimal Numbers

خارج نطاق الدورة... سأحاول ذلك

  • الأعداد المركبة Complix Number

و هي تلك الأعداد التي تتكون من جزئين. حزء حقيقي real و آخر خيالي imaginary. يكون الجزء الحقيقي هو أي عدد حقيقي و أما الجزء الخيالي أيضاً اي عدد حقيقي و لكن ينتهي بحرف اللاتين j.

تطبيق!

>>> 1j

1j

>>> 32-3.4j

(32-3.3999999999999999j)

>>> 2.322j

2.3220000000000001j

>>> 22.3+1.0j

(22.300000000000001+1j)

>>> |

خارج نطاق الدورة.

قيم بُول Boolean Values:

هذا النوع من البيانات لا يحتوي إلا على قيمتين فقط. و هي قيمة صائبة True أو قيمة خاطئة False. هذه البيانات تستعمل في عمليات منطقية.

نطبق!

>>> True

True

>>> False

False

>>> |

القائمة list:

نستطيع إنشاء قائمة تحتوي على مجموعة من القيم و البيانات بأنواع مختلفة من أنواع البيانات. هذا النوع من البيانات يتميز نحوياً بأنه يضم القيم بين الأقواس المربعة []. نشاهد المسال التالي:

>>> [1,2,3,4,5,6,7]

[1, 2, 3, 4, 5, 6, 7]

>>> ["Raghad", 3, 3.0, True]

['Raghad', 3, 3.0, True]

>>> [[3,4], 43]

[[3, 4], 43]

>>> |

الجدير بالملاحظة هنا, هو أننا نستطيع إنشاء قائمة تحتوي على قيم معينة من نوع بيانات واحد, أو قيم من أنواع بينات مختلفة متل القائمة الموجودة عند سطر الأوامر التاني

["Raghad", 3, 3.0, True]

و هي عبارة عن قائمة تحتوي على سلسلة حرفية و عدد صحيح و عدد ذو فاصلة عائمة و قيمة من قيم بُول

سنهتم بها في حالة السؤال عنها إن شاء الله...

نوع البيانات المعروف بـ Tuple:

آسفة لم اجد معنى عربي ملائم لكلمة tuple. و لكن هذا النوع بالضبط متل النوع السابق القائمة list و لكن القيم تكون موجودة بين أقواس منحنية (). و هناك اختلاف بسيط في آليتها و الحفاظ على قيمتها كثوابت...

سنهتم بها في حالة السؤال عنها إن شاء الله...

نطبق!

>>> (1,2,3,4,5,6,7)

(1, 2, 3, 4, 5, 6, 7)

>>> ("Raghad", 3, 3.0, True)

('Raghad', 3, 3.0, True)

>>> ([3,4], 43)

([3, 4], 43)

>>> |

لاحظوا أنها لا تختلف في طريقة إحتوائها للقيم عن نوع القائمة list. ولكن هناك فرق برمجي و آلي جوهري سنتعرف عليه لاحقاً

نوع البيانات Dictionary:

هذا النوع من البيانات يمكننا من تخزين قيم بداخله و الوصول إلى تلك القيم لاحقاً بواسطة المفتاح, هذا المفتاح ربما يكون حرف او رقما أو كلمة. لا يختلف هذا النوع عن القائمة كثيراً إلا في طريقة الوصول إلى محتوياته بواسطة هذا المفتاح فقط.

سنهتم بها في حالة السؤال عنها إن شاء الله...

Bye...

تم تعديل هذه المشاركة بواسطة رغـد في 13 مايو 2009 في 06:45

1

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#11

الدالة المساعدة

help

ضيفة الموضوع

post-140583-1242095996_thumb.gif

البدء مع الدالة help():

هذه الدالة ستكون ضيفة معنا من الآن و صاعداً(اثناء بعض التطبيقات و المشاركات عند الضرورة). و لازم علينا نحترمها شوي!

الدالة help تكون اداة سريعة لمشاهدة و تذكر بعض الأمور المتعلقة بلغة python اسناء التطبيق في نافذة Python Shell. آسفة جداً فهي لا تفهم إلا لغة Python و لا تُجيب علينا إلا باللغة الإنجليزية البحتة لذلك نتحملها قليلاً. الشكل النحوي لهذه الدالة كالتالي:

help('something')

هنا يكون ما بين القوسين هو عبارة عن نص معين من نوع البيانات السلسلة الحرفية string. نكتب كلمة معروفة لتبدأ الدالة بالبحث عن هذه الكلمة و سرد كل المعلومات اللازمة عن هذه الكلمة.

تُرى ما هي هذه الكلمة المعروفة؟

حسناً التجربة خير بُرهان!

نطبق التالي بكتابة كلمة 'help' بين اقواس الدالة help ثم نضغط المفتاح الإدخال كأي أمر عادي.

>>> help('help')

Welcome to Python 2.6! This is the online help utility.

If this is your first time using Python, you should definitely check out

the tutorial on the Internet at http://docs.python.org/tutorial/.

Enter the name of any module, keyword, or topic to get help on writing

Python programs and using Python modules. To quit this help utility and

return to the interpreter, just type "quit".

To get a list of available modules, keywords, or topics, type "modules",

"keywords", or "topics". Each module also comes with a one-line summary

of what it does; to list the modules whose summaries contain a given word

such as "spam", type "modules spam".

>>> |

نلاحظ أن python استجابت لأمر الدالة help و جلبت لنا معلومات مناسبة لتلك الكلمة الموجودة بين الأقواس. هذه المعلومات من ملفات التوثيقات الرسمية لمطوري لغة python و التي تكون مثبتة تلقائياً عند تثبيت بيئة عمل python.

حسناً ترى ما تلك المعلومات و ما فحوى تلك المعلومات؟

لو نظرنا إليها نجدها مجرد ترحيب و بعض الإرشادات. ما يهمنا هنا هي الإرشادات و مفادها كالتالي:

"

إذا كانت هذه المرة الأولى في استخدام Python فعليك زيارة موقع الدروس هنا http://docs.python.org/tutorial/.

أدخل إسم معين لأي mudule او مفتاح كلمة او موضوع للحصول على مساعدة في كتابة البرامج... للخروج من المساعدة و العودة إلى سطور الأوامر اكتب الأمر quit.

:

:

"

لا يهمنا هذا الآن لأنني سأريكم على ضوء ما سبق كيفية استعمال هذه الدالة بشكل مناسب و في المشاركات اللاحقة ايضاً ستكون هذه الدالة معنا عند الضرورة, و لكن سأريكم مثال هنا افضل...(مسال عالطاير)...

لكل لغة برمجة هناك مفاتيح كلمات keywords و هي عبارة عن كلمات برمجية معرّفة و محجوزة للغة نفسها. مسلاً كلمة if التي تُستعمل لأغراض منطقية (التحقق من شرط معين). أو الأمر return و الذي يقوم بإسترجاع قيمة معينة من دالة ما. و هكذا...

الآن نجرب دالة المساعدة (ضيفتنا) في استعراض قائمة مفاتيح الكلمات المحجوزة و الموجودة في لغة Python.

نطبق!

>>> help('keywords')

Here is a list of the Python keywords. Enter any keyword to get more help.

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

>>> |

نلاحظ الأمر و نلاحظ الرسالة.

"

هنا قائمة مفاتيح الكلمات في لغة Python و أدخل أي كلمة لتحصل على مزيد من المساعدة:

:

:

"

و نلاحظ مفاتيح الكلمات بأعمدة وصفوف...

هذا كل شيء عن الدالة help.

Bye...

تم تعديل هذه المشاركة بواسطة رغـد في 12 مايو 2009 في 05:48

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#12

المتغيرات

Variables

post-140583-1242095996_thumb.gif

على ضوء ما سبق فإن دراسة مفهوم المتغيرات و كيفية إنشائهن تنتهي قبل أن تعتدل حرارة كباية الشاي ليصبح جاهزاً للشرب.

المتغيرات:

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

name = "Nora"

age = 5

هنا name و age عبارة عن اسماء لمتغيرات تحتوي على معلومات(بيانات) متل "Nora" و 5 على التوالي. هذه المتغيرات بكل بساطة في لغة البرمجة python. نستعمل علامة التعيين(=) لتعيين قيمة(بيانات) لهذا المتغير. عندما نقوم بإنشاء متغير أو اكتر في لغة python فإن النظام المسؤول عن البرنامج يقوم بتخزين و تذكر تلك القيم و تلك البيانات بواسطة تلك الأسماء(المتغيرات).

طبعاً تلك القيم و تلك البيانات التي نقوم بتخزينهن في المتغيرات هي أي نوع من أنواع البيانات المتوفرة في لغة Python متل:

  • سلسلة حرفية
  • عدد ما
  • قائمة
  • tuple

مشاركة سابقة حول أنواع البيانات

قوانين عند إنشاء المتغيرات:

على شكل نقاط:

  • يجب أن تكون المتغيرات بالحروف الإنجليزية(يفضل إجتناب تسمية المتغيرات بحروف عربية او لغة أخرى)
  • يجب أن يبدأ المتغير بحرف و ليس برقم و ما يلي الحرف ممكن أن يكون ارقاماً

  • يجب أن لا يحتوي إسم المتغير على مسافة أو رموز رياضية او حسابية متل الفاصلة النقطة النجمة وو
  • يجب أن لا يكون اسم المتغير اسماً لأي إسم آخر معروف و معرّف مسبقاً في لغة Python. متل مفاتيح الكلمات if , return, and, or, as...

هذه أهم القوانين لو اتبعناها لن نضطر للسؤال عن غيرها

إنتهاج عُرفي عند إنشاء المتغيرات:

بعض الأحيان يكون اسم المتغير مكوناً من كلمتين متل my name و هنا لو وضعنا مسافة سنخالف تلك القوانين السابقة. و لكن لدينا الحل المناسب لهذه المشكلة و هو إلصاق الكلمة المركبة فتصبح myname. الآن نقع في مشكلة أخرى و هي صعوبة قراءة اسم المتغير لدينا أثناء مراجعة و قراءة الشيفرة. لذلك يستحسن إستخدام طريقة ملائمة و هي تكون بتكبير أول حرف من كل جزء في الإسم المركب فتصبح هكذا myName. أو نضع الشرطة الواصلة بهذا الشكل بين الكلمات my_name.

تطبيق عملي:

>>> rectangleSides = 4

>>> shapeName = 'square'

>>> pi = 3.14

>>> direction = 'clockwise'

>>> x = 2.4

>>> y = 0.0

>>> coordinate = (x, y)

>>> print coordinate

(2.3999999999999999, 0.0)

>>> |

لاحظوا كيفية إنشاء المتغيرات و كيفية تخزين البيانات, ايضاً لاحظوا كيفية الإستفادة من المتغيرات لإنشاء متغيرات أخرى كما هو واضح في تعريف المتغير coordinate لإحداثية x و y من المتغيرات x و y التي أنشانهن سابقاً و لاحظوا طريقة طباعة تلك الإحداثيات بين الأقواس للدلالة على أن المتغير coordinate يحتوي على قيمة من نوع البيانات tuple.

حاولوا التطبيق لغة Python ليست إلا بالممارسة و معلومات بسيطة.

Bye...

تم تعديل هذه المشاركة بواسطة رغـد في 12 مايو 2009 في 23:07

1

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#13

إستكشاف الأخطاء

Exceptions

مفهوم الإستثناءات

post-140583-1242095996_thumb.gif

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

أنواع الأخطاء كثيرة و لكن سنتعرف على البعض منها إن شاء الله أثناء الدروس و لكن نتعرف هنا على بعض أنواع الأخطاء لفهم هذه الآلية.

الأخطاء النحوية هي تلك الأخطاء التي تكون في القواعد النحوية للغة. على سبيل المسال كما درسنا سابقاً في قوانين إنشاء المتغيرات

حسناً دعونا نخطيء و ننشيء متغيراً يحتوي على مسافة فارغة متل my name:

لو قمنا بمخالفة تلك القوانين اثناء إنشاء متغير ما, ترى ما سيحدث.

>>> my name = "Sameerah"

SyntaxError: invalid syntax

>>> |

نلاحظ أن Python إنزعجت من هذا الأمر و قامت بإصدار رسالة خطأ من نوع (خطأ نحوي Syntax Error). ايضاً ربما نشاهد تحبير باللون الأحمر على المكان القريب من مكان الخطأ.

ايضاً لو فرضنا أننا قمنا بإنشاء متغير r بحرف لاتيني صغيراً ثم أردنا أن نشاهد قيمة r بواسطة الأمر print و لكننا كتبنا الحرف R هكذا! تُرى ما سيحدث؟

نشاهد هذا:

>>> r = 'first letter'

>>> print R

Traceback (most recent call last):

File "<pyshell#19>", line 1, in <module>

print R

NameError: name 'R' is not defined

>>> |

نشاهد أن هناك رسالة خطأ و أن python تنكرت للحرف R بإنه اسم ليس موجود مسبقاً و ليس معرفاً و ليس له قيمة(ما R هذه؟)

تُرى ما السبب؟

السبب أن لغة Python حساسة لحالة الأحرف و هي من نوع Case-sensitive Programming Language. هذا يعني أن الإسم MyName ليس متل myName و ليس متل Myname و هكذا...

(حساسة ما فينا نزعلها)

حسناً مرة أخرى و بمناسبة محور هذا الموضوع(الحساب) فإن هناك خطأ حسابي معروف رياضياً و هو القسمة على صفر و هذا لا يجوز في الرياضيات. ترى هل python ستتعرف على هذا النوع من الأخطاء؟

حسناً نجرب علماً بأن علامة القسمة في لغة python هي /:

>>> 2 / 0

Traceback (most recent call last):

File "<pyshell#14>", line 1, in <module>

2 / 0

ZeroDivisionError: float division

>>> |

نعم! و ايضاً قامت بإصدار استثناء مشيرةً بأن نوع الخطأ هو القسمة على صفر كما نلاحظ في السطر الآخير Zero Division Error لا نهتم لباقي الرسالة كثيراً الآن.

حتى نعرف و نتأكد اكتر من زكاء لغة Python في استكشاف الأخطاء دعونا ننظر إلى الخطأ التالي الغير منطقي و هو جمع قيمة عددية بسلسلة حرفية!

>>> '1' + 2

Traceback (most recent call last):

File "<pyshell#16>", line 1, in <module>

'1' + 2

TypeError: cannot concatenate 'str' and 'int' objects

>>> |

نعم! العدد واحد بالنسبة لنا رقماً و لكن في هذه الحالة هو مجرد قيمة من نوع سلسلة حرفية string لوجوده بين علامة التنصيص فلغة البرمجة لا تتعامل معنا بالنية و إن كانت نيتنا طيبة. لذلك قامت python بإصدار خطأ من نوع الأخطاء النوعية Type Error كما نشاهد في آخر سطر من الرسالة

لغة Python هي Dynamic-typed Programming Language تتعامل مع البيانات بديناميكية و مرونة عالية و لكنها في نفس الوقت و في كتير من الأحيان فيه لغة مستقرة بيانياً Static-typed Programming Language. تماماً متل الحالة السابقة في اجراء العمليات بطريقة(التشكتشوكا) غير مقبولة...

(للمزيد حول أنواع البيانات)

حسناً ربما البعض يسأل (هل تستطيعي يا رغــد كتابة لنا كل أنواع الأخطاء؟)

الإجابة نعم بكل بساطة اكتبوا الدالة help على النحو التالي عند سطر الأوامر.

help('exceptions')

ستشاهدوا قائمة (يا لطيف) و بتمنى لكم التوفيق...

Bye...

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#14

بدء جلسة عمل جديدة

Restart Python Shell

post-140583-1242095996_thumb.gif

جلسة العمل تكون عند تشغيل بيئة Python بصفة عامة و عندما نريد دراسة هذه اللغة او نعمل تطبيقات بها و ايضاً عندما نقوم بتشغيل النافذة العجيبة Python Shell بصفة خاصة اسناء ايضاً دراستنا و تطبيقاتنا السريعة (بالجو). في جلسة العمل هذه نكون قد قمنا بتجارب و تطبيقات و إنشاء متغيرات و حذفهن و جلْب ملفات Modules ووو. و لكن قد انتهينا من هذه و نريد بدء python shell و جلسة عمل جديدة من الصفر. بكل بساطة و بدون فلسفة رغدية كتيراً, نقوم باختيار أمر القائمة shell الموجود بنافذة Python shell و سنجد هناك أمر بسيط و هو Restart Shell, نقوم بالضغط بالماوس على هذا الأمر.

post-140583-1242178621_thumb.png

بمجرد الضغط على هذا الأمر سنجد رسالة من python مشيرةً إلينا بأن العملية تمت. كالتالي

>>> x = 20

>>> y = 30

>>> a, b = x, y

>>> ========== RESTART ===========

>>> |

ملاحظة:

لو أردنا الآن أن نتعامل مع تلك المتغيرات و الأشياء التي انشانهن قبل الأمر restart فلن نستطيع ذلك لأننا بدأنا جلسة عملة جديدة و python نسيت كل شيء تماماً فيتوجب علينا إنشاء متغيرات جديدة ووو (أي بداية عمل جديدة بحسب طلبنا). فيجب أن نقرر جيداً قبل إستعمال هذا الأمر.

تمرين:

حاولوا إنشاء متغيرات تماماً متل الموجودة بالشيفرة السابقة ثم قوموا بعملية إعادة جلسة عمل جديدة ثم قوموا بالتعامل مع تلك المتغيرات بواسطة طلب طبعاتهن بالأمر print. يا تُرى ما سنشاهد؟

Bye...

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#15

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

الأساسية

post-140583-1242095996_thumb.gif

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

حسناً الشيفرة التالية تقوم بالشرح

>>> 1 + 1 #Addition

2

>>> 3 - 1 #Subtraction

2

>>> 3 * 2 #Multiplication

6

>>> 10 / 2 #Division

5

>>> 2 ** 2 #Exponentiation

4

>>> 11 % 2 #Remainder

1

>>> |

ربما يختلف علينا عملية الرفع للقوة و تكون بواسطة النجمة المزدوجة العدد الأول يكون الأساس و العدد الآخر يكون القوة. ايضاً العملية الآخيرة في السطر الآخير هي عبارة عن عملية استرجاع الباقي من قسمة العدد الأول على العدد الآخر وليست ناتج القسمة بل الباقي.

انتهى الدرس ابقوا معنا

Bye...

تم تعديل هذه المشاركة بواسطة رغـد في 13 مايو 2009 في 06:38

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#16

طريقة إدخال البيانات

input

post-140583-1242095996_thumb.gif

أولاً قبل البدء...

تمارين استكشافية:

  • حاولوا أن تقوموا بكتابة عبارات حسابية معقدة قليلاً (اعداد و اقواس() وو)
  • حاولوا ان تشاهدوا الناتج لهذه العبارات الحسابية! هل تُرى تمت العمليات مطابقة للترتيب الأولوي العالمي؟
  • حاولوا إنشاء متغيرات تحتوي على قيم عديدة و ادخالها داخل عبارات حسابية

إدخال قيم بواسطة الدالة input:

تعرفنا سابقاً على الأمر print لطباعة النتائج. الآن سنتعرف على الدالة input و التي بواسطتها نأخد قيمة معينة و نموذجياً نخزنها في متغير للإستفادة منها أسناء حياة البرنامج.

لغة Python بسيطة جداً. ادرسوا التطبيق التالي:

>>> y = 10

>>> x = input("Enter an integer number: ")

Enter an integer number: 5

>>> #Now x has 5 as a value

>>> x

5

>>> y + x

15

>>>

أنشأنا متغيراً عددياً للقيمة عشرة y ثم قمنا بإنشاء متغيراً x و الذي قيمته ستكون قيمة مدخلة لاحقاً بواسطة المستخدم. لاحظوا عند إنشاء المتغير x قمنا بإستدعاء الدالة المسؤولة عن عملية الإدخال input و داخلها سلسلة نصية عبارة عن الرسالة للمستخدم(رسالة اختيارية). ثم قامت Python بطبع الرسالة و تنتظر من المستخدم إدخال قيمة ما. بعد أن أدخلنا العدد 5 قامت python خلف الكواليس باسترجاع قيمة 5 إلى المتغير x. و لنتأكد شاهدوا باقي سطور العملية.

هذا كل شيء ضروري عن الدالة input لإستكمال دروسنا هنا...

Bye...

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#17

تضمين الملفات بواسطة الأمر

import

post-140583-1242095996_thumb.gif

غالباً ما نضطر إلى إنشاء ملفات برمجية و نقوم بتضمين ما تحتويه تلك الملفات إلى ملفات اخرى للإستفادة منهن وعدم تدوير العجلة مرة اخرى. كذلك هو الحال مع الملفات البرمجية الموجودة في لغة python و التي قاموا بانشاهن مطويري هذه اللغة. هذه الملفات تُسمى تقنياً بـ Modules. في هذه المشاركة سنتعرف على كيفية تضمين الملفات Modules الخارجية إلى برامجنا و إلى تطبيقاتنا و سنقوم بجلب الملف math و الموجود بالمكتبة الرئيسية ليساعدنا بدواله و متغيراته و ثوابته الموجودة فيه من إنشاء اعمال حسابية معقدة اكتر.

ملاحظة:

كل الملفات البرمجية Modules الموجودة بالمكتبة الرئيسية أو الموجودة هنا و هناك أو التي نقوم بإنشاهن نحن فهي مكتوبة بلغة python نفسها.

استعمال الأمر import لتضمين محتويات الـ Module:

بكل بساطة و سواءً في ملف برمجي أو داخل نافذة Python Shell فإننا نستعمل و بصفة عامة الأمر import لتضمين ملف أو محتويات الملف او جزء من محتويات هذا الملف. حسناً نقوم بتشغيل أو بإعادة تشغيل Python Shell و نكتب السطر التالي مباشرة.

>>> import math

>>> |

تلاحظوا أن ليس هناك أي خطأ في الأمر و لكن ايضاً لم يحدث شيئاً و بعد الأمر قامت python بإعطائنا سطر اوامر جديد. و لكن الحقيقة أن محتويات الملف math و الموجود في المكتبة العامة في بيئة python اصبح جاهزاً لاستعمال محتوياته. نثبت ذلك و نقوم بإنشاء متغير يخزن الجزر التربيعي للعدد 9 بواسطة الدالة sqrt الموجودة داخل الملف البرمجي math.

>>> import math

>>> ninR = math.sqrt(9)

>>> ninR

3.0

>>>

الآن نقوم بالتمرين على التالي

  • إنشاء متغير يحتوي على قيمة sine لعدد معين
  • إنشاء متغير يحتوي على قيمة cosine لعدد معين

  • الحصول على القيمة المقربة للعدد 3.343223 بواسطة الدالة floor

ملاحظة:

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

post-140583-1242248211_thumb.png

إذا أردنا استعمال محتويات الملف مباشرة بدون استعمال النقطة (.) بعد اسم الملف و كتابة الدالة مباشرة فإننا نستعمل الأمر from ويكون على النحوي التالي

from math import *

مسال:

>>> from math import *

>>> sinN = sin(90) #Notice without math dot...

>>> ninR = sqrt(9) #Notice without math dot...

>>> sinN

0.89399666360055785

>>> ninR

3.0

>>> |

و كأننا نأمر python بالنص التالي " من الملف math اجلب لنا كل شيء " و علامة النجمة هنا هي بمعنى كل محتويات الملف. أما إذا اردنا تضمين دالة او أي شيء موجود بالملف فإننا نقوم بالتعويض بدلاً من النجمة نقوم بكتابة اسم الدالة او زلك الشيء بشكل صحيح.

from math import sqrt

و لكن لن نستطيع استعمال أي شيء آخر موجود بقلب الملف math إلا فقط دالة الجزر التربيعي sqrt التي ضمّنها...

مثال للدراسة:

لإنشاء متغير يحتوي على قيمة pi الموجودة بالملف math و لكن مقربة بواسطة الدالة floor و الموجودة ايضاً داخل الملف math.

>>> import math

>>> math.pi

3.1415926535897931

>>> myPi = math.floor(math.pi)

>>> myPi

3.0

>>> |

لاحظوا الفرق بين pi النموذجية الموجودة بشكلها الصحيح في ملف math و بين المتغير الذي انشأنها myPi و الذي يحتوي على الثابت pi و لكن بشكل مقرّب.

خلاصة:

هكذا نقوم بتضمين الملفات سواء ملفات خارجية بالمكتبة العامة أو ملفاتنا الخارجية التي قمنا بإنشائها نحن.

Bye...

تم تعديل هذه المشاركة بواسطة رغـد في 14 مايو 2009 في 00:57

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#18

المنطق

Logic

post-140583-1242095996_thumb.gif

قيم بُول Boolean Values تُستعمل كقيم ناتجة عن مقارنة صحة عبارة او جملة ما. مسلاً:

الشمس تشرق من المشرق

True

العدد 1.55 من مجموعة الأعداد الصحيحة

False

33 أصغر من أو تساوي 1000

True

و هكذا...

هناك جُمل لا تحتمل قيمتين فقط و هي مجرد جُمل وجهات نظر Opinions... مسلاً:

التفاحة افضل فاكهة

لو قلنا True لهذه الجملة سنظلم من لديهم فاكهة افضل منها و من وجهة نظرهم الخاصة. و لو قلنا False سنظلم ايضاً من...

:

:

معاملات المقارنة Comparisons Operators:

سنتعرف الآن على معاملات حسابية تُستعمل في المقارنات

  • المساواة ==
  • لا يساوي !=
  • أكبر من >
  • اصغر من <
  • اكبر من او يساوي >=
  • اصغر من أو يساوي <=

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

>>> 2 == 2

True

>>> x = 4

>>> y = 3

>>> x == y

False

>>> x <= y

False

>>> x != y

True

>>> 5 < 0

False

>>> x > 0 < y

True

>>> |

أدوات الربط المنطقية:

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

  • and
  • or
  • not

تماماً كما تعلمنا في حصص المنطق حول هذه الأدوات. فمسلاً اداة الربط and إذا تداخلت بين الجُمل لا تكون هذه نتاج هذه الجملة True إلا إذا و فقط إذا كانت كل الجُمل المترابطة هذه هي جُمل صائبة True.

ندرس التطبيق التالي و نحاول أن نجرب:

>>> 2 == 2 and 1 < 0

False

>>> 2 == 2 and 10 > 3

True

>>> 2 > 1 and 3 == 3 and 30 <= 100

True

>>> True and True and False

False

>>> a = True

>>> b = False

>>> z = True

>>> a and z

True

>>> a and z and b

False

>>> |

اجا دوركم... طبقوا نفس العمليات على الرابط or

نلاحظ عمل الرابط not تماماً هو المتوقع مما درسناه...

>>> not False

True

>>> not True

False

>>> x = True

>>> y = False

>>> not x

False

>>> not y

True

>>> |

التحقق من الإنتماء و الكينونية:

خارج نطاق الدورة و لكنها موجودة في لغة python و للمزيد حول المعاملات و ترتيبهن الأولوي نقوم باستعمال الدالة help كالتالي

help('+')

فقط كتابة معامل الجمع بهده الطريقة و سنشاهد المساعدة على ذلك...

آسفة لتقصيري...

bye...

تم تعديل هذه المشاركة بواسطة رغـد في 14 مايو 2009 في 05:15

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#19

مفهوم الإزاحة النصية

The Indentation

post-140583-1242095996_thumb.gif

الإزاحة النصية The Indentation:

رجاءً تجاهل النصوص البرمجية هنا من حيث التفاصيل اللفظية و النحوية و الإهتمام إليها فقط من حيث الشكل الخارجي الهيكلي. خلص؟

حسناً مفهوم الإزاحة النصية Indentation هو بكل بساطة و كما يدل اسمه عليه عملية إزاحة بعض النصوص ناحية اليمين بمقدار معين(لا نريد ايضاً ان نهتم لهذا المقدار) خلص؟...عارفين زرار الإزاحة النصية الموجود بمحرر المنتدى هنا؟

زرار مخصص لعمل إزاحة نصية في محرر المنتدى

post-140583-1242282578_thumb.png

الزرار هنا يصف هذا المفهوم بكل بساطة و لكن سنتعمق قليلاً بالمفهوم من خلال الوصفة التالية لتحضير كباية شاي:

Preparing a cup of tea:

If you've got all what you need then:

Until the water is bubbling:

  • Wash a cup...

  • Dry it...

  • Add the desired amount of sugar...


  • Add the tea...

  • If ...
    • blah blah

    • b..

...

If you've got nothing then:

.
drink water...

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

كذلك في لغة Python فمسلاً الجملة الشرطية if تحتوي على رأس يُكتب فيه الجملة الشرطية للتحقق منها فإذا كانت جملة صائبة يتم تنفيذ جسدها و الذي نشاهده مميزاً بالإزاحة النصية عن الرأس كالتالي

  1.  
  2. if 1 <= 2:
  3.  
  4. x = 20 y = 30
  5. print x + y
  6.  

كذلك عند إنشاء الدوال فإننا نعتمد على الإزاحة النصية في هذه اللغة لتصفيف و تفريع المهام داخلها متل:

  1.  
  2. def functionN(something):
  3.  
  4. n = something + 20
  5. print "Hello World..."
  6.  
  7. if 1 <= 2:
  8.  
  9. x = 20 y = 30
  10. print x + y
  11.  

نلاحظ كيفية تصفيف الشيفرة من هيكليا فقط بدون الإهتمام إلى تفاصيل تلك النصوص. و لكن لتوفير مساحة في المشاركات التالية إن شاء الله حول مفهوم الإزاحة النصية نكون قد عرفنا ما المقصود بها.

ملاحظة:

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

Bye

تم تعديل هذه المشاركة بواسطة رغـد في 14 مايو 2009 في 23:04

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#20

الجُملة الشرطية

if, elif, else

post-140583-1242095996_thumb.gif

الآن هو الوقت المناسب للتعرف على جُملة if الشرطية و خصوصاً لعلاقة الوثيقة بعبارة الصواب بُول Boolean Expressions التي درسناها سابقاً في المنطق. نعم و بكل بساطة اي جملة إجابتها لا تكون إلا True أو False فهي جملة او عبارة صواب منطقية.

تعمل جُملة if الشرطية على التحقق من صحة العبارة المنطقية فإذا كانت True فإنها تقوم بتنفيذ الأوامر الموجودة بداخلها (جسدها). و إذا كانت False فإنها لا تقوم بذلك فينتقل البرنامج إلى تنفيذ السطر المباشر تماماً بعد هيكل الجملة if أو إلى عبارة else أو elif إذا وُجِدت هناك.

نطبق:

>>> if True:

x = 20

y = 33

print (x + y) - 10

43

>>> |

نتعرف من خلال الشيفرة السابقة على الهيكل النحوي لجملة if. نجد كلمة if يليها جُملة شرط لتتحقق منها (هنا قمنا بكتابة قيمة True مباشرة وبطريقة استبدادية و غير نموذجية فقط لتبسيط المفهوم. ثم نجد علامة : . هذا السطر يُسمى بالرأس Head.

if boolean_expression:

ثم كل شيء يليها هو الجسد. في هذا المسال السابق الجسد للجملة if ينتهي عند سطر الطباعة print.

نشاهد مثال نموذجي اكتر و هو التحقق من أن المتغير x هو عدد زوجي وليس فردي فإذا كان زوجي سيطبع "even".

>>> x = 22

>>> if x % 2 == 0:

print x, "is an even number"

22 is an even number

>>> |

نلاحظ جُملة الشرط السابقة و هي مجرد حقيقة رياضية بأن الأعداد الزوجية إلى قسمناهن على العدد 2 دائماً الباقي هو صفر و الأعداد الفردية دائماً الباقي هو 1.

حسناً نتعرف هنا على جملة else و التي تكون مقترنة مع if اختيارياً و لا يتم تنفيذها أوامرها إلى إذا و فقط إذا كانت الجملة الشرطية في if هي False.

>>> x = 11

>>> if x % 2 == 0:

print x, "is an even number"

else:

print x, "is an odd number"

11 is an odd number

>>> |

لاحظوا الشيفرة السابقة قامت بتنفيذ الأوامر الموجودة بجسد الجملة else لأن العدد x هو عدد فردي هنا. و لم يتحقق الشرط في جملة if لأن ناتج الجملة الشرطية كان False.

ايضاً نشاهد طريقة عمل جملة elif و التي هي اختصار لكلمة else if و هي تُنفذ إذا كانت موجودة اولاً و إذا كانت جُملة if التي تعلوها مباشرة False. تماماً متل else و لكن غالباً ما نقوم بكتابتها للتحقق من شرط آخر (فرصة أخرى لتنفيذ اوامر عند وجود شرط صائب آخر).

نشاهد البرنامج التالي ببساطة و بطريقة استبدادية

>>> if False:

print "this will never be printed"

elif True:

print "This will be printed"

else:

print "This will never be printed as well"

This will be printed

>>> |

شاهدوا أي أمر الطباعة الذي قام البرنامج بإعتباره؟

و راقبوا ايضاً ضرورة الإزاحة النصية في الهياكل...

هذا كل شيء عن جملة الشرط if و يمكننا تعشيش جملة if داخل جسد جملة if اخرى و هذا بسيط جداً و بالممراسة.

ملاحظة متل الجبل:

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

Bye...

تم تعديل هذه المشاركة بواسطة رغـد في 14 مايو 2009 في 21:33

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#21

جُمل التكرار

for, while

و الدالة

range

post-140583-1242333304_thumb.gif

التعرف على الدالة range:

كما تعرفنا بلمحة سريعة سابقة حول انواع البيانات و عرفنا أن هناك نوع من أنواع البيانات تُسمى بالقائمة list. و هي عبارة عن مجموعة قيم قدْ تختلف في نوعها او قد تكون ثابتة مسلاً مجموعة اعداد منتظمة من 0 إلى 10. الدالة range تقوم باسترجاع قائمة list عند تنفيذها. هذا القائمة تكون عددية و نقوم نحن بتعيين ذلك الترتيب العددي لها من و إلى ما نريد.

نطبق!

>>> range(10)

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> |

نلاحظ أننا كتبنا بين اقواس الدالة العدد عشراً مشيرين بذلك إلى أننا نريد قائمة عددية بعشرة عناصر. نلاحظ القائمة المطبوعة و المسترجعة تبدأ بالصفر و تنتهي إلى العدد 9 و هذا نموذجياً فقط حيثُ يمكننا اختيار عدد البدء و عدد النهاية.

نطبق!

>>> range(1,10)

[1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> |

كما نشاهد قمنا بتعيين عدد البداية و انتهينا عند عدد عشرة. لم تطبع العدد عشرة أو تضمنا بالقائمة! ليس هناك خطأ و لكنها توقفت عند النهاية. و إذا كنا نريد عشرة عناصر من 1 إلى 10 نستطيع كتابتها كذلك

range(1,11)

ايضاً نستطيع إضافة تعيين القفز(التخطي) step في الدالة range حيث تقوم بعد ذلك من سرد قائمة تتخطّى اعداد معينه. فمسلاً التالي:

>>> range(1, 11, 2)

[1, 3, 5, 7, 9]

>>> |

تلاحظوا كيف قامت بالعد من 1 ثم قفزت خطوتين إلى 3 و إلى 5 و هكذا... طبعاً زلك بناءً على طلبنا بتعيين عدد الخطوات و هو العدد 2 بنهاية القوس للدالة range.

هذا كل ما يلزمنا الآن حول الدالة range لأنها على ارتباط وسيق بجُملة التكرار for:

التعرف على جُملة التكرار for:

حسناً! طريقة عمل جملة التكرار for بديهية للغاية و لكن بتحتاج إلى تشريح لبعض مكوناتها! تناولنا جزء مهماً متلك المكونات و هي الدالة range.

نطبق!

>>> for i in range(10):

print i

0

1

2

3

4

5

6

7

8

9

>>> |

أولاً جُملة for متل جملة if بتتطلب الإزاحة النصية و ليها رأس (كل ما قبل العلامة : ) و لها جسد. نلاحظ في راس الجملة for بالتطبيق بالأعلى. نلاحظ أن الجملة و كأنها (لكل عنصر في القائمة المسترجعة من range... قم بطباعة i.

نعمل الشيفرة بطريقة مكشوفة اكتر بالإستغناء عن الدالة range مباشرةً و استبدالها بقائمة مباشرةً.

>>> for i in [0,1,2,3,4,5,6,7,8,9]:

print i

0

1

2

3

4

5

6

7

8

9

>>> |

تقوم python بالمرور على القائمة عنصراً تلو العنصر و تعوض قيمة i بقيمة العنصر و تدخل إلى جسد جملة التكرار و تنفذ كل ما بداخل هذه الجملة من أوامر ثم تعود مرة أخرى إلى العنصر الثاني و الثالث و الرابع لذلك تُسمى بجملة تكرار إلى أن تنتهي من القائمة فتخرج من الجسد تماماً.

التعرف على جُملة التكرار while:

جملة التكرار while تماماً متل جملة التكرار for و لكن ليس بطريقة العد بل و كما يدل اسمها while عليها أي بمعنى بينما أو اثناء(آسفة لست جيدة في النقل إلى العربية كثيراً) و لكنها بهذا المعنى تقريباً. حسناً بينما و أثناء ماذا بالضبط؟ الإجابة هي بينما جُملة الشرط هي True أو طالما جُملة الشرط هي True تقوم Python بتنفيذ كل ما هو موجود داخل الجسد للجملة while.

ندرس هذا المثال ببساطة و هو طباعة المتغير a و زيادته قيمته بواحد داخل جسد الجملة.

>>> a = 0

>>> while a <= 10:

print a

a = a + 1

0

1

2

3

4

5

6

7

8

9

10

>>>

جملة الشرط a <= 10 ستكون صائبة دائماً لأن قيمة a الإستهلالية هي صفر و لكننا كما تلاحظوا قمنا بزيادة المتغير a بواحد لكل عملية تكرارية داخل جسد جملة while. هذا يعني أنها تطبع القيمة لـ a و السطر التاني يقوم بزيادة قيمة a. و طبعاً هذه الزيادة ستتجاوز العدد عشرة فتصبح جُملة الشرط False بعد عدد معين من التكرار و الزيادة و هنا يخرج البرنامج من جملة While لعدم تحقق الشرط.

ملاحظة:

عملية الزيادة هذه ضرورية حيثُ لو اننا تجاهلنا هذه الزيادة و تجاهلنا الحرص على أن جُملة الشرط يجب أن تكون False بعد عدد من التكرارات فإننا سنواجه مشكلة برمجية تُسمى بالتكرار اللامتناهي infinit loop. و عملية الزيادة هذه تسمى بالحارس للتكرار. عبارة عن عملية حراسة للتكرار. لا تحاولوا أن تضعوا قيمة True او جملة دائماً True في جملة while و خصوصاً كمبتدئين لأن ذلك ممكن في كتير من الحالات و لكن لها طُرق برمجية للخروج من هذه الجُملة.

نعم نستطيع الخروج من while حتى إذا كانت الجُملة دائماً True و بدون حراسة و لكن بواسطة الأمر break.

ندرس الشيفرة التالية

>>> while True:

print 'I love Python so much'

if True:

break
#This will break the loop...

I love Python so much

>>> |

لاحظوا أن الشرط ستكون دائما True و هكذا ستطبع جملة "أنا احب ..." بطريقة تكرارية لا متناهية...و لكن بوجود كلمة break و التي بداخل جسد if و التي شرطها ايضاً True سيخرج البرنامج من التكرار بالكامل بمجرد اصطدامه بكلمة break

هذا كل شيء بحمد الله عن ماهية و كيفية عمل جُمل التكرار... هناك استخدامات استثنائية لكلمة else مع جُمل التكرار و لكنها حالات خاصة و خارج نطاق الموضوع...

bye...

تم تعديل هذه المشاركة بواسطة رغـد في 15 مايو 2009 في 05:16

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#22

ماهية و مفهوم الدوال

Functions

post-140583-1242333304_thumb.gif

ماهية الدوال functions:

شاهدنا دوال كتيرة من خلال الدروس السابقة متل help و range و الدوال الحسابية الموجودة بـ math متل sqrt و floor و random...إلى آخر الدوال الموجودة.

نتعرف على دالة فـ python مليئة بالدوال البرمجية الجاهزة للإستعمال.

هذه الدالة تجلب لنا القيمة المطلَقة لعدد ما

>>> abs(-2)

2

>>> abs(2)

2

>>> |

موجودة و لا نحتاج إلى تضمينها بواسطة import.

وظيفة و سبب وجود الدوال هو إنشاء اوامر و نصوص برمجية للإستعمال المتكرر, او لتعددية و تنوعية استعمال تلك النصوص البرمجية. مثلاً الشيفرة التالية لجمع عددين صحيحين وطباعة النتاج.

>>> x = 10

>>> y = 30

>>> print x + y

40

>>> |

حسناً لماذا لا نضم هذه الأجزاء من الشيفرة بقالب معين تُسمى دالة و نستدعيها وقت ما نشاء و نقوم بإدخال الأعداد المناسبة إليها و تقوم بطباعة القيمة على الشاشة؟

نقوم بذلك لنتعرف على كيفية إنشاء الدالة في لغة Python:

>>> def addNumbers(a, b ) :

print a + b

>>> |

نلاحظ استعمال الكلمة def ببداية رأس الدالة(تماماً متل أي رأس سبق الحوار حوله)... نلاحظ بعدها مباشرة اسم الدالة التي انشأنها الإسم باختيارنا نحن و تماماً ينطبق عليها ما ينطبق على تسمية المتغيرات من شروط وقوانين نحوية. يلي إسم الدالة الأقواس يجب أن تكون هناك اقواس حتى و إن لم نرد إدخال قيم لمعالجتها(حتى لو كانت فارغة يعني). نلاحظ نهاية الرأس ايضاً عند الرمز : و نلاحظ يليها الجسد بإزاحة نصية و مكتوبٌ فيه سطر أمر print لطباعة ناتج عملية الجمع بين القيم المُدخلة.

الآن نستدعي الدالة و هذه الطريقة لإستدعاء الدالة بكتابة اسمها يليها الأقواس و تعبئة القيم اللازمة بشكلها التصوري الذي انشأنها أول مرة.

>>> addNumbers(1, 2)

3

>>> addNumbers(20,2)

22

>>> addNumbers(2.3, 34.5)

36.8

>>> |

لاحظوا كيفية الإستفادة من الدوال و كيفية اعادة تكرار استعمالهن بالبرنامج بقيم مختلفة. بسيطة للغاية.

نقوم بإنشاء دالة أخرى لطباعة مرحباً و ثم الإسم لترسيخ المفهوم...

def sayHello(name):

print "Hello", name

و نلاحظ كيفية استعمال هذه الدالة في برنامجنا و إدخال و ترحيب ما نشاء...

>>> sayHello('Ahmed')

Hello Ahmed

>>> sayHello('Lamya')

Hello Lamya

>>> sayHello('Mohammed')

Hello Mohammed

>>> |

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

هذا كل شيء تقريباً عن مفهوم و ماهية الدول و طريقة عملها... مناسباً لأن يكون بمدخل إلى لغة python.

bye...

تم تعديل هذه المشاركة بواسطة رغـد في 15 مايو 2009 في 06:00

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#23

إنشاء ملفات برمجية

Modules

post-140583-1242333304_thumb.gif

مفهوم الملف البرمجي Module:

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

كل ما قمنا بكتابته و تطبيقه داخل نافذة Python Shell سيكون نسياً منسياً بمجرد إغلاق النافذة. و لكن بكتابة برامجنا و تطبيقاتنا و بطريقة نموزجية داخل ملف نكون احتظنا بهن لتطويرهن و الإستفادة منهن.

بكل بساطة نقوم إنشاء ملف من قائمة File الموجودة بنافذة Python Shell ثم نقوم باختيار الأمر New Window. سنشاهد ملفاً فارغاً تماماً. نقوم بكتابة أي شيء بلغة Python و كما درسنا سابقاً.

اكتبوا الأمر التالي فقط

  1. print "Hello Python..."
  2.  

و نقوم بحفظ هذا الملف باسم معين وليكن test و بامتداد اجباري و هو .py

حسناً كيف نقوم بتشغيل و اختبار هذا الملف؟

الآن و الملف test.py مفتوح أمامنا و جلسة عملنا نقوم من هذا الملف باختيار الأمر Run Module من قائمة Run. أو الضغط على مفتاح F5. سنشاهد يا سبحان الله جملة Hello Python التي كتبناها مطبوعة بنافدة Python Shell.

ايضاً ليس هناك سحراً حاولوا إنشاء دالة بقلب هذا الملف تماماً كما درسنا سابقاً و قوموا بحفظ الملف. ثم نقوم بتطبيق ما فهمناها من هذا الدرس (تضمين الملفات بواسطة الأمر import (تماماً مثلما قمنا به عند تضمين و جلب math بالضبط.

post-140583-1242333304_thumb.gif

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

Bye...

تم تعديل هذه المشاركة بواسطة رغـد في 15 مايو 2009 في 07:44

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#24

شكرا على الشرح الرائع

فعلا كما تقولين البايثون لغة تتحدث اليها وتتحدث اليك

قريبا قد تعترضنى تلك اللغة لانها مضمنة فى blender وانوى البدء فى شرح البلندر وتكملة تعلمى فية وغالبا معظم api و لغة سكربت البرامج (خاصة برامج التصميم ثلاثى الابعاد ) تستخدمها حتى ان كانوا يحتوى على لغة سكربت اخرى (مثل اضافة البايثون للمايا بجانب mel )

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

يمكن ايجاز كلامى الى نقطتين

-عند قراء كود البايثون اعتبرها محادثة تتم بين شخصين (التفاعل لحظة بلحظة )

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

اليس كلامى صحيح ؟

لغة اكثر من مسلية مع امكانيات رائعة واكثر ما يجذبنى اليها هو انها اللغة المستخدمة فى برمجة الالعاب فى game engine الخاص بالبلندر

تم تعديل هذه المشاركة بواسطة apex في 15 مايو 2009 في 14:04

name : mohamedyosry

#25
apex كتب:
شكرا على الشرح الرائع

عفواً أخي...

apex كتب:
فعلا كما تقولين البايثون لغة تتحدث اليها وتتحدث اليك

نعم تماماً و خصوصاً اثناء التعلم بنافدة Python Shell.

apex كتب:
قريبا قد تعترضنى تلك اللغة لانها مضمنة فى blender وانوى البدء فى شرح البلندر وتكملة تعلمى فية وغالبا معظم api و لغة سكربت البرامج (خاصة برامج التصميم ثلاثى الابعاد ) تستخدمها حتى ان كانوا يحتوى على لغة سكربت اخرى (مثل اضافة البايثون للمايا بجانب mel )

بتزكر او بظن بأن Blender معمول بالكامل بلغة Python مش بس بيستعمل او يتضمن لغة Python. مالي متأكدة بس بتزكر هيك شي بإحدى المقالات.

شكراً بخصوص الخبرية لمايا بأنها تستعمل Python.

apex كتب:
لكنى كجديد على تلك اللغة لاحظت ان يجب على التعامل معها كsyntax وان لا اتشوش بفكر اللغات العاملة على compiling لان الاسكربت لا تهتم بالاقواس وما الى ذلك لانها تترجم كل جملة وحدها وتسير خطوة خطوة ام اللغات الاخرى تحتاج الى الاقواس والكثير من الاضافات لانها تترجم ككل

لأ... طبعاً لغة Python بتشبه لغة Java على الأقل من حيث التفسير و الـ VM و الملف المصدري بيكون Bytecode و مع هيك لغة Java لغة مفسرة متل python و بتستعمل الصيغة النحوية لـ C++ الأقواس المجعدة Curly Braces. بينما لغة Pascal لغة مش مفسرة و مع هيك بتستعمل طريقة الإزاحة النصية متل Python و كمان لغة ActionScript لغة من نوع Scripting Programming Language و بتعمد على VM و بتستعمل الأقواس نحوياً متل C++ بالزبط.

apex كتب:
-عند قراء كود البايثون اعتبرها محادثة تتم بين شخصين (التفاعل لحظة بلحظة )

طبعاً هيك اللغات المفسرة متل Java و Python...آهه مزبوط هيك

apex كتب:
-عند قراء كود للغة تعتمد على الكومبايلنج يجب اعتبار انها رسالة من شخص لاخر لذلك يجب توضيح كل نقطة والاخرى و فصل الامور حتى لا تختلط لذلك نهتم بكل وسائل التوضيح كالاقواس وما الى ذلك

اليس كلامى صحيح ؟

آسفة...لأ!

و الإجابة كاتبتا فوق, بخصوص الإزاحة النصية و مشاركتك الكريمة (المحبرة باللون الأحمر)...

apex كتب:
لغة اكثر من مسلية مع امكانيات رائعة واكثر ما يجذبنى اليها هو انها اللغة المستخدمة فى برمجة الالعاب فى game engine الخاص بالبلندر

لو كنت بتحب هيك شغلات بنصحك تستعمل Max 3d افضل و لغتها المتضمنة هي MaxScript. افضل بكتير و هناك نسخة مجانية لأغراض التعليم...

موفق يارب

و سعيدة بمشاركتك و إضافتك الكريمة

Bye...

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

مواضيع مشابهة