وظائف وإجراءات VBScript مع مثال

⚡ ملخص ذكي

تُنظّم الدوال والإجراءات في لغة VBScript التعليمات البرمجية في كتل قابلة لإعادة الاستخدام. يُنفّذ الإجراء الفرعي عبارات دون إرجاع قيمة، بينما يُرجع إجراء الدالة قيمةً عن طريق إسنادها إلى اسم الدالة، وتُمرّر الوسائط باستخدام ByRef أو ByVal.

  • 🧱 Code إعادة استخدام: تعمل الإجراءات على تقسيم التعليمات البرمجية إلى وحدات بحيث يسهل كتابتها وتصحيح أخطائها وصيانتها عبر البرامج النصية الكبيرة.
  • 📤 الإجراء الفرعي: يقوم الإجراء الفرعي بتنفيذ مجموعة من التعليمات بين الإجراء الفرعي ونهاية الإجراء الفرعي ولكنه لا يُرجع قيمة.
  • 📥 إجراء الوظيفة: تقوم الدالة بإرجاع قيمة عن طريق إسنادها إلى اسم الدالة بين Function و End Function.
  • 📞 الدعوة: استخدم الكلمة المفتاحية call لتشغيل إجراء فرعي، واستخدم اسم الدالة في تعبير للحصول على نتيجتها.
  • 🔁 ByRef مقابل ByVal: يسمح ByRef باستمرار التغييرات بعد الاستدعاء؛ أما ByVal فيعمل على نسخة، لذا لا تستمر التغييرات.
  • ⚙️ تمرير افتراضي: يقوم VBScript بتمرير الوسائط بالمرجع بشكل افتراضي ما لم تحدد ByVal.

وظائف وإجراءات VBScript

إجراءات VBScript

تُستخدم إجراءات VBScript بشكل أساسي لتنظيم التعليمات البرمجية وإعادة استخدامها. لقد استخدمنا أمثلة بسيطة حتى الآن لأن الغرض هنا هو تعلم VBScript. ولكن في سيناريوهات العالم الحقيقي، لا يكون التعليمات البرمجية بهذه البساطة. عندما تحاول تنفيذ شيء مفيد، قد يصبح التعليمات البرمجية أكثر تعقيدًا. قد يكون هناك مئات الأسطر الممتدة عبر العديد من الصفحات.

إذا لم تنظم الكود بشكل صحيح، فإن عملية الترميز وتصحيح الأخطاء وإدارة الكود بأكملها ستصبح معقدة حقًا. لذا، يجب عليك تنظيم الكود أو تقسيمه إلى وحدات بعناية حتى يصبح الكود الخاص بك قابلاً للإدارة بسهولة.

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

أنواع الإجراءات في VBScript

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

  1. الإجراء الفرعي: لا يقوم الإجراء الفرعي بإرجاع قيمة.
  2. إجراء الدالة: يتم استخدام إجراء الدالة إذا كنت تريد إرجاع قيمة.

الإجراءات الفرعية

إذا كنت تريد تنفيذ سلسلة من البيانات دون إرجاع أي قيمة، فيمكنك استخدام الإجراءات الفرعية.

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

Sub outputMessage()
document.write("Welcome")
End Sub

مجرد كتابة هذا الرمز لن ينتج أي شيء. هنا قمت بإنشاء إجراء فرعي يسمىputMessage. بعد ذلك، تحتاج إلى الاتصال به.

استدعاء رسالة الإخراج ()

اجمع بين هاتين المجموعتين من الرموز في الداخل tag like this.

<script type="text/vbscript">

Sub outputMessage()
document.write("Welcome")
End Sub
call outputMessage()
</script>

سيكون إخراج هذا الرمز

الإجراءات الفرعية

وظائف في بي سكريبت

إذا كنت تريد تنفيذ سلسلة من العبارات وإرجاع قيمة، فأنت بحاجة إلى استخدام إجراءات الوظيفة، المعروفة باسم الوظيفة.

تبدأ إجراءات الوظيفة وتنتهي ببيانات الوظيفة ونهاية الوظيفة على التوالي.

قد يأخذ أو لا يأخذ إجراء الوظيفة مدخلات.

تقوم إجراءات الدالة بإرجاع قيمة عن طريق تعيين القيمة لاسمها.

<script type="text/vbscript">
Function findArea(radius)
   const pi=3.14
   area = pi*radius*radius
   findArea = area
End Function
document.write("The area of the circle when the radius is 20 is " & findArea(20) &"<br/>")
document.write("The area of the circle when the radius is 10 is " & findArea(10))

</script>

سيكون إخراج هذا الرمز

وظائف في بي سكريبت

معلمات ByRef وByVal

يمكنك تمرير وسيطات VBScript إلى الإجراءات حسب المرجع أو القيمة.

إذا لم تحدد أي شيء عند استدعاء إجراء ما، فسيتم تمرير الوسيطة/الوسائط حسب المرجع افتراضيًا.

إذا استمرت التغييرات التي تم إجراؤها على الوسائط حتى بعد استدعاء الإجراء، فستحتاج إلى تمرير وسائط VBScript حسب المرجع.

عندما يتم تمرير وسيطة حسب القيمة، فإن أي تغييرات يجريها الإجراء المطلوب على قيمة متغير لا تستمر بعد استدعاء الإجراء.

يتم استخدام الكلمات الأساسية ByRef وByVal لتمرير الوسائط حسب المرجع وحسب القيمة على التوالي.

لفهم الفرق، أولاً، قم بتنفيذ الكود الموضح أدناه وشاهد النتيجة.

الخطوة 1) انسخ الكود في المحرر الخاص بك

<script type="text/vbscript">
Function returnResult(ByRef value)
   value = value +1
   returnResult = value
End Function
Dim x
x=5
call returnResult(x)
document.write(x)
</script>

الخطوة 2) الناتج هو 6

الخطوة 3) تغيير وظيفة returnResult (قيمة ByRef) إلى وظيفة returnResult (قيمة ByVal)

الخطوة 4) الآن سيكون الناتج الخاص بك هو 5.

الأسئلة الشائعة

استخدم عبارة Exit Sub داخل إجراء فرعي، أو عبارة Exit Function داخل دالة، للخروج من الإجراء مباشرةً قبل نهايته. عندها يعود التنفيذ إلى السطر الذي استدعاه.

إذا استخدمتَ الكلمة المفتاحية call، فضع الوسائط بين قوسين. أما إذا حذفتَ call، فلا تستخدم الأقواس حول الوسائط المتعددة. يُعدّ هذا خطأً شائعًا في بناء جملة VBScript.

نعم. يمكن لدالة أو إجراء فرعي في VBScript استدعاء نفسه، وهذا ما يُسمى بالاستدعاء الذاتي. احرص دائمًا على تضمين شرط أساسي لإيقاف هذه الاستدعاءات، وإلا سيستمر البرنامج في التكرار حتى ينفد مساحة الذاكرة المخصصة له.

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

نعم. يمكن للذكاء الاصطناعي أن يفعل ذلك. tracكيف تتغير القيمة باستخدام ByRef مقابل ByVal، اعرض الناتج لكل منهما، وقم بالتوصية بأي منهما يجب استخدامه بناءً على ما إذا كان يجب على المستدعي رؤية التغيير.

تلخيص هذه التدوينة بـ: