منتدى طلاب جامعة الحديدة

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


    المختصر فى لغه البرمجه باستخدام لغه ال(c)الجزء(2)

    شاطر

    طارق البغوي
    المدير العام للمنتدى
    المدير العام للمنتدى

    ذكر
    عدد الرسائل : 2833
    العمر : 29
    البلد : الجهورية اليمنية
    القسم والمستوى : خريج قسم الرياضيات 2010م
    المزاج : متقلب ( مزاج شاعر )
    أختر علم دولتك :
      :
    السٌّمعَة : 14
    نقاط : 985
    تاريخ التسجيل : 28/09/2007

    بطاقة الشخصية
    تخصصي: رياضيات
    المحافظة: الحديدة

    المختصر فى لغه البرمجه باستخدام لغه ال(c)الجزء(2)

    مُساهمة من طرف طارق البغوي في الأربعاء أكتوبر 24, 2007 5:12 am

    المختصر فى لغه البرمجه باستخدام لغه ال(c)الجزء(2)

    الـ Loop أو قل (الجمل التكرارية)

    لا يكاد كود يخلو من هذه الجمل فهي توفر علينا مشقة الإعادة.
    من هذه الجمل:
    For
    While
    Do while
    Foreach

    وغيرها ....

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

    نفرض بأنك مبرمج ألعاب (Game Programmer) وتستخدم أي لغة برمجة مع مكتبات الـ DirectX.

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

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

    لأن الـ DirectX يقوم برسم أي مجسم بإستخدام المثلثات.. ولك أن تتخيل ما معنى هذا... أعتقد أنك لم تستوعب بعد حجم هذه الكارثة ... لا بأس سأطلب منك تطبيق عملي أريد منك أن تأخذ قطعة من الورق وتقصها إلى قطع صغيرة وتكون بشكل مثلثات .. الآن أريد منك أن تصنع لي مجسم (لكوب)بواسطة هذه القطع... أترى مدى الكارثة.

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

    ولأكن هل هذا فعلاً ما يحدث .. في الحقيقة لا ... هناك طريقة أخرى ...

    عندما أريد عمل المسخ الذي بالأعلا .... فكل ما علي فعله هو أن أرسم الجسم في الـ 3D MAX أو Maya ... وأقوم بتخزين هذا الشكل بصيغة أكس File.

    الآن صنعت الشكل وبقي لدي أن أقرأه بواسطة الـ DirectX ليتسنى لي بعد ذلك تحريكه كما أشاء..

    الآن لقراءة ملف أكس File بواسطة الـ DirectX سيحتاج بالطريقة العادية لقرابة عشرة أيام أو أكثر قليلاً لكتابة كود يستطيع قراءة هذا الملف الذي يحوي مسخنا .. أي أننا وفرنا على أنفسنا مسافة كبيرة ... هذا جميل أليس كذلك .... لا أعتقد أنك توافقني الرأي وخصوصاً إذا علمنا أن اللعبة الواحدة من الممكن أن تحوي ملايين الأشكال ...

    آن آوان الخطوة الأخيرة وهي إستخدام جمل الـ Loop لقراءة الملف .. أتدري كم من الوقت ستحتاج لكتابة كود يقوم بقراءة هذا الملف ... أراهن أنها أقل من خمسة دقائق ...

    أليس هذا رائعاً ..

    إذن هيا نلقي نظرة على هذا الإختراع الـ Loop

    نبدأ بشرح القاعدة الذهبية لجمل الـ Loop (الجمل التكرارية).
    لأي جملة من الجمل التكرارية .. قاعدة ثابته إذا لم تلتزم بها فتوقع حدوث دوامة من الأرقام الانهائية أو أخطاء في النتائج ..

    أي جمل تكرارية يجب أن تحدد لها ثلاثة أشياء
    الأول: أين البداية.
    الثاني: أين النهاية.
    الثالث: كيفية العرض.

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

    لنفرض بأني أريد طباعة الأرقام من 1 إلى 200 .
    في الحالة العادية سيكون تمثيل الكود كالتالي:
    إطبع 1
    إطبع 2
    إطبع 3
    إطبع 4
    إطبع 5
    إطبع 6
    ………
    ………
    ………
    إطبع 200

    أعتقد بأن هذا المثال يذكرك بقصاصات الورق في المثال بالأعلا .. أي أن هذا الكلام غير عملي ..

    حسناً لنأخذ نفس المثال بالأعلا وهو طباعة الأرقام إلى العدد 200 ولأكن بإستخدام جملة الـ For

    For (i=0;i==200;i++)
    {
    إطبع i
    }

    الآن لاحظ أننا في الطريقة العادية قمنا بكتابة 200 سطر من الأكواد من أجل طباعة الأرقام إلى 200

    أما في الجملة For فقد قمنا بكتابة أربعة أسطر فقط ..

    حسناً ما رأيك أن نستخرج القوعدة الذهبية التي تكلمنا عنها بالأعلا من جملة For
    البداية هي :0 أي إبدأ طباعة الأرقام من الرقم صفر
    النهاية هي : 200أي عندما تصل إلى الرقم 200 توقف
    طريقة العرض i++ أي رقم وراء الآخر.

    حيث أن i++ هي إختصار لي i = i + 1
    أي أن الزيادة ستكون بمقدار واحد.
    ومن الممكن إستخدام i— من أجل تحديد عملية النقصان بمقدار واحد.


    ما رايك الآن بأن نذهب في العمق قليلاً لنرى كيف يقوم المعالج (Processor) بهذا العمل.

    عندما نبدأ بالتكلم عن جمل الـ Loop ففي الحقيقة بأن الكمبيوتر لا يميز بين For أو While او اي من الجمل المذكورة ...

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

    فالمسجل الذي يختص بتحديد عدد مرات التكرار هو المسجل CX .. وهذا يعني أننا لو ترجمنا الكود بالأعلا الذي يقوم بي عملية طباعة الأرقام من 1 إلى 200 سيكون كالتالي:
    أولا: قم بوضع العدد 200 في المسجل CX والتي تمثل عدد مرات التكرار
    ثانياً: قم بوضع العدد 0 في المسجل AX والتي تمثل البداية
    ثالثاً: قم بإستدعاء المقاطعة الخاصة بي طباعة الأرقام على الشاشة وهي int 21h

    نلاحظ أثناء عمل run بأن االمسجل CX ينقص بمقدار واحد.
    والمسجل AX يزيد بمقدار واحد.

    وعندما يصبح المسجل CX صفر يتوقف الـ LOOP

    الكمراني
    مستشار إداري
    مستشار إداري

    ذكر
    عدد الرسائل : 730
    العمر : 29
    البلد : اليمن
    القسم والمستوى : مش مشغول
    المزاج : متعكر
      :
    السٌّمعَة : 5
    نقاط : 29
    تاريخ التسجيل : 02/11/2007

    بطاقة الشخصية
    تخصصي: رياضيات
    المحافظة: الحديدة

    رد: المختصر فى لغه البرمجه باستخدام لغه ال(c)الجزء(2)

    مُساهمة من طرف الكمراني في الثلاثاء أكتوبر 14, 2008 10:24 am

    يكفي هذا وتفرغ لغيرة

    ونشكرك على المواضيع الجميلة

      الوقت/التاريخ الآن هو السبت ديسمبر 10, 2016 7:26 am