Have an account? Sign in
Login  Register  Facebook
This Page is Under Construction! - If You Want To Help Please Send your CV - Advanced Web Core (BETA)
[Edit] الدوال
الدوال functions جزء أساسي من أي لغة برمجة و توجد عدد من الدوال الموجودة في بناء اللغة نفسه و دوال يقوم المستخدم بتعريفها و سنستعرض في درسنا وصف مبسط للأثنين. الدوال الموجودة مسبقا في اللغة: ربما أسهل طريقة لأن نوضح ما هي الدالة أن نستخدم مثال على دالة و لتكن دالة الـ alert.و التي هي من الدوال الموجودة في بناء الجافا سكريبت نفسه built in ووظيفتها هي أنها تظهر النص الذي تعطيه لها في صندوق كما سترى في المثال التالي :
مثال1
<html>
  
  <script type="text/javascript">
    alert("wellcome to awcore")
    
  </script>
  
</html>

Try it yourself »Click on the "Try it yourself" button to see how it works

و من الأمثلة الأخرى على الدوال الموجودة في الجافا سكريبت دالة document.write و التي تعرض النص الذي تعطيه لها في صفحة المتصفح نفسها و أيضا داوال مثل toUpperCase()و التي تحول حروف النص إلى حروف كبيرة UpperCase . ستعرف بعد ذلك معنى النقطة الموجودة في هذه الدوال في الدرس الخاص بالكائنات أي الـobjects و ستعرف أنها تسمى بإسم آخر أيضا و هو الـ method.و المثال التالي يوضح كيفية عمل هذه الدوال:
مثال 2
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Functions</title>
</head>
<body>
<script language="javascript" type="text/javascript">
var str = "hello!";
str = str.toUpperCase();
document.write(str);
</script>
</body>
</html>

Try it yourself »Click on the "Try it yourself" button to see how it works

و كما ترى يوجد بعد أي دالة قوسين قد توضع فيهم بيانات تسمى بالـ parameter و في بعض الأحيان لا توضع .و البرامتر هو دخل الدالة الذي يتحدد على أساسه قيمة الخرج فمثلا في دالة alert النص الذي أدخلناه بين القوسين كبرامتر هو النص الذي ظهر في الصندوق و كذلك مع الدالة document.write و لكن كما ترى مع دالة toUpperCase لم نضع شيئا بين القوسين فهي دالة لا تحتاج إلى دخل حيث تنفذ على النص الذي وضع قبل النقطه السابقة لها .و الخلاصة هي أن كل دالة يتبعها قوسين قد يوضع فيهم برامترز تأثر على الناتج و أحيانا توجد بعض الدوال لا تحتاج لبرامترز. و يوجد كثير جدا من الدوال الموجودة في لغة الجافا سكريبت تقوم بعديد من الوظائف و سنتعرض لكثير منها على مدار الدروس القادمه.

الدوال المعرفة بواسطة المبرمج:

الدالة يتم تكوينها من مجموعة من الأوامر المتتالية و التي تشكل بناء يكون له إسم معين تناديها به ,و كل دالة يجب أن يكون لها وظيفة محددة تقوم بها و كما قمنا بتعريف المتغير من خلال كلمة var فإن للدالة طريقة لتعريفهايتم تعريف الدالة من خلال إستخدام كلمة function ثم بعدها إسم الدالة يتبعه قوسين يتم وضع البرامترز فيهم ثم بعد ذلك قوسي مجموعة يوضع بينهم الأوامر التي تحتويها الدالة.أي وفق هذا النموزج

function functionName([parameters])
{
[statements]
}
و المثال التالي يوضح تعريف لدالة تقوم بحساب مربع رقم و منداتها قم بتفحصه وبعدها سأقوم بشرحه
تعريف الدالة
<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
function square(number)
{
var square=number * number;
document.write("The call passed ",
number, // the function's parameter
" to the function.<BR>",
number, // the function's parameter
" square is ",
square,
".<BR>")
}

// *** add function call
square(3)
</SCRIPT>
</HEAD>
<BODY>
</BODY>
</HTML>

Try it yourself »Click on the "Try it yourself" button to see how it works

و إذا ما نظرنا للمثال بالأعلى سنجد أنه بعد كلمة function و ضعنا إسم الدالة square ثم وضعنا في القوس البرامتر number ثم بعد ذلك فيما بين القوسين وضعنا الأوامر التي ستنفذ عند مناداة الدالة و هي كالتالي:

var square=number * number

يقوم بضرب البرامتر في نفسه و وضع قيمة الناتج في المتغير square و يستبدل البرامتر بالقيمة التي ترسل في موضعه عند مناداة الدالة. أما الأمر التالي :

document.write("The call passed ", number, // the function's parameter " to the function.<BR>", number, // the function's parameter " square is ", square, ".<BR>")

فهو يقوم بعرض الناتج في الصفحه. و لا تعمل الدالة فور تعريفها لكن تعمل عندما تناديها و إذا نظرت في المثال بعد تعريف الدالة ستجد الأمر square(3) وهو عبارة عن مناداة الدالة من خلال كتابة إسمها و كتابة القيمة التي تريدها أن تكون للبرامتر . وقبل أن ننتهي من تقديم الدوال أود أن أذكر شيئين:
  • الدوال يمكننا تعريفها لتقبل عدد معين من البرامترز أو جعلها لا تقبل.
  • الدوال يمكن أن ترجع لنا بيانات أو لا.
و أفضل توضيح لمعنى هذا الكلام يكون من خلال الأمثلة فالمثال السابق لدالة تحسب مربع رقم يمثل مثالا على دالة تقبل برامتر واحد, و كمثال على دالة لا تقبل أي برامترز دالة تعرض نص ثابت فيها كما بالمثال التالي
دالة لا تقبل برامترز
<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
function disp()
{
var text="This text is from function";
alert(text);
}
 disp();

</SCRIPT>
</HEAD>
<BODY>
</BODY>
</HTML>

Try it yourself »Click on the "Try it yourself" button to see how it works

و يمكن أيضا أن نصنع دالة تقبل أكثر من برامتر و كمثال على ذلك دالة تحسب حاصل ضرب تلت أرقام كما بالمثال التالي
دالة تقبل ثلاثة برامترز
 <HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
function mul(a,b,c)
{
var result=a* b*c;
document.write(a+"*"+b+"*"+c+"="+result);
}
 
// *** add function call
mul(3,2,4)
</SCRIPT>
</HEAD>
<BODY>
</BODY>
</HTML>

Try it yourself »Click on the "Try it yourself" button to see how it works

أما بالنسبة لإرجاع البيانات فكل الدوال التي عرضناها بالأمثلة السابقة لا ترجع بيانات و معنى إرجاع البينات أننا بدلا من أن ننادي على الدالة هكذا functionName() ننادي عليها هكذا data=functionName()و في المتغير الذي نضع الدالة تساويه يوضع ناتج الدالة . و إذا ما نادينا أيا من الدوال السابقة بالطريقة الثانية فإنها لن ترجع لشيء لأنها لا ترجع بيانات و لكي تجعل الدالة ترجع بيانات فأنت تستخدم الكلمة return ثم تضع بعدها المتغير الذي تريد إرجاع قيمته و يمكننا تعديل مثال إيجاد مربع رقمين لجعله بدلا من أن يعرض الناتج مباشرة ,يقوم بإرجاعه ووضعه في متغير كما بالمثال التالي :
دالة ترجع بيانات
<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
function mul(a,b,c)
{
var result=a* b*c;
return result;
}
 
// *** add function call
data=mul(3,2,4)
document.write("the result is "+data)
</SCRIPT>
</HEAD>
<BODY>
</BODY>
</HTML>

Try it yourself »Click on the "Try it yourself" button to see how it works

و من الجدير بالذكر أن الأمر return يوقف الدالة أيضا بالإضافة لإرجاع قيمة المتغير فالأوامر التي تليه لا تنفذ و لذا يجب ان يوضع في نهاية الدالة .
December 18, 2011