fighters

    الجزء الرابع من المحاضرة الأولى لتعليم (فيجوا بيسك 6)

    شاطر
    avatar
    fighter
    الـمـديـرالـعـام
    الـمـديـرالـعـام

    عدد الرسائل : 226
    العمر : 29
    مزاجى :
    تاريخ التسجيل : 16/04/2008

    03 الجزء الرابع من المحاضرة الأولى لتعليم (فيجوا بيسك 6)

    مُساهمة من طرف fighter في الخميس مايو 01, 2008 7:40 pm



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

    (3) الحلقات Loops
    _____________

    و
    نطلق عليه المنطق التكراري و هو بكل بساطة مجموعة من الأوامر يقوم
    البرنامج بتكرارها لعدة مرات، و السؤال الذي أراه يعتصر ذهنك الان و لماذا
    يحتاج البرنامج لتكرار أمر ما عدة مرات؟، و هل هذا التكرار لا نهائي أم
    مقيد بشرط ما أم نحدد نحن عدد مرات هذا التكرار أم ماذا؟

    لنفترض مثلا أنك اشتريت أربع دجاجات، و ليس لديك سوي وعاء واحد لا يسع الا دجاجة واحدة فماذا تفعل لطهيهم ؟
    تضع
    الدجاجة الاولي في الاناء ثم تنتظر حتي تنتهي العملية ( أي تمام الطهي)،
    ثم تضع الدجاجة الثانية و هكذا حتي يتم طهي الأربع دجاجات.

    و لكن
    الواقع العملي في البرمجة أفضل كثيرا، فمثلا لو أن عندك 1000 طالب (1، 2،
    3، ...... ، 1000 ) و تريد أن تضع تقديراتهم في مادة الرياضيات علي حسب
    الدرجات، تعالي بنا لنري كيف من الممكن أن يكتب هذا الكود



    الكود:
     اقرأ درجة الطالب في المادة
    •    لو درجة الطالب أقل من  10 يكون التقدير ضعيف
    •    لو درجة الطالب 10- 13 يكون التقدير مقبول
    •    لو درجة الطالب 13 – 16 يكون التقدير جيد
    •    لو درجة الطالب 16- 18 يكون التقدير جيد جدا
    •    لو درجة الطالب 18 – 20 يكون التقدير امتياز

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


    الكود:
    •    كرر من 1 الي 1000
    •    لو درجة الطالب أقل من  10 يكون التقدير ضعيف
    •    لو درجة الطالب 10- 13 يكون التقدير مقبول
    •    لو درجة الطالب 13 – 16 يكون التقدير جيد
    •    لو درجة الطالب 16- 18 يكون التقدير جيد جدا
    •    لو درجة الطالب 18 – 20 يكون التقدير امتياز
    ارجع لبداية التكرار مرة أخري


    أي أنه سوف ينفذ كل هذه الأوامر أولا علي
    الطالب الأول حتي يفرغ منها، ثم يعود ادراجه الي بداية الأوامر مرة أخري
    لينفذ التكرار علي الطالب الثاني حتي يصل الي نهاية الأوامر و هكذا حتي
    الطالب رقم ألف
    و بحسبة بسيطة تجد أن التكرار قد جعلك تكتب 7 أسطر من
    الأوامر بدلا من 5000 (خمسة الاف سطر)، وهذه من الأشياء التي تتضح فيها
    قوة الكمبيوتر، فالكمبيوتر له ثلاث صفات مميزة للغاية ( السرعة، الدقة و
    الغباء المحكم) و لكن لا تقلق فالمبرمج هو الذي يحدد ما اذا كان الكمبيوتر
    ذكي أم غبي و ذلك بكون برنامجه ذكيا أم ...
    طبعا الان تدرك مدي أهمية
    منطق التكرار و كيف أنه رئيسي للغاية في أي لغة برمجة، و الجميل في الأمر
    أن منطق التكرار له أشكال متعددة و أنواع مختلفة مما يتيح لك مرونة تامة
    في استخدامه و لنري معا ما هي هذه الانواع و كيف يتم الاستفادة من كل نوع.


    (1) الشكل الاول: التكرار باستخدام (Do While)
    --------------------------------------------------------

    لنفترض
    أننا نريد أن ننفذ مجموع من الأوامر في حلقة تكرارية و لكن بشرط معين
    فطالما أن هذا الشرط متحقق و هو ما نطلق عليه في البرمجة (True) تستمر
    الحلقة التكرارية و يستمر تكرار تنفيذ الأوامر أما اذا حدث أن هذا الشرط
    لم يعد متحقق ينتهي التكرار و تتوقف الحلقة التكرارية عن تنفيذ الأوامر.
    - لا أفهم وضح أبن أفصح بكسر الباء
    - حسنا انظر معي لهذا التركيب
    While (تحقق شرط معين) Do A
    حيث A عملية ما أو مجموعة أوامر
    وتعني--------- بينما الشرط متحقق نفذ A
    لو أننا في المثال السابق أردنا التطبيق علي درجات الالف طالب و حساب تقديرات كل منهم كيف نفعل ذلك باستخدام Do While ؟

    سنفعل ذلك كالاتي:


    الكود:
    •    طالما أن عدد الطلاب أقل من أو يساوي ألف نفذ
    •    لو درجة الطالب أقل من  10 يكون التقدير ضعيف
    •    لو درجة الطالب 10- 13 يكون التقدير مقبول
    •    لو درجة الطالب 13 – 16 يكون التقدير جيد
    •    لو درجة الطالب 16- 18 يكون التقدير جيد جدا
    •    لو درجة الطالب 18 – 20 يكون التقدير امتياز
    ارجع لبداية التكرار مرة أخرة

    أو كالاتي

    الكود:
    DO While S <= 1000
    الاوامر
    Loop


    حيث S هو العداد الذي يستخدمه التكرار لمعرفة
    موقعه الان، أي هل هو الان ينفذ الأوامر الخاصة بالطالب الثالث أم الرابع
    ... حتي تتساوي ال S مع الشرط و هو ال 1000 فينتهي التكرار و ينتهي عمل
    الحلقة التكرارية

    و يمكن تمثيل ذلك بخريطة التدفق السهلة و البسيطة الاتية:





    (2) الشكل الثاني: التكرار باستخدام (Do Until)
    ------------------------------------------------

    و هو عكس النوع السابق، حيث أن التكرار يظل يعمل طالما أن الشرط غير متحقق، حتي until اذا تحقق الشرط ينتهي التكرار

    مثال
    ----
    طالما ان تانك السيارة غير مملوء while ------
    املاْه بالبنزين، حتي until اذا امتليء، توقف عن تموين العربية و ... و روح حاسب علي البنزين حالا

    و تركيبها يكون كالاتي:


    الكود:
    Do  (A) Until
      (تحقق الشرط)

    لو أننا في المثال السابق أردنا التطبيق علي درجات الالف طالب و حساب تقديرات كل منهم كيف نفعل ذلك باستخدام Do Until ؟

    سنفعل ذلك كالاتي:


    الكود:
    •  نفذ حتي يصبح عدد الطلاب 1000
    •    لو درجة الطالب أقل من  10 يكون التقدير ضعيف
    •    لو درجة الطالب 10- 13 يكون التقدير مقبول
    •    لو درجة الطالب 13 – 16 يكون التقدير جيد
    •    لو درجة الطالب 16- 18 يكون التقدير جيد جدا
    •    لو درجة الطالب 18 – 20 يكون التقدير امتياز
    ارجع لبداية التكرار مرة أخرة

    أو كالاتي

    DO Until S <=1000
    الأوامر
    Loop


    حيث S هو العداد الذي يستخدمه التكرار لمعرفة
    موقعه الان، أي هل هو الان ينفذ الأوامر الخاصة بالطالب الثالث أم الرابع
    ... حتي تتساوي ال S مع الشرط و هو ال 1000 فينتهي التكرار و ينتهي عمل
    الحلقة التكرارية

    و يمكن تمثيل هذا الشكل من خرائط التدفق كالاتي:





    (3) الشكل الثالث و الأخير: التكرار باستخدام (For … Next)
    ----------------------------------------------------------------



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


    الكود:
    For I = Y to Z
    أوامر
    Next I


    و لا تخف من تركيبها الذي قد تظن أنه صعب و سوف أشرحه لك بالتفصيل ان شاء الله
    أولا
    FOR I تعني أن I هي العداد الذي سوف يعد مرات التكرار لمعرف موقع الحلقة
    التكرارية من التكرار، أي هل البرنامج الان ينفذ التكرار الأول أم الثاني
    أم الثالث أم ماذا.
    Y هي نقطة البداية للتكرار قد تكون صفر أو واحد أو 100 حتي حسب المبرمج و حس البرنامج
    Z هي نقطة نهاية التكرار و هي النقطة التي يتوقف عندها البرنامج عن تنفيذ التكرار
    Next I جزء من التركيب و هي تستدعي التكرار مرة أخري طالما لم نصل الي نقطة النهاية.
    فمثلا لو قلنا


    الكود:
    For I = 1 To 10
    Print "ahmed"
    Next I

    فهذا معناه أننا نريد من البرنامج أن يبدأ من النقطة 1 ويظل يطبع أحمد حتي يصل الي النقطة 10 ، أي أنه سوف يفعل ذلك 10 مرات.

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


    الكود:
    •    كرر الاتي 10 مرات فقط
    •    اطبع ورقة عليها اسمي
    •    ارجع لبداية التكرار مرة أخري

    و في كل مرة عند بداية البرنامج يرجع مرة أخري للعداد I و يسأله هل قيمتك أصبحت مساوية لقيمة Z أي 10؟
    فاذا كانت مساوية للعشرة يوقف التكرار ، و الا يعيد التكرار مرة أخري.

    أتمني أن يكون الشكل الثالث من أشكال التكرار بسيط و للزيادة في السهولة نرسم خريطة التدفق الخاصة به.




    (4) النوع الرابع و الأخير: البرمجيات الفرعية (Sup Programming)
    -------------------------------------------------------------------------

    البرمجيات
    الفرعية هي عبارة عن تجميع لأجزاء من البرنامج مع بعضها و كل جزء يمثل
    مجموعة من التعليمات، و يشكل برنامجا فرعيا مستقلا يتم الرجوع اليه عند
    الحاجة لأداء مهمة معينة، و يكون لكل جزء من هذه الأجزاء اسم مميز، و يكون
    تركيب هذه النوع كالاتي:
    GOSUB …. Return

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

    انتهينا بحمد الله من المقدمة و
    الجزء النظري، الان لديك أساس قوي جدا عن البرمجة و مفاهيمها و أنت أكثر
    من جاهز للبدأ في الفيجوال بيسك 6، أقصد لكي تكون مبرمج فيجوال بيسك 6 ...
    و يا له من لقب
    استعد لم ننتهى بعد


    _________________

      الوقت/التاريخ الآن هو الجمعة أكتوبر 19, 2018 9:20 pm