Forex Dərsləri 8 : MQL4 Funksiyalar
Funksiyalar , dəfələrlə istifadə oluna bilən proqram bloklarıdır. Bu proqram bloklarına xüsusi adlar verilərək onları proqramın istənilən yerində və istənilən qədər çağırıb icra etmək mümkündür. Biz indiyə qədər yazdığımız kodlarda MQL4 dilinin bəzi funksiyalarından istifadə etmişdik. Hər bir bir funksiya müəyyən əməliyyatlar ardıcılığından ibarət olub konkret bir tapşırığı yerinə yetirir. Buna misal olaraq ekranın sol üst tərəfinə yazı yazdıran Comment() və Ekrana xəbərdarlıq pəncərəsini gətirən Alert() funksiyalarından istifadə etmişdik. Əgər hazır funksiyalar bizə kifayət etmədikdə biz özümüz öz funksiyalarımızı yazıb istifadə edirik.
Funsiyalardan istifadə etməklə böyük proqramları kiçik hissələrə bölüb işimizi daha da asanlaşdıra bilərik.
Proqramda funksiyadan istifadə etmək üçün biz əvvəlcə funksiyanı elan etməliyik. Daha sonra isə, funksiyanın proqram kodunu tərtib etməliyik.
Funksiyanın elanı
MQL4 dilində funksiya aşağıdakı kimi elan olunur:
Nəticənin_tipi funksiyanın_adı ( tip1 argument1, tip2 argument2, ...);
Burada nəticənin_tipi funksiyanın qaytaracağı nəticənin tipini göstərir. Əgər funksiya heç bir nəticə qaytarmırsa, onda nəticənin_tipi olaraq void yazırıq.
funksiyanın_adı olaraq ingilis əlifbasının hərflərindən, rəqəmlərdən, _ simvolundan istifadə edə bilərik. Funksiya adı mütləq ingilis əlifbası hərfi ilə başlamalıdır və operator adları ilə üst-üstə düşməməlidir. Funksiyanın adından sonra mötərizə daxilində funksiyanın qəbul edəcəyi arqumentlərin siyahısı verilir. Arqumentlər bir-birindən vergüllə ayrılır. Arqumentlərin əsas tipi önəmlidir. Funksiyanın elanında arqumentlərə verilən adlar heç bir əhəmiyyət daşımır və onlar buraxıla bilər.
Aşağıdakı kimi:
Nəticənin_tipi funksiyanın_adı (tip1, tip2, ...);
Nümunə:
int cem (int x, int y);
Burada biz int tipli nəticə qaytaran və int tipli iki arqument qəbul edən cem funksiyası elan elədik. Biz bunu aşağıdakı kimi də yaza bilərik, harada ki, arqumentlərin adları göstərilmir.
int cem (int, int );
Funksiyanın mətn kodunun tərtibi
Funksiyanı elan etməklə biz kompilyatora funksiya (ad, tip, arqumentlər) barəsində məlumat veririk.Funksiyanın mətn kodunu tərtib etməklə biz onun görəcəyi işi proqramlaşdırmış oluruq. Bunun üçün aşağıdakı qaydadan istifadə edirik:
Nəticənin_tipi funksiyanın_ad (tip1 arg1, tip2 arg2)
{
proqram kodu
return nəticə;
}
Burada ilk sətir funksiyanın elanı sətridir. Fərq yalnız odur ki, mötərizədən sonra ; deyil { simvolu gəlir. { simvolu funksiyanın proqram kodu blokunun başlanğıcını bildirir. { simvolundan sonra funksiyanın proqram kodu yerləşdirilir. Burada biz adi halda olduğu kimi, istənilən proqram kodu yerləşdirə bilərik və hətta digər funksiyalara müraciət də edə bilərik. Bundan əlavə, biz funksiyanın öz kodu daxilində onun özünə müraciət də edə bilərik. Buna proqramlaşdırmada rekursiya deyirlər.
Gəlin, yuxarıda elan etdiyimiz cem funksiyasının proqram kodunu tərtib edək:
int cem (int x, int y)
{
int z;
z = x + y;
return z;
}
Burada funksiyanın daxilində int tipli z dəyişəni elan etdik. Daha sonra, z dəyişəninə funksiyanın arqumentlərinin (x və y) cəmini mənimsətdik və alınmış qiyməti nəticə olaraq qaytardıq.
Return əmri, funksiyadan geri qayıtma
Proqramda hər- hansı funksiyaya müraciət aşağıdakı şəkildəki kimi baş verir:
Proqram kodu icra olunur və hansısa yerdə funksiyaya müraciət olunur. Bu zaman proqramın hal-hazırda icra olunan instruksiyasının ünvanı yadda saxlanılır və icraolunma çağırılan funksiyanın kodu yerləşən hissəyə ötürülür. Funksiya öz işini yekunlaşdırdıqdan sonra isə, icraolunma yenidən proqramın funksiya çağırılan yerinə qaytarılır (həmin yerin ünvanı yaddaşa yerləşdirilmişdi).
Funksiyanı çağırmaq üçün biz onun adından istifadə edirik (aşağıdakı proqram nümunəsinə bax). Bəs icraolunma funksiyadan onu çağıran kod hissəsinə geri necə ötürülür? Funksiyanı çağırmaq və ondan geri qayıtmaq üçün prosessorun call və ret assembler instruksiyalarından istifadə olunur, lakin mən bu məsələdə çox dərinə getmək istəmirəm. Sadəcə olaraq, onu bilməyimiz kifayətdir ki, funksiyanın daxilində istənilən yerdən geri qaytarmaq istəyiriksə (funksiyadan çıxmaq) return operatorundan istifadə edirik.
Funksiya daxilində return operatoru icra olunan yerdən sonra gələn hissələr yerinə yetirilmir. Biz dedik ki, funksiyanın tipi ya hər hansı tip, ya da void ola bilər (funksiya heç bir nəticə qaytarmır). Əgər funksiya icra olunduqdan sonra hər hansı nəticə qaytarmalıdırsa, bu da return operatoru vastəsilə həyata keçirilir. Bu zaman funksiyanın qaytaracağı məlumatı return operatoruna arqument kimi vermək lazımdır.
Aşağıdakı kimi:
return netice;
Funksiyalardan istifadə
Biz funksiyaların elanı, mətn kodunun tərtibi və funksiyadan qayıtmanın qaydalarını öyrəndik. İndi isə, gəlin, funksiyalardan istifadə olunan proqram nümunələri ilə tanış olaq.
Proqram nümunəsi:
Funksiyadan istifadə etməklə, iki ədədin cəmini hesablayan proqram:
Proqramın Nəticəsi :
Baxdığımız proqramda əvvəlcə cem funksiyasını yazırıq daha sonra isə Onİnit() funksiyası daxilində yazdığımız funksiyanı çağırırıq. Və nəticəni Comment funksiyası vastəsilə ekrana yazdırırıq.
Qeyd : Buradakı yazıların bəzi hissəsi ilkaddimlar.com saytından götürülmüşdür.
Yorumlar
Yorum Gönder