[AliveScreen] البرمجة بـ VisualBasic خطوة خطوة...في "اصنع برامجك بنفسك"

[ منتدى البرامج والهواتف الذكية ]


النتائج 1 إلى 20 من 32

مشاهدة المواضيع

  1. #1

    الصورة الرمزية ؛ّ نديمك ؛ّ

    تاريخ التسجيل
    Feb 2009
    المـشـــاركــات
    1,015
    الــــدولــــــــة
    مصر
    الــجـــــنــــــس
    ذكر
    الـتـــقـــــيـيــم:

    news [AliveScreen] البرمجة بـ VisualBasic خطوة خطوة...في "اصنع برامجك بنفسك"

    الموضوع طويل نوعا ما,ويحتاج لتطبيق أثناء القراءة,لذا ينصح بتجزئته...أرجو تحميل نسخة فيجول بيسك من أخر الموضوع أولاً إن لم يكن لديك واحد بالفعل...

    كثرت في هذا العصر البرامج والتطبيقات التي تخدم المستخدم -والشركات أيضا-...
    بل إن بعض التطبيقات لم يعد بإمكان الناس الاستغناء عنها أبدا...على سبيل المثال:
    *محررات النصوص: الاستغناء عن الـ Word و NotePad و WordPad بمثابة الاستغناء عن الكتابة والنشر فأي كاتب أو مدون مهتم يحتاج للجوء لأحدها قبل نشر مقالته.
    *برامج التصميم:Photoshop و Gimp وبرامج الرسم عموما لم يعد بإمكان أي مصمم الاستغناء عنها.
    *برامج المراسلة الفورية:عوضت هذه البرامج غياب الأشخاص وقربت المسافات بكافة تقنياتها,لذا الاستغناء عنها بمثابة انقطاع التواصل.
    *متصفحات الإنترنت:تخيل فقط لو لم يكن هناك برامج لتصفح الإنترنت...هل يوجد إنترنت؟!.
    لكن,ومع كل ذلك إلا أن كثيرا من الشركات المبرمجة اتجهت مؤخرا إلى البحث عن الكسب المادي قبل إرضاء المستخدم,ولكن الأغلبية تبحث عن إرضاء المستخدم وذلك لأن إعجاب المستخدم هو ما يجلب لهم الكسب...أضف إلى ذلك براءات الاختراع التي تحصل عليها الشركات فتقتل التنافس وهي ما صار يعرف مؤخرا بـ "براءات الاختراع اللاأخلاقية"...
    هناك الكثير الكثير من الأسباب التي تجعل الاعتماد الكامل على تلك التطبيقات المدفوعة بمثابة الموت البطيء...مما حدى بالبعض للجوء للهكر والكراكات وهو ما يعتبره العلماء محرما -مع مراعاة التفصيل الشرعي في ذلك-,وأيضا نشأت العديد من الشركات التي تطرح حلولا منافسة للبرامج المدفوعة,ولكنهم يطرحون برامجهم مجانية.

    واليوم أصبح أمامنا أحد حلين:
    *إما الاعتماد على البرامج المجانية,وهي إما أن تكون ذات كفاءة عالية أو تكون لا تقارن بالبرامج المدفوعة من حيث الجودة...يمكنك الأخذ بهذا الخيار وإغلاق الموضوع ...
    *ثانيا:صناعة برامجنا بأنفسنا...وهو موضوعنا اليوم...
    بالتأكيد قد تكون هذه البرامج خفيفة ولا تقارن بالبرامج المدفوعة,ولا المجانية حتى ,إلا أن استخدام أي شيء من صنع يدك له رونق خاص...
    هذا الموضوع بإذن الله سيكون المنطلق لتعلم أبسط لغات البرمجة,لغة الفيجول بيسك...

    لغات البرمجة متعددة,ويصعب حصرها...
    أقرب اللغات للغة الإنسان هي لغة فيجول بيسك...وهي بدورها لها إصدارات متعددة...عملنا اليوم سيكون على النسخة التاسعة (Visual Basic 2008) النسخة السريعة (Express),يمكنكم تحميلها من آخر الموضوع...
    هذه خريطة تجمع لغات البرمجة,يمكنكم الاطلاع عليها:
    (انقر هنا للاطلاع على خريطة لغات البرمجة إذا كنت مستعدا للمفاجأة )

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

    إن برمجة أي برنامج يجب أن تمر بأربعة مراحل:
    1. تحديد المشكلة المراد حلها بالبرنامج,أو تحديد الهدف من البرنامج.
    2. رسم مسار البرنامج على الورق (تحليل الخوارزميات),ورسم نموذج الفورمات (Forms) والأزرار وشرح كل منها,كل هذا على الورق.
    3. تصميم المظهر العام للبرنامج باستخدام الفيجول بيسك -في هذه الحالة- أو أي لغة أخرى.
    4. كتابة الكود لكل أداة موجودة في البرنامج تحتاج لذلك.


    لغات البرمجة تقوم في الأساس على استخدام الأرقام والحروف والرموز,وفيما يلي بيان لأنواع الأرقام والرموز والحروف:


    تستخدم في العمليات الحسابية وتسمية المتغيرات والأدوات.

    أمثلة على العمليات الحسابية:
    1+2
    4/2
    أمثلة على تسمية المتغيرات والأدوات:
    Form1 (الاسم الافتراضي للنماذج)
    TextBox1 (الاسم الافتراضي لمربع النص)
    d12 (اسم عدد متغير أو ثابت)


    تستخدم لتسمية المتغيرات وكتابة الأوامر البرمجية.

    Dim (لتعريف المتغير)
    Const (لتعريف الثوابت)
    as (كلمة لتوضح نوع المتغير أو الثابت)
    integer (عدد صحيح)
    OS34 (اسم لمتغير أو ثابت)
    sqr (جذر تربيعي)


    تستخدم لكتابة الأوامر الحسابية,ولدينا في الفيجول بيسك مجموعة من الرموز في الحسابات:
    < (أكبر من)

    > (أصغر من)
    = (يساوي)
    <> (لا يساوي)
    + (جمع)
    - (طرح)
    * (ضرب)
    / (قسمة)
    ^ (أس)
    ' (لكتابة شرح أو توضيح)
    . (للفصل بين الأشياء وتوابعها -مثل الأدوات وخصائصها-)
    & (للربط بين نصين أو سلسلتين نصيتين)
    (الأقواس) (لتحديد جزء معين ينفذ عليه الأمر)
    " (لكتابة نص)


    Dim:سيأتي بيانه.
    Const:سيأتي بيانه.
    val:لاستخراج قيمة متغير أو ثابت أو تحديد قيمة,وسيأتي بيانه.
    Msgbox:صندوق رسالة يخرج رسالة تحذيرية أو تنبيهية أو طلب موافقة,وسيأتي بيانه.
    Inputbox:صندوق مشابه لصندوق الرسالة لإدخال قيمة معينة إلى البرنامج,وسيأتي بيانه.
    Show:لإظهار الفورم.
    ShowDialog:لإظهار الفورم وجعله أساسيا (أي لا يمكن الرجوع للبرنامج حتى ينتهي المستخدم من عمله في الفورم الذي ظهر).
    End:لإنهاء البرنامج.


    خصائص الأدوات هي تلك الخواص التي تتيح التحكم بشكل ومحتوى الأداة وموقعها,وفيما يلي أهم تلك الخواص:
    Name:لتسمية الأداة,حيث لا يمكن استدعاء أي أداة أو التحكم فيها بدون كتابة اسمها.
    Text:هذه الخاصية تتحكم بالنص الظاهر في أي أداة...مثل النص المكتوب في مربع النص,أو النص المكتوب في شريط العنوان للبرنامج.
    Font:تتحكم في نوع الخط وحجمه والخصائص الأخرى,كتضخيم الخط (Bold) و الميلان (Italic) والخط السفلي (Underline)...
    Size:تتحكم في حجم الأداة,طولها وعرضها.
    Visible:تتحكم في ظهور الأداة من عدمة.
    Enabled:تتحكم في إتاحة الأداة للاستخدام أو لا,حيث تلاحظ أحيانا في بعض البرامج أن بعض الأزرار لا يمكنك استعمالها.
    BackColor:يتحكم في لون خلفية الأداة.
    ControlBox:تتحكم في إظهار مربع التحكم (أزرار التكبير والتصغير والإغلاق).
    Location:تتحكم في موقع ظهور الأداة.
    Locked:تتحكم في إتاحة الأداة للتعديل أو لا,والفرق بينها وبين Enabled أنه في حال تعطيل Enabled لا يمكن التحكم في الأداة مطلقا -بالنسبة للمستخدم وليس المبرمج-,بينما locked تلغي خواص التعديل فقط -كتعديل الحجم ولون النص مثلا-.
    RightToLeft-RightToLeftLayout:تتحكمان في اتجاه الكتابة للأداة.


    أوامر التحكم هي تلك الأوامر التي تعطى للأدوات ليتم تنفيذ الأوامر من خلالها,وأهم تلك الأدوات هي:
    Click:أي أنه عند النقر على الأداة تقوم بتنفيذ الأوامر التابعة لها,يتم تنفيذها بالنقر بالفأرة أو بزر المسافة في لوحة المفاتيح.
    MouseMove:عند مرور الماوس فوق الأداة.
    DoubleClick:الضغط المزدوج على الأداة,(النقر مرتين متتاليتين -دبل كليك-) بالفأرة أو بلوحة المفاتيح.
    KeyDown:عند الضغط على أحد أزرار لوحة المفاتيح مع الاستمرار.
    KeyPress:عند الضغط على أحد أزرار لوحة المفاتيح.
    MouseClick-MouseDoubleClick:نفس الأوامر المحددة لـ Click و DoubleClick,ولكنها محددة بالنقر بالفأرة فقط.
    كما أن هناك العديد من الخصائص المساعدة والتي لم تكن موجودة في VB6 مثل:عند تغير حجم الأداة,تغير اتجاه الكتابة,تغير نوع الخط...وهكذا.
    هذه الأوامر يتم إعطائها للبرنامج كل أداة على حدة,وتتم كتابة الكود بالطريقة التالية:
    [PHP]Private Sub <ToolName>_<Command>
    <الأوامر هنا>
    End Sub[/PHP]
    حيث:
    Private Sub:أمر تبدأ به الأوامر المخصصة لزر معين,وهناك أوامر أخرى مثل Public Sub وغيرها لكننا لن نستعملها الآن.
    <ToolName>:اسم الأداة.
    <Command>:الأمر المنفذ,Click,DoubleClick...إلخ.
    <الأوامر هنا>:تكتب الأوامر المطلوب تنفيذها في حال تنفيذ الأمر المحدد للأداة المحددة.
    End Sub:علامة انتهاء الأوامر المحددة.




    المتغير:هو رمز يحمل قيم متعددة حسب المعادلة المعطاة,يتم تعريف المتغير باستخدام الأمر Dim.
    المتغيرات نعرفها من أيام الإبتدائية,فجميعنا يعرف (س) و (ص) و (ع),فهي نفس الفكرة,حيث أن القيمة تتغير مع تغير المعادلة,أو يكون هناك عدة قيم لنفس المتغير في نفس المعادلة.

    [PHP]Dim b16 as double =213[/PHP]
    في المثال السابق:
    Dim:هو الأمر المستخدم لتعريف المتغيرات.
    b16:اسم المتغير المراد تعريفه.
    as:كلمة فاصلة تبين للبرنامج أن الكلمة التالية هي نوع المتغير.
    double:نوع المتغير ويعني عدد عشري مضاعف.


    الثابت:هو رمز يحمل قيمة ثابتة حسب تعريف المبرمج,وفائدته توفير الوقت على المبرمج أو المستخدم بكتابة اسم الثابت بدل من كتابة قيمته.
    يتم تعريف الثوابت باستخدام الأمر Const.

    [PHP]Const a1 as integer =12 [/PHP]
    في المثال السابق:
    Const:الكلمة المعرفة للثابت وهي اختصار للكلمة الإنجليزية"Constant" أي ثابت.
    a1:هو اسم الثابت الذي نريد تعريفه.
    as:كلمة تدلل البرنامج أن ما يليها هو نوع الثابت.
    integer:هو نوع الثابت في هذه الحالة وتعني رقم صحيح.

    هناك أنواع عدة للمتغيرات والثوابت,يتم استخدامها حسب الحاجة إليها,ولا يمكن استخدام أحدها لأداء عمل الأخرى:
    *integer:عدد صحيح (موجب أو سالب) ولا يقبل الكسور ولا الجذور.
    *long:عدد صحيح طويل.
    *Date:تاريخ.
    *Time:وقت/الزمن الحالي.
    *single:عدد عشري.
    *Double:عدد عشري مضاعف.
    *String:سلسلة نصية.
    *Currency:عملة.
    *Variant:متغير بدون تحديد نوع المحتوى.

    وهناك أنواع عديدة أخرى ولكن هذه أشهرها...

    ملاحظة:عند تعريف متغير أو ثابت يقوم الجهاز بحجز مساحة له في الـRAM ولكل نوع مما سبق مساحة خاصة لا تزيد,وهذا هو الفرق بين Integer و long حيث أن كلاهما عدد صحيح لكن الأخير له مساحة أكبر في حين تعديها يخرج البرنامج رسالة خطأ.


    المتغيرات والثوابت والأدوات المدرجة في البرنامج يجب عند تسميتها مراعاة الشروط التالية:

    *أن يكون الحرف الأول حرفا (أي ليس رقما أو رمزا) ويكون باللغة الإنجليزية,وبالتالي لا يمكن التسمية بـ: (*1) أو (1d) أو (ل1).
    *أن يكون الاسم حروفا وأرقاما إنجليزية (باستثناء الحرف الأول فلا يكون رقما)فقط,فلا يسمى بـ: (زر1).
    *أن لا يزيد الاسم عن 255 حرفا.
    *أن لا يكون الاسم اسما لأمر يستخدم في البرمجة,فلا يستخدم: (Dim) أو (as) أو (integer) أو ما شابه.
    *أن لا يحتوي الاسم على الرموز التي يمنع تسمية الملفات بها,وهي: (/\:<>"?|).
    *أن لا يكون الاسم مستعملا لمتغير أو أداة أو ثابت آخر مسبقا.
    *أن لا يحتوي الاسم على مسافات.

    الإعلان عن المتغيرات والثوابت والأدوات أو ما يسمى باستخراج البيانات من المتغيرات والثوابت والأدوات هو الطريقة التي يتم بها معرفة القيم التي يختزنها المتغير أو الثابت أو الأداة أو التي يمكن بها التحكم بقيمهم...ويمكن التعرف على كل منها بما يلي:


    يتم استخراج محتوى المتغيرات عبر استخدام الأمر Val وهو اختصار لـ Value أي قيمة...وصيغته هكذا:
    [PHP]Val(A12)[/PHP]
    ويجب كتابة الأقواس حول اسم المتغير وعدم ترك مسافة بين val والقوس...
    هذه الطريقة لمعرفة قيمة المتغير واستعمالها مباشره فيمكنك استخدامها مباشرة دون معرفة قيمتها:
    [PHP]TextBox1.Text=Val(D1)+Val(C1)[/PHP]
    في هذا المثال قمنا بتحديد قيمة النص بداخل مربع النص TextBox1 بأنه مجموع قيمتي المتغيرين D1 و C1.
    **سيأتي بيان الأدوات لاحقا**
    أو يمكنك استخدام المتغيرات مباشرة دون استدعائها أو معرفة قيمها:
    [PHP]Val(DC)=D1+C1[/PHP]
    أو
    [PHP]DC=D1+C1 [/PHP]
    ولكن عليك الحذر في هذه الطريقة إذ إن الرمز (+) قد يقوم بدمج القيمتين بدل من جمعهما,أي لو فرضنا أن D1=12 و C1=3 فقد تكون قيمة المتغير DC=123 وليست 15 كما يفترض.
    ولهذا فيفضل استخدام Val في العمليات الحسابية الدقيقة.



    يمكن معرفة قيمة الثابت (الإعلان عنه) عن طريق استخدام Val,أي بنفس طريقة الإعلان عن المتغيرات.


    وهي الجزء الأهم...
    فكل أداة يمكن معرفة قيمة خاصية من خواصها عبر المسار الثابت التالي:
    [PHP]ToolName.ToolProperty[/PHP]
    حيث ToolName: هو اسم الأداة,وهو الخاصية Name الموجودة لدى كل أداة.
    و ToolProperty: هو الخاصية المراد معرفة قيمتها.
    والخاصية قد تكون قيمتها منطقية (صح أو خطأ- True OR False) أو عددية (كعُرض الأداة أو طولها مثلا) أو سلسلة نصية (كنص مدخل في مربع أو عنوان) أو غيرها,,وكل هذا قابل للتغيير.
    ولنأخذ مثالا على ذلك مربع النص:
    فيمكن التحكم في النص بداخل مربع النص اسمه TextBox1 عبر الصيغة التالية:
    [PHP]TextBox1.Text[/PHP]
    والمقصود بالتحكم بالنص أي الإضافة والتعديل والحذف والاستبدال والفحص,كله من قبل المبرمج,أما المستخدم فسيكتب ما يشاء وينسخ ويحذف ما يشاء,وهو لا يعرف ما يدور خلف الكواليس...

    يمكننا إدخال نص عبر كتابة الصيغة السابقة أولا ومن ثم رمز (=) ومن ثم النص المراد إدخاله بين علامتي تنصيص:
    [PHP]TextBox1.Text="Hello world!"[/PHP]
    في المثال السابق قمنا باستدعاء الخاصية text للأداة textbox1 وأدخلنا فيها النص "Hello world!".



    أيضا يمكننا معرفة قيمة خاصية أخرى لأي أداة عبر كتابة ذلك بالطريقة السابقة الأدوات...فمثلا نريد أن نعرف إذا ما كانت الأداة Timer1 مفعلة أم لا ونضع هذا الخبر في مربع نص اسمه TB1 في البرنامج,ندخل الصيغة التالية:
    [PHP]TB1.text=Timer1.Enabled[/PHP]
    حينها سيقوم البرنامج بكتابة True إذا كانت مفعلة, و False إن لم تكن كذلك في مربع النص TB1.

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

    القواعد الشَّرطية (بفتح الشين وليس ضمها ) هي:قواعد تعطي شروطا للبرنامج في حال توافرها فإن البرنامج يقوم بأداء الأوامر المتعلقة بها.

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

    [PHP]If <Condition>Then <STATMENT>[/PHP]
    حيث:
    <Condition>:الشرط.
    <STATMENT>:يمكن أن نسميه جواب الشرط,أي ما ينفذه البرنامج عند تحقق الشرط.
    وهذه الصيغة أبسط الصيغ حيث تكتب في سطر واحد...

    [PHP]if <CONDITION> Then
    <STATMENT>
    End If [/PHP]
    وهذه الصيغة تستعمل في حالة كان الشرط واحدا وطويلا ويتم في عدة خطوات...وكما تلاحظ يجب انتهاء الأوامر بـ End IF.

    [PHP]if <CONDITION1> Then
    <STATMENT1>
    Else If <CONDITION2> Then
    <STATMENT2>
    ....
    End If[/PHP]
    وهذه تستخدم في حال وجود عدة احتمالات (شروط) محددة ومتعددة,أي أننا نضع شروطا محددة فقط,وإن لم يتوفر أي منها لا يطبق شيء.

    [PHP]if <CONDITION1> Then
    <STATMENT1>
    Else If <CONDITION2> Then
    <STATMENT2>
    ....
    Else
    <Exceptional Condition Statment>
    End If
    [/PHP]
    لاحظ أن Else الأخيرة بدون IF ولا شروط...
    هذا النوع من القاعدة هو الأوسع,حيث أنك تحدد شروطا معينة إن لم يتحقق أي منها يقوم بتطبيق أوامر الحالة الاستثنائية (ما بعد ElSE)...
    والآن,وقت شرح هذه القاعدة:
    1. بداية؛ نكتب (If) ومعناها (إذا) أي أنك تشترط شرطا يرتبط حدوث العملية اللاحقة على تحققه...
    2. نكتب الشرط المراد تحققه مسبوقة ومتبوعة بمسافة بدلا من (<CONDITION1>)...
    3. ثم نكتب (Then) وتعني (إذاً),أي,إذا تحقق <CONDITION1> إذاً قم بعمل التالي...
    4. نكتب الأوامر المراد تطبيقها حال تحقق الشرط بدلا من (<STATMENT1>)...وهي يمكن أن تكون أي نوع من الأوامر (فتح,إغلاق,استبدال,كتابة نص,...إلخ)...
    5. (Else If) تعطيك إمكانية وضع شرط آخر أو احتمال آخر,ولكن يجب عليك أن تعلم أن هذا الشرط لن ينظر فيه إلا إذا -وفقط إذا- لم يتحقق أي من الشروط التي تسبقه...حيث أن البرنامج يطبق الأوامر الخاصة بأول شرط يتحقق ويتجاهل باقي الشروط.
    6. يتبع نفس الخطوات من1-4,وإن أراد زيادة شرط آخر يضيف (else if) أخرى ويكتب ما يريد.
    7. (Else) تستخدم في حالة احتمال عدم تحقق أيا من الشروط السابقة كلها,ولكن لا يوضع أي احتمال أو شرط بعدها,وإنما أوامر يقوم بها البرنامج في حالة لم يتحقق أي شرط مما سبق توضع في مكان (<Exceptional Condition Statment>
    8. (End IF) أو (EndIF) هي خاتمة أي صيغة لأي قاعدة من قواعد If السابقة,ما عدا الأولى التي تشغل سطرا واحدا.

    ربما يكون الشرح أعلاه معقدا لذلك,بالمثال يتضح المقال:
    [PHP]If TB2.Text=0 Then

    TBR.Text="لا يمكن القسمة على الصفر"
    Else If TB2.Text <0 Then
    TBR.Text="لا يمكن القسمة على السالب"
    Else
    TBR.Text=TB1/TB2
    End If
    [/PHP]
    طبعا هناك الكثير من الغموض في الأعلى لكن سيتضح الآن كل شيء بإذن الله...

    بداية,هذا الكود لزر القسمة في آلة حاسبة مكونة من ثلاث مربعات نص: (TB1و TB2) لإدخال القيم,حيث يكتب في المربعين القيم ومن ثم ينقر أحد أزرار العمليات (جمع,طرح,ضرب,..إلخ) وتخرج النتيجة في مربع النص (TBR)...
    يقوم البرنامج عند النقر على زر القسمة,بالتحقق من قيمة الخانة الثانية (المربع TB2) حيث أنه المقام في حالة القسمة...فيتأكد في الشرط الأول إذا ما كان المقام صفرا,فإن كان صفرا كتب في مربع الناتج (TBR) "لا يمكن القسمة على الصفر",بدون علامتي التنصيص,وقد سبق إيضاح هذا.
    إن وجد البرنامج أن المقام يساوي صفر,فإنه يخرج الرسالة السابقة وتنتهي العملية إلى هنا,أما إن لم يكن المقام صفرا فإن البرنامج ينتقل للخطوة الثانية,وهي التحقق إذا ما كان المقام أصغر من الصفر (أي أن المقام عدد سالب),فإن كان كتب النص المحدد,وإلا انتقل إلى الخطوة التالية.
    الخطوة الأخيرة هنا,هي الخطوة الاستثنائية (Else) ففي حال عدم تحقق أيا من الشروط السابقة فهذا يعني أن المدخلات سليمة ومقبولة وبالتالي يقوم بإتمام عملية قسمة قيم المربع الأول (TB1) على قيم المربع الثاني (TB2) ويضع الناتج في مربع الناتج (TBR).



    ثاني القواعد الشرطية استعمالا هي قاعدة selectcase...وهي قاعدة تخولك لوضع عدة احتمالات للعملية...لن أقوم بشرحها,يمكنكم استكشاف ذلك,لأنها قليلة الاستخدام,لكن هناك حالات لا يمكنك استخدام غيرها,وعموما صيغتها كالتالي:
    [PHP]Select Case
    case <الاحتمال>
    <العملية>
    case <الاحتمال>
    <العملية>
    case Else
    <العملية>
    End Select
    [/PHP]


    أكبر مشكلة قد تقابل المبرمج هي الأخطاء الكثيرة التي تخرج في البرنامج,وللتغلب عليها عليك تخمين كل الاحتمالات الممكنة حدوثها,فمثلا عليك أن تخمن كل المدخلات الممكن إدخالها في مربع نص يقوم بحساب عملية معين,كما في مثال القسمة السابق.
    وللتغلب على هذه المشكلة هناك العديد من الطرق المفيدة والمجربة,بل والمصممة لهذا الأمر,أختار لكم منها اثنتين:


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


    وهذه القاعدة مصممة خصيصا لتفادي انهيار البرنامج حيث يقوم البرنامج بـ"ـمحاولة" أداء الأوامر المعطاة,وإن لم يستطع لوجود خطأ ما ينتقل إلى الأوامر التي تقع تحت الأمر Catch وهو الأمر الذي يحول الأوامر إلى أوامر أخرى لتفادي الانهيار,وصيغة القاعدة كالتالي:
    [PHP]Try
    <الأوامر>
    Catch
    <الحالة الاستثنائية>
    End Try[/PHP]
    في مكان (<الأوامر>) تكتب أوامر عادية جدا كأن Try غير موجودة.
    في مكان (<الحالة الاستثنائية>) تكتب أوامر تتم في حالة لم يتمكن البرنامج من عمل الأوامر الموجودة بين (Try) و (Catch).
    في هذه القاعدة فإنك لست بحاجة لوضع أوامر مفردة لكل احتمال,بل إن أي خطأ قد يتسبب بانهيار البرنامج ينفذ الأوامر الدارجة تحت (<الحالة الاستثنائية>),ولكن يبقى عليك تقدير تلاعب المستخدم بالمعطيات والأدوات ليخرج قيم خاطئة أو يستغل برنامجك في أي مشكلة,أو مجرد وقوع المستخدم في أي خطأ دون قصد.

    استكشاف الأخطاء عملية يدوية,لذلك,عليك الاعتماد على التجربة ومحاولة تخريب برنامجك أثناء الاستعمال -وليس أثناء البرمجة طبعا -,وذلك لكشف الثغرات والأخطاء التي تُخرج إما نتائج خاطئة أو تتسبب في انهيار البرنامج,أو النظام ككل.
    في مثال عملية القسمة المذكور في شرح قاعدة If هناك عدد من الحالات يجب أخذها بالحسبان بالإضافة إلى القسمة على الصفر,مثلا:
    *يجب التحقق ما إذا كانت الحقول مملوءة أصلا أم لا.
    *يجب التحقق ما إذا كانت الحقول تحتوي على أرقام فقط وليس حروفا أو رموزا.
    *يجب التحقق ما إذا كانت المتغيرات (في حال استعمال المتغيرات) من نوع Double أو Decimal لاحتمال كون الناتج عددا عشريا لأنها عملية قسمة.
    وهكذا...
    فيجب عليك توقع أي خطأ أو أي تلاعب قد يقوم به مستخدم البرنامج وذلك بتفادي الأخطاء بأحد الطرق السابقة.



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

    Form:هذه الأداة الرئيسية في أي برنامج,حيث لا يخلو برنامج من لائحة توضع في باقي الأدوات.

    Button:الزر العادي,غني عن الشرح.

    CheckBox:هذه الأداة توفر الاختيار "الـ"ـمتعدد لأي خيار مطروح في البرنامج,ويتم التحقق من وضع العلامة من عدمه عن طريق الخاصية (Checked).

    RadioButton:هذه الأداة توفر الاختيار "من" متعدد,ويتم التحقق من تعليم اختيار الخيار من عدمه عن طريق الخاصية (Checked) أيضا.

    ColorDialog:هذه الأداة هي أداة اختيار اللون المشهورة في أي برنامج للرسم مثلا,يمكنك التحكم بمقدار الألوان الظاهرة في اللوحة والكثير,يمكن الحصول على اللون عن طريق الخاصية (Color),هذه الأداة تضاف للهامش أثناء البرمجة,ويتحكم بها عن طريق النقر عليها في الهامش,وتظهر أثناء استعمال البرنامج فقط وهكذا جميع الـDialogs.

    FolderBrowserDialog:هذه الأداة توفر لك اختيار "مجلد" لوضع ملف فيه أو استيراد ملف منه,ويمكن معرفة المسار الذي حدده المستخدم عن طريق الخاصية (SelectedPath).

    OpenFileDialog:هذه الأداة توفر لك استيراد ملف من جهازك إلى البرنامج (فتح ملف),وتوفر لك عدد من خصائص التحكم مثل:النوع الافتراضي للملف,عرض الملفات المعدة للقراءة فقط,وغيرها الكثير.
    ملحوظة: الاختلاف في لون المربع في الصور السابقة نتيجة اختلاف النسخة التي أخذت منها الصورة...لكن الأداة موجودة في كلا النسختين...

    SaveFileDialog:هذه الأداة توفر لك تصدير ملف إلى جهازك (حفظ ملف),وتوفر هذه الأداة تحديد صيغة الملف,وعدد من الخصائص الأخرى.

    FontDialog:هذه الأداة توفر للمستخدم تصفح الخطوط لاستخدامها في البرنامج,كاستخدامها لتحرير النصوص مثلا,يمكن الحصول على اسم الخط عن طريق الخاصية (Font.Name).

    GroupBox:هذه الأداة للتجميل فقط,حيث أنها أداة تجميعية,تضع حدود للأدوات واسم للمجموعة.

    ListBox:هذه الأداة توفر خاصية الاختيار "من" متعدد والاختيار "الـ"ـمتعدد في آن واحد حسب اختيار المبرمج (عن طريق تعديل الخاصية selectionMode),يمكن الحصول على الخيار المحدد عن طريق الخاصية (Text).

    ComboBox:هذه الأداة تجمع بين مربع النص (Text Box) والقائمة (ListBox),حيث يمكنك الاختيار من متعدد وفي نفس الوقت,يمكنك إضافة الخيار بالكتابة بلوحة المفاتيح,يمكن الحصول على الخيار المحدد عن طريق الخاصية (Text),كما يمكنك إلغاء خاصية الكتابة في الأداة وجعلها للاختيار فقط عبر تعديل الخاصية(DropDownStyle) إلى (DropDownList),وفي كل من الـ ComboBox و ListBox يمكنك وضع الاختيارات عبر الخاصية Items.

    Timer:هذه الأداة توفر لك تعداد بالثواني أو اللحظات,حسبما تحدده أنت,هذه الأداة مهمة للمبرمج,ولا يطلع عليها المستخدم أبدا,مهمة هذه الأداة,تمكينك من تكرار عمل كل مدة معينة من الزمن...يمكنك تشغيل هذه الأداة وإيقافها عن طريق الخاصية (Enabled) المعروفة,ويمكنك تحديد القيمة الزمنية عبر الخاصية (Interval).

    TabControl:أداة التبويبات هذه غنية عن التعريف,يمكنك من خلالها أن تقوم بعدة أمور,ربما أشهرها استعمالا المتصفحات المبوبة.

    أدوات الإدخال:هي الأدوات التي تمكنك من إدخال بيانات إلى البرنامج أو إلى الحاسوب بوجه عام...أهم هذه الأدوات:

    InputBox:هذه الأداة غير موجودة كأداة,وإنما ترفق ككود داخل البرنامج,ولنضرب مثالا:في حال كان لدينا Label (وهو أداة إخراج فقط) اسمه G1 مثلا ونريد أن نكتب فيه كلمة معينة,فنستعين بهذه الأداة,فتكتب بالصيغة التالية:
    [PHP]G1.Text = InputBox("الرسالة هنا", "عنوان الرسالة", "مربع الكتابة")[/PHP]

    TextBox:مربع النص هذا غني عن التعريف,فلا يخلو منه برنامج,ولكن يجدر الإشارة إلى أن هذه الأداة تعد أداة إدخال وإخراج في آن واحد,والأمثلة في هذا الموضوع فقط كثيرة,يمكن الحصول على المحتوى عن طريق الخاصية (Text).

    RichTextBox:هذه الأداة مطابقة لمربع النص (TextBox) غير أن الفرق أن هذه الأداة تقبل التنسيق (الألوان والخطوط) الجزئي,حيث يمكن إفراد كلمة أو جملة محددة بلون أو بخط,أما مربع النص فالتنسيق عام لكافة المحتوى,يمكن الحصول على المحتوى النصي فقط عن طريق الخاصية (Text),بينما يمكن الحصول على المحتوى المنسق عن طريق الخاصية (RTF).

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

    MsgBox:هذه الأداة غير موجودة كأداة أيضا,وإنما هي كود مثل InputBox...مهمة هذه الأداة هي الإعلام,إذ إنها تعطي المستخدم معلومات حول أمر ما,سواء بالإعلام أو التحذير أو طلب الموافقة...ويمكن تنسيق مربع الرسالة هذا على حسب المحتوى عن طريق الكود نفسه,ولنأخذ مثالا:
    [PHP]MsgBox("محتوى الرسالة", نوع الرسالة, "عنوان الرسالة")[/PHP]

    هناك أنواع عدة من الرسائل يمكن استعمالها عن طريق تغيير نوع الرسالة إلى ما يناسبه كما هو موضح بالقائمة أعلاه,أذكر مثالا لكل نوع كما يلي:
    VBCritical:رسالة تحذير.
    VBInformation:رسالة إعلام.
    VBYesNo:رسالة طلب موافقة من عدمها.
    ويمكنك اختيار ما تريد من القائمة حسبما تريد.

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

    PictureBox:هذه الأداة بكل بساطة هي أداة إخراج الصور.

    ToolTip:هذه الأداة تضيف خاصية إلى جميع الأداوت في الفورم المضافة إليه فقط,وهي خاصية التلميح...وهي الخاصية المعروفة التي تظهر توضيحا في مربع أصفر عند مرور مؤشر الفأرة على الأداة,كانت هذه الأداة مدمجة مع الأدوات في فيجول بيسك6 ولكن تم فصلها لأسباب غامضة .

    يمكنك بناء البرنامج عبر الضغط على قائمة Build ومن ثم (<اسم المشروع> Properties).
    أويمكنك تجربته أثناء التصميم وذلك بالضغط على قائمة Debug ومن ثم Start Debugging.
    وفي كلتا الحالتين سيتم حفظ البرنامج في المكان الافتراضي في مجلد Bin\Debug من مجلد المشروع.

    يمكنك كتابة بيانات المبرمج,والبرنامج,والحقوق,عبر الذهاب إلى قائمة Project ثم اختر (<اسم المشروع> Properties).
    لن أقوم بالشرح هنا فيمكنكم استكشاف ذلك بأنفسكم لتحصلو على بعض المتعة بالتلاعب ^_^.

    يمكنك تحميل نسخة إكسبريس من Visual Basic9 والنسخ السابقة واللاحقة من Visual Basic عبر موقع مايكروسوفت:
    http://www.microsoft.com/express/download
    وأذكركم بأن نسخة express مجانية رسميا وفيها جميع الأدوات الموجودة بالشرح وزيادة, ويمكنك صنع برامج خارقة بها, لكن قد لا يسمح لكم ببيعها وفقا لسياسة الاستخدام, وإذا أردت بيع تطبيقك فقم بشراء نسخة بروفيشنال عوضا عن إكسبريس, وإلا يمكنك طرح البرامج مجانا, أو لاستخدامك الشخصي فقط, لكن الخيار الأخير يحد من تطوير برنامجك.
    لديكم عدد من شروح الفيجول بيسك العربية,عددها 9 اسطوانات, مرفوعة على الميديا فاير,والشكر موصول للأخ محمد ربيع على الرفع...
    يمكنكم تحميلها من هذا الرابط, ويفضل أيضا زيارة موضوع الأخ محمد ربيع (mrabiee) الذي حوى عددا من الحلول للبرمجة بالفيجول بيسك والإضافات الداعمة...مع التنبيه أن نسخة الفيجول بيسك المطروحة في موضوعه هي النسخة السادسة (قديمة ولا تنتمي لبيئة دوت نيت) لكنها الأفضل للمبتدئ كذلك الإضافات المرفقة في موضوعه داعمة لتلك النسخة فقط.

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

    -أخيرا,هذا الموضوع ما هو إلا مقدمة للمبتدئين ومن أراد أن يستزيد فليستكشف بنفسه وليأخذ دورات في هذا المجال,ومن كان لديه استفسار فليكتبه لي وأنا بإذن الله حاضر.

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

    لعلكم سمعتم بفريق AliveScreen أو UAYPT من قريب أو من بعيد...لكن لم تروا له شيئا...عموما طرحنا برنامجا مؤخرا فالحمد لله على ذلك, ونخطط للكثير, ففي الخطة الآن أكثر من 27 برنامج, ثلثيها أفكار جديدة...
    عموما, يجب عليكم أن تقوموا بمبادرة ما...من كان لديه القدرة على عمل فريق برمجة ولو لم يكن لديه القدرة على البرمجة لكن لديه القدرة على الإدارة وحسن التعامل والتخطيط...فليقم بإنشاء فريق الآن, شرط أن يضع لفريقه خطة محكمة ومدروسة بعناية وعلى المدى الطويل والقصير...ومن له القدرة على البرمجة دون الإدارة فلينضم للفريق الذي سينظم أو لينضم لفريق AliveScreen حسب الشروط والمتطلبات التي طرحناها سابقا في مسومس...
    أما إن كنت تحب العمل وحدك, فأتمنى أن ترينا إبداعاتك قريبا...لنجد منافسة قوية...^_^...

    هذا الشرح ما هو إلا شرح بسيط لبرنامج عملاق,ولغة برمجة عملاقة عمرها طويل,ولم أتطرق للحديث عن القوائم الكثيرة (كـ File و View وغيرها)...
    لذلك سامحوني على هذه الإطالة,وهذا النقص الكبير...
    لكن مع كل ما قدمته لكم يمكنكم الانطلاق في هذا العالم الواسع...
    وإن طالت بي حياة بإذن الله قد أقدم لكم المزيد,وشرح ما كان يفترض شرحه,ومن ثم التطرق للغة أخرى...إذ إن كل نقطة مما في هذا الموضوع تحتاج إلى شرح مستفيض وموضوع مستقل...
    أسأل الله أن ينفع بهذا العمل ويجعله خالصا لوجهه...فما وجدتم من صواب فهو ولله الحمد والمنة منه تبارك وتعالى,وما وجدتم من خطأ فمن نفسي والشيطان,وما وجدتم من نقصان فهو مما أنسانيه الشيطان,أو شيء ادخرته للمستقبل .
    ختاما أحب أن أشكر أخي وتوأم روحي الأمير الأزرق على تصميمه لهذه الفواصل الرائعة التي زات الموضوع رونقا بل أعطته أبهى حلة...فشكرا من القلب...^_^
    والحمدلله الذي بنعمته تتم الصالحات...
    التعديل الأخير تم بواسطة ؛ّ نديمك ؛ّ ; 26-3-2011 الساعة 03:28 PM

الكلمات الدلالية لهذا الموضوع

المفضلات

المفضلات

ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  
Loading...