Unconfigured Ad Widget

تقليص

إعـــــــلان

تقليص
لا يوجد إعلان حتى الآن.

بايثووووووووووووووووووووووووووووووون............................ كلك حركات

تقليص
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • بايثووووووووووووووووووووووووووووووون............................ كلك حركات

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

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

    نبذة عن لغات البرمجة

    زمان اوى .. الحياة كانت صعبة جدا .. و الشباب كان لازم يكتبوا البرامج بال 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.



    يريد ان يخبرك انه لا يفهم اى شىء ... و لانك اخطات فى الكتابة و اضفت حرف 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
    و لو احتجت حساب مساحة اى مجسم عندك فى المشهد ... مجرد تستدعى هذه الوظيفة على كل مجسم !!!

    مثال
    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 Triangle "
    و لذلك سينكسر الكود عند هذه النقطة .. لان البرنامج او ال interpreter لا يعلم هذه الوظيفة
    مرة اخرى ...تذكر انك تتعامل مع شىء فاقد للعقل

    هيا نكتبها بطريقة سليمة .......


    Function (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
    بينما نحن نكتب الاوامر بلغة عالية و احيانا تقترب من الانجليزية ... لابد ان يكون هناك من يترجم للبروسيسور
    لغتنا العالية ... الى لغته المنخفضة و يحولها الى ال Binary System و هذه وظيفة ما يسمى بال
    Compiler

    الان يبدأ التخبط ...انا لا احتاج ل compiler ... اللغة موجودة عندى فى برنامجى .. و اكتب الكود فيتم تنفيذه !
    لازلنا فى مرحلة اولية تماما ... للخوض فى هذه القصة ... على العموم ... البايثون فى برامج الجرافيكس تستطيع
    استخدامها من داخل البرنامج .. وتستطيع ايضا ان تستخدمها من خارج البرنامج تماما .. للاتصال بالبرنامج ....
    بخ
    التعديل الأخير تم بواسطة cyfer; 02 / 08 / 2007, 08:05 PM.
    http://heilschwingung.at/188e0

  • #2
    اهلا بكم جميعا فى الحلقة الثانية من برنامجكم المفضل ... ابجنى تجدنى
    و نلقاكم بعد الفاصل ..........
    الفاصل ....
    --------------------------------------------------------------------------------------------------------
    فترة اعلانية
    --------------------------------------------------------------------------------------------------------
    اجرى بسرعة يا واد يا حسين على موقع
    http://www.python.org
    ثم فى الجانب الايسر ... فووووووووووق .. ستجد مكتوب Download
    اضغطها ... ستفتح لك صفحة جديدة ... ابحث عن Python 2.5.1 windows Installer و اضغطها للتحميل
    -او اذا كنت كسول كما انت فعلا ... اضغط هنا و خلصنا http://www.python.org/ftp/python/2.5.1/python-2.5.1.msi

    ملحوظة : حتى لو كنت تملك بروسيسور AMD 64 ... قم بتحميل هذه النسخة و ليس اى نسخة اخرى ...
    فائدة هذه النسخة لن تظهر لك الان .. و لكنها ستظهر حينما نبدأ فى ال GUI Applications

    -بعد انتهاء التحميل ... قم بعملية ال Setup و هى عملية معقدة للغاية .. ستظل تظهر لك نوافذ و انت تختار
    اما I agree فى البداية او Next

    عظيم ..الان ستجد فى القائمة عدة اختيارات .. اختار منها IDLE (python gui)
    سيظهر لك الان ال interpreter .. الذى تكلمنا عنه سابقا ...
    --------------------------------------------------------------------------------------------------------
    انتهاء الفترة الاعلانية
    -------------------------------------------------------------------------------------------------------
    -
    تكلمنا سابقا عن ال Syntax بصفة عامة لا تختص باى لغة محددة .. الان لابد ان نتقيد بالبايثون

    Numbers

    هناك عدة انواع من الارقام فى البايثون..اخر الاخبار انهم 5 انواع و لكن بسبب ان يكون الموضوع سهلا و بسبب هدفنا الاسمن "فاكره ؟".. سنكتفى بنوعين فقط من الارقام و هم ال Float و ال integer

    -نحن نعلم ما هما ما الجديد ؟
    الجديد هو طرق الادخال تبعا للبايثون ...
    من المعروف ان هذه العلامات تدل على

    + الجمع
    - الطرح
    / القسمة
    * الضرب

    سيزيد علينا الان بعضا من هذه العلامات


    <= اصغر من او يساوي
    >= اكبر من او يساوى
    > اكبر من
    < اصغر من
    = يساوى
    == اذا كان يساوى " طريقة للتحقق من قيمة معينة "
    != لا يساوى
    ** معناها الى القوة كذا .... 5**2 معناها 5 الى القوة 2 اى 5 مضروبة فى 5
    % المتبقى من ناتج القسمة
    / علامة القسمة
    <> اكبر من او اصغر من

    - الان ال interpreter مفتوح امامك
    اكتب الاتى
    كود:
    5+2
    كم الناتج ؟
    الان اكتب الاتى
    كود:
    5+2.0
    كم الناتج ؟

    هل لاحظت الفرق ؟ فى المثال الاول جمعنا عددين من نوعية Integer و لذلك كان الناتج عدد من نوعية Integer
    فى المثال الثانى .. جمعنا عددين احدهما Integer و الاخر Float .. و لذلك كان الناتج Float
    -ربما يبدو لك الان ان هذا المثال سخيف ... ولكن ستظهر لك اهمية نوعية الارقام من المثال التالى

    فى ال interpreter اكتب
    كود:
    7/2
    كم الناتج ؟
    الان اكتب
    كود:
    7/2.0
    او
    كود:
     7.0/2
    ... كم الناتج ؟

    نفس الفكرة السابقة و لكنها بدات تأخذ بعض الجدية .... انت تحصل على اجابات خطأ او صواب فى عمليات بسيطة جدا .. بناء على طريقة ادخالك لبيانات العملية الحسابية ...
    -القانون كالاتى .. اذا اردت ان تحصل على الاجابة الواقعية الحقيقية .. على الاقل اكتب رقم منهم ك float
    على ان هذا ليس ما نريده احيانا !

    -تخيل محيط دائرة و انت تريد ان تملأ هذا المحيط بعدد من المكعبات .. او الكاراكترز ! ...مبتعدين عن بعضهم بمسافات متساوية ليس مهم عدد المكعبات او الكاراكترز و لكن المهم ان يكونو على مسافات متساوية......... ستحتاج معادلة معينة لفعل ذلك ... حتى بدون ان نذكر المعادلة ....هل يمكن ان يكون الناتج وقتها هو Float number ؟

    % هذه العلامة معناها المتبقى من ناتج القسمة !
    لنجرب ان نكتب
    كود:
    9%2
    كم الناتج ؟ و ما هو الاختلاف اذا كتبتها هكذا ....
    كود:
    9%2.0
    -نقطة اخيرة على موضوع الارقام ... و هى القيم الموجبة و السالبة ....
    اذا احتجنا للقيمة المطلقة بدون الالتفات الى اشارات الموجب و السالب فنستخدم
    كود:
    abs
    للحصول على قيمة مطلقة
    لا تتقيد بالاشارات ...

    -جرب ان تكتب
    كود:
    abs(9/2.0)
    او
    كود:
     abs(9/-2.0)
    او
    كود:
     abs(-9/-2.0)
    انا متأكد من ان من يقرأ هذا الموضوع باهتمام ... سيكون قد مل بالفعل الان .... تذكر ملل حفظ حروف اى لغة
    تعلمتها كيف كان ؟ و هل انت الان نادم على انك تعلمتها ؟

    -بسبب تداخل الموضوعات مع بعضها سيتم الحديث عن ال Range فى ال Arrays “Lists”و ليس فى الارقام

    Variables

    -المتغيرات .... او الاوعية الصغيرة ... دعنا نجرب هذا الكود
    كود:
    M=5
    الان اكتب M
    ماذا يظهر لك ؟ ... الرقم الصحيح 5 ...
    هل تتذكر فكرة الرياضيات و البرمجة ؟ و اننا لا يجب ان نخلط بين الوعاء و ما يحتويه الوعاء ؟
    المتغير M بداخله الان الرقم 5 .. او لنقل الوعاء M ... لماذا لا نضع قيمة اخرى ؟
    كود:
    M = 12.0
    الان اكتب M
    ... هل رايت لماذا استخدم كلمة مثل الوعاء ؟ .. انت تستطيع الان ان تضع اى شىء فى هذا الوعاء ...
    انا عن نفسى مللت من الارقام .... لنجرب ال Strings
    كود:
    M ="I’m learning Python"
    الان اكتب M
    -لا بد ان نتكلم قليلا عن معنى كلمة strings .. هذه صفات تؤخذ كما هى و لا يفكر البرنامج فى تفسيرها
    فقط يطبعها كما هى ...
    اكتب الاتى ...
    كود:
    Print 5+2
    ثم جرب الاتى
    كود:
    Print "5+2"
    - و لو كتبت
    كود:
     "حبشتكانات"print
    لظهرت لك نفس الكلمة .... ال strings لا يتم تفسيرها من جانب ال interpreter بل يتم طبعها ..
    تستطيع ان تحيط ال strings بأيا من العلامتين .... اما "اكتب هنا " او ‘اكتب هنا’
    -بالمناسبة .. استخدامات ال strings ليست بهذه البساطة و التفاهة
    -هل تعرف ان اى اسم تعطيه لمجسم فى المشهد هو string ؟
    -هل تعرف ان باستخدام الاسماء ... نستطيع فلترة العناصر فى اى مشهد ؟
    -هل تعرف انك تستطيع ان تختار العناصر تبعا لاسمائها ؟ وتضع لها خواص او تغير خواصها ؟
    -هل تعرف الان لماذا يؤكد الجميع على ان اعطاء اسماء منظمة و معبرة للعناصر فى المشهد .. يصفها الجميع
    بأنها عادة جيدة جدا و لابد من اكتسابها ؟

    - الان رجوعا الى ال Variables
    -فى كل لغة هناك كلمات معينة لا تستطيع ان تستخدمها ك اسم للمتغير
    مثلا تستطيع استخدام
    _Myvar ,_my_var_ , myvar,____1

    ولكنك لا تستطيع استخدام اشياء مثل هذه
    كود:
    #myvar
    هذه تحديدا لا يفسرها ال interpreter لانها علامة التعليقات
    ثم امثال هؤلاء


    بالاضافة الى ذلك فهناك كلمات محجوزة للبرنامج و لها وظائف معينة لذلك لا تستطيع استخدامها كاسماء
    لل Variables


    -سنكتفى بهذا القدر اعزائى المشاهدين من المتغيرات .. و نود التنويه ان طريقتنا هى الفكرة العامة اولا
    ثم التدقيق قليلا ثم التمحيص ثم التمحيص ... الى اخر ما نستطيع ...
    --------------------------------------------------------------------------------------------------------
    فاصل اعلانى ...
    -اين تذهب هذا المساء ؟
    -جيمو يشرب القهوة مع رفاقه .
    -برنامج ارشادى قصير ...
    -من غير الممكن ان نستمر فى كتابة الكود فى ال interpreter .. نحن نحتاج الى مكان واسع قليلا .. ونستطيع الحصول على ذلك اما باختيار
    File  new Window ... او بالاختصارات .... Ctrl+N

    فى هذه النافذة الجديدة ... سنبدأ فى كتابة الكود .. و بعد الانتهاء منه ... سنقوم بالتحقق من سلامة الكود ..

    بالضغط على runCheck module ... وقتها سيطلب منك البرنامج ان تحفظ الملف ... احفظه و لا تنسى ابدا ان تعطى الامتداد py للملف ... مثلا سنحفظ الملف بأسم lol لابد ان تكتب lol.py لا تكتب الاسم فقط ثم تضغط enter ... هذه نقطة هامة جدا ! ثم بعد ذلك Runrun module

    -لغة البايثون لغة Case sensitive و معنى ذلك ان الحروف الكبيرة M ليست كالحروف الصغيرة m
    تذكر ّلك ... خصوصا مع الاسماء التى ستعطيها انت للمتغيرات و ال متتاليات الخ ... احيانا يكون فشل الكود سببه مجرد حرف كتبته small و هو capital !
    - امر print يمكنك ان تستخدمه لطباعة اكثر من شىء فى وقت واحد ...
    -مثال لذلك ....
    كود:
    print 4,(3+4)
    انتهاء البرنامج الارشادى ..
    انتهاء الفاصل ............
    -------------------------------------------------------------------------------------------------------
    -
    Arrays\Lists
    -من هنا تبدأ الجدية ...
    -كل ما مضى من الممكن ان تقرأه فقط ... الان لا يمكن ان تفعل ذلك لابد من ان تجرب ....
    -ال Lists او ال Arrays كما اترجمها انا هى الاوعية الكبيرة ... و هى قد تحتوى على اعداد او Strings او ايا مما تريده ... الامر متروك لك ... كيف ستستخدمها ...
    -لنجرب ان نتكتب هذا الكود ... فى ال interpreter و ليس فى نافذة جديدة ... " الان فقط "


    كود:
    M = [1,2.0,6,"python",(5*7)]
    ثم اكتب بعدها M .... لا تنسى اذا كان الحرف small او capital
    -هل ترى ماذا يمكن ان تحوى ال Lists ؟
    رقم صحيح ....... رقم عشرى ....... String ........... عملية حسابية !
    - لا بل ان اى عنصر فى ال List نفسها ... من الممكن ان يكون List اخر !
    -ارجو ان يسامحنى الجميع على استخدام لفظ ال Array بدلا من List ... بحكم العادة افعل ذلك
    -الان ... ال Array الموجودة بداخل ال Array الاصلية تسمى .. Nested array ...
    -و ال Array التى بها هذه الخاصية تسمى Multidimensional Array

    و لكن مرة اخرى ... ما الفائدة من ال Array ؟
    -تستطيع استدعاء ايا من العناصر الموجودة بها !
    -لكن ذلك يتم باستخدام ال Index لل Array ......... "لا اعرف ترجمة لكلمة index ..فى هذا الموضع "
    -لنقول على هذا ال Index رتبة .... غير مفهوم ؟

    اكتب نفس الكود السابق ...

    كود:
    M = [1,2.0,6,"python",(5*7)]
    الان اكتب الاتى
    كود:
    M[1]
    الناتج هو2.0 ؟ .......... يجب ان يكون 1 !!
    -فى بعض اللغات نعم سيكون الناتج 1 ! .......... البايثون تعطى رتبة 0 لاول عنصر فى ال Array
    و لذلك اذا اردت ان تحصل على العنصر الاول ... يجب ان تبدأ ب 0 و ليس 1 !
    كود:
    M[0]
    -فى الواقع هل ترى ان هذه الطريقة مجدية ؟
    -لنتصور Array بها 200 عنصر .... هل من العقل ان نكتب 200 سطر ؟
    -اذا كانت اجابتك لا .... فتذكر المحصل فى القطار !

    -هناك نوع اخر من ال Lists و هو خاص بالارقام "tuple" ...و صيغته بسيطة جدا
    كود:
     
    LOL = range(1,10)
    هذا النوع لن نعرف فائدته ... الا حينما نتكلم عن ال Loops "المحصل"
    -لكن جرب الان ان تكتب LOL وترى الناتج ..........مرة اخرى لاتنسى حالة الحروف كبيرة ام صغيرة ..


    -يا للمأساة !
    -اولا لم يأخذ الرقم 10 .... بل وصل الى 9 و سكت ! ....
    -ثانيا هم فعلا عشرة ارقام ... بحساب الصفر !

    الصورة ليست واضحة ... لنغير فى هذه الارقام ... و لنجعلها LOL = (1,10)
    اذا نظرت الى الناتج ... الان الصورة واضحة .... ال Range يبدأ من اول رقم تعطيه له .. ثم يصل الى ما قبل
    الرقم الثانى ... او اذا شئت .. ما قبل الحد الاقصى ...
    -ملحوظة ... ال Range لا تقبل ال Float Numbers
    -الان ترى الموضوع بسيط .. ولماذا التركيز و الاعادة على نفس النقطة ؟ ... فى انتظار محصل القطار !

    -نقطة هامة فى ال arrays ....
    -تستطيع تغيير او حذف او اضافة العناصر فى array
    باستخدام هذه الاوامر ...





    -النوع الذى سنتكلم عنه الان من ال Arrays يسمى Tuple و صيغته
    (x,y,z)=(1,2,3)
    - جرب ان تكتب x او y او Z







    -قبل الذهاب الى ال Loops ... لنلهو قليلا .....


    مطلوب تكوين هذه الجملة cairo is the capital of egypt
    عن طريق الامر print

    ----------------------------------------------------------------------------------------------------------
    شريط الاخبار : هجوم ضارى من القوات السيفرية على بلدة الريل فلو .. وقتل ضابط برتبة كبيرة.. والريل فلو ينفى.
    ---------------------------------------------------------------------------------------------------------
    -
    كود:
    K=("egypt","Saudi arabia","syria","morocco","libya" ,"bahrin","sudan","Tunisia")
    L=("I","me","am","myself","from","and","was","have","mother","my")
    M=("brother","sister","father","mother","single","children")
    N=range(1,100)



    باستخدام الامر print وهذه المتتاليات ... اكتب قليلا عن نفسك !
    -اذا كانت بلدك غير موجودة اكتبها ... افعل ما تريد .. فقط تذكر ان تكتبها بطريقة صحيحة
    مثلا كون مثل هذه الجمل ...
    I am from Egypt
    I have 40 brother
    My father is 54
    My brother is married and have 2 children
    I am 12
    فى حالة نقص اى كلمة .... قم باضافتها لاى متتالية .....

    لابد ان نتوقف الان ... لان المشاركة محدودة بعدد معين من الكلمات و المسافات
    التعديل الأخير تم بواسطة cyfer; 02 / 08 / 2007, 05:24 PM.
    http://heilschwingung.at/188e0

    تعليق


    • #3
      Loops/Iteration
      -محصل القطار ! ...
      -الموضوع من هنا يبدأ فى التفرع ... و ستبدا الاخطاء فى الظهور .. لذلك لا تحاول ان تفهم هذه المبادىء
      و انت قليل التركيز .. او و انت فى حالة اجهاد ...

      -اشهر ال محصلين هم ال for loop و while loop ...
      -نحن الان نستطيع التجربة باكواد ... لنجرب ان ننشىء array
      كود:
      K = range(1,20)
      الان ... اول نقطة جديدة يجب ان نعرفها .. ان ال Index Array يمكن ان يمر عليها المحصل ... وقتها .. هذا ال Index سيكون متغير !

      اكتب الكود .. لا تستطيع تعلم قيادة السيارات عن طريق القرائة .... اليس كذلك ؟
      كود:
       
      K = range(1,20) 
      For I in K:
      Print I
      -لا حظ الناتج .........
      الان اكتب هذه ..............
      كود:
      K = range(1,20) 
      For I in K:
      Print K
      ... هل لاحظت ما يحدث ؟
      - فى المثال الاول ... جعلنا المحصل يفعل الاتى ... لكل عنصر "I" فى المتتالية K اطبع العنصر I


      -فى المثال الثانى ... جعلنا المحصل يفعل الاتى ... لكل عنصر "I" فى المتتالية K اطبع المتتالية K !
      -تذكر هذا ... لانك احيانا قد تخلط بين اسم المتغير " ال Array " و اسم متغير ال “index Array”
      و كما هو واضح .. النتائج مختلفة تماما !

      -الان لنتكلم عن مثال فى الجرافيك ... عندك عدد كبير جدا من المجسمات و تريد ان تضيف عليهم ال Smooth .
      سواء كان هذا ال Smooth موديفاير .. كما فى الماكس او Attribute كما فى المايا ...
      -سنأخذ كل المجسمات فى Array ... ثم بداخل ال for loop ... سنكتب ان يتم ال Smooth على ال Index array ... كما فى المثال الاول !

      -لو اخطأت ... و فعلت كما فعلنا فى المثال الثانى .... بخ ... ستعيش فى الوهم ....
      -ما تفعله فى حالة المثال الثانى .. هو انك تاخذ المجسمات جميعا ثم تضع لها Smooth ... بعدد الاجسم !!!!
      -بمعنى .. انك ستخرج من هذا الفور لوب ... و كل مجسم قد تم تطبيق ال Smooth عليه .. مثلا 100 مرة !
      او ربما اكثر .... على حسب عدد المجسمات التى اخترتها !
      -اتذكر ان هذا حدث لى فى الماكس و خرجت بمكعب عليه 20 Smooth modifier !! كانت ليلة ...

      -يجب ان تفهم ان ال loops رغم فائدتها الواضحة ... خصوصا مع ال Arrays ...الا انها مع سوء الاستخدام فهى طريق محقق نحو ال Crash !

      -النوع الثانى من ال Loops هو ال While loops و هو نوع خطير اكثر من ال For loop
      -لو لاحظت .. ال For loop ... لها نهاية ... حتى لو استخدمتها خطأ ....
      ال while loop لها نهاية ايضا ... و لكن فى حالة الاستخدام الصحيح فقط .... اذا استخدمتها خطأ ..ليس لها
      اى نهاية !! ..... و ستظل تنتظر و تنتظر .. و البرنامج ايا كان ... سيعلق ... و اذا كان المشهد ثقيل او الوظيفة
      ثقيلة ... ربما تحتاج الى اعادة تشغيل الجهاز !!

      -لنجرب هذا النوع ... و لنرى كيف يكون صحيحا ... وكيف يكون خطأ ... بدون اخطار ....
      كود:
      u = range (1,200)
      while u < 100 :
          u = u+1
          print u


      - لاحظ فكرة ...اننا نضيف بداخل ال While loop قيمة 1 الى القيمة الحالية ل u
      -نفعل ذلك حتى لا تظل قيمة u ثابتة .. لانها لو ظلت ثابتة ... لعلق البرنامج ... وظل يطبع نفس الرقم !
      -لاحظ ايضا ان المتتالية تمتد الى رقم 199 و نحن اشترطنا رقم اقل من 100 ... و لم يطبع اى رقم اكثر من ذلك
      -الان و بدلا من ان نقع فى وسط عمل معقد فى قصة ال While loop ... لنحاول ان نفعلها خطأ الان ...
      و لا تخشى ... شىء ... تستطيع انها الوضع عن طريق ضغط Ctrl + C

      لنكتب ...



      - الان اذا كنت قد جربت بعض هذه الاكواد فربما تكون قد فشلت ! ... و ذلك لاننا لم نتكلم عن ال Indentation

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

      -فى البايثون ... انت لا تفتح اقواس للدلالة على البلوك ... بل تراعى ان تكون الكلمات تحت بعضها تماما .. او
      فى حالة ..ال if و ال while مثلا تراعى ان يكون هناك فاصل رأسى ......

      -كطريقة بسيطة ... لمساعدتك فى فهم المسافات ...




      لاحظ علامة # تعنى تعليق من كاتب السكريبت و لا يفسرها البرنامج و تجدها باالون الاحمر
      سطر ال if و ال while ينتهى دائما بنقطتين فوق بعضهما
      السطر الذى يلى if او while يجب ان يبدأ بعدهما بمسافة ....
      بعد انتهاء ال if ... يجب الا يكون هناك مسافات رأسية ... وجودها ... سيعنى ان هذه المعلومات
      بداخل ال if block

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






      البايثون يضع الوان معينة للكلمات المحفوظة بداخله ...
      -اذا لم تجد هذه الالوان تظهر ... فأما انك كتبت حرف capital مثلا و هو small ... او اخطأت فى المسافات ..
      -تأكد دائما ان الالوان تظهر كما فى الصور





      Variable scope
      مدى المتغيرات !
      -نعم ... متغيرات مرة اخرى ! لكن هذه المرة سنبحث فى مدى هذه المتغيرات
      -المتغيرات قد تكون شىء من اثنين ... اما عالمية او محلية ... Global OR Local
      -الموضوع غريب قليلا و لكنه اساسى لفهم البرمجة .... هل تتذكر قصة بلوك الكود ؟ ... هل تتذكر اننا نستخدم المسافات الرأسية فى البايثون للتعبير عن ان هذا الجزء داخل ال if statement و اذا غيرنا هذه المسافات نصبح خارج تأثير ال If statement ؟ ...
      -الان تخيل نك تطلب عدد عشوائى ان يخرج لك ..و هو محصور بين 1 و 100 ... و نطبع هذا العدد العشوائى
      4 مرات مثلا ....
      -لابد ان نخبر البرنامج بهذا الموضوع كالاتى .....
      -اولا ... نطلب العدد العشوائى
      -ثانيا نطبع العدد العشوائى 4 مرات .... ما المشكلة ؟
      المشكلة انك لابد ان تكتب متغير العدد الشوائى اولا .. ثم تطلبه .. ثم بعد ذلك تقول للبرنامج ان يطبعه 4 مرات ...
      -بمعنى .. ان المتغير "العدد العشوائى" لابد ان يكون عالمى "global"بالنسبة لامر الطباعة !
      -لا تفهم شىء ؟ ولا انا .....
      كود:
      import random
      m =random.randint (1,100)    
      
      
      for i in range(1,5):
          print m
      -لا تشغل نفسك بفكرة import او random او random.randint ... المهم هنا اننا طلبنا الرقم العشوائى اولا
      او بمعنى اخر .. انشأنا الرقم العشوائى اولا ...ثم بعد ذلك استطعنا ان نطبعه 5 مرات ...
      -لو بدأنا هذا الكود و قبل اى شىء كتبنا print m ... البرنامج سيفشل !
      لماذا ؟ لانك تحاول استخدام متغير لم تنشأه اساسا ! كيف سيفهم الجهاز فاقد العقل انك تريد ان تطبع m ؟
      ما هى ال m هذه ؟ كم قيمتها ؟ عن ماذا تعبر ؟ ...
      -لابد ان تنشأ المتغير اولا ثم بعد ذلك تحاول استخدامه و ليس العكس !
      -على ان هذا الموضوع ليس بهذه البساطة ......
      اذا بدانا فى تغيير البرنامج لكى يصبح كالتالى .....
      كود:
      import random
      
      
      for i in range(1,5):
          m =random.randint (1,100) 
          print m
      فكل شىء قد تغير تماما ! .. تستطيع ان تجرب الكود و تخيل ماذا سيحدث ؟ ستخرج ب 4 ارقام عشوائية !
      و ليس نفس الرقم العشوائى الذى يتم طباعته اربع مرات !!
      -و الموضوع بسيط جدا ... الان انت تطلب من البرنامج ان ينشأ اربع ارقام عشوائية محصورة بين 1 و 100 ثم يقوم بطباعة هذه الارقام !
      -كل هذا حدث لاننا غيرنا m من Global الى local او بمعنى اخر ... جعلنا انشاء المتغير يؤثر على كل البرنامج ... او يؤثر على جزء معين من البرنامج ....

      -انا افهم تماما سخافة ان تظل تفكر فى هذه الارقام .... عزيزى .. اليك مثال من الواقع ...

      -الالوان هى عبارة عن خليط من ثلاث قنوات ... R G B "بالمناسبة ... سنسمى اى شىء يتكون من ثلاث قيم point 3 value "

      -و كل قناة من هذه القنوات تحتوى على 256 درجة من درجات اللون "اذا كانت الصورة 8 بت" ..... الازرق اذا كنا نتحدث عن ال Blue channel ... او 256 من الاحمر اذا كنا نتحدث عن ال Red channel الخ

      -الان هناك هذه الشجرة ذات الافرع الكثيرة و كل فرع به 200 ورقة و نريد ان نتحكم فى الوان هذه الاوراق
      -و لذلك سننشىء متغير يسمى
      Random_Green_Color = randint(1,256)
      *ارجوك لا تهتم باللون الان ... فكر فى المقصود من المثال ...
      -اذا انشانا هذا المتغير فى اول الكود ... ثم بعد ذلك بدأنا فى تنفيذ الخطوات العقلية السليمة .. و هى هكذا

      ----- Random_Green_Color = randint(1,256)
      ----- اختار كل الاوراق الموجودة على الافرع
      ----- لكل ورقة "واضح اننا هنا سنستخدم for loop " ضع ماتيريال Blinn
      -----فى خانة ال diffuse color اجعل اللون فى خانة ال Green channel ... يساوى المتغير الذى انشاناه
      و هو Random_Green_Color ...

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

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

      -لذلك هيا نترك هؤلاء القوم ....
      ----- اختار كل الاوراق الموجودة على الافرع
      ----- لكل ورقة "واضح اننا هنا سنستخدم for loop " ضع ماتيريال Blinn
      ----- Random_Green_Color = randint(1,256)
      -----فى خانة ال diffuse color اجعل اللون فى خانة ال Green channel ... يساوى المتغير الذى انشاناه
      و هو Random_Green_Color ...

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

      -و لنجعل هؤلاء القوم يتلوون كمدا ... يكون عدد الافرع 5 و كل فرع به 200 ورقة .... وعيش يا معلم مع حوالى
      1000 ضغطة ..... لا طبعا ... ستختار كل ورقة .. هذه 1000 ... ثم ستعين لها ماتيريال هذه 1000 اخرى ...
      ثم تختار ال Diffuse color و فى خانة اللون .. ستحاول تغيير اللون الاخضر .... على اقل تقدير 3000 الاف ضغطة !


      -اسهبنا فى شرح هذه النقطة "اظن جامدة اوى اسهبنا دى " ... و ذلك لاهميتها البالغة .... نحن لا نتكلم عن لون ورق الشجر .... نحن نتكلم عن قيم عشوائية لل Noise .. فى Plane ... نحن نتكلم عن ورق يطير فى الهواء بسرعات عشوائية ..... لا ... نحن نتكلم عن Keyframes ... لسرعة الرماح او الاسهم من جيش اثناء الهجوم ..... لا.... نحن نتكلم عن قيم الدوران للشظايا الناتجة من الانفجار .....الخ .... و فى الواقع نحن نتكلم عن كل هذا و اكثر .. فى هذه الفقرة ..... فقط .. و لاننا لا نفعل ذلك فى داخل المايا او الماكس او ال XSI ... انت لا ترى الصورة كاملة ... باذن الله اقتربنا من تطبيقات واقعية .. ... لكن هذه التطبيقات بدون الاساسيات التى نتحدث فيها ستصبح الغاز غير قابلة للحل ... اذا كنت مهتم بهذا الموضوع ... فأنصحك ببذل اقصى ما تستطيع قبل الموضوع القادم ... لاننا اقتربنا جدا من المعارك الحقيقية !
      التعديل الأخير تم بواسطة cyfer; 15 / 08 / 2007, 09:14 PM.
      http://heilschwingung.at/188e0

      تعليق


      • #4

        Conditional Statements
        تانى ؟ ... و تالت و رابع .....

        -نحن تكلمنا سابقا عن ال IF و ال While ,و لكننا لم نتكلم فى استثنائات هذه الشروط ... . التوافق مع شرطين .. الخ ... بمعنى اسهل .. نحن تكلمنا عن حالة واحدة سابقا و هى ... اذا كان كذا ... افعل كذا ... فقط

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

        --------- لكل ما فى المشهد "For loop "
        --------- اذا كان "الشرط الاول للفلترة" ال العنصر بولى .....
        --------- اختاره " نتيجة مترتبة على تحقق الشرط "
        و الا
        --------- لا تختار العنصر "االنتيجة المترتبة على عدم تحقق الشرط"
        --------- و لكن فى الحقيقة نحن لم نضف اي شىء جديد .. فى هذا المثال ..... نريد شروط حقيقية ....

        لنجرب هكذا ......

        --------- لكل ما فى المشهد "For loop "
        --------- اذا كان ال العنصر بولى ..... "الشرط الاول للفلترة"
        --------- و عدد ال Faces اقل من 1000 face "الشرط الثانى هو عدد الاوجه "

        --------- اختاره " نتيجة مترتبة على تحقق الشرط "
        --------- اما اذا .. كان عدد الاوجه يساوى 1000 او اكبر من 1000 افعل ... Delete

        --------- و الا
        --------- لا تختار العنصر "االنتيجة المترتبة على عدم تحقق الشرط"


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

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

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

        -المشكلة الحقيقية ليست فى قصة الاختيار .... معظم برامج الجرافكس.. سهل جدا فيها موضوع فلترة الاختيار .... المشكلة تبدأ مع محاولتك للتحكم فى اماكن وجود العناصر و دورانها و حركاتها ... و ايها يدور
        بقيم Quaternion ... و ايها بقيم Euler ! و تجد رسالات من البرنامج تفيد بانه لا يستطيع تحويل ال Quaternion الى Point 3 value !

        -الاكواد القادمة هى مجرد حالات ال If و ال While .... فقط حاول ان ترى اننا نتجه لقصص كبير جدا و الحياة
        لن تكون لذيذة ... لذلك ...يجب ان ترضى الان بالتعامل مع الامثلة الرقمية ... على الاقل هى تقيك من وجود عوامل اخرى تؤدى الى تعقيد الفكرة

        الكود الاول : If و فى حالة وجود احتمال اخر نبدأ ب elif و فى اى حالة اخرى غير اى حالة اشترطناها قبلا نستخدم else
        كود:
        for i in range (1,100):
            if i>90:
                print i
            elif i ==50:
                print i,"is the half"
            elif i ==49:
                print "WoW"
            else :
                print "all the Following are less than 49","_____",i
        - هل جربت هذا الكود ؟ هل رايت كيف يعمل ؟ ... اذا كان مجهودك الى الان مجرد القرائة ... فأنصحك بالتوقف و ترك هذا الموضوع ... القرائة فقط لن تنفع .... لا يمكنك تعلم القيادة عن طريق القرئة فقط !

        -و اذا لم تفهم لماذا خرجت هذه النتائج ... راجع المقال الادبى فى الاعلى .. وتذكر مع اى كائن تتعامل !


        الكود الثانى ..... if مرة اخرى
        كود:
        for i in range (1,100):
            if i>90:
                print i
            elif i ==50:
                print i,"is the half"
            elif i ==49:
                print "WoW"
            elif i<49:
                print "all the Following are less than 49","_____",i
            else:
                print "all the Following are more than 50 and less than 91","_____",i
        الكود الثالث .... While loop
        -قنا سابقا ان ال While loop خطيرة قليلا ........ و لذلك كنا نزيد قيمة ال Index حتى لا تعلق ال loop عند قيمة معينة ... فى الحقيقة ... احيانا لن نستطيع ان نفعل هذا ... و لذا سنكسر استمرار ال loop عن طريق
        الامر break

        1
        كود:
        for i in range(0,10):
            while i >8:
                    print i
                    break
            else:
                print i,i*2
        2
        كود:
        for i in range(0,10):
            while i >8:
                    print i
                    
            else:
                print i,i*2
        -تذكر Ctrl+C

        3
        كود:
        for i in range(0,10):
            while i >=8 or i==5 or i==0:
                    print i
                    break
            else:
                print i,i*2
        - تذكر مثال عايدة الايوبى ........ و انظر كم شرط اشترطناه هنا ... و انظر الى نتيجة الكود





        Functions

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

        -لنجرب باشياء بسيطة اولا ....
        كود:
        def maxforums ():
            print "lol"
        -لاحظ الاتى ...
        - ال def هى عبارة عن ثابت معناه ان القادم بعدها وظيفة ... ال maxforums هو عبارة عن اسم ال function و تستطيع ان تضع اى اسم .. ماعدا ما ذكرناه سابقا ... "راجع ال variables "
        -بعد ذلك القوسين .. هما اماكن اتحديد ال argument ... او لتحديد خاصية معينة تتعلق بالوظيفة .....
        كالعادة ...مجرد كلام بلا كود ليس له معنى ... الصبر ...

        -عظيم نحن كتبنا هذا الكود فى نافذة جديدة .... "راجع الفواصل الاعلانية" و حفظناه بامتداد py ... و run او
        F5 ...... النتيجة .... لم يحدث شىء !

        -هكذا ال functions ... هى ليست اسطر من الكود يتم تنفيذها فى نفس الوقت ... بل هى وظيفة موجودة وقت
        ان تحتاجها ...
        -لو احتجنا الوظيفة السابقة ... نحتاج ان نناديها ... function call .. و ذلك عن طريق كتابة اسم ال function و ال Argument !!! .... لا تفهم ما هو ال Argument ؟ .. طبيعى جدا .... فقط اصبر

        -لنستدعى الوظيفة السابقة سنكتب ....
        كود:
        Maxforums()
        -مرة اخرى ... اسم الوظيفة و ال argument ... و لكننا لم نستخدم اى argument فى الوظيفة اساسا
        و لذلك عبرنا عن عدم وجودها بالقوسين المغلقين .. و هما لا يحتووا على اى معلومات بداخلهم .....

        - هيا نغير فى هذه الوظيفة .. و نستخدم ال Argument لا نفهم ما هو !
        كود:
        def maxforums (n):
            print "lol"*n
        -هل لاحظت ال n ؟؟؟ .... لا يجب ان تحتار فى معنى الامر print ... ببساطة معناها اطبع كلمة LOL عدد مرات n ......
        - الان لا يجب استدعاء الوظيفة عن طريق الاسم و ترك ال argument شاغر ! "جامدة طحن شاغر دى"
        -بل جرب ان تستدعى الوظيفة باسمها و تعطى argument مختلف ... مرة 6 ... او 7 ... الخ
        كود:
         
        maxforums(6)
        - اتمنى ان يكون الموضوع بدا فى الوضوح قليلا .. لان المثال القادم .. لذيذ و لكن يحتاج لتركيز !

        Fibonacci series
        -متتالية فيبوناتشى ..... اذا لم تكن تعرفها او سمعت عنها قبل ذلك ... فهى باختصار شديد هكذا ...

        1 1 2 3 5 8 13 21 34 الخ ...

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

        الكود سيتكون من الاتى ...... متغير a و متغير b ... لماذا ؟ لكى نحصل على العدد الجديد ... تذكر ان مجموع العددين يساوى العدد الذى يليهم ...

        a,b=0,1
        - الان يجب ان نحصل على العلاقة التى تؤدى الى هذه المتتالية ...
        - print b هكذا سيتم طبع الرقم 1
        - a=b الان الرقم الاول سيساوى 1 ايضا ....
        - b=a+b الان الرقم الثانى سيساوى مجموع الاول a + الثانى b .... تذكر ان هذه متغيرات "اوعية "

        - جرب ان تكتب هذا الكود و ستخرج ب .... ماذا تنتظر ؟ 1 نعم واحد فقط !
        -لماذا لا نجعلها for loop ؟ ... لنجعلها كذلك
        كود:
        a, b = 0, 1
        for i in range (0,5):
                print b,
                a, b = b, a+b
        -لماذا وضعنا تعريف المتغيرات قبل بداية ال for loop ؟ ... راجع موضوع مدى المتغيرات ...

        -عظيم الناتج هو ....
        1 1 2 3 5 خمس ارقام كما حددنا فى ال for loop

        -هيا نجعلها function !!
        كود:
        def Fib_ser(n):
            a, b = 0, 1
            for i in range (0,n):
                print b,
                a, b = b, a+b
        -هيا لنجرب كيف نستدعيها ....
        كود:
        Fib_ser(5)
        المفروض ان تعلم الان انك تستطيع الحصول على عدد اكبر من الارقام بتغيير ال Argument
        -الان احفظ هذا ال file باسم Fib.py ... و اغلق البايثون تماما ....
        -اعد تشغيل البايثون hnterpreter ... و افتح نافذة جديدة ...
        و اكتب فيها الاتى .....
        كود:
        From Fib import Fib_ser
        - لاحظ اننا نستورد من الفايل Fib ... الوظيفة Fib_ser ... نحتاج لاسمها فقط
        -لو اخطأت فى اى حرف و كتبته صغير و هو كبير او العكس .. كل شىء سيفشل !
        -الان اضف هذا السطر ... ليصبح الكود كالتالى
        كود:
        from  Fib import Fib_ser
        Fib_ser(20)
        -بمجرد ان تشغل الكود ... ستجد 20 رقم من المتتالية قد تم كتابتهم !
        -هل لاحظت ماذا فعلنا ؟
        -نحن قمنا بتخزين وظيفة متتالية فيبوناتشى فى فايل ... و فى فايل اخر تماما قمنا باستيرادها ... و استخدمناها !
        -معنى ذلك انك تستطيع الاستفادة من مئات .. بل الاف الوظائف التى تم كتابتها مسبقا من كل مطور للبايثون
        -بل انت ايضا من الممكن ان تكتب وظائف و تنشرها و يستخدمها الاخرون !
        و هى فى هذه الحالة تسمى module ...
        -لذلك ربما تفتح ال interpreter و تقول ان البايثون شكلها بسيط وواضح ان اللغة سهلة جدا ...
        -الحقيقة انها فعلا لغة سهلة و لكنها ليست ضعيفة على الاطلاق ......

        -ذكرت هذا الجزء المختصر جدا عن ال modules ... لاننا سنستخدمه فى الموضوع القادم مباشرة ...
        مع ال XSI


        -----------------------------------------------------------------------------------------------------------------
        -ملاحظات على هذا الموضوع ....

        -المدة التى سنحتاجها لكى يكون هذا الموضوع ذو فائدة فعلية هى فى تقديرى المبدئى 6 اشهر ....
        -هذه الفترة تتضمن البرمجة داخل ال Windows ايضا ... بالنسبة لهدفنا الاسمن ... من الموضوع القادم
        سندخل فيه مباشرة

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

        -لذلك احب ان اضع لكم جميعا "المهتمين بهذا الموضوع " .. المبدأ الذى يجب ان تفهمه و تؤمن به و تجعله
        جزء لا يتجزء من كتابتك للكود و حل المشاكل التى ستقابلها


        الموضوع القادم

        انشاء معبد على قد حاله فى ال XSI



        التعديل الأخير تم بواسطة cyfer; 15 / 08 / 2007, 09:19 PM.
        http://heilschwingung.at/188e0

        تعليق


        • #5
          ايوه يعني ما نردش ولا ايه بالظبط
          انا هنقل الكلام في ورق عادي لانه شكله محتاج قرأئه كذا مره
          واشكرك يا سايفر علي فتح مجال جديد للمستخدمين العرب
          جزاك الله خير الجزاء
          بلاد الكوارث
          حيث جميع الشعب وجلاديه يبحثون عن العقل والقلب والشجاعه المفقودين
          لكن للاسف لاوجود للساحر اوز
          وتنتهي القصه بفقد الحذاء الاحمر
          وتبقي اليس في بلاد الكوارث للابد

          مدونتي

          تعليق


          • #6
            يا باشا ردوا زى ما نتو عايزين ... بس تسلسل الموضوع انا باحافظ عليه ...
            الموجود حاليا .. هو الافكار فقط .. لسه التقيل ورا
            http://heilschwingung.at/188e0

            تعليق


            • #7
              محجووووووووووووززز
              -------------------------------------------------
              هذا المكان للبيع أو الإيجار .....لمزيد من المعلومات أتصل بــ122 !!
              www.ali-cv.com موقعي ومعرض اعمالي

              www.ne3na3.net شاي بالنعناع !

              follow me

              تعليق


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

                مدونتي

                تعليق


                • #9
                  for Post in Posts DO

                  }
                  Case Of Y@sser Do
                  (
                  اخطاء ؟
                  انا طلع عينى عشان احاول اخليها كده ... المشكلة انك لو اخترت كود حول اسطر كود معينة ... المسافات و البلوكات يتم
                  تجاهلها ... انا فعلا خايف من اللى جاى الواحد لما يكتب كود كبير شوية ايه اللى هايجرى !

                  - لا ...سيبك من تلوين السنتاكس دلوقت ...لان الموضوع داخل على حتة سودا ... انا مش عارف ايه اللى دخلنى المصيبة
                  دى
                  )
                  Case Of Flashawy
                  )
                  ِطب سعر المتر بكام
                  (

                  ُElseif
                  (ِشاكرين على المرور)
                  http://heilschwingung.at/188e0

                  تعليق


                  • #10
                    كود:
                    string $yourSyntax =(`use code from advanced post replay`);
                    بلاد الكوارث
                    حيث جميع الشعب وجلاديه يبحثون عن العقل والقلب والشجاعه المفقودين
                    لكن للاسف لاوجود للساحر اوز
                    وتنتهي القصه بفقد الحذاء الاحمر
                    وتبقي اليس في بلاد الكوارث للابد

                    مدونتي

                    تعليق


                    • #11
                      اها ... طيب ما انا عارفها ... بس لسه بتخرب الكود برضه
                      جربها بمسافات و بلوكات
                      http://heilschwingung.at/188e0

                      تعليق


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

                        مدونتي

                        تعليق


                        • #13
                          كود PHP:

                          function sellreply() : void
                          }
                          echo 
                          "الإيجار لمدة شهر بــ30 جنيه ";
                          {

                          function 
                          solveCodingProblem():void
                          }
                          echo 
                          "إستخدم زر الــ php  بدل زر الــcode"

                          www.ali-cv.com موقعي ومعرض اعمالي

                          www.ne3na3.net شاي بالنعناع !

                          follow me

                          تعليق


                          • #14
                            بص..إكتب الكود في الاداة اللي قال عليها ياسر... وحطها على إنها صور..وإبقى حط الكود في ملف تكست في المرفقات..
                            www.ali-cv.com موقعي ومعرض اعمالي

                            www.ne3na3.net شاي بالنعناع !

                            follow me

                            تعليق


                            • #15
                              ياااااااااااااااااااااااااه يا فلاشاوى ....

                              يا خبر ابيض ... فكرتنى ب Void و Dim و Static ...... ايااااااااااااااااااااااااااااام
                              حوالى 8 سنين !

                              ربنا يسهل ... هنتصرف فى موضوع الكود ... انا بس باحضر لل Brain Damage اللى جاى
                              http://heilschwingung.at/188e0

                              تعليق

                              يعمل...
                              X