جديد المنتدى

 
 
روابط مهمة ...


العودة   منتدى تعليم الفوركس > منتدى الفوركس > منتدى المؤشرات والاكسبريتات

إضافة رد
 
LinkBack أدوات الموضوع انواع عرض الموضوع
  #1 (permalink)  
قديم 03-23-2008, 10:46 AM
الصورة الرمزية asklo

مراقب عام

 
تاريخ التسجيل: Mar 2008
المشاركات: 2,339
إرسال رسالة عبر مراسل MSN إلى asklo
افتراضي الدرس السادس .. الدوال

بسم الله الرحمن الرحيم

مرحبا بكم في الدرس السادس ... عالم الدوال في لغة MQL4

الدوال في اي لغة برمجية هي عصب البرنامج وقارب النجاة لكل مبرمج.

الدوال functions هي عبارة عن جمل statements متجمعة (هناك جمل مستقلة ولا تحتاج للتجمع لتكوين دالة مثل الحلقات والقرارات)

دعونا نبدأ الدرس .

* ماذا نعني بالدوال functions ?

الدالة تشبه في طريقة عملها طريقة عمل مشواة اللحم , فأنت عليك ان تضع اللحم والبهارات وهي عليها ان تخرج لك الكباب المشوي

اللحم والبهارت هما المعرفات والتغيرات واسم الدالة , والكباب هو ناتج الدالة والذي يمثل بقيمة return , اما المشواة ذاتها فهي جسد الدلة .

هناك اختلاف وحيد بين المشواة والدالة وهو ان بعض الدوال لها ناتج خالي (لاشئ) (ويمثلها في لغة MQL4 بالكلمة المحجوزة void)

دعونا نأخذ بعض الأمثلة :



كود PHP:
double                                  

my_func 
(double adouble bdouble c// المعرفات والمتغيرات ( اللحم والبهارت) 
  
{                                  

   return (
a*c);                  //  ناتج الدالة (الكباب) 

  


كما نرى في المثال اعلاه , الدالة بدأت بتحديد نوع الناتج (الكلمة المحجوزة double) , وبعدها اسم الدالة متبوعة بالقوسين ( ) .

بداخل تلك الأقواس ( ) سنضع اللحم والبهارات . اسف اقصد المعرفات ومتغيراتهم الدرس السادس الدوال

هنا عندنا 3 معرفات double a , double b , double c .

تبدأ الدالة عملها وتنتهي داخل القوسين { }

الكلمة المحجوزة ( return ) هي المسئولة عن اخراج الناتج النهائي للدالة .

* الكلمة المحجوزة ( Return ) :

الكلمة المحجوزة ( return ) كما قلنا هي المسئولة عن انهاء الدالة ( مثل الكلمة المحجوزة Break في الحلقات والقرارات) , كما تعطينا التحكم في نداء الدالة function call (سنعرفها بعد قليل)

الكلمة المحجوزة ( return ) يمكن ان تحتوي على تعبير ما بين اقواسها ( ) كما في مثالنا هنا ( التعبير هو اتحاد العمليات والمعرفات , راجع درس العمليات والتعبيرات ) وهنا وظيفتها ان تنهي الدالة وتخرج لنا نتائج العمليات بداخلها (كما في المثال (a*b + c);

ويمكن ايضا ان لا تحتوي على تعبير ما وهنا تكون وظيفتها فقط انهاء الدالة .

ملاحظة : ليس كل الدوال تنتهي بالكلمة المحجوزة ( return ) خاصة لو لم يكن هناك اي قيمة ناتجة عن عمليات او ما شابه .

مثال عن ذلك :



كود PHP:
void                                 // void mean there’s no sausage – returned value.  

my_func (string s// function name and parameters list (meat & spices) 

  
{                                  

       Print(
s); 

  } 

تذكروا هنا ان الكلمة المحجوزة void معناها انه لا يوجد هناك نتيجة للمعطيات.

في هذا المثال لم تخرج لنا الدالة قيمة الناتج بل فقط أخرجت لنا المعرف ( s ) كما ادخلناه دون تغيير

متى لم تستخدم الدالة الكلمة المحجوزة ( return ) يجب علينا استخدام الكلمة المحجوزة ( void ) لنحدد طبيعة الدالة .

هذه الأنواع من الدوال تسمى في بعض اللغات البرمجية بالطرق (methods) ولكنها في لغة MQL4 تسمى دوال functions

* استدعاء الدالة function call :

كلنا عرفنا ماهي الدالة functin ( كما اتمنى ) , حسنا كيف نقوم باستدعاء واستخدام الدالة في لغة MQL4 ؟

هناك عدة طرق بعد كتابة الدالة الخاصة بك تمكنك من استخدامها (استدعائها) في برنامجك .

افترض معي انك كتبت دالة تقوم بجمع عددين صحيحين ( integers )

هذه هي الدالة :



كود PHP:
int collect (int first_numberint second_number)  

  {                                  

       return(
first_numbersecond_number); 

  } 

انت تعرف كيف تعمل هذه الدالة , لكنك تريد استخدامها في البرنامج .

يمكنك استخدامها ( استدعائها ) هكذا :



كود PHP:
int a 10

int b 15

int sum collect(a,b); 

Print (
sum); 

في المثال السابق سيخرج البرنامج والكومبيوتر الناتج 25 ( نتيجة جمع العددين 10 , 15 ) داخل الدالة التي كتبتها. !!

هل هذا سحر ام خيال !! كيف قامت السطور السابقة باستخدام ( باستدعاء ) الدالة الخاصة بك ؟؟؟

لا حظ انك سميت الدالة الخاصة بك بالأسم collect , وقيمة الكلمة المحجوزة ( return ) بها عملية الجمع .

السطر الخيالي ( int sum = collect(a,b); ) هو من قام باستخدام الدالة ( استدعائها ) بإضافة القيمة ( collelct ) اسم الدالة الى المتغير ( sum ) وأعطى الدالة القيمتين 10 و 15 .

فعند طباعة المتغير sum ستقوم بأستداء الدالة واخراج نتيجتها .

بمعنى شامل : انك كتبت الدالة وأعطيتها اسما ما , ثم كتبت امر استخدامها بكتابة اسمها داخل الأمر فقط (وتم تعريف اسم الدالة كمتغير ) , انت هكذا اساسا استدعيت الدالة الخاصة بك .

لغة MQL4 حين ترى اسم الدالة الخاصة بك ستقوم بأخذ القيم ( 10 و 15 في المثال ) وتذهب بهم الى الدالة تبعك وتقوم بمعالجتهم حسب قيمة الكلمة المحجوزة ( return ) وتعود بالقيمة الناتجة الى السطور السابقة لتقوم بطبعها او اخراجها في المكان السابق .

هذه العملية تماما كأنك نسخت سطور الدالة داخل كلمة collect في سطور البرنامج في المثال . سهلة العملية , اليس كذلك ؟

* تداخل دالة في دالة أخرى Nesting.

يمكننا ان ندخل دالة ما بداخل دالة جديدة وذلك بمعالجة سطر استدعاء الدالة برمجيا كجملة برمجية statement ( في الحقيقة كلهم يعتبروا سطور برمجية )

لنرى مثالا يوضح ذلك :



كود PHP:
void print_collection (int first_numberint second_number)  

  {                                  

       
int sum collect(first_numbersecond_number); 

       Print(
sum); 

  } 

في المثال نحن استخدمنا دالة collect ووضعناها داخل دالة جديدة والناتج هو خلاصة الدالتين .

تفصيلا نحن وضعنا الدالة collect داخل جسد الدالة print_collect وطبعنا نتيجتهما , void في المثال معناها انه لا توجد ( return ) , هل لازلت تتذكرها ؟

** دوال لغة MQL4 الأساسية ( ()init() , deinit() , start ):

كل برنامج في لغة MQL4 سواء كان مؤشر , اكسبرت او اسكربت فهو يبدا دائما بالدالة " ()init " اختصار كلمة بدأ (initialize) وهي تعمل بمجرد وضع البرنامج ( اكسبرت او مؤشر او اسكربت) على شارت الميتاتريدر , ووظيفتها بدء عمل المتغيرات الرئيسية بالبرنامج ( سنعرف الكثير عن المتغيرات في الدرس القادم ان شاء الله )

متى انتهى عمل البرنامج بأغلاق الشارت او مسح المؤشر او الكسبرت او اغلاق الميتا تريدر تقوم الدالة " ()deinit " بعملها لأنهاء البرنامج .

الدالة الثالثة " ()start " ( اهم الدوال على الإطلاق ) تعمل بصفة دائمة كلما استقبلت معطيات وقيم جديدة في متغيراتها ( تحرك السعر يعطي قيم جديدة للهاي واللو والكلوز وقيم المؤشرات المختلفة هي قيم تتغير طوال الوقت ) , احب ان اخبرك هنا انك ستقضي 90% من حياتك البرمجية داخل هذه الدالة .

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



في الدرس القادم بأذن الله سنتكلم عن المتغيرات في لغة MQL4
اراكم على خير مجددا


__________________
كلمتان خفيفتان على اللسان ثقيلتان في الميزان
حبيبتان الى الرحمن

سبحان الله وبحمده سبحان الله العظيم




رد مع اقتباس
إضافة رد

مواقع النشر (المفضلة)

الكلمات الدلالية (Tags)
الدرس, الدوال, السادس

جديد منتدى منتدى المؤشرات والاكسبريتات



الذين يشاهدون محتوى الموضوع الآن : 1 ( الأعضاء 0 والزوار 1)
 
أدوات الموضوع
انواع عرض الموضوع

تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة
Trackbacks are متاحة
Pingbacks are متاحة
Refbacks are متاحة

الانتقال السريع

المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
الجزء السادس والاخير ادارة المخاطر لطريقتي في المتاجرة ابو جودة منتدى الاستراتيجيات 0 10-31-2009 01:48 PM
الأسهم الاوروبية تغلق على ارتفاع لليوم السادس على التوالي fxyard منتدى الاخبار اليومية 0 09-11-2009 06:11 PM
الأسهم الأوروبية ترتفع لليوم السادس مدعومة بالبنوك fxyard منتدى الاخبار اليومية 0 09-11-2009 11:15 AM
اسرار الفوركس (الجزء السادس التحليل الإخباري Fundamental analysis ) asklo قسم تعليم الفوركس 8 09-03-2009 04:51 AM
الدرس السابع .. المتغيرات asklo منتدى المؤشرات والاكسبريتات 0 03-23-2008 10:52 AM

FOREXYARD - Forex Trading Online - Currency brokers offering a forex trading system.

الساعة الآن 06:15 AM.

 
Powered by vBulletin® Version 3.8.4, Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
d3am - by kious99 : Search Engine Friendly URLs by vBSEO 3.3.0 TranZlate By Dr-Yahya slimani

جميع الحقوق محفوظة لمنتدى الفوريكس يو 2008
جميع المشاركات والمواضيع في منتدى الفوريكس يو لا تعبر بالضرورة عن رأي إدارة المنتدى بل تمثل وجهة نظر كاتبها
تصميم و تركيب بدر