الأربعاء، 4 يناير 2012

تعلم لغة البرمجة Go بالعربي ( الدرس الرابع )

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

الدوال (Functions) :


الدالة (Function) هي مجموعة من الأوامر البرمجية تنفذ بشكل متتالي , و حتى الأن أحتوت برامجنا على الدالة (main) .

من فوائد الدوال تسهيل قراءة البرامج و توفير الوقت اللازم لكتابة النصوص البرمجية المتكررة , و سنبدأ الدرس الرابع بهذا المثالة عن الدالة "hello" :



package main

import "fmt"

func hello(){

fmt.Println("hello,World")

}

func main() {

hello()

}



و هذا الشكل العام لتصريح عن وظيفة  برمجية كالتالي :

/*1    2        3        4           5      */

 func funcname(int) (r,s int) { return 0,0}


1 . func : الكلمة المفتاحية func يجب أن تكون في بداية التعريف عن وظيفة برمجية جديدة .
2 . funcname : أسم الوظيفة البرمجية .
3. (q int) : القيمة التي سيتم تنفيذ سلسة الأوامر و نوعها , تستطيع أن تعرف أكثر من متغير من أكثر من نوع مختلف , كما يمكنك كتابة دالة بدون أي قيمة .
4. (r,s int) : القيم التي يتم أرجاعها من الدالة بأستخدام الجملة return , و تستطيع تجاهل تسمية المتغيرات و تعريف الأنواع فقط .
5 . الكلمة البرمجية return و القيم التي يتم تخزينها في المتغيرات المعرفة في بداية الدالة ( في الخطوة 4 ) .



في النص البرمجي السابق قمنا بالتصريح عن الدالة "hello" :

func hello(){

fmt.Println("Hello,World")

}


و لأستدعاء الدالة فقط قمنا بكتابة أسم الدالة متبوعاً بالقوسين , سوف نقوم بتعديل هذا الدالة لكي تمرير قيمة مختلفة للنص المطبوع في كل مرة يتم أستدعاء الدالة :


func hello(str1 string){

fmt.Println(str1)

}


تراه أننا قمنا بتصريح المتغير str1 من نوع string في القوسين التابعين لسطر الخاص بتعريف أسم الدالة :

func hello(str1 string){


 حيث سيمكننا ذلك من تمرير البيانات إلى الدالة , كما في المثال :

package main

import "fmt"

func hello(str1 string){

fmt.Println(str1)

}

func main() {

hello("Hello")

}



و الأن إلى مثال أخر عن دالة تعيد مجموع عددين بأستخدام الكلمة المفتاحية "return" :

package main

import "fmt"

func add(a int , b int ) int {

return a+b

}

func main(){

var c,d int = 12 23

fmt.Println(add(c,d))

}


تراه أننا في السطر الذي صرحنا فيه عن الدالة و المتغيرات الخاصة بها ألحقنا بالنوع int :

func add(a int , b int ) int 


لدلالة على النوع الذي سوف تعيده الدالة , و في السطر المحتوي على الكلمة المفتاحية ألحقناه بالكلمة "return" ثم بالتعبير الرياضي "a+b" الذي سيعيد مجموع القيمتين :


return a+b


كما تتميز لغة GO بأمكانية أعادة أكثر من قيمة من الدالة كالمثال التالي الذي يقوم بتبديل أماكن القيم النصية "Swap" :

func swap(a,b string)(string,string){

return b,a

}


و هذا مثال على أستخدام هذه الدالة :
package main

import "fmt"

func swap(a,b string)(string,string){

return b,a

}

func main(){

a,b := "Hello" , "World"
d,c :swap(a,b)
fmt.Println(d,c)


}

و في المثال الأخير سوف نأخذ دالة من موقع GO Tour  , تلاحظ أننا عند كتابة الكلمة البرمجية return لم نحدد القيم المسترجعة من الدالة  , و ذلك لأننا قمنا بأستخدام القيم المعرفة في بداية الدالة x , y لحفظ نتيجة العملية الحسابية فلا داعي لكتابة القيم مرة أخرى  :

package main



import "fmt"



func split(sum int) (x, y int) {

    x = sum * 4/9

    y = sum - x

    return

}



func main() {

    fmt.Println(split(17))

}

و هذا نهاية  الدرس الرابع , و أذا كان لديك أي أضافة أو تصحيح فلا تتردد شاركنا .

ليست هناك تعليقات:

إرسال تعليق