الثلاثاء، 9 سبتمبر 2014

تعلم AS3 -جزء1- الدرس 6 [الدوال]



السلام عليكم و رحمة الله و بركاته
مرحبا بكم في هذا الدرس الجديد من سلسلة دروس تعلم الاكشن سكربت 3 و سنتحدث في هذا الدرس عن الدوال
Functions

  
الدروس السابقة :





سنتحدث في هذا الدرس عن الدوال و التي نجدها في كل لغات البرمجة
الدوال تمكننا من كتابة برامج مصغرة نقوم باستدعائها عند الحاجة

سوف نفهم جيدا معنى الدوال و طريقة كتابتها و الهدف منها 
سنقدم بعد الامثلة و التمارين أيضا

_______________________________________________________________________

مفاهيم أساسية:

الدالة هي مجموعة أسطر من الاكواد يتم تجميعها في وحدة معينة
بعد كتابة الدالة يكفي ان نستدعيها فقط لكي تنفذ ما فيها

مكونات الدالة:

تتكون الدالة  من ثلاث أشياء أساسية و هي
المداخل (Input): و هي مجموعات متغيرات تدعى parameters (و بامكاننا عدم أي واحدة)  نقوم بالعمل بها داخل الدالة للقيام بمهمة معين
العمليات او الحسابات : و هي الاكواد التي يتم تنفيذها و هي مكتوبة في قلب الدالة
نوع الدالة : و هو نوع النتيجة او المخرج الذي يجب ان يرجعه لنا الدالة بعد نهاية التنفيد
المخرج (output):  و هي القيمة النهائية التي ستحتويها الدالة 

تمام مثلما كنا نرى في المدرسة
مثلا في الرياضيات
f(x) = x²;
هذه الدالة مربع
المدخل هو x و المخرج (او النتيجة) هو مربع المدخل


______________________________________________________________________



طريقة كتابة دالة في الاكشن سكربت 3 (Syntax): 
f unction   name_of_function(parameters):type
{
        //codes
       return  OUTPUT;
}

حيث
   function:  كلمة دلالية تكبت قبل انشاء دالة

name_of_function: و هو اسم الدالة و يكون اختياري
 من الافضل ان يكون حسب وظيفة الدالة و يمنع ان يكون كلمة دلالة و يجب أن يبدأ بحرف و ليس برقم او شئ اخر

parameters: و هو المدخل, يمكن ان يكون 0 (اي بدون مدخل) , أو مجموعة مداخل

type: و هو نوع المخرج الذي تعطينا الدالة

return:  كلمة دلالية تعني أرجع القيمة التي تكتب بعدها 
سيتم الخروج من الدالة مباشرة بعد تنفيذ هذا الامر
أي كود يكون مكتوب تحت return لن ينفذ  طبعا


    سأعطي مثال الدالة مربع التي ذكرناها سابقا و نقوم باستدعاها
ستكتب بهذا الشكل


f unction power2( x:int ) :int
{
     var result:int = x*x;
    return result;
}

var myNumber:int= 10;
var myResult:int;

myResult = power2(myNumber); // استدعاء الدالة
trace(myResult);
//يكتب 100

و هذا يعني ان المتغيرmyResult أخذ القيمة التي خرجت بها الدالة power2 
قم بتجريب  هذا الكود معطيا قيما أخرى للمتغير myNumber
  
______________________________________________________________________


و اذا  اردت  كتابة دالة لا ترجع لنا أي قيمة ؟؟ مثلا دالة تطبع لنا hello as3arabic

و هنا سنتكلم عن الدوال  من نوع void أي انها لا ترجع أي قيمة 
هناك من يسميها بالاجراءات بدل الدوال 
اذن الدالة هي التي ترجع لنا قيمة كما سبق و ان رأينا سابقا مع الدالة مربع 
الاجراء له نفس عمل الدالة لكن يقوم بتنقيذ  امر ما ثم يخرج مباشرة دون ارجاع أي قيمة 

مثال

___________1___________

 function salutation():void
}
    trace("Hello as3arabic");
{

salutation();
 ستكتب لنا hello as3arabic//


كما نرى فالدالة salutation لا تحتوي على parameters بما اننا لا نحتاجها
و هي لا تملك return فنحن لا نحتاج ان ترجع لنا اي قيمة 

 ____________2___________

function  alert(txt: String):void
{
     trace("Alert: "+txt);
}

alert("Attention virus!");
 ستكتب !Alert: Attention virus //

______________________________________________________________________


المتغيرات المحلية Local variables:

و نقصد بها المتغيرات التي يتم انشائها داخل الدالة (لا نتلكم على ال parameters) 
 فهي متغيرات يتم حذفها مباشرة بعد الخروج من الدالة
يتم انشائها عند الحاجة طبعا

مثلا

function Exemple():void
{
      var  Name:String = "Chafik";
      trace(Name);
}

Exemple();
trace(Name);

  قمنا بانشاء الدالة Exemple و داخلها قمنا بانشاء متغير Name ثم استدعينا الدالة
و قمنا بطباعة المتغير Name
الا أن هذا يتسبب بحدوث خطأ لأن المترجم لم يجد المتغير Name لانه يتم حذفه بعد الخروج من الدالة

____________________________________________________________________


parameters اختيارية (Optional) :

لما نقوم بانشاء دالة ما 
ثم  نقوم باستدعائها
علينا باحترام مكان تواجد ال parameters أي ترتيبهم و  عددهم 
فاذا جربنا هذا الكود

function test(p1:int):void
{
    trace(p1);
}
test();

قمنا بانشاء الدالة test  ذات مدخل واحد و هو p1
لكن  عند استدعائها لم نضع أي مدخل
و هذا سيشكل رسالة خطـأ 
اذن p1 هو  مدخل اجباري

_______________________

أحيانا نريد ان نضع مداخل اختيارية اذا قمنا باستدعاء الدالة دون وضعهم ستشتغل بقيمة ابتدائية من اختيارينا
مثلا
اريد ان استدعي دالة تكتب لي
"Hello Chafik"  اذا اعطيتها اسمي كمدخل
و في حالة لم اعطيها اسمي تكتبلي
"Hello as3arabic"

اليكم الطريقة


f unction salutation(msg:String= "as3arabic"):void
{
   trace("Hello "+msg);
}

salutation("Chafik");  
salutation();


الاولى ستظهر Chafik أما الثانية فستظهر القيمة الابتدائية و هي as3arabic
 اذن msg هومدخل اختياري 


ملاحظة مهمة :يجب دائما وضع المداخل الاجبارية قبل الاختيارية
مثلا
function exemple(p1:int, p2:int , p3:int = 1, p5:int = 5)

___________________________________________________________________


تمارين

 1.
أكتب دالة لمقارنة عددين و ترجع لنا العدد الاكبر
2.
اكتب  دالة ترجع لنا أصغر قيمة موجودة داخل جدول

 3.
اكتب دالة لحساب القاسم المشترك الاكبر لعددين PGCD
____________________________________________
الى هنا نصل الى نهاية  الجزء الاول من هذه الدورة التي رأينا فيها أساسيات البرمجة في الاكشن سكربت 3
فهم الاساسيات مهم جدا قبل البدأ في الجزء الثاني عن قريب ان شاء الله
أي سؤال يطرح سأحاول الاجابة عليه
الجزء الثاني



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

إرسال تعليق


جميع الحقوق محفوظة لمدونة 2014-2015 as3arabic |