بسم الله الرحمن الرحيم
سنحاول فى هذا الموضوع مناقشة لغة البايثون و بعض تطبيقاتها ثم نتجه بعدها الى هدفنا الاسمن "سمين جدا ...يعنى " و هو تطبيق هذه المعلومات و الحبشتكانات فى مجال صناعة السيراميك ... عفوا صناعة الجرافيك
نبذة عن لغات البرمجة
زمان اوى .. الحياة كانت صعبة جدا .. و الشباب كان لازم يكتبوا البرامج بال binary system
يعنى عدم المؤاخذة عشان تكتب حرف الف او a مثلا تفضل تكتب حاجات زى كده 1000000000000000
و النتيجة الطبيعية لكده ان الاب كان بيبدأ فى البرنامج و بعدين يموت و ييجى ابنه يكمل و هكذا .. و طبعا الموضوع واضح انه غير صالح للعقول الادمية
و بعدين "بعد ما دماغهم باظت" سموا هذه اللغات low level languages
لانها تتعامل مع اللغة التى يفهمها البروسيسور و ليس مع لغات البنى ادمين
بعدين بدأت تظهر اللغات العالية او high level language اصبحت قريبة من العقول الادمية و لذلك نما مجال البرمجة و اصبح لا غنى عنه فى اى مجال يتعلق بالحاسبات ... حتى انك تجد فى الوطن العربى بعض المحال التجارية و المولات تستأجر مبرمجين لكتابة برامج المحاسبات التجارية و بالمثل فى مجال الجرافيك .. تجد الشركات و الاستوديوهات توظف developers و scripters لاتمام وظائف يكاد يكون من المستحيل او احيانا مستحيل فعلا اتمامها بدون برمجة
من امثلة اللغات العالية .. هى معظم اللغات المستخدمة حاليا
c++ , Java , VB , C# الخ
و لكن فى نفس الوقت ومع جعل اللغات اقرب الى عقل الانسان اصبحت اللغات متسعة جدا و اصبح العمل بها ايضا به نسبة غير قليلة من التعقيد
يضاف الى ذلك ان تطبيقات اللغات اتسعت جدا و اصبحت العلاقات الرياضية و الخوارزميات "algorithms" من الاساسيات المتعارف عليها و نعم اصبحت اللغات اسهل فى التعلم و اقرب الى العقل البشرى و لكنها لم تصبح سهلة جدا ..
بسبب موضوعنا الذى نناقشه فسنحاول تقسيم جوانب اللغات الى عدة اجزاء لكى تصبح اسهل فى الفهم
1- ال syntax قواعد اللغة
2- ال interpreter
3- ال Compiler
ايضا لا يمكنك ان تتوقع ان يفهم جهاز الكمبيوتر ما هو المقصود من هذه الجملة
-يجب ان تفهم و تتاكد ان جهاز الكمبيوتر جهاز فاقد للعقل ... لا يستطيع ان يفعل شىء لم تأمره به
و بسبب انه فاقد للعقل ... حتى الاوامر يجب ان يكون لها قواعد تلتزم بها حين اعطاء الامر ... اذا اردت ان تستريح فى تعلم اى لغة .. تذكر القاعدة الاتية
اشرح الامر الذى تريد تنفيذه ملتزما بقواعد اللغة و اشرحه كانك تشرح الامر لطفل صغير ... باختصار .. الامر يجب ان يكون واضح لا لبس فيه
-القواعد التى تتقيد بها .. هى غالبا قواعد بسيطة و سيأتى ذكرها لاحقا .. الان اريد فقط ان يكون واضحا .. انك لا تستطيع ان تكتب للكمبيوتر " افعل حبشتكانات " و تنتظر ان يقوم الكمبيوتر .. بفعل الحبشتكانات ......
على الجانب الاخر ... اذا اخبرت الكمبيوتر ان الحبشتكانات هى " ان يقوم الجهاز بالاغلاق بعد وقت محدد " و فعلت ذلك مراعيا للقواعد ... اؤكد لك ان الكمبيوتر سيقوم بفعل الحبشتكانات
-رغم انى اتجنب كتابة اى كود فى هذه المقدمة الا انى اريد التأكد ان هذه الفكرة وصلت
الان سنفعل تجربة صغيرة جدا على ال DOS .. لتوضيح قصة ال ......Syntax

يريد ان يخبرك انه لا يفهم اى شىء ... و لانك اخطات فى الكتابة و اضفت حرف n
... لم يفهم ماذا تريد و بالطبع لم ينفذ ما تريد
-الان يجب ان تتأكد انك محاصر بطريقة كتابة محددة لا تقبل ان تسهو او تكتب حروف خطأ ... على ان قواعد لغات البرمجة تحتاج لدراسة اشمل من هذه المقدمة
و قد رايت انه سيكون من الواقعية ان نناقش ال Syntax مع كل امر على حدة .. الان لو بدأنا فى كتابة قواعد ال syntax
سيصبح عدد الاشياء المجهولة كثير جدا .. و ستكثر المجاهيل و لن نستطيع التعامل معها
مكونات ال syntax
-القواعد بسيطة جدا ... اذا اردت ان تجمع رقمين .. سنكتب الرقم الاول + الرقم الثانى
نطرحهم ... نقسمهم ..الخ ... بالمثل و لكن تذكر اننا نتعامل مع كأئن فاقد للعقل .. لذلك حتى هذه العمليات البسيطة .. قد تحتاج لطريقة معينة فى الكتابة .. خصوصا اذا كان ذلك جزئا من عملية اكبر و اعقد
Integer & Float Point Numbers
-الارقام تنقسم الى قسمين ... ارقام صحيحة مثل 1 و 3 .... 6 ........... الخ وهذه تسمى integer
و القسم الاخر هو ال Float Point Numbers و يتم اختصارها فى كلمة Float فقط و هى تعبر عن
الارقام العشرية "التى تحتوى على فواصل " مثل 1.7 او 4.5 ... الخ
-السؤال البديهى الان ... لماذا هذا التعقيد ؟
-اذا فكرنا بمنطق الجرافكس ... فليس من الطبيعى ان تكتب امر يقول للبرنامج ... انشىء ثلاث مكعبات و نصف
او انشىء مائة كرة فاصل 7 .... بالتأكيد تظهر لك الان ضرورة ان يكون الرقم هنا integer
ايضا من غير المعقول ان تتقيد مثلا عند دوران مجسم بارقام صحيحة .... لنتخيل كاراكتر يلتفت اليك برأسه و
جذعه ... سيكون من العجيب جدا ... ان نتقيد هنا بقيم دوران صحيحة .... نحن فعلا نحتاج الى Float numbers
Variables
يتم ترجمة هذه الكلمة الى لفظ المتغيرات ... و ترجمتى الشخصية لها ..." الاوعية الصغيرة "
-هذه الاوعية يمكنك ان تضع فيها ... بطيخ ... او قرود ... او افيال ... كما تريد ... ما يجب ان تحذر منه
هو ان تخلط بين الوعاء نفسه ... و بين ما يحتويه هذا الوعاء
-فى مراحل الدراسة المختلفة ... تتعلم ان
س = 5 ..... معناها ان المجهول س ... اصبح الان غير مجهولا و هو رقم و قيمته 5
فى لغات البرمجة ...
س=5 ..... معناها ان الوعاء س ... به الان رقم نوعه integer و قيمته 5
لاحظ اننا لا نتكلم عن مجهول هنا ... فقط نحن وضعنا فى الوعاء الرقم الصحيح 5 ... مرة اخرى
لا تخلط بين الوعاء نفسه و بين ما يحتويه الوعاء
Arrays
بامانة لا اعرف اللفظ العربى المترجم .. ربما هو متتاليات او ما شابه ... احيانا حتى ممكن ان نطلق عليها
مصفوفات ... و لكن لفظ مصفوفات خطير جدا .. خصوصا اننا ف برامج الجرافكس فعلا نتعامل مع مصفوفات
ترجمتى الشخصية لها هى .....الاوعية الكبيرة ... لماذا ؟
لانها تستطيع الاحتفاظ بعدد لا نهائى من القيم "مثلا ارقام" اوالاحجام " احجام الفيلة و البراغيث و ربما المكعبات كمان " ... ايضا و بواقع عملى اكثر .. تستطيع الاحتفاظ بكل عناصر المشهد !
او كل مواقع القطع الناتجة عن الانفجار ... او كل ال keys للكاراكتر فى المشهد ... باختصار ... ليلة
-هناك انواع من ال arrays ... و فى بعض اللغات يطلق عليها لفظ اخر مثل Lists ... وهناك الفاظ اخرى
ليس الان محل ذكرها
-هناك شىء مهم جدا ايضا يجب ان نتمعن فيه ... و هو ان عناصر ال Arrays قد تكون Arrays !
صعب جدا ان تفهم ذلك بدون امثلة و كود ... لاحقا ان شاء الله
-ظهرت مشكلة الان .... ماهى فائدة ان تقوم بتخزين عناصر المشهد مثلا فى Array ؟
الجواب ... ليس هناك فائدة !
الا فى حالة انى استطيع استدعاء هذه العناصر كما اريد ... الان اريد الشجرة
الموجودة على اليمين ... و اريد ان اختار جميع الاوراق الموجودة فيها ,, و اريد تغيير الوان الاوراق بحيث
يكون هناك تباين فى هذه الالوان ........ ابتسم للحياة .... تستطيع ان تفعل ذلك ... و لكن لكى تفعل ذلك لابد ان
تعرف ال
Loops/Iterations
-من اشهر انواعها ال for loop و ال while loop .. و تستطيع ان تفكر فيها كمحصل التذاكر فى القطار ..
فهو يمر على جميع الركاب "عناصر الArray " و يؤشر ان التذكرة صحيحة
-مرة اخرى ليس من السهل ابدا فهم ال Loops بدون كود و امثلة ... تذكر ان هذه مقدمة فقط
If statement /Conditional statements/While statement
-يتم ترجمة هذه الحبشتكانات بالفاظ غير واضحة المعالم ...الارتباطات الشرطية ! او الشروط الارتباطية
-بدلا من عناء ترجمة ليس لها معنى ... اضع كود تخيلى باللغة العربية
*الكود مستخرج من اغنية عايدة الايوبى “No_Pun_Intended”
Functions
-البرمجة او السكربتنج موجود فى حالة برامج الجرافيكس لتقليل وقت العمل اولا ... ثم فتح جميع الحدود ثانيا
من المضحك ان تكتب كود من 20 سطر ... و حينما تحتاج نفس الوظيفة مرة اخرى .. تبدأ فى كتابة ال 20 سطر
مرة اخرى ... و ان احتجت نفس الوظيفة تكتبهم مرة اخرى !
لنفترض انك كتبت كود يقوم بحساب مساحة المجسم ... الطريقة المنطقية ان تجعل هذا الكود عبارة عن Function
و لو احتجت حساب مساحة اى مجسم عندك فى المشهد ... مجرد تستدعى هذه الوظيفة على كل مجسم !!!
مثال
الان اذا كانت معادلاتك لحساب مساحة المثلث صحيحة ... فكل ما تحتاجه ان تختار المجسم و تستدعى الوظيفة
ربما لم تلاحظ كيف بدانا فى التعقيدات ......
-انشانا وظيفة .... ثم بداخل هذه الوظيفة ... بدأنا فى وضع الشروط الارتباطية ... اذا .... IF statement
-ايضا اذا اردنا ان نفعل ذلك على كل المثلثات الموجودة ... لابد من استخدام ال For Loop .... نستدعى المحصل لكى يمر على جميع الركاب
-ماذا لو كان المشهد يحتوى على مربعات ؟ او مكعبات ؟
لابد ان نلجأ مرة اخرى لل If statement للتأكد ان العنصر هو مثلث و ليس اى شىء اخر
-اذا احسست بالدوار الان ... فهذا عظيم و هى علامة ايجابية ... استمر
-الجزء الموجود بين الاقواس المعقوفة "Curled Brackets " هو ما يسمى بال Function Definition
او بالعربى ... توضيح كيف تعمل هذه الوظيفة .. وكما ترى يمكن ان يحتوى على ايا من مكونات ال Syntax ..
لضمان ان تكون الوظيفة فعالة ....
الان هيا نكتب الكود و نتأكد انه لن تحدث اخطاء
- رغم ان هذا الكود تخيلى تماما الا انه سيفشل !!
-و هذا طبيعى جدا ... نحن لم نوضح ما هى وظيفة " Calculate the Area Of Triangle "
و لذلك سينكسر الكود عند هذه النقطة .. لان البرنامج او ال interpreter لا يعلم هذه الوظيفة
مرة اخرى ...تذكر انك تتعامل مع شىء فاقد للعقل
هيا نكتبها بطريقة سليمة .......
هل تتذكر مكونات ال Syntax ؟ الان اين نحن ؟ او فى ماذا نتكلم ؟
-نتكلم فى اول عنصر من عناصر لغات البرمجة و هو ال Syntax و تكلمنا عن المتغيرات و الارتباطات و المتتاليات و انواع الارقام ثم نتكلم الان فى الوظائف ... اذا لم تتذكر الان ... راجع الموضوع من الاول ....
نحن نتعامل مع كائن فاقد للعقل .. ولا يقبل بأخطاء ...... تذكر ذلك دائما
-سأكتفى بهذه المقدمة عن ال syntax رغم انى لم اتكلم فى اشياء هامة جدا ... و لكن ارى ان وجود امثلة مع كود حقيقى مع شرح ... سيكون افضل و سيوضح الفكرة اكثر
الشاشة السوداء ... فى حالة البايثون ... نحن سنستخدم ال interpreter فى الاكواد القصيرة فقط
و فائدته تنبيهك اذا اخطات فى كتابة ال Syntax ... او تجربة شىء معين ... اما عمليا ... فسنحتاج ل
Text editor و هو موجود طبعا ... ولكن البعض يفضل انواع خارجية مثل ال UltraEdit NotePad++
فقط هذه صورة لل interpreter فى البايثون

و سنكتفى بهذا الان
3- The Compiler- اذا كنت نسيت ... فتذكر ...ان الكمبيوتر فى الحقيقة " البروسيسور" لا يفهم الا النظام الثنائى binary system
بينما نحن نكتب الاوامر بلغة عالية و احيانا تقترب من الانجليزية ... لابد ان يكون هناك من يترجم للبروسيسور
لغتنا العالية ... الى لغته المنخفضة و يحولها الى ال Binary System و هذه وظيفة ما يسمى بال
Compiler
الان يبدأ التخبط ...انا لا احتاج ل compiler ... اللغة موجودة عندى فى برنامجى .. و اكتب الكود فيتم تنفيذه !
لازلنا فى مرحلة اولية تماما ... للخوض فى هذه القصة ... على العموم ... البايثون فى برامج الجرافيكس تستطيع
استخدامها من داخل البرنامج .. وتستطيع ايضا ان تستخدمها من خارج البرنامج تماما .. للاتصال بالبرنامج .... بخ
سنحاول فى هذا الموضوع مناقشة لغة البايثون و بعض تطبيقاتها ثم نتجه بعدها الى هدفنا الاسمن "سمين جدا ...يعنى " و هو تطبيق هذه المعلومات و الحبشتكانات فى مجال صناعة السيراميك ... عفوا صناعة الجرافيك
نبذة عن لغات البرمجة
زمان اوى .. الحياة كانت صعبة جدا .. و الشباب كان لازم يكتبوا البرامج بال binary system
يعنى عدم المؤاخذة عشان تكتب حرف الف او a مثلا تفضل تكتب حاجات زى كده 1000000000000000
و النتيجة الطبيعية لكده ان الاب كان بيبدأ فى البرنامج و بعدين يموت و ييجى ابنه يكمل و هكذا .. و طبعا الموضوع واضح انه غير صالح للعقول الادمية
و بعدين "بعد ما دماغهم باظت" سموا هذه اللغات low level languages
لانها تتعامل مع اللغة التى يفهمها البروسيسور و ليس مع لغات البنى ادمين
بعدين بدأت تظهر اللغات العالية او high level language اصبحت قريبة من العقول الادمية و لذلك نما مجال البرمجة و اصبح لا غنى عنه فى اى مجال يتعلق بالحاسبات ... حتى انك تجد فى الوطن العربى بعض المحال التجارية و المولات تستأجر مبرمجين لكتابة برامج المحاسبات التجارية و بالمثل فى مجال الجرافيك .. تجد الشركات و الاستوديوهات توظف developers و scripters لاتمام وظائف يكاد يكون من المستحيل او احيانا مستحيل فعلا اتمامها بدون برمجة
من امثلة اللغات العالية .. هى معظم اللغات المستخدمة حاليا
c++ , Java , VB , C# الخ
و لكن فى نفس الوقت ومع جعل اللغات اقرب الى عقل الانسان اصبحت اللغات متسعة جدا و اصبح العمل بها ايضا به نسبة غير قليلة من التعقيد
يضاف الى ذلك ان تطبيقات اللغات اتسعت جدا و اصبحت العلاقات الرياضية و الخوارزميات "algorithms" من الاساسيات المتعارف عليها و نعم اصبحت اللغات اسهل فى التعلم و اقرب الى العقل البشرى و لكنها لم تصبح سهلة جدا ..
بسبب موضوعنا الذى نناقشه فسنحاول تقسيم جوانب اللغات الى عدة اجزاء لكى تصبح اسهل فى الفهم
1- ال syntax قواعد اللغة
2- ال interpreter
3- ال Compiler
1-Syntax
-لا يمكن ان تكتب جمل من نوعية "فى الماء - 20 متر - انسان " و تتوقع ان يفهم الناس ان احد الغطاسين وصل الى 20 متر اثناء تدريباته على الغطس ايضا لا يمكنك ان تتوقع ان يفهم جهاز الكمبيوتر ما هو المقصود من هذه الجملة
-يجب ان تفهم و تتاكد ان جهاز الكمبيوتر جهاز فاقد للعقل ... لا يستطيع ان يفعل شىء لم تأمره به
و بسبب انه فاقد للعقل ... حتى الاوامر يجب ان يكون لها قواعد تلتزم بها حين اعطاء الامر ... اذا اردت ان تستريح فى تعلم اى لغة .. تذكر القاعدة الاتية
اشرح الامر الذى تريد تنفيذه ملتزما بقواعد اللغة و اشرحه كانك تشرح الامر لطفل صغير ... باختصار .. الامر يجب ان يكون واضح لا لبس فيه
-القواعد التى تتقيد بها .. هى غالبا قواعد بسيطة و سيأتى ذكرها لاحقا .. الان اريد فقط ان يكون واضحا .. انك لا تستطيع ان تكتب للكمبيوتر " افعل حبشتكانات " و تنتظر ان يقوم الكمبيوتر .. بفعل الحبشتكانات ......
على الجانب الاخر ... اذا اخبرت الكمبيوتر ان الحبشتكانات هى " ان يقوم الجهاز بالاغلاق بعد وقت محدد " و فعلت ذلك مراعيا للقواعد ... اؤكد لك ان الكمبيوتر سيقوم بفعل الحبشتكانات
-رغم انى اتجنب كتابة اى كود فى هذه المقدمة الا انى اريد التأكد ان هذه الفكرة وصلت
الان سنفعل تجربة صغيرة جدا على ال DOS .. لتوضيح قصة ال ......Syntax
start menu --> Run -->
الان نكتب ثلاثة احرف فقط Cmd بلا مسافات او فواصل
-ستظهر لك شاشة الدوس اكتب .. cd\
ستجد ال command Prompt تحول الى c:\>
الان اكتب الاتى ...
echo "I'm Learning Python"
ثم اضغط Enter
ستجد نفس العبارة تم كتابتها
"I'm Learning Python"
الان لنجرب كيف يتمتع الكمبيوتر بذكاء خارق
و لنكتب
echon "I'm Learning Python"
و الناتج يكون
'Echon' is not recognized as an internal or external command,
operable program or batch file.
الان نكتب ثلاثة احرف فقط Cmd بلا مسافات او فواصل
-ستظهر لك شاشة الدوس اكتب .. cd\
ستجد ال command Prompt تحول الى c:\>
الان اكتب الاتى ...
echo "I'm Learning Python"
ثم اضغط Enter
ستجد نفس العبارة تم كتابتها
"I'm Learning Python"
الان لنجرب كيف يتمتع الكمبيوتر بذكاء خارق
و لنكتب
echon "I'm Learning Python"
و الناتج يكون
'Echon' is not recognized as an internal or external command,
operable program or batch file.

يريد ان يخبرك انه لا يفهم اى شىء ... و لانك اخطات فى الكتابة و اضفت حرف n
... لم يفهم ماذا تريد و بالطبع لم ينفذ ما تريد
-الان يجب ان تتأكد انك محاصر بطريقة كتابة محددة لا تقبل ان تسهو او تكتب حروف خطأ ... على ان قواعد لغات البرمجة تحتاج لدراسة اشمل من هذه المقدمة
و قد رايت انه سيكون من الواقعية ان نناقش ال Syntax مع كل امر على حدة .. الان لو بدأنا فى كتابة قواعد ال syntax
سيصبح عدد الاشياء المجهولة كثير جدا .. و ستكثر المجاهيل و لن نستطيع التعامل معها
مكونات ال syntax
-القواعد بسيطة جدا ... اذا اردت ان تجمع رقمين .. سنكتب الرقم الاول + الرقم الثانى
نطرحهم ... نقسمهم ..الخ ... بالمثل و لكن تذكر اننا نتعامل مع كأئن فاقد للعقل .. لذلك حتى هذه العمليات البسيطة .. قد تحتاج لطريقة معينة فى الكتابة .. خصوصا اذا كان ذلك جزئا من عملية اكبر و اعقد
Integer & Float Point Numbers
-الارقام تنقسم الى قسمين ... ارقام صحيحة مثل 1 و 3 .... 6 ........... الخ وهذه تسمى integer
و القسم الاخر هو ال Float Point Numbers و يتم اختصارها فى كلمة Float فقط و هى تعبر عن
الارقام العشرية "التى تحتوى على فواصل " مثل 1.7 او 4.5 ... الخ
-السؤال البديهى الان ... لماذا هذا التعقيد ؟
-اذا فكرنا بمنطق الجرافكس ... فليس من الطبيعى ان تكتب امر يقول للبرنامج ... انشىء ثلاث مكعبات و نصف
او انشىء مائة كرة فاصل 7 .... بالتأكيد تظهر لك الان ضرورة ان يكون الرقم هنا integer
ايضا من غير المعقول ان تتقيد مثلا عند دوران مجسم بارقام صحيحة .... لنتخيل كاراكتر يلتفت اليك برأسه و
جذعه ... سيكون من العجيب جدا ... ان نتقيد هنا بقيم دوران صحيحة .... نحن فعلا نحتاج الى Float numbers
Variables
يتم ترجمة هذه الكلمة الى لفظ المتغيرات ... و ترجمتى الشخصية لها ..." الاوعية الصغيرة "
-هذه الاوعية يمكنك ان تضع فيها ... بطيخ ... او قرود ... او افيال ... كما تريد ... ما يجب ان تحذر منه
هو ان تخلط بين الوعاء نفسه ... و بين ما يحتويه هذا الوعاء
-فى مراحل الدراسة المختلفة ... تتعلم ان
س = 5 ..... معناها ان المجهول س ... اصبح الان غير مجهولا و هو رقم و قيمته 5
فى لغات البرمجة ...
س=5 ..... معناها ان الوعاء س ... به الان رقم نوعه integer و قيمته 5
لاحظ اننا لا نتكلم عن مجهول هنا ... فقط نحن وضعنا فى الوعاء الرقم الصحيح 5 ... مرة اخرى
لا تخلط بين الوعاء نفسه و بين ما يحتويه الوعاء
Arrays
بامانة لا اعرف اللفظ العربى المترجم .. ربما هو متتاليات او ما شابه ... احيانا حتى ممكن ان نطلق عليها
مصفوفات ... و لكن لفظ مصفوفات خطير جدا .. خصوصا اننا ف برامج الجرافكس فعلا نتعامل مع مصفوفات
ترجمتى الشخصية لها هى .....الاوعية الكبيرة ... لماذا ؟
لانها تستطيع الاحتفاظ بعدد لا نهائى من القيم "مثلا ارقام" اوالاحجام " احجام الفيلة و البراغيث و ربما المكعبات كمان " ... ايضا و بواقع عملى اكثر .. تستطيع الاحتفاظ بكل عناصر المشهد !
او كل مواقع القطع الناتجة عن الانفجار ... او كل ال keys للكاراكتر فى المشهد ... باختصار ... ليلة
-هناك انواع من ال arrays ... و فى بعض اللغات يطلق عليها لفظ اخر مثل Lists ... وهناك الفاظ اخرى
ليس الان محل ذكرها
-هناك شىء مهم جدا ايضا يجب ان نتمعن فيه ... و هو ان عناصر ال Arrays قد تكون Arrays !
صعب جدا ان تفهم ذلك بدون امثلة و كود ... لاحقا ان شاء الله
-ظهرت مشكلة الان .... ماهى فائدة ان تقوم بتخزين عناصر المشهد مثلا فى Array ؟
الجواب ... ليس هناك فائدة !
الا فى حالة انى استطيع استدعاء هذه العناصر كما اريد ... الان اريد الشجرة
الموجودة على اليمين ... و اريد ان اختار جميع الاوراق الموجودة فيها ,, و اريد تغيير الوان الاوراق بحيث
يكون هناك تباين فى هذه الالوان ........ ابتسم للحياة .... تستطيع ان تفعل ذلك ... و لكن لكى تفعل ذلك لابد ان
تعرف ال
Loops/Iterations
-من اشهر انواعها ال for loop و ال while loop .. و تستطيع ان تفكر فيها كمحصل التذاكر فى القطار ..
فهو يمر على جميع الركاب "عناصر الArray " و يؤشر ان التذكرة صحيحة
-مرة اخرى ليس من السهل ابدا فهم ال Loops بدون كود و امثلة ... تذكر ان هذه مقدمة فقط
If statement /Conditional statements/While statement
-يتم ترجمة هذه الحبشتكانات بالفاظ غير واضحة المعالم ...الارتباطات الشرطية ! او الشروط الارتباطية
-بدلا من عناء ترجمة ليس لها معنى ... اضع كود تخيلى باللغة العربية
ان(كنت غالى عليا) # الشرط الاول
و (حبك مالى عنيا) # الشرط الثانى
لا (تيجى فى يوم تخاصمنى ,تنسى السلام , تنسى التحية) # نتيجة مرتبطة بالشرطين
ماعدا ذلك # اذا لم يتحقق الشرطين
(خاصمنى , انسى السلام , انسى التحية )
و (حبك مالى عنيا) # الشرط الثانى
لا (تيجى فى يوم تخاصمنى ,تنسى السلام , تنسى التحية) # نتيجة مرتبطة بالشرطين
ماعدا ذلك # اذا لم يتحقق الشرطين
(خاصمنى , انسى السلام , انسى التحية )
Functions
-البرمجة او السكربتنج موجود فى حالة برامج الجرافيكس لتقليل وقت العمل اولا ... ثم فتح جميع الحدود ثانيا
من المضحك ان تكتب كود من 20 سطر ... و حينما تحتاج نفس الوظيفة مرة اخرى .. تبدأ فى كتابة ال 20 سطر
مرة اخرى ... و ان احتجت نفس الوظيفة تكتبهم مرة اخرى !
لنفترض انك كتبت كود يقوم بحساب مساحة المجسم ... الطريقة المنطقية ان تجعل هذا الكود عبارة عن Function
و لو احتجت حساب مساحة اى مجسم عندك فى المشهد ... مجرد تستدعى هذه الوظيفة على كل مجسم !!!
مثال
Function (calculate the area Of Triangle)={
اذا كان قائم الزاوية .... اضرب نصف القاعدة فى الارتفاع
اذا لم يكن قائم الزاوية ... احسب الزوايا الموجودة و احصل على ال جا ... جتا ...الخ
}
اذا كان قائم الزاوية .... اضرب نصف القاعدة فى الارتفاع
اذا لم يكن قائم الزاوية ... احسب الزوايا الموجودة و احصل على ال جا ... جتا ...الخ
}
Calculate the Area Of Triangle NurbsTriangle_01
-انشانا وظيفة .... ثم بداخل هذه الوظيفة ... بدأنا فى وضع الشروط الارتباطية ... اذا .... IF statement
-ايضا اذا اردنا ان نفعل ذلك على كل المثلثات الموجودة ... لابد من استخدام ال For Loop .... نستدعى المحصل لكى يمر على جميع الركاب
-ماذا لو كان المشهد يحتوى على مربعات ؟ او مكعبات ؟
لابد ان نلجأ مرة اخرى لل If statement للتأكد ان العنصر هو مثلث و ليس اى شىء اخر
-اذا احسست بالدوار الان ... فهذا عظيم و هى علامة ايجابية ... استمر
-الجزء الموجود بين الاقواس المعقوفة "Curled Brackets " هو ما يسمى بال Function Definition
او بالعربى ... توضيح كيف تعمل هذه الوظيفة .. وكما ترى يمكن ان يحتوى على ايا من مكونات ال Syntax ..
لضمان ان تكون الوظيفة فعالة ....
الان هيا نكتب الكود و نتأكد انه لن تحدث اخطاء
لكل عنصر فى المشهد { # اول For Loop
اذا
( كان العنصر شكل و ليس مجسم) # اول شرط
و ( كان الشكل هو مثلث) # ثانى شرط
افعل
(
قم باختيار الشكل
ث Calculate the Area Of Triangl للشكل #احسب حجم المثلث
)
ماعدا ذلك
(لا تفعل اى شىء )
}
اذا
( كان العنصر شكل و ليس مجسم) # اول شرط
و ( كان الشكل هو مثلث) # ثانى شرط
افعل
(
قم باختيار الشكل
ث Calculate the Area Of Triangl للشكل #احسب حجم المثلث
)
ماعدا ذلك
(لا تفعل اى شىء )
}
-و هذا طبيعى جدا ... نحن لم نوضح ما هى وظيفة " Calculate the Area Of Triangle "
و لذلك سينكسر الكود عند هذه النقطة .. لان البرنامج او ال interpreter لا يعلم هذه الوظيفة
مرة اخرى ...تذكر انك تتعامل مع شىء فاقد للعقل
هيا نكتبها بطريقة سليمة .......
Function (calculate the area Of Triangle)={
اذا كان قائم الزاوية .... اضرب نصف القاعدة فى الارتفاع
اذا لم يكن قائم الزاوية ... احسب الزوايا الموجودة و احصل على ال جا ... جتا ...الخ
}
لكل عنصر فى المشهد ( # اول For Loop
اذا )كان العنصر شكل و ليس مجسم( # اول شرط
و )كان الشكل هو مثلث( [COLOR="SeaGreen"] # ثانى شرط
افعل
(
قم باختيار الشكل
Calculate the Area Of Triangle للشكل #احسب حجم المثلث
)
ماعدا ذلك
(لا تفعل اى شىء )
)
اذا كان قائم الزاوية .... اضرب نصف القاعدة فى الارتفاع
اذا لم يكن قائم الزاوية ... احسب الزوايا الموجودة و احصل على ال جا ... جتا ...الخ
}
لكل عنصر فى المشهد ( # اول For Loop
اذا )كان العنصر شكل و ليس مجسم( # اول شرط
و )كان الشكل هو مثلث( [COLOR="SeaGreen"] # ثانى شرط
افعل
(
قم باختيار الشكل
Calculate the Area Of Triangle للشكل #احسب حجم المثلث
)
ماعدا ذلك
(لا تفعل اى شىء )
)
هل تتذكر مكونات ال Syntax ؟ الان اين نحن ؟ او فى ماذا نتكلم ؟
-نتكلم فى اول عنصر من عناصر لغات البرمجة و هو ال Syntax و تكلمنا عن المتغيرات و الارتباطات و المتتاليات و انواع الارقام ثم نتكلم الان فى الوظائف ... اذا لم تتذكر الان ... راجع الموضوع من الاول ....
نحن نتعامل مع كائن فاقد للعقل .. ولا يقبل بأخطاء ...... تذكر ذلك دائما
-سأكتفى بهذه المقدمة عن ال syntax رغم انى لم اتكلم فى اشياء هامة جدا ... و لكن ارى ان وجود امثلة مع كود حقيقى مع شرح ... سيكون افضل و سيوضح الفكرة اكثر
2-The Interpreter
-المكان الذى تكتب فيه الكود هو ال interpreter ... و فى حالة مثال ال Dos ... كان ال interpreter هو الشاشة السوداء ... فى حالة البايثون ... نحن سنستخدم ال interpreter فى الاكواد القصيرة فقط
و فائدته تنبيهك اذا اخطات فى كتابة ال Syntax ... او تجربة شىء معين ... اما عمليا ... فسنحتاج ل
Text editor و هو موجود طبعا ... ولكن البعض يفضل انواع خارجية مثل ال UltraEdit NotePad++
فقط هذه صورة لل interpreter فى البايثون

و سنكتفى بهذا الان
3- The Compiler
بينما نحن نكتب الاوامر بلغة عالية و احيانا تقترب من الانجليزية ... لابد ان يكون هناك من يترجم للبروسيسور
لغتنا العالية ... الى لغته المنخفضة و يحولها الى ال Binary System و هذه وظيفة ما يسمى بال
Compiler
الان يبدأ التخبط ...انا لا احتاج ل compiler ... اللغة موجودة عندى فى برنامجى .. و اكتب الكود فيتم تنفيذه !
لازلنا فى مرحلة اولية تماما ... للخوض فى هذه القصة ... على العموم ... البايثون فى برامج الجرافيكس تستطيع
استخدامها من داخل البرنامج .. وتستطيع ايضا ان تستخدمها من خارج البرنامج تماما .. للاتصال بالبرنامج .... بخ
تعليق