ثابت
من الشائع العثور على كود يحتوي على قيم ثابتة تتكرر مرارًا وتكرارًا. قد تجد أيضًا أن الكود يستخدم أرقامًا يصعب تذكرها وليس لها معنى واضح.
في هذه الحالات، يمكن استخدام الثوابت لتحسين إمكانية قراءة التعليمات البرمجية وصيانتها بشكل كبير. الثوابت هي أسماء ذات معنى تحل محل القيم العددية أو السلاسل التي لا تتغير أبدًا. على الرغم من أن الثوابت تشبه إلى حد ما المتغيرات، إلا أنه لا يمكن تعديلها مثل المتغيرات، ولا يمكن تعيين قيم جديدة للثوابت. الثوابت تأتي من مصدرين:
1. يتم توفير الثوابت الداخلية أو المحددة بواسطة النظام من خلال التطبيقات والضوابط. يتم سرد ثوابت Visual Basic في مكتبات كائنات Visual Basic (VB) وVisual Basic للتطبيقات (VBA) في "مستعرض الكائنات". توفر التطبيقات الأخرى التي توفر مكتبات الكائنات، مثل Microsoft Excel وMicrosoft P Project، أيضًا قوائم بالثوابت التي يمكن استخدامها مع كائنات التطبيق وأساليبه وخصائصه. يتم تعريف الثوابت أيضًا في مكتبة الكائنات الخاصة بكل عنصر تحكم ActiveX. لمزيد من المعلومات حول استخدام مستعرض الكائنات، راجع الفصل 9، "البرمجة باستخدام الكائنات".
2. يتم الإعلان عن الثوابت الرمزية أو المحددة من قبل المستخدم باستخدام عبارة Const. يتم وصف الثوابت المعرفة من قبل المستخدم في القسم التالي، "إنشاء الثوابت الخاصة بك".
في Visual Basic، تكون أسماء الثوابت بتنسيق مختلط، وتشير البادئة الخاصة بها إلى اسم مكتبة الكائنات التي تم تعريف الثابت فيها. تبدأ الثوابت من مكتبات كائنات Visual Basic وVisual Basic for Applications بـ vb، مثل vbTileHorizontal.
عند تصميم البادئات، يجب أن تبذل قصارى جهدك لمنع التعارضات غير المقصودة مع الثوابت التي تحمل نفس الاسم ولكن لا ينبغي أن تكون هناك قيم مختلفة. حتى إذا تم استخدام البادئات، فقد تحتوي مكتبتان للكائنات على نفس الثوابت التي تمثل قيمًا مختلفة. في هذه الحالة، يعتمد الثابت الذي تتم الإشارة إليه على مكتبة الكائنات التي لها أولوية أعلى. للحصول على معلومات حول تغيير أولوية مكتبة الكائنات، راجع قسم "مربع حوار المراجع".
للتأكد تمامًا من عدم حدوث أي تعارض في أسماء الثوابت، يمكنك تأهيل المراجع إلى الثوابت باستخدام الصيغة التالية:
[libname.][modulename.]constname
عادةً ما يكون Libname هو اسم فئة عنصر التحكم أو المكتبة. Modulename هو اسم الوحدة النمطية التي تم تعريف الثابت فيها. Constname هو اسم ثابت. يتم تعريف كل عنصر في مكتبة الكائنات ويمكن عرضه في متصفح الكائنات.
اصنع ثوابتك الخاصة
بناء الجملة للإعلان عن الثوابت هو :
[عام|خاص]Constconstantname[Astype]=تعبير
يعد اسم المعلمة اسمًا رمزيًا صالحًا (القواعد هي نفسها المستخدمة في إنشاء أسماء المتغيرات)، ويتكون التعبير من ثابت رقمي أو ثابت سلسلة وعامل تشغيل، ولكن لا يمكن استخدام استدعاءات الوظائف في التعبير.
يمكن أن تمثل عبارة Const الكميات والتواريخ والأوقات:
كونستكونبي=3.14159265358979
PublicConstconMaxPlanetsAsInteger=9
ConstconReleaseDate=#1/1/95#
يمكن أيضًا تعريف ثوابت السلسلة باستخدام عبارة Const:
PublicConstconVersion=07.10.A
ConstconCodeName=Enigma
يمكن وضع عدة إعلانات ثابتة في سطر واحد إذا تم فصلها بفواصل:
PublicConstconPi=3.14,conMaxPlanets=9,_
كونورلد بوب = 6E 09
غالبًا ما يكون التعبير الموجود على يمين علامة المساواة (=) رقمًا أو سلسلة حرفية، ولكن يمكن أيضًا أن يكون تعبيرًا تكون نتيجته رقمًا أو سلسلة (على الرغم من أن التعبير لا يمكن أن يحتوي على استدعاء دالة). يمكنك أيضًا تحديد ثوابت جديدة باستخدام ثوابت محددة مسبقًا.
ConstconPi2=conPi*2 بمجرد تعريف الثابت، يمكن وضعه في الكود لجعل الكود أكثر قابلية للقراءة. على سبيل المثال:
StaticSolarSystem(1ToconMaxPlanets)
IfnumPeople>conWorldPopThenExitSub
تعيين نطاق الثوابت المعرفة من قبل المستخدم
مثل إعلانات المتغيرات، فإن عبارات Const لها نطاق وتستخدم نفس القواعد:
لإنشاء ثابت موجود فقط ضمن إجراء ما، قم بتعريف الثابت داخل الإجراء.
لإنشاء ثابت صالح لجميع الإجراءات في الوحدة ولكن ليس لأي رمز خارج الوحدة، قم بتعريف الثابت في قسم التصريح بالوحدة.
لإنشاء ثابت صالح في التطبيق الخاص بك، قم بإعلانه في قسم التصريح بوحدة قياسية ووضع الكلمة الأساسية العامة أمام Const. لا يمكن الإعلان عن الثوابت العامة في وحدة نموذج أو وحدة نمطية للفئة.
للحصول على معلومات أكثر تفصيلاً حول النطاق، راجع قسم "فهم نطاق المتغيرات" سابقًا في هذا الفصل.
تجنب المراجع الدائرية
ولأن الثوابت يمكن تعريفها بدلالة ثوابت أخرى، يجب الحرص على عدم إنشاء دورات أو مراجع دائرية بين أكثر من ثابتين. تحدث الحلقة عندما يكون هناك أكثر من ثابتين عموميين في البرنامج، ويتم تعريف كل ثابت عام بواسطة ثابت آخر. على سبيل المثال:
'في الوحدة 1:
PublicConstconA=conB*2 'في التطبيق بأكمله
"صالح في".
'في الوحدة 2:
PublicConstconB=conA/2 'في التطبيق بأكمله
"صالح في".
في حالة حدوث حلقة، سيقوم Visual Basic بإنشاء رسالة خطأ عند محاولة تشغيل التطبيق. لا يمكن تشغيل البرنامج دون حل المرجع الدائري. لتجنب الدورات، يمكن أن تقتصر الثوابت العامة على وحدة واحدة، أو على وحدات قليلة فقط على الأكثر.
نوع البيانات
المتغير هو مكان يستخدم لتخزين القيم وله اسم ونوع بيانات. يحدد نوع بيانات المتغير كيفية تخزين البتات التي تمثل تلك القيم في ذاكرة الكمبيوتر. يمكنك أيضًا تحديد نوع بيانات المتغير عند الإعلان عنه. تحتوي جميع المتغيرات على نوع بيانات لتحديد نوع البيانات التي يمكن تخزينها.
افتراضيًا، إذا لم يتم تحديد نوع البيانات في الإعلان، فسيكون نوع بيانات المتغير هو Variant. يشبه نوع البيانات المتغير الحرباء، حيث يمكنه تمثيل أنواع بيانات مختلفة في مناسبات مختلفة. عندما يكون المتغير المحدد متغيرًا متغيرًا، فلن تكون هناك حاجة للتحويل بين أنواع البيانات، وسيقوم Visual Basic تلقائيًا بإكمال العديد من التحويلات الضرورية.
ومع ذلك، إذا كنت تعلم أن المتغير يقوم دائمًا بتخزين بيانات من نوع معين، وقمت بتعريف متغير من هذا النوع المحدد، فسيقوم Visual Basic بمعالجة هذه البيانات بشكل أكثر كفاءة. على سبيل المثال، من الأفضل تمثيل المتغير الذي يخزن اسم شخص ما كنوع بيانات سلسلة لأن الأسماء تتكون دائمًا من أحرف.
بالإضافة إلى المتغيرات، يتم استخدام أنواع البيانات أيضًا في مواقف أخرى. عند تعيين قيمة لخاصية، تحتوي القيمة على نوع بيانات؛ ومعلمات الوظيفة لها أيضًا نوع بيانات. في الواقع، في Visual Basic، كل ما يتعلق بالبيانات يرتبط بأنواع البيانات.
يمكنك أيضًا الإعلان عن مصفوفة من أي نوع بدائي.
التفاصيل لمزيد من التفاصيل، راجع قسم "المصفوفات" لاحقًا في هذا الفصل. يناقش الفصل 15، "التصميم من أجل الأداء والتوافق"، أيضًا تحسين أداء التطبيق عن طريق تحديد أنواع البيانات.
قم بتعريف المتغيرات باستخدام أنواع البيانات
قبل استخدام متغير غير متغير، يجب عليك تعريف المتغير كـ Astype باستخدام عبارة خاصة أو عامة أو خافتة أو ثابتة. على سبيل المثال، تعلن العبارات التالية عن متغيرات من النوع Integer وDouble وString وCurner على التوالي:
PrivateIAsInteger
DimAmtAsDouble
StaticYourNameAsString
PublicBillsPaidAsCurrency
يمكن أن يجمع بيان الإقرار بين عدة إقرارات، يرجى الاطلاع على البيان التالي:
PrivateIAsInteger، AmtAsDouble
PrivateYourNameAsString، BillsPaidAsCurrency
اختبار خاص، مبلغ، JAsInteger
لاحظ أنه في حالة عدم توفير نوع بيانات، يكون المتغير المحدد من النوع الافتراضي. في المثال أعلاه، تكون المتغيرات Test وAmount من نوع البيانات Variant. إذا كانت تجربتك مع لغات البرمجة الأخرى قد قادتك إلى الاعتقاد بأن جميع المتغيرات في نفس بيان التصريح لها نفس نوع البيانات المحدد (عدد صحيح في هذه الحالة)، فقد تكون النتائج هنا منعشة.
نوع البيانات الرقمية
يدعم VisualBasic العديد من أنواع البيانات الرقمية: عدد صحيح (عدد صحيح)، طويل (عدد صحيح طويل)، مفرد (نقطة عائمة ذات دقة واحدة)، مزدوج (نقطة عائمة مزدوجة الدقة)، والعملة (العملة). تشغل الأنواع الرقمية عمومًا مساحة تخزين أقل من الأنواع المتغيرة.
إذا كنت تعلم أن المتغير سيخزن دائمًا الأعداد الصحيحة (مثل 12) بدلاً من الأرقام ذات الفاصلة العشرية (مثل 3.57)، فيجب عليك الإعلان عنه كنوع صحيح أو طويل. تؤدي الأعداد الصحيحة العمليات بشكل أسرع وتستهلك ذاكرة أقل من أنواع البيانات الأخرى. تعد أنواع الأعداد الصحيحة مفيدة بشكل خاص عند استخدامها كمتغيرات عداد داخل حلقات For...Next.
لمزيد من المعلومات حول هياكل التحكم، راجع "نظرة عامة على هياكل التحكم" لاحقًا في هذا الفصل. إذا كانت المتغيرات تحتوي على أرقام عشرية، فيمكن تعريفها كمتغيرات مفردة أو مزدوجة أو متغيرات عملة. يدعم نوع بيانات العملة 4 أرقام على يمين العلامة العشرية و15 رقمًا على يسار العلامة العشرية؛ وهو نوع بيانات دقيق ذو نقطة ثابتة مناسب لحسابات العملة. تحتوي أرقام الفاصلة العائمة (المفردة والمزدوجة) على نطاق صالح أكبر بكثير من العملة، ولكن من الممكن حدوث أخطاء صغيرة في النقل.
لاحظ أنه يمكن تمثيل قيم الفاصلة العائمة كـ mmmEeee أو mmmDeee، حيث mmm هو الجزء العشري وeee هو الأس (مرفوع إلى أس الأساس 10). الحد الأقصى للقيمة الموجبة لنوع البيانات الفردي هو 3.402823E 38، أو 3.4 ضرب 10 أس 38؛ الحد الأقصى للقيمة الموجبة لنوع البيانات المزدوج هو 1.79769313486232D 308، أو 1.8 ضرب 10 أس 308. يؤدي استخدام D لفصل الأجزاء العشرية والأسية للقيمة الحرفية الرقمية إلى معاملة القيمة كنوع بيانات مزدوج. وبالمثل، يؤدي استخدام E بهذه الطريقة إلى معاملة القيمة كنوع بيانات مفرد.
نوع البيانات بايت
إذا كان المتغير يحتوي على رقم ثنائي، فقم بتعريفه كمصفوفة من نوع بيانات البايت (تتم مناقشة المصفوفات في "المصفوفات" لاحقًا في هذا الفصل). يؤدي تخزين البيانات الثنائية في متغيرات البايت إلى الحفاظ على البيانات أثناء تحويل التنسيق. عند تحويل متغير سلسلة بين تنسيقات ANSI وUnicode، سيتم تدمير أي بيانات ثنائية في المتغير. يقوم Visual Basic بالتحويل تلقائيًا بين ANSI وUnicode في أي من المواقف التالية:
عند قراءة ملف
عند كتابة ملف
عند استدعاء DLL
عند استدعاء أساليب وخصائص كائن
باستثناء الطرح الأحادي، يمكن لجميع العوامل التي يمكنها العمل على الأعداد الصحيحة أن تعمل على نوع البيانات بايت. نظرًا لأن البايت هو نوع غير موقع من 0 إلى 255، فلا يمكن أن يمثل أرقامًا سالبة. لذا، عند إجراء عملية الطرح الأحادي، يقوم VisualBasic أولاً بتحويل البايت إلى عدد صحيح موقّع.
يمكن تعيين كافة المتغيرات الرقمية لبعضها البعض ولمتغيرات النوع المتغير. قبل تعيين رقم الفاصلة العائمة لعدد صحيح، يقوم Visual Basic بتقريب الجزء العشري من رقم الفاصلة العائمة بدلاً من إزالته.
تفاصيل للحصول على تفاصيل حول تحويل Unicode وANSI، راجع الفصل 16، "التدويل".
نوع بيانات السلسلة
إذا كان المتغير يحتوي دائمًا على سلسلة ولم يحتوي أبدًا على قيمة رقمية، فيمكنك تعريفه بالنوع String.
PrivateSAsString
يمكنك بعد ذلك تعيين سلسلة لهذا المتغير والعمل عليها باستخدام وظائف السلسلة.
S=قاعدة البيانات
ق=يسار(ص،4)
بشكل افتراضي، متغير السلسلة أو المعلمة عبارة عن سلسلة ذات طول متغير. عندما يتم تعيين بيانات جديدة إلى سلسلة، يمكن أن يزيد طولها أو ينقص. من الممكن أيضًا الإعلان عن سلسلة ذات طول ثابت. يمكن الإعلان عن سلسلة ذات طول ثابت بالصيغة التالية:
سلسلة * الحجم
على سبيل المثال، للإعلان عن سلسلة مكونة من 50 حرفًا، استخدم العبارة التالية:
ديميمبناميأسسترينغ*50
إذا تم تعيين أقل من 50 حرفًا للسلسلة، فسيتم ملء الجزء المفقود من EmpName بمسافات. إذا كان الطول المعين للسلسلة طويل جدًا ولا يمكن أن يصبح سلسلة ذات طول ثابت، فسيقوم Visual Basic مباشرة باقتطاع الأحرف الزائدة.
نظرًا لأن السلاسل ذات الطول الثابت يتم ملؤها بمسافات في نهاية المسافة الإضافية، يمكن العثور على وظائف Trim وRTrim التي تقوم بإزالة المسافات لتكون مفيدة جدًا عند التعامل مع السلاسل ذات الطول الثابت. يمكن تعريف السلاسل ذات الطول الثابت في الوحدات القياسية بأنها عامة أو خاصة. في النماذج والوحدات النمطية للفئة، يجب تعريف السلاسل ذات الطول الثابت بأنها خاصة.
للحصول على تفاصيل، راجع "وظائف Ltrim وRTrim وTrim" في "الدليل المرجعي للغة Visual Basic 6.0".
مبادلة السلاسل والأرقام
إذا كانت السلسلة تمثل قيمة رقمية، فيمكن تعيين السلسلة إلى متغير رقمي. يمكن أيضًا تعيين القيم الرقمية لمتغيرات السلسلة. على سبيل المثال، ضع أزرار الأوامر ومربعات النص ومربعات القائمة في نموذج. أدخل الكود التالي في حدث النقر لزر الأمر. قم بتشغيل التطبيق وانقر فوق زر الأمر.
PrivateSubCommand1_Click()
DimintXAsInteger
DimstrYAsString
strY=100.23
intX=strY 'تمرير السلسلة إلى متغير رقمي.
List1.AddItemCos(strY) 'أضف قيمة جيب التمام للقيمة الموجودة في السلسلة.
"أضف إلى مربع القائمة."
strY=Cos(strY) 'انقل قيمة جيب التمام إلى متغير السلسلة.
Text1.Text=strY 'عرض السلسلة في مربع النص.
EndSub
يفرض Visual Basic تلقائيًا المتغيرات على نوع البيانات المناسب. كن حذرًا عند تحويل السلاسل والقيم الرقمية؛ إذا كانت القيمة الموجودة في السلسلة التي تم تمريرها ليست قيمة رقمية، فسيحدث خطأ في وقت التشغيل.
نوع البيانات المنطقية
إذا كانت قيمة المتغير عبارة عن معلومات "صواب/خطأ" و"نعم/لا" و"تشغيل/إيقاف" فقط، فيمكن تعريفه كنوع منطقي. القيمة الافتراضية للقيمة المنطقية هي False. في المثال أدناه، blnRunning هو متغير منطقي يخزن إعداد نعم/لا بسيط.
DimblnRunningAsBoolean
"تحقق لمعرفة ما إذا كان الشريط يدور."
IfRecorder.Direction=1ثم
blnRunning=True
إنديف
نوع بيانات التاريخ
يمكن تضمين قيم التاريخ والوقت إما في نوع بيانات التاريخ المحدد أو في متغيرات متغيرة. تنطبق خصائص التاريخ العامة على كلا النوعين.
لمزيد من المعلومات، راجع قسم "تخزين قيم التاريخ/الوقت في المتغيرات المتغيرة" في "موضوعات المتغيرات المتقدمة" في الدليل عبر الإنترنت.
عند تحويل أنواع البيانات الرقمية الأخرى إلى التاريخ، تمثل القيمة الموجودة على يسار العلامة العشرية معلومات التاريخ، وتمثل القيمة الموجودة على يمين العلامة العشرية الوقت. منتصف الليل هو 0 والظهر هو 0.5. تمثل الأرقام السالبة تواريخ ما قبل 31 ديسمبر 1899 م.
->