♥ منتــــــــــــــــــــــدى طـــــــــــــــــلاب الجــــــــامعات ♥

مرحــــــــــــبا بــــــــــــــــك زائــــــــــــرنا الكــــــــــــريم

نتــــــــــمنى ان تقــــــــــــضي مـــــــعنى اجـــــــمل الاوقـــــات

انضم إلى المنتدى ، فالأمر سريع وسهل

♥ منتــــــــــــــــــــــدى طـــــــــــــــــلاب الجــــــــامعات ♥

مرحــــــــــــبا بــــــــــــــــك زائــــــــــــرنا الكــــــــــــريم

نتــــــــــمنى ان تقــــــــــــضي مـــــــعنى اجـــــــمل الاوقـــــات

♥ منتــــــــــــــــــــــدى طـــــــــــــــــلاب الجــــــــامعات ♥

هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.
♥ منتــــــــــــــــــــــدى طـــــــــــــــــلاب الجــــــــامعات ♥

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


    دروس مباشرة في البرمجه بلغة # C

    Admin
    Admin
    Admin


    الجنس : ذكر عدد المساهمات : 131
    تاريخ التسجيل : 28/06/2013
    العمر : 31
    الموقع : العراق

    دروس مباشرة في البرمجه بلغة # C  Empty دروس مباشرة في البرمجه بلغة # C

    مُساهمة من طرف Admin السبت يوليو 06, 2013 12:04 pm

    الإجراءات Procedures

    الإجراء هو مجموعة أوامر ينفذها المعالج مكتوبة بين حاصرتين { }

    ويتم تعرفها في مكان واحد في البرنامج ويمكن إستدعائها عدة مرات

    والإجراء له ثلاثة أشياء مهمة :

    1- تعريف الإسمName Decleration

    2-المدخلاتParameters

    3-الشفرة مكتوبة بين حاصرتين Code

    فمثلاً عند الدخول إلى شفرة زر رسالة الترحيب في الدرس الأول

    سنرى هذا الكود:
    كود:
    void Button1Click(object sender, System.EventArgs e)
    {
    MessageBox.Show("مرحباً بكم في السي شارب");
    }
    الكود السابق يمثل إجراء ينفذه المعالج عند الضغط على الزر

    نلاحظ انه يحتوي على الثلاث الأشياء المهمة للإجراء

    وهي تعريف الإسم:

    كود:
    void Button1Click
    و المدخلات:

    كود:
    (object sender, System.EventArgs e)
    والشفرة مكتوبة بين حاصرتين:

    كود:
    {
    MessageBox.Show("مرحباً بكم في السي شارب");
    }

    في التعريف void تعني إجراء أي أننا سنعرف متغير من نوع إجراء

    كما عرفنا متغير من نوع رقم في الدرس السابق:

    كود:
    int x;
    بنفس الطريقة عند تعريف الإجراء:

    كود:
    void x;
    لكن هذا التعريف لا يكفي فهو لا يحتوي على الثلاث الأشياء المهمة

    مثلاً لو أردنا إجراء يظهر رسالة مكتوب عليها مثلاً "من داخل الإجراء"

    فسكون التعريف كالتالي:

    كود:
    void sm()
    {
    MessageBox.Show("من داخل الإجراء");
    }
    عرفنا متغير من نوع إجراء اسمه sm إختصار لـ Show Message ..يمكنك تغيير إسم الإجراء كما
    تشاء

    يوجد لدينا الإسم:

    كود:
    void sm
    والمدخلات:
    كود:
    ()
    لا يوجد لدينا مدخلات في هذا الإجراء ولكن يجب عمل الأقواس الفارغة

    وسنعرف فيما بعد كيف نتعامل مع المدخلات

    ولدينا الشفرة:
    كود:
    {
    MessageBox.Show("من داخل الإجراء");
    }
    وبالتالي فالتعريف كامل ويمثل إجراء لإظهار رسالة ,

    والآن إذا أردنا في أي مكان من البرنامج تنفيذ الإجراء فما علينا سوى كتابة اسمه هكذا:

    كود:
    sm();
    التعليمة السابقة تجعل المعالج يبحث عن الإجراء sm وينفذ الأوامر بداخلة.

    ربما يقول البعض ما الداعي من عمل إجراء وكتابة الكود داخلة ثم إستدعاءه

    لماذا لا نكتب الكود مباشرة كما فعلنا في الدرس الأول؟؟؟

    والجواب ببساطه ماذا لو أردت إظهار الرسالة خمس مرات؟؟

    بالطريقة القديمة ستكتب هكذا:

    كود:
    void Button1Click(object sender, System.EventArgs e)
    {
    MessageBox.Show("من داخل الإجراء");
    MessageBox.Show("من داخل الإجراء");
    MessageBox.Show("من داخل الإجراء");
    MessageBox.Show("من داخل الإجراء");
    MessageBox.Show("من داخل الإجراء");
    }
    أما بطريقة الإجراءات فستكتب هكذا:

    كود:
    void Button1Click(object sender, System.EventArgs e)
    {
    sm();
    sm();
    sm();
    sm();
    sm();
    }
    كود:

    void sm()

    {
    MessageBox.Show("من داخل الإجراء");
    }

    الكود بالأزرق هو كود الضغط على الزر و الكود بالأحمر هو كود إجراء إظهار الرسالة

    نلاحظ أن طريقة الإجراءات تسهل التعامل أكثر وتوفر الوقت والجهد

    ربما يقول البعض لا يوجد فرق كبير بين الطريقتين لكن ماذا إذا كانت الرسالة كبيرة جداً

    أو ماذا إذا كانت الأوامر أكثر من مجرد إظهار رسالة

    عندها بالتأكيد الإجراء سيوفر الكثير من الجهد والوقت

    وإيضا المدخلات تجعل الإجراءات أكثر فائدة :

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

    سنجعل الرساله المراد إظهارها علي أنها مدخل متغير ويكون تعريف الإجراء كالتالي

    كود:
    void sm(string msg)
    {
    MessageBox.Show(msg);
    }
    المدخلات هي متغيرات كما رأينا حيث عرفنا متغير مدخل اسمه msg من نوع نص string

    وفي تعليمة إظهار الرسالة جعلنا الكائن MessageBox.Show يظهر ما في المتغير المدخل msg

    الآن عند إستدعاء الإجراء يجب تمرير قيمة من نوع نص مكان المتغير المدخل هكذا:

    كود:
    sm("من داخل الإجراء");
    sm("رسالة مختلفة من نفس الإجراء");
    نلاحظ أن الإجراء آظهر رسائل مختلفة بنفس الشفرة

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

    والأمر الثاني سيظهر رسالة مكتوب عليها "رسالة مختلفة من نفس الإجراء"

    ملاحظة: إذا كان لدينا أكثر من مدخل فنفصل بينها بالفاصلة مثلاً:

    كود:
    void sm(int x,string msg)
    وعند الإستدعاء :

    كود:
    sm(14,"رسالة");
    الدوال Functions
    الدول هي إجراءات لكن لها خاصية أنها ترجع قيم

    يعني رأينا في الإجراءات أنا نستدعيها للقيام بعمل محدد فقط

    أما الدوال فإنا نستدعيها للقيام بعمل محدد وإرجاع قيمة لنا

    ولها خمس أشياء مهمة:

    1- تعريف الإسم Name Decleration

    2-نوع القمية التي ستحملها الدالة Result Data Type

    3-المدخلات Parameters

    4-الشفرة مكتوبة بين حاصرتين Code

    5-تعليمة تحميل الدالة للقيمة الناتجة Return phrase

    مثلاً إذا إردنا عمل دالة تقوم بأخذ رقمين وترجع لنا مجموعهما فيكون التعريف كما يأتي:



    كود:
    int sum(int x,int y)
    {
    int z;
    z=x+y;
    return z;
    }
    في السطر الأول عرفنا دالة إسمها sum ترجع متغير من نوع رقم int

    ولينا مدخلين من نوع رقم x و y

    وبين الحاصرتين لدينا التعليمات التي تقوم بجمع المتغيرين

    وفي التعليمة الأخيرة return z تعني تحميل الدلة القيمة الموجود في z وهي مجموع xوy

    وعند الإستدعاء بنفس الطريقة في الإجراءات لكن الدالة تكون محملة بقيمة :


    كود:
    sum(4,5);
    بدون الدالة ستكود شفرة جمع رقمين هكذا:

    كود:
    int z;
    z=4+5;
    MessageBox.Show(Convert.ToString(z));
    أما بإستخدام الدالة فتكون الشفرة هكذا:

    كود:
    int z;
    z=sum(4,5);
    MessageBox.Show(Convert.ToString(z));
    لاحظ أنا استدعينا الدالة وحملنا ما داخلها للمتغير z

    في المثال السابق تعرفنا كيف نستخدم الدالة , رغم اننا لم نستفد منها كثيراً في المثال السابق

    ولكن كان الغرض منه توضيح إستخدام الدوال .

    عزل - كبسلة المتغيرات Variables Encabsulation

    مارأيك بالكود التالي:

    كود:
    void Button1Click(object sender, System.EventArgs e)
    {
    int x;
    x=10;
    AddFive();
    }
    void AddFive()
    {
    int y;
    y=5+x;
    MessageBox.Show(Convert.ToString(y));
    }
    الكود بالأزرق هو إجراء الضغط على الزر , وبالأحمر إجراء إظهار قيمة x مضاف إليها 5

    لو قمت بتنفيذ الكود السابق , ما الذي ينتج ,,, ستقول ستظهر رسالة مكتوب عليها 15

    سأقول لا للبعد والنسيان ^^ لا مش صح , بينتج خطأ جسيم !!

    السبب أن المتغير x معرف داخل الإجراء باللون الأزرق

    وبالتالي فالمفروض أن نستخدمة في هذا الإجراء فقط , وإذا أستخدمناه في إجراء آخر كما فعلنا

    فإن المعالج لن يتعرف على هذا المتغير !! .. ولكن ماذا لو أردنا أن نستخدم متغير في أكثر من إجراء؟؟

    الجواب:

    المتغيرات Variables تنقسم إلى نوعين رئيسيين :

    1-متغيرات محلية Local وهي التي تعرف وتستخدم داخل الإجراء فقط

    2-متغيرات دولية "ما لقيت لها مصطلح عربي" Global وهي التي تعرف خارج الإجراء وتستخدم من قبل إجراءات كثيرة

    والمتغيرات الدولية تنقسم إلى قسمين :

    ِa- متغيرات خاصة private وهي تستخدم من قبل إجراءات ودوال النافذة الواحدة فقط ولا تراها النوافذ الأخرى

    كود:
    private int x;
    b-متغيرات عامة public وهي تستخدم من قبل إجراءات ودوال النافذة والنوافذ الأخرى

    كود:
    public int x;
    إذن إذا أردنا أن نستخدم متغير في عدة إجراءات فإننا نعرفة خارج الإجراء

    والأفضل يكون تعريف المتغيرات الدولية في بداية كود النافذة فوق دالة Main :

    كود:
    //هنا تعريف المتغيرات الدولية
    [STAThread]
    public static void Main(string[] args)
    .
    .
    وبالتالي فالإجراء السابق بعد التعديل سيصبح هكذا :

    كود:
    private int x;
    .
    .
    void Button1Click(object sender, System.EventArgs e)
    {
    x=10;
    AddFive();
    }
    void AddFive()
    {
    int y;
    y=5+x;
    MessageBox.Show(Convert.ToString(y));
    }
    طبعاً بفرض أن احنا حطينا تعريف المتغير x فوق دالة Main

    بهذه الطريقة عرفنا x مرة واحدة وممكن نستخدمة في أكثر من إجراء من نفس النافذة

    ملاحظة: إذا أردنا أن نكتب تعليق في الشفرة أو ملاحظة بدون أن يقرأها المترجم

    فإننا نكتب في بداية السطر // والمترجم لن يقرأ الكود التي تحول لونها إلى الأخضر كما فعلنا

    في الكود السابق , أما إذا كانت الملاحظة من عدة أسطر ولا نريد أن نضيف // لكل سطر نتيجة الكسل أو ما شابه

    فيكفي أن نكتب*/ في بداية الملاحظة و/* في نهاية الملاحظة :

    كود:
    int x;
    /* هذا السطر لن يقرأه المترجم
    وهذا السطر ايضا
    وهذا أيضاً*/
    MessageBox.......

      الوقت/التاريخ الآن هو السبت مايو 11, 2024 12:24 am