![]() |
|
[مقال] كلام في استخدام الدوال والروتينات function and sub - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182) +--- قسم : قسم مقالات VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=184) +--- الموضوع : [مقال] كلام في استخدام الدوال والروتينات function and sub (/showthread.php?tid=2667) |
كلام في استخدام الدوال والروتينات function and sub - سعود - 25-04-14 بسم الله الرحمن الرحيم السلام عليكم ورحمة الله وبركاته كلكم تعرفون الدوال Functions و الروتينات Subs العادية. الفرق بينهما(من واقع تجربتي) شيء واحد : . الدالة ترجع قيمة والروتين لايرجع قيمة . في المثال "الناسخ الديناميكي" استخدمت الاثنين. مثلا اردت سحب محتوى صفحة مثلا من عنوان : PHP كود : http://vb4arb.com/vb/thread-205.html فنحتاج هنا الى دالة واحدة نسحب من خلالها المحتوى مرة واحدة مثلا PHP كود : dim url as string="http://vb4arb.com/vb/thread-205.htmlالان لنجهز دالة تقوم بالمطلوب لنسميها getpagestrings PHP كود : Private Function getpagestrings(ByVal url As String) As StringPHP كود : Private Function getpagestrings( ByVal url As String ) As String ) هذا هو الذي يهمنا وهو نفس الروتين العادي الا اننا هنا نستطيع معرفة المحتوى لذلك انظر لاخر الدالة لكلمة:PHP كود : Return html الان لنعود الى الخطوة السابقة وهي رغبتنا بسحب محتوى صفحة عرفنا سابقا رابط url واسندنا له رابط لموضوع احد الاخوة الفضلاء sooriaty03 وهو رابط http://vb4arb.com/vb/thread-205.html الان لنقم بالتجربة PHP كود : dim html as string=getpagestrings(url) اسندنا رابط للدالة والدالة اعادت لنا محتوى الصفحة وهكذا لن نضطر للقراءة لمحتوى صفحة كل ما اردنا معرفة المحتوى بل المحتوى جاهز بالمتغير المحلي html الان نحتاج لامر سحب روابط الصور من المحتوى html الذي جهزناه فما هو هذا الامر؟ 1-دالة. 2-روتين عادي sub ؟ ------ الجواب بما اننا نحتاج قيمة معادة فنحن نضظر لاستخدام الدالة Function لذلك فلنجهز دالة سحب روابط الصور PHP كود : Private Function getpicslinks(ByVal content As String) As List(Of String)انظر لصياغة الدالة جيدا وقارنها بما قبلها PHP كود : Private Function getpicslinks(ByVal content As String) As List(Of String) ثم دقق في النوع القيمة المعادة وهو مبين اخر السطر PHP كود : As List(Of String) كود : Dim piclink As New List(Of String)PHP كود : Return piclink الان لنرجع للخطوة السابقة وهي رغبتنا بسحب روابط الصور بواسطة هذه الدالة PHP كود : '=======تحميل الصورلاحظ جيدا هذه الجملة PHP كود : For Each pic In getpicslinks(html) لان الدالة ستعيد قائمة بالروابط لذلك ناسب ان نستخدم حلقة لتمر على كل بنود هذه القائمة انظر للعمل كيف يكون من استبدال لروابط الصور في المحتوى html لكن دقق في الخطوة التالية: وهي اننا حصلنا على روابط عدة ونريد امر لتحميل اي رابط بشكل فوري فماهو الامر؟ 1- دالة. 2-روتين عادي ؟ الان نحن لا نحتاج قيم معادة لذلك سنستخدم روتين عادي Sub لنقم بتجهيزه بحيث يحتاج وسيطة رابط للصورة او اي ملف لتحميله PHP كود : Private Sub downloadpic(ByVal url As String)انظر للسطور الاولى ضمن الروتين PHP كود : url = url.Replace("./", "")ثم التاكد من هل الرابط داخلي ام خارجي فان كان يبدا بـ http فهو خارجي ولا اشكال من طلب التحميل من غير اسناد له روابط اخرى. وان كان داخلي فبلا شك نحتاج اسناد له روابط وهي بلا شك روابط المنتدى نفسه وهي المتغيرات التي ترونها
bade & justdo & "/" & foru & "/"
يعني فيه زيادة الجا لها لاريح دماغي من اكواد التحقق من صيغة الرابطاول كلمة يعني http والثانية تعني فقط الدومين vb4arb.com والخط المائل واسم مجلد المنتدى الباقي في الروتين سهل المهم لنرجع قليلا الى PHP كود : downloadpic(pic.Split("""")(1)) PHP كود : <img src="الرابط هنا" alt="" فموقع الرابط هو رقم 1 لان رقم 0 هو
<img src=
لنفس الطريقة لكل انواع الملفات في الصفحة وبعد ان تمر على كل محتويات الصفحة يتبقى حفظ الصفحة معدلة بحيث يتم استبدال الروابط الى مكان واحد ان احببت يعني بدل ان تنشي للازرار مجلد وللايقونات مجلد وللاستايل مجلد ضعهم بمجلد واحد . والكود الاخير هو PHP كود : '=======================الصفحة الاولى==========================بهذه الفكرة تم نسخ اغلب او قل الصفحات المهمة هنا http://vb4arb.com/vb/thread-2634-post-13098.html#pid13098 RE: كلام في استخدام الدوال والروتينات function and sub - الشاكي لله - 25-04-14 موضوع رائع اخي سعود ويفيد كل مبتدأ لكن فيه اسم غريب اول مرة اسمعه "روتين" هههه > وفي ناس يسمونه "طريقة" وهي الترجمة الحرفية ل Method لكن انا اسميه "اجراء" وهو اعتقد اقرب مسمى خاصة لمبرمجي الدلفي حيث يعبر الsub بكلمة Procedure والتي تعني بالعربي (اجراء) ايييه ، هذي حالنا المصطلحات الانجلينزية في البرمجة فاحيانا لاتناسب ترجمتها اقرب مثال هي الInterface الي اختلفو فيها بعض المبرمجين وترجموها كـ "واجهة" مع انها بعيدة عن هذا المسمى والبعض ايضا يسمي الClass ك "صف" او "صنف" او "كلاس" او "فئة" المهم ماعلينا ---- سؤال بسيط ويمكن تستفيد منه كمعلومة .. في السي شارب ولغات السي عاما يستطيع الروتين (sub) ارجاع اكثر من قيمة بواسطة البارميتار العكسي (out) هل هذا الشيئ موجود في الفيجوال بيسك ؟؟ RE: كلام في استخدام الدوال والروتينات function and sub - سعود - 26-04-14 إقتباس :في السي شارب ولغات السي عاما يستطيع الروتين (sub) ارجاع اكثر من قيمة بواسطة البارميتار العكسي (out) بصراحة لا ادري لكن لو تكرمنا بكود بسيط لكيفية الاعادة تكون عملت فيني معروف
RE: كلام في استخدام الدوال والروتينات function and sub - الشاكي لله - 26-04-14 http://msdn.microsoft.com/en-us/library/ee332485.aspx على العموم ركز على الجملة التالية : إقتباس :The out keyword causes arguments to be passed by reference. This is like the ref (byref) keyword, except that ref requires that the variable be initialized before it is passed. يعني ان الout شبيهة ب byref ماعدى ان out لاتتطلب ان يكون المتغير جاهز مسبقا على عكس byref RE: كلام في استخدام الدوال والروتينات function and sub - Ali Wisam - 04-05-14 موضوع جميل جدًّا خصوصًا للمبتدئين .. بارك الله فيك
|