- محب منبجالمدير العام
عدد الرسائل : 72
تاريخ التسجيل : 02/05/2009
تعلیم الجافا سكربت 1
الخميس فبراير 14, 2013 2:30 am
تعلیم الجافا سكربت
JAVASCRIPT LERNNING
إعداد :
م . سامي الربایعة
By :
Eng . SAMI AL-RABA’AH
Email :
e_book@myway.com
المملكة الأردنیة الهاشمیة
جمیع الحقوق محفوظة
Feb 2004
الفهرس
مقدمة عامة
الجزء الأول طرق كتابة كود الجافا سكربت وبعض أوامرها ١
٨ ( switch ) & ( if condition ) الجزء الثاني جمل الشرط
١٧ ( for & While & Do while ) الجزء الثالث حلقات التكرار
٢٩ ( function ) الجزء الرابع الدوال
٣٦ ( Arrays ) الجزء الخامس المصفوفات
٤٥ ( Object (Math & Date & String ) ) الجزء السادس الكائنات
الجزء السابع معلومات تطبیقیة ( جزء عملي مهم جدا و یشمل على أمور متنوعة ) ٥٨
- مقدمة عامه عن لغة الجافا سكربت :
: JAVASCRIPT
الجافا سكربت هي لغة برمجه اذا جاز التعبیر تلعب دور حیوي وفعال في صفحات الویب من خلال القیام
بوظائف قد تكون خارجیة او داخلیة بل لنكن اكثر دقة هي مرنه الى درجه تجعلك تتحكم بكل جزء من اجزاء
اي النماذج او كنوافذ تخرج للمستخدم لتخبره بامر معین او تنبه forms صفحة الویب كأن تستخدمها في ال
وغیرها من الاستخدامات التي اراها من وجهة نظري هي الروح التي یبثها مطور الویب في صفحاته اثناء
برمجته .
لتضفي الحیوية الى Netscape اما من این جاءت لغة الجافا سكربت فهي جاءت من خلال اهتمام شركة
?ي الاساس والام في لغة الجافا بشكل عام فما Sun صفحات الويب ولا يفوت على بال احد ان شركة
بالك بالجافا سكربت فلغة جافا سكربت ?ي لغة بسیطه نوعا ما وس?له التبويب والتحكم بل يستطیع
البرمجه ب?ا من لم يتعلم اي لغة في حیاته و?ذا ما ركزت به في كتابي ?ذا بان اجعل المتدرب يبدأ من
الصفر فلیس ?دفي ف?م لغة الجافا سكربت فقط فحسب بل التكنیك البرمجي بإختلافاته فالمبدأ واحد
او غیر?ا موجوده في جمیع لغات if condition مثلا او ال for loop على اختلاف شیفرة الكود فال
البرمجه ول?ذا اعتبر كتابي ?ذا باب لدخول منه الى ف?م اللغات القادمه التي سوف اطرح ب?ا كتب بإذن
الله وكذلك الى لغات البرمجه الموجود كتبا عن?ا في الاسواق او النت ف?ذا الكتاب بدايتك لف?م بقیة
اللغات بكل س?وله او على الاقل بیسر ودون عناء اذا لیس كل اللغات لیكن بعض?ا واذا لیس بعض?ا اذا
على الاقل جزء من كل لغة ...
عزيزي المتدرب لغة الجافا سكربت بإعتقادي الخاص كمطور ويب م?مة نوعا ما فانت عندما تصمم في
انت تصمم واج?ة ولكن?ا خالیة من الحركة بل انك لا تستطیع ان تغیر شيء من?ا إلا بالتغیر الكود HTML
نفسه ولكن تخیل مثلا انك تريد ان تظ?ر بنر اعلاني يتغیر كل وقت معین من غیر ان تلمسه بیدك اي من
غیر ان تغیر الكود بل ?و من نفسه يجلب بنر الاعلان الاول ثم بعد دقیقة مثلا يغیره الى بنر اعلان ثاني
و?كذا او تصور انك تريد ان تضع في رأس صفحتك التاريخ والوقت او كأن تريد ان يظ?ر اسم زائرك في
صفحتك لكي تشده ل?ا وغیر?ا من الافكار فالجافا سكربت تفعل لك كل ?ذا وبكل بساطه وس?ولة ..
اما في البرامج او الاكواد التي سوف نتعلم كتابت?ا ?ي مجموعة من الأوامر التي تكتب مجتمعة أو
متفرقة لیعمل البرنامج بصورتة الرئیسیه ولنقل ?ي الاساس او البنیة التحتیة لبرنامجنا ولا تقلق
المتوفر في كل ج?از وإنني افضل ان NOTEBAD تستطیع ان تكتب برامجك او اكوادك من خلال برنامج ال
تجد محرر للجافا سكربت في الانترنت و?ذا افضل لكي تعرف موقع الخطأ مباشرة من غیر عناء .
وفي ن?اية المقدمه ?ذي اريد التنبیه الى شيء اراه كثیرا في الانترنت و?و يوجد فرق كبیر عندما نقول
فالاختلاف كبیر بین?م وإن كان المسمى يوحي بغیر ذلك وايضا يوجد JAVASCRIPT او كود JAVA ?ذا كود
JAVA SCRIPT اوامر واكواد ال DHTM والجافا سكربت وإن كنا نستخدم في DHTML فرق بسیط بین ال
بل يكون الاعتماد الكبیر علی?ا ولكن ?ذي عزيز المتدرب لغة اذا جاز تسمیت?ا ثانیه ول?ا تطبیقات?ا الحركیة
والتأثیرية الخاصه وإني ارى اكثر المواقع تعرض للمستخدمین اكواد جا?زه للتحمیل او النسخ وتكتب
اي الداينمك ولیس الجافا DHTML وإني ارى كثیرا من?ا تسمیته الصحیحه JAVASCRIPT عن?ا ان?ا
وال JAVASCRIPT سكربت وانا اقول كثیرا من?ا ولیس جمیع?ا .. ونحن ?نا لسنا في محض المقارنه ال
بعیدة كل البعد JAVA فلكلا من?ا اكواده الخاصه واسلوبه وتكنیكه ويجب ?نا التبیه ان ال DHTML و JAVA
مع ال DHTML و ال JAVA القريبة جدا فلا اقارن بین ال DHTML على عكس ال JAVASCRIPT عن ال
JAVA قريبة جدا او تصب في مصب نفسه ولكن ال DHTML وكانني اساوي?م ببعض فال JAVASCRIPT
بعیدة كل البعد بل لا يوجد مقارنه ول?ا اعمال?ا واكواد?ا الخاصه وعمل?ا الخاص .
ارغب التبیه ل?ا ولكي لا اذكر?ا في JAVASCRIPT ويوجد بعض الملاحظات الم?مه قبل البدء بتعلم
متصف الكتاب وتتشتت افكارك .
قمت في هذا الكتاب بالتدرج على اسلوبي الخاصفي تعلیم المتدرب هذه اللغة وهذا اجتهاد مني لهدفین هو شد
المتدرب على الاستمرار في التعلم واخذ الفائده التي یرجوها من اول صفحة یقرأها ولهذا كان لي اجتهادي
الخاص في التدرج في صب المعلومه وقد استخدمت عبارة اذا جاز التعبیر كثیرا وهنا اكون قد تجاوزت في
عبارة معینه في موصفها عن وصفها البرمجي البحث وهذا لغرضإیصال المعلومه وهذا الذي یهمني كثیرا..
لذلك استخدم هذه العبارة في اماكن معینه .
وسوف اكتب لك مقدمة عنها هنا لكي تكون على Object سوف نتطرق في نهایة الكتاب الى الكائنات اي ال
كائن یحتوي علي خواص ، ومنه طرق تتیح لك استخدام تلك الخواص .Object. علم بها وما هیتها . ال
علي بیانات محددة ومعینه مما یعطي قوة كبیرة نوعا ما للجافا سكربت بل هي قائمه على ذلك وما ینعكس
من بساطة تصمیم برامجها وسهولة وسلاسة تطویرها يشار أحیانا للغات JAVASCRIPT علیها اي ال
مثل الجافا و OOP التي تتیح استخدام الكائنات بكامل خصائصها علي إنها لغات برمجة موجها للكائنات
السي ++ الى غیرها من لغات البرمجه ولا ارید ان اخوض بتاریخها وادخل بك الى صفحات عده وأرهقك
في القراءة وانت لم تبدأ بعد ولكن انصحك بالقراءة عنها في الانترنت فكل شيء یعتبر مرجع مفید لك حتى
لو كانت معلومة واحده .
الكلمات المحجوزة وسوف اذكرها لك فكما في جمیع اللغات یوجد هناك كلمات محجوزة اي
وسمیت كذلك لكي لا تستخدم إلا بمواقع خاصه في كود اللغة ولیس كمسمیات تستخدمها . Keywords
وهي كلمات خاصه تقوم بعملیات ووظائف معینه على متغیرات اسندت او مررت لها اذا جاز التعبیر
لذلك مثلا لا یجوز استخدام ایا منها في اسم دالة على سبیل المثال او غیرها بل ابتعد في تمساتك الخاصه
عن هذه الكلمات المحجوزة اذا ما هي الكلمات الحجوزة في الجافا سكربت ؟ هي :
breake case continue delete do
else false for function if
in new null return switch
this true typeof var voide
while with
لا تنزعج من عدم فهمك بعض الملاحظات فهذا امر طبیعي ولكنني اذكرها فقط لك لتعلم بها وفي اثناء قراءتك
الكتاب سوف تعرف ما قصدته في هذه الملاحظات .
اعذروني اذا تجاوزت في شرحي في بعض العبارات في اثناء شرحي في الكتاب فهدفي هو إیصال المعلومه
ولیس عرض العضلات البرمجیه والمصطلحات المعقده وخصوصا انني لست من الناس الذین یفضلون
التعریب في مواقع معینه وذلك لان عند تعریب مصطلحات معینه تفقد معناها الصحیح مع اعتزازنا في لغتنا
العربیة اللغة الأم لذلك كنت اعربها احیاننا لیس حرفیا بل حسب ما یمكن ان تصلك المعلومه وهذا ما یهمني
فكثیرا ما نقرأ كتب رائعه تحمل مصطلحات عده وزخم برمجي اصطلاحي وفلسفي ولكن ماذا نخرج بالاخر لا
شيء وما اكثر الكتب في ذلك لذلك اذا البساطه خیر سبیل وإن كان هناك من یعترضعلیها .
لم اضع لهذا الكتاب فهرس مفصل لان من وجهة نظري ان الكتب التي اصدرها هي بمثابة دورات تدریبیة
تعتمد اسلوب المخاطبه والاتصال بالمتدرب والتدرج به حسب تفكیره والإجابة على كل ما یجول في خاطره
قد یكون هناك احد له وجهة نظر اخرى ولكن لكلا منا اسلوبه الخاص به كما انني اعتمدت على جعل بعض
في وسم ال dir = rtl الأمثلة التي تحتوي على ارقام تبدأ من الیسار الى الیمین تستطیع قلب ذلك بوضع
ببدایة الصفحة . html
مباشرة فقد لا ینفذ معك Notepad ملاحظة مهمة : ارجو عدم نسخ الكود في الكتاب ووضعه في ال
وذلك لانني احیاننا اترك فراغا بین فاصله او نقطه او كلمة او قوس او ما شابه ذلك وهذا بسبب انني اكتب
فلا یبدو الفراغ واضح فأضطر الى جعله فراغین او اكثر لكي تراه انت انه word الكود في برنامج ال
فراغ واحد ومن هنا كل البرامج الموجوده التي كتبت في الكتاب مرفقه مع الكتاب كصفحات انترنت تستطیع
استخدامها بدلا من النسخ مباشرة واللصق .
١
طرق كتابة كود الجافا سكربت ..
١- الطریقة الأولى :
٢- الطریقة الثانیة :
او بأي محرر اخر ( notepad ) یجدربنا المعرفة هنا ان كود الجافا سكربت تستطیع كتابته ببرنامج
مختص بكتابة كود الجافا سكربت .
موضع كود الجافا سكربت ..
اي بین وسمي رأس الصفحة : ( html ) یكتب عادة كود الجافا سكربت في رأس صفحة
( <head> ----------- </head> )
ملاحظة :
قد یضع البعض كود الجافا سكربت في ذیل الصفحة او في جسمها وهذا وارد الحدوث ..
تمثیله :
تعریق مبدأي ببعض اوامر الجافا سكربت ..
١- أمر الطباعة :
... ( html ) الطریقة الأولى : طباعة جملة لا یقع علیها تأثیر اي وسم من وسوم ال
<script type = " text/javascript">
-
-
-
هنا یكتب كود الجافا سكربت
-
-
</script>
<script language="JavaScript">
-
-
-
هنا یكتب كود الجافا سكربت
-
-
</script>
<html>
<head><title> الجافا سكربت </title>
<script type = " text/javascript">
-
یكتب هنا الكود المرغوب به
-
</script>
</head>
<body></body>
</html>
document.write(" ;(" هنا الجملة المراد طباعتها
٢
... ( html ) الطریقة الثانیة : طباعة جملة یقع علیها تأثیر وسم ال
... ( style ) و ال ( htm ) الطریقة الثالثة : طباعة جملة یقع علیها تأثیر وسم ال
الطریقة الرابعة : طباعة قیمة متغیر ...
الطریقة الخامسة : طباعة قیمة متغیر یسبقه جملة نصیة ..
الطریقة السادسة : طباعة قیمة متغیر یسبقه ویعقبه جملة نصیة ..
ملاحظات مهمة :
اي جملة نصیة ترید ان تضعها بداخل كود الطباعة یجب ان تحصرها بین ( " ) حتى لو احتوت على وسم o
(html) ال
طباعة قیمة متغیر .... ویوجد لها اكثر من حالة : o
١- اذا كنت ترید فقط ان تطبع قیمة المتغیر بمفرده ... تضعه بداخل أمر الطباعة من غیر ان تحصره ب ( " ).
٢- اذا كنت ترید طباعة قیمة متغیر تسبقه جملة نصیة یجب ان تحصر الجملة النصیة بین ( " ) ومن ثم تذكر
المتغیر المراد طباعة قیمته ولكن یجب ان تضع قبله ( + " ) ولتوضیح اكثر تضع اشارة ( + ) بالجهة التي
بها النص....
مثلا ... جاء النصقبل المتغیر نضع اشارة ال ( + ) قبل المتغیر
مثلا ... جاء النص بعد المتغیر نضع اشارة ال ( + ) بعد المتغیر
مثلا ... جاء النص بعد المتغیر وقبله نضع اشارة ال ( + ) بعد المتغیر وقبله ..
document.write("<h هنا الجملة المراد طباعتها < 1 </h1>");
document.write("<h1 style=\"color : red\"> هنا الجملة المراد طباعتها </h1>");
document.write( sum );
document.write(": الناتج هو " + sum );
document.write(": الناتج هو " + sum + " ;(" للعملیة
document.write(" : الناتج هو " + sum );
document.write( sum +" : ;( " الناتج هو
document.write(": الناتج هو " + sum + " ;(" للعملیة
٣
یعني بإختصار ضع اشارة ( + ) بجانب المتغیر المراد طباعته من الجهة التي بها الجملة النصیة واذا لم یكن
هناك جملة نصیة اذا لا تضع اشارة ( + )
سوف نذكر ما هو المتغیر وما نقصد به لاحقا فلا تقلق فما علیك سوى معرفة طباعته اما ما هو ولأي غرض
یستخدم سوف تعرف لاحقا ..
فبكتابة الأول یترك (document.write) بدلا من (document.writeln) تستطیع ان تستخدم o
مسافة بین كل كلمة في جملة الطباعة اذا "جاز التعبیر" بشكل عملي ..
قبل الجملة (<br />) لطباعة جملة في سطرین اي " النزول الى سطر جدید " نضع بداخل جملة الطباعة o
التي ترید ان نجعلها في سطر جدید ..
مثل :
الطباعة سوف تكون بهذا الشكل :
Arab
Top
اي كل كلمة في سطر ...
.Window Object ٢- خروج نافذة للمستخدم نحدد نحن ما یكتب بها وهي خاصه في كائنات النوافذ
كهذه النافذة :
ویكتب كودها بهذه الطریقة ... ( alert ) وتسمى هذه النافذة بالجافا سكربت
alert ) * بعض الاوامر التي تستخدم داخل كود ال
الامر وصف الأمر مثال ..
window.alert("hi \n all"); سطر جدید \n
window.alert("hi \t all"); لترك مسافة بین كل كلمة وكلمة بحیث تظهر كجدول \t
window.alert("hi \r all"); position لوضع كل كلمة بسطر ولكن بإختلاف ال \r
window.alert("hi \\ all"); ( \ ) \\ لكتابة رمز
window.alert("hi \" all"); ( " ) "\ لكتابة رمز
window.alert("hi \' all"); ( ' ) '\ لكتابة رمز
document.write(" Arab <br />Top ");
window.alert(" ;(" اهلا بك في موقعنا
٤
٣- خروج نافذة للمستخدم یحدد هو ما یكتب بها " اي نافذه قراءة من لوحة المفاتیح " وهي خاصه بكائنات
. Window Object النوافذ
كهذه النافذة :
ویكتب كودها بهذه الطریقة ... ( prompt ) وتسمى هذه النافذة بالجافا سكربت
ملاحظة :
بداخله قیمتین الاولى یكتب بها ما سوف یخرج للمستخدم في أعلى النافذة .. والقیمة ( prompt ) یأخذ كود ال
الثانیة یكتب بها قیمة ابتدائیة بداخل صندوق الكتابة وهذه القیمة لیس لها اي قیمة فعلیة فهي ما تلبث حتى ینتهي
دورها بمجرد ان یكتب المستخدم مكانها اسمه او اي شيء یریده ... جرب ان تضع هذا الامر وإنظر ماذا
Window Object یخرج لك والذي یعتبر ایضا من كائنات النوافذ
وهي عبارة عن نافذة تخرج للمستخدم لسؤاله عن قبول أو رفض شيء معین أنت تحدده .
المتغیرات :
نظرة سریعة على المتغیرات :
كما تعلم في أي لغة برمجة تعتبر المتغیرات ذو فائدة كبیرة فبواسطتها نستطیع التحكم ببرنامجنا بكل
سهولة ...
.( var ) ففي لغة الجافا سكربت تعرف المتغیرات ب
مثال :
أعداد صحیحة أو " ( integer Or float ) ویجدر التنبیه هنا انه أذا اردنا أن یكون المتغیر قیمة رقمیة
أعداد ذات أرقام عشریة " فإننا نقوم بتحویلها بهذه الطریقة :
1- parseInt ( ; ( أسم المتغیر هنا
أي یكون كتابة الكود كالتالي : ( integer ) وهذا سوف یحول العدد الى عدد صحیح
window.prompt (" ;("إسمك ","من فضلك أدخل إسمك
var name ;
var number = 55 ;
parseInt (number) ;
var con = confirm("؟ ;(”هل ترید حفظ البیانات
٥
2- parseFloat ( ; ( أسم المتغیر هنا
أي یكون كتابة الكود كالتالي : ( float ) وهذا سوف یحول العدد الى عدد عشري
ملاحظة :
. ( parseFloat ) علیك الإلتزام بشكل الحرف أي الحرف الصغیر والكبیر
..وللحدیث بقیة سوف یذكر في وقته.
لنأخذ أمثلة على ما سبق ونطبقها ...
: مثال ١
var number = 5.4 ;
parseFloat (number) ;
<html dir="rtl">
<head><title> الجافا سكربت </title>
<script>
var name ;
name = window.prompt ( " ; ( "إسمك" , " لطفا أدخل إسمك
document.write( " أهلا بك " + name ) ;
</script>
</head>
<body> </body>
</html>
٦
في هذا المثال قمنا بما یلي :
. ( name ) عرفنا متغیر وجعلنا اسم المتغیر هو
جعلنا هذا المتغیر یساوي القیمة التي سوف یدخلها المستخدم من لوحة المفاتیح وذلك من خلال الأمر
فبمجرد خروج النافذة للمستخدم ویكتب بها اسمه سوف یخزن الأسم المدخل . ( window.prompt )
وهذا واضح من العبارة : ( name ) بداخل المتغیر
وهذا من خلال الأمر : ( name ) ثم قمنا بطباعة المتغیر
وبالتالي سوف یطبع لنا ما خزن داخل المتغیر وهو إسم المستخدم الذي أدخله . وبعد ذلك سوف یطبع الجملة
النصیة التي كتبناها وهي " أهلا بك " ... أي سوف یطبع لنا الجملة التالیة على فرض اننا قمنا بإدخال الإسم
" محمد " : " أهلا بك محمد "
: مثال ٢
التي ذكرناها سابقا .. ( alert ) وفي هذا المثال خروج نافذه للمستخدم وهي نافذة
العملیات الحسابیة :
أسم العملیة الحسابیة الصیغة خوارزمیة الصیغة مثال
x + y x + y + عملیة الجمع
x – y y –x - عملیة الطرح
X * y x * y * عملیة الضرب
x / y x / y / عملیة القسمة
x % y x % y % عملیة باقي القسمة
<html>
<head><title> الجافا سكربت </title>
<script type = "text/javascript" >
window.alert (" ; ("أهلا بك
</script>
</head>
<body></body>
</html>
name = window.prompt ( " ; ( "إسمك" ," لطفا أدخل إسمك
document.write( " أهلا بك " + name ) ;
٧
العملیات المنطقیة :
الصیغة تمثیلها بالجافا وصف الصیغة مثال
y تساوي قیمة x قیمة x == y == =
y لا تساوي قیمة x قیمة x != y != ≠
y أكبر من قیمة x قیمة x > y > >
y أقل من قیمة x قیمة x < y < <
y أكبر أو تساوي قیمة x قیمة x >= y >= >=
y أقل أو تساوي قیمة x قیمة x <= y <= <=
ملاحظة :
یوجد أولویات تعتمد في العملیات الحسابیة البرمجیة.
لنأخذ بعض العملیات الحسابیة بشكل سریع : •
.( كان یحمل القیمة ( 4 ) ثم أضفنا له ( 2 ) فأصبح الناتج ( 6 ( number ) المتغیر
ویمكن أن نكتب العملیات السابقة بطریقة برمجیة أخرى وسوف یخرج لنا نفس الناتج :
وما ینطبق على عملیة الجمع ینطبق على جمیع العملیات الحسابیة الأخرى ....
مثال :
قیمة ( 4 ) ثم اجرینا عملیة الضرب على هذا ( number ) وهي عملیة ضرب وضعنا بداخل المتغیر
.( المتغیر الذي یحتوي على ( 4 ) وهي ضربه بنفسه وبالتالي الناتج هنا یساوي ( 16
var number = 4 ;
number= number+ 2 ;
var number = 4 ;
number * = number;
var number = 4 ;
number+ = 2 ;
٨
جمل الشرط :
قد نحتاج أثناء كتابتنا للبرنامج أن نضع جملة شرط أو أكثر به فبناتج جملة الشرط نستطیع أن نتحقق من
أي صحیح أو قد ( True ) المطابقة أو عدمها.. إذا هي مقارنة بین قیمتین قد یتطابقوا وعندها یكون الجواب
أي خاطئ . ( False ) لا یتطابقوا وعندها یكون الجواب
ولتوضیح الصورة، كأن نتحقق من كلمة السر هل هي صحیحة أم لا إذا هنا سوف یكون لدینا كلمتین سوف
نقارن بینهما وهما كلمة السر المسجلة لدینا وكلمة السر التي سوف یدخلها المستخدم .
لتتعرف إذا على جمل الشرط وأنواعها :
: ( if ) ١- الدالة الشرطیة
في هذه الدالة نقوم بالتأكد من الشرط فإذا تحقق یتم الدخول الى داخل الدالة وبعد الإنتهاء من أوامرها ینتقل الى
تنفیذ الاوامر التي تقع خارجها وإذا لم یتحقق سوف یتم الانتقال مباشرة الى تنفیذ الاوامر التى تقع خارج الدالة .
صیغتها:
لنأخذ مثالا كاملا ونرى كیف :
If ( ( الشرط
{
إذا تحقق نفذ الامر الذي بداخل الدالة
}
أوامر خارج الدالة
<html dir="rtl">
<head><title> الجافا سكربت </title>
<script type ="text/javascript">
var pass_2="okman";
var pass_user;
pass_user = window.prompt(" ;("كلمة السر","ادخل كلمة السر
if (pass_2 == pass_user)
{
document.write (" ; (" أهلا بك
}
</script>
</head>
<body></body>
</html>
٩
ثم قمنا بتعریف متغیر ( okman ) ووضعنا بداخله قیمة ( pass_ في هذا المثال قمنا بتعریف متغیر ( 2
ولم نضع بداخله قیمة على اساس ان المستخدم اي الزائر هو الذي سوف یضع القیمة وهنا ( pass_user )
سوف تخرج نافذة لتخبر المستخدم ان یدخل كلمة السر وعندها یضع المستخدم الكلمة وبالتالي سوف تخزن هذه
وهنا سوف یقارن ( if ) وبعد ذلك ندخل بداخل جملة الشرط وهي ال ( pass_user ) القیمة بداخل المتغیر
الذي حدد قیمته ( pass_user ) المخزنه مسبقا وبین قیمة المتغیر ( pass_ بین قیمة المتغیر ( 2
المخزن مسبقا ( pass_ تعني هل المتغیر ( 2 ( if ( pass_2==pass_user ) ) المستخدم اذا جملة
المدخلة من قبل المستخدم .. هنا اذا كانت الاجابه نعم عندها سوف ( pass_user ) یساوي قیمة المتغیر
یطبع له جملة أهلا بك واذا كانت لا اي غیر متساویتین اي ان كلمة السر الذي ادخلها المستخدم لیست متطابقة
مع كلمة السر المخزنه مسبقا ... عندها لن یطبع شيء .. وفي هذا المثال افترضنا انه ادخل كلمة السر
صحیحه" اقصد هنا في صورة المثال" ..
: ( if / else ) ٢- الدالة الشرطیة
في هذه الدالة الشرطیة نقوم بالنأكد من الشرط وفي هذه الحالة سیكون لنا حالتین :
الاولى :
تحقق الشرط وبالتالي الدخول الى داخل الدالة لتنفیذ الاوامر التى بداخلها ثم الانتقال الى تنفیذ الاوامر التى تقع
خارجها .
الثانیة :
وتنفیذ مابداخلها ثم الانتقال الى تنفیذ الاوامر التى تقع ( else ) عدم تحقق الشرط وبالتالي الانتقال الى جملة
خارجها .
صیغتها :
If ( ( الشرط
{
إذا تحقق نفذ مابداخلها
}
else
{
نفذ هذا الامر إذا لم یتحقق الشرط
}
تنفیذ الاوامر الخارجیة
١٠
لنأخذ مثالا كاملا ونرى كیف ..؟
مثال :
<html dir="rtl">
<head><title> الجافا سكربت </title>
<script type ="text/javascript">
var pass_2="okman";
var pass_user;
pass_user = window.prompt(" ;("ادخل كلمة السر"،"كلمةالسر
if (pass_2 ==pass_user )
{
document.write (" ; ( " أهلا بك
}
else
{
document.write (" ; (" كلمة السر غیر صحیحة
}
document.write (" ; (" في عالم البرمجة
</script>
</head>
<body></body>
</html>
١١
ثم قمنا بتعریف متغیر ( okman ) ووضعنا بداخله قیمة ( pass_ في هذا المثال قمنا بتعریف متغیر ( 2
ولم نضع بداخله قیمة على اساس ان المستخدم اي الزائر هو الذي سوف یضع القیمة وهنا ( pass_user )
سوف تخرج نافذة لتخبر المستخدم ان یدخل كلمة السروعندها یضع المستخدم الكمله وبالتالي سوف تخزن هذه
وهنا سوف یقارن ( if ) وبعد ذالك ندخل بداخل جملة الشرط وهي ال ( pass_user ) القیمة بداخل المتغیر
الذي حدد قیمته ( pass_user ) المخزنه مسبقا وبین قیمة المتغیر ( pass_ بین قیمة المتغیر ( 2
المخزن مسبقا ( pass_ تعني هل المتغیر ( 2 ( if ( pass_2==pass_user ) ) المستخدم اذا جملة
المدخل من قبل المستخدم .. هنا اذا كانت الاجابه نعم عندها سوف ( pass_user ) تساوي قیمة المتغیر
یطبع له جملة أهلا بك واذا كانت لا اي غیر متساوین اي ان كلمة السر الذي ادخلها المستخدم لیس مطابقة
وهي كلمة السر غیر صحیحه.. ( else ) لكلمة السر المخزنه مسبقا ... عندها سوف یطبع الجمله التي في
الى تنفیذ ( if ) وبعد ان یطابق ویرى اذا كانت صحیح ام لا لیحدد اي جملة یطبع سوف یخرج من دالة ال
الجملة الخارجیة اي التي خارج الدالة والتي لیس لها علاقة بماذا كانت المطابقة لا ام نعم وبتالي طباعة .. عالم
البرمجة .. اذا هنا إما ان تكون الكلمة المدخله صحیحه وعندها سوف یطبع جملة اهلا بك ثم یطبع جملة عالم
البرمجه او ان تكون الكلمة المدخله خطأ وعندها یطبع كلمة السر غیر صحیحه ثم یطبع عالم البرمجه .. وفي
هذا المثال افترضنا انه ادخل كلمة السر صح " اقصد هنا في صورة المثال "..
: ( if ) معلومات مهمة عن الدالة
فلا یزعجك ذلك ( nested if ) ١- قد یستخدم المبرمج شرط بداخل شرط بداخل شرط وتسمى هذه الحالة
فلكل منا أسلوبه الخاصفي وصف الامور كما أنه قد یتحتم علینا أوقات أن نستخدم شرط بداخل شرط .
مثال :
<html dir="rtl">
<head><title> الجافا سكربت </title>
<script type ="text/javascript">
var name1 ="sami";
var name2 ="mahmoud";
if (name1 =="sami")
{ if (name2 =="mahmoud")
document.write (" ; ( "أهلا بك
}
document.write (" ; ( " في عالم البرمجة
</script>
</head>
<body></body>
</html>
١٢
في هذا المثال أضطرننا أن نستخدم شرط بداخل شرط وهذا الأسلوب یسمى ( الأسلوب الهرمي اذا جاز
التعبیر ) فهنا وضعنا شرطین بداخل بعض ... لماذا ؟
لنفرض أن لدینا عدة أشخاص جمیعهم الإسم الأول سامي ولكن إسم الأب أي الإسم الثاني یختلف إذا هنا یجب
أن نتحقق من الإسمین الأول والثاني إذا الخطوات التى نتبعها كما یلي :
نحضر جمیع الأشخاصالذین إسمهم الأول ( سامي ) وهذا مافعلناه بالشرط الأول .
فإذا كان الشرط قد تحقق أي أن أسم المستخدم ( سامي ) سوف یدخل الى الدالة ومن ثم سوف یجد شرطا آخر
یسأله عن أسمه الثاني أي أسم الأب :
فإذا تحقق سوف ینفذ الامر الذي بداخل هذه الدالة . ومن ثم ینفذ الاوامر التي خارج الدالتین تماما .
لو لاحظت أنه في حالة عدم تحقق أي من الشرطین السابقتین سوف یخرج لتنفیذ ما بخارج الدالتین .
وهكذا فلا أرید أن أدخلك في ( if ) داخل دالة ( if ) داخل دالة ( if ) وقد یستخدم شخص أیضا دالة
متاهات وخوارزمیات معقدة . فكما قلنا لكلا منا أسلوبه فقد یكون حل مسألة بسطر فیأتي شخص ویحلها
بأربعة أسطر بطریقة معقدة... إذا جمیعنا یستطیع أن یصل الى الحل ولكن بأسالیب مختلفة وقد یتطلب
بداخل بعضها. ( if ) الامر ان نستخدم جمل
If ( name1 == " sami " );
if ( name2 == " mahmoud ");
١٣
: ( switch ) الدالة الشرطیة
عندما یكون لدینا عدة خیارات ونكون نرید أن نخرج بواحد منهم وهو الذي نریده أما ماهو الذي نریده من بین
الخیارات والذي سوف نخرج به سوف یحدده المتغیر الذي سوف ندخله والذي سوف یتفق مع واحدة من هذه
أو ماشابه ذلك اذا جاز العبیر.. ( if ) الخیارات ویحققه .. أي هنا وكأننا نستخدم الجملة الشرطیة
لیسهل العمل بشكل كبیر وسوف نرى ذلك : ( switch ) ویأتي أستخدام الدالة
صیغتها :
لنأخذ مثال ونحلله.. والذي من خلاله سوف نفهم ماقصدناه في عباراتنا السابقه.. فأنا أعرف جیدا عزیزي
المتدرب أنه كلام مبهم وغیر واضح لك الى الان.
مثال :
switch ( بدایة } ( المتغیر
case : ; الاحتمال الأول
المطلوب لهذا الاحتمال
case : ; الاحتمال الثاني
المطلوب لهذا الاحتمال
case : ; الاحتمال الثالث
المطلوب لهذا الاحتمال
.
.
.
default :
ذكر .. case المطلوب لهذا الاحتمال .. وهو یطبق في حالة عدم تطابق المتغیر مع اي
نهایة " اي اغلاق " {
<html dir="rtl">
<head><title> الجافا سكربت </title>
<script type = "text/javascript">
var country ;
country=window.prompt( " 0" ," أدخل الدولة لتعرف عاصمتها ");
switch ( country ) {
case " : " فلسطین
document.writeln("<h عاصمتها القدس الشریف < 3 </h3>") ;
breack ;
case " : " العراق
document.writeln("<h عاصمتها بغداد < 3 </h3>") ;
breack;
case " : " السودان
document.writeln("<h عاصمتها الخرطوم < 3 </h3>") ;
breack ;
case " : " الوطن العربي
document.writeln("<h من المحیط الى الخلیج < 3 </h3>") ;
breack ;
default :
document.writeln("<h الدولة التي أدخلتها لیست من ضمن الخیارات المتاحة < 3 </h3>") ;
}
</script>
</head>
<body></body>
</html>
١٤
: ( case ) في حالة ادخال داله لیست ضمن الدول المذكوره في ال
١٥
لنحلل المثال سویا فبه نعرف مابهم علینا :
لكي یدخله المستخدم ( window.prompet ) وأسندناه الى جملة ( country ) في البدایة عرفنا المتغیر
بنفسه من لوحة المفاتیح أي انه سوف یدخل أسم دولة معینة ... وهنا سوف نأتي الى وضع المتغیر في دالة
كالتالي : ( switch )
( case ) ثم نضع الخیارات التي نریدها وسوف یقارن المتغیر الذي أدخلنا قیمته بما هو موجود بجانب كلمة
كالشكل التالي :
( case ) وفي حالة مطابقته لأي واحدة من الخیارات التي وضعناها سوف ینفذ الجمل التي جاءت ضمن ال
أمر ( case ) ولهذا نضع بنهایة كل ( switch ) الذي توافق معه وبالتالي طباعة الجملة والخروج من دالة
لیتوقف , لاننا هنا نرید أن نخرج بقیمة واحدة وهي احدى الخیارات التي وضعناها " جرب أن لا ( break )
وأنظر ماذا سیحدث فبالتجربة یحدد المفهوم " . ( break ) تضع
وهنا نعني أنه في حالة أن المستخدم أدخل ( default ) ولاحظ أننا وضعنا في النهایة الدالة وقبل اغلاقها
سوف یخرج المستخدم بالجملة والامر الذي سوف نضعه بعد ( case ) قیمة للمتغیر وكانت لیستضمن ال
ثم ننهي الدالة بوضع النهایة ( } ) فما رأیك عزیزي المتدرب أن نأخذ المثال وكأننا مستخدمون ( default )
وننفذه الان على غیر ما تم ادخاله في الصور السابقة من دولة فلسطین .
وأدخلنا الدولة العراق مثلا فهنا سوف یأتي البرنامج ویأخذ كلمة العراق ( prompt ) نفرض خرجت نافذة
( switch ) والتي هي اسندت الى المتغیر ویضعها في دالة
الاول والتي هي : ( case ) فیأتي الى ال ( switch ) فیدخل بداخل دالة
الآخر ... ( case ) فیجد أن كلمة العراق لاتتطابق كلمة فلسطین إذا لیس هذا هو الخیار . فینتقل الى ال
switch ( country )
case " : " السودان
case " ; " فلسطین
switch ( country )
١٦
أي ( العراق = العراق ) فینفذ الجملة التي بداخل ( case ) فیجد أن المتغیر به كلمة العراق یطابق هذا ال
التي هي : ( case ) هذا ال
وبالتالي طباعة الجملة التالیة : " عاصمتها بغداد "
كاملتا دون ( switch ) أي توقف وبالتالي الخروج من دالة ( break ) وبعد جملة الطباعة هذه یأتي أمر
التي تأتي بعدها . ( case ) المرور بال
- وأیضا لو فرضنا أن شخص أدخل أي دولة غیر موجودة ضمن الخیارات لتكن الاردن أو السعودیة أو
أي : ( default ) الكویت أو الامارات ... الخ سوف یطبع هنا الجملة التي ضمن الامر
للمقارنة ( switch ) الذي أرید ان أوصله لك في النهایة هو شئ واحد وهي أننا ندخل المتغیر في جملة
سوف ینفذ ( true ) مع الخیارات الموجودة بداخلها وعند مطابقة المتغیر مع احدى الخیارات أي النتیجة
( false ) والباقیة ( true ) الجملة المتعلقة بهذه المطابقة مع العلم أن واحدة فقط من هذه الخیارات تعطي
غیر ( case ) اي ان جمیع ال ( default ) وعندما یكون كل الخیارات لیست مطابقه سوف ینفذ ما بداخل
.( default ) اذا یاتي عمل ال ..( false ) مطابقة
document.writeLn( "<h عاصمتها بغداد < 3 </h3> ") ;
document.writeln( "<h الدولة التي أدخلتها لیست من ضمن الخیارات المتاحة < 3 </h3> ") ;
١٧
حلقات التكرار :
ونعن ي به ا تك رار جمل ة معی نة ع دة م رات فحلق ة التك رار س وف تس تمر م ادام الش رط م تحققا وی تم ال تحقق م ن
الشرط في بدایة الحلقة او نهایتها .
قد تتساءل مافائدة أستخدام حلقات التكرار ؟
نجیب بذلك . . .
أفت رضان ك ت رید ط باعة جمل ة معی نة ١٠ م رات فأن ك س وف تح تاج ال ى حلق ة التك رار فل و ل م تس تخدمها
لإض طررت لك تابة ك ود الط باعة ١٠ م رات ولك ن بحلق ة التك رار لایأخ ذ م نك س وى ك تابة سطرین من الكود .
وكذلك الحال لو أردت طباعة أسماء جمیع من هم مسجلین لدیك بقاعدة بیانات الموقع .
أنواع حلقات التكرار :
: ( for) ١- حلقة التكرار
وف ي ه ذه الحلق ة یك ون الش رط ه و ال ذي یح دد ط ول الحلق ة فم ا أن یص ل ال ى نهایتها حتى یتوقف أي فشل
الشرط ولكن مادام الشرط متحقق سوف یدخل الى داخل الحلقة وینفذ مابداخلها .
صیغتها :
شرط الحلقة : هو الذي سوف یحدد طول الحلقة ( عددالتكرار_____________)
مثال :
ف ي داخ ل حلق ة التك رار تس تطیع تع ریفه في الخارج كما في السابق ووضعه i ملاحظ ة : ان ا ع رفت المتغی ر
مباشرة ...
for ( ( مقدار الزیادة ; شرط الحلقة ; بدایة الحلقة
{
نفذ الامر
}
<html >
<head><title> الجافا سكربت </title>
<script type = "text/javascript">
for (var i = 0 ; i<= 10 ; i ++ )
{
document.write ( i ) ;
}
</script>
</head>
<body></body>
</html>
١٨
لنحلل هذا المثال سویا :
وجعلنا قیمته الأبتدائیة (i) هنا أول شي عرفنا المتغیر وهو
. ( أي أنه سوف یبدأ من ( 0 (i=0)
أي أن نا س وف ن دخل ال ى داخ ل الحلق ة ون نفذ ماب داخلها م ن أوام ر ( i < = ث م ح ددنا الش رط وال ذي ه و ( 10
أقل أو تساوي ( 10 ) أي أنها لو وصلت الى ( 11 ) سوف یخرج من الحلقة ولن یدخلها إذا ( i ) مادامت قیمة
وهي ( 10 ) . أي أن التكرار سوف یكون ١٠ مرات ولاننا بدأنا من الصفر سوف یكون ( i ) ه نا ح ددنا نهایة
. ١١
وحددناه بأن یزید ب ( 1 ) بكل مرة یدخل فیها الى الحلقة . ( i ) ثم حددنا مقدار زیادة المتغیر
* نأتي للتطبیق العملي للمثال " أي مایحدث بداخل البرنامج " :
لنكتب الصیغة ونتتبعها :
. ( كما ذكرنا وهي ( 0 ( i ) نبدأ بقیمة
( أق ل أو تس اوي ( 10 ( i ) وه نا یس أل ه ل ( i < = نن تقل ال ى الخط وة التال یة الت ى تل یها وه ي الش رط ( 10
سوف تكون الاجابة نعم .
( for ) أي یعني ذلك بعد الدخول الى حلقة التكرار والرجوع الى ( i++ ) ث م ین تقل الى للخطوة التى تلیها وهي
. ( بمقدار ( 1 ( i ) زید
( i ) ولكن بعد زیادة قیمة ( for ) والتى هي ( 0 ) ثم یعود الى ( i ) دخلنا الى الحلقة الان سوف یطبع قیمة ال
.( بقیمة ( 1 ) لتصبح قیمتها ( 1
( الأبتدائیة الى ( 1 ( i ) الان س وف یك ون مافعل ناه بالخط وات الس ابقة ولك ن ه ذه الم رة س وف تتغیر قیمة ال
. ( بدلا من ( 0
- للتوضیح أكثر نعید الخطوات :
. ( الان سوف یسأل هل ( 1 ) أقل أو یساوي ( 10 ) سوف تكون الأجابة نعم فال ( 1 ) أصغر من ( 10
أي یعني ذلك بعد الدخول الى حلقة التكرار وتننفذ مابداخلها ( i++ ) ث م ین تقل ال ى الخط وة الت ى تل یها وهي
. ( بمقدار ( 1 ) أي تصبح ( 2 ( i ) زید قیمة ( for ) والرجوع الى ال
( الأبتدائ یة "اذا ج از التعبی ر" وه ي ( 2 ( i ) وس وف تص یح ق یمة ال ( for ) وه نا س وف یع ود ال ى ال
ویسأل الشرط والخطوات التى ذكرناها سابقا ویستمر حتى یصل ال قیمة ( 11 ) وهنا سوف یحدث التالي :
for ( var i = 0 ; i < = 10 ; i ++ )
١٩
وهي الشرط ( for ) الأبتدائیة ( 11 ) ثم ینتقل الى الخطوة التى تلیها بال ( i ) س وف یجع ل قیمة ال
والت ى ه ي الان ( 11 ) أق ل أو تس اوي ( 10 ) س وف تك ون ( i ) س وف یس أل ه ل ق یمة ( i < = 10 )
الاجابة لا إذا سوف یخرج من الحلقة ولن ینفذ الجملة التى بداخلها .
یعني بإختصار . . .
مادام الشرط متحققا ولن یخرج منها إلا بعد فشل ( for ) س وف یس تمر بتنفیذ جملة الطباعة التى بداخل حلقة ال
الش رط . فل و ك ان ی وجد جمل ة تل ي حلق ة التك رار كالم ثال ال ذي س وف أط رحه الان ل ن ت نفذ الا بعد الخروجمن
حلقة التكرار .
مثال :
ملاحظة : سوف احاول شرحه بطریقه اكثر تقریبا ...
أقل من أو ( i ) وهي ( 1 ) وسوف یكون الشرط أن مادام قیمة ال ( i ) ه نا ف ي ه ذا الم ثال سوف یبدأ قیمة ال
یس اوي ( 10 ) أط بع وع ند فش ل الش رط أخ رج م ن حلق ة التك رار وإذه ب لتنف یذ الجمل ة التى تلي حلقة التكرار
وهي طباعة جملة ( الأعداد )
هنا یكون التنفیذ على النحو التالي : رسمة لتوضیح
<html >
<head><title> الجافا سكربت </title>
<script type = "text/javascript">
for (var i = 1 ; i <=10; i ++ )
{
document.write ( i ) ;
}
document.write (" <br /> ;("الاعداد
</script>
</head>
<body></body>
</html>
٢٠
سوف یتوقف
سوف یفشل الشرط وبالتالي سوف ( i ) ف نحن مح ددین أن ه آخ ر ق یمة تط بع ه ي ( 10 ) ف بعد أن ی زید قیمة
اصبحت ( 11 ) اذا هي لیست اقل من ( 10 ) ثم ینتقل الى الجملة ( i ) یخ رج م ن حلق ة التكرار لان قیمة
التى تلي حلقة التكرار والتى هي خارج حلقة التكرار وهي طباعة " الأعداد "
إذا النتیجة هي طباعة مایلي :
12345678910
الاعداد
لأطرح لك مثالا وأترك تحلیله لك ...
( لنفرضأننا نرید طباعة الارقام ولكن بالعكس أي من ( 10 ) الى ( 0
تكون صیغته كالتالي :
i =1 i ++ i = 2
i =2 i ++ i = 3
i =3 i ++ i = 4
i =4 i ++ i = 5
i =5 i ++ i = 6
i =6 i ++ i = 7
i =7 i ++ i = 8
i =8 i ++ i = 9
i =9 i ++ i =10
i = ' 10 ' i ++ i =11
<html >
<head><title> الجافا سكربت </title>
<script type = "text/javascript">
for (var i =10 ; i>=0 ; i--)
{
document.write( i ) ;
}
document.write ( " <br /> ("الأرقام بشكل تنازلي
</script>
</head>
<body></body>
</html>
document.write ( " <br /> ;(الاعداد
٢١
النتیجة :
10987654321
الأرقام بشكل تنازلي
للقیم اي طباعة عكسیة. ' reverse ' وهذا المثال یسمى طباعة
: ( While ) حلقة التكرار
وف ي ه ذه الط ریقة س وف یس تمر یتنف یذ ماب داخل الحلق ة م ادام الش رط م تحقق ف ي ك ل م ره ت رید به ا الدخ ول
س وف ی تحقق م ن الشرط أولا فإذا تحقق تقوم بالدخول الى داخل الحلقة وتنفیذ مابداخلها الى أن یفشل ونخرج
م ن الحلق ة م ع العل م ان ه اذا فش ل من البدایه اذا لن یدخل اطلاقا الى داخل حلقة التكرار ولكن اذا یوجد اوامر
سوف ینفذها . while خارج حلقة التكرار اي بعد حلقة
صیغتها :
على مایلي : ( while ) قبل الخوض بمثال یجب أن تحتوي جملة ال
١- متغیر نضعه بالشرط لكي نتحقق من صحة الشرط .
. ( while ) ٢- یجب وضع قیمة إبتدائیة لهذا المتغیر قبل جملة ال
٣- یج ب أن نذك ر ه ذا المتغی ر ومق دار زیادته بداخل حلقة الشرط سواءا قبل تنفیذ الجملة التى بداخل حلقة
التكرار أو بعدها .
While ( ( نفذ مابداخل الحلقة مادام الشرط متحققا
{
نفذ الامر
i ++ مقدار الزیادة
}
٢٢
مثال :
لنحلل المثال سویا :
. ( i <= كمتغیر ووضعنا به القیمة الأبتدائیة ( 1 ) قبل أن نضعه في الشرط ( 10 ( i ) أول شئ عرفنا
أقل أو تساوي ( 10 ) فكانت الاجابة نعم ( i ) فس ألنا الش رط ه ل ق یمة ( while ) وبع د ذل ك ذهب نا ال ى جمل ة
فال ( 1 ) أقل من ( 10 ) وبما أنه تحقق
الشرط فسوف ندخل بداخل الحلقة ...
. ( والتى هي ( 1 ( i ) فدخلنا بداخلها ونفذنا الجملةالتى بداخل حلقة التكرار التى هي طباعة قیمة
( i ) بمق دار ( 1 ) فأصبحت قیمة ( i ) وتعن ي زی د ق یمة ( i++ ) ث م أنتقل نا ال ى الجمل ة الت ى تل یها والت ى ه ي
.( تساوي ( 2
<html >
<head><title> الجافا سكربت </title>
<script type = "text/javascript">
var i = 1 ;
while (i <= 10 )
{
document.write ( i ) ;
i ++ ;
}
</script>
</head>
<body></body>
</html>
While ( 1 <= 10 )
document.write ( i ) ;
٢٣
أقل أو تساوي ( 10 ) فكانت الاجابة بنعم فنحن ( i ) فسأله الشرط هل قیمة ( while ) تم عاد مرة أخرى الى
. ( بعد زیادتها ب ( 1 ) أي ( 2 ( i ) بقیمة ( while ) عدنا لل
. ( وهو ( 2 ( i ) فبعد تحقق الشرط دخلنا الى داخل الحلقة فوجدنا أمر الطباعة قیمة
عندنا الان ( i ) بمقدار ( 1 ) وقیمة ( i ) أي زید قیمة " ( i++ ) ث م أنتقل نا ال ى الجمل ة الت ى تلیها والتى هي
. " ( 2 ) زیدها بواحد لتصبح ( 3 )
الجدیدة وهي ( 3 ) ویتحقق من الشرط مرة أخرى ( i ) مرة أخرى ومعنا قیمة ال ( while ) ث م نع ود ال ى ال
الى ( 11 ) وهنا سوف یحدث التالي : ( i ) وهكذا نستمر 10 مرات الى أن تصل قیمة
التى هي ( 11 ) أقل أو تساوي ( 10 ) فیكون الجواب ( i ) فسأله الشرط هل قیمة ( while ) یأت ي الجملة ال
لا فیخ رج م ن حلق ة التكرار ولایدخل بداخلها . وإذا كان هناك جملة تلي حلقة التكرار سوف ینفذها بعد خروجه
من حلقة التكرار .
( لاحظ جملة تلي حلقة التكرار ولیس بداخله حلقة التكرار ) .
. . ( ( for ) و ( while ) مثال اخر ( لنجعلك تقارن بین
: ( مثال ( 1
While ( 2 <= 10 )
<html >
<head><title> الجافا سكربت </title>
<script type = "text/javascript">
var i = 10 ;
while (i>= 1 )
{
document.write ( i ) ;
i -- ;
}
</script>
</head>
<body></body>
</html>
٢٤
: ( Do while ) حلقة التكرار
وف ي ه ذه الط ریقة سوف یستمر بتنفیذ مابداخل الحلقة مادام الشرط متحقق وهنا سوف یدخل الى داخل الحلقة
وم ن ث م ی نفذ الام ر ال ذي بداخلها وبعد تنفیذها ینتقل لیتحقق من الشرط فإذا تحقق یعود مرة آخرى الى الحلقة
وینفذ الامر مرة أخرى وإذا لم یتحقق یخرج من حلقة التكرار ولن یعود لها .
صبغتها :
على مایلي : ( do while ) قبل الخوض في مثال یجب أن تحتوي جملة
١- متغیر نضعه بالشرط لكي نتحقق من صحة الشرط .
( do while ) ٢- یجب وضع قیمة إبتدائیة لهذا المتغیر قبل جملة ال
٣- یج ب أن نذك ر ه ذا المتغی ر ومق دار زیادت ه ب داخل حلق ة الش رط س واءا ق بل تنفیذ الجملة التى بداخل حلقة
التكرار أو بعدها .
مثال :
do {
نفذ الامر
مقدار الزیادة
}
while ( ( عد الى داخل الحلقة مرة أخرى ونفذ مادام الشرط یتحقق
<html >
<head><title> الجافا سكربت </title>
<script type = "text/javascript">
var i = 1 ;
do {
document.write( i ) ;
i ++ ;
}
while ( i <= 10 )
</script>
</head>
<body></body>
</html>
٢٥
لنحلل هذا المثال سویا :
ثم توجهنا الى الجملة التى تلیها ( do while ) وه ي ( 1 ) ث م دخل نا ال ى داخل ( i ) وض عنا ق یمة إبتدائ یة لل
( i ) اي زیادة قیمة ( i++ ) إذا سوف یطبع ( ١) ثم وجدنا الامر " ( i ) ه ي جملة الطباعة " أي طباعة قیمة
أم لا . ( do ) تساوي ( 2 ). ثم انتقلنا الى جملة الشرط التي حدد هل سوف نعود الى ( i ) أي أص بحت ق یمة
( do ) أي ( 2 ) أق ل أو تس اوي ( 10 ) فك ان الج واب نع م إذا ع دنا لل ( i ) ف وجدنا الش رط یس ألنا ه ل ق یمة
ب واحدفأص بحت ( 3 ) ث م انتقل نا ال ى الش رط وق د نحقق وكانت ( i ) م رة أخ رى ث م نف ذنا ماب داخلها ف زدنا ق یمة
( یس اوي ( 11 ( i ) الاجاب ة ب نعم أي أن ال ( 3 ) أق ل م ن ( 10 ) وهك ذا اس تمرینا ال ى أن نص ل لق یمة ال
والخروج من حلقة التكرار . ( do ) وبالتالي عدم العودة الى
؟ ( do while ) وال ( while ) قد تتساءل مالفرق بین ال
نحدد ذلك الفرق . . .
ن تحقق م ن الش رط ق بل الدخ ول ال ى الحلق ة أي أن نا لان نفذ أي ش ئ بداخلها مادام الشرط لم ( while ) كم ا ف ي
یتحقق وهذا أمر طبیعي لاننا لم ندخل الى الحلقة أصلا فكیف نعرف مابداخلها وننفذه .
كنا ندخل الى الحلقة وننفذ أمر ثم نفحصالشرط ولكن بعد أن نكون قد نفذنا هذا الامر ( do while ) أم ا بال
. ( do ) ویجب التنبیه هنا " في حالة عدم تحقق الشرط لن نعود مرة أخرى الى
ینفذ على الاقل أمر واحد في داخل حلقة التكرار حتى لو كان الشرط غیر ( do while ) إذا الف رق ه و أن بال
الذي لاینفذ أي امر مادام الشرط غیر متحقق . ( while ) متحقق على العكس ال
مثال توضیحي ( لتوضح الفكرة بشكل عملي ) :
الب رنامج لن یطبع شیئا وذلك لانه سألته جملة الشرط قبل الدخول هل ال ( 5 ) أقل ( while ) ف ي م ثال ال
( i ) من ( 3 ) فكان الجواب لا . وهنا لن یدخل الى الحلقة وبالتالي عدم تنفیذ مابداخلها أي عدم طباعة قیمة
ثم یتوقف فبعد طباعة قیمة ( i ) س وف یطبع البرنامج فقط مرة واحدة قیمة ( do while ) ف ي م ثال ال
س وف یس أل ع ن الش رط وهو هل ( 6 ) أصغر من ( 3 ) فسوف تكون الاجابة لا وبالتالي عدم العودة ( i )
أي عدم الدخول الى حلقة التكرار والاستمرار بالطباعة أي الخروج . ( do ) الى جملة
وفي هذا المثال نكون قد وضعنا الفرق بینهما ...
أنه لن یطبع شيء .... ( while) اذا نتیجة كود ال •
.... ( هو طباعة فقط رقم ( 5 do while ونتیجة ال •
مادام أنهما یعملوا عمل ( do while ) وال ( while ) ق د تتس اءل عزیزي المتدرب مالفائدة من أخذنا ال
؟ ( for ) ال
عزی زي الم تدرب نح ن نذك ر ل ك ك ل ص یغ التك رار ف ي لغ ة الجاف ا س كربت " والمس تخدمة ف ي جمیع لغات
هي أفضل لك ولكن ( for _ loop ) الب رمجه " ول ك حریة الاختیار بإستعمال أي واحدة منها فقد تجد أن
ه ي أفض ل ل ه وقد یتحتم علیك إستخدام أي واحدة منها ( do while ) أو ( while ) ع ند غی رك تج د ال
ف ي ك تابت ب رنامجك فه ذا راجع لك وما مطلبك من برنامجك فكما قلنا لكلا منا أسلوبه ( do while ) م ثل
وطریقته الخاصة یكتابة البرنامج .
var i =5 ;
while ( i < 3 )
{
document.write ( i ) ;
i ++ ;
}
var i =5 ;
do
{
document.write ( i ) ;
i++ ;
} while ( i < 3 )
26
: ( continue ) و ( break ) الامر
: ( break ) نبدأ بالامر
. ( switch ) وقد نستخدمها بال ( do – while ) أو ال ( while ) قد نستخدمها في ال
أما لماذا نستخدمها ؟
لنفرض أن لدیك بیانات مخزنة في قواعد البیانات ولكن ترید فقط جزء من هذه البیانات أن تعرض ولیس جمیعا
لكي أخرج مباشرة من داخل حلقة التكرار حتى لو لم أتنتهي من الحلقة . ( break ) فهنا أستخدم
صیغتها :
لنأخذ مثالا :
لنحلل المثال سویا ..
والذي هو عبارة عن مصفوفة تحتوي بداخلها على ( 7 ) أسماء . ثم انشأنا حلقة التكرار ( ( x ) عرفنا المتغیر
. ( أي أقل من العدد ( 7 ( i < x.lengh ) وبدأناها من ( 0 ) الى ( for
وعزیزي المستخدم الامر الطبیعي والبدیهي أن یطبع جمیع الأسماء التي بالمصفوفة لكن هنا الذي سوف یحدث
أنه سوف یطبع فقط أ
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى