معلومات إضافية حول القيم الراجعه للدوال ..
في
الغالب كل دالة لها قيمة راجعه
جميع الدوال ألي أخذناها لحد الان لها قيم راجعة..
أنظر لهذا السطر..
كود:
[COLOR=Navy][I]MsgBox[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=Indigo]4[/COLOR][COLOR=Magenta],[/COLOR][COLOR=Silver]""[/COLOR][COLOR=Magenta],[/COLOR][COLOR=Silver]"Welcome"[/COLOR][COLOR=Red])[/COLOR]
هل دالة المسج هذه ترجع قيمة ؟؟
نعم ... حسب إختيار المستخدم بتكون على النحو التالي..
yes = 6
no = 7
لكن أين؟؟ ...
في نفس مكان الدالة .. بعد تنفيذ الدالة كأنك تمحي الدالة وتضع مكانها القيمة الراجعة لها..
كود:
[COLOR=Navy][I]MsgBox[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=Indigo]4[/COLOR][COLOR=Magenta],[/COLOR][COLOR=Silver]""[/COLOR][COLOR=Magenta],[/COLOR][COLOR=Silver]"Welcome"[/COLOR][COLOR=Red])[/COLOR]
لو إختار المستخدم نعم ..
بشكل تقريبي بهذا الشكل...
الان القيمة على السطر لكن ماراح نستفيد منها ونوضفها في الكود..
عندنا 3 طرق للإستفادة من القيمة الراجعه تطرقنا لبعضها سابقاُ ..
الطريقة الاولى حفظها في متغير :
كود:
[COLOR=DarkRed]$msg[/COLOR][COLOR=Red] =[/COLOR] [COLOR=Navy][I]MsgBox[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=Indigo]4[/COLOR][COLOR=Magenta],[/COLOR][COLOR=Silver]""[/COLOR][COLOR=Magenta],[/COLOR][COLOR=Silver]"Welcome"[/COLOR][COLOR=Red])[/COLOR]
الان بعد تنفيذ الدالة ترجع قيمة .. نفرض أن المستخدم إختار no
نقدر نتخيل العملية بهذي الصورة ..
كود:
[COLOR=DarkRed]$msg[/COLOR] [COLOR=Red]=[/COLOR] [COLOR=Indigo]7[/COLOR]
الان لدينا القيمة نقدر نستفيد منها بإختبارها بشرط ...
أخذنا في الشروط أننا نقدر نستخدم عمليات المقارنة كشرط ...
فراح يكون صورة الكود هكذا..
كود:
[COLOR=DarkRed]$msg[/COLOR][COLOR=Red] =[/COLOR] [COLOR=Navy][I]MsgBox[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=Indigo]4[/COLOR][COLOR=Magenta],[/COLOR][COLOR=Silver]""[/COLOR][COLOR=Magenta],[/COLOR][COLOR=Silver]"Welcome"[/COLOR][COLOR=Red])[/COLOR]
[COLOR=Blue]if[/COLOR] [COLOR=DarkRed]$msg[/COLOR] [COLOR=Red]=[/COLOR] [COLOR=Indigo]7[/COLOR] [COLOR=Blue]Then[/COLOR]
[COLOR=Navy][I]MsgBox[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=Indigo]0[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]""[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]"No/[/COLOR][COLOR=Silver]إخترت لا"[/COLOR][COLOR=Red])[/COLOR]
Else
[COLOR=Navy][I]MsgBox[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=Indigo]0[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]""[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]"Yes/إخترت نعم"[/COLOR][COLOR=Red])[/COLOR]
[COLOR=Blue]endif[/COLOR]
الطريقة الثانية إرسالها كوسيط لدالة أخرى ..
كود:
[I][COLOR=Navy]MsgBox[/COLOR][/I][COLOR=Red]([/COLOR][COLOR=Indigo]0[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]""[/COLOR][COLOR=Red],[/COLOR][COLOR=Navy]inputbox[/COLOR][COLOR=Red]([/COLOR][COLOR=Silver]""[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]""[/COLOR][COLOR=Red]))[/COLOR]
لاحظ هنا أننا وضعنا دالة inputbox كوسيط للدالة MsgBox..
في الحقيقة نحن الان لم نرسل الدالة بل أرسلنا فقط القيمة الراجعه لها..
الان لو شغلنا السيكريبت راح تضهر أول inputbox
وبعد الكتابة فيها تضهر MsgBox
هذي الطريقة لا أنصح بها أول شيء إحتمالية الخطأ في الكتابة تصبح كبيرة..
وثانياً القيمة الراجعه الان راح نستفيد منها فقط في دالة المسج بوكس ..
لو أردنا الاستفادة منها مره أخرى لن نستطيع ..لكن لو إستخدمنا الطريقة الاولى بالحفظ في متغير ..
متى ما إحتجت لهذي القيمة تقدر تستفيد منها ..
الطريقة الثالثة وضعها في عبارهif :
شاهدنا بعض أمثلة الشباب يضعو الدالة مباشرة في عبارة if دون حفظها في متغير .. والتحقق من القيمة..
أولا كلنا نعرف أن عبارة الشرط تتعامل مع البيانات من النوع ..Booleans
نأخذ هذا المثال ..
كود:
[COLOR=DarkRed]$copy[/COLOR] [COLOR=Red]=[/COLOR][COLOR=Navy][I]F[/I][/COLOR][I][COLOR=Navy]ilecopy[/COLOR][/I][COLOR=Red]([/COLOR][COLOR=Magenta]@ScriptDir[/COLOR] [COLOR=Red]&[/COLOR] [COLOR=Silver]"\*.txt"[/COLOR][COLOR=Red] ,[/COLOR][COLOR=Magenta]@HomeDrive [/COLOR][COLOR=Red]&[/COLOR][COLOR=Silver] "\"[/COLOR][COLOR=Red])[/COLOR]
[COLOR=Blue]if[/COLOR][COLOR=DarkRed] $copy[/COLOR] [COLOR=Red]=[/COLOR] 1 [COLOR=Blue]Then[/COLOR]
[COLOR=Navy][I]MsgBox[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=Indigo]0[/COLOR][COLOR=Silver],""[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]"Success"[/COLOR][COLOR=Red])[/COLOR]
[COLOR=Blue]Else[/COLOR]
[I][COLOR=Navy]MsgBox[/COLOR][/I][COLOR=Red]([/COLOR][COLOR=Indigo]0[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]""[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]"Error"[/COLOR][COLOR=Red])[/COLOR]
[COLOR=Blue]endif[/COLOR]
لاحظ هنا حنا إستخدمنا الاسلوب الاول حفظ البيانات في متغير ثم إختبارها ..
كود:
[COLOR=DarkRed]$copy[/COLOR] [COLOR=Red]=[/COLOR] [COLOR=Indigo]1[/COLOR]
نلاحظ إن الشرط عملية مقارنة وهذي العمليات ترجع إما trueأو false
وهي القيم الي يتعامل معها الشرط
true =صحيح : تحقق الشرط
false=خاطيء: لم يتحقق الشرط
هذي أعتقد الكل عارفها لكن نحن الان نريد إستخدام الدالة في الشرط مباشرة ..
أولا :لو الدالة ترجع قيمتين وهي trueأو false هنا ماراح يكون فيه مشاكل .
لأنه لو أرجعت true راح يعتبر الشرط صحيح والعكس في false ..
لحد الان لم تمر علينا داله ترجع بهذي القيمتين .. لكن الدوال اللي أخذناها ترجع ياقيم رقمية أو نصية ..
فهل يمكن إستخدامها في الشرط مباشرة دون حفظ القيمة في متغير وإختبار قيمته ؟؟
نعم لكن أولا لازم نعرف بعض القواعد..
أولاً: تعامل الشرط مع القيم النصية ..
1)إذا كان القيمة نص-
أي نص- فهي تعتبر صحيحة في كل الحالات أي true يعني تحقق الشرط .
جرب الكود هذا :
كود:
[COLOR=Blue]if[/COLOR] [COLOR=Silver]"waget"[/COLOR] [COLOR=Blue]Then[/COLOR]
[COLOR=Navy][I]MsgBox[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=Indigo]0[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]""[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]"تحقق الشرط"[/COLOR][COLOR=Red])[/COLOR]
Else
[I][COLOR=Navy]MsgBox[/COLOR][/I][COLOR=Red]([/COLOR][COLOR=Indigo]0[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]""[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]"لم يتحقق الشرط"[/COLOR][COLOR=Red])[/COLOR]
[COLOR=Blue]endif[/COLOR]
2) إذا كانت القيمة نص فارغ "" تعتبر خاطئة false أي لم يتحقق الشرط ..
جرب الكود هذا :
كود:
[COLOR=Blue]if[/COLOR] [COLOR=Silver]""[/COLOR] [COLOR=Blue]Then[/COLOR]
[I][COLOR=Navy]MsgBox[/COLOR][/I][COLOR=Red]([/COLOR][COLOR=Indigo]0[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]""[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]"تحقق الشرط"[/COLOR][COLOR=Red])[/COLOR]
Else
[I][COLOR=Navy]MsgBox[/COLOR][/I][COLOR=Red]([/COLOR][COLOR=Indigo]0[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]""[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]"لم يتحقق الشرط"[/COLOR][COLOR=Red])[/COLOR]
[COLOR=Blue]endif[/COLOR]
الان نأخذ الداله الي ترجع قيمة نصية input box
كود:
[COLOR=Blue]if[/COLOR] [COLOR=Navy][I]InputBox[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=Silver]""[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]""[/COLOR][COLOR=Red]) [/COLOR][COLOR=Blue]Then[/COLOR]
[I][COLOR=Navy]MsgBox[/COLOR][/I][COLOR=Red]([/COLOR][COLOR=Indigo]0[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]""[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]"تحقق الشرط"[/COLOR][COLOR=Red])[/COLOR]
[COLOR=Blue]Else[/COLOR]
[COLOR=Navy]MsgBox[/COLOR][COLOR=Red]([/COLOR][COLOR=Indigo]0[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]""[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]"لم يتحقق الشرط"[/COLOR][COLOR=Red])[/COLOR]
[COLOR=Blue]endif[/COLOR]
ملاحظة أخيره : إستخدام هذي الطريقة مع النصوص غير مفيد ..
لأنك تريد من الدالة النص وتستفيد منه في الكود وليس تتحقق هل الدالة أرجعت قيمة نصية أو أرجعت نص فارغ !!
ثانياً تعامل الشرط مع القيم الرقمية..
1) إذا كانت القيمة عدد -أي عدد*-راح يعتبر صحيح true أي تحقق الشرط ..
مثال ..
كود:
[COLOR=Blue]if[/COLOR] [COLOR=Indigo]125 [/COLOR][COLOR=Blue]Then[/COLOR]
[COLOR=Navy][I]MsgBox[/I][/COLOR]([COLOR=Indigo]0[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]""[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]"تحقق الشرط"[/COLOR][COLOR=Red])[/COLOR]
Else
[COLOR=Navy][I]MsgBox[/I][/COLOR]([COLOR=Indigo]0[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]""[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]"لم يتحقق الشرط"[/COLOR][COLOR=Red])[/COLOR]
[COLOR=Blue]endif[/COLOR]
2) إذا كان العدد صفر راح يعتبر خاطيء False أي لم يتحقق الشرط..
مثال..
كود:
[COLOR=Blue]if[/COLOR] [COLOR=Indigo]0[/COLOR] [COLOR=Blue]Then[/COLOR]
[COLOR=Navy][I]MsgBox[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=Indigo]0[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]""[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]"تحقق الشرط"[/COLOR][COLOR=Red])[/COLOR]
Else
[COLOR=Navy][I]MsgBox[/I][/COLOR]([COLOR=Indigo]0[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]""[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]"لم يتحقق الشرط"[/COLOR][COLOR=Red])[/COLOR]
endif
الان نأخذ أي دالة من التي أخذناها ..
كود:
[COLOR=Blue]if[/COLOR] [COLOR=Navy][I]Filecopy[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=Magenta]@ScriptDir[/COLOR] [COLOR=Red]&[/COLOR] [COLOR=Silver]"\*.txt"[/COLOR] [COLOR=Red],[/COLOR][COLOR=Magenta]@HomeDrive [/COLOR][COLOR=Red]&[/COLOR] [COLOR=Silver]"\"[/COLOR][COLOR=Red]) [/COLOR][COLOR=Blue]then[/COLOR]
[COLOR=Navy][I]MsgBox[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=Indigo]0[/COLOR][COLOR=Silver][COLOR=Red],[/COLOR]""[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]"Success"[/COLOR][COLOR=Red])[/COLOR]
[COLOR=Blue]Else[/COLOR]
[COLOR=Navy][I]MsgBox[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=Indigo]0[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]""[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]"Error"[/COLOR][COLOR=Red])[/COLOR]
[COLOR=Blue]endif[/COLOR]
filecopy
إذا نجح النسخ ترجع بـ 1
إذا فشل بـ 0
فحنا قلنا في البداية إذا كان أي عدد غير الصفر يعتبر الشرط صحيح .
إذا كان العدد صفر يتعبر الشرط لم يتحقق..
فالان إذا تم النسخ راح ترجع الدالة 1 أي الشرط صحيح
إذا لا أي 0 الشرط لم يتحقق ..
ملاحظة أخيره : نستطيع إستخدام or /and /not مع الشرط أيضاً بنفس الاسلوب السابق .
أرجو من الجميع التركيز وقرأة الدرس بتمعن ..
وصلى الله وسلم على نبينا محمد
:d: