24-10-12, 06:59 PM
(آخر تعديل لهذه المشاركة : 24-10-12, 07:09 PM {2} بواسطة Nŏ Coммεητ.)
بسم الله الرحمن الرحيم
كاتب الموضوع : hifiwaymy
مقدمــــــــــــــة :
البيانات في أي لغة من لغات البرمجة بما فيها فيجول بيسك أما أن تكون متغيرات Variables أو ثوابت Constants و المتغير هو مكان في الذاكرة يتم تخصيصه لك لتقوم بوضع عنوان له ويخزن المعلومة التي تريدها بداخلة كما يمكنك تغير هذه المعلومة بمعلومة أخري في نفس المكان ويظل عنوانه ثابت .
أما الثابت فمثله مثل المتغير تماما إلا انك لن تحتاج لتغير هذه المعلومة . وكما هو واضح من الاسم عبارة عن اسم يحمل قيمة ثابتة لا تتغير أثناء تنفيذ البرنامج .
ولكي هذان المثالين ليوضح لك وظيفة كل من المتغيرات والثوابت ..
مثال علي المتغيرات والثوابت :
المتغيرات . إذا أردت أن تسال عن اسم العميل الذي سيدخله المستخدم فان اسم العميل قيمة متغيرة لأنك لا تعرف من هو هذا العميل الذي سيقع عليه اختيار المستخدم في هذه الحالة تستخدم متغير لتضع فيه اسم العميل انظر المثال التالي :
في هذا المثال سيعرض فيجول بيسك علي المستخدم مربع حوار نتيجة لتنفيذ أمر InputBox$ يطالبه فيه بكتابه اسم العميل ويقوم بحفظ اسم العميل الذي يدخله المستخدم في المتغير HisName$ ويبقي المتغير HisName$ يحمل هذا الاسم حتى يقوم المستخدم بتغيره ويتم تغير القيمة التي يحملها المتغير HisName$ بوضع قيمة أخري داخلة فيقوم الفيجول بيسك باستبدال القيمة القديمة بالقيمة الجديدة .
الثوابت . إذا كان عملك يتطلب مجموعة من العمليات الحسابية ترتبط بوحدة ثابتة مثل وحدة القياس المتر وهو يساوي مائه سنتمتر فيمكن الإعلان عن ذلك بالأمر التالي:
وهذه يفيدك عندما تكون جميع حساباتك بالنسبة للوحدة سنتمتر فبدلا من قيمة المتر وكتابة الرقم ( 100 ) في كل مرة سيتم كتابه الثابت Meter في جميع التعليمات المطلوبة داخل البرنامج وهي فائدة كبيرة تجعل برنامجك سهلا وبسيطا.
فائدة أخري يمكن الحصول عليها من استخدام الثوابت ، فمثلاً في حالة تعديل كل حساباتك لتصبح منسوبة لوحدة الملليمتر بدلا من السنتمتر ( والمعروف أن المتر = 1000 ملليمتر ) فبدلا من إجراء هذا التعديل في جميع إجراءات برنامجك ( وهو كتابة الرقم 1000 بدلا من الرقم 100 ) يكفي أن تعدل الرقم 100 ليصبح 1000 في نفس الأمر كآلاتي .
وبذلك تتم عملية التعديل مرة واحدة فقط لتعطي النتيجة المطلوبة .
و ألان وقد تعرفنا علي وظيفة كل من المتغيرات و الثوابت و الفائدة المرجوة من استخدامهم ولكن بقي لنا أن نوضح كيفية التعامل مع المتغيرات و الثوابت ليمكننا استخدامهم بصورة صحيحة وبشكل أفضل .
ولعدم التشتت سنترك الثوابت قليلا وسنتكلم عن المتغيرات بشكلا من التفصيل .
أنواع المتغيرات :
يوجد في الفيجول بيسك أنواع كثيرة للمتغيرات نوضح منها ما يلي .
نوع المتغير Integer : عدد صحيح صغير نسبيا ــ حجمه 2 Byte ــ مداه من 32768- إلي 32767
نوع المتغير Long : عدد صحيح كبر نسبيا ــ حجمه 4 Byte ــ مداه من 2147483648- إلي 214783674
نوع المتغير Single : عدد حقيقي صغير نسبيا ( يحتوي علي علامة عشرية عائمة Floating Point ) ــ حجمه 4 Byte ــ مداه من 3.402823E38- إلي -1.401298E-45 (قيم سالبة) و من 1.401298E-45 إلي 3.402823E38 (قيم موجبة)
نوع المتغير Double : عدد حقيقي كبير نسبيا (يحتوي علي علامة عشرية عائمة) ــ حجمه 8 Byte ــ مداه رقم هائل
نوع المتغير Currency : عدد حقيقي كبير نسبيا (يحتوي علي علامة عشرية ثابتة ) ــ حجمه 8 Byte ــ مداه رقم هائل
نوع المتغير Byte : عدد صغير جدا أو بيانات ثنائية ــ حجمه 1 Byte ــ مداه من الصفر إلي 255
نوع المتغير Boolean : متغير منطقي يحمل قيمتان فقط صفر أو واحد . أو True or False ــ حجمه 2 Byte
نوع المتغير Data : يحمل قيم تاريخه و وقت وهو من نفس نوع المتغير Double ــ حجمه 8 Byte ــ مداه من التاريخ 1 يناير 100 إلي 31 ديسمبر 9999 ومن الساعة 00:00:00 إلي 23:59:59
نوع المتغير Object : كائنات أو فئات Classes
نوع المتغير String : سلسلة من الحروف ــ مداه من صفر إلي 65500 حرف تقريبا
نوع المتغير Variant : الوقت/التاريخ أو عدد ذو علامة عشرية عائمة أو سلسة حروف ــ حجمه 16 Byte ــ مداه التاريخ من 1 يناير 0000 إلي 31 ديسمبر 9999 وفي الأعداد مثل Double وفي الحروف مثل String
الشروط الواجب توافرها عند اختيار اسم للمتغير ..
يجب أن يبدأ اسم المتغير بحرف أبجدي وليس رقما .
ألا يزيد عدد حروف اسم المتغير عن 40 حرفا .
ويجب ألا يحتوي علي أي مسافات أو نقاط وإذا كان اسم المتغير يحتوي علي كلمتين فأنصحك باستخدام (_) Under Score للفصل بينهما ..
و يجب أيضا إلا يتضمن كلمة من الكلمات المحجوزة وهي الكلمات التي تستخدم في الأوامر و العبارات التي يستخدمها فيجول بيسك فمثلا لا يسمح باستخدام كلمة Print كاسم للمتغير فإذا احتجت لتسمية متغير مثل كلمة Print فيمكنك أن تكتب الكلمة كجزء من اسم المتغير PrintText مثلا .
فائدة (1) :
يفضل الإعلان عن نوع المتغير لزيادة سرعة التعامل معه .المتغيرات التي لم تحدد نوعها يعمل فيجول بيسك علي الإعلان عنها تلقائيا من النوع Variant وهو أبطأ أنواع المتغيرات .
فائدة (2) :
يوجد نوعان من المتغير من النوع String وهي متغيرات ثابتة الطول Fixed Length و متغيرات متغيرة الطوال Variable Length . و المتغيرات الحرفية ثابتة الطوال وكما واضح من اسمها هي متغيرات محدد لها عدد الحروف في أثناء التصريح عنها ولا يمكن أن يتغير طولها وتكون بصورة التالية :
و المتغيرات الحرفية متغيرة الطول تستخدم في حالة عدم معرفتك بطول المتغير المار إليها ومن عيوبها إنها تلتهم حجم كبير جدا من الذاكرة
كيفية الإعلان عن المتغيرات :
عند استخدام المتغير في فيجول بيسك فأن فيجول بيسك تتعرف علي المتغير بمجرد استخدامه في الكود وهذه الطريقة مريحة لأنك لان تحتاج إلي تعريف كل متغير قبل استخدامه ألا إنها يعاب عليها شئ خطير جدا وهو انك إذا أخطأت في كتابة اسم المتغير فأن فيجول بيسك سيعتبره متغيرا جديدا فمثلا إذا أنشأنا متغيرا مثل هذا ..
و لحل هذه المشكلة الإعلان عن المتغير بأمر Dim مثلا .. ( سنتكلم عن أوامر الإعلان عن المتغيرات لاحقا )
ولجعل فيجول بيسك لا يستخدم متغيرا إلا قبل الإعلان عنه أو بمعني اصح يجبرك للإعلان عن كل متغير تستخدمه بكتابة هذه العبارة في قسم التصاريح العامة General Declaration . بإظهار رسالة خطأ ..
ولجعل هذه العبارة تكتب تلقائيا . من قائمة Tools اختر أمر Options وضع علامة صح في صندوق الاختيار أمام عبارة Require Variable Declarations من صفحة Editor أي طلب الإعلان عن أي متغير قبل استخدامه ..
علمنا ألان فائدة الإعلان عن المتغيرات و المشاكل التي تترتب عليها إذا لم نعلن عن أي متغير نضيفه في برنامجنا ولكن السؤال هنا الذي يطرح نفسه هو كيف نعلن عن المتغيرات وما هي أوامر الإعلان وهذا يذكرني بمن تعلم القيادة ولكنه لا يعلم شئ عن قواعد المرور التي سترشده إلي الطريق الصحيح .
و لكي نتحكم في المتغيرات بشيئا من الفاعلية أكثر يجب نتعرف علي أوامر الإعلان حتى يمكننا الإعلان عن المتغير بشكل سليم واستغلال الذاكرة بشكل أفضل .
[b]أوامر الإعلان عن المتغيرات : [/b]
أمر الإعلان Dim : يستخدم لتعريف متغير ديناميكي Dynamic Variables ضمن الأجراء ويكون مجال رؤية هذا المتغير داخل الأجراء فقط وعمرة من عمر الأجراء أي أن عندما ينتهي الأجراء ينتهي معه مفعول المتغير المحلي ويصبح لا قيمة له أو صفر ولهذا سمي أمر الإعلان هذا بديناميكية لأنه يوفر في الذاكرة بشكل جيد .
أمر الإعلان Redim : تستخدم لتعريف مصفوفة ديناميكية Dynamic Array غير معرفة لعدد العناصر أي يمكنك تغير أبعادها أثناء عمل البرنامج ويعمل أمر الإعلان Redim عندما ترغب في تحديد حجم المصفوفة وتظهر الفائدة من أمر الإعلان Redim في استغلال الجزء المطلوب فقط من الذاكرة دون زيادة . وأمر الإعلان هذا يجعلنا ندخل إلي عالم آخر وهو عالم المصفوفات وإذا تكلمنا عن المصفوفات في هذا الجزء الصغير فبذلك نكون قد لا نوفيها حق قدرها .
فائدة (3) :
أن أمر الإعلان Redim لا يستخدم ألا داخل أجراء فقط أي لا يستخدم في قسم الإعلانات مثل الأمر Dim
أمر الإعلان Static : يستخدم لتعريف متغير ستاتيكي Static Variables ضمن الأجراء ويكون مجال رؤية هذا المتغير داخل الأجراء فقط وعمرة من عمر الوحدة التي بداخلها الأجراء سواء كانت الوحدة هذه Form أو Module أو Class أي أن عندما ينتهي الأجراء يظل المتغير ساكن في الذاكرة وكذلك قيمته موجودة ولكنك لا يمكنك الوصول إلية ألا من داخل الأجراء التابع له .
نصيحة (1) :
حاول أن لا تكثر من استخدام أمر الإعلان Static ألا في أضيق الحدود لأنه يستغل الذاكرة طوال فترة عمل البرنامج .
أمر الإعلان Private : : يستخدم لتعريف متغير عام General Variables ولكنه يكون علي مستوي الوحدة سواء كانت Form أو ملف برمجة BAS أو فئة Class وبالطبع عمرة يكون من عمر الوحدة .
أمر الإعلان Public : يستخدم لتعريف متغير عام General Variables ولكنه يكون علي مستوي المشروع ككل ويمكن الوصول إليه من جميع الوحدات الموجودة في المشروع وعمرة من عمر البرنامج ككل ويظل في الذاكرة حتى ينتهي البرنامج .
أمر الإعلان Global : أمر الإعلان أو الكلمة المحجوزة Global كانت تستخدم في الإصدارات القديمة للفيجول بيسك ومازالت حتى الآن تستخدم وهي تؤدي نفس وظيفة أمر الإعلان Public ولكنك لن تستطيع التصريح عنها ألا في الوحدات النمطية فقط .
[b]الإعلان بإضافة رمز مميز :
[/b]
تستخدم هذه الطريقة في نوع أي متغير وذلك بإضافة حرف معين إلي اسم المتغير و هذه الطريقة تسهل عليك معرفة نوع المتغير المستخدم مع اسم المتغير و الجدول التالي يبين شكل هذه الأحرف و النوع المقابل لها ..
نوع المتغير Integer : الرمز المستخدم " % "
نوع المتغير Long : الرمز المستخدم " & "
نوع المتغير Single : الرمز المستخدم " ! "
نوع المتغير Currency : الرمز المستخدم " # "
نوع المتغير Double : الرمز المستخدم " @ "
نوع المتغير String : الرمز المستخدم " $ "
فمثلا الأمر ..
يعلن عن متغير من نوع String ( سلسة من الحروف )
[b]الإعلان باستخدام الوظيفة AS :
[/b]
وهنا تفيد الوظيفة AS في تميز نوع المتغير الذي يأتي بعد الوظيفة AS مع أحد الأوامر Redim. Dim. Static. Global Private. Public حيث يتم كتابة الأمر ثم اسم المتغير ثم كتابة الوظيفة AS ثم كتابة نوع المتغير . انظر المثال التالي .
فائدة (4) :
أوامر الإعلان السابق ذكرها هي تعتبر ضمن الكلمات المحجوزة مثل الجملة Option Explicit أو أمر Print والكلمات المحجوزة هي الكلمات التي يحتفظ بها الفيجول بيسك لنفسه ولا يمكنك استخدامها كاسم للمتغير أو للثابت .
الإعلان باستخدام أمر تعريف دالة :
في هذه الطريقة يتم استخدام أحد الأوامر التالية :
( CCur , CLng , CDbl , Clnt, CStr , CSng, Cvar)
للأنواع الآتية علي التوالي.
Currency , Long , Double , Integer , String , Single , Variant
وعند كتابة أي حرف بعد أي من هذه الأوامر تتحول كل المتغيرات التي تبدأ بهذه الأحرف إلي نفس النوع المعلن عنه في الأوامر المستخدم ، وفي المثال التالي نستخدم الأمر Clnt للإعلان عن جميع المتغيرات الموجودة في البرامج والتي تبدأ بحرف A علي إنها من النوع Integer .
أما في المثال التالي فيتم الإعلان عن التغيرات الموجودة في البرامج و التي تبدأ بأحد الأحرف التالية B أو C أو D علي أنها من النوع String .
لاحظ أنه لا ينبغي كتابة أكثر من حرفين متصلين بدون العلامة ( - ) بعد الأمر .
للإعلان عن أي متغير يبدأ بالحرف (A ) أو بأحد الحروف من ( D ) إلي ( F ) أو من ( X ) إلي ( Z ) علي أنه من النوع Double اكتب الأمر بالصورة التالية :
[b]علاقة المصفوفات بالمتغيرات :[/b]
المصفوفات هي في حد ذاتها عبارة عن سلسلة من المتغيرات لها نفس الاسم ولكن يكون لها رقم وهنا تختلف عن المتغيرات بوجود هذا الرقم الذي يوفر لك الوقت و الجهد .
إليك توضيح أكثر .. إذا أردت تصميم برنامج لشئون الموظفين بشركتك بدون استخدام المصفوفات وبفرض أن عدد الموظفين في شركتك 100 موظف فان الحل باستخدام المتغيرات العادية يتطلب الإعلان عن 100 متغير ثم تكرار الأوامر التي تتعامل مع الموظفين المائة ولا شك أن هذه مسألة شاقة ومطولة .
أما الحل الامثل في هذه الحالة فهو استخدام مصفوفة تتكون من 100 عنصر و الصيغة التي تحقق هذا الغرض لهذه المصفوفة كما يلي :
مدى استخدام المتغير وعمرة Lifetime and Scope of Variable :
ويقصد بمدي استخدام المتغير Scope Of Variable والإجراءات و الوحدات النمطية التي ستتأثر به أي الأماكن التي أن يستخدم فيها هذا المتغير داخل البرنامج أما عمر المتغير Lifetime Of Variable فيقصد به المدة التي سيبقي المتغير خلالها محتفظا بقيمته الحالية داخل الذاكرة دون أن يفقدها وتنقسم المتغيرات من حيث مدة بقائها في الذاكرة ومداها إلي متغيرات عامة ومتغيرات علي مستوي الوحدة النمطية ومتغيرات علي مستوي الأجراء وفيما يلي نوضح كل نوع من هذه الأنواع الثلاثة والأمر الذي يستخدم للإعلان عنه ..
1. المتغيرات العامة ..
هي المتغيرات التي يمكنك استخدامها من أي مكان داخل البرنامج أو التطبيق وتبقي في الذاكرة الحاسب طوال فترة عمل البرنامج فإذا انتهي البرنامج تحذف من الذاكرة ولذلك يجب أن يعلن عن المتغير العام من خلال الوحدة النمطية لكي تتعرف عليه جميع الإجراءات الموجودة في جميع الوحدات النمطية بالبرنامج أو التطبيق .
يستخدم الأمر Public للإعلان عن المتغيرات العامة في المثال التالي يتم الإعلان عن متغير عام لكي تستخدمه جميع الإجراءات في جميع الوحدات النمطية من نوع Integer واسمه ABC .
2. المتغيرات علي مستوي الوحدة النمطية ..
بإمكانك الإعلان عن متغير وتقيده علي مستوي وحدة نمطية في هذه الحالة لن تستطيع استخدام المتغير إلا من خلال الوحدة النمطية التي أعلنت عنه فيها ولن تستطيع استخدامه خارجها فترة عمل هذا النوع من المتغيرات هي أيضا فترة عمل البرنامج أي الفرق بينها وبين المتغيرات العامة هو في المدى الذي تستخدم فيه فقط .
للإعلان عن متغير من هذا النوع استخدم الأمر Private بدلا من الأمر Public في المثال التالي يتم الإعلان عن متغير من نوع String واسمه TafTaf لكي يستخدم فقط مع الوحدة النمطية التي يوجد بها .
وهذا الأمر يمكن إدخاله من خلال الأجراء لإدخال الأمر علي مستوي الوحدة النمطية استخدمه بنفس الطريقة التي تستخدمها للإعلان عن المتغير العام مع فارق واحد وهو استخدام أمر Private بدلا من أمر Public .
3. متغيرات علي مستوي الأجراء ..
يقتصر مدي هذه المتغيرات علي الأجراء الموجودة به فقط ولا يمكن استخدامه في أي مكان غيرة وهي بهذا تعتبر اقل المتغيرات مدي من حيث عمرها فهي تبقي موجودة بالذاكرة حتى بعد أن ينتهي الأجراء الذي أعلن فيه عنها وبهذا يتضح أن الفرق بين هذه المتغيرات و المتغيرات العامة أو المتغيرات علي مستوي الوحدة النمطية في مداها فقط حيث لا يتعدى مداها الأجراء الذي أعلن عنها فيه . يستخدم لهذا الغرض الأمر Static ويتضح ذلك من المثالين التالين في المثال الأول يظهر المتغير S1 محتفظا بقيمته فترة تنفيذ الأجراء Load Form وبمجرد الخروج من الأجراء ستكون قيمته تساوي صفر بينما في حالة استخدام المثال الثاني فإن المتغير سيحتفظ بقيمته بعد تنفيذ نفس الأجراء السابق .
يتبع .....
كاتب الموضوع : hifiwaymy
مقدمــــــــــــــة :
البيانات في أي لغة من لغات البرمجة بما فيها فيجول بيسك أما أن تكون متغيرات Variables أو ثوابت Constants و المتغير هو مكان في الذاكرة يتم تخصيصه لك لتقوم بوضع عنوان له ويخزن المعلومة التي تريدها بداخلة كما يمكنك تغير هذه المعلومة بمعلومة أخري في نفس المكان ويظل عنوانه ثابت .
أما الثابت فمثله مثل المتغير تماما إلا انك لن تحتاج لتغير هذه المعلومة . وكما هو واضح من الاسم عبارة عن اسم يحمل قيمة ثابتة لا تتغير أثناء تنفيذ البرنامج .
ولكي هذان المثالين ليوضح لك وظيفة كل من المتغيرات والثوابت ..
مثال علي المتغيرات والثوابت :
المتغيرات . إذا أردت أن تسال عن اسم العميل الذي سيدخله المستخدم فان اسم العميل قيمة متغيرة لأنك لا تعرف من هو هذا العميل الذي سيقع عليه اختيار المستخدم في هذه الحالة تستخدم متغير لتضع فيه اسم العميل انظر المثال التالي :
PHP كود :
HisName$=InputBox$("اكتب اسم العميل")
الثوابت . إذا كان عملك يتطلب مجموعة من العمليات الحسابية ترتبط بوحدة ثابتة مثل وحدة القياس المتر وهو يساوي مائه سنتمتر فيمكن الإعلان عن ذلك بالأمر التالي:
PHP كود :
Const Meter=100
فائدة أخري يمكن الحصول عليها من استخدام الثوابت ، فمثلاً في حالة تعديل كل حساباتك لتصبح منسوبة لوحدة الملليمتر بدلا من السنتمتر ( والمعروف أن المتر = 1000 ملليمتر ) فبدلا من إجراء هذا التعديل في جميع إجراءات برنامجك ( وهو كتابة الرقم 1000 بدلا من الرقم 100 ) يكفي أن تعدل الرقم 100 ليصبح 1000 في نفس الأمر كآلاتي .
PHP كود :
Const Meter=1000
و ألان وقد تعرفنا علي وظيفة كل من المتغيرات و الثوابت و الفائدة المرجوة من استخدامهم ولكن بقي لنا أن نوضح كيفية التعامل مع المتغيرات و الثوابت ليمكننا استخدامهم بصورة صحيحة وبشكل أفضل .
ولعدم التشتت سنترك الثوابت قليلا وسنتكلم عن المتغيرات بشكلا من التفصيل .
أنواع المتغيرات :
يوجد في الفيجول بيسك أنواع كثيرة للمتغيرات نوضح منها ما يلي .
نوع المتغير Integer : عدد صحيح صغير نسبيا ــ حجمه 2 Byte ــ مداه من 32768- إلي 32767
نوع المتغير Long : عدد صحيح كبر نسبيا ــ حجمه 4 Byte ــ مداه من 2147483648- إلي 214783674
نوع المتغير Single : عدد حقيقي صغير نسبيا ( يحتوي علي علامة عشرية عائمة Floating Point ) ــ حجمه 4 Byte ــ مداه من 3.402823E38- إلي -1.401298E-45 (قيم سالبة) و من 1.401298E-45 إلي 3.402823E38 (قيم موجبة)
نوع المتغير Double : عدد حقيقي كبير نسبيا (يحتوي علي علامة عشرية عائمة) ــ حجمه 8 Byte ــ مداه رقم هائل
نوع المتغير Currency : عدد حقيقي كبير نسبيا (يحتوي علي علامة عشرية ثابتة ) ــ حجمه 8 Byte ــ مداه رقم هائل
نوع المتغير Byte : عدد صغير جدا أو بيانات ثنائية ــ حجمه 1 Byte ــ مداه من الصفر إلي 255
نوع المتغير Boolean : متغير منطقي يحمل قيمتان فقط صفر أو واحد . أو True or False ــ حجمه 2 Byte
نوع المتغير Data : يحمل قيم تاريخه و وقت وهو من نفس نوع المتغير Double ــ حجمه 8 Byte ــ مداه من التاريخ 1 يناير 100 إلي 31 ديسمبر 9999 ومن الساعة 00:00:00 إلي 23:59:59
نوع المتغير Object : كائنات أو فئات Classes
نوع المتغير String : سلسلة من الحروف ــ مداه من صفر إلي 65500 حرف تقريبا
نوع المتغير Variant : الوقت/التاريخ أو عدد ذو علامة عشرية عائمة أو سلسة حروف ــ حجمه 16 Byte ــ مداه التاريخ من 1 يناير 0000 إلي 31 ديسمبر 9999 وفي الأعداد مثل Double وفي الحروف مثل String
الشروط الواجب توافرها عند اختيار اسم للمتغير ..
يجب أن يبدأ اسم المتغير بحرف أبجدي وليس رقما .
ألا يزيد عدد حروف اسم المتغير عن 40 حرفا .
ويجب ألا يحتوي علي أي مسافات أو نقاط وإذا كان اسم المتغير يحتوي علي كلمتين فأنصحك باستخدام (_) Under Score للفصل بينهما ..
و يجب أيضا إلا يتضمن كلمة من الكلمات المحجوزة وهي الكلمات التي تستخدم في الأوامر و العبارات التي يستخدمها فيجول بيسك فمثلا لا يسمح باستخدام كلمة Print كاسم للمتغير فإذا احتجت لتسمية متغير مثل كلمة Print فيمكنك أن تكتب الكلمة كجزء من اسم المتغير PrintText مثلا .
فائدة (1) :
يفضل الإعلان عن نوع المتغير لزيادة سرعة التعامل معه .المتغيرات التي لم تحدد نوعها يعمل فيجول بيسك علي الإعلان عنها تلقائيا من النوع Variant وهو أبطأ أنواع المتغيرات .
فائدة (2) :
يوجد نوعان من المتغير من النوع String وهي متغيرات ثابتة الطول Fixed Length و متغيرات متغيرة الطوال Variable Length . و المتغيرات الحرفية ثابتة الطوال وكما واضح من اسمها هي متغيرات محدد لها عدد الحروف في أثناء التصريح عنها ولا يمكن أن يتغير طولها وتكون بصورة التالية :
PHP كود :
Dim TafTaf As String * 10
كيفية الإعلان عن المتغيرات :
عند استخدام المتغير في فيجول بيسك فأن فيجول بيسك تتعرف علي المتغير بمجرد استخدامه في الكود وهذه الطريقة مريحة لأنك لان تحتاج إلي تعريف كل متغير قبل استخدامه ألا إنها يعاب عليها شئ خطير جدا وهو انك إذا أخطأت في كتابة اسم المتغير فأن فيجول بيسك سيعتبره متغيرا جديدا فمثلا إذا أنشأنا متغيرا مثل هذا ..
PHP كود :
Value = 10 ' قيمة = 10Value هنا أعطينا المتغيرText1.Text = Valu 'و هنا أخطأنا في كتابة اسم المتغير
و لحل هذه المشكلة الإعلان عن المتغير بأمر Dim مثلا .. ( سنتكلم عن أوامر الإعلان عن المتغيرات لاحقا )
PHP كود :
Dim Value As Integer
PHP كود :
Option Explicit
علمنا ألان فائدة الإعلان عن المتغيرات و المشاكل التي تترتب عليها إذا لم نعلن عن أي متغير نضيفه في برنامجنا ولكن السؤال هنا الذي يطرح نفسه هو كيف نعلن عن المتغيرات وما هي أوامر الإعلان وهذا يذكرني بمن تعلم القيادة ولكنه لا يعلم شئ عن قواعد المرور التي سترشده إلي الطريق الصحيح .
و لكي نتحكم في المتغيرات بشيئا من الفاعلية أكثر يجب نتعرف علي أوامر الإعلان حتى يمكننا الإعلان عن المتغير بشكل سليم واستغلال الذاكرة بشكل أفضل .
[b]أوامر الإعلان عن المتغيرات : [/b]
أمر الإعلان Dim : يستخدم لتعريف متغير ديناميكي Dynamic Variables ضمن الأجراء ويكون مجال رؤية هذا المتغير داخل الأجراء فقط وعمرة من عمر الأجراء أي أن عندما ينتهي الأجراء ينتهي معه مفعول المتغير المحلي ويصبح لا قيمة له أو صفر ولهذا سمي أمر الإعلان هذا بديناميكية لأنه يوفر في الذاكرة بشكل جيد .
أمر الإعلان Redim : تستخدم لتعريف مصفوفة ديناميكية Dynamic Array غير معرفة لعدد العناصر أي يمكنك تغير أبعادها أثناء عمل البرنامج ويعمل أمر الإعلان Redim عندما ترغب في تحديد حجم المصفوفة وتظهر الفائدة من أمر الإعلان Redim في استغلال الجزء المطلوب فقط من الذاكرة دون زيادة . وأمر الإعلان هذا يجعلنا ندخل إلي عالم آخر وهو عالم المصفوفات وإذا تكلمنا عن المصفوفات في هذا الجزء الصغير فبذلك نكون قد لا نوفيها حق قدرها .
فائدة (3) :
أن أمر الإعلان Redim لا يستخدم ألا داخل أجراء فقط أي لا يستخدم في قسم الإعلانات مثل الأمر Dim
أمر الإعلان Static : يستخدم لتعريف متغير ستاتيكي Static Variables ضمن الأجراء ويكون مجال رؤية هذا المتغير داخل الأجراء فقط وعمرة من عمر الوحدة التي بداخلها الأجراء سواء كانت الوحدة هذه Form أو Module أو Class أي أن عندما ينتهي الأجراء يظل المتغير ساكن في الذاكرة وكذلك قيمته موجودة ولكنك لا يمكنك الوصول إلية ألا من داخل الأجراء التابع له .
نصيحة (1) :
حاول أن لا تكثر من استخدام أمر الإعلان Static ألا في أضيق الحدود لأنه يستغل الذاكرة طوال فترة عمل البرنامج .
أمر الإعلان Private : : يستخدم لتعريف متغير عام General Variables ولكنه يكون علي مستوي الوحدة سواء كانت Form أو ملف برمجة BAS أو فئة Class وبالطبع عمرة يكون من عمر الوحدة .
أمر الإعلان Public : يستخدم لتعريف متغير عام General Variables ولكنه يكون علي مستوي المشروع ككل ويمكن الوصول إليه من جميع الوحدات الموجودة في المشروع وعمرة من عمر البرنامج ككل ويظل في الذاكرة حتى ينتهي البرنامج .
أمر الإعلان Global : أمر الإعلان أو الكلمة المحجوزة Global كانت تستخدم في الإصدارات القديمة للفيجول بيسك ومازالت حتى الآن تستخدم وهي تؤدي نفس وظيفة أمر الإعلان Public ولكنك لن تستطيع التصريح عنها ألا في الوحدات النمطية فقط .
[b]الإعلان بإضافة رمز مميز :
[/b]
تستخدم هذه الطريقة في نوع أي متغير وذلك بإضافة حرف معين إلي اسم المتغير و هذه الطريقة تسهل عليك معرفة نوع المتغير المستخدم مع اسم المتغير و الجدول التالي يبين شكل هذه الأحرف و النوع المقابل لها ..
نوع المتغير Integer : الرمز المستخدم " % "
نوع المتغير Long : الرمز المستخدم " & "
نوع المتغير Single : الرمز المستخدم " ! "
نوع المتغير Currency : الرمز المستخدم " # "
نوع المتغير Double : الرمز المستخدم " @ "
نوع المتغير String : الرمز المستخدم " $ "
فمثلا الأمر ..
PHP كود :
MyName$="TafTaf"
[b]الإعلان باستخدام الوظيفة AS :
[/b]
وهنا تفيد الوظيفة AS في تميز نوع المتغير الذي يأتي بعد الوظيفة AS مع أحد الأوامر Redim. Dim. Static. Global Private. Public حيث يتم كتابة الأمر ثم اسم المتغير ثم كتابة الوظيفة AS ثم كتابة نوع المتغير . انظر المثال التالي .
PHP كود :
Dim TafTaf AS String
فائدة (4) :
أوامر الإعلان السابق ذكرها هي تعتبر ضمن الكلمات المحجوزة مثل الجملة Option Explicit أو أمر Print والكلمات المحجوزة هي الكلمات التي يحتفظ بها الفيجول بيسك لنفسه ولا يمكنك استخدامها كاسم للمتغير أو للثابت .
الإعلان باستخدام أمر تعريف دالة :
في هذه الطريقة يتم استخدام أحد الأوامر التالية :
( CCur , CLng , CDbl , Clnt, CStr , CSng, Cvar)
للأنواع الآتية علي التوالي.
Currency , Long , Double , Integer , String , Single , Variant
وعند كتابة أي حرف بعد أي من هذه الأوامر تتحول كل المتغيرات التي تبدأ بهذه الأحرف إلي نفس النوع المعلن عنه في الأوامر المستخدم ، وفي المثال التالي نستخدم الأمر Clnt للإعلان عن جميع المتغيرات الموجودة في البرامج والتي تبدأ بحرف A علي إنها من النوع Integer .
PHP كود :
Clnt A
PHP كود :
Cstr B-D
للإعلان عن أي متغير يبدأ بالحرف (A ) أو بأحد الحروف من ( D ) إلي ( F ) أو من ( X ) إلي ( Z ) علي أنه من النوع Double اكتب الأمر بالصورة التالية :
PHP كود :
CDbl A, D-F , X-Z
المصفوفات هي في حد ذاتها عبارة عن سلسلة من المتغيرات لها نفس الاسم ولكن يكون لها رقم وهنا تختلف عن المتغيرات بوجود هذا الرقم الذي يوفر لك الوقت و الجهد .
إليك توضيح أكثر .. إذا أردت تصميم برنامج لشئون الموظفين بشركتك بدون استخدام المصفوفات وبفرض أن عدد الموظفين في شركتك 100 موظف فان الحل باستخدام المتغيرات العادية يتطلب الإعلان عن 100 متغير ثم تكرار الأوامر التي تتعامل مع الموظفين المائة ولا شك أن هذه مسألة شاقة ومطولة .
أما الحل الامثل في هذه الحالة فهو استخدام مصفوفة تتكون من 100 عنصر و الصيغة التي تحقق هذا الغرض لهذه المصفوفة كما يلي :
PHP كود :
Private Names(99) As String
مدى استخدام المتغير وعمرة Lifetime and Scope of Variable :
ويقصد بمدي استخدام المتغير Scope Of Variable والإجراءات و الوحدات النمطية التي ستتأثر به أي الأماكن التي أن يستخدم فيها هذا المتغير داخل البرنامج أما عمر المتغير Lifetime Of Variable فيقصد به المدة التي سيبقي المتغير خلالها محتفظا بقيمته الحالية داخل الذاكرة دون أن يفقدها وتنقسم المتغيرات من حيث مدة بقائها في الذاكرة ومداها إلي متغيرات عامة ومتغيرات علي مستوي الوحدة النمطية ومتغيرات علي مستوي الأجراء وفيما يلي نوضح كل نوع من هذه الأنواع الثلاثة والأمر الذي يستخدم للإعلان عنه ..
1. المتغيرات العامة ..
هي المتغيرات التي يمكنك استخدامها من أي مكان داخل البرنامج أو التطبيق وتبقي في الذاكرة الحاسب طوال فترة عمل البرنامج فإذا انتهي البرنامج تحذف من الذاكرة ولذلك يجب أن يعلن عن المتغير العام من خلال الوحدة النمطية لكي تتعرف عليه جميع الإجراءات الموجودة في جميع الوحدات النمطية بالبرنامج أو التطبيق .
يستخدم الأمر Public للإعلان عن المتغيرات العامة في المثال التالي يتم الإعلان عن متغير عام لكي تستخدمه جميع الإجراءات في جميع الوحدات النمطية من نوع Integer واسمه ABC .
PHP كود :
Public ABC AS Integer
2. المتغيرات علي مستوي الوحدة النمطية ..
بإمكانك الإعلان عن متغير وتقيده علي مستوي وحدة نمطية في هذه الحالة لن تستطيع استخدام المتغير إلا من خلال الوحدة النمطية التي أعلنت عنه فيها ولن تستطيع استخدامه خارجها فترة عمل هذا النوع من المتغيرات هي أيضا فترة عمل البرنامج أي الفرق بينها وبين المتغيرات العامة هو في المدى الذي تستخدم فيه فقط .
للإعلان عن متغير من هذا النوع استخدم الأمر Private بدلا من الأمر Public في المثال التالي يتم الإعلان عن متغير من نوع String واسمه TafTaf لكي يستخدم فقط مع الوحدة النمطية التي يوجد بها .
PHP كود :
Private TafTaf As String
3. متغيرات علي مستوي الأجراء ..
يقتصر مدي هذه المتغيرات علي الأجراء الموجودة به فقط ولا يمكن استخدامه في أي مكان غيرة وهي بهذا تعتبر اقل المتغيرات مدي من حيث عمرها فهي تبقي موجودة بالذاكرة حتى بعد أن ينتهي الأجراء الذي أعلن فيه عنها وبهذا يتضح أن الفرق بين هذه المتغيرات و المتغيرات العامة أو المتغيرات علي مستوي الوحدة النمطية في مداها فقط حيث لا يتعدى مداها الأجراء الذي أعلن عنها فيه . يستخدم لهذا الغرض الأمر Static ويتضح ذلك من المثالين التالين في المثال الأول يظهر المتغير S1 محتفظا بقيمته فترة تنفيذ الأجراء Load Form وبمجرد الخروج من الأجراء ستكون قيمته تساوي صفر بينما في حالة استخدام المثال الثاني فإن المتغير سيحتفظ بقيمته بعد تنفيذ نفس الأجراء السابق .
يتبع .....
متغيب