الاثنين، 5 أكتوبر 2015

اهلا جانجو...Hello Django

مرحبا جانجو
ما هو Django
Django هو اطار عمل للبايثون يستخدم في صناعة تطبيقات الويب
ما معنى ذلك؟
معنى ذلك انه يمكنك الاستفادة من هذا الاطار لتحول فكرتك الي تطبيق ويب بسهوله وسرعة دون الاهتمام باشياء كثيرة مطلوبة لبرمجة تطبيقات الويب ولا تمت لفكرتك الاساسية بصلة كالحماية مثلا

يمكنكم ايجاد الموقع الخاص بجانجو في هذا الرابط
https://www.djangoproject.com/

ويمكننا البدء بكيفية تحميله وبرمجة اولى تطبيقاتنا في المقالة القادمة باذن الله

الأحد، 3 يوليو 2011

مفهوم دوال الكائنات في بايثون objects methods in Python

اعتذر عن الانقطاع السابق
دعونا نكمل ما تحدثنا عنه سابقا
كنا نتحدث عن الدوال ومفهومها
وكنت وعدتكم بالتحدث عن الوحدات modules  ولكن وجدت اننا بحاجه لنوع من تنشيط الذاكرة ورؤية استخدامات اخرى للدوال حيث انها من الاهمية بما يكفي

دعونا نضرب مثلا
نكون قائمة مثلا List


>>> myList= ['Python','C Sharp','C Plus Plus','Java','Visual Basic']
>>> myList
['Python', 'C Sharp', 'C Plus Plus', 'Java', 'Visual Basic']
>>> 

دعونا نجرب دالة index 
انها تعيد مكان-ترتيب- عنصر ما في القائمة 
>>> myList.index('Java')
3
>>> 

ثم نجرب دالة العدد
انها - وهي تابعة لكائن القائمة myList تعني انها تعيد عدد مرات تكرار عنصر معين في القائمة
>>> myList.count('Java')
1

ثم دالة الترتيب
انها تعني -هنا ايضا- ترتيب عناصر القائمة ابجديا
>>> myList.sort()
>>> myList
['C Plus Plus', 'C Sharp', 'Java', 'Python', 'Visual Basic']

ثم دالة العكس 
انها تعكس ترتيب عناصر القائمة

>>> myList.reverse()
>>> myList
['Visual Basic', 'Python', 'Java', 'C Sharp', 'C Plus Plus']


دالة pop وهي تعني اخراج عنصر ما من القائمة واعادتة لنا 
>>> myList.pop(3)
'C Sharp'
>>> myList
['Visual Basic', 'Python', 'Java', 'C Plus Plus']

نلاحظ هنا اننا قمنا بعمل pop للعنصر رقم 3 فقام بايثون بطباعته- اي رده الينا- وفي نفس الوقت مسحه من القائمة

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

>>> myList.remove('C Plus Plus')
>>> myList
['Visual Basic', 'Python', 'Java']






الان حان موعد واجبنا المنزلي

تخيل ما هو مكتوب في دالة pop كي تقوم بما تقوم به فعلا

ارجو ترك الواجب المنزلي في التعليق





السبت، 23 أبريل 2011

الدوال في بايثون Functions in Python

مرحبا بكم من جديد...
عن الدوال سنتحدث اليوم
الدوال رياضيا - باختصار مخل - هي معادلة رياضية ما نقوم بادخال مدخلاتها فتخرج لنا ناتجها
والوصف لغير الرياضيين يمكن ان يكون مثل الماكينة التي تدخل لها الثور من جهة فيخرج لك بولوبيف من الجهة الاخرى
والوصف لمن يودو ان يكونوا برمجيين
فالدوال عبارة عن برنامج صغير يقوم بمعالجة شيء محدد نقوم بعزله في اطار ما -الدالة- ليمكننا اعادة استخدامه مرات اخرى
والبرامج عادة تتكون من مجموعة من الدوال اما منفصلة -وتدعى هذة البرامج برامج هيكلية structure programs -  واما ان تكون هذة الدوال في اطر اكثر تنظيما مثل الفئات Classes - وتدعى هذة البرامج برامج كائنية التوجهه - object oriented programs - وفي كل الحالات تحتفظ الدوال بمفهومها وتعريفها
دعونا نضرب بعض الامثلة
طفل صغير نقوم بتعليمه المشي مثلا
هذة دالة بذلنا فيها مجهود ما
وقت ما صببنا كل تركيزنا على تعليم هذا الطفل دالة السير
قلنا له مثلا
عليك ان تحمل وزنك كله على احدى ساقيك ثم تحرك الساق الاخرى الى الامام قليلا ثم تحمل وزنك كله على ساقك الامامية ثم تفعل ذلك مرارا حتى تصل لوجهتك

هذه هي دالة السير

يمكننا ايضا تعليمه دالة الركض
وهي تشبه دالة السير باختلافات قليلة
مثلا سنبدل كل "ثم" بــ "فــ" للدلالة على السرعة
سنخبره انه حين يقوم بتحميل وزنه على احدى ساقيه ونقل الاخرى للامام عليه ان يثني ركبة الساق الثابته ليتثنى له نقل الساق الاخرى للامام مسافه اكبر

وهكذا
في البرامج الهيكلية

يمكننا استدعاء دالة السير مثلا بان نخبره

خذ هذه الاشياء و(سر) الى (غرفتك)
هنا قمنا باستدعاء دالة لسير وقمنا باعطاءها مدخلها -parameter- وهو الوجهة التي سيتوقف عندها عن السير


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

نعود الان للبرمجة

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

هل تذكرون درس العمليات الحسابية في بايثون؟

حين قمنا بضرب هذا المثال لتوضيح عملية الرفع لأس معين باستخدام الرمز **؟


>>> 2**3
8

يمكننا استخدام دالة الاسس pow لتحقيق نفس الهدف

مثلا


>>> pow(2,3)
8

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

مثل


>>> abs(-3)
3
>>> abs(4)
4

العملية سهلة حتى هذه اللحظة
لا تقلق بسبب عدم معرفتك الدوال التي توفرها بايثون فان هذا امر سهل وفي اسواء الظروف فهو تراكمي فلا تقلق واستمر

هناك دالة اخرى تدعى floor
ولكن كي نتحدث عنها نحتاج لدرس اخر يدعى module in Python
او الوحدات في بايثون
فالى اللقاء



الدوال في بايثون Functions in Python

مرحبا بكم من جديد...
عن الدوال سنتحدث اليوم
الدوال رياضيا - باختصار مخل - هي معادلة رياضية ما نقوم بادخال مدخلاتها فتخرج لنا ناتجها
والوصف لغير الرياضيين يمكن ان يكون مثل الماكينة التي تدخل لها الثور من جهة فيخرج لك بولوبيف من الجهة الاخرى
والوصف لمن يودو ان يكونوا برمجيين
فالدوال عبارة عن برنامج صغير يقوم بمعالجة شيء محدد نقوم بعزله في اطار ما -الدالة- ليمكننا اعادة استخدامه مرات اخرى
والبرامج عادة تتكون من مجموعة من الدوال اما منفصلة -وتدعى هذة البرامج برامج هيكلية structure programs -  واما ان تكون هذة الدوال في اطر اكثر تنظيما مثل الفئات Classes - وتدعى هذة البرامج برامج كائنية التوجهه - object oriented programs - وفي كل الحالات تحتفظ الدوال بمفهومها وتعريفها
دعونا نضرب بعض الامثلة
طفل صغير نقوم بتعليمه المشي مثلا
هذة دالة بذلنا فيها مجهود ما
وقت ما صببنا كل تركيزنا على تعليم هذا الطفل دالة السير
قلنا له مثلا
عليك ان تحمل وزنك كله على احدى ساقيك ثم تحرك الساق الاخرى الى الامام قليلا ثم تحمل وزنك كله على ساقك الامامية ثم تفعل ذلك مرارا حتى تصل لوجهتك

هذه هي دالة السير

يمكننا ايضا تعليمه دالة الركض
وهي تشبه دالة السير باختلافات قليلة
مثلا سنبدل كل "ثم" بــ "فــ" للدلالة على السرعة
سنخبره انه حين يقوم بتحميل وزنه على احدى ساقيه ونقل الاخرى للامام عليه ان يثني ركبة الساق الثابته ليتثنى له نقل الساق الاخرى للامام مسافه اكبر

وهكذا
في البرامج الهيكلية

يمكننا استدعاء دالة السير مثلا بان نخبره

خذ هذه الاشياء و(سر) الى (غرفتك)
هنا قمنا باستدعاء دالة لسير وقمنا باعطاءها مدخلها -parameter- وهو الوجهة التي سيتوقف عندها عن السير


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

نعود الان للبرمجة

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

هل تذكرون درس العمليات الحسابية في بايثون؟

حين قمنا بضرب هذا المثال لتوضيح عملية الرفع لأس معين باستخدام الرمز **؟


>>> 2**3
8

يمكننا استخدام دالة الاسس pow لتحقيق نفس الهدف

مثلا


>>> pow(2,3)
8

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

مثل


>>> abs(-3)
3
>>> abs(4)
4

العملية سهلة حتى هذه اللحظة
لا تقلق بسبب عدم معرفتك الدوال التي توفرها بايثون فان هذا امر سهل وفي اسواء الظروف فهو تراكمي فلا تقلق واستمر

هناك دالة اخرى تدعى floor
ولكن كي نتحدث عنها نحتاج لدرس اخر يدعى module in Python
او الوحدات في بايثون
فالى اللقاء



السبت، 16 أبريل 2011

المتغيرات في بايثون Variables in Python

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

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

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

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


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

ببساطة كل ما عليك هو ان تسمي متغيرك
هذا منطقي الى حد ما
على الاقل حتى تعرف اين تضع ماذا

لنبداء بهذا المثال

>>> x=5

هكذا
فقط
لا شيء اخر

اذن كيف تستخدمه؟؟؟
ببساطة هكذا

>>> x
5

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

دعنا نقوم ببع العمليات لتتضح الرؤية


>>> x+1
6
>>> x+2
7
>>> y=x+2
>>> y
7
>>> x+y
12
>>> x-y
-2
>>> y-x
2
>>> x*y
35
>>> x**y
78125
>>> x/y
0
>>> y/x
1
>>> y=x+0.0
>>> y/x
1.0
>>> y=x+3.0
>>> y/x
1.6
>>> y%x
3.0
>>> 


هكذا ببساطة
اذن ماذا لو قررت فجأة تغير نوع المتغير
مثلا
تقوم بتحويله لمتغير نصي كما قمنا بتحوليه لمتغير كسري

>>> y="Python is my language"
>>> y
'Python is my language'

الى الان والموضوع الى حد ما سهل

لكن هل يمكن للمبرمج ان يكون لا يعلم مسبقا القيمة التي ستكون في المتغير؟؟
مثلا هل يمكن ان يقوم بسؤال المستخدم عن رقم ما ويقوم بمضاعفته مثلا؟؟؟

يمكن فعل ذلك بالطبع
وهنا نتحدث عن دالة في بايثون- ان كنت منزعج من كلمة داله عليك تجاهلها مؤقتا حتى نقوم بشرحها بشكل تفصيلي- اسمها input

>>> x= input()
3
>>> x
3

يمكننا اضافة رسالة نصية للمستخدم  بالشكل التالي

>>> x= input("Enter your age here: ")
Enter your age here: 30
>>> x
30

هكذا يمكننا التعامل مع المتغيرات بشكل يسمح بتسميتها متغيرات فعلا

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

بايثون كما قلنا سابقا لغة حساسة لحالة الاحرف
فحرف A يختلف عن حرف a
ولهذا حين تسمي متغير ما X فلا تتوقع ان يمكنك استدعاءه عن طريق حرف x

ثانيا يمكن للمتغير ان يتكون من اكثر من حرف
مثلا
count
age
isCurrentYear

يمكن للمتغير ان يبدا بحرف سرطة سفلية
مثلا
_count 
_age 
_isCurrentYear
يمكن ان يحتوي اسم المتغير على ارقام ولكن لايمكن ان يبداء برقم 
مثلا
student1
class32nd

لكن لا يمكن ان يكون كالاتي
1student 
32ndClass

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

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

سوف نقوم بذكر هذه المماراسات خلال دروسنا وان سمح الوقت سنضع لها درس مستقل ان شاء الله
اراكم على خير








العمليات الحسابية في بايثون Calculations in Python

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

>>> 5+7
12
النتيجة بسيطة وسهلة واسرع مما كنت اتصور
بالنسبة لعمليات الطرح
>>> 12-7
5

عمليات الضرب
>>> 5*6
30

عملية الضرب المركبة 
>>> 2*2*2
8

الاسس

>>> 2**3
8

عملية القسمة
>>> 30/6
5
او 
>>> 30/7
4
 ما هذا ؟؟؟   هذة النتيجة ليست دقيقة بما يكفي
يتعامل بايثون مع عمليات القسمة بناء على المدخلات 
فاذا كانت معاملات عملية القسمة كلها اعداد صحيحة فان النتيجة ستكون رقم صحيح
ولكن اذا اردت ان تكون النتيجة بها ارقام عشرية للدقة عليك ان تدخل احد المعاملات على الاقل بشكل عشري

وهذه بعض الامثلة لذلك
>>> 30/7.0
4.285714285714286
>>> 30.0/7
4.285714285714286
>>> 30./7
4.285714285714286
>>> 30/7.
4.285714285714286
>>> 30./7.
4.285714285714286
>>> 30.0/7.0
4.285714285714286

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

بالطريقة الادبية -وليست الرياضية- فان 30 مقسومة على 7 لا ينتج عنها رقم صحيح تخيل اننا ثلاثون شخصا في رحلة ولا يوجد غير سبع غرف فقط فكيف سيتم تقسيمنا ؟؟؟

مبدئيا سيأخذ كل اربعة منا غرفة وبهذا يكون قد تم تسكين 28 منا وسيتبقي اثنان 
مشكلة اين سينام الاثنان هذه الليلة هي مشكلتهم وحدهم لسنا في موضع حلها فلنتركهم ونعود للبايثون

اذا كنت تريد ايجاد خارج القسمة - 2 - في العملية السابقة فعليك استخدام هذا المعامل
%
كما في المثال الاتي
>>> 30%7
2
>>> 30%7
2
>>> 30.5%7
2.5
>>> 30.7%7.2
1.8999999999999986

بهذا نكون قد انهينا هذه النقطة بشكل مبدئي 
سعيد باسئلتكم واقتراحاتكم للتطوير والتحسين 
نلتقي قريبا باذن الله


الخميس، 31 مارس 2011

توقف مؤقت

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