الخميس، 15 نوفمبر 2012

دورة [VBScript] الدرس السابع: الدوال والإجراءات الفرعية ج2

الدرس السابع: الدوال والإجراءات الفرعية ج2

دورة [VBScript] الدرس السابع: الدوال والإجراءات الفرعية ج2 | ابداع ديزاين abda3 design
Functions and Subs ...
قد تحتاج في برنامجك إلى إنجاز مهمة معينة اكثر من مرة في أنحاء متفرقة من أجزاء  الشيفرة، فبالتأكيد أنت لا تحبذ إعادة كتابة الأوامر عند كل مرة تحتاج إليها لأن ذلك سيزيد من تعقيد الشيفرة ويؤدي إلى إطالتها دون طائل.. من هذا المنطلق تبرز فكرة الإجراءات الدالية(الدوال) و الإجراءات الفرعية والتي تمثل أحد ركائز البرمجة  الهيكلية حيث تساعد في تكوين شيفرات قصيرة، واضحة التكوين، سريعة التنفيذ.
الدوال..
الدالة هي إجراء يقوم بتنفيذ مجموعة من الأوامر وقد يتلقى قيم كوسيطات arguments ثم يعيد قيمة من خلال اسمه.. وتكون الصيغة العامة للدوال على الشكل
كود:
Function FunctionName([arguments])
Function statements
End Function


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


كود:
العظمى والقيمة الحالية
'تكوين الدالة
Function Percent(Hi,Nw)
Dim RetVal
RetVal = Nw * 100 / Hi & "%"
Percent = RetVal
End Function


كما تلاحظ في المثال السابق أننا قمنا بطلب القيمة العليا Hi والقيمة الحالي Nw كوسيطات ثم قمنا بإجراء العملية لإيجاد النسبة ثم مرنا النتيجة إلى اسم الدالة.. ويمكننا استدعاء الدالة بتمرير القيمة العظمى والقيمة الحالية


كود:


Dim sRet
sRet = Percent(200,50)
msgbox sRet


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

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

كود:



Sub SubName(arguments)
Sub statements
End Sub


الآن سنقوم بتحويل المثال السابق لجعله معتمدا على الإجراءات الفرعية

كود:



Sub Percent(Hi,Nw)
Dim RetVal
RetVal = Nw * 100 / Hi & "%"
msgbox RetVal
End Sub

والآن نقوم باستدعاء الإجراء الفرعي


كود:



Percent 200,50


تلاحظ عند الاستدعاء أن الإجراء لا يعيد أي قيمه بل يقوم بتنفيذ مجموعة من الأوامر ، آخرها هو عرض نتيجة القيمة باستخدام الإجراء msgbox .. أيضا تلاحظ عدم استخدامنا للأقواس عند استدعاء الإجراء الفرعي ويجب علينا استخدامها إذا قمنا بالاستدعاء بواسطة العبارة Call ...

كود:


Call Percent(200,50)


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

دوال الوقت والتاريخ في لغة VBScript..

 الدالة Date

الوظيفة:

تعيد التاريخ الحالي

مثال:


كود:



msgbox Date



ملاحظة:
تستخدم الدالة Time لإيجاد الوقت الحالي على نفس نهج الدالة السابقة أيضا نستخدم الدالة Now لإيجاد التاريخ والوقت معا.

  الدالة DateAdd

الوظيفة:

جمع أو طرح مدة زمنية من وإلى تاريخ معين..

الصيغة العامة:

DateAdd(Interval, Number, Date)


الوسيطات:

interval : هذه الوسيطة تأخذ القيم التالية.. d الأيام، h الساعات، m الأشهر، n
الدقائق، q ربع العام، s الثواني، w يوم من الأسبوع، ww الأسبوع، y يوم من العام،
yyyy العام.

Number : مقدار الإضافة.

Date: التاريخ المراد الإضافة إليه.

مثال

كود:



'#لاحظ ضرورة وضع التاريخ بين نسختي العلامة
msgbox DateAdd("d",1,#01/01/98#) '02/01/98


 الدالة DateDiff

الوظيفة:

إيجاد الفرق بين تاريخين.

الصيغة العامة:

DateDiff (interval, date1, date2 [ ,
firstdayofweek [ , firstweekofyear ]] )


الوسيطات:

Interval: تشبه نفس الوسطية في الدالة DateAdd.

Date1: التاريخ الأول (المطروح)

Date2: التاريخ الثاني (المطروح منه)

Firstdayofweek: (وسيطة اختيارية)أول يوم في الأسبوع وتأخذ القيم من 1 إلى 7 حيث
يمثل vbSunday رقم 1 و vbMonday رقم 2 وهكذا..

firstweekofyear: (وسيطة اختيارية) وتأخذ القيم التالية

vbUseSystem لاستخدام إعدادات NLS API

vbFirstJan1 البدء عند الأسبوع الذي يحدث فيه 1 يناير

vbFirstFourDays البدء عند أول أسبوع يحوي الأيام الأربع الأقل

vbFirstFullWeek البدء عند الأسبوع الأول الكامل

مثال:

كود:


msgbox DateDiff("d",#01/01/98#,Date)



 الدالة DatePart

الوظيفة:

تعيد جزءا محددا من تاريخ معطى.

الصيغة العامة:

DatePart (interval, date [ , firstdayofweek [ ,
firstweekofyear ]] )

الوسيطات:

interval: تم التطرق لهذه الوسطية في الدالة DateAdd.

Date: التاريخ الذي سيعاد جزء منه.

Firstdayofweek: تم التطرق لهذه الوسطية في الدالة DateDiff.

Firstweekofyear: تم التطرق لهذه الوسطية في الدالة DateDiff.

مثال:


كود:


msgbox DatePart("d",#01/05/98#) ' 5

 الدالة DateSerial

الوظيفة:

تعيد تاريخا تسلسليا يوافق قيم يوم وشهر وسنة ممررة إليها كوسيطات.

الصيغة العامة:

DateSerial (year, month, day)


الوسيطات:

year: قيمة تمثل السنة بين (100و 9999).

month: قيمة تمثل الشهر.

Day: قيمة تمثل اليوم

مثال

كود:



msgbox DateSerial(1998,2,12) ' 12/02/98



ملاحظة:
تشبه الدالة TimeSerial الدالة السابقة في طريقة تعاملها ولكنها تختلف عنها في أنها تتعامل مع الوقت.

 DateValue 

الوظيفة:

إيجاد التاريخ المكافئ للقيمة الممررة..

الصيغة العامة:

DateValue (date)


الوسيطات:

Date: قيمة تمثل التاريخ..

مثال:

كود:

msgbox DateValue("يناير,99")

ملاحظة:
تشبه الدالة TimeValue الدالة السابقة في طريقة تعاملها ولكنها تختلف عنها في أنها تتعامل مع الوقت.

 الدالة Day

الوظيفة:

تعيد رقم اليوم للتاريخ المحدد.

الصيغة العامة:

Day (date)



الوسيطات:

Date: قيمة تمثل التاريخ

مثال:

كود:



msgbox Day(Date)





ملاحظة:
تستخدم الدالتين Month و Year لإيجاد قيمة اليوم والسنة لتاريخ معين على نفس نهج الدالة السابقة.

 الدالة Hour

الوظيفة:

تعيد رقم يمثل الساعة للزمن المحدد.

الصيغة العامة:

Hour( Time)


الوسيطات:

Time: قيمة تمثل الزمن.

مثال:

كود:


msgbox Hour(#05:01:10 Am#) '5


ملاحظة:
تستخدم الدالتين Minute و Second لإيجاد قيمة الدقائق والثواني لزمن معين بنفس نهج الدالة السابقة.

 الدالة MonthName

الوظيفة:

تعيد الدالة قيمة تمثل اسم الشهر المكافئ للقيمة الممررة.

الصيغة العامة:

MonthName( month [,abbreviate])


الوسيطات:

month: رقم الشهر.

Abbreviate : (وسيطة اختيارية) تأخذ هذه الوسيطة قيمة منطقية تحدد هل يتم اختصار
اسم الشهر أم لا.

مثال:

كود:



msgbox MonthName(12) 'ديسمبر


ملاحظة:
تشبه الدالة WeekdayName الدالة السابقة -في المفهوم- وتختلف عنها في كونها تعيد اسم اليوم من الأسبوع.


 الدالة WeekDay

الوظيفة:

تعيد رقما يمثل اليوم لتاريخ معين.

الصيغة العامة:

Weekday( date, [firstdayofweek])


الوسيطات:

date: قيمة تمثل التاريخ.

Firstdayofweek: تم التطرق لها في الدالة DateDiff.

مثال:

كود:

msgbox WeekDay(#01/01/99#) '6 الجمعة



 الدالة Timer

الوظيفة:

تعيد الوقت المنقضي منذ نصف الليل.

مثال:

كود:

Dim startTime,EndTime,SiteName,Prompt
Prompt ="ادخل العنوان التالي"& vbcrlf
msgbox "سيتم اختبار سرعتك في الكتابة...استعد"
startTime = Timer
SiteName = InputBox(Prompt & "http://abda3design.blogspot.com")
EndTime= Timer
If SiteName = "www.c4arab.com" Then
Prompt = "قمت بكتابة 14 محرفا خلال "
msgbox Prompt & EndTime - startTime & " ثانية"
End If


ملاحظات عامة..

1. يمكن الخروج من الإجراءات قبل نهايتها باستخدام العبارة Exit Function للدوال و
Exit Sub للإجراءات الفرعية.

2. يمكن استخدام الدوال كإجراءات فرعية عند عدم الحاجة للقيمة التي تعيدها فمثلا الدالة msgbox -قمنا بالتطرق لها في وقت سابق- والتي تستخدم كدالة على الشكل التالي..


كود:



Dim Ret,Prompt
Prompt ="هل تريد تحويل اللون الخلفي للنافذة إلى الأسود؟"
Ret = msgbox(Prompt,vbYesNo)
If Ret = vbYes Then document.bgColor = vbBlack


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


كود:



Dim Prompt
Prompt ="سيتم تحويل اللون الخلفي للنافذة إلى الأسود"
msgbox Prompt
document.bgColor = vbBlack



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



كود:


'تكوين الإجراء الفرعي
Sub Myloop(Num,Txt)
If Num = 0 Then Exit Sub
document.write Txt & "< BR>"
Myloop Num - 1,txt
Exit Sub
End Sub
'عند الاستدعاء
Myloop 5,"http://abda3design.blogspot.com"

ولأي إستفسار الرجاء ترك تعليقاتكم لأقوم بالإجابة عليها في القريب العاجلدورة [VBScript] الدرس السابع: الدوال والإجراءات الفرعية ج2 | ابداع ديزاين abda3 design

لا تقرأ وترحل شارك معنا بتعليق فنحن نسعى لنقدم لك الافضل والاجمل





ضع تعليقك

0 التعليقات:

البحــث

English French German Spain Italian Dutch

Russian Portuguese Japanese Korean Arabic Chinese Simplified

المتابعون

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