الشهاب الحارق
19 Feb 2002, 01:19 AM
السلام عليكم
Action Script Fundamentals part8
الجزء الثاني من الوظيفة
اليوم سيكون لنا تمرين مختلف عن استخدام الوظائف
شاهد هذا المثال وحاول معرفة النصوص البرمجية التي استخدمت به لمناداة الوظيفة عبر الزرين
width = 350 height = 150
لدي صوتين عرفتهما في المكتبة أحدهما yes والأخر no ثم استخدمت هذا النص البرمجي في الوظيفة
function ca(check) {
if(check == 1) {
stopAllSounds();
myyes = new Sound();
myyes.attachSound("yes");
myyes.start(0,9999);
}
if(check == 2) {
stopAllSounds();
myno = new Sound();
myno.attachSound("no");
myno.start(0,9999);
}
}
حاول الإجابة على هذا السؤال علماً أن الجواب موجود في قلب الوظيفة
السؤال ما شكل النصوص البرمجية التي ستكون في الزرين الذين يقومان بتشغيل الصوت ؟
الوظيفة التي ترجع قيمة تقنية جديدة في عالم الوظائف
الطريقة سهلة جداً ومفيدة .
حمل المثال (http://mypage.ayna.com/highspy/ActionScript/function/returndoublevalue.fla)
للعلم الامثلة الاخرى موجودة في الجزء الاول
هذه الوظيفة تقوم بإرجاع حاصل ضرب القيمة بــ 2
width = 550 height = 200
function doubleit(whatNum) {
return dis = whatNum*2;
}
في الزر نكتب هذا النص لمناداة الوظيفة
on(press) {
doubleit(giveit);
}
تعقيب : دائماً وأبداً تذكر أينما سمعت أن الوظيفة ترجع قيمة فإنها لا ترجعها إلا بالأمر return
وهذا الأمر يقوم بعد إرجاع القيمة بتجاهل كل النصوص البرمجية في محيط الوظيفة إذا كانت
مدرجة بعده
تذكر كذلك إذا أردت أن تعرض القيمة بعد الرجوع من العملية الرياضية في نص عرض dynamic text
ستكتب بهذه الطريقة return dis = whatNum*2; حيث dis هو نص العرض و whatNum
هو العنصر الذي سيضرب في العدد 2
الفائدة من هذا الأمر انه يعود بالقيمة متجاوزً أي نص برمجي يكون بعدة
وهو بلا شك اختياري أنشئت كتبته وان شئت تجاهلته ولكن إذا كانت
نصوصك البرمجية فيها مسائل حسابيه تتطلب قطع قراءة المترجم
flash compiler وإرجاع القيمة نستخدم هذا الأمر
حمل هذا الملف للتوضيح عن السؤال الاول (http://shihaab.topcities.com/return.fla)
ستلاحظ فيه أن الرقم لو كان أربعه سيتجاهل إظهار الرسالة
ولو حذفنا الأمر return ستظهر الرسالة
Recursive functions
الوظيفة التي تنادي نفسها هذا النوع من الوظائف شائع الاستخدام عند المبرمجين الأكفاء
وخاص منهم المحنكين في معظم اللغات البرمجية سنستخدم الآن قاعدة عالم الرياضيات factorial
width = 550 height = 400
وهي قاعدة factorial المشهورة حيث الرقم 3 يساوي 6 والسبب انه 1ضارب 2 ضارب 3 يساوي 6
والرقم 5 يساوي 120 لأنه 1ضارب 2 ضارب 3 ضارب 4 ضارب 5 تساوي 120
حيث 1 ضارب 2 يساوي 2 ثم 2 ضارب 3 تساوي 6 و 6 ضارب 4 تساوي 24 ضارب 5 = 120
الوظيفة ستكون بهذه الطريقة علما انه هنالك عدة طرق تؤدي إلى نفس الناتج لقاعدة factorial
function factorial(x) {
if(x<0) {
return undefined;
}else if(x<=1) {
return 1;
}else{
return x * factorial(x-1);
}
display = x;
}
ويكون في الزر هذا النص البرمجي لمنداة الوظيفة
on(press) {
display = factorial(send);
}
عرفنا أنها ستضرب الأرقام ابتداءً من 2 إلى الرقم
الموجود في الخانة x لنفترض أن في الخانة x الرقم 5
ستكون العملية هي 2 ضارب 3 ضارب 4 ضارب 5 يساوي 120
بعد عملية else ضع هذا الكود لترى الناتج trace(x );
سيكون ناتج الضرب هو
5
4
3
2
ألان نعلم أن المتغير x يساوي 5 طيب ثم بعد ذلك سيضرب
بالعدد الذي اقل منه كما هو حال التركيبة المكتوبة وهي
return x * factorial(x-1);
حيث المتغير في الوظيفة نفسها تساوي 4 كونها ناقص
واحد ستضرب بالمتغير بعد عملية الضرب سيكون الباقي
جاهز ليضرب بالعدد في المتغير x ولكن بناقص واحد و ألان اصبح 3
وهكذا حتى يكون الرقم يساوي 2
ستتم عملية الضرب 5 ضارب 4 كون المتغير الأول x يساوي 5
والمتغير المنادى في الوظيفة factorial(x-1 كونه ناقص 1 يساوي 4
بعد الناتج 20 سيضرب ب 3 سيكون الناتج 60 ثم يضرب 2
سيكون الناتج 120
ولو وضعنا التركيبة بهذا الشكل
x = x-1 سيكون الناتج 24 حيث سيقوم مترجم فلاش بتنقيص 1 بعد عملية
الضرب ولن يقوم بجمعها بعد كل عملية ضرب
كما هو حال أن الوظيفة تنادي نفسها
والسبب الطريقة التي كتبنا بها النصوص البرمجية
ليس المهم كيف تعمل هذه القاعدة المهم هو كيف
تستخدم التركيبة لأنه القاعدة شيء عارض أما التركيبة فهي شيء متداول
و لأنه احتياجنا كان يستلزم علينا استخدامها ولو لم يكن لما فعلنا
Function literals
الوظيفة الحرفية هذه النوعية من الوظائف تستخدم بشكل توقيتي حيث أنها تؤدي عمل ثم تموت في ساعتها
وذلك أنها ليس لها اسم ولا كيان حقيقي و إنما مجرد مهام في نفس سياق النصوص البرمجية. ولكن نستطيع
أن نجعلها ذات فائدة ولا تموت في ساعتها إذا ما تم إسنادها في متغير وتم بعد ذلك مناداتها عن طريق ذلك المتغير
وهذا النوع من الوظائف قليل الاستخدام وهو بمثابة المنقرض حقيقةً وحتى هذه الساعة ما وجدت أحد استخدامها
بشكل حقيقي إلا على سبيل الشرح فقط لا غير المهم التركيبة النصية لهذا المتغير تكون كالتالي
Function (param1,param2,…paramn) {statements};
سنرى الآن كيف نسند هذا النوع من الوظائف إلى متغير ما
mousecoords = function () {return [_xmouse, _ymouse ];};
ثم بعد ذلك ننادي هذه الوظيفة كالمعتاد mousecoords();
مراجعة على السريع
لإنشاء الوظيفة
نكتب اسم الوظيفة ثم القوسين ثم القوس المنحني وهو بداية ال block
ثم بعد ذلك نهاية ال block بالقوس المنحني المقابل
نتذكر أن العناصر تفصل بينها الفاصلة السفلية ,
نتذكر أن العناصر لابد أن تطابق المهام التي ستكلف بها لتتضح الصورة عند التعامل معها
نتذكر أن ترتيب العناصر في الزر لمناداتها يتطابق مع ترتيب العناصر
في الوظيفة فالأولى للأول .
موفقين إنشاء الله يا اخوتي ونصيحتي لكم يا أحبائي أن لا تتوقفوا عن طلب العلم آي كان
ولا ترتووا من دلونا هذا فقط بل أبحرُ في عباب الإنترنت حيث المصادر والمعلومات
وحاولوا طرح الأسئلة بشتى أنواعها ومراتبها ولا حرج عليكم في ذلك
وقد وصلنا إلى ختام الجزء الثاني من الوظائف
ولنا إنشاء الله جزء ثالث في القريب العاجل .
هذا والله أعلى واعلم
السلام عليكم
Action Script Fundamentals part8
الجزء الثاني من الوظيفة
اليوم سيكون لنا تمرين مختلف عن استخدام الوظائف
شاهد هذا المثال وحاول معرفة النصوص البرمجية التي استخدمت به لمناداة الوظيفة عبر الزرين
width = 350 height = 150
لدي صوتين عرفتهما في المكتبة أحدهما yes والأخر no ثم استخدمت هذا النص البرمجي في الوظيفة
function ca(check) {
if(check == 1) {
stopAllSounds();
myyes = new Sound();
myyes.attachSound("yes");
myyes.start(0,9999);
}
if(check == 2) {
stopAllSounds();
myno = new Sound();
myno.attachSound("no");
myno.start(0,9999);
}
}
حاول الإجابة على هذا السؤال علماً أن الجواب موجود في قلب الوظيفة
السؤال ما شكل النصوص البرمجية التي ستكون في الزرين الذين يقومان بتشغيل الصوت ؟
الوظيفة التي ترجع قيمة تقنية جديدة في عالم الوظائف
الطريقة سهلة جداً ومفيدة .
حمل المثال (http://mypage.ayna.com/highspy/ActionScript/function/returndoublevalue.fla)
للعلم الامثلة الاخرى موجودة في الجزء الاول
هذه الوظيفة تقوم بإرجاع حاصل ضرب القيمة بــ 2
width = 550 height = 200
function doubleit(whatNum) {
return dis = whatNum*2;
}
في الزر نكتب هذا النص لمناداة الوظيفة
on(press) {
doubleit(giveit);
}
تعقيب : دائماً وأبداً تذكر أينما سمعت أن الوظيفة ترجع قيمة فإنها لا ترجعها إلا بالأمر return
وهذا الأمر يقوم بعد إرجاع القيمة بتجاهل كل النصوص البرمجية في محيط الوظيفة إذا كانت
مدرجة بعده
تذكر كذلك إذا أردت أن تعرض القيمة بعد الرجوع من العملية الرياضية في نص عرض dynamic text
ستكتب بهذه الطريقة return dis = whatNum*2; حيث dis هو نص العرض و whatNum
هو العنصر الذي سيضرب في العدد 2
الفائدة من هذا الأمر انه يعود بالقيمة متجاوزً أي نص برمجي يكون بعدة
وهو بلا شك اختياري أنشئت كتبته وان شئت تجاهلته ولكن إذا كانت
نصوصك البرمجية فيها مسائل حسابيه تتطلب قطع قراءة المترجم
flash compiler وإرجاع القيمة نستخدم هذا الأمر
حمل هذا الملف للتوضيح عن السؤال الاول (http://shihaab.topcities.com/return.fla)
ستلاحظ فيه أن الرقم لو كان أربعه سيتجاهل إظهار الرسالة
ولو حذفنا الأمر return ستظهر الرسالة
Recursive functions
الوظيفة التي تنادي نفسها هذا النوع من الوظائف شائع الاستخدام عند المبرمجين الأكفاء
وخاص منهم المحنكين في معظم اللغات البرمجية سنستخدم الآن قاعدة عالم الرياضيات factorial
width = 550 height = 400
وهي قاعدة factorial المشهورة حيث الرقم 3 يساوي 6 والسبب انه 1ضارب 2 ضارب 3 يساوي 6
والرقم 5 يساوي 120 لأنه 1ضارب 2 ضارب 3 ضارب 4 ضارب 5 تساوي 120
حيث 1 ضارب 2 يساوي 2 ثم 2 ضارب 3 تساوي 6 و 6 ضارب 4 تساوي 24 ضارب 5 = 120
الوظيفة ستكون بهذه الطريقة علما انه هنالك عدة طرق تؤدي إلى نفس الناتج لقاعدة factorial
function factorial(x) {
if(x<0) {
return undefined;
}else if(x<=1) {
return 1;
}else{
return x * factorial(x-1);
}
display = x;
}
ويكون في الزر هذا النص البرمجي لمنداة الوظيفة
on(press) {
display = factorial(send);
}
عرفنا أنها ستضرب الأرقام ابتداءً من 2 إلى الرقم
الموجود في الخانة x لنفترض أن في الخانة x الرقم 5
ستكون العملية هي 2 ضارب 3 ضارب 4 ضارب 5 يساوي 120
بعد عملية else ضع هذا الكود لترى الناتج trace(x );
سيكون ناتج الضرب هو
5
4
3
2
ألان نعلم أن المتغير x يساوي 5 طيب ثم بعد ذلك سيضرب
بالعدد الذي اقل منه كما هو حال التركيبة المكتوبة وهي
return x * factorial(x-1);
حيث المتغير في الوظيفة نفسها تساوي 4 كونها ناقص
واحد ستضرب بالمتغير بعد عملية الضرب سيكون الباقي
جاهز ليضرب بالعدد في المتغير x ولكن بناقص واحد و ألان اصبح 3
وهكذا حتى يكون الرقم يساوي 2
ستتم عملية الضرب 5 ضارب 4 كون المتغير الأول x يساوي 5
والمتغير المنادى في الوظيفة factorial(x-1 كونه ناقص 1 يساوي 4
بعد الناتج 20 سيضرب ب 3 سيكون الناتج 60 ثم يضرب 2
سيكون الناتج 120
ولو وضعنا التركيبة بهذا الشكل
x = x-1 سيكون الناتج 24 حيث سيقوم مترجم فلاش بتنقيص 1 بعد عملية
الضرب ولن يقوم بجمعها بعد كل عملية ضرب
كما هو حال أن الوظيفة تنادي نفسها
والسبب الطريقة التي كتبنا بها النصوص البرمجية
ليس المهم كيف تعمل هذه القاعدة المهم هو كيف
تستخدم التركيبة لأنه القاعدة شيء عارض أما التركيبة فهي شيء متداول
و لأنه احتياجنا كان يستلزم علينا استخدامها ولو لم يكن لما فعلنا
Function literals
الوظيفة الحرفية هذه النوعية من الوظائف تستخدم بشكل توقيتي حيث أنها تؤدي عمل ثم تموت في ساعتها
وذلك أنها ليس لها اسم ولا كيان حقيقي و إنما مجرد مهام في نفس سياق النصوص البرمجية. ولكن نستطيع
أن نجعلها ذات فائدة ولا تموت في ساعتها إذا ما تم إسنادها في متغير وتم بعد ذلك مناداتها عن طريق ذلك المتغير
وهذا النوع من الوظائف قليل الاستخدام وهو بمثابة المنقرض حقيقةً وحتى هذه الساعة ما وجدت أحد استخدامها
بشكل حقيقي إلا على سبيل الشرح فقط لا غير المهم التركيبة النصية لهذا المتغير تكون كالتالي
Function (param1,param2,…paramn) {statements};
سنرى الآن كيف نسند هذا النوع من الوظائف إلى متغير ما
mousecoords = function () {return [_xmouse, _ymouse ];};
ثم بعد ذلك ننادي هذه الوظيفة كالمعتاد mousecoords();
مراجعة على السريع
لإنشاء الوظيفة
نكتب اسم الوظيفة ثم القوسين ثم القوس المنحني وهو بداية ال block
ثم بعد ذلك نهاية ال block بالقوس المنحني المقابل
نتذكر أن العناصر تفصل بينها الفاصلة السفلية ,
نتذكر أن العناصر لابد أن تطابق المهام التي ستكلف بها لتتضح الصورة عند التعامل معها
نتذكر أن ترتيب العناصر في الزر لمناداتها يتطابق مع ترتيب العناصر
في الوظيفة فالأولى للأول .
موفقين إنشاء الله يا اخوتي ونصيحتي لكم يا أحبائي أن لا تتوقفوا عن طلب العلم آي كان
ولا ترتووا من دلونا هذا فقط بل أبحرُ في عباب الإنترنت حيث المصادر والمعلومات
وحاولوا طرح الأسئلة بشتى أنواعها ومراتبها ولا حرج عليكم في ذلك
وقد وصلنا إلى ختام الجزء الثاني من الوظائف
ولنا إنشاء الله جزء ثالث في القريب العاجل .
هذا والله أعلى واعلم
السلام عليكم