You are on page 1of 70

‫ﺗﻌﻠﯿﻢ اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ‬

‫‪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‬ھﻲ اﻻﺳﺎس واﻻم ﻓﻲ ﻟﻐﺔ اﻟﺠﺎﻓﺎ ﺑﺸﻜﻞ ﻋﺎم ﻓﻤﺎ‬
‫ﺑﺎﻟﻚ ﺑﺎﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ ﻓﻠﻐﺔ ﺟﺎﻓﺎ ﺳﻜﺮﺑﺖ ھﻲ ﻟﻐﺔ ﺑﺴﯿﻄﻪ ﻧﻮﻋﺎ ﻣﺎ وﺳﮫﻠﻪ اﻟﺘﺒﻮﻳﺐ واﻟﺘﺤﻜﻢ ﺑﻞ ﻳﺴﺘﻄﯿﻊ‬
‫اﻟﺒﺮﻣﺠﻪ ﺑﮫﺎ ﻣﻦ ﻟﻢ ﻳﺘﻌﻠﻢ اي ﻟﻐﺔ ﻓﻲ ﺣﯿﺎﺗﻪ وھﺬا ﻣﺎ رﻛﺰت ﺑﻪ ﻓﻲ ﻛﺘﺎﺑﻲ ھﺬا ﺑﺎن اﺟﻌﻞ اﻟﻤﺘﺪرب ﻳﺒﺪأ ﻣﻦ‬
‫اﻟﺼﻔﺮ ﻓﻠﯿﺲ ھﺪﻓﻲ ﻓﮫﻢ ﻟﻐﺔ اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ ﻓﻘﻂ ﻓﺤﺴﺐ ﺑﻞ اﻟﺘﻜﻨﯿﻚ اﻟﺒﺮﻣﺠﻲ ﺑﺈﺧﺘﻼﻓﺎﺗﻪ ﻓﺎﻟﻤﺒﺪأ واﺣﺪ‬
‫ﻋﻠﻰ اﺧﺘﻼف ﺷﯿﻔﺮة اﻟﻜﻮد ﻓﺎل ‪ for loop‬ﻣﺜﻼ او ال ‪ if condition‬او ﻏﯿﺮھﺎ ﻣﻮﺟﻮده ﻓﻲ ﺟﻤﯿﻊ ﻟﻐﺎت‬
‫اﻟﺒﺮﻣﺠﻪ وﻟﮫﺬا اﻋﺘﺒﺮ ﻛﺘﺎﺑﻲ ھﺬا ﺑﺎب ﻟﺪﺧﻮل ﻣﻨﻪ اﻟﻰ ﻓﮫﻢ اﻟﻠﻐﺎت اﻟﻘﺎدﻣﻪ اﻟﺘﻲ ﺳﻮف اﻃﺮح ﺑﮫﺎ ﻛﺘﺐ ﺑﺈذن‬
‫اﷲ وﻛﺬﻟﻚ اﻟﻰ ﻟﻐﺎت اﻟﺒﺮﻣﺠﻪ اﻟﻤﻮﺟﻮد ﻛﺘﺒﺎ ﻋﻨﮫﺎ ﻓﻲ اﻻﺳﻮاق او اﻟﻨﺖ ﻓﮫﺬا اﻟﻜﺘﺎب ﺑﺪاﻳﺘﻚ ﻟﻔﮫﻢ ﺑﻘﯿﺔ‬
‫اﻟﻠﻐﺎت ﺑﻜﻞ ﺳﮫﻮﻟﻪ او ﻋﻠﻰ اﻻﻗﻞ ﺑﯿﺴﺮ ودون ﻋﻨﺎء اذا ﻟﯿﺲ ﻛﻞ اﻟﻠﻐﺎت ﻟﯿﻜﻦ ﺑﻌﻀﮫﺎ واذا ﻟﯿﺲ ﺑﻌﻀﮫﺎ اذا‬
‫ﻋﻠﻰ اﻻﻗﻞ ﺟﺰء ﻣﻦ ﻛﻞ ﻟﻐﺔ ‪...‬‬

‫ﻋﺰﻳﺰي اﻟﻤﺘﺪرب ﻟﻐﺔ اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ ﺑﺈﻋﺘﻘﺎدي اﻟﺨﺎص ﻛﻤﻄﻮر وﻳﺐ ﻣﮫﻤﺔ ﻧﻮﻋﺎ ﻣﺎ ﻓﺎﻧﺖ ﻋﻨﺪﻣﺎ ﺗﺼﻤﻢ ﻓﻲ‬
‫‪ HTML‬اﻧﺖ ﺗﺼﻤﻢ واﺟﮫﺔ وﻟﻜﻨﮫﺎ ﺧﺎﻟﯿﺔ ﻣﻦ اﻟﺤﺮﻛﺔ ﺑﻞ اﻧﻚ ﻻ ﺗﺴﺘﻄﯿﻊ ان ﺗﻐﯿﺮ ﺷﻲء ﻣﻨﮫﺎ إﻻ ﺑﺎﻟﺘﻐﯿﺮ اﻟﻜﻮد‬
‫ﻧﻔﺴﻪ وﻟﻜﻦ ﺗﺨﯿﻞ ﻣﺜﻼ اﻧﻚ ﺗﺮﻳﺪ ان ﺗﻈﮫﺮ ﺑﻨﺮ اﻋﻼﻧﻲ ﻳﺘﻐﯿﺮ ﻛﻞ وﻗﺖ ﻣﻌﯿﻦ ﻣﻦ ﻏﯿﺮ ان ﺗﻠﻤﺴﻪ ﺑﯿﺪك اي ﻣﻦ‬
‫ﻏﯿﺮ ان ﺗﻐﯿﺮ اﻟﻜﻮد ﺑﻞ ھﻮ ﻣﻦ ﻧﻔﺴﻪ ﻳﺠﻠﺐ ﺑﻨﺮ اﻻﻋﻼن اﻻول ﺛﻢ ﺑﻌﺪ دﻗﯿﻘﺔ ﻣﺜﻼ ﻳﻐﯿﺮه اﻟﻰ ﺑﻨﺮ اﻋﻼن ﺛﺎﻧﻲ‬
‫وھﻜﺬا او ﺗﺼﻮر اﻧﻚ ﺗﺮﻳﺪ ان ﺗﻀﻊ ﻓﻲ رأس ﺻﻔﺤﺘﻚ اﻟﺘﺎرﻳﺦ واﻟﻮﻗﺖ او ﻛﺄن ﺗﺮﻳﺪ ان ﻳﻈﮫﺮ اﺳﻢ زاﺋﺮك ﻓﻲ‬
‫ﺻﻔﺤﺘﻚ ﻟﻜﻲ ﺗﺸﺪه ﻟﮫﺎ وﻏﯿﺮھﺎ ﻣﻦ اﻻﻓﻜﺎر ﻓﺎﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ ﺗﻔﻌﻞ ﻟﻚ ﻛﻞ ھﺬا وﺑﻜﻞ ﺑﺴﺎﻃﻪ وﺳﮫﻮﻟﺔ ‪..‬‬

‫اﻣﺎ ﻓﻲ اﻟﺒﺮاﻣﺞ او اﻻﻛﻮاد اﻟﺘﻲ ﺳﻮف ﻧﺘﻌﻠﻢ ﻛﺘﺎﺑﺘﮫﺎ ھﻲ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻷواﻣﺮ اﻟﺘﻲ ﺗﻜﺘﺐ ﻣﺠﺘﻤﻌﺔ أو‬
‫ﻣﺘﻔﺮﻗﺔ ﻟﯿﻌﻤﻞ اﻟﺒﺮﻧﺎﻣﺞ ﺑﺼﻮرﺗﺔ اﻟﺮﺋﯿﺴﯿﻪ وﻟﻨﻘﻞ ھﻲ اﻻﺳﺎس او اﻟﺒﻨﯿﺔ اﻟﺘﺤﺘﯿﺔ ﻟﺒﺮﻧﺎﻣﺠﻨﺎ وﻻ ﺗﻘﻠﻖ‬
‫ﺗﺴﺘﻄﯿﻊ ان ﺗﻜﺘﺐ ﺑﺮاﻣﺠﻚ او اﻛﻮادك ﻣﻦ ﺧﻼل ﺑﺮﻧﺎﻣﺞ ال ‪ NOTEBAD‬اﻟﻤﺘﻮﻓﺮ ﻓﻲ ﻛﻞ ﺟﮫﺎز وإﻧﻨﻲ اﻓﻀﻞ ان‬
‫ﺗﺠﺪ ﻣﺤﺮر ﻟﻠﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ ﻓﻲ اﻻﻧﺘﺮﻧﺖ وھﺬا اﻓﻀﻞ ﻟﻜﻲ ﺗﻌﺮف ﻣﻮﻗﻊ اﻟﺨﻄﺄ ﻣﺒﺎﺷﺮة ﻣﻦ ﻏﯿﺮ ﻋﻨﺎء ‪.‬‬

‫وﻓﻲ ﻧﮫﺎﻳﺔ اﻟﻤﻘﺪﻣﻪ ھﺬي ارﻳﺪ اﻟﺘﻨﺒﯿﻪ اﻟﻰ ﺷﻲء اراه ﻛﺜﯿﺮا ﻓﻲ اﻻﻧﺘﺮﻧﺖ وھﻮ ﻳﻮﺟﺪ ﻓﺮق ﻛﺒﯿﺮ ﻋﻨﺪﻣﺎ ﻧﻘﻮل‬
‫ھﺬا ﻛﻮد ‪ JAVA‬او ﻛﻮد ‪ JAVASCRIPT‬ﻓﺎﻻﺧﺘﻼف ﻛﺒﯿﺮ ﺑﯿﻨﮫﻢ وإن ﻛﺎن اﻟﻤﺴﻤﻰ ﻳﻮﺣﻲ ﺑﻐﯿﺮ ذﻟﻚ واﻳﻀﺎ ﻳﻮﺟﺪ‬
‫ﻓﺮق ﺑﺴﯿﻂ ﺑﯿﻦ ال ‪ DHTML‬واﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ وإن ﻛﻨﺎ ﻧﺴﺘﺨﺪم ﻓﻲ ‪ DHTM‬اواﻣﺮ واﻛﻮاد ال ‪JAVA SCRIPT‬‬
‫ﺑﻞ ﻳﻜﻮن اﻻﻋﺘﻤﺎد اﻟﻜﺒﯿﺮ ﻋﻠﯿﮫﺎ وﻟﻜﻦ ھﺬي ﻋﺰﻳﺰ اﻟﻤﺘﺪرب ﻟﻐﺔ اذا ﺟﺎز ﺗﺴﻤﯿﺘﮫﺎ ﺛﺎﻧﯿﻪ وﻟﮫﺎ ﺗﻄﺒﯿﻘﺎﺗﮫﺎ اﻟﺤﺮﻛﯿﺔ‬
‫واﻟﺘﺄﺛﯿﺮﻳﺔ اﻟﺨﺎﺻﻪ وإﻧﻲ ارى اﻛﺜﺮ اﻟﻤﻮاﻗﻊ ﺗﻌﺮض ﻟﻠﻤﺴﺘﺨﺪﻣﯿﻦ اﻛﻮاد ﺟﺎھﺰه ﻟﻠﺘﺤﻤﯿﻞ او اﻟﻨﺴﺦ وﺗﻜﺘﺐ‬
‫ﻋﻨﮫﺎ اﻧﮫﺎ ‪ JAVASCRIPT‬وإﻧﻲ ارى ﻛﺜﯿﺮا ﻣﻨﮫﺎ ﺗﺴﻤﯿﺘﻪ اﻟﺼﺤﯿﺤﻪ ‪ DHTML‬اي اﻟﺪاﻳﻨﻤﻚ وﻟﯿﺲ اﻟﺠﺎﻓﺎ‬
‫ﺳﻜﺮﺑﺖ واﻧﺎ اﻗﻮل ﻛﺜﯿﺮا ﻣﻨﮫﺎ وﻟﯿﺲ ﺟﻤﯿﻌﮫﺎ ‪ ..‬وﻧﺤﻦ ھﻨﺎ ﻟﺴﻨﺎ ﻓﻲ ﻣﺤﺾ اﻟﻤﻘﺎرﻧﻪ ال ‪ JAVASCRIPT‬وال‬
‫‪ JAVA‬و ‪ DHTML‬ﻓﻠﻜﻼ ﻣﻨﮫﺎ اﻛﻮاده اﻟﺨﺎﺻﻪ واﺳﻠﻮﺑﻪ وﺗﻜﻨﯿﻜﻪ وﻳﺠﺐ ھﻨﺎ اﻟﺘﺒﯿﻪ ان ال ‪ JAVA‬ﺑﻌﯿﺪة ﻛﻞ اﻟﺒﻌﺪ‬
‫ﻋﻦ ال ‪ JAVASCRIPT‬ﻋﻠﻰ ﻋﻜﺲ ال ‪ DHTML‬اﻟﻘﺮﻳﺒﺔ ﺟﺪا ﻓﻼ اﻗﺎرن ﺑﯿﻦ ال ‪ JAVA‬و ال ‪ DHTML‬ﻣﻊ ال‬
‫‪ JAVASCRIPT‬وﻛﺎﻧﻨﻲ اﺳﺎوﻳﮫﻢ ﺑﺒﻌﺾ ﻓﺎل ‪ DHTML‬ﻗﺮﻳﺒﺔ ﺟﺪا او ﺗﺼﺐ ﻓﻲ ﻣﺼﺐ ﻧﻔﺴﻪ وﻟﻜﻦ ال ‪JAVA‬‬
‫ﺑﻌﯿﺪة ﻛﻞ اﻟﺒﻌﺪ ﺑﻞ ﻻ ﻳﻮﺟﺪ ﻣﻘﺎرﻧﻪ وﻟﮫﺎ اﻋﻤﺎﻟﮫﺎ واﻛﻮادھﺎ اﻟﺨﺎﺻﻪ وﻋﻤﻠﮫﺎ اﻟﺨﺎص ‪.‬‬

‫وﻳﻮﺟﺪ ﺑﻌﺾ اﻟﻤﻼﺣﻈﺎت اﻟﻤﮫﻤﻪ ﻗﺒﻞ اﻟﺒﺪء ﺑﺘﻌﻠﻢ ‪ 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‬ﻓﻼ ﯾﺒﺪو اﻟﻔﺮاغ واﺿﺢ ﻓﺄﺿﻄﺮ اﻟﻰ ﺟﻌﻠﻪ ﻓﺮاﻏﯿﻦ او اﻛﺜﺮ ﻟﻜﻲ ﺗﺮاه اﻧﺖ اﻧﻪ‬
‫ﻓﺮاغ واﺣﺪ وﻣﻦ ﻫﻨﺎ ﻛﻞ اﻟﺒﺮاﻣﺞ اﻟﻤﻮﺟﻮده اﻟﺘﻲ ﻛﺘﺒﺖ ﻓﻲ اﻟﻜﺘﺎب ﻣﺮﻓﻘﻪ ﻣﻊ اﻟﻜﺘﺎب ﻛﺼﻔﺤﺎت اﻧﺘﺮﻧﺖ ﺗﺴﺘﻄﯿﻊ‬
‫اﺳﺘﺨﺪاﻣﻬﺎ ﺑﺪﻻ ﻣﻦ اﻟﻨﺴﺦ ﻣﺒﺎﺷﺮة واﻟﻠﺼﻖ ‪.‬‬
‫§ ﻃﺮق ﻛﺘﺎﺑﺔ ﻛﻮد اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ ‪..‬‬
‫‪ -١‬اﻟﻄﺮﯾﻘﺔ اﻷوﻟﻰ ‪:‬‬

‫>"‪<script type = " text/javascript‬‬


‫‪-‬‬
‫‪-‬‬
‫‪-‬‬
‫ﻫﻨﺎ ﯾﻜﺘﺐ ﻛﻮد اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ‬
‫‪-‬‬
‫‪-‬‬
‫>‪</script‬‬

‫‪ -٢‬اﻟﻄﺮﯾﻘﺔ اﻟﺜﺎﻧﯿﺔ ‪:‬‬


‫>"‪<script language="JavaScript‬‬
‫‪-‬‬
‫‪-‬‬
‫‪-‬‬
‫ﻫﻨﺎ ﯾﻜﺘﺐ ﻛﻮد اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ‬
‫‪-‬‬
‫‪-‬‬
‫>‪</script‬‬

‫ﯾﺠﺪرﺑﻨﺎ اﻟﻤﻌﺮﻓﺔ ﻫﻨﺎ ان ﻛﻮد اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ ﺗﺴﺘﻄﯿﻊ ﻛﺘﺎﺑﺘﻪ ﺑﺒﺮﻧﺎﻣﺞ ) ‪ ( notepad‬او ﺑﺄي ﻣﺤﺮر اﺧﺮ‬
‫ﻣﺨﺘﺺ ﺑﻜﺘﺎﺑﺔ ﻛﻮد اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ ‪.‬‬

‫ﻣﻮﺿﻊ ﻛﻮد اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ ‪..‬‬ ‫§‬

‫ﯾﻜﺘﺐ ﻋﺎدة ﻛﻮد اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ ﻓﻲ رأس ﺻﻔﺤﺔ ) ‪ ( html‬اي ﺑﯿﻦ وﺳﻤﻲ رأس اﻟﺼﻔﺤﺔ ‪:‬‬
‫) >‪( <head> ----------- </head‬‬

‫ﻣﻼﺣﻈﺔ ‪:‬‬
‫ﻗﺪ ﯾﻀﻊ اﻟﺒﻌﺾ ﻛﻮد اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ ﻓﻲ ذﯾﻞ اﻟﺼﻔﺤﺔ او ﻓﻲ ﺟﺴﻤﻬﺎ وﻫﺬا وارد اﻟﺤﺪوث ‪..‬‬

‫ﺗﻤﺜﯿﻠﻪ ‪:‬‬ ‫§‬


‫>‪<html‬‬
‫>‪</title‬اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ>‪<head><title‬‬
‫>"‪<script type = " text/javascript‬‬
‫‪-‬‬
‫ﯾﻜﺘﺐ ﻫﻨﺎ اﻟﻜﻮد اﻟﻤﺮﻏﻮب ﺑﻪ‬
‫‪-‬‬
‫>‪</script‬‬
‫>‪</head‬‬
‫>‪<body></body‬‬

‫>‪</html‬‬

‫ﺗﻌﺮﯾﻖ ﻣﺒﺪأي ﺑﺒﻌﺾ اواﻣﺮ اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ ‪..‬‬

‫‪ -١‬أﻣﺮ اﻟﻄﺒﺎﻋﺔ ‪:‬‬

‫اﻟﻄﺮﯾﻘﺔ اﻷوﻟﻰ ‪ :‬ﻃﺒﺎﻋﺔ ﺟﻤﻠﺔ ﻻ ﯾﻘﻊ ﻋﻠﯿﻬﺎ ﺗﺄﺛﯿﺮ اي وﺳﻢ ﻣﻦ وﺳﻮم اﻟـ ) ‪... ( html‬‬

‫;)" ﻫﻨﺎ اﻟﺠﻤﻠﺔ اﻟﻤﺮاد ﻃﺒﺎﻋﺘﻬﺎ"(‪document.write‬‬

‫‪١‬‬
‫اﻟﻄﺮﯾﻘﺔ اﻟﺜﺎﻧﯿﺔ ‪ :‬ﻃﺒﺎﻋﺔ ﺟﻤﻠﺔ ﯾﻘﻊ ﻋﻠﯿﻬﺎ ﺗﺄﺛﯿﺮ وﺳﻢ ال ) ‪... ( html‬‬
‫;)">‪ </h1‬ﻫﻨﺎ اﻟﺠﻤﻠﺔ اﻟﻤﺮاد ﻃﺒﺎﻋﺘﻬﺎ >‪document.write("<h1‬‬

‫اﻟﻄﺮﯾﻘﺔ اﻟﺜﺎﻟﺜﺔ ‪ :‬ﻃﺒﺎﻋﺔ ﺟﻤﻠﺔ ﯾﻘﻊ ﻋﻠﯿﻬﺎ ﺗﺄﺛﯿﺮ وﺳﻢ ال ) ‪ ( htm‬و ال ) ‪... ( style‬‬
‫;)">‪ </h1‬ﻫﻨﺎ اﻟﺠﻤﻠﺔ اﻟﻤﺮاد ﻃﺒﺎﻋﺘﻬﺎ >"\‪document.write("<h1 style=\"color : red‬‬

‫اﻟﻄﺮﯾﻘﺔ اﻟﺮاﺑﻌﺔ ‪ :‬ﻃﺒﺎﻋﺔ ﻗﯿﻤﺔ ﻣﺘﻐﯿﺮ ‪...‬‬


‫;) ‪document.write( sum‬‬

‫اﻟﻄﺮﯾﻘﺔ اﻟﺨﺎﻣﺴﺔ ‪ :‬ﻃﺒﺎﻋﺔ ﻗﯿﻤﺔ ﻣﺘﻐﯿﺮ ﯾﺴﺒﻘﻪ ﺟﻤﻠﺔ ﻧﺼﯿﺔ ‪..‬‬

‫;) ‪ " + sum‬اﻟﻨﺎﺗﺞ ﻫﻮ ‪document.write(":‬‬

‫اﻟﻄﺮﯾﻘﺔ اﻟﺴﺎدﺳﺔ ‪ :‬ﻃﺒﺎﻋﺔ ﻗﯿﻤﺔ ﻣﺘﻐﯿﺮ ﯾﺴﺒﻘﻪ وﯾﻌﻘﺒﻪ ﺟﻤﻠﺔ ﻧﺼﯿﺔ ‪..‬‬

‫;)" ﻟﻠﻌﻤﻠﯿﺔ " ‪ " + sum +‬اﻟﻨﺎﺗﺞ ﻫﻮ ‪document.write(":‬‬

‫ﻣﻼﺣﻈﺎت ﻣﻬﻤﺔ ‪:‬‬


‫‪ o‬اي ﺟﻤﻠﺔ ﻧﺼﯿﺔ ﺗﺮﯾﺪ ان ﺗﻀﻌﻬﺎ ﺑﺪاﺧﻞ ﻛﻮد اﻟﻄﺒﺎﻋﺔ ﯾﺠﺐ ان ﺗﺤﺼﺮﻫﺎ ﺑﯿﻦ ) " ( ﺣﺘﻰ ﻟﻮ اﺣﺘﻮت ﻋﻠﻰ وﺳﻢ‬
‫ال )‪(html‬‬

‫‪ o‬ﻃﺒﺎﻋﺔ ﻗﯿﻤﺔ ﻣﺘﻐﯿﺮ ‪ ....‬وﯾﻮﺟﺪ ﻟﻬﺎ اﻛﺜﺮ ﻣﻦ ﺣﺎﻟﺔ ‪:‬‬


‫‪ -١‬اذا ﻛﻨﺖ ﺗﺮﯾﺪ ﻓﻘﻂ ان ﺗﻄﺒﻊ ﻗﯿﻤﺔ اﻟﻤﺘﻐﯿﺮ ﺑﻤﻔﺮده ‪ ...‬ﺗﻀﻌﻪ ﺑﺪاﺧﻞ أﻣﺮ اﻟﻄﺒﺎﻋﺔ ﻣﻦ ﻏﯿﺮ ان ﺗﺤﺼﺮه ﺑـ ) " (‪.‬‬
‫‪ -٢‬اذا ﻛﻨﺖ ﺗﺮﯾﺪ ﻃﺒﺎﻋﺔ ﻗﯿﻤﺔ ﻣﺘﻐﯿﺮ ﺗﺴﺒﻘﻪ ﺟﻤﻠﺔ ﻧﺼﯿﺔ ﯾﺠﺐ ان ﺗﺤﺼﺮ اﻟﺠﻤﻠﺔ اﻟﻨﺼﯿﺔ ﺑﯿﻦ ) " ( وﻣﻦ ﺛﻢ ﺗﺬﻛﺮ‬
‫اﻟﻤﺘﻐﯿﺮ اﻟﻤﺮاد ﻃﺒﺎﻋﺔ ﻗﯿﻤﺘﻪ وﻟﻜﻦ ﯾﺠﺐ ان ﺗﻀﻊ ﻗﺒﻠﻪ ) ‪ ( " +‬وﻟﺘﻮﺿﯿﺢ اﻛﺜﺮ ﺗﻀﻊ اﺷﺎرة ) ‪ ( +‬ﺑﺎﻟﺠﻬﺔ اﻟﺘﻲ‬
‫ﺑﻬﺎ اﻟﻨﺺ‪....‬‬

‫ﻣﺜﻼ ‪ ...‬ﺟﺎء اﻟﻨﺺ ﻗﺒﻞ اﻟﻤﺘﻐﯿﺮ ﻧﻀﻊ اﺷﺎرة اﻟـ ) ‪ ( +‬ﻗﺒﻞ اﻟﻤﺘﻐﯿﺮ‬

‫;) ‪ " + sum‬اﻟﻨﺎﺗﺞ ﻫﻮ ‪document.write(" :‬‬

‫ﻣﺜﻼ ‪ ...‬ﺟﺎء اﻟﻨﺺ ﺑﻌﺪ اﻟﻤﺘﻐﯿﺮ ﻧﻀﻊ اﺷﺎرة اﻟـ ) ‪ ( +‬ﺑﻌﺪ اﻟﻤﺘﻐﯿﺮ‬

‫;) " اﻟﻨﺎﺗﺞ ﻫﻮ ‪document.write( sum +" :‬‬

‫ﻣﺜﻼ ‪ ...‬ﺟﺎء اﻟﻨﺺ ﺑﻌﺪ اﻟﻤﺘﻐﯿﺮ وﻗﺒﻠﻪ ﻧﻀﻊ اﺷﺎرة ال ) ‪ ( +‬ﺑﻌﺪ اﻟﻤﺘﻐﯿﺮ وﻗﺒﻠﻪ ‪..‬‬

‫;)" ﻟﻠﻌﻤﻠﯿﺔ " ‪ " + sum +‬اﻟﻨﺎﺗﺞ ﻫﻮ ‪document.write(":‬‬

‫‪٢‬‬
‫ﯾﻌﻨﻲ ﺑﺈﺧﺘﺼﺎر ﺿﻊ اﺷﺎرة ) ‪ ( +‬ﺑﺠﺎﻧﺐ اﻟﻤﺘﻐﯿﺮ اﻟﻤﺮاد ﻃﺒﺎﻋﺘﻪ ﻣﻦ اﻟﺠﻬﺔ اﻟﺘﻲ ﺑﻬﺎ اﻟﺠﻤﻠﺔ اﻟﻨﺼﯿﺔ واذا ﻟﻢ ﯾﻜﻦ‬
‫ﻫﻨﺎك ﺟﻤﻠﺔ ﻧﺼﯿﺔ اذا ﻻ ﺗﻀﻊ اﺷﺎرة ) ‪( +‬‬

‫ﺳﻮف ﻧﺬﻛﺮ ﻣﺎ ﻫﻮ اﻟﻤﺘﻐﯿﺮ وﻣﺎ ﻧﻘﺼﺪ ﺑﻪ ﻻﺣﻘﺎ ﻓﻼ ﺗﻘﻠﻖ ﻓﻤﺎ ﻋﻠﯿﻚ ﺳﻮى ﻣﻌﺮﻓﺔ ﻃﺒﺎﻋﺘﻪ اﻣﺎ ﻣﺎ ﻫﻮ وﻷي ﻏﺮض‬
‫ﯾﺴﺘﺨﺪم ﺳﻮف ﺗﻌﺮف ﻻﺣﻘﺎ ‪..‬‬

‫‪ o‬ﺗﺴﺘﻄﯿﻊ ان ﺗﺴﺘﺨﺪم )‪ (document.writeln‬ﺑﺪﻻ ﻣﻦ )‪ (document.write‬ﻓﺒﻜﺘﺎﺑﺔ اﻷول ﯾﺘﺮك‬


‫ﻣﺴﺎﻓﺔ ﺑﯿﻦ ﻛﻞ ﻛﻠﻤﺔ ﻓﻲ ﺟﻤﻠﺔ اﻟﻄﺒﺎﻋﺔ اذا "ﺟﺎز اﻟﺘﻌﺒﯿﺮ" ﺑﺸﻜﻞ ﻋﻤﻠﻲ ‪..‬‬

‫‪ o‬ﻟﻄﺒﺎﻋﺔ ﺟﻤﻠﺔ ﻓﻲ ﺳﻄﺮﯾﻦ اي " اﻟﻨﺰول اﻟﻰ ﺳﻄﺮ ﺟﺪﯾﺪ " ﻧﻀﻊ ﺑﺪاﺧﻞ ﺟﻤﻠﺔ اﻟﻄﺒﺎﻋﺔ )>‪ (<br /‬ﻗﺒﻞ اﻟﺠﻤﻠﺔ‬
‫اﻟﺘﻲ ﺗﺮﯾﺪ ان ﻧﺠﻌﻠﻬﺎ ﻓﻲ ﺳﻄﺮ ﺟﺪﯾﺪ ‪..‬‬

‫ﻣﺜﻞ ‪:‬‬
‫;)" ‪document.write(" Arab <br />Top‬‬

‫اﻟﻄﺒﺎﻋﺔ ﺳﻮف ﺗﻜﻮن ﺑﻬﺬا اﻟﺸﻜﻞ ‪:‬‬


‫‪Arab‬‬
‫‪Top‬‬
‫اي ﻛﻞ ﻛﻠﻤﺔ ﻓﻲ ﺳﻄﺮ ‪...‬‬

‫‪ -٢‬ﺧﺮوج ﻧﺎﻓﺬة ﻟﻠﻤﺴﺘﺨﺪم ﻧﺤﺪد ﻧﺤﻦ ﻣﺎ ﯾﻜﺘﺐ ﺑﻬﺎ وﻫﻲ ﺧﺎﺻﻪ ﻓﻲ ﻛﺎﺋﻨﺎت اﻟﻨﻮاﻓﺬ ‪.Window Object‬‬

‫ﻛﻬﺬه اﻟﻨﺎﻓﺬة ‪:‬‬

‫وﺗﺴﻤﻰ ﻫﺬه اﻟﻨﺎﻓﺬة ﺑﺎﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ ) ‪ ( alert‬وﯾﻜﺘﺐ ﻛﻮدﻫﺎ ﺑﻬﺬه اﻟﻄﺮﯾﻘﺔ ‪...‬‬

‫;)" اﻫﻼ ﺑﻚ ﻓﻲ ﻣﻮﻗﻌﻨﺎ "(‪window.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‬‬ ‫ﻟﻜﺘﺎﺑﺔ رﻣﺰ ) ' (‬ ‫'\‬

‫‪٣‬‬
‫‪ -٣‬ﺧﺮوج ﻧﺎﻓﺬة ﻟﻠﻤﺴﺘﺨﺪم ﯾﺤﺪد ﻫﻮ ﻣﺎ ﯾﻜﺘﺐ ﺑﻬﺎ " اي ﻧﺎﻓﺬه ﻗﺮاءة ﻣﻦ ﻟﻮﺣﺔ اﻟﻤﻔﺎﺗﯿﺢ " وﻫﻲ ﺧﺎﺻﻪ ﺑﻜﺎﺋﻨﺎت‬
‫اﻟﻨﻮاﻓﺬ ‪. Window Object‬‬

‫ﻛﻬﺬه اﻟﻨﺎﻓﺬة ‪:‬‬

‫وﺗﺴﻤﻰ ﻫﺬه اﻟﻨﺎﻓﺬة ﺑﺎﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ ) ‪ ( prompt‬وﯾﻜﺘﺐ ﻛﻮدﻫﺎ ﺑﻬﺬه اﻟﻄﺮﯾﻘﺔ ‪...‬‬

‫;)"إﺳﻤﻚ "‪",‬ﻣﻦ ﻓﻀﻠﻚ أدﺧﻞ إﺳﻤﻚ "( ‪window.prompt‬‬

‫ﻣﻼﺣﻈﺔ ‪:‬‬
‫ﯾﺄﺧﺬ ﻛﻮد اﻟـ ) ‪ ( prompt‬ﺑﺪاﺧﻠﻪ ﻗﯿﻤﺘﯿﻦ اﻻوﻟﻰ ﯾﻜﺘﺐ ﺑﻬﺎ ﻣﺎ ﺳﻮف ﯾﺨﺮج ﻟﻠﻤﺴﺘﺨﺪم ﻓﻲ أﻋﻠﻰ اﻟﻨﺎﻓﺬة ‪ ..‬واﻟﻘﯿﻤﺔ‬
‫اﻟﺜﺎﻧﯿﺔ ﯾﻜﺘﺐ ﺑﻬﺎ ﻗﯿﻤﺔ اﺑﺘﺪاﺋﯿﺔ ﺑﺪاﺧﻞ ﺻﻨﺪوق اﻟﻜﺘﺎﺑﺔ وﻫﺬه اﻟﻘﯿﻤﺔ ﻟﯿﺲ ﻟﻬﺎ اي ﻗﯿﻤﺔ ﻓﻌﻠﯿﺔ ﻓﻬﻲ ﻣﺎ ﺗﻠﺒﺚ ﺣﺘﻰ ﯾﻨﺘﻬﻲ‬
‫دورﻫﺎ ﺑﻤﺠﺮد ان ﯾﻜﺘﺐ اﻟﻤﺴﺘﺨﺪم ﻣﻜﺎﻧﻬﺎ اﺳﻤﻪ او اي ﺷﻲء ﯾﺮﯾﺪه ‪ ...‬ﺟﺮب ان ﺗﻀﻊ ﻫﺬا اﻻﻣﺮ وإﻧﻈﺮ ﻣﺎذا‬
‫ﯾﺨﺮج ﻟﻚ واﻟﺬي ﯾﻌﺘﺒﺮ اﯾﻀﺎ ﻣﻦ ﻛﺎﺋﻨﺎت اﻟﻨﻮاﻓﺬ ‪Window Object‬‬

‫;)”ﻫﻞ ﺗﺮﯾﺪ ﺣﻔﻆ اﻟﺒﯿﺎﻧﺎت ؟"(‪var con = confirm‬‬

‫وﻫﻲ ﻋﺒﺎرة ﻋﻦ ﻧﺎﻓﺬة ﺗﺨﺮج ﻟﻠﻤﺴﺘﺨﺪم ﻟﺴﺆاﻟﻪ ﻋﻦ ﻗﺒﻮل أو رﻓﺾ ﺷﻲء ﻣﻌﯿﻦ أﻧﺖ ﺗﺤﺪده ‪.‬‬

‫اﻟﻤﺘﻐﯿﺮات ‪:‬‬ ‫§‬


‫ﻧﻈﺮة ﺳﺮﯾﻌﺔ ﻋﻠﻰ اﻟﻤﺘﻐﯿﺮات ‪:‬‬
‫ﻛﻤﺎ ﺗﻌﻠﻢ ﻓﻲ أي ﻟﻐﺔ ﺑﺮﻣﺠﺔ ﺗﻌﺘﺒﺮ اﻟﻤﺘﻐﯿﺮات ذو ﻓﺎﺋﺪة ﻛﺒﯿﺮة ﻓﺒﻮاﺳﻄﺘﻬﺎ ﻧﺴﺘﻄﯿﻊ اﻟﺘﺤﻜﻢ ﺑﺒﺮﻧﺎﻣﺠﻨﺎ ﺑﻜﻞ‬
‫ﺳﻬﻮﻟﺔ ‪...‬‬
‫ﻓﻔﻲ ﻟﻐﺔ اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ ﺗﻌﺮف اﻟﻤﺘﻐﯿﺮات ﺑـ ) ‪.( var‬‬

‫ﻣﺜﺎل ‪:‬‬

‫; ‪var name‬‬

‫وﯾﺠﺪر اﻟﺘﻨﺒﯿﻪ ﻫﻨﺎ اﻧﻪ أذا اردﻧﺎ أن ﯾﻜﻮن اﻟﻤﺘﻐﯿﺮ ﻗﯿﻤﺔ رﻗﻤﯿﺔ ) ‪ " ( integer Or float‬أﻋﺪاد ﺻﺤﯿﺤﺔ أو‬
‫أﻋﺪاد ذات أرﻗﺎم ﻋﺸﺮﯾﺔ " ﻓﺈﻧﻨﺎ ﻧﻘﻮم ﺑﺘﺤﻮﯾﻠﻬﺎ ﺑﻬﺬه اﻟﻄﺮﯾﻘﺔ ‪:‬‬
‫; ) أﺳﻢ اﻟﻤﺘﻐﯿﺮ ﻫﻨﺎ ( ‪1- parseInt‬‬

‫وﻫﺬا ﺳﻮف ﯾﺤﻮل اﻟﻌﺪد اﻟﻰ ﻋﺪد ﺻﺤﯿﺢ ) ‪ ( integer‬أي ﯾﻜﻮن ﻛﺘﺎﺑﺔ اﻟﻜﻮد ﻛﺎﻟﺘﺎﻟﻲ ‪:‬‬

‫; ‪var number = 55‬‬


‫; )‪parseInt (number‬‬

‫‪٤‬‬
‫; ) أﺳﻢ اﻟﻤﺘﻐﯿﺮ ﻫﻨﺎ ( ‪2- parseFloat‬‬

‫وﻫﺬا ﺳﻮف ﯾﺤﻮل اﻟﻌﺪد اﻟﻰ ﻋﺪد ﻋﺸﺮي ) ‪ ( float‬أي ﯾﻜﻮن ﻛﺘﺎﺑﺔ اﻟﻜﻮد ﻛﺎﻟﺘﺎﻟﻲ ‪:‬‬

‫; ‪var number = 5.4‬‬


‫; )‪parseFloat (number‬‬

‫ﻣﻼﺣﻈﺔ ‪:‬‬

‫ﻋﻠﯿﻚ اﻹﻟﺘﺰام ﺑﺸﻜﻞ اﻟﺤﺮف أي اﻟﺤﺮف اﻟﺼﻐﯿﺮ واﻟﻜﺒﯿﺮ ) ‪. ( parseFloat‬‬


‫‪..‬وﻟﻠﺤﺪﯾﺚ ﺑﻘﯿﺔ ﺳﻮف ﯾﺬﻛﺮ ﻓﻲ وﻗﺘﻪ‪.‬‬

‫ﻟﻨﺄﺧﺬ أﻣﺜﻠﺔ ﻋﻠﻰ ﻣﺎ ﺳﺒﻖ وﻧﻄﺒﻘﻬﺎ ‪...‬‬

‫ﻣﺜﺎل ‪: ١‬‬

‫>"‪<html dir="rtl‬‬
‫>‪</title‬اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ>‪<head><title‬‬
‫>‪<script‬‬
‫; ‪var name‬‬
‫; ) "إﺳﻤﻚ" ‪ " ,‬ﻟﻄﻔﺎ أدﺧﻞ إﺳﻤﻚ" ( ‪name = window.prompt‬‬
‫; ) ‪ " + name‬أﻫﻼ ﺑﻚ " (‪document.write‬‬
‫>‪</script‬‬
‫>‪</head‬‬
‫>‪<body> </body‬‬

‫>‪</html‬‬

‫‪٥‬‬
‫ﻓﻲ ﻫﺬا اﻟﻤﺜﺎل ﻗﻤﻨﺎ ﺑﻤﺎ ﯾﻠﻲ ‪:‬‬
‫ﻋﺮﻓﻨﺎ ﻣﺘﻐﯿﺮ وﺟﻌﻠﻨﺎ اﺳﻢ اﻟﻤﺘﻐﯿﺮ ﻫﻮ ) ‪. ( name‬‬

‫ﺟﻌﻠﻨﺎ ﻫﺬا اﻟﻤﺘﻐﯿﺮ ﯾﺴﺎوي اﻟﻘﯿﻤﺔ اﻟﺘﻲ ﺳﻮف ﯾﺪﺧﻠﻬﺎ اﻟﻤﺴﺘﺨﺪم ﻣﻦ ﻟﻮﺣﺔ اﻟﻤﻔﺎﺗﯿﺢ وذﻟﻚ ﻣﻦ ﺧﻼل اﻷﻣﺮ‬
‫) ‪ . ( window.prompt‬ﻓﺒﻤﺠﺮد ﺧﺮوج اﻟﻨﺎﻓﺬة ﻟﻠﻤﺴﺘﺨﺪم وﯾﻜﺘﺐ ﺑﻬﺎ اﺳﻤﻪ ﺳﻮف ﯾﺨﺰن اﻷﺳﻢ اﻟﻤﺪﺧﻞ‬
‫ﺑﺪاﺧﻞ اﻟﻤﺘﻐﯿﺮ ) ‪ ( name‬وﻫﺬا واﺿﺢ ﻣﻦ اﻟﻌﺒﺎرة ‪:‬‬
‫; ) "إﺳﻤﻚ" ‪ ",‬ﻟﻄﻔﺎ أدﺧﻞ إﺳﻤﻚ" ( ‪name = window.prompt‬‬

‫ﺛﻢ ﻗﻤﻨﺎ ﺑﻄﺒﺎﻋﺔ اﻟﻤﺘﻐﯿﺮ ) ‪ ( name‬وﻫﺬا ﻣﻦ ﺧﻼل اﻷﻣﺮ ‪:‬‬

‫; ) ‪ " + name‬أﻫﻼ ﺑﻚ " (‪document.write‬‬

‫وﺑﺎﻟﺘﺎﻟﻲ ﺳﻮف ﯾﻄﺒﻊ ﻟﻨﺎ ﻣﺎ ﺧﺰن داﺧﻞ اﻟﻤﺘﻐﯿﺮ وﻫﻮ إﺳﻢ اﻟﻤﺴﺘﺨﺪم اﻟﺬي أدﺧﻠﻪ ‪ .‬وﺑﻌﺪ ذﻟﻚ ﺳﻮف ﯾﻄﺒﻊ اﻟﺠﻤﻠﺔ‬
‫اﻟﻨﺼﯿﺔ اﻟﺘﻲ ﻛﺘﺒﻨﺎﻫﺎ وﻫﻲ " أﻫﻼ ﺑﻚ " ‪ ...‬أي ﺳﻮف ﯾﻄﺒﻊ ﻟﻨﺎ اﻟﺠﻤﻠﺔ اﻟﺘﺎﻟﯿﺔ ﻋﻠﻰ ﻓﺮض اﻧﻨﺎ ﻗﻤﻨﺎ ﺑﺈدﺧﺎل اﻹﺳﻢ‬
‫" أﻫﻼ ﺑﻚ ﻣﺤﻤﺪ "‬ ‫" ﻣﺤﻤﺪ " ‪:‬‬

‫ﻣﺜﺎل ‪: ٢‬‬

‫>‪<html‬‬
‫>‪</title‬اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ >‪<head><title‬‬
‫> "‪<script type = "text/javascript‬‬
‫; )"أﻫﻼ ﺑﻚ"( ‪window.alert‬‬
‫>‪</script‬‬
‫>‪</head‬‬
‫>‪<body></body‬‬

‫>‪</html‬‬

‫وﻓﻲ ﻫﺬا اﻟﻤﺜﺎل ﺧﺮوج ﻧﺎﻓﺬه ﻟﻠﻤﺴﺘﺨﺪم وﻫﻲ ﻧﺎﻓﺬة ) ‪ ( alert‬اﻟﺘﻲ ذﻛﺮﻧﺎﻫﺎ ﺳﺎﺑﻘﺎ ‪..‬‬

‫اﻟﻌﻤﻠﯿﺎت اﻟﺤﺴﺎﺑﯿﺔ ‪:‬‬ ‫§‬

‫ﻣﺜﺎل‬ ‫ﺧﻮارزﻣﯿﺔ اﻟﺼﯿﻐﺔ‬ ‫اﻟﺼﯿﻐﺔ‬ ‫أﺳﻢ اﻟﻌﻤﻠﯿﺔ اﻟﺤﺴﺎﺑﯿﺔ‬


‫‪x+y‬‬ ‫‪x+y‬‬ ‫‪+‬‬ ‫ﻋﻤﻠﯿﺔ اﻟﺠﻤﻊ‬
‫‪x–y‬‬ ‫‪y –x‬‬ ‫‪-‬‬ ‫ﻋﻤﻠﯿﺔ اﻟﻄﺮح‬
‫‪X*y‬‬ ‫‪x*y‬‬ ‫*‬ ‫ﻋﻤﻠﯿﺔ اﻟﻀﺮب‬
‫‪x/y‬‬ ‫‪x/y‬‬ ‫‪/‬‬ ‫ﻋﻤﻠﯿﺔ اﻟﻘﺴﻤﺔ‬
‫‪x%y‬‬ ‫‪x%y‬‬ ‫‪%‬‬ ‫ﻋﻤﻠﯿﺔ ﺑﺎﻗﻲ اﻟﻘﺴﻤﺔ‬

‫‪٦‬‬
‫اﻟﻌﻤﻠﯿﺎت اﻟﻤﻨﻄﻘﯿﺔ ‪:‬‬ ‫§‬

‫ﻣﺜﺎل‬ ‫وﺻﻒ اﻟﺼﯿﻐﺔ‬ ‫ﺗﻤﺜﯿﻠﻬﺎ ﺑﺎﻟﺠﺎﻓﺎ‬ ‫اﻟﺼﯿﻐﺔ‬


‫ﻗﯿﻤﺔ ‪ x‬ﺗﺴﺎوي ﻗﯿﻤﺔ ‪y‬‬ ‫‪x == y‬‬ ‫==‬ ‫=‬
‫ﻗﯿﻤﺔ ‪ x‬ﻻ ﺗﺴﺎوي ﻗﯿﻤﺔ ‪y‬‬ ‫‪x != y‬‬ ‫=!‬ ‫≠‬
‫ﻗﯿﻤﺔ ‪ x‬أﻛﺒﺮ ﻣﻦ ﻗﯿﻤﺔ ‪y‬‬ ‫‪x>y‬‬ ‫>‬ ‫>‬
‫ﻗﯿﻤﺔ ‪ x‬أﻗﻞ ﻣﻦ ﻗﯿﻤﺔ ‪y‬‬ ‫‪x<y‬‬ ‫<‬ ‫<‬
‫ﻗﯿﻤﺔ ‪ x‬أﻛﺒﺮ أو ﺗﺴﺎوي ﻗﯿﻤﺔ ‪y‬‬ ‫‪x >= y‬‬ ‫=>‬ ‫=>‬
‫ﻗﯿﻤﺔ ‪ x‬أﻗﻞ أو ﺗﺴﺎوي ﻗﯿﻤﺔ ‪y‬‬ ‫‪x <= y‬‬ ‫=<‬ ‫=<‬

‫ﻣﻼﺣﻈﺔ ‪:‬‬
‫ﯾﻮﺟﺪ أوﻟﻮﯾﺎت ﺗﻌﺘﻤﺪ ﻓﻲ اﻟﻌﻤﻠﯿﺎت اﻟﺤﺴﺎﺑﯿﺔ اﻟﺒﺮﻣﺠﯿﺔ‪.‬‬

‫• ‪‬ﻟﻨﺄﺧﺬ ﺑﻌﺾ اﻟﻌﻤﻠﯿﺎت اﻟﺤﺴﺎﺑﯿﺔ ﺑﺸﻜﻞ ﺳﺮﯾﻊ ‪:‬‬

‫; ‪var number = 4‬‬


‫; ‪number+ = 2‬‬

‫اﻟﻤﺘﻐﯿﺮ ) ‪ ( number‬ﻛﺎن ﯾﺤﻤﻞ اﻟﻘﯿﻤﺔ ) ‪ ( 4‬ﺛﻢ أﺿﻔﻨﺎ ﻟﻪ ) ‪ ( 2‬ﻓﺄﺻﺒﺢ اﻟﻨﺎﺗﺞ ) ‪.( 6‬‬

‫وﯾﻤﻜﻦ أن ﻧﻜﺘﺐ اﻟﻌﻤﻠﯿﺎت اﻟﺴﺎﺑﻘﺔ ﺑﻄﺮﯾﻘﺔ ﺑﺮﻣﺠﯿﺔ أﺧﺮى وﺳﻮف ﯾﺨﺮج ﻟﻨﺎ ﻧﻔﺲ اﻟﻨﺎﺗﺞ ‪:‬‬

‫; ‪var number = 4‬‬


‫; ‪number= number+ 2‬‬

‫وﻣﺎ ﯾﻨﻄﺒﻖ ﻋﻠﻰ ﻋﻤﻠﯿﺔ اﻟﺠﻤﻊ ﯾﻨﻄﺒﻖ ﻋﻠﻰ ﺟﻤﯿﻊ اﻟﻌﻤﻠﯿﺎت اﻟﺤﺴﺎﺑﯿﺔ اﻷﺧﺮى ‪....‬‬

‫ﻣﺜﺎل ‪:‬‬

‫; ‪var number = 4‬‬


‫;‪number * = number‬‬

‫وﻫﻲ ﻋﻤﻠﯿﺔ ﺿﺮب وﺿﻌﻨﺎ ﺑﺪاﺧﻞ اﻟﻤﺘﻐﯿﺮ ) ‪ ( number‬ﻗﯿﻤﺔ ) ‪ ( 4‬ﺛﻢ اﺟﺮﯾﻨﺎ ﻋﻤﻠﯿﺔ اﻟﻀﺮب ﻋﻠﻰ ﻫﺬا‬
‫اﻟﻤﺘﻐﯿﺮ اﻟﺬي ﯾﺤﺘﻮي ﻋﻠﻰ ) ‪ ( 4‬وﻫﻲ ﺿﺮﺑﻪ ﺑﻨﻔﺴﻪ وﺑﺎﻟﺘﺎﻟﻲ اﻟﻨﺎﺗﺞ ﻫﻨﺎ ﯾﺴﺎوي ) ‪.( 16‬‬

‫‪٧‬‬
‫§ ﺟﻤﻞ اﻟﺸﺮط ‪:‬‬
‫ﻗﺪ ﻧﺤﺘﺎج أﺛﻨﺎء ﻛﺘﺎﺑﺘﻨﺎ ﻟﻠﺒﺮﻧﺎﻣﺞ أن ﻧﻀﻊ ﺟﻤﻠﺔ ﺷﺮط أو أﻛﺜﺮ ﺑﻪ ﻓﺒﻨﺎﺗﺞ ﺟﻤﻠﺔ اﻟﺸﺮط ﻧﺴﺘﻄﯿﻊ أن ﻧﺘﺤﻘﻖ ﻣﻦ‬
‫اﻟﻤﻄﺎﺑﻘﺔ أو ﻋﺪﻣﻬﺎ‪ ..‬إذا ﻫﻲ ﻣﻘﺎرﻧﺔ ﺑﯿﻦ ﻗﯿﻤﺘﯿﻦ ﻗﺪ ﯾﺘﻄﺎﺑﻘﻮا وﻋﻨﺪﻫﺎ ﯾﻜﻮن اﻟﺠﻮاب ) ‪ ( True‬أي ﺻﺤﯿﺢ أو ﻗﺪ‬
‫ﻻ ﯾﺘﻄﺎﺑﻘﻮا وﻋﻨﺪﻫﺎ ﯾﻜﻮن اﻟﺠﻮاب ) ‪ ( False‬أي ﺧﺎﻃﺊ ‪.‬‬
‫وﻟﺘﻮﺿﯿﺢ اﻟﺼﻮرة‪ ،‬ﻛﺄن ﻧﺘﺤﻘﻖ ﻣﻦ ﻛﻠﻤﺔ اﻟﺴﺮ ﻫﻞ ﻫﻲ ﺻﺤﯿﺤﺔ أم ﻻ إذا ﻫﻨﺎ ﺳﻮف ﯾﻜﻮن ﻟﺪﯾﻨﺎ ﻛﻠﻤﺘﯿﻦ ﺳﻮف‬
‫ﻧﻘﺎرن ﺑﯿﻨﻬﻤﺎ وﻫﻤﺎ ﻛﻠﻤﺔ اﻟﺴﺮ اﻟﻤﺴﺠﻠﺔ ﻟﺪﯾﻨﺎ وﻛﻠﻤﺔ اﻟﺴﺮ اﻟﺘﻲ ﺳﻮف ﯾﺪﺧﻠﻬﺎ اﻟﻤﺴﺘﺨﺪم ‪.‬‬

‫ﻟﺘﺘﻌﺮف إذا ﻋﻠﻰ ﺟﻤﻞ اﻟﺸﺮط وأﻧﻮاﻋﻬﺎ ‪:‬‬ ‫§‬

‫‪ -١‬اﻟﺪاﻟﺔ اﻟﺸﺮﻃﯿﺔ ) ‪: ( if‬‬


‫ﻓﻲ ﻫﺬه اﻟﺪاﻟﺔ ﻧﻘﻮم ﺑﺎﻟﺘﺄﻛﺪ ﻣﻦ اﻟﺸﺮط ﻓﺈذا ﺗﺤﻘﻖ ﯾﺘﻢ اﻟﺪﺧﻮل اﻟﻰ داﺧﻞ اﻟﺪاﻟﺔ وﺑﻌﺪ اﻹﻧﺘﻬﺎء ﻣﻦ أواﻣﺮﻫﺎ ﯾﻨﺘﻘﻞ اﻟﻰ‬
‫ﺗﻨﻔﯿﺬ اﻻواﻣﺮ اﻟﺘﻲ ﺗﻘﻊ ﺧﺎرﺟﻬﺎ وإذا ﻟﻢ ﯾﺘﺤﻘﻖ ﺳﻮف ﯾﺘﻢ اﻻﻧﺘﻘﺎل ﻣﺒﺎﺷﺮة اﻟﻰ ﺗﻨﻔﯿﺬ اﻻواﻣﺮ اﻟﺘﻰ ﺗﻘﻊ ﺧﺎرج اﻟﺪاﻟﺔ ‪.‬‬

‫ﺻﯿﻐﺘﻬﺎ‪:‬‬

‫) اﻟﺸﺮط ( ‪If‬‬
‫{‬
‫إذا ﺗﺤﻘﻖ ــ ﻧﻔﺬ اﻻﻣﺮ اﻟﺬي ﺑﺪاﺧﻞ اﻟﺪاﻟﺔ‬
‫}‬
‫أواﻣﺮ ﺧﺎرج اﻟﺪاﻟﺔ‬

‫ﻟﻨﺄﺧﺬ ﻣﺜﺎﻻ ﻛﺎﻣﻼ وﻧﺮى ﻛﯿﻒ ‪:‬‬

‫>"‪<html dir="rtl‬‬
‫>‪</title‬اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ>‪<head><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‬‬

‫‪٨‬‬
‫ﻓﻲ ﻫﺬا اﻟﻤﺜﺎل ﻗﻤﻨﺎ ﺑﺘﻌﺮﯾﻒ ﻣﺘﻐﯿﺮ ) ‪ ( pass_2‬ووﺿﻌﻨﺎ ﺑﺪاﺧﻠﻪ ﻗﯿﻤﺔ ) ‪ ( okman‬ﺛﻢ ﻗﻤﻨﺎ ﺑﺘﻌﺮﯾﻒ ﻣﺘﻐﯿﺮ‬
‫) ‪ ( pass_user‬وﻟﻢ ﻧﻀﻊ ﺑﺪاﺧﻠﻪ ﻗﯿﻤﺔ ﻋﻠﻰ اﺳﺎس ان اﻟﻤﺴﺘﺨﺪم اي اﻟﺰاﺋﺮ ﻫﻮ اﻟﺬي ﺳﻮف ﯾﻀﻊ اﻟﻘﯿﻤﺔ وﻫﻨﺎ‬
‫ﺳﻮف ﺗﺨﺮج ﻧﺎﻓﺬة ﻟﺘﺨﺒﺮ اﻟﻤﺴﺘﺨﺪم ان ﯾﺪﺧﻞ ﻛﻠﻤﺔ اﻟﺴﺮ وﻋﻨﺪﻫﺎ ﯾﻀﻊ اﻟﻤﺴﺘﺨﺪم اﻟﻜﻠﻤﺔ وﺑﺎﻟﺘﺎﻟﻲ ﺳﻮف ﺗﺨﺰن ﻫﺬه‬
‫اﻟﻘﯿﻤﺔ ﺑﺪاﺧﻞ اﻟﻤﺘﻐﯿﺮ ) ‪ ( pass_user‬وﺑﻌﺪ ذﻟﻚ ﻧﺪﺧﻞ ﺑﺪاﺧﻞ ﺟﻤﻠﺔ اﻟﺸﺮط وﻫﻲ اﻟـ ) ‪ ( if‬وﻫﻨﺎ ﺳﻮف ﯾﻘﺎرن‬
‫ﺑﯿﻦ ﻗﯿﻤﺔ اﻟﻤﺘﻐﯿﺮ ) ‪ ( pass_2‬اﻟﻤﺨﺰﻧﻪ ﻣﺴﺒﻘﺎ وﺑﯿﻦ ﻗﯿﻤﺔ اﻟﻤﺘﻐﯿﺮ ) ‪ ( pass_user‬اﻟﺬي ﺣﺪد ﻗﯿﻤﺘﻪ‬
‫اﻟﻤﺴﺘﺨﺪم اذا ﺟﻤﻠﺔ ) ) ‪ ( if ( pass_2==pass_user‬ﺗﻌﻨﻲ ﻫﻞ اﻟﻤﺘﻐﯿﺮ ) ‪ ( pass_2‬اﻟﻤﺨﺰن ﻣﺴﺒﻘﺎ‬
‫ﯾﺴﺎوي ﻗﯿﻤﺔ اﻟﻤﺘﻐﯿﺮ ) ‪ ( 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>

١٠
‫ﻓﻲ ﻫﺬا اﻟﻤﺜﺎل ﻗﻤﻨﺎ ﺑﺘﻌﺮﯾﻒ ﻣﺘﻐﯿﺮ ) ‪ ( pass_2‬ووﺿﻌﻨﺎ ﺑﺪاﺧﻠﻪ ﻗﯿﻤﺔ ) ‪ ( okman‬ﺛﻢ ﻗﻤﻨﺎ ﺑﺘﻌﺮﯾﻒ ﻣﺘﻐﯿﺮ‬
‫) ‪ ( pass_user‬وﻟﻢ ﻧﻀﻊ ﺑﺪاﺧﻠﻪ ﻗﯿﻤﺔ ﻋﻠﻰ اﺳﺎس ان اﻟﻤﺴﺘﺨﺪم اي اﻟﺰاﺋﺮ ﻫﻮ اﻟﺬي ﺳﻮف ﯾﻀﻊ اﻟﻘﯿﻤﺔ وﻫﻨﺎ‬
‫ﺳﻮف ﺗﺨﺮج ﻧﺎﻓﺬة ﻟﺘﺨﺒﺮ اﻟﻤﺴﺘﺨﺪم ان ﯾﺪﺧﻞ ﻛﻠﻤﺔ اﻟﺴﺮ وﻋﻨﺪﻫﺎ ﯾﻀﻊ اﻟﻤﺴﺘﺨﺪم اﻟﻜﻤﻠﻪ وﺑﺎﻟﺘﺎﻟﻲ ﺳﻮف ﺗﺨﺰن ﻫﺬه‬
‫اﻟﻘﯿﻤﺔ ﺑﺪاﺧﻞ اﻟﻤﺘﻐﯿﺮ ) ‪ ( pass_user‬وﺑﻌﺪ ذاﻟﻚ ﻧﺪﺧﻞ ﺑﺪاﺧﻞ ﺟﻤﻠﺔ اﻟﺸﺮط وﻫﻲ اﻟـ ) ‪ ( if‬وﻫﻨﺎ ﺳﻮف ﯾﻘﺎرن‬
‫ﺑﯿﻦ ﻗﯿﻤﺔ اﻟﻤﺘﻐﯿﺮ ) ‪ ( pass_2‬اﻟﻤﺨﺰﻧﻪ ﻣﺴﺒﻘﺎ وﺑﯿﻦ ﻗﯿﻤﺔ اﻟﻤﺘﻐﯿﺮ ) ‪ ( pass_user‬اﻟﺬي ﺣﺪد ﻗﯿﻤﺘﻪ‬
‫اﻟﻤﺴﺘﺨﺪم اذا ﺟﻤﻠﺔ ) ) ‪ ( if ( pass_2==pass_user‬ﺗﻌﻨﻲ ﻫﻞ اﻟﻤﺘﻐﯿﺮ ) ‪ ( pass_2‬اﻟﻤﺨﺰن ﻣﺴﺒﻘﺎ‬
‫ﺗﺴﺎوي ﻗﯿﻤﺔ اﻟﻤﺘﻐﯿﺮ ) ‪ ( pass_user‬اﻟﻤﺪﺧﻞ ﻣﻦ ﻗﺒﻞ اﻟﻤﺴﺘﺨﺪم ‪ ..‬ﻫﻨﺎ اذا ﻛﺎﻧﺖ اﻻﺟﺎﺑﻪ ﻧﻌﻢ ﻋﻨﺪﻫﺎ ﺳﻮف‬
‫ﯾﻄﺒﻊ ﻟﻪ ﺟﻤﻠﺔ أﻫﻼ ﺑﻚ واذا ﻛﺎﻧﺖ ﻻ اي ﻏﯿﺮ ﻣﺘﺴﺎوﯾﻦ اي ان ﻛﻠﻤﺔ اﻟﺴﺮ اﻟﺬي ادﺧﻠﻬﺎ اﻟﻤﺴﺘﺨﺪم ﻟﯿﺲ ﻣﻄﺎﺑﻘﺔ‬
‫ﻟﻜﻠﻤﺔ اﻟﺴﺮ اﻟﻤﺨﺰﻧﻪ ﻣﺴﺒﻘﺎ ‪ ...‬ﻋﻨﺪﻫﺎ ﺳﻮف ﯾﻄﺒﻊ اﻟﺠﻤﻠﻪ اﻟﺘﻲ ﻓﻲ ) ‪ ( else‬وﻫﻲ ﻛﻠﻤﺔ اﻟﺴﺮ ﻏﯿﺮ ﺻﺤﯿﺤﻪ‪..‬‬
‫وﺑﻌﺪ ان ﯾﻄﺎﺑﻖ وﯾﺮى اذا ﻛﺎﻧﺖ ﺻﺤﯿﺢ ام ﻻ ﻟﯿﺤﺪد اي ﺟﻤﻠﺔ ﯾﻄﺒﻊ ﺳﻮف ﯾﺨﺮج ﻣﻦ داﻟﺔ اﻟـ ) ‪ ( if‬اﻟﻰ ﺗﻨﻔﯿﺬ‬
‫اﻟﺠﻤﻠﺔ اﻟﺨﺎرﺟﯿﺔ اي اﻟﺘﻲ ﺧﺎرج اﻟﺪاﻟﺔ واﻟﺘﻲ ﻟﯿﺲ ﻟﻬﺎ ﻋﻼﻗﺔ ﺑﻤﺎذا ﻛﺎﻧﺖ اﻟﻤﻄﺎﺑﻘﺔ ﻻ ام ﻧﻌﻢ وﺑﺘﺎﻟﻲ ﻃﺒﺎﻋﺔ ‪ ..‬ﻋﺎﻟﻢ‬
‫اﻟﺒﺮﻣﺠﺔ ‪ ..‬اذا ﻫﻨﺎ إﻣﺎ ان ﺗﻜﻮن اﻟﻜﻠﻤﺔ اﻟﻤﺪﺧﻠﻪ ﺻﺤﯿﺤﻪ وﻋﻨﺪﻫﺎ ﺳﻮف ﯾﻄﺒﻊ ﺟﻤﻠﺔ اﻫﻼ ﺑﻚ ﺛﻢ ﯾﻄﺒﻊ ﺟﻤﻠﺔ ﻋﺎﻟﻢ‬
‫اﻟﺒﺮﻣﺠﻪ او ان ﺗﻜﻮن اﻟﻜﻠﻤﺔ اﻟﻤﺪﺧﻠﻪ ﺧﻄﺄ وﻋﻨﺪﻫﺎ ﯾﻄﺒﻊ ﻛﻠﻤﺔ اﻟﺴﺮ ﻏﯿﺮ ﺻﺤﯿﺤﻪ ﺛﻢ ﯾﻄﺒﻊ ﻋﺎﻟﻢ اﻟﺒﺮﻣﺠﻪ ‪ ..‬وﻓﻲ‬
‫ﻫﺬا اﻟﻤﺜﺎل اﻓﺘﺮﺿﻨﺎ اﻧﻪ ادﺧﻞ ﻛﻠﻤﺔ اﻟﺴﺮ ﺻﺢ " اﻗﺼﺪ ﻫﻨﺎ ﻓﻲ ﺻﻮرة اﻟﻤﺜﺎل "‪..‬‬

‫ﻣﻌﻠﻮﻣﺎت ﻣﻬﻤﺔ ﻋﻦ اﻟﺪاﻟﺔ ) ‪: ( if‬‬ ‫§‬

‫‪ -١‬ﻗﺪ ﯾﺴﺘﺨﺪم اﻟﻤﺒﺮﻣﺞ ﺷﺮط ﺑﺪاﺧﻞ ﺷﺮط ﺑﺪاﺧﻞ ﺷﺮط وﺗﺴﻤﻰ ﻫﺬه اﻟﺤﺎﻟﺔ ) ‪ ( nested if‬ﻓﻼ ﯾﺰﻋﺠﻚ ذﻟﻚ‬
‫ﻓﻠﻜﻞ ﻣﻨﺎ أﺳﻠﻮﺑﻪ اﻟﺨﺎص ﻓﻲ وﺻﻒ اﻻﻣﻮر ﻛﻤﺎ أﻧﻪ ﻗﺪ ﯾﺘﺤﺘﻢ ﻋﻠﯿﻨﺎ أوﻗﺎت أن ﻧﺴﺘﺨﺪم ﺷﺮط ﺑﺪاﺧﻞ ﺷﺮط ‪.‬‬

‫ﻣﺜﺎل ‪:‬‬
‫>"‪<html dir="rtl‬‬
‫>‪</title‬اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ>‪<head><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 ( name1 == " sami‬‬

‫ﻓﺈذا ﻛﺎن اﻟﺸﺮط ﻗﺪ ﺗﺤﻘﻖ أي أن أﺳﻢ اﻟﻤﺴﺘﺨﺪم ) ﺳﺎﻣﻲ ( ﺳﻮف ﯾﺪﺧﻞ اﻟﻰ اﻟﺪاﻟﺔ وﻣﻦ ﺛﻢ ﺳﻮف ﯾﺠﺪ ﺷﺮﻃﺎ آﺧﺮ‬
‫ﯾﺴﺄﻟﻪ ﻋﻦ أﺳﻤﻪ اﻟﺜﺎﻧﻲ أي أﺳﻢ اﻷب ‪:‬‬

‫;)" ‪if ( name2 == " mahmoud‬‬

‫ﻓﺈذا ﺗﺤﻘﻖ ﺳﻮف ﯾﻨﻔﺬ اﻻﻣﺮ اﻟﺬي ﺑﺪاﺧﻞ ﻫﺬه اﻟﺪاﻟﺔ ‪ .‬وﻣﻦ ﺛﻢ ﯾﻨﻔﺬ اﻻواﻣﺮ اﻟﺘﻲ ﺧﺎرج اﻟﺪاﻟﺘﯿﻦ ﺗﻤﺎﻣﺎ ‪.‬‬

‫ﻟﻮ ﻻﺣﻈﺖ أﻧﻪ ﻓﻲ ﺣﺎﻟﺔ ﻋﺪم ﺗﺤﻘﻖ أي ﻣﻦ اﻟﺸﺮﻃﯿﻦ اﻟﺴﺎﺑﻘﺘﯿﻦ ﺳﻮف ﯾﺨﺮج ﻟﺘﻨﻔﯿﺬ ﻣﺎ ﺑﺨﺎرج اﻟﺪاﻟﺘﯿﻦ ‪.‬‬

‫وﻗﺪ ﯾﺴﺘﺨﺪم ﺷﺨﺺ أﯾﻀﺎ داﻟﺔ ) ‪ ( if‬داﺧﻞ داﻟﺔ ) ‪ ( if‬داﺧﻞ داﻟﺔ ) ‪ ( if‬وﻫﻜﺬا ﻓﻼ أرﯾﺪ أن أدﺧﻠﻚ ﻓﻲ‬ ‫§‬
‫ﻣﺘﺎﻫﺎت وﺧﻮارزﻣﯿﺎت ﻣﻌﻘﺪة ‪ .‬ﻓﻜﻤﺎ ﻗﻠﻨﺎ ﻟﻜﻼ ﻣﻨﺎ أﺳﻠﻮﺑﻪ ﻓﻘﺪ ﯾﻜﻮن ﺣﻞ ﻣﺴﺄﻟﺔ ﺑﺴﻄﺮ ﻓﯿﺄﺗﻲ ﺷﺨﺺ وﯾﺤﻠﻬﺎ‬
‫ﺑﺄرﺑﻌﺔ أﺳﻄﺮ ﺑﻄﺮﯾﻘﺔ ﻣﻌﻘﺪة‪ ...‬إذا ﺟﻤﯿﻌﻨﺎ ﯾﺴﺘﻄﯿﻊ أن ﯾﺼﻞ اﻟﻰ اﻟﺤﻞ وﻟﻜﻦ ﺑﺄﺳﺎﻟﯿﺐ ﻣﺨﺘﻠﻔﺔ وﻗﺪ ﯾﺘﻄﻠﺐ‬
‫اﻻﻣﺮ ان ﻧﺴﺘﺨﺪم ﺟﻤﻞ ) ‪ ( if‬ﺑﺪاﺧﻞ ﺑﻌﻀﻬﺎ‪.‬‬

‫‪١٢‬‬
‫§ اﻟﺪاﻟﺔ اﻟﺸﺮﻃﯿﺔ ) ‪: ( switch‬‬
‫ﻋﻨﺪﻣﺎ ﯾﻜﻮن ﻟﺪﯾﻨﺎ ﻋﺪة ﺧﯿﺎرات وﻧﻜﻮن ﻧﺮﯾﺪ أن ﻧﺨﺮج ﺑﻮاﺣﺪ ﻣﻨﻬﻢ وﻫﻮ اﻟﺬي ﻧﺮﯾﺪه أﻣﺎ ﻣﺎﻫﻮ اﻟﺬي ﻧﺮﯾﺪه ﻣﻦ ﺑﯿﻦ‬
‫اﻟﺨﯿﺎرات واﻟﺬي ﺳﻮف ﻧﺨﺮج ﺑﻪ ﺳﻮف ﯾﺤﺪده اﻟﻤﺘﻐﯿﺮ اﻟﺬي ﺳﻮف ﻧﺪﺧﻠﻪ واﻟﺬي ﺳﻮف ﯾﺘﻔﻖ ﻣﻊ واﺣﺪة ﻣﻦ ﻫﺬه‬
‫اﻟﺨﯿﺎرات وﯾﺤﻘﻘﻪ ‪ ..‬أي ﻫﻨﺎ وﻛﺄﻧﻨﺎ ﻧﺴﺘﺨﺪم اﻟﺠﻤﻠﺔ اﻟﺸﺮﻃﯿﺔ ) ‪ ( if‬أو ﻣﺎﺷﺎﺑﻪ ذﻟﻚ اذا ﺟﺎز اﻟﻌﺒﯿﺮ‪..‬‬
‫وﯾﺄﺗﻲ أﺳﺘﺨﺪام اﻟﺪاﻟﺔ ) ‪ ( switch‬ﻟﯿﺴﻬﻞ اﻟﻌﻤﻞ ﺑﺸﻜﻞ ﻛﺒﯿﺮ وﺳﻮف ﻧﺮى ذﻟﻚ ‪:‬‬

‫ﺻﯿﻐﺘﻬﺎ ‪:‬‬

‫ﺑﺪاﯾﺔ { ) اﻟﻤﺘﻐﯿﺮ( ‪switch‬‬

‫; اﻻﺣﺘﻤﺎل اﻷول ‪case :‬‬


‫اﻟﻤﻄﻠﻮب ﻟﻬﺬا اﻻﺣﺘﻤﺎل‬

‫; اﻻﺣﺘﻤﺎل اﻟﺜﺎﻧﻲ ‪case :‬‬


‫اﻟﻤﻄﻠﻮب ﻟﻬﺬا اﻻﺣﺘﻤﺎل‬

‫; اﻻﺣﺘﻤﺎل اﻟﺜﺎﻟﺚ ‪case :‬‬


‫اﻟﻤﻄﻠﻮب ﻟﻬﺬا اﻻﺣﺘﻤﺎل‬
‫‪.‬‬
‫‪.‬‬
‫‪.‬‬
‫‪default :‬‬
‫اﻟﻤﻄﻠﻮب ﻟﻬﺬا اﻻﺣﺘﻤﺎل ‪ ..‬وﻫﻮ ﯾﻄﺒﻖ ﻓﻲ ﺣﺎﻟﺔ ﻋﺪم ﺗﻄﺎﺑﻖ اﻟﻤﺘﻐﯿﺮ ﻣﻊ اي ‪ case‬ذﻛﺮ ‪..‬‬
‫ﻧﻬﺎﯾﺔ " اي اﻏﻼق " }‬

‫ﻟﻨﺄﺧﺬ ﻣﺜﺎل وﻧﺤﻠﻠﻪ‪ ..‬واﻟﺬي ﻣﻦ ﺧﻼﻟﻪ ﺳﻮف ﻧﻔﻬﻢ ﻣﺎﻗﺼﺪﻧﺎه ﻓﻲ ﻋﺒﺎراﺗﻨﺎ اﻟﺴﺎﺑﻘﻪ‪ ..‬ﻓﺄﻧﺎ أﻋﺮف ﺟﯿﺪا ﻋﺰﯾﺰي‬
‫اﻟﻤﺘﺪرب أﻧﻪ ﻛﻼم ﻣﺒﻬﻢ وﻏﯿﺮ واﺿﺢ ﻟﻚ اﻟﻰ اﻻن‪.‬‬

‫ﻣﺜﺎل ‪:‬‬
‫>"‪<html dir="rtl‬‬
‫>‪</title‬اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ>‪<head><title‬‬
‫>"‪<script type = "text/javascript‬‬
‫; ‪var country‬‬

‫;)"‪ ", "0‬أدﺧﻞ اﻟﺪوﻟﺔ ﻟﺘﻌﺮف ﻋﺎﺻﻤﺘﻬﺎ " (‪country=window.prompt‬‬

‫{ ) ‪switch ( country‬‬

‫‪ " :‬ﻓﻠﺴﻄﯿﻦ " ‪case‬‬


‫; )">‪</h3‬ﻋﺎﺻﻤﺘﻬﺎ اﻟﻘﺪس اﻟﺸﺮﯾﻒ >‪document.writeln("<h3‬‬
‫; ‪breack‬‬

‫‪ " :‬اﻟﻌﺮاق " ‪case‬‬


‫; )">‪ </h3‬ﻋﺎﺻﻤﺘﻬﺎ ﺑﻐﺪاد >‪document.writeln("<h3‬‬
‫;‪breack‬‬

‫‪ " :‬اﻟﺴﻮدان " ‪case‬‬


‫; )">‪ </h3‬ﻋﺎﺻﻤﺘﻬﺎ اﻟﺨﺮﻃﻮم >‪document.writeln("<h3‬‬
‫; ‪breack‬‬

‫‪ " :‬اﻟﻮﻃﻦ اﻟﻌﺮﺑﻲ " ‪case‬‬


‫; )">‪ </h3‬ﻣﻦ اﻟﻤﺤﯿﻂ اﻟﻰ اﻟﺨﻠﯿﺞ >‪document.writeln("<h3‬‬
‫; ‪breack‬‬

‫‪default :‬‬
‫>‪document.writeln("<h3‬‬ ‫; )">‪ </h3‬اﻟﺪوﻟﺔ اﻟﺘﻲ أدﺧﻠﺘﻬﺎ ﻟﯿﺴﺖ ﻣﻦ ﺿﻤﻦ اﻟﺨﯿﺎرات اﻟﻤﺘﺎﺣﺔ‬
‫}‬
‫>‪</script‬‬
‫>‪</head‬‬
‫>‪<body></body‬‬
‫>‪</html‬‬

‫‪١٣‬‬
‫§ ﻓﻲ ﺣﺎﻟﺔ ادﺧﺎل داﻟﻪ ﻟﯿﺴﺖ ﺿﻤﻦ اﻟﺪول اﻟﻤﺬﻛﻮره ﻓﻲ ال) ‪: ( case‬‬

‫‪١٤‬‬
‫ﻟﻨﺤﻠﻞ اﻟﻤﺜﺎل ﺳﻮﯾﺎ ﻓﺒﻪ ﻧﻌﺮف ﻣﺎﺑﻬﻢ ﻋﻠﯿﻨﺎ ‪:‬‬
‫ﻓﻲ اﻟﺒﺪاﯾﺔ ﻋﺮﻓﻨﺎ اﻟﻤﺘﻐﯿﺮ ) ‪ ( country‬وأﺳﻨﺪﻧﺎه اﻟﻰ ﺟﻤﻠﺔ ) ‪ ( window.prompet‬ﻟﻜﻲ ﯾﺪﺧﻠﻪ اﻟﻤﺴﺘﺨﺪم‬
‫ﺑﻨﻔﺴﻪ ﻣﻦ ﻟﻮﺣﺔ اﻟﻤﻔﺎﺗﯿﺢ أي اﻧﻪ ﺳﻮف ﯾﺪﺧﻞ أﺳﻢ دوﻟﺔ ﻣﻌﯿﻨﺔ ‪ ...‬وﻫﻨﺎ ﺳﻮف ﻧﺄﺗﻲ اﻟﻰ وﺿﻊ اﻟﻤﺘﻐﯿﺮ ﻓﻲ داﻟﺔ‬
‫) ‪ ( switch‬ﻛﺎﻟﺘﺎﻟﻲ ‪:‬‬

‫) ‪switch ( country‬‬

‫ﺛﻢ ﻧﻀﻊ اﻟﺨﯿﺎرات اﻟﺘﻲ ﻧﺮﯾﺪﻫﺎ وﺳﻮف ﯾﻘﺎرن اﻟﻤﺘﻐﯿﺮ اﻟﺬي أدﺧﻠﻨﺎ ﻗﯿﻤﺘﻪ ﺑﻤﺎ ﻫﻮ ﻣﻮﺟﻮد ﺑﺠﺎﻧﺐ ﻛﻠﻤﺔ ) ‪( case‬‬
‫ﻛﺎﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ ‪:‬‬
‫‪ " :‬اﻟﺴﻮدان " ‪case‬‬

‫وﻓﻲ ﺣﺎﻟﺔ ﻣﻄﺎﺑﻘﺘﻪ ﻷي واﺣﺪة ﻣﻦ اﻟﺨﯿﺎرات اﻟﺘﻲ وﺿﻌﻨﺎﻫﺎ ﺳﻮف ﯾﻨﻔﺬ اﻟﺠﻤﻞ اﻟﺘﻲ ﺟﺎءت ﺿﻤﻦ ال ) ‪( case‬‬
‫اﻟﺬي ﺗﻮاﻓﻖ ﻣﻌﻪ وﺑﺎﻟﺘﺎﻟﻲ ﻃﺒﺎﻋﺔ اﻟﺠﻤﻠﺔ واﻟﺨﺮوج ﻣﻦ داﻟﺔ ) ‪ ( switch‬وﻟﻬﺬا ﻧﻀﻊ ﺑﻨﻬﺎﯾﺔ ﻛﻞ ) ‪ ( case‬أﻣﺮ‬
‫) ‪ ( break‬ﻟﯿﺘﻮﻗﻒ ‪ ,‬ﻻﻧﻨﺎ ﻫﻨﺎ ﻧﺮﯾﺪ أن ﻧﺨﺮج ﺑﻘﯿﻤﺔ واﺣﺪة وﻫﻲ اﺣﺪى اﻟﺨﯿﺎرات اﻟﺘﻲ وﺿﻌﻨﺎﻫﺎ " ﺟﺮب أن ﻻ‬
‫ﺗﻀﻊ ) ‪ ( break‬وأﻧﻈﺮ ﻣﺎذا ﺳﯿﺤﺪث ﻓﺒﺎﻟﺘﺠﺮﺑﺔ ﯾﺤﺪد اﻟﻤﻔﻬﻮم " ‪.‬‬
‫وﻻﺣﻆ أﻧﻨﺎ وﺿﻌﻨﺎ ﻓﻲ اﻟﻨﻬﺎﯾﺔ اﻟﺪاﻟﺔ وﻗﺒﻞ اﻏﻼﻗﻬﺎ ) ‪ ( default‬وﻫﻨﺎ ﻧﻌﻨﻲ أﻧﻪ ﻓﻲ ﺣﺎﻟﺔ أن اﻟﻤﺴﺘﺨﺪم أدﺧﻞ‬
‫ﻗﯿﻤﺔ ﻟﻠﻤﺘﻐﯿﺮ وﻛﺎﻧﺖ ﻟﯿﺴﺖ ﺿﻤﻦ اﻟـ ) ‪ ( case‬ﺳﻮف ﯾﺨﺮج اﻟﻤﺴﺘﺨﺪم ﺑﺎﻟﺠﻤﻠﺔ واﻻﻣﺮ اﻟﺬي ﺳﻮف ﻧﻀﻌﻪ ﺑﻌﺪ‬
‫) ‪ ( default‬ﺛﻢ ﻧﻨﻬﻲ اﻟﺪاﻟﺔ ﺑﻮﺿﻊ اﻟﻨﻬﺎﯾﺔ ) { ( ﻓﻤﺎ رأﯾﻚ ﻋﺰﯾﺰي اﻟﻤﺘﺪرب أن ﻧﺄﺧﺬ اﻟﻤﺜﺎل وﻛﺄﻧﻨﺎ ﻣﺴﺘﺨﺪﻣﻮن‬
‫وﻧﻨﻔﺬه اﻻن ﻋﻠﻰ ﻏﯿﺮ ﻣﺎ ﺗﻢ ادﺧﺎﻟﻪ ﻓﻲ اﻟﺼﻮر اﻟﺴﺎﺑﻘﺔ ﻣﻦ دوﻟﺔ ﻓﻠﺴﻄﯿﻦ ‪.‬‬

‫ﻧﻔﺮض ﺧﺮﺟﺖ ﻧﺎﻓﺬة ) ‪ ( prompt‬وأدﺧﻠﻨﺎ اﻟﺪوﻟﺔ اﻟﻌﺮاق ﻣﺜﻼ ﻓﻬﻨﺎ ﺳﻮف ﯾﺄﺗﻲ اﻟﺒﺮﻧﺎﻣﺞ وﯾﺄﺧﺬ ﻛﻠﻤﺔ اﻟﻌﺮاق‬
‫واﻟﺘﻲ ﻫﻲ اﺳﻨﺪت اﻟﻰ اﻟﻤﺘﻐﯿﺮ وﯾﻀﻌﻬﺎ ﻓﻲ داﻟﺔ ) ‪( switch‬‬
‫) ‪switch ( country‬‬

‫ﻓﯿﺪﺧﻞ ﺑﺪاﺧﻞ داﻟﺔ ) ‪ ( switch‬ﻓﯿﺄﺗﻲ اﻟﻰ اﻟـ ) ‪ ( case‬اﻻول واﻟﺘﻲ ﻫﻲ ‪:‬‬

‫; " ﻓﻠﺴﻄﯿﻦ " ‪case‬‬

‫ﻓﯿﺠﺪ أن ﻛﻠﻤﺔ اﻟﻌﺮاق ﻻﺗﺘﻄﺎﺑﻖ ﻛﻠﻤﺔ ﻓﻠﺴﻄﯿﻦ إذا ﻟﯿﺲ ﻫﺬا ﻫﻮ اﻟﺨﯿﺎر ‪ .‬ﻓﯿﻨﺘﻘﻞ اﻟﻰ اﻟـ ) ‪ ( case‬اﻵﺧﺮ ‪...‬‬

‫‪١٥‬‬
‫ﻓﯿﺠﺪ أن اﻟﻤﺘﻐﯿﺮ ﺑﻪ ﻛﻠﻤﺔ اﻟﻌﺮاق ﯾﻄﺎﺑﻖ ﻫﺬا اﻟـ ) ‪ ( case‬أي ) اﻟﻌﺮاق = اﻟﻌﺮاق ( ﻓﯿﻨﻔﺬ اﻟﺠﻤﻠﺔ اﻟﺘﻲ ﺑﺪاﺧﻞ‬
‫ﻫﺬا اﻟـ ) ‪ ( case‬اﻟﺘﻲ ﻫﻲ ‪:‬‬
‫; )" >‪ </h3‬ﻋﺎﺻﻤﺘﻬﺎ ﺑﻐﺪاد >‪document.writeLn( "<h3‬‬

‫وﺑﺎﻟﺘﺎﻟﻲ ﻃﺒﺎﻋﺔ اﻟﺠﻤﻠﺔ اﻟﺘﺎﻟﯿﺔ ‪ " :‬ﻋﺎﺻﻤﺘﻬﺎ ﺑﻐﺪاد "‬

‫وﺑﻌﺪ ﺟﻤﻠﺔ اﻟﻄﺒﺎﻋﺔ ﻫﺬه ﯾﺄﺗﻲ أﻣﺮ ) ‪ ( break‬أي ﺗﻮﻗﻒ وﺑﺎﻟﺘﺎﻟﻲ اﻟﺨﺮوج ﻣﻦ داﻟﺔ ) ‪ ( switch‬ﻛﺎﻣﻠﺘﺎ دون‬
‫اﻟﻤﺮور ﺑﺎﻟـ ) ‪ ( case‬اﻟﺘﻲ ﺗﺄﺗﻲ ﺑﻌﺪﻫﺎ ‪.‬‬

‫‪ -‬وأﯾﻀﺎ ﻟﻮ ﻓﺮﺿﻨﺎ أن ﺷﺨﺺ أدﺧﻞ أي دوﻟﺔ ﻏﯿﺮ ﻣﻮﺟﻮدة ﺿﻤﻦ اﻟﺨﯿﺎرات ﻟﺘﻜﻦ اﻻردن أو اﻟﺴﻌﻮدﯾﺔ أو‬
‫اﻟﻜﻮﯾﺖ أو اﻻﻣﺎرات ‪ ...‬اﻟﺦ ﺳﻮف ﯾﻄﺒﻊ ﻫﻨﺎ اﻟﺠﻤﻠﺔ اﻟﺘﻲ ﺿﻤﻦ اﻻﻣﺮ ) ‪ ( default‬أي ‪:‬‬

‫; )" >‪ </h3‬اﻟﺪوﻟﺔ اﻟﺘﻲ أدﺧﻠﺘﻬﺎ ﻟﯿﺴﺖ ﻣﻦ ﺿﻤﻦ اﻟﺨﯿﺎرات اﻟﻤﺘﺎﺣﺔ >‪document.writeln( "<h3‬‬

‫§ اﻟﺬي أرﯾﺪ ان أوﺻﻠﻪ ﻟﻚ ﻓﻲ اﻟﻨﻬﺎﯾﺔ ﻫﻮ ﺷﺊ واﺣﺪ وﻫﻲ أﻧﻨﺎ ﻧﺪﺧﻞ اﻟﻤﺘﻐﯿﺮ ﻓﻲ ﺟﻤﻠﺔ ) ‪ ( switch‬ﻟﻠﻤﻘﺎرﻧﺔ‬
‫ﻣﻊ اﻟﺨﯿﺎرات اﻟﻤﻮﺟﻮدة ﺑﺪاﺧﻠﻬﺎ وﻋﻨﺪ ﻣﻄﺎﺑﻘﺔ اﻟﻤﺘﻐﯿﺮ ﻣﻊ اﺣﺪى اﻟﺨﯿﺎرات أي اﻟﻨﺘﯿﺠﺔ ) ‪ ( true‬ﺳﻮف ﯾﻨﻔﺬ‬
‫اﻟﺠﻤﻠﺔ اﻟﻤﺘﻌﻠﻘﺔ ﺑﻬﺬه اﻟﻤﻄﺎﺑﻘﺔ ﻣﻊ اﻟﻌﻠﻢ أن واﺣﺪة ﻓﻘﻂ ﻣﻦ ﻫﺬه اﻟﺨﯿﺎرات ﺗﻌﻄﻲ ) ‪ ( true‬واﻟﺒﺎﻗﯿﺔ ) ‪( false‬‬
‫وﻋﻨﺪﻣﺎ ﯾﻜﻮن ﻛﻞ اﻟﺨﯿﺎرات ﻟﯿﺴﺖ ﻣﻄﺎﺑﻘﻪ ﺳﻮف ﯾﻨﻔﺬ ﻣﺎ ﺑﺪاﺧﻞ ) ‪ ( default‬اي ان ﺟﻤﯿﻊ ال ) ‪ ( case‬ﻏﯿﺮ‬
‫ﻣﻄﺎﺑﻘﺔ ) ‪ ..( false‬اذا ﯾﺎﺗﻲ ﻋﻤﻞ ال ) ‪.( default‬‬

‫‪١٦‬‬
‫§ ﺣﻠﻘﺎت اﻟﺘﻜﺮار ‪:‬‬
‫وﻧﻌﻨ ﻲ ﺑﻬ ﺎ ﺗﻜ ﺮار ﺟﻤﻠ ﺔ ﻣﻌﯿ ﻨﺔ ﻋ ﺪة ﻣ ﺮات ﻓﺤﻠﻘ ﺔ اﻟﺘﻜ ﺮار ﺳ ﻮف ﺗﺴ ﺘﻤﺮ ﻣ ﺎدام اﻟﺸ ﺮط ﻣ ﺘﺤﻘﻘﺎ وﯾ ﺘﻢ اﻟ ﺘﺤﻘﻖ ﻣ ﻦ‬
‫اﻟﺸﺮط ﻓﻲ ﺑﺪاﯾﺔ اﻟﺤﻠﻘﺔ او ﻧﻬﺎﯾﺘﻬﺎ ‪.‬‬

‫§ ﻗﺪ ﺗﺘﺴﺎءل ﻣﺎﻓﺎﺋﺪة أﺳﺘﺨﺪام ﺣﻠﻘﺎت اﻟﺘﻜﺮار ؟‬


‫ﻧﺠﯿﺐ ﺑﺬﻟﻚ ‪. . .‬‬
‫أﻓﺘ ﺮض اﻧ ﻚ ﺗ ﺮﯾﺪ ﻃ ﺒﺎﻋﺔ ﺟﻤﻠ ﺔ ﻣﻌﯿ ﻨﺔ ‪ ١٠‬ﻣ ﺮات ﻓﺄﻧ ﻚ ﺳ ﻮف ﺗﺤ ﺘﺎج اﻟ ﻰ ﺣﻠﻘ ﺔ اﻟﺘﻜ ﺮار ﻓﻠ ﻮ ﻟ ﻢ ﺗﺴ ﺘﺨﺪﻣﻬﺎ‬
‫ﻹﺿ ﻄﺮرت ﻟﻜ ﺘﺎﺑﺔ ﻛ ﻮد اﻟﻄ ﺒﺎﻋﺔ ‪ ١٠‬ﻣ ﺮات وﻟﻜ ﻦ ﺑﺤﻠﻘ ﺔ اﻟﺘﻜ ﺮار ﻻﯾﺄﺧ ﺬ ﻣ ﻨﻚ ﺳ ﻮى ﻛ ﺘﺎﺑﺔ ﺳﻄﺮﯾﻦ ﻣﻦ اﻟﻜﻮد ‪.‬‬
‫وﻛﺬﻟﻚ اﻟﺤﺎل ﻟﻮ أردت ﻃﺒﺎﻋﺔ أﺳﻤﺎء ﺟﻤﯿﻊ ﻣﻦ ﻫﻢ ﻣﺴﺠﻠﯿﻦ ﻟﺪﯾﻚ ﺑﻘﺎﻋﺪة ﺑﯿﺎﻧﺎت اﻟﻤﻮﻗﻊ ‪.‬‬

‫§ أﻧﻮاع ﺣﻠﻘﺎت اﻟﺘﻜﺮار ‪:‬‬


‫‪ -١‬ﺣﻠﻘﺔ اﻟﺘﻜﺮار )‪: ( for‬‬
‫وﻓ ﻲ ﻫ ﺬه اﻟﺤﻠﻘ ﺔ ﯾﻜ ﻮن اﻟﺸ ﺮط ﻫ ﻮ اﻟ ﺬي ﯾﺤ ﺪد ﻃ ﻮل اﻟﺤﻠﻘ ﺔ ﻓﻤ ﺎ أن ﯾﺼ ﻞ اﻟ ﻰ ﻧﻬﺎﯾﺘﻬﺎ ﺣﺘﻰ ﯾﺘﻮﻗﻒ أي ﻓﺸﻞ‬
‫اﻟﺸﺮط وﻟﻜﻦ ﻣﺎدام اﻟﺸﺮط ﻣﺘﺤﻘﻖ ﺳﻮف ﯾﺪﺧﻞ اﻟﻰ داﺧﻞ اﻟﺤﻠﻘﺔ وﯾﻨﻔﺬ ﻣﺎﺑﺪاﺧﻠﻬﺎ ‪.‬‬

‫ﺻﯿﻐﺘﻬﺎ ‪:‬‬
‫) ﻣﻘﺪار اﻟﺰﯾﺎدة ; ﺷﺮط اﻟﺤﻠﻘﺔ ; ﺑﺪاﯾﺔ اﻟﺤﻠﻘﺔ ( ‪for‬‬

‫{‬
‫ﻧﻔﺬ اﻻﻣﺮ‬
‫‪}‬‬

‫ﺷﺮط اﻟﺤﻠﻘﺔ ‪ :‬ﻫﻮ اﻟﺬي ﺳﻮف ﯾﺤﺪد ﻃﻮل اﻟﺤﻠﻘﺔ ) ﻋﺪداﻟﺘﻜﺮار(‬

‫ﻣﺜﺎل ‪:‬‬

‫> ‪<html‬‬
‫>‪</title‬اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ>‪<head><title‬‬
‫>"‪<script type = "text/javascript‬‬

‫) ‪for (var i = 0 ; i<= 10 ; i ++‬‬


‫{‬
‫; ) ‪document.write ( i‬‬
‫}‬
‫>‪</script‬‬
‫>‪</head‬‬
‫>‪<body></body‬‬
‫>‪</html‬‬

‫ﻣﻼﺣﻈ ﺔ ‪ :‬اﻧ ﺎ ﻋ ﺮﻓﺖ اﻟﻤﺘﻐﯿ ﺮ ‪ i‬ﻓ ﻲ داﺧ ﻞ ﺣﻠﻘ ﺔ اﻟﺘﻜ ﺮار ﺗﺴ ﺘﻄﯿﻊ ﺗﻌ ﺮﯾﻔﻪ ﻓﻲ اﻟﺨﺎرج ﻛﻤﺎ ﻓﻲ اﻟﺴﺎﺑﻖ ووﺿﻌﻪ‬
‫ﻣﺒﺎﺷﺮة ‪...‬‬

‫‪١٧‬‬
‫ﻟﻨﺤﻠﻞ ﻫﺬا اﻟﻤﺜﺎل ﺳﻮﯾﺎ ‪:‬‬
‫ﻫﻨﺎ أول ﺷﻲ ﻋﺮﻓﻨﺎ اﻟﻤﺘﻐﯿﺮ وﻫﻮ )‪ (i‬وﺟﻌﻠﻨﺎ ﻗﯿﻤﺘﻪ اﻷﺑﺘﺪاﺋﯿﺔ‬
‫)‪ (i=0‬أي أﻧﻪ ﺳﻮف ﯾﺒﺪأ ﻣﻦ )‪. (0‬‬
‫ﺛ ﻢ ﺣ ﺪدﻧﺎ اﻟﺸ ﺮط واﻟ ﺬي ﻫ ﻮ ) ‪ ( i < = 10‬أي أﻧ ﻨﺎ ﺳ ﻮف ﻧ ﺪﺧﻞ اﻟ ﻰ داﺧ ﻞ اﻟﺤﻠﻘ ﺔ وﻧ ﻨﻔﺬ ﻣﺎﺑ ﺪاﺧﻠﻬﺎ ﻣ ﻦ أواﻣ ﺮ‬
‫ﻣﺎداﻣﺖ ﻗﯿﻤﺔ ) ‪ ( i‬أﻗﻞ أو ﺗﺴﺎوي ) ‪ ( 10‬أي أﻧﻬﺎ ﻟﻮ وﺻﻠﺖ اﻟﻰ ) ‪ ( 11‬ﺳﻮف ﯾﺨﺮج ﻣﻦ اﻟﺤﻠﻘﺔ وﻟﻦ ﯾﺪﺧﻠﻬﺎ إذا‬
‫ﻫ ﻨﺎ ﺣ ﺪدﻧﺎ ﻧﻬﺎﯾﺔ ) ‪ ( i‬وﻫﻲ ) ‪ . ( 10‬أي أن اﻟﺘﻜﺮار ﺳﻮف ﯾﻜﻮن ‪ ١٠‬ﻣﺮات وﻻﻧﻨﺎ ﺑﺪأﻧﺎ ﻣﻦ اﻟﺼﻔﺮ ﺳﻮف ﯾﻜﻮن‬
‫‪. ١١‬‬
‫ﺛﻢ ﺣﺪدﻧﺎ ﻣﻘﺪار زﯾﺎدة اﻟﻤﺘﻐﯿﺮ ) ‪ ( i‬وﺣﺪدﻧﺎه ﺑﺄن ﯾﺰﯾﺪ ﺑـ ) ‪ ( 1‬ﺑﻜﻞ ﻣﺮة ﯾﺪﺧﻞ ﻓﯿﻬﺎ اﻟﻰ اﻟﺤﻠﻘﺔ ‪.‬‬

‫* ﻧﺄﺗﻲ ﻟﻠﺘﻄﺒﯿﻖ اﻟﻌﻤﻠﻲ ﻟﻠﻤﺜﺎل " أي ﻣﺎﯾﺤﺪث ﺑﺪاﺧﻞ اﻟﺒﺮﻧﺎﻣﺞ " ‪:‬‬
‫ﻟﻨﻜﺘﺐ اﻟﺼﯿﻐﺔ وﻧﺘﺘﺒﻌﻬﺎ ‪:‬‬

‫) ‪for ( var i = 0 ; i < = 10 ; i ++‬‬

‫ﻧﺒﺪأ ﺑﻘﯿﻤﺔ ) ‪ ( i‬ﻛﻤﺎ ذﻛﺮﻧﺎ وﻫﻲ ) ‪. ( 0‬‬


‫ﻧﻨ ﺘﻘﻞ اﻟ ﻰ اﻟﺨﻄ ﻮة اﻟﺘﺎﻟ ﯿﺔ اﻟﺘ ﻰ ﺗﻠ ﯿﻬﺎ وﻫ ﻲ اﻟﺸ ﺮط ) ‪ ( i < = 10‬وﻫ ﻨﺎ ﯾﺴ ﺄل ﻫ ﻞ ) ‪ ( i‬أﻗ ﻞ أو ﺗﺴ ﺎوي ) ‪( 10‬‬
‫ﺳﻮف ﺗﻜﻮن اﻻﺟﺎﺑﺔ ﻧﻌﻢ ‪.‬‬
‫ﺛ ﻢ ﯾﻨ ﺘﻘﻞ اﻟﻰ ﻟﻠﺨﻄﻮة اﻟﺘﻰ ﺗﻠﯿﻬﺎ وﻫﻲ ) ‪ ( i++‬أي ﯾﻌﻨﻲ ذﻟﻚ ﺑﻌﺪ اﻟﺪﺧﻮل اﻟﻰ ﺣﻠﻘﺔ اﻟﺘﻜﺮار واﻟﺮﺟﻮع اﻟﻰ) ‪( for‬‬
‫زﯾﺪ ) ‪ ( i‬ﺑﻤﻘﺪار ) ‪. ( 1‬‬
‫دﺧﻠﻨﺎ اﻟﻰ اﻟﺤﻠﻘﺔ اﻻن ﺳﻮف ﯾﻄﺒﻊ ﻗﯿﻤﺔ اﻟـ ) ‪ ( i‬واﻟﺘﻰ ﻫﻲ ) ‪ ( 0‬ﺛﻢ ﯾﻌﻮد اﻟﻰ) ‪ ( for‬وﻟﻜﻦ ﺑﻌﺪ زﯾﺎدة ﻗﯿﻤﺔ ) ‪( i‬‬
‫ﺑﻘﯿﻤﺔ ) ‪ ( 1‬ﻟﺘﺼﺒﺢ ﻗﯿﻤﺘﻬﺎ ) ‪.( 1‬‬
‫اﻻن ﺳ ﻮف ﯾﻜ ﻮن ﻣﺎﻓﻌﻠ ﻨﺎه ﺑﺎﻟﺨﻄ ﻮات اﻟﺴ ﺎﺑﻘﺔ وﻟﻜ ﻦ ﻫ ﺬه اﻟﻤ ﺮة ﺳ ﻮف ﺗﺘﻐﯿﺮ ﻗﯿﻤﺔ اﻟـ ) ‪ ( i‬اﻷﺑﺘﺪاﺋﯿﺔ اﻟﻰ ) ‪( 1‬‬
‫ﺑﺪﻻ ﻣﻦ ) ‪. ( 0‬‬

‫ﻟﻠﺘﻮﺿﯿﺢ أﻛﺜﺮ ﻧﻌﯿﺪ اﻟﺨﻄﻮات ‪:‬‬ ‫‪-‬‬


‫اﻻن ﺳﻮف ﯾﺴﺄل ﻫﻞ ) ‪ ( 1‬أﻗﻞ أو ﯾﺴﺎوي ) ‪ ( 10‬ﺳﻮف ﺗﻜﻮن اﻷﺟﺎﺑﺔ ﻧﻌﻢ ﻓﺎﻟـ ) ‪ ( 1‬أﺻﻐﺮ ﻣﻦ ) ‪. ( 10‬‬ ‫§‬
‫ﺛ ﻢ ﯾﻨ ﺘﻘﻞ اﻟ ﻰ اﻟﺨﻄ ﻮة اﻟﺘ ﻰ ﺗﻠ ﯿﻬﺎ وﻫﻲ ) ‪ ( i++‬أي ﯾﻌﻨﻲ ذﻟﻚ ﺑﻌﺪ اﻟﺪﺧﻮل اﻟﻰ ﺣﻠﻘﺔ اﻟﺘﻜﺮار وﺗﻨﻨﻔﺬ ﻣﺎﺑﺪاﺧﻠﻬﺎ‬ ‫§‬
‫واﻟﺮﺟﻮع اﻟﻰ اﻟـ ) ‪ ( for‬زﯾﺪ ﻗﯿﻤﺔ ) ‪ ( i‬ﺑﻤﻘﺪار ) ‪ ( 1‬أي ﺗﺼﺒﺢ ) ‪. ( 2‬‬
‫وﻫ ﻨﺎ ﺳ ﻮف ﯾﻌ ﻮد اﻟ ﻰ اﻟ ـ ) ‪ ( for‬وﺳ ﻮف ﺗﺼ ﯿﺢ ﻗ ﯿﻤﺔ ال ) ‪ ( i‬اﻷﺑﺘﺪاﺋ ﯿﺔ "اذا ﺟ ﺎز اﻟﺘﻌﺒﯿ ﺮ" وﻫ ﻲ ) ‪( 2‬‬ ‫§‬
‫وﯾﺴﺄل اﻟﺸﺮط واﻟﺨﻄﻮات اﻟﺘﻰ ذﻛﺮﻧﺎﻫﺎ ﺳﺎﺑﻘﺎ وﯾﺴﺘﻤﺮ ﺣﺘﻰ ﯾﺼﻞ ال ﻗﯿﻤﺔ ) ‪ ( 11‬وﻫﻨﺎ ﺳﻮف ﯾﺤﺪث اﻟﺘﺎﻟﻲ ‪:‬‬

‫‪١٨‬‬
‫ﺳ ﻮف ﯾﺠﻌ ﻞ ﻗﯿﻤﺔ اﻟـ ) ‪ ( i‬اﻷﺑﺘﺪاﺋﯿﺔ ) ‪ ( 11‬ﺛﻢ ﯾﻨﺘﻘﻞ اﻟﻰ اﻟﺨـﻄﻮة اﻟﺘﻰ ﺗﻠﯿﻬﺎ ﺑﺎﻟــ ) ‪ ( for‬وﻫﻲ اﻟﺸﺮط‬ ‫§‬
‫) ‪ ( i < = 10‬ﺳ ﻮف ﯾﺴ ﺄل ﻫ ﻞ ﻗ ﯿﻤﺔ ) ‪ ( i‬واﻟﺘ ﻰ ﻫ ﻲ اﻻن ) ‪ ( 11‬أﻗ ﻞ أو ﺗﺴ ﺎوي ) ‪ ( 10‬ﺳ ﻮف ﺗﻜ ﻮن‬
‫اﻻﺟﺎﺑﺔ ﻻ إذا ﺳﻮف ﯾﺨﺮج ﻣﻦ اﻟﺤﻠﻘﺔ وﻟﻦ ﯾﻨﻔﺬ اﻟﺠﻤﻠﺔ اﻟﺘﻰ ﺑﺪاﺧﻠﻬﺎ ‪.‬‬

‫ﯾﻌﻨﻲ ﺑﺈﺧﺘﺼﺎر ‪. . .‬‬ ‫§‬


‫ﺳ ﻮف ﯾﺴ ﺘﻤﺮ ﺑﺘﻨﻔﯿﺬ ﺟﻤﻠﺔ اﻟﻄﺒﺎﻋﺔ اﻟﺘﻰ ﺑﺪاﺧﻞ ﺣﻠﻘﺔ اﻟـ ) ‪ ( for‬ﻣﺎدام اﻟﺸﺮط ﻣﺘﺤﻘﻘﺎ وﻟﻦ ﯾﺨﺮج ﻣﻨﻬﺎ إﻻ ﺑﻌﺪ ﻓﺸﻞ‬
‫اﻟﺸ ﺮط ‪ .‬ﻓﻠ ﻮ ﻛ ﺎن ﯾ ﻮﺟﺪ ﺟﻤﻠ ﺔ ﺗﻠ ﻲ ﺣﻠﻘ ﺔ اﻟﺘﻜ ﺮار ﻛﺎﻟﻤ ﺜﺎل اﻟ ﺬي ﺳ ﻮف أﻃ ﺮﺣﻪ اﻻن ﻟ ﻦ ﺗ ﻨﻔﺬ اﻻ ﺑﻌﺪ اﻟﺨﺮوج ﻣﻦ‬
‫ﺣﻠﻘﺔ اﻟﺘﻜﺮار ‪.‬‬

‫ﻣﺜﺎل ‪:‬‬

‫> ‪<html‬‬
‫>‪</title‬اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ>‪<head><title‬‬
‫>"‪<script type = "text/javascript‬‬
‫) ‪for (var i = 1 ; i <=10; i ++‬‬
‫{‬
‫; ) ‪document.write ( i‬‬
‫}‬
‫;)"اﻻﻋﺪاد >‪document.write (" <br /‬‬
‫>‪</script‬‬
‫>‪</head‬‬
‫>‪<body></body‬‬

‫>‪</html‬‬

‫ﻣﻼﺣﻈﺔ ‪ :‬ﺳﻮف اﺣﺎول ﺷﺮﺣﻪ ﺑﻄﺮﯾﻘﻪ اﻛﺜﺮ ﺗﻘﺮﯾﺒﺎ ‪...‬‬


‫ﻫ ﻨﺎ ﻓ ﻲ ﻫ ﺬا اﻟﻤ ﺜﺎل ﺳﻮف ﯾﺒﺪأ ﻗﯿﻤﺔ اﻟـ ) ‪ ( i‬وﻫﻲ ) ‪ ( 1‬وﺳﻮف ﯾﻜﻮن اﻟﺸﺮط أن ﻣﺎدام ﻗﯿﻤﺔ اﻟـ ) ‪ ( i‬أﻗﻞ ﻣﻦ أو‬
‫ﯾﺴ ﺎوي ) ‪ ( 10‬أﻃ ﺒﻊ وﻋ ﻨﺪ ﻓﺸ ﻞ اﻟﺸ ﺮط أﺧ ﺮج ﻣ ﻦ ﺣﻠﻘ ﺔ اﻟﺘﻜ ﺮار وإذﻫ ﺐ ﻟﺘﻨﻔ ﯿﺬ اﻟﺠﻤﻠ ﺔ اﻟﺘﻰ ﺗﻠﻲ ﺣﻠﻘﺔ اﻟﺘﻜﺮار‬
‫وﻫﻲ ﻃﺒﺎﻋﺔ ﺟﻤﻠﺔ ) اﻷﻋﺪاد (‬

‫ﻫﻨﺎ ﯾﻜﻮن اﻟﺘﻨﻔﯿﺬ ﻋﻠﻰ اﻟﻨﺤﻮ اﻟﺘﺎﻟﻲ ‪ :‬رﺳﻤﺔ ﻟﺘﻮﺿﯿﺢ‬

‫‪١٩‬‬
‫‪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‬‬

‫ﻓ ﻨﺤﻦ ﻣﺤ ﺪدﯾﻦ أﻧ ﻪ آﺧ ﺮ ﻗ ﯿﻤﺔ ﺗﻄ ﺒﻊ ﻫ ﻲ ) ‪ ( 10‬ﻓ ﺒﻌﺪ أن ﯾ ﺰﯾﺪ ﻗﯿﻤﺔ ) ‪ ( i‬ﺳﻮف ﯾﻔﺸﻞ اﻟﺸﺮط وﺑﺎﻟﺘﺎﻟﻲ ﺳﻮف‬
‫ﯾﺨ ﺮج ﻣ ﻦ ﺣﻠﻘ ﺔ اﻟﺘﻜﺮار ﻻن ﻗﯿﻤﺔ ) ‪ ( i‬اﺻﺒﺤﺖ ) ‪ ( 11‬اذا ﻫﻲ ﻟﯿﺴﺖ اﻗﻞ ﻣﻦ ) ‪ ( 10‬ﺛﻢ ﯾﻨﺘﻘﻞ اﻟﻰ اﻟﺠﻤﻠﺔ‬
‫اﻟﺘﻰ ﺗﻠﻲ ﺣﻠﻘﺔ اﻟﺘﻜﺮار واﻟﺘﻰ ﻫﻲ ﺧﺎرج ﺣﻠﻘﺔ اﻟﺘﻜﺮار وﻫﻲ ﻃﺒﺎﻋﺔ " اﻷﻋﺪاد "‬

‫;)اﻻﻋﺪاد >‪document.write ( " <br /‬‬

‫إذا اﻟﻨﺘﯿﺠﺔ ﻫﻲ ﻃﺒﺎﻋﺔ ﻣﺎﯾﻠﻲ ‪:‬‬

‫‪12345678910‬‬
‫اﻻﻋﺪاد‬

‫ﻷﻃﺮح ﻟﻚ ﻣﺜﺎﻻ وأﺗﺮك ﺗﺤﻠﯿﻠﻪ ﻟﻚ ‪...‬‬


‫ﻟﻨﻔﺮض أﻧﻨﺎ ﻧﺮﯾﺪ ﻃﺒﺎﻋﺔ اﻻرﻗﺎم وﻟﻜﻦ ﺑﺎﻟﻌﻜﺲ أي ﻣﻦ ) ‪ ( 10‬اﻟﻰ ) ‪( 0‬‬

‫ﺗﻜﻮن ﺻﯿﻐﺘﻪ ﻛﺎﻟﺘﺎﻟﻲ ‪:‬‬

‫> ‪<html‬‬
‫>‪</title‬اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ>‪<head><title‬‬
‫>"‪<script type = "text/javascript‬‬
‫)‪for (var i =10 ; i>=0 ; i--‬‬
‫{‬
‫; ) ‪document.write( i‬‬
‫}‬
‫)"اﻷرﻗﺎم ﺑﺸﻜﻞ ﺗﻨﺎزﻟﻲ >‪document.write ( " <br /‬‬
‫>‪</script‬‬
‫>‪</head‬‬
‫>‪<body></body‬‬

‫>‪</html‬‬

‫‪٢٠‬‬
‫اﻟﻨﺘﯿﺠﺔ ‪:‬‬
‫‪10987654321‬‬
‫اﻷرﻗﺎم ﺑﺸﻜﻞ ﺗﻨﺎزﻟﻲ‬

‫وﻫﺬا اﻟﻤﺜﺎل ﯾﺴﻤﻰ ﻃﺒﺎﻋﺔ ' ‪ ' reverse‬ﻟﻠﻘﯿﻢ اي ﻃﺒﺎﻋﺔ ﻋﻜﺴﯿﺔ‪.‬‬

‫ﺣﻠﻘﺔ اﻟﺘﻜﺮار ) ‪: ( While‬‬ ‫§‬


‫وﻓ ﻲ ﻫ ﺬه اﻟﻄ ﺮﯾﻘﺔ ﺳ ﻮف ﯾﺴ ﺘﻤﺮ ﯾﺘﻨﻔ ﯿﺬ ﻣﺎﺑ ﺪاﺧﻞ اﻟﺤﻠﻘ ﺔ ﻣ ﺎدام اﻟﺸ ﺮط ﻣ ﺘﺤﻘﻖ ﻓ ﻲ ﻛ ﻞ ﻣ ﺮه ﺗ ﺮﯾﺪ ﺑﻬ ﺎ اﻟﺪﺧ ﻮل‬
‫ﺳ ﻮف ﯾ ﺘﺤﻘﻖ ﻣ ﻦ اﻟﺸﺮط أوﻻ ﻓﺈذا ﺗﺤﻘﻖ ﺗﻘﻮم ﺑﺎﻟﺪﺧﻮل اﻟﻰ داﺧﻞ اﻟﺤﻠﻘﺔ وﺗﻨﻔﯿﺬ ﻣﺎﺑﺪاﺧﻠﻬﺎ اﻟﻰ أن ﯾﻔﺸﻞ وﻧﺨﺮج‬
‫ﻣ ﻦ اﻟﺤﻠﻘ ﺔ ﻣ ﻊ اﻟﻌﻠ ﻢ اﻧ ﻪ اذا ﻓﺸ ﻞ ﻣﻦ اﻟﺒﺪاﯾﻪ اذا ﻟﻦ ﯾﺪﺧﻞ اﻃﻼﻗﺎ اﻟﻰ داﺧﻞ ﺣﻠﻘﺔ اﻟﺘﻜﺮار وﻟﻜﻦ اذا ﯾﻮﺟﺪ اواﻣﺮ‬
‫ﺧﺎرج ﺣﻠﻘﺔ اﻟﺘﻜﺮار اي ﺑﻌﺪ ﺣﻠﻘﺔ ‪ while‬ﺳﻮف ﯾﻨﻔﺬﻫﺎ ‪.‬‬

‫ﺻﯿﻐﺘﻬﺎ ‪:‬‬

‫) ﻧﻔﺬ ﻣﺎﺑﺪاﺧﻞ اﻟﺤﻠﻘﺔ ﻣﺎدام اﻟﺸﺮط ﻣﺘﺤﻘﻘﺎ ( ‪While‬‬


‫{‬
‫ﻧﻔﺬ اﻻﻣﺮ‬
‫ﻣﻘﺪار اﻟﺰﯾﺎدة ‪i ++‬‬
‫}‬

‫ﻗﺒﻞ اﻟﺨﻮض ﺑﻤﺜﺎل ﯾﺠﺐ أن ﺗﺤﺘﻮي ﺟﻤﻠﺔ اﻟـ ) ‪ ( while‬ﻋﻠﻰ ﻣﺎﯾﻠﻲ ‪:‬‬
‫‪ -١‬ﻣﺘﻐﯿﺮ ﻧﻀﻌﻪ ﺑﺎﻟﺸﺮط ﻟﻜﻲ ﻧﺘﺤﻘﻖ ﻣﻦ ﺻﺤﺔ اﻟﺸﺮط ‪.‬‬
‫‪ -٢‬ﯾﺠﺐ وﺿﻊ ﻗﯿﻤﺔ إﺑﺘﺪاﺋﯿﺔ ﻟﻬﺬا اﻟﻤﺘﻐﯿﺮ ﻗﺒﻞ ﺟﻤﻠﺔ اﻟـ ) ‪. ( while‬‬
‫‪ -٣‬ﯾﺠ ﺐ أن ﻧﺬﻛ ﺮ ﻫ ﺬا اﻟﻤﺘﻐﯿ ﺮ وﻣﻘ ﺪار زﯾﺎدﺗﻪ ﺑﺪاﺧﻞ ﺣﻠﻘﺔ اﻟﺸﺮط ﺳﻮاءا ﻗﺒﻞ ﺗﻨﻔﯿﺬ اﻟﺠﻤﻠﺔ اﻟﺘﻰ ﺑﺪاﺧﻞ ﺣﻠﻘﺔ‬
‫اﻟﺘﻜﺮار أو ﺑﻌﺪﻫﺎ ‪.‬‬

‫‪٢١‬‬
‫ﻣﺜﺎل ‪:‬‬

‫> ‪<html‬‬
‫>‪</title‬اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ>‪<head><title‬‬
‫>"‪<script type = "text/javascript‬‬
‫; ‪var i = 1‬‬
‫) ‪while (i <= 10‬‬
‫{‬
‫; ) ‪document.write ( i‬‬
‫; ‪i ++‬‬
‫}‬
‫>‪</script‬‬
‫>‪</head‬‬
‫>‪<body></body‬‬
‫>‪</html‬‬

‫ﻟﻨﺤﻠﻞ اﻟﻤﺜﺎل ﺳﻮﯾﺎ ‪:‬‬


‫أول ﺷﺊ ﻋﺮﻓﻨﺎ ) ‪ ( i‬ﻛﻤﺘﻐﯿﺮ ووﺿﻌﻨﺎ ﺑﻪ اﻟﻘﯿﻤﺔ اﻷﺑﺘﺪاﺋﯿﺔ ) ‪ ( 1‬ﻗﺒﻞ أن ﻧﻀﻌﻪ ﻓﻲ اﻟﺸﺮط ) ‪. ( i <= 10‬‬
‫وﺑﻌ ﺪ ذﻟ ﻚ ذﻫﺒ ﻨﺎ اﻟ ﻰ ﺟﻤﻠ ﺔ ) ‪ ( while‬ﻓﺴ ﺄﻟﻨﺎ اﻟﺸ ﺮط ﻫ ﻞ ﻗ ﯿﻤﺔ ) ‪ ( i‬أﻗﻞ أو ﺗﺴﺎوي ) ‪ ( 10‬ﻓﻜﺎﻧﺖ اﻻﺟﺎﺑﺔ ﻧﻌﻢ‬
‫ﻓﺎﻟـ ) ‪ ( 1‬أﻗﻞ ﻣﻦ ) ‪ ( 10‬وﺑﻤﺎ أﻧﻪ ﺗﺤﻘﻖ‬
‫اﻟﺸﺮط ﻓﺴﻮف ﻧﺪﺧﻞ ﺑﺪاﺧﻞ اﻟﺤﻠﻘﺔ ‪...‬‬

‫) ‪While ( 1 <= 10‬‬

‫ﻓﺪﺧﻠﻨﺎ ﺑﺪاﺧﻠﻬﺎ وﻧﻔﺬﻧﺎ اﻟﺠﻤﻠﺔ اﻟﺘﻰ ﺑﺪاﺧﻞ ﺣﻠﻘﺔ اﻟﺘﻜﺮار اﻟﺘﻰ ﻫﻲ ﻃﺒﺎﻋﺔ ﻗﯿﻤﺔ ) ‪ ( i‬واﻟﺘﻰ ﻫﻲ ) ‪. ( 1‬‬

‫; ) ‪document.write ( i‬‬

‫ﺛ ﻢ أﻧﺘﻘﻠ ﻨﺎ اﻟ ﻰ اﻟﺠﻤﻠ ﺔ اﻟﺘ ﻰ ﺗﻠ ﯿﻬﺎ واﻟﺘ ﻰ ﻫ ﻲ ) ‪ ( i++‬وﺗﻌﻨ ﻲ زﯾ ﺪ ﻗ ﯿﻤﺔ ) ‪ ( i‬ﺑﻤﻘ ﺪار ) ‪ ( 1‬ﻓﺄﺻﺒﺤﺖ ﻗﯿﻤﺔ ) ‪( i‬‬
‫ﺗﺴﺎوي ) ‪.( 2‬‬

‫‪٢٢‬‬
‫ﺗﻢ ﻋﺎد ﻣﺮة أﺧﺮى اﻟﻰ ) ‪ ( while‬ﻓﺴﺄﻟﻪ اﻟﺸﺮط ﻫﻞ ﻗﯿﻤﺔ ) ‪ ( i‬أﻗﻞ أو ﺗﺴﺎوي ) ‪ ( 10‬ﻓﻜﺎﻧﺖ اﻻﺟﺎﺑﺔ ﺑﻨﻌﻢ ﻓﻨﺤﻦ‬
‫ﻋﺪﻧﺎ ﻟﻠـ ) ‪ ( while‬ﺑﻘﯿﻤﺔ ) ‪ ( i‬ﺑﻌﺪ زﯾﺎدﺗﻬﺎ ﺑـ ) ‪ ( 1‬أي ) ‪. ( 2‬‬

‫) ‪While ( 2 <= 10‬‬

‫ﻓﺒﻌﺪ ﺗﺤﻘﻖ اﻟﺸﺮط دﺧﻠﻨﺎ اﻟﻰ داﺧﻞ اﻟﺤﻠﻘﺔ ﻓﻮﺟﺪﻧﺎ أﻣﺮ اﻟﻄﺒﺎﻋﺔ ﻗﯿﻤﺔ ) ‪ ( i‬وﻫﻮ ) ‪. ( 2‬‬
‫ﺛ ﻢ أﻧﺘﻘﻠ ﻨﺎ اﻟ ﻰ اﻟﺠﻤـﻠ ﺔ اﻟﺘ ﻰ ﺗﻠﯿﻬﺎ واﻟﺘﻰ ﻫﻲ ) ‪ " ( i++‬أي زﯾـﺪ ﻗﯿﻤـﺔ ) ‪ ( i‬ﺑﻤﻘـﺪار ) ‪ ( 1‬وﻗﯿﻤﺔ ) ‪ ( i‬ﻋﻨﺪﻧﺎ اﻻن‬
‫) ‪ ( 2‬زﯾﺪﻫﺎ ﺑﻮاﺣﺪ ﻟﺘﺼﺒﺢ ) ‪. " ( 3‬‬

‫ﺛ ﻢ ﻧﻌ ﻮد اﻟ ﻰ اﻟ ـ ) ‪ ( while‬ﻣﺮة أﺧﺮى وﻣﻌﻨﺎ ﻗﯿﻤﺔ اﻟـ ) ‪ ( i‬اﻟﺠﺪﯾﺪة وﻫﻲ ) ‪ ( 3‬وﯾﺘﺤﻘﻖ ﻣﻦ اﻟﺸﺮط ﻣﺮة أﺧﺮى‬
‫وﻫﻜﺬا ﻧﺴﺘﻤﺮ ‪ 10‬ﻣﺮات اﻟﻰ أن ﺗﺼﻞ ﻗﯿﻤﺔ ) ‪ ( i‬اﻟﻰ ) ‪ ( 11‬وﻫﻨﺎ ﺳﻮف ﯾﺤﺪث اﻟﺘﺎﻟﻲ ‪:‬‬

‫ﯾﺄﺗ ﻲ اﻟﺠﻤﻠﺔ اﻟـ ) ‪ ( while‬ﻓﺴﺄﻟﻪ اﻟﺸﺮط ﻫﻞ ﻗﯿﻤﺔ ) ‪ ( i‬اﻟﺘﻰ ﻫﻲ ) ‪ ( 11‬أﻗﻞ أو ﺗﺴﺎوي ) ‪ ( 10‬ﻓﯿﻜﻮن اﻟﺠﻮاب‬
‫ﻻ ﻓﯿﺨ ﺮج ﻣ ﻦ ﺣﻠﻘ ﺔ اﻟﺘﻜﺮار وﻻﯾﺪﺧﻞ ﺑﺪاﺧﻠﻬﺎ ‪ .‬وإذا ﻛﺎن ﻫﻨﺎك ﺟﻤﻠﺔ ﺗﻠﻲ ﺣﻠﻘﺔ اﻟﺘﻜﺮار ﺳﻮف ﯾﻨﻔﺬﻫﺎ ﺑﻌﺪ ﺧﺮوﺟﻪ‬
‫ﻣﻦ ﺣﻠﻘﺔ اﻟﺘﻜﺮار ‪.‬‬
‫) ﻻﺣﻆ ﺟﻤﻠﺔ ﺗﻠﻲ ﺣﻠﻘﺔ اﻟﺘﻜﺮار وﻟﯿﺲ ﺑﺪاﺧﻠﻪ ﺣﻠﻘﺔ اﻟﺘﻜﺮار ( ‪.‬‬
‫ﻣﺜﺎل اﺧﺮ ) ﻟﻨﺠﻌﻠﻚ ﺗﻘﺎرن ﺑﯿﻦ ) ‪ ( while‬و ) ‪. . ( ( for‬‬

‫ﻣﺜﺎل ) ‪: ( 1‬‬

‫> ‪<html‬‬
‫>‪</title‬اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ>‪<head><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‬‬
‫>‪</title‬اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ>‪<head><title‬‬
‫>"‪<script type = "text/javascript‬‬
‫; ‪var i = 1‬‬
‫{ ‪do‬‬
‫; ) ‪document.write( i‬‬
‫; ‪i ++‬‬
‫}‬
‫) ‪while ( i <= 10‬‬
‫>‪</script‬‬
‫>‪</head‬‬
‫>‪<body></body‬‬

‫>‪</html‬‬

‫‪٢٤‬‬
‫ﻟﻨﺤﻠﻞ ﻫﺬا اﻟﻤﺜﺎل ﺳﻮﯾﺎ ‪:‬‬
‫وﺿ ﻌﻨﺎ ﻗ ﯿﻤﺔ إﺑﺘﺪاﺋ ﯿﺔ ﻟﻠ ـ ) ‪ ( i‬وﻫ ﻲ ) ‪ ( 1‬ﺛ ﻢ دﺧﻠ ﻨﺎ اﻟ ﻰ داﺧﻞ ) ‪ ( do while‬ﺛﻢ ﺗﻮﺟﻬﻨﺎ اﻟﻰ اﻟﺠﻤﻠﺔ اﻟﺘﻰ ﺗﻠﯿﻬﺎ‬
‫ﻫ ﻲ ﺟﻤﻠﺔ اﻟﻄﺒﺎﻋﺔ " أي ﻃﺒﺎﻋﺔ ﻗﯿﻤﺔ ) ‪ " ( i‬إذا ﺳﻮف ﯾﻄﺒﻊ )‪ (١‬ﺛﻢ وﺟﺪﻧﺎ اﻻﻣﺮ ) ‪ ( i++‬اي زﯾﺎدة ﻗﯿﻤﺔ ) ‪( i‬‬
‫أي أﺻ ﺒﺤﺖ ﻗ ﯿﻤﺔ ) ‪ ( i‬ﺗﺴﺎوي ) ‪ .( 2‬ﺛﻢ اﻧﺘﻘﻠﻨﺎ اﻟﻰ ﺟﻤﻠﺔ اﻟﺸﺮط اﻟﺘﻲ ﺣﺪد ﻫﻞ ﺳﻮف ﻧﻌﻮد اﻟﻰ ) ‪ ( do‬أم ﻻ ‪.‬‬
‫ﻓ ﻮﺟﺪﻧﺎ اﻟﺸ ﺮط ﯾﺴ ﺄﻟﻨﺎ ﻫ ﻞ ﻗ ﯿﻤﺔ ) ‪ ( i‬أي ) ‪ ( 2‬أﻗ ﻞ أو ﺗﺴ ﺎوي ) ‪ ( 10‬ﻓﻜ ﺎن اﻟﺠ ﻮاب ﻧﻌ ﻢ إذا ﻋ ﺪﻧﺎ ﻟﻠ ـ ) ‪( do‬‬
‫ﻣ ﺮة أﺧ ﺮى ﺛ ﻢ ﻧﻔ ﺬﻧﺎ ﻣﺎﺑ ﺪاﺧﻠﻬﺎ ﻓ ﺰدﻧﺎ ﻗ ﯿﻤﺔ ) ‪ ( i‬ﺑ ﻮاﺣﺪ ﻓﺄﺻ ﺒﺤﺖ ) ‪ ( 3‬ﺛ ﻢ اﻧﺘﻘﻠ ﻨﺎ اﻟ ﻰ اﻟﺸ ﺮط وﻗ ﺪ ﻧﺤﻘﻖ وﻛﺎﻧﺖ‬
‫اﻻﺟﺎﺑ ﺔ ﺑ ﻨﻌﻢ أي أن اﻟ ـ ) ‪ ( 3‬أﻗ ﻞ ﻣ ﻦ ) ‪ ( 10‬وﻫﻜ ﺬا اﺳ ﺘﻤﺮﯾﻨﺎ اﻟ ﻰ أن ﻧﺼ ﻞ ﻟﻘ ﯿﻤﺔ اﻟ ـ ) ‪ ( i‬ﯾﺴ ﺎوي ) ‪( 11‬‬
‫وﺑﺎﻟﺘﺎﻟﻲ ﻋﺪم اﻟﻌﻮدة اﻟﻰ ) ‪ ( do‬واﻟﺨﺮوج ﻣﻦ ﺣﻠﻘﺔ اﻟﺘﻜﺮار ‪.‬‬

‫ﻗﺪ ﺗﺘﺴﺎءل ﻣﺎﻟﻔﺮق ﺑﯿﻦ اﻟـ ) ‪ ( while‬واﻟـ ) ‪ ( do while‬؟‬


‫ﻧﺤﺪد ذﻟﻚ اﻟﻔﺮق ‪. . .‬‬

‫ﻛﻤ ﺎ ﻓ ﻲ ) ‪ ( while‬ﻧ ﺘﺤﻘﻖ ﻣ ﻦ اﻟﺸ ﺮط ﻗ ﺒﻞ اﻟﺪﺧ ﻮل اﻟ ﻰ اﻟﺤﻠﻘ ﺔ أي أﻧ ﻨﺎ ﻻﻧ ﻨﻔﺬ أي ﺷ ﺊ ﺑﺪاﺧﻠﻬﺎ ﻣﺎدام اﻟﺸﺮط ﻟﻢ‬
‫ﯾﺘﺤﻘﻖ وﻫﺬا أﻣﺮ ﻃﺒﯿﻌﻲ ﻻﻧﻨﺎ ﻟﻢ ﻧﺪﺧﻞ اﻟﻰ اﻟﺤﻠﻘﺔ أﺻﻼ ﻓﻜﯿﻒ ﻧﻌﺮف ﻣﺎﺑﺪاﺧﻠﻬﺎ وﻧﻨﻔﺬه ‪.‬‬
‫أﻣ ﺎ ﺑﺎﻟـ ) ‪ ( do while‬ﻛﻨﺎ ﻧﺪﺧﻞ اﻟﻰ اﻟﺤﻠﻘﺔ وﻧﻨﻔﺬ أﻣﺮ ﺛﻢ ﻧﻔﺤﺺ اﻟﺸﺮط وﻟﻜﻦ ﺑﻌﺪ أن ﻧﻜﻮن ﻗﺪ ﻧﻔﺬﻧﺎ ﻫﺬا اﻻﻣﺮ‬
‫وﯾﺠﺐ اﻟﺘﻨﺒﯿﻪ ﻫﻨﺎ " ﻓﻲ ﺣﺎﻟﺔ ﻋﺪم ﺗﺤﻘﻖ اﻟﺸﺮط ﻟﻦ ﻧﻌﻮد ﻣﺮة أﺧﺮى اﻟﻰ ) ‪. ( do‬‬
‫إذا اﻟﻔ ﺮق ﻫ ﻮ أن ﺑﺎﻟـ ) ‪ ( do while‬ﯾﻨﻔﺬ ﻋﻠﻰ اﻻﻗﻞ أﻣﺮ واﺣﺪ ﻓﻲ داﺧﻞ ﺣﻠﻘﺔ اﻟﺘﻜﺮار ﺣﺘﻰ ﻟﻮ ﻛﺎن اﻟﺸﺮط ﻏﯿﺮ‬
‫ﻣﺘﺤﻘﻖ ﻋﻠﻰ اﻟﻌﻜﺲ اﻟـ ) ‪ ( while‬اﻟﺬي ﻻﯾﻨﻔﺬ أي اﻣﺮ ﻣﺎدام اﻟﺸﺮط ﻏﯿﺮ ﻣﺘﺤﻘﻖ ‪.‬‬

‫ﻣﺜﺎل ﺗﻮﺿﯿﺤﻲ ) ﻟﺘﻮﺿﺢ اﻟﻔﻜﺮة ﺑﺸﻜﻞ ﻋﻤﻠﻲ ( ‪:‬‬

‫; ‪var i =5‬‬ ‫; ‪var i =5‬‬


‫) ‪while ( i < 3‬‬ ‫‪do‬‬
‫{‬ ‫{‬
‫; ) ‪document.write ( i‬‬ ‫; ) ‪document.write ( i‬‬
‫; ‪i ++‬‬ ‫; ‪i++‬‬
‫}‬ ‫) ‪} while ( i < 3‬‬

‫ﻓ ﻲ ﻣ ﺜﺎل اﻟ ـ ) ‪ ( while‬اﻟﺒ ﺮﻧﺎﻣﺞ ﻟﻦ ﯾﻄﺒﻊ ﺷﯿﺌﺎ وذﻟﻚ ﻻﻧﻪ ﺳﺄﻟﺘﻪ ﺟﻤﻠﺔ اﻟﺸﺮط ﻗﺒﻞ اﻟﺪﺧﻮل ﻫﻞ اﻟـ ) ‪ ( 5‬أﻗﻞ‬
‫ﻣﻦ ) ‪ ( 3‬ﻓﻜﺎن اﻟﺠﻮاب ﻻ ‪ .‬وﻫﻨﺎ ﻟﻦ ﯾﺪﺧﻞ اﻟﻰ اﻟﺤﻠﻘﺔ وﺑﺎﻟﺘﺎﻟﻲ ﻋﺪم ﺗﻨﻔﯿﺬ ﻣﺎﺑﺪاﺧﻠﻬﺎ أي ﻋﺪم ﻃﺒﺎﻋﺔ ﻗﯿﻤﺔ ) ‪( i‬‬

‫ﻓ ﻲ ﻣ ﺜﺎل اﻟ ـ ) ‪ ( do while‬ﺳ ﻮف ﯾﻄﺒﻊ اﻟﺒﺮﻧﺎﻣﺞ ﻓﻘـﻂ ﻣـﺮة واﺣـﺪة ﻗﯿﻤﺔ ) ‪ ( i‬ﺛﻢ ﯾﺘﻮﻗﻒ ﻓﺒﻌﺪ ﻃﺒﺎﻋـﺔ ﻗﯿﻤﺔ‬
‫) ‪ ( i‬ﺳ ﻮف ﯾﺴ ﺄل ﻋ ﻦ اﻟﺸ ﺮط وﻫﻮ ﻫﻞ ) ‪ ( 6‬أﺻﻐﺮ ﻣﻦ ) ‪ ( 3‬ﻓﺴﻮف ﺗﻜﻮن اﻻﺟﺎﺑﺔ ﻻ وﺑﺎﻟﺘﺎﻟﻲ ﻋﺪم اﻟﻌﻮدة‬
‫اﻟﻰ ﺟﻤﻠﺔ ) ‪ ( do‬أي ﻋﺪم اﻟﺪﺧﻮل اﻟﻰ ﺣﻠﻘﺔ اﻟﺘﻜﺮار واﻻﺳﺘﻤﺮار ﺑﺎﻟﻄﺒﺎﻋﺔ أي اﻟﺨﺮوج ‪.‬‬

‫وﻓﻲ ﻫﺬا اﻟﻤﺜﺎل ﻧﻜﻮن ﻗﺪ وﺿﻌﻨﺎ اﻟﻔﺮق ﺑﯿﻨﻬﻤﺎ ‪...‬‬

‫اذا ﻧﺘﯿﺠﺔ ﻛﻮد ال )‪ ( while‬أﻧﻪ ﻟﻦ ﯾﻄﺒﻊ ﺷﻲء ‪....‬‬ ‫•‬


‫وﻧﺘﯿﺠﺔ ال ‪ do while‬ﻫﻮ ﻃﺒﺎﻋﺔ ﻓﻘﻂ رﻗﻢ ) ‪.... ( 5‬‬ ‫•‬

‫ﻗ ﺪ ﺗﺘﺴ ﺎءل ﻋﺰﯾﺰي اﻟﻤﺘﺪرب ﻣﺎﻟﻔﺎﺋﺪة ﻣﻦ أﺧﺬﻧﺎ اﻟـ ) ‪ ( while‬واﻟـ ) ‪ ( do while‬ﻣﺎدام أﻧﻬﻤﺎ ﯾﻌﻤﻠﻮا ﻋﻤﻞ‬
‫اﻟـ ) ‪ ( for‬؟‬

‫ﻋﺰﯾ ﺰي اﻟﻤ ﺘﺪرب ﻧﺤ ﻦ ﻧﺬﻛ ﺮ ﻟ ﻚ ﻛ ﻞ ﺻ ﯿﻎ اﻟﺘﻜ ﺮار ﻓ ﻲ ﻟﻐ ﺔ اﻟﺠﺎﻓ ﺎ ﺳ ﻜﺮﺑﺖ " واﻟﻤﺴ ﺘﺨﺪﻣﺔ ﻓ ﻲ ﺟﻤﯿﻊ ﻟﻐﺎت‬
‫اﻟﺒ ﺮﻣﺠﻪ " وﻟ ﻚ ﺣﺮﯾﺔ اﻻﺧﺘﯿﺎر ﺑﺈﺳﺘﻌﻤﺎل أي واﺣﺪة ﻣﻨﻬﺎ ﻓﻘﺪ ﺗﺠﺪ أن ) ‪ ( for _ loop‬ﻫﻲ أﻓﻀﻞ ﻟﻚ وﻟﻜﻦ‬
‫ﻋ ﻨﺪ ﻏﯿ ﺮك ﺗﺠ ﺪ اﻟ ـ ) ‪ ( while‬أو ) ‪ ( do while‬ﻫ ﻲ أﻓﻀ ﻞ ﻟ ﻪ وﻗﺪ ﯾﺘﺤﺘﻢ ﻋﻠﯿﻚ إﺳﺘﺨﺪام أي واﺣﺪة ﻣﻨﻬﺎ‬
‫ﻣ ﺜﻞ ) ‪ ( do while‬ﻓ ﻲ ﻛ ﺘﺎﺑﺖ ﺑ ﺮﻧﺎﻣﺠﻚ ﻓﻬ ﺬا راﺟﻊ ﻟﻚ وﻣﺎ ﻣﻄﻠﺒﻚ ﻣﻦ ﺑﺮﻧﺎﻣﺠﻚ ﻓﻜﻤﺎ ﻗﻠﻨﺎ ﻟﻜﻼ ﻣﻨﺎ أﺳﻠﻮﺑﻪ‬
‫وﻃﺮﯾﻘﺘﻪ اﻟﺨﺎﺻﺔ ﯾﻜﺘﺎﺑﺔ اﻟﺒﺮﻧﺎﻣﺞ ‪.‬‬

‫‪٢٥‬‬
‫اﻻﻣﺮ ) ‪ ( break‬و ) ‪: ( continue‬‬ ‫§‬

‫ﻧﺒﺪأ ﺑﺎﻻﻣﺮ ) ‪: ( break‬‬


‫ﻗﺪ ﻧﺴﺘﺨﺪﻣﻬﺎ ﻓﻲ اﻟـ ) ‪ ( while‬أو اﻟـ ) ‪ ( do – while‬وﻗﺪ ﻧﺴﺘﺨﺪﻣﻬﺎ ﺑﺎﻟـ ) ‪. ( switch‬‬
‫أﻣﺎ ﻟﻤﺎذا ﻧﺴﺘﺨﺪﻣﻬﺎ ؟‬

‫ﻟﻨﻔﺮض أن ﻟﺪﯾﻚ ﺑﯿﺎﻧﺎت ﻣﺨﺰﻧﺔ ﻓﻲ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت وﻟﻜﻦ ﺗﺮﯾﺪ ﻓﻘﻂ ﺟﺰء ﻣﻦ ﻫﺬه اﻟﺒﯿﺎﻧﺎت أن ﺗﻌﺮض وﻟﯿﺲ ﺟﻤﯿﻌﺎ‬
‫ﻓﻬﻨﺎ أﺳﺘﺨﺪم ) ‪ ( break‬ﻟﻜﻲ أﺧﺮج ﻣﺒﺎﺷﺮة ﻣﻦ داﺧﻞ ﺣﻠﻘﺔ اﻟﺘﻜﺮار ﺣﺘﻰ ﻟﻮ ﻟﻢ أﺗﻨﺘﻬﻲ ﻣﻦ اﻟﺤﻠﻘﺔ ‪.‬‬

‫ﺻﯿﻐﺘﻬﺎ ‪:‬‬
‫; ‪break‬‬

‫ﻟﻨﺄﺧﺬ ﻣﺜﺎﻻ ‪:‬‬

‫>"‪<html dir="rtl‬‬
‫>‪</title‬اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ>‪<head><title‬‬
‫>"‪<script type = "text/javascript‬‬
‫; )"ﻣﺤﻤﺪ"‪ "،‬اﻟﻌﺮﺑﻲ"‪ "،‬ﻟﺤﺴﻦ"‪"،‬ﻋﺎﻃﻒ"‪"،‬ﻣﺤﻤﻮد"‪ "،‬ﺛﺎﻣﺮ"‪"،‬ﺧﺎﻟﺪ"(‪var x = new Array‬‬
‫)‪for(var i=0 ; i <x.length ; i++‬‬
‫{‬
‫)‪if(i == 4‬‬
‫; ‪break‬‬
‫; )">‪document.writeln(x[i] + "<br /‬‬
‫}‬
‫>‪</script‬‬
‫>‪</head‬‬
‫>‪<body></body‬‬

‫>‪</html‬‬

‫ﻟﻨﺤﻠﻞ اﻟﻤﺜﺎل ﺳﻮﯾﺎ ‪..‬‬

‫ﻋﺮﻓﻨﺎ اﻟﻤﺘﻐﯿﺮ ) ‪ ( x‬واﻟﺬي ﻫﻮ ﻋﺒﺎرة ﻋﻦ ﻣﺼﻔﻮﻓﺔ ﺗﺤﺘﻮي ﺑﺪاﺧﻠﻬﺎ ﻋﻠﻰ ) ‪ ( 7‬أﺳﻤﺎء ‪ .‬ﺛﻢ اﻧﺸﺄﻧﺎ ﺣﻠﻘﺔ اﻟﺘﻜﺮار )‬
‫‪ ( for‬وﺑﺪأﻧﺎﻫﺎ ﻣﻦ ) ‪ ( 0‬اﻟﻰ ) ‪ ( i < x.lengh‬أي أﻗﻞ ﻣﻦ اﻟﻌﺪد ) ‪. ( 7‬‬
‫وﻋﺰﯾﺰي اﻟﻤﺴﺘﺨﺪم اﻻﻣﺮ اﻟﻄﺒﯿﻌﻲ واﻟﺒﺪﯾﻬﻲ أن ﯾﻄﺒﻊ ﺟﻤﯿﻊ اﻷﺳﻤﺎء اﻟﺘﻲ ﺑﺎﻟﻤﺼﻔﻮﻓﺔ ﻟﻜﻦ ﻫﻨﺎ اﻟﺬي ﺳﻮف ﯾﺤﺪث‬
‫أﻧﻪ ﺳﻮف ﯾﻄﺒﻊ ﻓﻘﻂ أرﺑﻌﺔ أﺳﻤﺎء ‪ .‬وﯾﺨﺮج ﺧﺎرج ﺣﻠﻘﺔ اﻟﺘﻜﺮار ﻟﻤﺎذا ‪...‬‬

‫‪26‬‬
‫‪٢٦‬‬
‫ﻷﻧﻨﺎ وﺿﻌﻨﺎ ﺷﺮط داﺧﻞ ﺣﻠﻘﺔ اﻟﺘﻜﺮار وﻫﻮ ) ‪ ( if i == 4‬وﺑﻌﺪه وﺿﻌﻨﺎ ) ‪ ( break‬أي أﻧﻨﺎ ﺣﺪدﻧﺎ إذا ﻛﺎﻧﺖ‬
‫ﻗﯿﻤﺔ ) ‪ ( i‬ﻣﺴﺎوﯾﺔ ﻟﻠﻌﺪد ) ‪ ( 4‬ﯾﺘﻮﻗﻒ ﻣﻦ ﺣﻠﻘﺔ اﻟﺘﻜﺮار وأﯾﻀﺎ ﻻﯾﻨﻔﺬ أﻣﺮ ) ‪ ( document.writeln‬أي‬
‫ﯾﺨﺮج ﻋﻨﺪ وﺻﻮﻟﻪ ﻧﻘﻄﺔ ) ‪ ( break‬وﯾﺨﺮج ﺣﺘﻰ ﻟﻮ ﻟﻢ ﺗﻨﺘﻬﻲ ﺣﻠﻘﺔ اﻟﺘﻜﺮار ‪.‬‬
‫إذا ﻫﻨﺎ ﻓﻘﻂ ﺳﻮف ﯾﻄﺒﻊ اﻷﺳﻤﺎء اﻷرﺑﻌﺔ اﻻواﺋﻞ واﻟﺘﻲ ﻫﻢ ) ﻣﺤﻤﺪ _ اﻟﻌﺮﺑﻲ _ ﻟﺤﺴﻦ _ ﻋﺎﻃﻒ ( وﻻ ﺗﻨﺴﻰ‬
‫اﻧﻨﺎ ﺑﺪأﻧﺎ ﻣﻦ اﻟﺼﻔﺮ‪.‬‬

‫اﻻﻣﺮ ) ‪: ( continue‬‬
‫ﻫﺬا اﻻﻣﺮ ﻋﻤﻠﻪ ﻫﻮ اﻟﻘﻔﺰ ﻋﻦ ﻗﯿﻤﺔ ﻣﻌﯿﻨﺔ ﻧﺤﻦ ﻧﺤﺪدﻫﺎ أي ﯾﻌﻤﻞ ) ‪ ... ( skip‬ﻟﻨﻔﺮض أن ﻟﺪﯾﻨﺎ ﻓﻲ ﻗﺎﻋﺪة‬
‫اﻟﺒﯿﺎﻧﺎت ﻣﺜﻼ أو ﻓﻲ ﻣﺼﻔﻮﻓﺔ ﺳﺒﻌﺔ أﺳﻤﺎء وﻟﻜﻦ اﻷﺳﻢ رﻗﻢ ) ‪ ( 4‬ﻻﻧﺮﯾﺪ ﻃﺒﺎﻋﺘﻪ ﻓﻘﻂ ﻫﻮ‪ ...‬أﻣﺎ اﻟﺒﻘﯿﺔ ﻧﺮﯾﺪ‬
‫ﻃﺒﺎﻋﺘﻬﺎ إذا ﻫﻨﺎ اﻟﺬي ﺳﻮف ﯾﺤﻞ ﻟﻨﺎ ﻫﺬا اﻻﻣﺮ ﻫﻮ ) ‪. ( continue‬‬

‫ﺻﯿﻐﺘﻬﺎ ‪:‬‬
‫; ‪continue‬‬

‫ﻟﻨﺄﺧﺬ ﻣﺜﺎﻻ ‪:‬‬

‫>"‪<html dir="rtl‬‬
‫>‪</title‬اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ>‪<head><title‬‬
‫>"‪<script type = "text/javascript‬‬
‫; )"ﻣﺤﻤﺪ"‪ "،‬اﻟﻌﺮﺑﻲ"‪ "،‬ﻟﺤﺴﻦ"‪"،‬ﻋﺎﻃﻒ"‪"،‬ﻣﺤﻤﻮد"‪ "،‬ﺛﺎﻣﺮ"‪"،‬ﺧﺎﻟﺪ"(‪var x = new Array‬‬
‫)‪for(var i=0 ; i <x.length ; i++‬‬
‫{‬
‫)‪if(i == 4‬‬
‫;‪continue‬‬
‫; )">‪document.writeln(x[i] + "<br /‬‬
‫}‬
‫>‪</script‬‬
‫>‪</head‬‬
‫>‪<body></body‬‬

‫>‪</html‬‬

‫‪27‬‬
‫‪٢٧‬‬
‫ﻟﻨﺤﻠﻞ اﻟﻤﺜﺎل ﺳﻮﯾﺎ ‪:‬‬

‫ﻋﺮﻓﻨﺎ اﻟﻤﺘﻐﯿﺮ ) ‪ ( x‬واﻟﺬي ﻫﻮ ﻋﺒﺎرة ﻋﻦ ﻣﺼﻔﻮﻓﺔ ﺗﺤﺘﻮي ﺑﺪاﺧﻠﻬﺎ ﻋﻠﻰ ) ‪ ( 7‬أﺳﻤﺎء ‪ .‬ﺛﻢ اﻧﺸﺄﻧﺎ ﺣﻠﻘﺔ اﻟﺘﻜﺮار )‬
‫‪ ( for‬وﺑﺪأﻧﺎﻫﺎ ﻣﻦ اﻟﻌﺪد ) ‪ ( 0‬اﻟﻰ ) ‪ ( i < x.lengh‬أي أﻗﻞ ﻣﻦ اﻟﻌﺪد ) ‪. ( 7‬‬
‫وﻋﺰﯾﺰي اﻟﻤﺴﺘﺨﺪم اﻻﻣﺮ اﻟﻄﺒﯿﻌﻲ واﻟﺒﺪﯾﻬﻲ أن ﯾﻄﺒﻊ ﺟﻤﯿﻊ اﻷﺳﻤﺎء اﻟﺘﻲ ﺑﺎﻟﻤﺼﻔﻮﻓﺔ ﻟﻜﻦ ﻫﻨﺎ اﻟﺬي ﺳﻮف ﯾﺤﺪث‬
‫أﻧﻪ ﺳﻮف ﯾﻄﺒﻊ ﺟﻤﯿﻊ اﻷﺳﻤﺎء ﻣﺎﻋﺪا أﺳﻢ ) ﻣﺤﻤﻮد ( ‪ .‬ﻟﻤﺎذا ؟‬
‫ﻧﺤﻦ ﻫﻨﺎ ﻛﺘﺒﻨﺎ ﺷﺮط واﻟﺬي وﻫﻮ ) ‪ ( if i == 4‬وﺑﻌﺪه ﻛﺘﺒﻨﺎ ) ‪ ( continue‬أي ﻛﺄﻧﻨﺎ ﻧﻘﻮل ﻫﻨﺎ ﻋﻨﺪﻣﺎ ﺗﺼﻞ‬
‫ﻗﯿﻤﺔ ) ‪ ( i‬ﻟﻠﻌﺪد ) ‪ ( 4‬ﻧﻔﺬ ) ‪ ( continue‬أي اﻟﻤﻮﻗﻊ اﻟﺮاﺑﻊ ﻣﻦ اﻟﻤﺼﻔﻮﻓﺔ ‪...‬ﺗﺠﺎﻫﻠﻪ وﻻ ﺗﻄﺒﻌﻪ واﻧﺘﻘﻞ اﻟﻰ‬
‫اﻟﺬي ﯾﻠﯿﻪ اي ارﺟﻊ وﺗﺠﺎوز ﻋﻦ اﻣﺮ اﻟﻄﺒﺎﻋﺔ‪ ...‬ﻓﻬﻨﺎ ﺳﻮف ﯾﻄﺒﻊ اﻷﺳﻤﺎء اﻻرﺑﻌﺔ اﻻوﻟﻰ واﻟﺘﻲ ﻫﻲ ) ﻣﺤﻤﺪ _‬
‫اﻟﻌﺮﺑﻲ _ ﻟﺤﺴﻦ _ ﻋﺎﻃﻒ( أي أﻧﻨﺎ وﺻﻠﻨﺎ اﻟﻰ اﻟﻤﻮﻗﻊ اﻟﺮاﺑﻊ ﻣﻦ اﻟﻤﺼﻔﻮﻓﺔ ﺛﻢ ﺗﺼﺒﺢ ﻗﯿﻤﺔ ) ‪ ( i‬ﻫﻲ ) ‪( 4‬‬
‫اﻷﺳﻢ ) ﻣﺤﻤﻮد ( ﻓﯿﻨﻔﺬ اﻻﻣﺮ ) ‪ ( continue‬وﯾﻌﻤﻞ ) ‪ ( skip‬أي ﺗﺠﺎﻫﻞ وﻗﻔﺰ ﻋﻦ ﻫﺬا اﻷﺳﻢ ﺛﻢ ﯾﺴﺘﻤﺮ ﻓﻲ‬
‫ﻃﺒﺎﻋﺔ ﺑﻘﯿﺔ اﻷﺳﻤﺎء ‪.‬‬

‫ﻣﻼﺣﻈﺔ ‪:‬‬
‫او ‪ while‬ﺑﺪاﺧﻞ ‪ for‬او ‪ while‬اي‬ ‫ﻗﺪ ﯾﺘﻄﻠﺐ ﻣﻨﻚ ﺑﺮﻧﺎﻣﺞ ﻣﻌﯿﻦ ﺣﺴﺐ وﻇﯿﻔﺘﻪ اﻟﻰ وﺿﻊ ‪for‬‬
‫‪ nested loop‬ﻛﻤﺎ ﻓﻲ ال ‪ if‬ﺗﺬﻛﺮ‬

‫‪28‬‬
‫‪٢٨‬‬
‫§ اﻟﺪوال ) ‪: ( function‬‬
‫ﻫﻨﺎ ﺳﻮف ﻧﺘﺤﺪث ﻋﻦ ﻛﯿﻔﯿﺔ إﻧﺸﺎء داﻟﺔ أو أﻛﺜﺮ ﺧﺎﺻﺔ ﺑﻚ ﺑﺪاﺧﻞ ﺑﺮﻧﺎﻣﺠﻚ وﻟﻜﻦ ﻗﺪ ﺗﺘﺴﺎءل ﻣﺎﻫﻲ اﻟﺪوال ﺳﻮف‬
‫ﻧﺠﯿﺒﻚ ﺑﺎﻟﺘﺎﻟﻲ ‪. .‬‬

‫ﻋﺰﯾﺰي اﻟﻤﺘﺪرب اﻟﺪاﻟﺔ ﻫﻲ ﻣﻦ اﻻواﻣﺮ واﻟﻤﺘﻐﯿﺮات ﺗﻜﻮن ﯾﺸﻜﻞ ﻣﺴﺘﻘﻞ ﺑﺤﯿﺚ ﻧﻀﻌﻬﺎ داﺧﻞ اﻟﺒﺮﻧﺎﻣﺞ وﻻ ﯾﻨﻔﺬﻫﺎ‬
‫اﻟﺒﺮﻧﺎﻣﺞ اﻻ ﻋﻨﺪﻣﺎ ﯾﺘﻢ أﺳﺘﺪﻋﺎﺋﻬﺎ وﻫﺬا ﻣﺎﯾﺼﻄﻠﺢ ﻋﻠﯿﻪ ﺑـ ) ‪ ( call function‬أﻣﺎ ﻛﯿﻔﯿﺔ أﺳﺘﺪﻋﺎﺋﻬﺎ ﻓﯿﺘﻢ ﻋﻦ‬
‫ﻃﺮﯾﻖ ﻛﺘﺎﺑﺔ أﺳﻢ اﻟﺪاﻟﺔ وأرﺳﺎل اﻟﻤﺘﻐﯿﺮات ﻟﻬﺎ " إن وﺟﺪت " ‪.‬‬

‫ﺑﻌﺪ ﻣﺎذﻛﺮﻧﺎه ﻗﺪ ﺗﺘﺴﺎءل ﻋﺰﯾﺰي اﻟﻤﺘﺪرب ﻟﻤﺎذا أﺳﺘﺨﺪم ﻫﺬه اﻟﺪوال وﻣﺎﻗﯿﻤﺘﻬﺎ ﺑﺎﻟﻨﺴﺒﺔ ﻟﻲ أي ﻣﺎﻫﻲ أﻫﻤﯿﺘﻬﺎ ﻧﺠﯿﺒﻚ‬
‫ﺑﻤﺎ ﯾﻠﻲ ‪. . .‬‬

‫ﻋﺰﯾﺰي اﻟﻤﺘﺪرب ﺗﺴﺘﻄﯿﻊ أن ﻻﺗﺴﺘﺨﺪم اﻟﺪوال وﺗﻜﺘﺐ ﺑﺮﻧﺎﻣﺠﻚ ﻛﺎﻟﻤﻌﺘﺎد وﻣﻦ ﻏﯿﺮ دوال وﻟﻜﻦ ﺗﻌﺮف ﻣﺎذا‬
‫ﺳﯿﺤﺪث ‪. . .‬‬

‫ﺳﻮف ﺗﺤﺪث ﺳﻠﺒﯿﺎت ﻋﺪة ﻣﻨﻬﺎ ‪:‬‬


‫أﺿﺎﻋﺔ ﻛﺜﯿﺮا ﻣﻦ وﻗﺘﻚ أﺿﺎﻓﺔ اﻟﻰ أن اﻟﺒﺮﻧﺎﻣﺞ ﺳﻮف ﯾﺤﺘﻮي ﻋﻠﻰ ﻛﻮد ﻃﻮﯾﻞ ﻟﻠﻐﺎﯾﺔ ﻓﻤﺎ ﺑﺎﻟﻚ ﺳﻮف ﺗﻜﻮن‬
‫ﺳﺮﻋﺔ ﺗﻨﻔﯿﺬ ﻫﺬا اﻟﻜﻮد ﻛﺬﻟﻚ ﺳﻮف ﯾﻜﻮن ﺑﺮﻧﺎﻣﺠﻚ ﺻﻌﺐ اﻟﺘﻄﻮﯾﺮ أﻋﺮف أﻧﻚ ﻗﺪ أﺧﺘﻠﻂ ﻋﻠﯿﻚ اﻻﻣﺮ ﻟﻨﻄﺮح‬
‫ﻣﺜﺎﻻ ﻟﺘﻮﺿﯿﺢ ﻣﺎ ﺑﻬﻢ ﻟﺪﯾﻚ ‪. . .‬‬

‫ﻟﻨﻔﺮض أﻧﻚ ﺗﺮﯾﺪ أن ﺗﻄﻠﺐ ﻣﻦ اﻟﻤﺴﺘﺨﺪم أن ﯾﺪﺧﻞ رﻗﻤﯿﻦ واﻟﺒﺮﻧﺎﻣﺞ اﻟﺬي ﺻﻤﻤﺘﻪ ﯾﺨﺮج ﻧﺎﺗﺞ ﺟﻤﻌﻬﻤﺎ وﺗﺮﯾﺪ أن‬
‫ﯾﻜﺮر ﻫﺬه اﻟﻌﻤﻠﯿﺔ ﻋﺸﺮات اﻟﻤﺮات ﻓﻬﻨﺎ ﺗﺴﺘﻄﯿﻊ أﺳﺘﺨﺪام اﻟﺪوال ﻓﻤﺎ ﻋﻠﯿﻚ ﺳﻮى أرﺳﺎل اﻟﺮﻗﻤﯿﻦ اﻟﺬﯾﻦ ﯾﺪﺧﻠﻬﻤﺎ‬
‫ﻓﻲ ﻛﻞ ﻣﺮة اﻟﻰ اﻟﺪاﻟﺔ‪ .‬وﻟﺸﺪك ﻟﻠﻤﻮﺿﻮع أﻛﺜﺮ ﻻ أرﯾﺪ أن أﺗﻜﻠﻢ ﻓﻘﻂ ﻋﻠﻰ ﻣﺜﺎل اﻷرﻗﺎم ﻷﻋﻄﯿﻚ ﻣﺜﺎﻻ ﻧﺴﺘﺨﺪﻣﻪ‬
‫ﻓﻲ اﻟﻤﻮاﻗﻊ أﻟﺴﺖ ﻋﻨﺪﻣﺎ ﺗﻜﻮن ﻣﺸﺘﺮك ﻓﻲ ﻣﻮﻗﻊ ﻣﺎ ﺗﺪﺧﻞ أﺳﻢ اﻟﻤﺴﺘﺨﺪم وﻛﻠﻤﺔ اﻟﺴﺮ ﻟﻠﺪﺧﻮل اﻟﻰ اﻟﻤﻮﻗﻊ وﻛﺬﻟﻚ‬
‫اﻟﺤﺎل ﻟﻜﺜﯿﺮ ﻣﻦ اﻟﻤﺸﺘﺮﻛﯿﻦ ﻓﻲ اﻟﻤﻮﻗﻊ ‪ .‬إذا اﻟﻌﻤﻠﯿﺔ ﺗﺘﻜﺮر ) أي ﻓﺤﺺ أﺳﻢ اﻟﻤﺴﺘﺨﺪم وﻛﻠﻤﺔ اﻟﻤﺮور (‬
‫ﻋﺸﺮات اﻟﻤﺮات إذا ﻟﻤﺎذا ﻻأﻋﻤﻞ داﻟﺔ ﺧﺎﺻﺔ ﯾﺪﺧﻞ ﻓﯿﻬﺎ اﻟﻤﺴﺘﺨﺪم ﻛﻠﻤﺔ اﻟﻤﺮور وأﺳﻢ اﻟﻤﺴﺘﺨﺪم ﻓﺘﻔﺤﺼﻬﺎ وﻧﺘﺄﻛﺪ‬
‫أﻧﻪ ﻣﺴﺠﻞ أم ﻻ‪.‬‬
‫ﻋﺰﯾﺰي اﻟﻤﺴﺘﺨﺪم ﻗﺪ ﻻ ﯾﺘﻮﺿﺢ اﻻﻣﺮ ﻟﺪﯾﻚ اﻟﻰ اﻻن وﻟﻜﻦ ﻻﻋﻠﯿﻚ ﻓﺎﻟﻌﯿﺐ ﻟﯿﺲ ﻣﻨﻚ ﻓﺴﻮف ﺗﺘﻮﺿﺢ ﻟﻚ اﻻﻣﻮر‬
‫ﺑﻌﺪ ﻗﻠﯿﻞ إﻧﺸﺎء اﷲ ‪. . .‬‬

‫اﻟﺼﯿﻐﺔ اﻟﻌﺎﻣﺔ اﻟﺘﻰ ﺗﻜﺘﺐ ﺑﻬﺎاﻟﺪوال ) ‪: ( function‬‬


‫أي اﻟﻤﺘﻐﯿﺮات اﻟﺘﻰ ﺳﻮف ﺗﺤﺪث ﻋﻠﯿﻬﺎ اﻟﻌﻤﻠﯿﺎت داﺧﻞ اﻟﺪاﻟﺔ‬

‫) اﻟﻤﺘﻐﯿﺮات اﻟﺘﻰ ﺳﻮف ﺗﺮﺳﻞ ﻟﻠﺪاﻟﺔ ( أﺳﻢ اﻟﺪاﻟﺔ وﺗﺨﺘﺎر أي أﺳﻢ ﺗﺮﯾﺪ ﻏﯿﺮ ﻣﺤﺠﻮز ‪function‬‬

‫ﺑﺪاﯾﺔ اﻟﺪاﻟﺔ {‬

‫اﻟﻌﻤﻠﯿﺎت اﻟﺘﻰ ﺗﺘﻢ ﺑﺪاﺧﻞ اﻟﺪاﻟﺔ‬

‫; اﻟﻨﺘﯿﺠﺔ اﻟﻤﻌﺎدة ‪return‬‬

‫ﻧﻬﺎﯾﺔ اﻟﺪاﻟﺔ }‬

‫§ ﻣﻼﺣﻈﺔ ‪:‬‬
‫ﯾﻤﻜﻦ أن ﺗﺄﺗﻲ ﺻﯿﻐﺔ ﻛﺘﺎﺑﺔ اﻟﺪاﻟﺔ ﺑﺸﻜﻞ آﺧﺮ وﻫﻮ ﻛﺎﻟﺘﺎﻟﻲ ‪:‬‬

‫) اﻟﻤﺘﻐﯿﺮات اﻟﺘﻰ ﺳﻮف ﺗﺮﺳﻞ ﻟﻠﺪاﻟﺔ ( أﺳﻢ اﻟﺪاﻟﺔ وﺗﺨﺘﺎر أي أﺳﻢ ﺗﺮﯾﺪ ‪Function‬‬
‫{‬
‫; اﻟﻌﻤﻠﯿﺎت اﻟﺘﻰ ﺳﻮف ﺗﺘﻢ وﻣﻦ ﺛﻢ إرﺟﺎع اﻟﻨﺘﯿﺠﺔ ‪return‬‬
‫}‬

‫‪٢٩‬‬
‫ﻛﻤﺎ ﺗﺮى ﻟﻢ ﻧﻐﯿﺮ أي ﺷﺊ ﻓﻘﻂ اﻟﺬي ﻏﯿﺮﻧﺎه ﺑﺪﻻ ﻣﻦ أن ﻧﻀﻊ اﻟﻌﻤﻠﯿﺎت ﻓﻮق اﻟـ ) ‪ ( return‬وﻧﺨﺮج ﺑﻨﺎﺗﺞ‬
‫وﻧﻀﻌﻪ ﺑﺎﻟـ ) ‪ ( return‬ﻫﻨﺎ وﺿﻌﻨﺎ اﻟﻌﻤﻠﯿﺔ ﻛﺎﻣﻠﺔ ﺑﺪاﺧﻞ ) ‪ ( return‬وﺑﺎﻟﺘﺎﻟﻲ ﺧﺮوج اﻟﻨﺘﯿﺠﺔ وإرﺟﺎﻋﻬﺎ‬
‫ﻣﺒﺎﺷﺮة ‪ ) .‬وﻟﻜﻦ ﻫﺬه اﻟﻌﻤﻠﯿﺔ ﻟﯿﺴﺖ داﺋﻤﺎ ﯾﻤﻜﻦ إﺳﺘﺨﺪاﻣﻬﺎ ( ﻟﺬﻟﻚ ﯾﻔﻀﻞ إﺳﺘﺨﺪام اﻟﺼﯿﻐﺔ اﻻوﻟﻰ وﺑﺸﻜﻞ اﻛﺜﺮ‬
‫دﻗﺔ ﺣﺴﺐ اﻟﺤﺎﺟﺔ ‪.‬‬

‫ﻋﺰﯾﺰي اﻟﻤﺘﺪرب ﻗﺪ ﯾﻜﻮن اﻻﻣﺮ ﻟﻢ ﯾﺘﻮﺿﺢ ﻟﺪﯾﻚ ﺗﻤﺎﻣﺎ اﻟﻰ اﻻن ﻻﻋﻠﯿﻚ ﻫﺬا أﻣﺮا ﻃﺒﯿﻌﻲ ﻓﺄﻧﺖ ﻫﻨﺎ ﺗﺘﻌﻠﻢ !‬

‫إذا ﻟﻨﺄﺧﺬ أﻣﺜﻠﺔ ﺗﻄﺒﯿﻘﯿﺔ ﻓﻬﻲ اﻟﺘﻰ ﺗﻮﺿﺢ ﻟﻨﺎ ﻣﺎ ﻧﺮﯾﺪه‪.‬‬

‫اﻟﻤﺜﺎل اﻷول ‪:‬‬

‫> ‪<html‬‬
‫>‪</title‬اﻟﺠﺎﻓﺎ ﺳﻜﺮﯾﺒﺖ>‪<head><title‬‬
‫>"‪<script type = "text/javascript‬‬
‫; ‪var z‬‬
‫; ‪var x=2‬‬
‫; ‪var y=3‬‬
‫; ) ‪document.write ( x‬‬
‫; ) ‪document.write ( " <br> " + y‬‬
‫; ) ‪z = summation ( x , y‬‬
‫; ) ‪document.write ( " <br> " + z‬‬

‫) ‪function summation ( x , y‬‬


‫{‬
‫; ‪var sum = 0‬‬
‫; ‪sum= x + y‬‬
‫; ‪return sum‬‬
‫}‬
‫>‪</script‬‬
‫>‪</head‬‬
‫>‪<body></body‬‬

‫>‪</html‬‬

‫ﻟﻨﺤﻠﻞ اﻟﻤﺜﺎل ﺳﻮﯾﺎ ‪. . .‬‬


‫ﻗﻤﻨﺎ ﻫﻨﺎ ﺑﺘﻌﺮﯾﻒ ﺛﻼﺛﺔ ﻣﺘﻐﯿﺮات اﻟﻤﺘﻐﯿﺮ اﻻول وﻫﻮ ) ‪ ( x‬ووﺿﻌﻨﺎ ﺑﺪاﺧﻠﻪ اﻟﻘﯿﻤﺔ اﻟﺮﻗﻤﯿﺔ اﻟﺼﺤﯿﺤﺔ ) ‪( 2‬‬
‫واﻟﻤﺘﻐﯿﺮ ) ‪ ( y‬ووﺿﻌﻨﺎ ﺑﺪاﺧﻠﻪ اﻟﻘﯿﻤﺔ اﻟﺮﻗﻤﯿﺔ اﻟﺼﺤﯿﺤﺔ ) ‪ ( 3‬واﻟﻤﺘﻐﯿﺮ ) ‪ ( z‬اﻟﺬي ﺳﻮف ﻧﻀﻊ ﺑﻪ اﻟﻘﯿﻤﺔ اﻟﺘﻰ‬
‫ﺗﺮﺟﻌﻬﺎ ﻟﻨﺎ اﻟﺪاﻟﺔ ) ‪ ( summation‬أي ﻧﺎﺗﺞ اﻟﺠﻤﻊ ) ‪. ( x+y‬‬

‫‪٣٠‬‬
‫ﺛﻢ ﻗﻤﻨﺎ ﺑﻄﺒﺎﻋﺔ ﻗﯿﻤﺔ ) ‪ ( x‬ﻣﻦ ﺧﻼل اﻷﻣﺮ) ) ‪ ( document.write ( x‬وﺑﺎﻟﺘﺎﻟﻲ ﻃﺒﺎﻋﺔ رﻗﻢ ) ‪ ( 2‬ﻓﻬﺬا‬
‫اﻟﺮﻗﻢ اﻟﺬي وﺿﻌﻨﺎه ﺑﺎﻟـ ) ‪. ( x‬‬
‫ﺛﻢ ﻛﺘﺒﻨﺎ ﺟﻤﻠﺔ اﻟﻄﺒﺎﻋﺔ اﻟﺨﺎﺻﺔ ﺑﻄﺒﺎﻋﺔ ﻗﯿﻤﺔ ) ‪ ( y‬وذﻟﻚ ﻣﻦ ﺧﻼل اﻻﻣﺮ ‪:‬‬
‫)‪document.write (" < br > " + y‬‬

‫ﺛﻢ ﻗﻤﻨﺎ ﺑﻮﺿﻊ ﻣﺎﯾﻠﻲ ‪:‬‬


‫; ) ‪z = summation ( x , y‬‬

‫ﻣﺎذا ﻧﻌﻨﻲ ﺑﻬﺎ ‪. . .‬‬


‫ﻧﻌﻨﻲ ﺑﻬﺎ أن ﻗﯿﻤﺔ اﻟﻤﺘﻐﯿﺮ) ‪ ( z‬ﺗﺴﺎوي اﻟﻘﯿﻤﺔ اﻟﺘﻲ ﺳﻮف ﺗﺮﺳﻠﻬﺎ اﻟﺪاﻟﺔ ) ‪ ( function‬اﻟﺘﻲ أﺳﻤﻬﺎ‬
‫) ‪ ( summation‬اﻟﺘﻲ أرﺳﻠﻨﺎ ﻟﻬﺎ ﻗﯿﻤﺘﯿﻦ وﻫﻤﺎ ﻗﯿﻤﺔ ) ‪ ( x‬وﻗﯿﻤﺔ ) ‪ ( y‬ﻟﻜﻲ ﺗﺮﺟﻊ اي ﺗﺮﺳﻞ ﻟﻨﺎ اﻟﻨﺎﺗﺞ‬
‫ﻟﻨﻀﻌﻪ ﻓﻲ ) ‪ .( z‬ﻓﻨﺤﻦ ﻫﻨﺎ ﻧﺤﺼﻞ ﻋﻠﻰ ﻗﯿﻤﺔ ) ‪ ( z‬ﻣﻦ اﻟﻘﯿﻤﺔ اﻟﺘﻲ ﺳﺘﺮﺟﻌﻬﺎ اﻟﺪاﻟﺔ‪.‬‬
‫إذا ﻫﻨﺎ ﻧﺤﻦ أﺳﺘﺪﻋﯿﻨﺎ اﻟﺪاﻟﺔ ) ‪ ( summation‬ﻟﻜﻲ ﺗﺮﺟﻊ ﻟﻨﺎ ﻧﺎﺗﺞ اﻟﻌﻤﻠﯿﺔ وﻣﻦ ﺛﻢ ﻧﻀﻌﻪ ﻓﻲ ) ‪ ( z‬إذا‬
‫ﻟﻨﺤﺼﻞ ﻋﻠﻰ ﻫﺬا اﻟﻨﺎﺗﺞ‪ ..‬ﻧﺬﻫﺐ اﻟﻰ اﻟﺪاﻟﺔ اﻟﻤﺴﻤﺎة ) ‪ ( summation‬ﻟﻨﺬﻫﺐ ﻟﻬﺎ وﺳﻮف ﻧﺠﺪ ﺑﺪاﺧﻠﻬﺎ ﻣﺎﯾﻠﻲ ‪:‬‬

‫ﻋﺮﻓﻨﺎ ﻣﺘﻐﯿﺮ أﺳﻤﯿﻨﺎه ) ‪ ( sum‬وﺻﻔﺮﻧﺎه " أي ﺟﻌﻠﻨﺎ ﻗﯿﻤﺘﻪ ﺻﻔﺮا " ووﺿﻌﻨﺎ اﻟﺼﻔﺮ ﻓﻘﻂ ﻟﻜﻲ ﻧﺤﺴﺐ اﻟﺮﻗﻤﯿﻦ‬
‫ﺑﺪﻗﺔ وﻋﺪم وﺟﻮد أي ﻗﯿﻤﺔ ﺳﺎﺑﻘﺔ ﻟﻠـ ) ‪ ( sum‬ﻓﻜﻤﺎ ﺗﺮى ﻋﻨﺪﻣﺎ ﺗﻔﺘﺢ اﻻﻟﺔ اﻟﺤﺎﺳﺒﺔ أﻻ ﺗﻀﻊ ﻟﻚ ﺻﻔﺮا ﺛﻢ‬
‫ﺗﻀﻐﻂ اﻟﺮﻗﻢ ) ‪ ( 2‬ﺛﻢ ﺗﻀﻐﻂ ) ‪ ( +‬ﺛﻢ ﺗﻀﻐﻂ رﻗﻢ ) ‪ ( 3‬ﻓﯿﺨﺮج ﻟﻚ اﻟﻨﺎﺗﺞ ) ‪ ( 5‬أي اﻟﺼﻔﺮ ﺗﺤﻮل اﻟﻰ ) ‪( 5‬‬
‫ﻓﻬﻨﺎ ﻛﺄﻧﻨﺎ ﻧﻘﻮل أن ﻗﯿﻤﺔ اﻟـ ) ‪ ( sum‬ﻗﺒﻞ اﻟﻌﻤﻠﯿﺔ ﻛﺎﻧﺖ ﺻﻔﺮا وﺑﻌﺪ اﻟﻌﻤﻠﯿﺔ أﺻﺒﺤﺖ ) ‪ .( 5‬ﻟﻨﺮﺟﻊ ﻟﻤﻮﺿﻮﻋﻨﺎ‬
‫اذا ‪...‬‬
‫اﻻن ﺟﻌﻠﻨﺎ ) ‪ ( sum‬ﺗﺴﺎوي ﻗﯿﻤﺔ اﻟـ ) ‪ ( x‬اﻟﻤﺮﺳﻠﺔ وﺟﻤﻌﻨﺎ ﻟﻬﺎ ﻗﯿﻤﺔ اﻟـ ) ‪ ( y‬اﻟﻤﺮﺳﻠﺔ أﯾﻀﺎ وﻛﻤﺎ ﺗﻌﺮف "‬
‫ﻗﯿﻤﺔ ) ‪ ( y‬وﻗﯿﻤﺔ ) ‪ ( x‬ﺳﻮف ﺗﻌﺮﻓﻬﻤﺎ اﻟﺪاﻟﺔ ﻣﺒﺎﺷﺮة ﻣﻦ ﺧﻼل أرﺳﺎﻟﻨﺎ ﻓﻲ اﻟﺒﺪاﯾﺔ ﻋﻨﺪ أﺳﺘﺪﻋﺎﺋﻬﺎ ﻗﯿﻤﺔ اﻟـ ) ‪( x‬‬
‫وﻗﯿﻤﺔ ) ‪ ( y‬أي ) ‪ ( 2‬و ) ‪" ( 3‬‬
‫‪.‬‬
‫وﻫﻨﺎ ﺳﻮف ﺗﺘﻢ ﻋﻤﻠﯿﺔ اﻟﺠﻤﻊ أي ) ‪ ( 3 ) + ( 2‬وﯾﻜﻮن اﻟﻨﺎﺗﺞ ) ‪ ( 5‬اﻟﺬي ﺳﻮف ﻧﻀﻌﻪ ﻓﻲ اﻟﻤﺘﻐﯿﺮ ) ‪( sum‬‬
‫إذا اﻻن أﺻﺒﺤﺖ ﻗﯿﻤﺔ ) ‪ ( sum‬ﻫﻲ ) ‪ ( 5‬وﻫﻲ ﻧﺎﺗﺞ اﻟﻌﻤﻠﯿﺔ ‪.‬‬

‫ﺛﻢ ﻛﺘﺒﻨﺎ ) ‪ ( return‬ووﺿﻌﻨﺎ ﺑﻬﺎ ﻣﺘﻐﯿﺮ ) ‪ ( sum‬أﺗﻌﺮف ﻋﺰﯾﺰي اﻟﻤﺘﺪرب ﻣﺎذا ﺗﻌﻨﻲ ) ‪( return‬؟‬
‫ﺗﻌﻨﻲ أرﺟﻊ ‪ . .‬إذا ﻧﺤﻦ ﺳﻮف ﻧﺮﺟﻊ ﻗﯿﻤﺔ ) ‪ ( sum‬واﻟﺘﻰ ﻫﻲ ) ‪ ( 5‬اﻟﻰ أﯾﻦ ؟؟؟‬
‫اﻟﻰ اﻟﻤﻜﺎن ) اﻻم ( اﻟﺬي أﺳﺘﺪﻋﯿﻨﺎ ﻓﯿﻪ اﻟﺪاﻟﺔ وﻫﻮ ‪:‬‬

‫; ) ‪z = summation ( x , y‬‬

‫إذا ﻫﻨﺎ ﺳﻮف ﯾﻌﯿﺪ ﻟﻠﺪاﻟﺔ ) ‪ ( summation‬ﻗﯿﻤﺔ ) ‪ ( 5‬ﺛﻢ وﺿﻌﻨﺎ ﻫﺬه اﻟﻘﯿﻤﺔ ﺑﺎﻟﻤﺘﻐﯿﺮ ) ‪ ( z‬وذﻟﻚ ﻣﻦ ﺧﻼل ‪:‬‬
‫; ) ‪z = summation ( x , y‬‬

‫اي ﻫﻨﺎ ﺳـﻮف ﻧﺮﺳﻞ ) ‪ ( sum‬ﻟﯿﺲ ﻛﻤﺘﻐﯿﺮ واﻧﻤﺎ ﻛﻘﯿﻤﺔ اذا ﺳـﻮف ﯾﺮﺳﻞ رﻗـﻢ ) ‪ ( 5‬وﻫـﺬا رﻗﻢ ﺧﻤﺴﺔ ﻣﺎذا‬
‫ﯾﻤﺜﻞ‪..‬؟‬
‫اﻧﻪ ﯾﻤﺜﻞ ﻧﺎﺗﺞ اﻟﺪاﻟﻪ ‪...‬‬
‫) ‪ summation ( x , y‬وﻣﻨﻬﺎ ﺳﻮف ﯾﺘﻢ اﺳﻨﺎد اﻟﻘﯿﻤﺔ ) ‪ ( 5‬اﻟﻰ ) ‪. (.z‬‬

‫و ﺑﻌﺪ ﺗﻨﻔﯿﺬ ﻋﻤﻠﯿﺔ اﺳﺘﺪﻋﺎء اﻟﺪاﻟﻪ ﯾﺤﻖ ﻟﻨﺎ اﻻﻧﺘﻘﺎل اﻟﻰ اﻟﺨﻄﻮه اﻟﺘﻲ ﺗﻠﯿﻬﺎ ﻓﻲ اﻟﻜﻮد ﻓﻼ ﯾﺠﻮز اﻟﺬﻫﺎب اﻟﻰ اﻟﺨﻄﻮه‬
‫اﻟﺘﻲ ﺗﻠﯿﻬﺎ إﻻ ﺑﻌﺪ اﺳﺘﺪﻋﺎﺋﻬﺎ وﺗﻨﻔﯿﺬﻫﺎ ﻟﺘﺮﺟﻊ ﻟﻨﺎ اﻟﻨﺎﺗﺞ ﻣﺎ ﻧﻔﺬﺗﻪ وﺑﻌﺪ ذﻟﻚ ﻧﻨﺘﻘﻞ ﻟﻠﺬي ﯾﻠﯿﻬﺎ وﻫﻲ ﺑﻄﺒﺎﻋﺔ ﻗﯿﻤﺔ‬
‫) ‪ ( z‬ﻣﻦ ﺧﻼل اﻻﻣﺮ ‪:‬‬

‫; ) ‪document.write ( " < br > " + z‬‬

‫‪٣١‬‬
‫ﻓﻄﺒﻊ ﻟﺪﯾﻨﺎاﻟﻘﯿﻤﺔ ) ‪ ( 5‬أي ) ‪ ( 5 ) = ( 3 ) + ( 2‬و ﻻﺣﻆ ﻋﻨﺪﻣﺎ وﺻﻠﻨﺎ اﻟﻰ ) ‪ ( return‬ﻛﻨﺎ ﻗﺪ أﻧﺘﻬﯿﻨﺎ ﺗﻤﺎﻣﺎ‬
‫ﻣﻦ اﻟﻌﻤﻞ ﺑﺪاﺧﻞ اﻟﺪاﻟﺔ ﻓﻠﻘﺪ ﺧﺮﺟﻨﺎ ﻣﻨﻬﺎ وﻋﺪﻧﺎ اﻟﻰ اﻟﺒﺮﻧﺎﻣﺞ " اﻟﺬي ﺑﺎﻻﻋﻠﻰ " وﻟﻜﻦ ﻣﻌﻨﺎ ﻗﯿﻤﺔ ) ‪. ( sum‬‬

‫أﻟﻢ ﺗﺘﺴﺎءل ﻋﺰﯾﺰي اﻟﻤﺘﺪرب ﻫﻞ ﯾﻤﻜﻦ ﻟﻠﺪاﻟﺔ ) ‪ ( function‬أن ﺗﺄﺗﻲ ﻣﻦ ﻏﯿﺮ أن ﻧﺬﻛﺮ ﺑﻬﺎ ) ‪ ( return‬أي‬
‫أﻧﻬﺎ ﻻ ﺗﺮﺟﻊ أي ﺷﺊ ؟؟؟‪.‬‬
‫ﻧﻌﻢ ﻗﺪ ﻻﺗﺤﺘﻮي اﻟﺪاﻟﺔ ) ‪ ( function‬ﻋﻠﻰ ) ‪ ( return‬وﺑﻤﺎ أﻧﻬﺎ ﻻ ﺗﺤﺘﻮي ﻋﻠﻰ ) ‪ ( return‬إذا ﻫﻲ ﻟﻦ‬
‫ﺗﺮﺟﻊ ﻗﯿﻤﺔ ﻓﻔﻲ ﻫﺬه اﻟﺤﺎﻟﺔ ﺳﻮف ﻧﺮى اﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ اﻟﺬي ﯾﻮﺿﺢ ﻟﻨﺎ ‪...‬‬

‫ﻣﺜﺎل ‪:‬‬
‫>‪<html‬‬
‫>‪</title‬اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ> ‪<head><title‬‬
‫>"‪<script type = "text/javascript‬‬
‫; ‪var x = 4 , y = 2‬‬
‫; ) ‪subtract ( x , y‬‬
‫; )" >‪ </h3‬ﻫﺬا ﻫﻮ اﻟﻨﺎﺗﺞ >‪document.write (" <h3‬‬

‫) ‪function subtract ( x , y‬‬


‫{‬
‫; ‪var sub = 0‬‬
‫; ‪sub = x - y‬‬
‫; ) ‪document.writeln ( sub‬‬
‫}‬
‫>‪</script‬‬
‫>‪</head‬‬
‫>‪<body></body‬‬

‫>‪</html‬‬

‫ﻟﻨﺤﻠﻞ اﻟﻤﺜﺎل ﺳﻮﯾﺎ ‪:‬‬


‫ﻫﻨﺎ ﻗﻤﺖ ﺑﺘﻌﺮﯾﻒ اﻟﻤﺘﻐﯿﺮات ) ‪ ( x‬و ) ‪ ( y‬ووﺿﻌﺖ ﻗﯿﻤﺔ ﻓﻲ ﻛﻼ ﻣﻨﻬﻤﺎ ﻓﻔﻲ اﻟـ ) ‪ ( x‬وﺿﻌﺖ ) ‪ ( 4‬وﻓﻲ اﻟـ‬
‫) ‪ ( y‬وﺿﻌﺖ ) ‪ ( 2‬ﺛﻢ وﺿﻌﺖ اﺳﻢ اﻟﺪاﻟﺔ ) ‪ ( function‬اﻟﺘﻰ أرﯾﺪ أن أﺳﺘﺪﻋﯿﻬﺎ " أي اﻟﺘﻰ ﺳﻮف ﺛﻘﻮم‬
‫ﺑﻌﻤﻠﯿﺔ اﻟﻄﺮح ﺑﯿﻦ اﻟﺮﻗﻤﯿﻦ " وﻫﻨﺎ أرﺳﻠﺖ ﻟﻠﺪاﻟﺔ ) ‪ ( x‬و) ‪ ( y‬اﻟﻤﺤﺘﻮﯾﺎن ﻋﻠﻰ رﻗﻤﯿﻦ أي ﻛﺄﻧﻨﻲ أرﺳﻠﺖ ) ‪( 4‬‬
‫اﻟﺘﻰ ﻫﻲ ) ‪ ( x‬و ) ‪ ( y‬اﻟﺘﻰ ﻫﻲ ) ‪ ( 2‬إذا ﻫﻨﺎ ﺑﻤﺎ أﻧﻨﺎ أﺳﺘﺪﻋﯿﻨﺎ اﻟﺪاﻟﺔ ) ‪ ( function‬إذا وﺟﺐ ﻋﻠﻲ أن أذﻫﺐ‬
‫اﻟﻰ ﻫﺬه اﻟﺪاﻟﺔ ) ‪ ( function‬وأﻗﻮم ﺑﺎﻟﻌﻤﻠﯿﺎت اﻟﺘﻰ ﻫﻲ ﺑﺪاﺧﻠﻬﺎ ‪...‬‬
‫ﻟﻨﻘﻮم ﺑﺎﻟﺬﻫﺎب ﻟﻬﺎ ‪...‬‬

‫‪٣٢‬‬
‫ﻛﺘﺒﻨﺎ أﺳﻢ اﻟﺪاﻟﺔ ﻃﺒﻌﺎ ووﺿﻌﻨﺎ ﺑﯿﻦ ﻗﻮﺳﯿﻦ اﻟﻘﯿﻤﺘﯿﻦ اﻟﻤﺮﺳﻠﺔ ﻟﻬﺎ ﺛﻢ دﺧﻠﻨﺎ ﺑﺪاﺧﻞ اﻟﺪاﻟﻪ ﺛﻢ ﻋﺮﻓﻨﺎ ﻣﺘﻐﯿﺮ ) ‪( sub‬‬
‫اﻟﺬي ﺳﻮف ﻧﻀﻊ ﺑﻪ ﻧﺎﺗﺞ ﻋﻤﻠﯿﺔ اﻟﻄﺮح وﻫﻲ ) ‪ ( x‬ﻧﺎﻗﺼﺎ ) ‪ ( y‬ووﺿﻌﻨﺎ اﻟﻨﺎﺗﺞ ﻓﻲ ) ‪ ( sub‬ﻣﻦ ﺧﻼل ﻫﺬه‬
‫اﻟﻤﻌﺎدﻟﺔ ‪:‬‬

‫‪sub = x – y‬‬

‫ﺛﻢ ﻛﺘﺒﻨﺎ أﻣﺮ ﻃﺒﺎﻋﺔ اﻟﻤﺘﻐﯿﺮ ) ‪ ( sub‬اﻟﺬي ﻫﻮ ﻧﺎﺗﺞ اﻟﻌﻤﻠﯿﺔ ﻣﻦ ﺧﻼل اﻻﻣﺮ ‪:‬‬

‫; )‪document.write (sub‬‬

‫وﺑﺎﻟﺘﺎﻟﻲ ﺳﻮف ﯾﻄﺒﻊ رﻗﻢ ) ‪ ( 2‬ﺛﻢ اﻏﻠﻘﻨﺎ اﻟﺪاﻟﻪ ‪. . .‬‬


‫ﺛﻢ ﻋﺪﻧﺎ ﻣﺮة أﺧﺮى اﻟﻰ ﻣﺎﺑﻌﺪ أﺳﺘﺪﻋﺎء اﻟﺪاﻟﺔ " أي اﻟﻰ اﻻﻋﻠﻰ " ﻟﻜﻨﻨﺎ ﻫﻨﺎ ﻋﺪﻧﺎ وﻻﯾﻮﺟﺪ ﺑﺤﻮزﺗﻨﺎ أي ﻗﯿﻤﺔ ﻫﻮ‬
‫ﻣﺠﺮد رﺟﻮع ﻷﻛﻤﺎل اﻟﺒﺮﻧﺎﻣﺞ ﻓﻨﺤﻦ ﻧﺮى أﺳﺘﺪﻋﺎء اﻟﺪاﻟﺔ ﻓﺘﺬﻫﺐ ﻟﻬﺎ ﻟﺘﻨﻔﯿﺬﻫﺎ ﺛﻢ ﻧﻌﻮد ﻟﻨﻜﻤﻞ ﺑﻘﯿﺔ اﻟﺒﺮﻧﺎﻣﺞ أي‬
‫اﻻواﻣﺮ اﻟﺘﻰ ﺗﻠﻲ أﺳﺘﺪﻋﺎء اﻟﺪاﻟﺔ وﻫﻨﺎ ﻃﺒﻌﺎ وﺿﻌﻨﺎ أﻣﺮ ﻃﺒﺎﻋﺔ وﻫﻮ ﻃﺒﺎﻋﺔ اﻟﺠﻤﻠﺔ " ﻫﺬا ﻫﻮ اﻟﻨﺎﺗﺞ" ﻣﻦ ﺧﻼل‬
‫اﻻﻣﺮ ‪:‬‬
‫; ) " >‪ </h3‬ﻫﺬا ﻫﻮ اﻟﻨﺎﺗﺞ >‪document.write ( " <h3‬‬

‫ﻻﺣﻆ أﻧﻨﺎ ﻃﺒﻌﻨﺎ اﻟﻨﺎﺗﺞ ﻣﻦ ﺧﻼل أﻣﺮ اﻟﻄﺒﺎﻋﺔ اﻟﻤﻮﺟﻮد ﻓﻲ اﻟﺪاﻟﺔ ﺛﻢ ﻋﺪﻧﺎ اﻟﻰ اﻟﺒﺮﻧﺎﻣﺞ ﻓﻄﺒﻌﻨﺎ اﻟﺠﻤﻠﺔ اﻟﻨﺼﯿﺔ ‪.‬‬
‫وﻟﻜﻦ ﻫﻞ ﻣﻦ اﻟﻤﻤﻜﻦ أن ﯾﺤﺘﻮي ﺑﺮﻧﺎﻣﺠﻲ اﻟﻤﻜﺘﻮب ﺑﺎﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ ﻋﻠﻰ دوال ﻓﻘﻂ ‪ ...‬ﻛﺄن داﻟﺔ ﻧﺴﺘﺪﻋﻲ داﻟﺔ ‪..‬‬
‫ﻧﻌﻢ ﻣﻤﻜﻦ ذﻟﻚ ﻟﻨﺄﺧﺬ ﻣﺜﺎل وﻧﺮى ‪:‬‬

‫>‪<html‬‬
‫>‪</title‬اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ> ‪<head><title‬‬
‫>"‪<script type = "text/javascript‬‬
‫) ( ‪function output‬‬
‫{‬
‫; ‪var x = 3 , t‬‬
‫; ) ‪t = cube ( x‬‬
‫; ) ‪document.writeln ( t‬‬
‫}‬

‫) ‪function cube ( y‬‬


‫{‬
‫; ‪return y*y*y‬‬
‫}‬
‫>‪</script‬‬
‫>‪</head‬‬
‫>‪<body onload = " output ( ) " ></body‬‬

‫>‪</html‬‬

‫‪٣٣‬‬
‫وﺳﻮف أﺟﻌﻞ ﺗﺤﻠﯿﻞ ﻫﺬا اﻟﻤﺜﺎل ﻟﻚ وﻟﻜﻦ ﺳﻮف أوﺿﺢ ﻓﻘﻂ ﺑﻌﺾ اﻻﻣﻮر اﻟﺘﻰ ﺗﺴﺎﻋﺪك ﻓﻲ ﺗﺤﻠﯿﻠﻪ‪ ...‬اﻟﺘﻰ أﻋﺘﻘﺪ‬
‫أﻧﻬﺎ ﺟﻌﻠﺖ ﻓﻲ ﻓﻜﺮك ﺑﻌﺾ اﻟﺘﺴﺎؤﻻت ﻋﻨﺪﻣﺎ رأﯾﺖ ﻛﻮد اﻟﺒﺮﻧﺎﻣﺞ ‪.‬‬

‫‪ -١‬ﻗﺪ ﺗﺘﺴﺎءل ﻟﻤﺎذا ﻟﻢ ﻧﻀﻊ ﻣﺘﻐﯿﺮ ﺑﯿﻦ اﻟﻘﻮﺳﯿﻦ ﻋﺰﯾﺰي اﻟﻤﺘﺪرب ﻫﻞ ﻫﺬه اﻟﺪاﻟﺔ ﺳﻮف ﺗﺴﺘﻘﺒﻞ ﻣﺘﻐﯿﺮ " أو ﺣﺘﻰ‬
‫ﻗﯿﻤﺔ ﻣﻦ اﻟﺨﺎرج " اﻟﺠﻮاب ﻻ إذا أدﻋﻬﺎ ﻓﺎرﻏﺔ وﻻ أﺿﻊ ﺑﻬﺎ ﺷﻲء ﻓﻬﻲ داﻟﺔ ﻻﺗﺴﺘﻘﺒﻞ ‪.‬‬
‫) ( ‪function output‬‬

‫‪ -٢‬ﻗﺪ ﺗﺘﺴﺎءل ﻟﻤﺎذا ﻛﺘﺒﻨﺎ ﻫﻨﺎ ) ‪ ( y‬ﻣﻊ أﻧﻨﺎ ﻋﻨﺪﻣﺎ أﺳﺘﺪﻋﯿﻨﺎ ﻫﺬه اﻟﺪاﻟﺔ ﻣﻦ اﻟﺪاﻟﺔ ) ‪ ( output‬ﻛﺘﺒﻨﺎ ﺑﻬﺬا اﻟﺸﻜﻞ ‪:‬‬
‫; ) ‪T = cube ( x‬‬

‫) ‪function cube ( y‬‬

‫أي وﺿﻌﻨﺎ ) ‪ ( x‬وﻟﯿﺲ ) ‪ ( y‬ﻋﺰﯾﺰي اﻟﻤﺘﺪرب ﻓﻠﯿﺲ ﻣﻬﻤﺎ أن ﺗﺴﻤﻲ اﻟﻤﺘﻐﯿﺮ اﻟﺬي أرﺳﻠﺘﻪ ﺑﻨﻔﺲ أﺳﻢ ﻣﺘﻐﺮ‬
‫اﻟﺪاﻟﺔ اﻟﻤﺮﺳﻞ ﻟﻬﺎ ﻓﻬﺬا ﻟﯿﺲ ﻣﻬﻤﺎ ﻃﺒﻌﺎ ﻟﯿﺲ ﻣﻬﻢ ﺗﺴﻤﯿﺔ اﻟﻤﺘﻐﯿﺮ ﻓﻲ اﻟﺪاﻟﺔ اﻟﻤﺮﺳﻞ ﻟﻬﺎ أي أﻗﺼﺪ ‪:‬‬
‫) ) ‪ ( function cube ( y‬ﻓﻬﻨﺎ اﻟﻤﻬﻢ أﻧﻨﺎ أرﺳﻠﻨﺎ ﻟﻪ ) ‪ ( x‬واﻟﺘﻰ ﻗﯿﻤﺘﻬﺎ ) ‪. ( 3‬‬
‫ﻻﺗﻨﺰﻋﺞ ﺗﺴﺘﻄﯿﻊ أن ﺗﺴﻤﻰ ﺑﺪﻻ ﻣﻦ ) ‪ ( x ) ( y‬أي ﺗﺼﺒﺢ ) ) ‪ ( function cube ( x‬ﻓﻘﻂ ذﻛﺮﺗﻬﺎ ﻣﻦ‬
‫ﺑﺎب اﻟﻌﻠﻢ ﺑﺎﻟﺸﺊ ‪.‬‬

‫‪ -٣‬ﻫﻨﺎ ﺟﻌﻠﻨﺎه ﯾﻀﺮب رﻗﻢ ) ‪ ( 3‬ﺑﻨﻔﺴﻪ ﺛﻼﺛﺔ ﻣﺮات وإرﺟﺎع اﻟﻨﺘﯿﺠﺔ ﻣﺒﺎﺷﺮة ‪ .‬وﻫﺬا ﺑﺪﻻ ﻣﻦ ﺗﻌﺮﯾﻒ ﻣﺘﻐﯿﺮ‬
‫وﻧﻀﻊ اﻟﻨﺘﯿﺠﺔ ﺑﺪاﺧﻠﻪ وﻣﻦ ﺛﻢ ﻧﺮﺳﻞ ﻫﺬا اﻟﻤﺘﻐﯿﺮ ﺑـ ) ‪ ( return‬وﻧﺮﺟﻊ اﻟﻘﯿﻤﺔ ﻗﻤﻨﺎ ﺑﻮﺿﻊ اﻟﻌﻤﻠﯿﺔ اﻟﺤﺴﺎﺑﯿﺔ‬
‫ﻣﺒﺎﺷﺮة ﻓﻲ ال ‪ " ... return‬ﻻﺣﻆ أﻧﻨﺎ ذﻛﺮﻧﺎ ﺳﺎﺑﻘﺎ اﻧﻨﺎ ﻟﻢ ﻧﻀﻊ ﻓﻲ ال ) ( ‪ function output‬ﻣﺘﻐﯿﺮ‬
‫ﺑﺪاﺧﻠﻪ وﻫﺬا ﻻﻧﻪ ﻟﻦ ﯾﺴﺘﻘﺒﻞ ﻣﺘﻐﯿﺮ وﻟﻨﻘﻞ ﺑﺸﻜﻞ اﻛﺜﺮ دﻗﻪ ‪ parameter‬اي اﻧﻨﺎ ﻟﻦ ﻧﻤﺮر ﻋﻠﯿﻪ ﻗﯿﻢ‪ ..‬واذﻛﺮﻫﺎ‬
‫ﻫﻨﺎ ﻟﻚ ﻟﻜﻲ ﻻ ﺗﻘﻮل ﻓﻲ ﻧﻔﺴﻚ ﻫﺎ ﻧﺤﻦ ﻋﺪﻧﺎ ﻟﻪ ﺑﻘﯿﻤﺔ ﻋﻤﻠﯿﺔ اﻟﻀﺮب ﺛﻼث ﻣﺮات اذا اﺳﺘﻘﺒﻞ ! ﻋﺰﯾﺰ اﻟﻤﺘﺪرب ﻫﻨﺎ‬
‫اﻟﻌﻤﻠﯿﺔ ﺗﻤﺖ ﻣﻦ ﺧﻼل ‪ return‬وﻟﯿﺲ ارﺳﺎل ﻗﯿﻢ ﻟﺘﻤﺮﯾﺮﻫﺎ ﻟﯿﺘﻢ ﻋﻠﯿﻬﺎ ﻋﻤﻠﺔ ﻣﻌﯿﻨﻪ اي ﻫﻨﺎ ﺗﻢ اﺳﺘﺪﻋﺎء داﻟﺔ ﻟﺘﻘﻮم‬
‫ﺑﻌﻤﻠﯿﺔ وﺗﺮﺟﻊ ﻟﻨﺎ ﻗﯿﻤﻪ ‪ ..‬ﺗﺬﻛﺮ ﻋﻨﺪﻣﺎ ﻛﻨﺎ ﻧﺴﺘﺪﻋﻲ اﻟﺪاﻟﻪ ﻣﻦ داﺧﻞ ﺑﺮﻧﺎﻣﺞ ﻣﻦ دون ان ﯾﻜﻮن ﺑﺎدﺧﻞ داﻟﺔ اﺧﺮى‬
‫‪.‬‬

‫ﻻﺗﻨﺰﻋﺞ ﺗﺴﺘﻄﯿﻊ أن ﺗﻜﺘﺒﻪ ﻛﻤﺎ ﺗﻌﻠﻤﻨﺎ ﺳﺎﺑﻘﺎ أي ‪:‬‬

‫; ‪return y*y*y‬‬

‫‪٣٤‬‬
‫; ‪var z‬‬
‫; ‪z = y*y*y‬‬
‫; ‪return z‬‬

‫ﻓﻘﻂ أﺣﺒﺒﺖ أن أرﯾﻚ ﻃﺮﯾﻘﺔ ﺛﺎﻧﯿﺔ ﻣﻦ ﺑﺎب اﻟﻌﻠﻢ ﺑﺎﻟﺸﺊ ﻓﻘﻂ ﻻ ﻏﯿﺮ وﻗﺪ ﺗﻠﺠﺄ ﻟﻪ ﻋﻨﺪ اﻟﺤﺎﺟﻪ ‪.‬‬

‫‪ -٤‬ﻣﻌﻠﻮﻣﺔ ﻣﻬﻤﺔ ﺟﺪا ‪...‬‬


‫ﻋﻨﺪﻣﺎ ﺗﻜﺘﺐ ﺑﺮﻧﺎﻣﺠﻚ ﺑﺎﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ وﯾﻜﻮن ﯾﺤﺘﻮي ﻓﻘﻂ ﻋﻠﻰ دوال ﻛﻤﺎ ﻓﻲ ﻣﺜﺎﻟﻨﺎ ﻫﺬا ﻓﯿﺠﺐ ﻋﻠﯿﻚ أن ﺗﺬﻛﺮ ﻓﻲ‬
‫اﻟـ ) ‪ ( body‬ﻫﺬه اﻟﻌﺒﺎرة ‪:‬‬

‫> " ) ( ‪< body onload = " output‬‬

‫§ ﻗﺪ ﺗﺘﺴﺎءل ﻟﻤﺎذا وﺿﻌﻨﺎ ) ‪ ( onload‬داﺧﻞ اﻟـ ) ‪ ( body‬؟‬


‫اﻟﺠﻮاب ﻻن ﺑﺮﻧﺎﻣﺠﻨﺎ ﻋﺒﺎرة ﻋﻦ دوال واﻟﺪوال ﻻﺗﻌﻤﻞ اﻻ ﻋﻨﺪ إﺳﺘﺪﻋﺎﺋﻬﺎ ﻓﺄﻋﺘﺒﺮ اﻟـ ) ‪ ( onload‬ﻫﻮ إﺳﺘﺪﻋﺎﺋﻬﺎ‬
‫" أي ﺗﺸﻐﯿﻠﻬﺎ " أﻣﺎ ﻟﻤﺎذا ذﻛﺮﻧﺎ أﺳﻢ اﻟﺪاﻟﺔ اﻻوﻟﻰ ) ) ( ‪ ( output‬ﻓﻬﺬا ﺑﺴﺒﺐ أن ﻫﺬه اﻟﺪاﻟﺔ ﻫﻲ اﻟﺮﺋﯿﺴﯿﺔ‬
‫ﻓﻬﻲ اﻟﺘﻰ ﺗﺴﺘﺪﻋﻲ اﻟﺪاﻟﺔ اﻟﺜﺎﻧﯿﺔ ‪ .‬وﻟﻜﻦ ﻟﯿﺲ داﺋﻤﺎ ﻧﻀﻊ ) ‪ ( onload‬ﻣﺜﻼ ﻓﻲ ﺣﺎﻟﺔ ال ) ‪ ( form‬وﺳﻮف‬
‫ﻧﺘﺤﺪث ﻋﻦ ﻫﺬا اﻟﻤﻮﺿﻮع ﻻﺣﻘﺎ ‪.‬‬

‫‪٣٥‬‬
‫§ اﻟﻤﺼﻔﻮﻓﺎت ) ‪: ( Arrays‬‬
‫ﻫﻨﺎ ﺳﻮف ﻧﺘﻄﺮق اﻟﻰ ﻣﻮﺿﻮع ذا أﻫﻤﯿﺔ وﻫﻮ اﻟﻤﺼﻔﻮﻓﺎت ﻓﺒﺈﺳﺘﻌﻤﺎﻟﻬﺎ ﻧﺴﺘﻄﯿﻊ ﺗﻮﻓﯿﺮ اﻟﻮﻗﺖ واﻟﺠﻬﺪ ﺑﺎﻻﺿﺎﻓﺔ‬
‫اﻟﻰ ﺟﻌﻞ اﻟﺒﺮﻧﺎﻣﺞ أﺻﻐﺮ ﺣﺠﻤﺎ وأﺳﺮع ﺗﻨﻔﯿﺬا ‪.‬‬

‫وﺗﻜﺘﺐ ﻋﻠﻰ أﻛﺜﺮ ﻣﻦ ﺷﻜﻞ ﻣﻨﻬﺎ ‪:‬‬

‫‪ -١‬ﻫﻨﺎ ﻋﺮﻓﻨﺎ ﻣﺘﻐﯿﺮ ﻫﻮ ﻋﺒﺎرة ﻋﻦ ﻣﺼﻔﻮﻓﺔ ﺗﺤﺘﻮي ﻋﻠﻰ ) ‪ ( 5‬ﻋﻨﺎﺻﺮ أﻣﺎ ﻣﺎﻗﯿﻤﺔ ﻫﺬه اﻟﻌﻨﺎﺻﺮ ﻓﺴﻮف ﻧﺬﻛﺮﻫﺎ‬
‫داﺧﻞ اﻟﺒﺮﻧﺎﻣﺞ ‪.‬‬

‫; ) ‪var a = new Array ( 5‬‬

‫‪ -٢‬وﻫﻨﺎ ﻋﺮﻓﻨﺎ اﻟﻤﺘﻐﯿﺮ ﻋﻠﻰ أﻧﻪ ﻣﺼﻔﻮﻓﺔ دون ﺗﺤﺪﯾﺪ ﻛﻢ ﻋﻨﺼﺮا ﺗﺤﺘﻮي وﻫﻨﺎ ﯾﺠﺐ أن ﻧﺤﺪد ﻛﻢ ﻋﺪد ﻋﻨﺎﺻﺮ‬
‫اﻟﻤﺼﻔﻮﻓﺔ ﻓﻲ داﺧﻞ اﻟﺒﺮﻧﺎﻣﺞ " اﻗﺼﺪ ﻓﻲ اﻟـ ) ‪ ( for‬او ﻣﺎ ﺷﺎﺑﻪ " ﻛﺄن ﻧﺬﻛﺮﻫﺎ ﻓﻲ ﺣﻠﻘﺔ اﻟﺘﻜﺮار ﻣﺜﻼ أﻣﺎ ﻣﺎ‬
‫ﻗﯿﻤﺔ ﻫﺬه اﻟﻌﻨﺎﺻﺮ ﻓﺴﻮف ﻧﺬﻛﺮﻫﺎ أﯾﻀﺎ ﻓﻲ اﻟﺒﺮﻧﺎﻣﺞ ‪.‬‬

‫; ) ( ‪var a = new Array‬‬

‫‪ -٣‬وﻫﻨﺎ ﻋﺮﻓﻨﺎ اﻟﻤﺘﻐﯿﺮ ﻋﻠﻰ أﻧﻪ ﻣﺼﻔﻮﻓﺔ ﺗﺤﺘﻮي ﻋﻠﻰ ﺛﻼﺛﺔ ﻋﻨﺎﺻﺮ ﻓﻮﺿﻌﻨﺎ ﻓﻲ ﻛﻞ ﻋﻨﺼﺮ ﻗﯿﻤﺔ رﻗﻤﯿﺔ ﻣﻌﯿﻨﺔ‬
‫‪ .‬وﻋﺎدة ﺗﺴﺘﺨﺪم ﺗﻌﺮﯾﻒ اﻟﻤﺼﻔﻮﻓﺔ ﺑﻬﺬا اﻟﺸﻜﻞ ﻋﻨﺪﻣﺎ ﺗﻜﻮن اﻟﻤﺼﻔﻮﻓﺔ ﺗﺤﺘﻮي ﻋﻠﻰ أرﻗﺎم ‪.‬‬
‫; ] ‪a = [ 3, 14, 6‬‬

‫‪ -٤‬ﻫﻨﺎ ﻋﺮﻓﻨﺎ اﻟﻤﺘﻐﯿﺮ ) ‪ ( a‬ﻋﻠﻰ أﻧﻪ ﻣﺼﻔﻮﻓﺔ ﺗﺤﺘﻮي ﻋﻠﻰ ﺛﻼﺛﺔ ﻋﻨﺎﺻﺮ وﻛﺎﻧﺖ ﻗﯿﻤﺔ ﻛﻞ ﻋﻨﺼﺮ ﻣﺒﯿﻨﺔ ﻣﻨﺬ‬
‫اﻟﺒﺪاﯾﺔ أي ) ‪ ( 1,2,3‬أو ) "ﻣﺤﻤﻮد" ‪" ،‬ﺛﺎﻣﺮ" ‪" ،‬ﺳﺎﻣﻲ" ( أﻣﺎ ﻛﯿﻒ ﻋﺮﻓﻨﺎ أن اﻟﻤﺼﻔﻮﻓﺔ ﺗﺤﺘﻮي ﻋﻠﻰ ﺛﻼﺛﺔ‬
‫ﻋﻨﺎﺻﺮ ﻓﻬﻮ ﻋﺪد ﻣﺎﺑﺪاﺧﻠﻬﺎ إذا ﻫﻲ ﻣﺼﻔﻮﻓﺔ ﻋـﺪد ﻋﻨﺎﺻﺮﻫﺎ ﺛﻼث أﻣﺎ ﻣﺎﻫﻲ ﻗﯿﻤﺔ ﻋﻨﺎﺻﺮﻫﺎ ﻓﻬﻲ ) ‪ ( 1,2,3‬أو‬
‫)ﻣﺤﻤﻮد ‪ ،‬ﺛﺎﻣﺮ ‪ ،‬ﺳﺎﻣﻲ ( ‪ .‬وﻻﺣﻆ أﻧﻪ ﻋﻨﺪﻣﺎ ﺗﺤﺘﻮي اﻟﻤﺼﻔﻮﻓﺔ ﻋﻠﻰ ﻧﺺ " إذا ﺟﺎز اﻟﺘﻌﺒﯿﺮ ) ‪ ( string‬أي‬
‫أﺳﻢ او ﻣﺎ ﺷﺎﺑﻪ ﯾﺠﺐ وﺿﻊ اﻟﻜﻠﻤﺔ ﺑﯿﻦ ) " ( ‪.‬‬

‫; ) ‪a = new Array ( 1, 2, 3‬‬

‫; ) " ﻣﺤﻤﻮد " ‪ " ,‬ﺛﺎﻣﺮ " ‪ " ,‬ﺳﺎﻣﻲ " ( ‪a = new Array‬‬

‫§ دﻋﻨﺎ ﻧﺘﺤﺪث ﻋﻦ اﻟﻤﺼﻔﻮﻓﺎت ﺑﺸﻜﻞ ﻋﺎم ‪:‬‬


‫اﻟﻤﺼﻔﻮﻓﺔ ﻧﺴﺘﻄﯿﻊ ﺗﺸﺒﯿﻬﻬﺎ ﺑﻌﻤﺎرة ‪ .‬اﻟﻌﻤﺎرة ﯾﺤﺘﻮي ﻛﻞ ﻃﺎﺑﻖ ﻣﻨﻬﺎ ﻋﻠﻰ ﺷﻘﺔ واﺣﺪة ‪ .‬ﻟﻨﻔﺮض أن اﻟﻌﻤﺎرة ﺗﺘﻜﻮن‬
‫ﻣﻦ أرﺑﻌﺔ ﻃﻮاﺑﻖ ﻓﻜﺎن اﻟﻄﺎﺑﻖ اﻷول ﯾﺴﻜﻦ ﺑﻪ ﻣﺤﻤﺪ واﻟﻄﺎﺑﻖ اﻟﺜﺎﻧﻲ أﯾﻬﻢ واﻟﻄﺎﺑﻖ اﻟﺜﺎﻟﺚ أﺷﺮف واﻟﻄﺎﺑﻖ اﻟﺮاﺑﻊ‬
‫ﻋﻤﺎد ‪ .‬إذا ﻫﻨﺎ ﻟﺪﯾﻨﺎ ﻋﻤﺎرة ﺗﺘﻜﻮن ﻣﻦ أرﺑﻌﺔ ﻃﻮاﺑﻖ ﻛﻞ ﻃﺎﺑﻖ ﯾﺤﺘﻮي ﻋﻠﻰ ﺷﺨﺺ ﻓﻬﺬا ﻫﻮ اﻟﺤﺎل ﺑﺎﻟﻨﺴﺒﺔ‬
‫ﻟﻠﻤﺼﻔﻮﻓﺔ ﻓﺎﻟﻌﻤﺎرة ﻫﻲ أﺳﻢ اﻟﻤﺼﻔﻮﻓﺔ ‪ .‬وﻋﺪد اﻟﻄﻮاﺑﻖ اﻷرﺑﻌﺔ ﻫﻮ ﻋﺪد ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ واﻟﺘﻰ ﻫﻲ أرﺑﻌﺔ‬
‫واﻻﺷﺨﺎص اﻟﺬي ﻛﺎن ﻛﻞ ﺷﺨﺺ ﻣﻨﻬﻢ ﯾﺴﻜﻦ ﺑﻄﺎﺑﻖ ﻫﻢ ﻗﯿﻤﺔ ﻛﻞ ﻋﻨﺼﺮ ﻓﻲ اﻟﻤﺼﻔﻮﻓﺔ ‪ .‬أي ﻛﺄﻧﻨﺎ ﻧﻘﻮل ﻛﻞ‬
‫ﻃﺎﺑﻖ ﻣﻨﻪ ﯾﺤﺘﻮي ﺷﺨﺺ " ﻓﻬﻨﺎ ﻧﻘﻮل ﻛﻞ ﻋﻨﺼﺮ ﻣﺎذا ﯾﺤﺘﻮي " ‪.‬‬

‫دﻋﻨﺎ ﻧﻄﺒﻖ ﻫﺬا اﻟﻤﺜﺎل ﺑﺸﻜﻞ ﻋﻤﻠﻲ ﺑﺮﻣﺠﻲ ‪. .‬‬


‫ﻛﻠﻤﺔ ﻋﻤﺎرة ﻟﻨﺨﺘﺼﺮﻫﺎ وﻧﺴﻤﯿﻬﺎ ) ‪ ( a‬ﻟﻨﻤﺜﻞ ﻣﺎﻗﻠﻨﺎه ‪:‬‬

‫; )" ﻋﻤﺎد "‪ ",‬أﺷﺮف "‪ ",‬أﯾﻬﻢ "‪ ",‬ﻣﺤﻤﺪ "( ‪a = new Array‬‬

‫‪٣٦‬‬
‫إذا ﻫﻨﺎ اﻟﻤﻮﻗﻊ اﻷول ﻓﻲ اﻟﻤﺼﻔﻮﻓﺔ ﯾﺴﺎوي ﻣﺤﻤﺪ واﻟﻤﻮﻗﻊ اﻟﺜﺎﻧﻲ أﯾﻬﻢ واﻟﻤﻮﻗﻊ اﻟﺜﺎﻟﺚ أﺷﺮف واﻟﻤﻮﻗﻊ اﻟﺮاﺑﻊ ﻋﻤﺎد‬
‫‪ .‬وﻟﻜﻦ ﻋﺎدة ﻓﻲ اﻟﻤﺼﻔﻮﻓﺎت ﻧﺒﺪأ ﻣﻦ اﻟﺼﻔﺮ وﻟﯿﺲ ﻣﻦ اﻟﻮاﺣﺪ أي ﻧﻘﻮل ﻣﻮﻗﻊ اﻟﺼﻔﺮ ﯾﺴﺎوي ﻣﺤﻤﺪ و اﻟﻤﻮﻗﻊ‬
‫اﻻول ﯾﺴﺎوي أﯾﻬﻢ واﻟﻤﻮﻗﻊ اﻟﺜﺎﻧﻲ ﯾﺴﺎوي أﺷﺮف واﻟﻤﻮﻗﻊ اﻟﺜﺎﻟﺚ ﯾﺴﺎوي ﻋﻤﺎد ‪.‬‬
‫ﻋﺰﯾﺰي اﻟﻤﺘﺪرب ﻻﺗﻨﺰﻋﺞ ﻣﻦ ذﻟﻚ أﻋﺘﺒﺮ اﻟﻌﻤﺎرة ﺗﺘﻜﻮن ﻣﻦ ﻃﺎﺑﻖ أرﺿﻲ وﻃﺎﺑﻖ أول وﻃﺎﺑﻖ ﺛﺎﻧﻲ وﻃﺎﺑﻖ ﺛﺎﻟﺚ‬
‫إذا ﻣﺤﻤﺪ ﺳﻮف ﯾﺴﻜﻦ ﻓﻲ اﻟﻄﺎﺑﻖ اﻻرﺿﻲ وﻫﻮ اﻟﺼﻔﺮ أي ﻣﻮﻗﻊ رﻗﻢ ﺻﻔﺮ ﻓﻲ اﻟﻤﺼﻔﻮﻓﺔ وأﯾﻬﻢ ﻓﻲ اﻟﻄﺎﺑﻖ‬
‫اﻷول أﯾﺎ اﻟﻤﻮﻗﻊ اﻻول ﻓﻲ اﻟﻤﺼﻔﻮﻓﺔ وأﺷﺮف ﻓﻲ اﻟﻄﺎﺑﻖ اﻟﺜﺎﻧﻲ أي اﻟﻤﻮﻗﻊ اﻟﺜﺎﻧﻲ ﻓﻲ اﻟﻤﺼﻔﻮﻓﺔ وﻋﻤﺎد ﻓﻲ‬
‫اﻟﻄﺎﺑﻖ اﻟﺜﺎﻟﺚ أي اﻟﻤﻮﻗﻊ اﻟﺜﺎﻟﺚ ﻓﻲ اﻟﻤﺼﻔﻮﻓﺔ ‪.‬‬

‫أﻣﺎ ﺗﻤﺜﯿﻞ اﻟﻤﺼﻔﻮﻓﺔ ﺑﺪاﺧﻞ اﻟﺠﻬﺎز اي ال " ‪ " Memory‬ﻓﯿﻜﻮن ﺑﻬﺬا اﻟﺸﻜﻞ‪...‬‬
‫" ﺳﻮف أﺿﻊ رﺳﻤﺔ ﺗﻮﺿﯿﺤﯿﺔ ﻟﺘﻮﺿﺢ ﻟﻚ ﻛﻞ ﺷﺊ " ‪:‬‬

‫]‪a[0‬‬ ‫‪50‬‬

‫]‪a[1‬‬ ‫‪90‬‬
‫ﻣﻘﺪار اﻟﻘﯿﻤﺔ‬ ‫اﺳﻢ ال‬ ‫‪20‬‬
‫]‪a[2‬‬
‫اﻟﻤﺨﺰﻧﺔ ﺑﺪاﺧﻞ‬ ‫‪Array‬‬
‫ال ‪Array‬‬ ‫‪45‬‬
‫رﻗﻢ اﻟﻤﻮﻗﻊ اﻟﻤﺴﻤﻰ‬ ‫]‪a[3‬‬
‫‪Index‬‬

‫§ ﻗﺒﻞ أن ﻧﺒﺪأ ﺑﻤﺜﺎل ﻻﺑﺪ أن أوﺿﺢ ﻟﻚ ﺷﯿﺌﺎ ﻣﻬﻢ ‪. . .‬‬


‫ﺑﻤﺎ أن اﻟﻤﺼﻔﻮﻓﺔ ﺗﺤﺘﻮي ﻋﻠﻰ ﻋﺪة ﻣﻮاﻗﻊ إذا ﯾﺠﺐ ﻋﻠﻲ أن أﺟﻌﻞ ﺑﺮﻧﺎﻣﺠﻲ ﯾﻤﺮ ﻋﻠﻰ ﻛﻞ ﻣﻮﻗﻊ إذا ﻫﻨﺎ ﺑﺤﺎﺟﺔ اﻟﻰ‬
‫ﺣﻠﻘﺔ ﺗﻜﺮار ﻟﻜﻲ اﺳﺘﻄﯿﻊ اﻟﻤﺮور ﻋﻠﻰ ﻛﻞ ﻣﻮﻗﻊ وأﻃﺒﻌﻪ او أﻧﻔﺬه ‪.‬‬
‫أﻛﺜﺮﻧﺎ اﻟﺤﺪﯾﺚ ‪ . .‬ﻟﻨﺄﺧﺬ ﻣﺜﺎﻻ ﻓﺎﻟﻤﺜﺎل اﻟﺘﻄﺒﯿﻘﻲ واﻟﻌﻤﻠﻲ ﻫﻮ اﻟﺬي ﯾﻮﺿﺢ ﻣﺎ ﺑﻬﻢ ﻟﻚ ‪.‬‬

‫ﻣﺜﺎل ‪:‬‬
‫>"‪<html dir="rtl‬‬
‫>‪</title‬اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ>‪<head><title‬‬
‫>"‪<script type = "text/javascript‬‬
‫; )"ﺣﻤﺪ"‪ ",‬ﻣﺤﻤﻮد "‪ ",‬أﺣﻤﺪ "‪ ",‬ﻣﺤﻤﺪ "( ‪var name = new Array‬‬
‫; ‪var i‬‬
‫) ‪for (i = 0 ; i < name.length ; i ++‬‬
‫; )" >‪document.writeln ( name[i] + " <br /‬‬
‫>‪</script‬‬
‫>‪</head‬‬
‫>‪<body></body‬‬

‫>‪</html‬‬

‫‪٣٧‬‬
‫دﻋﻨﺎ ﻧﺤﻠﻞ اﻟﻤﺜﺎل ﺳﻮﯾﺎ ‪. .‬‬
‫أول ﺷﺊ ﻋﺮﻓﻨﺎ أﺳﻢ اﻟﻤﺼﻔﻮﻓﺔ ﺛﻢ وﺿﻌﻨﺎ ﺑﻬﺎ أرﺑﻌﺔ ﻗﯿﻢ أذا ﻫﻨﺎ ﻧﺤﻦ ﻣﺘﻔﻘﯿﻦ أﻧﻨﺎ ﻋﺮﻓﻨﺎ ﻣﺼﻔﻮﻓﺔ أﺳﻤﻬﺎ‬
‫) ‪ ( name‬ﺗﺤﺘﻮي ﻋﻠﻰ أرﺑﻌﺔ ﻣﻮاﻗﻊ ﻛﻞ ﻣﻮﻗﻊ ﯾﺤﺘﻮي ﻋﻠﻰ إﺳﻢ ﺑﺪاﺧﻠﻪ‪ .‬ﺛﻢ ﻋﺮﻓﻨﺎ اﻟﻤﺘﻐﯿﺮ ) ‪ ( i‬اﻟﺬي‬
‫ﺳﻨﺴﺘﺨﺪﻣﻪ ﻓﻲ ﺣﻠﻘﺔ اﻟﺘﻜﺮار ‪ .‬أﺳﺘﺨﺪﻣﻨﺎ ﻓﻲ ﺣﻠﻘﺔ اﻟﺘﻜﺮار ﻫﺬه اﻟﻌﺒﺎرة ) ‪ ( name.lengt‬ﻓﺘﻌﻨﻲ أن ﺗﺴﺘﻤﺮ‬
‫ﺣﻠﻘﺔ اﻟﺘﻜﺮار اﻟﻰ أن ﯾﻨﺘﻬﻲ ﻃﻮل اﻟﻤﺼﻔﻮﻓﺔ أي أن ﺣﻠﻘﺔ اﻟﺘﻜﺮار ﺳﻮف ﺗﺴﺘﻤﺮ أرﺑﻌﺔ ﻣﺮات ﻷن اﻟﻤﺼﻔﻮﻓﺔ‬
‫ﺗﺤﺘﻮي ﻋﻠﻰ أرﺑﻌﺔ ﻣﻮاﻗﻊ وﺑﻤﺎ أﻧﻨﺎ ﺑﺪأﻧﺎ ﺣﻠﻘﺔ اﻟﺘﻜﺮار ﻣﻦ ﺻﻔﺮ أذا ﺳﻮف ﯾﻤﺸﻲ ‪ . 3 2 1 0‬أذا ﺻﯿﻐﺔ ﻃﻮل‬
‫اﻟﻤﺼﻔﻮﻓﺔ اﻟﺘﻰ ﺗﻜﺘﺐ ﺑﺎﻟﺘﻜﺮار ﺗﻜﺘﺐ ﻛﺎﻟﺘﺎﻟﻲ ‪:‬‬

‫‪ . length‬أﺳﻢ اﻟﻤﺼﻔﻮﻓﺔ‬

‫ﻋﺰﯾﺰي اﻟﻤﺘﺪرب إذا أﻧﺰﻋﺠﺖ ﻣﻨﻬﺎ ﺗﺴﺘﻄﯿﻊ أن ﻻﺗﻀﻌﻬﺎ ‪ .‬ﺗﺴﺘﻄﯿﻊ وﺿﻊ رﻗﻢ ) ‪ .. ( 4‬ﺑﺪﻻ ﻣﻨﻬﺎ ﻓﻨﺤﻦ ﻓﻲ ﻫﺬه‬
‫اﻟﻤﺼﻔﻮﻓﺔ ﺟﻌﻠﻨﺎﻫﺎ ﺗﺤﺘﻮي ﻋﻠﻰ أرﺑﻌﺔ ﻣﻮاﻗﻊ ‪ .‬ﻓﺒﺎﻟﺘﺎﻟﻲ ﻧﺠﻌﻞ ﺣﻠﻘﺔ اﻟﺘﻜﺮار ﺗﻤﺮ ﻋﻠﻰ اﻻرﺑﻌﺔ ﻣﻮاﻗﻊ ‪ .‬ﻗﺪ ﺗﺘﺴﺎءل‬
‫ﻛﯿﻒ أﺿﻊ ) ‪ ( 4‬ﻓﻨﺤﻦ ﻟﺪﯾﻨﺎ ) ‪ ( 4‬ﻋﻨﺎﺻﺮ إذا ﯾﺠﺐ أن ﯾﻜﻮن اﻟﻌﺪ اﻟﻰ ) ‪ ( 3‬أي ) ‪ ( 3 , 2 , 1 , 0‬اى‬
‫ارﺑﻌﺔ اﺳﻤﺎء ﻓﻬﻨﺎ ﯾﻌﺘﺒﺮ اﻟﻌﺪ ﻻرﺑﻌﺔ ﻣﻮاﻗﻊ ‪ . .‬ﻧﻌﻢ ﻛﻼﻣﻚ ﺻﺤﯿﺢ ‪ %100‬وﻟﻜﻨﻨﻲ ﻓﻲ ﺣﻠﻘﺔ اﻟﺘﻜﺮار ﺑﺪأﻧﺎ ﻣﻦ‬
‫) ‪ ( 0‬ﺛﻢ ﻗﻠﺖ أﺻﻐﺮ ﻣﻦ ) ‪ ( 4‬أي أن ) ‪ ( 4‬ﻟﯿﺴﺖ داﺧﻠﺔ ‪ .‬ﻓﻠﻢ أﻗﻞ أﺻﻐﺮ أو ﺗﺴﺎوي ) ‪ . ( 4‬ﻛﺬﻟﻚ اﻟﺤﺎل‬
‫ﺑﺎﻟﻨﺴﺒﺔ ﻟﻠـ ) ‪..( name.length‬‬

‫ذﻛﺮت داﺧﻞ ﺟﻤﻠﺔ اﻟﻄﺒﺎﻋﺔ ) ]‪ ( name[i‬واﻋﻨﻲ ﺑﻬﺎ أﻧﻨﻲ أرﯾﺪ ﻃﺒﺎﻋﺔ ﻣﺎﯾﺤﺘﻮﯾﻪ ﻛﻞ ﻣﻮﻗﻊ ﻣﻦ ﻣﻮاﻗﻊ‬
‫اﻟﻤﺼﻔﻮﻓﺔ ‪ .‬أي ﻛﺄﻧﻨﻲ أﻗﻮل أرﯾﺪ ﻃﺒﺎﻋﺔ أﺳﻢ ﻛﻞ ﺷﺨﺺ ﯾﺴﻜﻦ ﻓﻲ ﻛﻞ ﻃﺎﺑﻖ ﻣﻦ ﻃﻮاﺑﻖ اﻟﻌﻤﺎرة ‪ . . .‬ﺗﺬﻛﺮ ﻛﻤﺎ‬
‫ﻗﻠﻨﺎ ﺳﺎﺑﻘﺎ ‪ .‬إذا ﻛﯿﻒ أﻓﻌﻞ ذﻟﻚ ‪ . .‬أﻛﺘﺐ أﺳﻢ اﻟﻤﺼﻔﻮﻓﺔ ﺛﻢ أﻓﺘﺢ اﻟﻘﻮس "[" أﺿﻊ رﻗﻢ اﻟﻤﻮﻗﻊ ‪ . .‬ﺛﻢ أﻏﻠﻖ‬
‫اﻟﻘﻮس "]" ﻛﺄن ﻣﺜﻼ أﻗﻮل ) ]‪ ( name[0‬ﻓﻬﺬا ﯾﻌﻨﻲ أرﯾﺪ أن أﻋﺮف ﻣﺎﯾﺤﺘﻮي ﻋﻠﯿﻪ اﻟﻤﻮﻗﻊ ﺻﻔﺮ ﻓﻲ‬
‫اﻟﻤﺼﻔﻮﻓﺔ وﻃﺒﻌﺎ ﻫﻮ ﻣﺤﻤﺪ ‪ .‬وﻫﺬا ﻣﺎﺳﻮف ﯾﺤﺪث ﺑﺤﻠﻘﺔ اﻟﺘﻜﺮار ﻓﺄول ﻣﺮة ﺳﻮف ﺗﺮﺳﻞ ﺣﻠﻘﺔ اﻟﺘﻜﺮار ﻗﯿﻤﺔ ) ‪( i‬‬
‫ﺻﻔﺮا وﺑﻤﺎ أﻧﻨﻲ واﺿﻊ ) ]‪ ( name [i‬إذا ﺳﻮف ﯾﻜﻮن ) ]‪ ( name [0‬أي أﻃﺒﻊ ﻣﺎﯾﺤﺘﻮﯾﻪ اﻟﻤﻮﻗﻊ ﺻﻔﺮ‬
‫واﻟﺬي ﻫﻮ ﻣﺤﻤﺪ ﺛﻢ ﯾﻨﺰل ﺳﻄﺮا وﻧﻌﻮد ﻣﺮة ﺛﺎﻧﯿﺔ اﻟﻰ ﺣﻠﻘﺔ اﻟﺘﻜﺮار وﺗﻜﻮن ﻗﯿﻤﺔ اﻟـ ) ‪ ( i‬ﻗﺪ زﯾﺪ ﻋﻠﯿﻬﺎ واﺣﺪ‬
‫ﻟﺘﺼﺒﺢ ) ‪ ( 1‬ﻓﻨﺪﺧﻞ ﺣﻠﻘﺔ اﻟﺘﻜﺮار وﺗﻜﻮن ) ]‪ ( name [1‬أي أﻃﺒﻊ ﻣﺎﯾﺤﺘﻮﯾﻪ اﻟﻤﻮﻗﻊ رﻗﻢ ) ‪ ( 1‬وﻫﻮ أﺣﻤﺪ ‪.‬‬
‫ﺛﻢ ﯾﻨﺰل ﺳﻄﺮ وﯾﻌﻮد ﻣﺮة ﺛﺎﻧﯿﺔ اﻟﻰ ﺣﻠﻘﺔ اﻟﺘﻜﺮار ﻓﺘﻜﻮن ﻗﯿﻤﺔ ) ‪ ( i‬ﻗﺪ زادت واﺣﺪ ﻟﺘﺼﺒﺢ ) ‪ ( 2‬ﻓﺘﺪﺧﻞ ﻗﯿﻤﺔ‬
‫) ‪ ( i‬اﻟﻰ ﺣﻠﻘﺔ اﻟﺘﻜﺮار ﻓﺘﺼﺒﺢ ) ]‪ ( name [2‬أي أﻃﺒﻊ ﻗﯿﻤﺔ اﻟﻤﻮﻗﻊ اﻟﺜﺎﻧﻲ اﻟﺘﻰ ﻫﻲ ﻣﺤﻤﻮد ‪ .‬ﺛﻢ ﺗﻌﻮد ﻗﯿﻤﺔ‬
‫) ‪ ( i‬ﺑﻌﺪ أن زﯾﺪت ﺑﻮاﺣﺪ أي ) ‪ ( 3‬ﻓﺘﺪﺧﻞ ﺣﻠﻘﺔ اﻟﺘﻜﺮار ﻓﺘﺼﺒﺢ ) ]‪ ( name [3‬أي أﻃﺒﻊ ﻗﯿﻤﺔ اﻟﻤﻮﻗﻊ اﻟﺜﺎﻟﺚ‬
‫ﻓﻲ اﻟﻤﺼﻔﻮﻓﺔ ﻫﻮ ﺣﻤﺪ ‪ .‬ﺛﻢ ﺗﻌﻮد ﻗﯿﻤﺔ اﻟـ ) ‪ ( i‬ﺑﻌﺪ أن زﯾﺪت ﺑﻮاﺣﺪ اﻟﻰ ﺣﻠﻘﺔ اﻟﺘﻜﺮار ﻓﻼ ﯾﺘﺤﻘﻖ اﻟﺸﺮط واﻟﺬي‬
‫ﻫﻮ ) ‪ ( i < name.length‬أي أﻗﻞ ﻣﻦ ) ‪ ( 4‬ﻓﺈذا ﻻﯾﺘﺤﻘﻖ اﻟﺸﺮط ﻓﻨﺨﺮج ﻣﻦ ﺣﻠﻘﺔ اﻟﺘﻜﺮار أي ﻧﺘﻮﻗﻒ ‪.‬‬
‫وﻫﻨﺎ ﯾﻨﺘﻬﻲ اﻟﺒﺮﻧﺎﻣﺞ وﯾﻜﻮن ﻗﺪ ﻃﺒﻊ ﻟﻨﺎ ‪:‬‬
‫ﻣﺤﻤﺪ‬
‫أﺣﻤﺪ‬
‫ﻣﺤﻤﻮد‬
‫ﺣﻤﺪ‬

‫‪٣٨‬‬
‫§ ﻣﻼﺣﻈﺔ ﻣﻬﻤﺔ ‪:‬‬
‫ﺻﯿﻐﺔ ) ‪ . length‬اﺳﻢ اﻟﻤﺼﻔﻮﻓﺔ ( ﻧﺴﺘﻌﻤﻠﻬﺎ ﻓﻘﻂ ﻋﻨﺪﻣﺎ ﯾﻜﻮن ﻃﻮل اﻟﻤﺼﻔﻮﻓﺔ ﻣﻌﻠﻮم ﻟﺪﯾﻨﺎ ﻋﻨﺪ ﺗﻌﺮﯾﻔﻨﺎ‬
‫ﻟﻠﻤﺼﻔﻮﻓﺔ ‪ .‬وﻫﻨﺎ ﯾﻤﻜﻦ ان ﻧﻌﺮف ﻃﻮﻟﻬﺎ ﻋﻠﻰ ﺷﻜﻠﯿﻦ ‪:‬‬
‫ﻣﺜﻼ ‪:‬‬

‫; )‪a = newArry (4‬‬

‫ﻣﺜﻼ ‪:‬‬
‫; )‪a = newArry (2,4,6‬‬

‫ﻓﻬﻨﺎ ﻧﻌﺮف ان اﻟﻤﺼﻔﻮﻓﺔ ﺗﺘﻜﻮن ﻣﻦ ﺛﻼﺛﺔ ﻣﻮاﻗﻊ ‪.‬‬

‫أﻣﺎ ﻣﺘﻰ ﻻ ﻧﺴﺘﺨﺪم ) ‪ ( a.length‬ﻓﻔﻲ ﻫﺬه اﻟﺤﺎﻟﺔ ‪....‬‬

‫ﻣﺜﻼ ‪:‬‬

‫; ) ( ‪a = newArra‬‬

‫ﻓﻬﻨﺎ ﻧﺤﻦ اﺛﻨﺎء ﺗﻌﺮﯾﻔﻨﺎ ﻟﻠﻤﺼﻔﻮﻓﺔ ﻟﻢ ﻧﺤﺪد ﻋﻠﻰ ﻛﻢ ﻣﻮﻗﻊ ﺗﺤﺘﻮي إذا ﻛﯿﻒ ﻧﺴﺘﺨﺪم ) ‪ ( .length‬ﻓﻨﺤﻦ ﻻ ﻧﻌﺮف‬
‫ﻃﻮل اﻟﻤﺼﻔﻮﻓﺔ أي ﻋﺪد ﻣﻮاﻗﻌﻬﺎ ‪ .‬إذا ﻫﻨﺎ ﯾﺠﺐ ﻋﻠﯿﻨﺎ ان ﻧﺤﺪد ﻃﻮل اﻟﻤﺼﻔﻮﻓﺔ ﺑﺤﻠﻘﺔ اﻟﺘﻜﺮار أي ﺑﺪﻻ ﻣﻦ ان‬
‫ﻧﻀﻊ ) ‪ ( a.length‬ﻧﻀﻊ ﻣﺜﻼ رﻗﻢ ) ‪ ( 3‬وﻫﺬا ﯾﺪﻟﻨﺎ ﻛﻢ ﻣﻮﻗﻊ ﻧﺮﯾﺪ ﺑﺎﻟﻤﺼﻔﻮﻓﺔ ‪.‬‬

‫ﻣﺜﺎل ‪:‬‬

‫>‪<html‬‬
‫>‪</title‬اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ>‪<head><title‬‬
‫>"‪<script type = "text/javascript‬‬
‫; ‪var i‬‬
‫; )(‪var number=new Array‬‬
‫)‪for (i=0 ; i<4 ; i++‬‬
‫{‬
‫; ‪number[i] = i‬‬
‫;)">‪document.writeln(number[i] + "<br‬‬
‫}‬
‫>‪</script‬‬
‫>‪</head‬‬
‫>‪<body></body‬‬

‫>‪</html‬‬

‫‪٣٩‬‬
‫ﺗﺤﻠﯿﻞ ﻫﺬا اﻟﻤﺜﺎل اﺗﺮﻛﻪ ﻟﻚ ‪ ....‬وﻟﻜﻦ ﺳﻮف اﺿﻊ ﻟﻚ ﻣﻼﺣﻈﺘﯿﻦ ﺗﺴﻬﻞ ﻋﻠﯿﻚ ﺗﺤﻠﯿﻠﻪ ‪...‬‬

‫) ‪ ( i<4‬ﻧﻌﻨﻲ ﺑﻬﺎ اﻧﻨﺎ ﻧﺮﯾﺪ اﻟﻤﺼﻔﻮﻓﺔ ﺗﺤﺘﻮي ﻋﻠﻰ ارﺑﻌﺔ ﻣﻮاﻗﻊ " ﺗﺬﻛﺮ اﻧﻨﺎ ﺑﺪأﻧﺎ ﻣﻦ ) ‪. " ( 0‬‬ ‫•‬
‫) ‪ ( number[i] = i‬ﻧﻌﻨﻲ ﺑﻬﺎ ان اﻟﻤﺼﻔﻮﻓﺔ ﻋﺮﻓﻨﺎﻫﺎ ﻓﻲ اﻟﺒﺪاﯾﺔ وﻟﻢ ﻧﻀﻊ ﺑﻬﺎ ﻗﯿﻢ ‪ .‬ﻓﻬﻨﺎ ﻧﻀﻊ ﺑﻬﺎ اﻟﻘﯿﻢ‬ ‫•‬
‫أي ﻛﺄﻧﻨﺎ ﻧﻘﻮل ﻣﻮﻗﻊ اﻟﺼﻔﺮ ﺿﻊ ﺑﻪ ) ‪ ( 0‬وﻣﻮﻗﻊ اﻟﻮاﺣﺪ ﺿﻊ ﺑﻪ ) ‪ ( 1‬وﻫﻜﺬا ‪ .‬أي ‪:‬‬

‫‪Number [0] = 0‬‬


‫‪Number [1] = 1‬‬
‫‪Number [2] = 2‬‬
‫‪Number [3] = 3‬‬

‫اذا ﻧﺤﻦ ﻫﻨﺎ ﻗﻤﻨﺎ ﺑﺘﻌﺒﺌﺔ ﻣﻮاﻗﻊ اﻟﻤﺼﻔﻮﻓﺔ ﺑﻘﯿﻢ وﻣﻦ ﺛﻢ ﻃﺒﻌﻨﺎﻫﺎ ‪.‬‬

‫ﻋﺰﯾﺰي اﻟﻤﺘﺪرب ﻧﻜﻮن ﻫﻨﺎ ﻗﺪ اﻧﻬﯿﻨﺎ اﻟﺤﺪﯾﺚ ﻋﻦ اﻟﻤﺼﻔﻮﻓﺎت ذات اﻟﺒﻌﺪ اﻟﻮاﺣﺪ اﻟﻤﺴﻤﺎة ‪:‬‬ ‫§‬
‫" ‪. (1D) " One Dimension Array‬‬

‫إذا ﺑﻘﻲ ﻋﻠﯿﻨﺎ اﻟﺸﻜﻞ اﻻﺧﺮ ﻟﻠﻤﺼﻔﻮﻓﺔ وﻫﻲ اﻟﻤﺼﻔﻮﻓﺔ اﻟﻤﺴﻤﺎة ‪:‬‬ ‫§‬
‫" ‪. (2D) " Tow Dimension Array‬‬

‫ﻟﻨﺄﺧﺬ ﻣﺜﺎﻻ وﻧﻮﺿﺢ ﻣﺎ ﻫﻲ ‪...‬‬

‫>‪<html‬‬
‫>‪</title‬اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ>‪<head><title‬‬
‫>"‪<script type = "text/javascript‬‬
‫; ] ]‪var arr = [ [1,3,5,7] , [3,3,3,3] , [9,1,4,0‬‬
‫;)">‪</h2><tt‬ﻃﺒﺎﻋﺔ ﻣﺼﻔﻮﻓﺔ ﺛﻨﺎﺋﯿﺔاﻷﺑﻌﺎد>‪document.writeln("<h2‬‬
‫)‪for (i=0 ;i< arr.length;++i‬‬
‫{‬
‫)‪for (j=0 ;j< arr[i].length;++j‬‬
‫;)" " ‪document.writeln(arr[i] [j] +‬‬
‫;)">‪document.writeln("<br /‬‬
‫}‬
‫;)" >‪document.writeln("</tt‬‬
‫>‪</script‬‬
‫>‪</head‬‬
‫>‪<body></body‬‬

‫>‪</html‬‬

‫‪٤٠‬‬
‫ﻟﻨﺤﻠﻞ اﻟﻤﺜﺎل ﺳﻮﯾﺎ ‪...‬‬

‫أﺧﻲ اﻟﻤﺘﺪرب ﺷﺮﺣﻲ ﻓﻲ ﻫﺬا اﻟﻤﺜﺎل ﺳﻮف ﯾﻜﻮن ﻃﻮﯾﻼ وﻗﺪ أﺛﻘﻞ ﻋﻠﯿﻚ ﻣﻦ ﻛﺜﺮة ﻣﺎ ﺳﻮف ﺗﻘﺮأ وﻟﻜﻦ ذﻟﻚ ﻣﻦ‬
‫أﺟﻞ إﯾﺼﺎل اﻟﻤﻌﻠﻮﻣﺔ ﻟﻚ ﺑﺎﻟﺘﻔﺼﯿﻞ إﻟﻰ أﺑﻌﺪ اﻟﺤﺪود ﻓﺄﻋﺬرﻧﻲ ﻓﻜﻤﺎ ﻫﻮ ﺷﺎق ﻋﻠﯿﻚ ﺑﺎﻟﻘﺮاءة ﻫﻮ ﺷﺎق ﻋﻠﻲ ﺑﺎﻟﻜﺘﺎﺑﺔ‬
‫واﻟﺸﺮح ‪.....‬‬

‫ﻫﻨﺎ ﻗﻤﻨﺎ ﺑﺘﻌﺮﯾﻒ اﻟﻤﺼﻔﻮﻓﺔ وﻛﺎﻧﺖ ﻫﺬه اﻟﻤﺼﻔﻮﻓﺔ ﺗﺤﺘﻮي ﺑﺪاﺧﻠﻬﺎ ﻋﻠﻰ ﺛﻼﺛﺔ ﻣﺼﻔﻮﻓﺎت ﻻ ﺗﻨﺰﻋﺞ ﻣﻦ ذﻟﻚ ﻓﻘﺪ‬
‫ﻛﻨﺎ ﻧﻘﻮل ﻓﻲ اﻟﻤﺎﺿﻲ ان اﻟﻤﺼﻔﻮﻓﺔ ﺗﺤﺘﻮي ﻋﻠﻰ ﺛﻼﺛﺔ ﻋﻨﺎﺻﺮ وﻫﻨﺎ ﻧﻘﻮل ﺗﺤﺘﻮي اﻟﻤﺼﻔﻮﻓﻪ ﻋﻠﻰ ﺛﻼﺛﺔ‬
‫ﻣﺼﻔﻮﻓﺎت أي ﻋﻤﻠﯿﺔ ﺗﺪاﺧﻠﯿﺔ ‪ .‬اﻻن ﯾﺠﺐ أن ﻧﻌﺮف ﺷﯿﺌﺎ ‪...‬‬
‫ﻫﺬه اﻟﻤﺼﻔﻮﻓﺔ اﻟﺘﻲ ﺑﺪاﺧﻠﻬﺎ ﻣﺼﻔﻮﻓﺎت ﻫﻲ ) ﻛﻢ ﻋﺎﻣﻮدا ﻓﻲ ﻛﻞ ﺻﻒ ( ) ‪ (rows & columns‬وﻫﻨﺎ ﻃﺒﻌﺎ‬
‫ﻣﺼﻔﻮﻓﺘﻨﺎ ﻫﺬه ﺳﻮف ﺗﺘﻜﻮن ﻣﻦ أرﺑﻌﺔ أﻋﻤﺪة وﺛﻼﺛﺔ ﺻﻔﻮف ‪ .‬إذا أﺑﻌﺎدﻫﺎ ) ‪ ( 4 x 3‬ﻛﯿﻒ ﻋﺮﻓﻨﺎ ذﻟﻚ ؟‬

‫ﻻﺣﻆ أن اﻟﻤﺼﻔﻮﻓﺔ اﻟﺮﺋﯿﺴﯿﺔ ﻛﺎﻧﺖ ﺗﺤﺘﻮي ﻋﻠﻰ ﺛﻼﺛﺔ ﻣﺼﻔﻮﻓﺎت ﺑﺪاﺧﻠﻬﺎ إذا اﻟﻤﺼﻔﻮﻓﺔ اﻟﺮﺋﯿﺴﯿﺔ ﺗﺤﺘﻮي ﻋﻠﻰ‬
‫ﺛﻼﺛﺔ ﺻﻔﻮف وﻛﺎن ﻛﻼ ﻣﻦ ﻫﺬه اﻟﻤﺼﻔﻮﻓﺎت ﯾﺤﺘﻮي ﻋﻠﻰ ارﺑﻌﺔ ﻋﻨﺎﺻﺮ إذا اﻟﻤﺼﻔﻮﻓﺔ اﻟﺮﺋﯿﺴﯿﺔ أﯾﻀﺎ ﺳﻮف‬
‫ﺗﺘﻜﻮن ﻣﻦ أرﺑﻌﺔ أﻋﻤﺪة وﻫﻲ ﻋﺪد اﻟﻌﻨﺎﺻﺮ ﻓﻲ اﻟﻤﺼﻔﻮﻓﺎت اﻟﺘﻲ ﺑﺪاﺧﻠﻬﺎ ﻓﻘﺪ ﻛﺎﻧﺖ ﻛﻞ ﻣﺼﻔﻮﻓﺔ ﻣﻦ ﻫﺬه‬
‫اﻟﻤﺼﻔﻮﻓﺎت ﺗﺤﺘﻮي ﻋﻠﻰ ﻗﯿﻢ ﺑﺪاﺧﻠﻬﺎ وﻛﺎﻧﺖ ﻛﻞ واﺣﺪه ﺗﺘﻜﻮن ﻣﻦ ارﺑﻌﺔ ﻣﻮاﻗﻊ اذا ‪.. .‬‬
‫ﺛﻢ ﻛﺘﺒﻨﺎ أﻣﺮ ﻃﺒﺎﻋﺔ ﺟﻤﻠﺔ ﻧﺼﯿﺔ واﻟﺘﻲ ﻫﻲ " ﻃﺒﺎﻋﺔ ﻣﺼﻔﻮﻓﺔ ﺛﻨﺎﺋﯿﺔ اﻷﺑﻌﺎد " ووﺿﻌﻨﺎ ﻫﺬا اﻟﻮﺳﻢ ) >‪ ( <tt‬اﻟﺬي‬
‫ﺳﻮف أﻏﻠﻘﻪ ﺑﻌﺪ اﻻﻧﺘﻬﺎء ﻛﻠﯿﺎ ﻣﻦ اﻟﺒﺮﻧﺎﻣﺞ ﻓﻘﻂ ﻟﻜﻲ ﯾﻄﺒﻊ ﻟﻲ اﻟﺒﺮﻧﺎﻣﺞ ﻛﻞ اﻻرﻗﺎم اﻟﺘﻲ ﺗﺤﺘﻮﯾﻬﺎ اﻟﻤﺼﻔﻮﻓﺔ ﺑﺸﻜﻞ‬
‫اﻵﻟﺔ اﻟﻄﺎﺑﻌﺔ وﺗﺴﺘﻄﯿﻊ ان ﻻ ﺗﻀﻌﻪ ‪.‬‬
‫ﻗﺒﻞ اﻟﺪﺧﻮل اﻟﻰ ﺣﻠﻘﺔ اﻟﺘﻜﺮار أﻧﺖ ﺗﻌﻠﻢ ﺟﯿﺪا ان ﺣﻠﻘﺔ اﻟﺘﻜﺮار ﻓﻲ ﻛﻞ ﻣﺮة ﻧﺪﺧﻞ ﺑﻬﺎ داﺧﻠﻬﺎ ﯾﺠﺐ اﻟﻌﻮدة ﻟﻬﺎ أﻛﺜﺮ‬
‫ﻣﻦ ﻣﺮة ﺣﺘﻰ ﯾﻔﺸﻞ اﻟﺸﺮط ﻓﻨﺨﺮج ﻣﻨﻬﺎ " أي ﻋﺪم ﺗﺤﻘﻖ اﻟﺸﺮط " ﻓﻤﺎذا ﻟﻮ ﻛﺎن ﻟﺪﯾﻨﺎ ﺣﻠﻘﺔ ﺗﻜﺮار ﺑﺪاﺧﻠﻬﺎ ﺣﻠﻘﺔ‬
‫ﺗﻜﺮار أﺧﺮى ﻓﻲ ﻫﺬه اﻟﺤﺎﻟﺔ ﻧﺪﺧﻞ ﻓﻲ ﺣﻠﻘﺔ اﻟﺘﻜﺮار اﻻوﻟﻰ أي اﻟﺮﺋﯿﺴﯿﺔ ﻓﻨﺠﺪ ﺑﺪاﺧﻠﻬﺎ ﺣﻠﻘﺔ ﺗﻜﺮار أﺧﺮى وﻫﻨﺎ‬
‫ﺳﻮف ﻧﺪﺧﻞ ﺑﺪاﺧﻞ ﻫﺬه اﻟﺤﻠﻘﺔ وﻧﺴﺘﻤﺮ ﺑﺘﻨﻔﯿﺬ ﻣﺎ ﺑﺪاﺧﻠﻬﺎ واﻟﻌﻮدة ﻟﻬﺎ ﺣﺘﻰ ﯾﻔﺸﻞ ﺷﺮﻃﻬﺎ وﺑﺎﻟﺘﺎﻟﻲ اﻟﺨﺮوج ﻣﻨﻬﺎ‬
‫واﻟﻌﻮدة اﻟﻰ ﺣﻠﻘﺔ اﻟﺘﻜﺮار اﻻوﻟﻰ ﻛﺪورة ﺛﺎﻧﯿﺔ ﻟﻬﺎ ﻓﻨﺪﺧﻞ ﺑﺪاﺧﻠﻬﺎ ﻓﻨﺠﺪ ﺣﻠﻘﺔ اﻟﺘﻜﺮار اﻟﺜﺎﻧﯿﺔ ﻣﺮة أﺧﺮى ﻓﻨﺴﺘﻤﺮ‬
‫ﺑﺘﻨﻔﯿﺬ ﻣﺎ ﺑﺪاﺧﻠﻬﺎ أي اﻟﺘﻜﺮار ﺣﺘﻰ ﯾﻔﺸﻞ اﻟﺸﺮط " أي ﻋﺪم ﺗﺤﻘﻘﻪ " ‪.‬‬
‫ﺛﻢ ﻧﺨﺮج ﻣﻦ ﻫﺬه اﻟﺤﻠﻘﺔ وﻧﻌﻮد اﻟﻰ اﻟﺤﻠﻘﺔ اﻟﺮﺋﯿﺴﯿﺔ ﻣﺮة أﺧﺮى وﻫﻜﺬا ﺣﺘﻰ ﯾﻔﺸﻞ ﺷﺮط ﺣﻠﻘﺔ اﻟﺘﻜﺮار اﻟﺮﺋﯿﺴﯿﺔ‬
‫وﺑﺎﻟﺘﺎﻟﻲ ﻋﺪم اﻟﺪﺧﻮل ﺑﺪاﺧﻠﻬﺎ وﻋﺪم اﻟﺪﺧﻮل ﺑﺤﻠﻘﺔ اﻟﺘﻜﺮار اﻟﺘﻲ ﺑﺪاﺧﻠﻬﺎ " أي اﻟﺤﻠﻘﺔ اﻟﺜﺎﻧﯿﺔ " وﺑﺎﻟﺘﺎﻟﻲ اﻟﺨﺮوج‬
‫ﺗﻤﺎﻣﺎ ‪.‬‬

‫اﻻن ﻟﻨﺪﺧﻞ ﺑﺤﻠﻘﺔ اﻟﺘﻜﺮار ﺑﺒﺮﻧﺎﻣﺠﻨﺎ وﻧﺸﺮﺣﻬﺎ وﻟﻜﻦ ﻗﺒﻞ ذﻟﻚ دﻋﻨﺎ ﻧﺘﻔﻖ ﻋﻠﻰ ﻣﺴﻤﯿﺎت ﻣﺠﺎزﯾﺔ " إذا ﺟﺎز اﻟﺘﻌﺒﯿﺮ‬
‫" اﺳﺘﺨﺪﻣﻬﺎ ﻓﻘﻂ ﻣﻦ أﺟﻞ اﻟﺘﻮﺿﯿﺢ ﻻ أﻛﺜﺮ ‪:‬‬

‫‪٤١‬‬
‫ﻧﺴﻤﻲ ﺣﻠﻘﺔ اﻟﺘﻜﺮار اﻻوﻟﻰ اﻟﺘﻲ ﺑﺒﺮﻧﺎﻣﺠﻨﺎ اﻟﻤﺤﺘﻮﯾﺔ ﻋﻠﻰ اﻟﻤﺘﻐﯿﺮ ) ‪ : ( i‬ﺑـ " ﺣﻠﻘﺔ اﻟﺘﻜﺮار اﻟﺮﺋﯿﺴﯿﺔ "‬
‫وﺣﻠﻘﺔ اﻟﺘﻜﺮار اﻟﺜﺎﻧﯿﺔ أي اﻟﺘﻲ ﺑﺪاﺧﻞ ﺣﻠﻘﺔ اﻟﺘﻜﺮار اﻻوﻟﻰ اﻟﻤﺤﺘﻮﯾﺔ ﻋﻠﻰ اﻟﻤﺘﻐﯿﺮ ) ‪ : ( j‬ﺑـ " ﺣﻠﻘﺔ اﻟﺘﻜﺮار‬
‫اﻟﺪاﺧﻠﯿﺔ " ‪.‬‬

‫ﻟﻨﺒﺪأ ‪.....‬‬ ‫§‬

‫ﻋﺮﻓﻨﺎ ﻫﻨﺎ ﺑﺒﺮﻧﺎﻣﺠﻨﺎ ﺣﻠﻘﺔ اﻟﺘﻜﺮار اﻟﺮﺋﯿﺴﯿﺔ وﻋﺮﻓﻨﺎ ﺑﺪاﺧﻠﻬﺎ اﻟﻤﺘﻐﯿﺮ ) ‪ ( i‬وﺟﻌﻠﻨﺎ ﺣﻠﻘﺔ اﻟﺘﻜﺮار ﺗﺒﺪأ ﻣﻦ ) ‪ ( 0‬اﻟﻰ‬
‫ﻃﻮل اﻟﻤﺼﻔﻮﻓﺔ اﻟﺮﺋﯿﺴﯿﺔ اﻟﺘﻲ ﺗﺤﺘﻮي ﺑﺪاﺧﻠﻬﺎ ﻋﻠﻰ اﻟﻤﺼﻔﻮﻓﺎت ‪ .‬وﺑﻤﺎ أن ﻟﺪﯾﻨﺎ ﺑﺪاﺧﻠﻬﺎ ﺛﻼﺛﺔ ﻣﺼﻔﻮﻓﺎت إذا‬
‫ﺳﻮف ﺗﻜﻮن ﻗﯿﻤﺔ ) ‪ ( arr.length‬ﻫﻲ ) ‪ ( 3‬أي اﻟﺸﺮط ﺳﻮف ﯾﻜﻮن ) ‪ ( i < 3‬اﺑﺘﺪاءا ﻣﻦ ) ‪ ( 0‬ﻃﺒﻌﺎ ‪ .‬أي‬
‫ان ﻫﺬه اﻟﺤﻠﻘﺔ ﺳﻮف ﺗﺴﺘﻤﺮ ﺑﺎﻟﺘﻜﺮار ﺛﻼﺛﺔ ﻣﺮات " أي اﻟﺪﺧﻮل ﺑﺪاﺧﻠﻬﺎ وﺗﻨﻔﯿﺬ ﻣﺎ ﺑﺪاﺧﻠﻬﺎ ﺛﻼﺛﺔ ﻣﺮات " ‪.‬‬
‫ﻻﺗﻨﺰﻋﺞ ﻻﻧﻲ وﺿﻌﺖ داﺧﻞ ﺣﻠﻘﺔ اﻟﺘﻜﺮار ) ‪ ( var i‬ﻓﺄﻧﺎ ﻫﻨﺎ ﻓﻘﻂ ﺑﺪﻻ ﻣﻦ أن أﻋﺮف اﻟﻤﺘﻐﯿﺮ ) ‪ ( i‬ﻓﻲ ﺑﺪاﯾﺔ‬
‫اﻟﺒﺮﻧﺎﻣﺠﻲ ﻋﺮﻓﺘﻪ ﺑﺪاﺧﻞ ﺣﻠﻘﺔ اﻟﺘﻜﺮار ‪ .‬ﻃﺒﻌﺎ ﺗﺴﺘﻄﯿﻊ ان ﺗﻌﺮﻓﻪ ﻓﻲ ﺑﺪاﯾﺔ اﻟﺒﺮﻧﺎﻣﺞ أو ﺗﻌﺮﻓﻪ داﺧﻞ ﺣﻠﻘﺔ اﻟﺘﻜﺮار‬
‫ﻛﻤﺎ ﺗﺸﺎء " ﻓﻘﻂ أﺣﺒﺒﺖ أن ارﯾﻚ ﻋﺪة ﻃﺮق ﻟﺘﻌﺮﯾﻔﻪ ﻟﯿﺲ ﻋﺒﺜﺎ وﻟﻜﻦ ﻣﻦ ﺑﺎب اﻟﻌﻠﻢ ﺑﺎﻟﺸﻲء " ‪.‬‬
‫ﻫﻨﺎ دﺧﻠﻨﺎ ﺣﻠﻘﺔ اﻟﺘﻜﺮار اﻟﺮﺋﯿﺴﯿﺔ وﻗﯿﻤﺔ ) ‪ ( i‬ﻫﻲ ) ‪ ( 0‬ﺛﻢ دﺧﻠﻨﺎ ﺣﻠﻘﺔ اﻟﺘﻜﺮار اﻟﺪاﺧﻠﯿﺔ وﻋﺮﻓﻨﺎ اﻟﻤﺘﻐﯿﺮ ) ‪( j‬‬
‫وﺟﻌﻠﻨﺎه ﯾﺒﺪأ ﻣﻦ ) ‪ ( 0‬ووﺿﻌﻨﺎ ﺷﺮط ال ) ‪ ( j‬ﻫﻮ ) ‪ . ( j<arr[i].length‬وﺑﻤﺎ ان ﻗﯿﻤﺔ ) ‪ ( i‬ﻫﻲ ) ‪( 0‬‬
‫إذا اﻟﺸﺮط ﺳﻮف ﯾﻜﻮن ) ‪ ( arr[0].length‬ﻣﺎذا ﺗﻌﻨﻲ ﻫﺬه اﻟﺠﻤﻠﻪ ؟‬

‫ﺗﻌﻨﻲ ﻣﺎذا ﯾﺤﺘﻮي اﻟﻤﻮﻗﻊ ) ‪ ( 0‬ﻓﻲ اﻟﻤﺼﻔﻮﻓﺔ اﻟﺮﺋﯿﺴﯿﺔ وﻃﺒﻌﺎ ﯾﺤﺘﻮي ﻋﻠﻰ ﻣﺼﻔﻮﻓﺔ ﺗﺤﺘﻮي ﺑﺪاﺧﻠﻬﺎ ﻋﻠﻰ أرﺑﻌﺔ‬
‫ﻋﻨﺎﺻﺮ ‪ ..‬أي ﻛﺄﻧﻨﺎ ﻧﻘﻮل ﺑﻬﺬه اﻟﺠﻤﻠﺔ " ﻛﻢ ﺗﺤﺘﻮي اﻟﻤﺼﻔﻮﻓﺔ ﻋﻠﻰ ﻋﻨﺎﺻﺮ ﺑﺪاﺧﻠﻬﺎ ﻓﻲ اﻟﻤﻮﻗﻊ ) ‪ ( 0‬ﻣﻦ‬
‫اﻟﻤﺼﻔﻮﻓﺔ اﻟﺮﺋﯿﺴﯿﺔ " ‪...‬‬

‫وﺑﻤﺎ أﻧﻬﺎ ﺗﺤﺘﻮي ﻋﻠﻰ أرﺑﻌﺔ ﻋﻨﺎﺻﺮ ‪ ،‬إذا ﻫﻨﺎ ﺗﺮﺟﻤﺔ ) ‪ ( arr[0].length‬ﺗﻌﻨﻲ ) ‪ ( 4‬إذا اﻟﺸﺮط ﻫﻮ‬
‫) ‪ ( j<4‬إذا ﺳﻮف ﻧﻨﻔﺬ ﻣﺎ ﺑﺪاﺧﻞ اﻟﺤﻠﻘﺔ اﻟﺪاﺧﻠﯿﺔ أرﺑﻌﺔ ﻣﺮات إﺑﺘﺪاءا ﻣﻦ ) ‪ ( 0‬واﻧﺘﻬﺎءا ﺑـ ) ‪ ( 3‬وﺳﻨﺒﻘﻰ‬
‫ﻣﺴﺘﻤﺮﯾﻦ وﻟﻦ ﻧﺨﺮج ﻣﻨﻬﺎ ﺣﺘﻰ ﻧﻨﺘﻬﻲ " أي ﻋﺪم ﺗﺤﻘﻖ اﻟﺸﺮط " ‪ .‬ﻓﺈذا ﺣﺼﻞ ذﻟﻚ ﻧﺨﺮج ﻣﻨﻬﺎ وﻧﻌﻮد ﻣﺮة أﺧﺮى‬
‫اﻟﻰ ﺣﻠﻘﺔ اﻟﺘﻜﺮار اﻟﺮﺋﯿﺴﯿﺔ ‪ .‬إذا ﻟﻨﺪﺧﻞ ﺑﺪاﺧﻠﻬﺎ ‪...‬‬
‫ﻓﻘﯿﻤﺔ ) ‪ ( j‬ﺗﺴﺎوي ) ‪ ( 0‬وﻫﻮ أﻗﻞ ﻣﻦ ) ‪ ( 4‬ﻓﻌﻼ ‪ .‬ﻓﻨﻨﺘﻘﻞ اﻟﻰ أﻣﺮ اﻟﻄﺒﺎﻋﺔ وﺑﺪاﺧﻠﻪ ) ]‪( arr[i][j‬‬

‫ﻟﻨﺤﻠﻠﻬﺎ ﺳﻮﯾﺎ ‪...‬‬

‫اﻻن ﻗﯿﻤﺔ ) ‪ ( i‬ﻟﺪﯾﻨﺎ ﻫﻲ ) ‪ ( 0‬واﻟـ ) ‪ ( j‬اﯾﻀﺎ ) ‪ ( 0‬إذا ) ]‪ ( arr[0][0‬ﻧﻌﻨﻲ ﺑﺬﻟﻚ اﻟﻤﻮﻗﻊ ) ‪ ( 0‬ﻓﻲ‬
‫اﻟﻤﺼﻔﻮﻓﺔ واﻟﻤﻮﻗﻊ ) ‪ ( 0‬ﻓﻲ اﻟﻤﺼﻔﻮﻓﺔ اﻟﺪاﺧﻠﯿﺔ ﻓﺎﻟـ ) ‪ ( i‬ﻋﺎدة ﺑﺎﻟﻤﺼﻔﻮﻓﺔ اﻟﺮﺋﯿﺴﯿﺔ أي اﻟﺘﻲ ﺗﻀﻢ ﺑﺪاﺧﻠﻬﺎ ﻋﻠﻰ‬
‫ﺛﻼﺛﺔ ﻣﺼﻔﻮﻓﺎت أﻣﺎ ) ‪ ( j‬ﻓﻬﻲ ﺧﺎﺻﺔ ﺑﺎﻟﻤﺼﻔﻮﻓﺔ اﻟﺪاﺧﻠﯿﺔ أي اﻟﻤﻮﺟﻮدة ﺑﺪاﺧﻞ اﻟﻤﺼﻔﻮﻓﺔ اﻟﺮﺋﯿﺴﯿﺔ ‪ .‬إذا ﺗﻮﺻﻠﻨﺎ‬
‫ﻟﻨﺘﯿﺠﺔ ‪...‬‬
‫أن ﺣﻠﻘﺔ اﻟﺘﻜﺮار اﻟﺮﺋﯿﺴﯿﺔ ﻫﻲ ﺧﺎﺻﺔ ﺑﺎﻟﻤﺼﻔﻮﻓﺔ اﻟﺮﺋﯿﺴﯿﺔ وﻣﻮاﻗﻌﻬﺎ ‪.‬‬
‫وﺣﻠﻘﺔ اﻟﺘﻜﺮار اﻟﺪاﺧﻠﯿﺔ ﺧﺎﺻﺔ ﺑﺎﻟﻤﺼﻔﻮﻓﺎت اﻟﺪاﺧﻠﯿﺔ وﻣﻮاﻗﻌﻬﺎ " أي اﻟﻤﺼﻔﻮﻓﺎت اﻟﺘﻲ ﺑﺪاﺧﻞ اﻟﻤﺼﻔﻮﻓﺔ اﻟﺮﺋﯿﺴﯿﺔ‬
‫"‪.‬‬

‫اﻻن ﻟﺪﯾﻨﺎ ) ]‪ ( arr[0][0‬اذا ﯾﺠﺐ اﻟﺬﻫﺎب اﻟﻰ اﻟﻤﻮﻗﻊ ) ‪ ( 0‬ﻓﻲ اﻟﻤﺼﻔﻮﻓﺔ اﻟﺮﺋﯿﺴﯿﺔ واﻟﻤﻮﻗﻊ ) ‪ ( 0‬ﻓﻲ‬
‫اﻟﻤﺼﻔﻮﻓﺔ اﻟﺪاﺧﻠﯿﺔ اﻟﻤﻮﺟﻮدة ﻓﻲ اﻟﻤﻮﻗﻊ ) ‪ (0‬ﻓﻲ اﻟﻤﺼﻔﻮﻓﺔ اﻟﺮﺋﯿﺴﯿﺔ ﻓﻬﻨﺎ ﯾﻄﺒﻊ اﻟﺮﻗﻢ ) ‪ ( 1‬ﻓﻨﻌﻮد ﻣﺮة أﺧﺮى‬
‫اﻟﻰ ﺣﻠﻘﺔ اﻟﺘﻜﺮار اﻟﺪاﺧﻠﯿﺔ وﻗﯿﻤﺔ ) ‪ ( j‬أﺻﺒﺤﺖ ) ‪ " ( 1‬أي ﺑﻌﺪ اﻟﺰﯾﺎدة " ﻓﯿﺴﺄﻟﻨﺎ اﻟﺸﺮط ﻫﻞ ) ‪ ( 1‬أﻗﻞ ﻣﻦ‬
‫) ‪ ( arr[0].length‬أي ﻫﻞ ) ‪ ( 1‬أﻗﻞ ﻣﻦ ) ‪ ( 0‬ﻃﺒﻌﺎ ﯾﺘﺤﻘﻖ اﻟﺸﺮط اذا ﺳﻮف ﯾﺪﺧﻞ اﻟﻰ اﻟﺤﻠﻘﺔ ﻓﯿﻄﺒﻊ‬
‫) ]‪ ( arr[0][1‬وﺗﻌﻨﻲ ذﻟﻚ اﻃﺒﻊ ﻣﺎ ﯾﺤﻮﯾﻪ اﻟﻤﻮﻗﻊ ) ‪ ( 0‬ﻣﻦ اﻟﻤﺼﻔﻮﻓﺔ اﻟﺮﺋﯿﺴﯿﺔ واﻟﻤﻮﻗﻊ ) ‪ ( 1‬ﻓﻲ اﻟﻤﺼﻔﻮﻓﺔ‬
‫اﻟﺪاﺧﻠﯿﺔ وﺑﺎﻟﺘﺎﻟﻲ ﺳﻮف ﯾﻄﺒﻊ اﻟﺮﻗﻢ ) ‪ ( 3‬وﺑﻌﺪ ذﻟﻚ ﯾﻌﻮد ﻣﺮة أﺧﺮى اﻟﻰ اﻟﺤﻠﻘﺔ اﻟﺪاﺧﻠﯿﺔ وﺗﻜﻮن ﻗﯿﻤﺔ ) ‪( j‬‬
‫أﺻﺒﺤﺖ ) ‪ ( 2‬ﻓﯿﺘﺤﻘﻖ اﻟﺸﺮط ﻻن ) ‪ ( 2‬أﻗﻞ ﻣﻦ ) ‪ ( 4‬ﻓﯿﻄﺒﻊ ﻗﯿﻤﺔ ) ]‪ ( arr[0][2‬واﻟﺘﻲ ﺗﻌﻨﻲ اﻟﻤﻮﻗﻊ ) ‪( 0‬‬
‫ﻣﻦ اﻟﻤﺼﻔﻮﻓﺔ اﻟﺮﺋﯿﺴﯿﺔ واﻟﻤﻮﻗﻊ ) ‪ ( 3‬ﻓﻲ اﻟﻤﺼﻔﻮﻓﺔ اﻟﺪاﺧﻠﯿﺔ ‪ ،‬ﻓﯿﺮﺟﻊ ﻣﺮة أﺧﺮى اﻟﻰ ﺣﻠﻘﺔ اﻟﺘﻜﺮار اﻟﺪاﺧﻠﯿﺔ وﻗﺪ‬
‫أﺻﺒﺤﺖ ) ‪ ( j‬ﺗﺴﺎوي ) ‪ ( 3‬ﺑﻌﺪ اﻟﺰﯾﺎدة ﻓﯿﺘﺤﻘﻖ اﻟﺸﺮط ﻓﻨﺪﺧﻞ اﻟﺤﻠﻘﺔ ﻓﯿﻄﺒﻊ ﻗﯿﻤﺔ ) ]‪ ( arr[0][3‬واﻟﺘﻲ‬
‫ﺗﻌﻨﻲ ‪..‬‬

‫‪٤٢‬‬
‫اﻟﻤﻮﻗﻊ ) ‪ ( 0‬ﻣﻦ اﻟﻤﺼﻔﻮﻓﺔ اﻟﺮﺋﯿﺴﯿﺔ واﻟﻤﻮﻗﻊ ) ‪ ( 3‬ﻣﻦ اﻟﻤﺼﻔﻮﻓﺔ اﻟﺪاﺧﻠﯿﺔ ‪ .‬أي أﻧﻪ ﺳﯿﻄﺒﻊ اﻟﺮﻗﻢ ) ‪ . ( 5‬ﻓﻨﻌﻮد‬
‫ﻣﺮة أﺧﺮى اﻟﻰ اﻟﺤﻠﻘﺔ اﻟﺪاﺧﻠﯿﺔ وﺗﻜﻮن ﻗﯿﻤﺔ ) ‪ ( j‬أﺻﺒﺤﺖ ) ‪ ( 4‬ﺑﻌﺪ اﻟﺰﯾﺎدة ﻓﯿﻔﺸﻞ اﻟﺸﺮط ﻻن ) ‪ ( 4‬ﻟﯿﺴﺖ أﻗﻞ‬
‫ﻣﻦ ) ‪ . ( 4‬ﻓﻨﺨﺮج ﻣﻦ اﻟﺤﻠﻘﺔ اﻟﺪاﺧﻠﯿﺔ وﻧﺬﻫﺐ اﻟﻰ أﻣﺮ ﻃﺒﺎﻋﺔ ) >‪ ( <br /‬أي اﻟﺒﺪء ﺑﺴﻄﺮ ﺟﺪﯾﺪ ‪ ...‬وﻧﻌﻮد‬
‫ﻟﺤﻠﻘﺔ اﻟﺘﻜﺮار اﻟﺮﺋﯿﺴﯿﺔ ‪ ،‬ﻓﺘﺼﺒﺢ ﻗﯿﻤﺔ ) ‪ ( i‬ﻫﻲ ) ‪ " ( 1‬أي ﺑﻌﺪ اﻟﺰﯾﺎدة ﻓﻘﺪ ﻛﺎﻧﺖ ) ‪ ( 0‬وﺑﻌﺪ اﻻﻧﺘﻬﺎء ﻣﻦ‬
‫اﻟﺪورة اﻻوﻟﻰ أﺻﺒﺤﺖ ) ‪ . ( 1‬ﻓﻨﻔﺤﺺ اﻟﺸﺮط اﻟﺬي ﻫﻮ " ﻫﻞ ) ‪ ( 1‬أﻗﻞ ﻣﻦ ) ‪ ( arr.length‬أي ﻫﻞ ﻫﻲ‬
‫أﺻﻐﺮ ﻣﻦ ) ‪ ... ( 3‬ﻓﯿﺘﺤﻘﻖ وﻧﺪﺧﻞ اﻟﻰ داﺧﻞ اﻟﺤﻠﻘﺔ اﻟﺪاﺧﻠﯿﺔ ﻓﻨﺒﺪأ ﺑـ ) ‪ ( j‬ﺗﺴﺎوي ) ‪ ( 0‬وﻧﻔﺤﺺ اﻟﺸﺮط واﻟﺬي‬
‫ﻫﻮ ﻫﻞ ) ‪ ( j‬أﻗﻞ ﻣﻦ ) ‪ ( arr[i].length‬واﻟﺬي ﻫﻮ ) ‪ ( arr[1].length‬وﺗﻌﻨﻲ ﻃﻮل اﻟﻤﻮﻗﻊ ) ‪ ( 1‬ﻓﻲ‬
‫اﻟﻤﺼﻔﻮﻓﺔ اﻟﺮﺋﯿﺴﯿﺔ وﺑﺎﻟﺘﺎﻟﻲ ﻓﻬﻮ ) ‪ ( 4‬ﻻن اﻟﻤﻮﻗﻊ رﻗﻢ ) ‪ ( 1‬ﻓﻲ اﻟﻤﺼﻔﻮﻓﺔ اﻟﺮﺋﯿﺴﯿﺔ ﯾﺤﺘﻮي ﻋﻠﻰ ﻣﺼﻔﻮﻓﺔ‬
‫ﺑﺪاﺧﻠﻬﺎ أرﺑﻌﺔ ﻋﻨﺎﺻﺮ ‪ .‬ﻓﯿﺼﺒﺢ اﻟﺸﺮط ) ‪ ( 0 < 4‬ﻓﻨﺪﺧﻞ ﺑﺪاﺧﻞ اﻟﺤﻠﻘﺔ ﻓﻨﻄﺒﻊ ﻗﯿﻤﺔ ) ]‪ ( arr[1][0‬أي ﻗﯿﻤﺔ‬
‫اﻟﻤﻮﻗﻊ رﻗﻢ ) ‪ ( 1‬ﻓﻲ اﻟﻤﺼﻔﻮﻓﺔ اﻟﺮﺋﯿﺴﯿﺔ واﻟﻤﻮﻗﻊ رﻗﻢ ) ‪ ( 0‬ﻓﻲ اﻟﻤﺼﻔﻮﻓﺔ اﻟﺪاﺧﻠﯿﺔ أي ﺳﻮف ﯾﻄﺒﻊ اﻟﺮﻗﻢ ) ‪( 7‬‬
‫ﺛﻢ ﻧﻌﻮد ﻣﺮة أﺧﺮى اﻟﻰ ﺣﻠﻘﺔ اﻟﺘﻜﺮار اﻟﺪاﺧﻠﯿﺔ وﺗﺼﺒﺢ ) ‪ ( j‬ﻗﯿﻤﺘﻬﺎ ) ‪ " ( 1‬أي ﺑﻌﺪ اﻟﺰﯾﺎدة " ﻓﯿﺘﺤﻘﻖ اﻟﺸﺮط‬
‫ﻓﻨﺪﺧﻞ ﺑﺤﻠﻘﺔ اﻟﺘﻜﺮار ﻓﻨﻄﺒﻊ ﻗﯿﻤﺔ ) ]‪ ( arr[1][1‬واﻟﺘﻲ ﺗﻌﻨﻲ اﻟﻤﻮﻗﻊ رﻗﻢ ) ‪ ( 1‬ﻓﻲ اﻟﻤﺼﻔﻮﻓﺔ اﻟﺮﺋﯿﺴﯿﺔ واﻟﻤﻮﻗﻊ‬
‫رﻗﻢ ) ‪ ( 1‬ﻓﻲ اﻟﻤﺼﻔﻮﻓﺔ اﻟﺪاﺧﻠﯿﺔ واﻟﺬي ﻫﻮ ) ‪ ( 9‬وﻧﻌﻮد ﻣﺮة أﺧﺮى اﻟﻰ ﺣﻠﻘﺔ اﻟﺘﻜﺮار اﻟﺪاﺧﻠﯿﺔ ﺑﻌﺪ أن اﺻﺒﺤﺖ‬
‫ﻗﯿﻤﺔ ) ‪ ( j‬ﻫﻲ ) ‪ ( 2‬ﻓﯿﺘﺤﻘﻖ اﻟﺸﺮط ﻓﻨﻄﺒﻊ ﻗﯿﻤﺔ ) ]‪ ( arr[1][2‬واﻟﺘﻲ ﻫﻲ ) ‪ ( 11‬ﻓﻨﻌﻮد ﻣﺮة أﺧﺮى اﻟﻰ‬
‫اﻟﺤﻠﻘﺔ اﻟﺪاﺧﻠﯿﺔ ﻟﺘﺼﺒﺢ ﻗﯿﻤﺔ ) ‪ ( j‬ﺗﺴﺎوي ) ‪ ( 3‬ﻓﯿﺘﺤﻘﻖ اﻟﺸﺮط وﻧﺪﺧﻞ ﺑﺪاﺧﻠﻬﺎ ﻓﯿﻄﺒﻊ ) ]‪ ( arr[1][3‬واﻟﺘﻲ ﻫﻲ‬
‫) ‪ ( 13‬ﻓﻨﻌﻮد ﻣﺮة أﺧﺮى ﻟﺤﻠﻘﺔ اﻟﺘﻜﺮار اﻟﺪاﺧﻠﯿﺔ ﻟﺘﺼﺒﺢ ) ‪ ( j‬ﻗﯿﻤﺘﻬﺎ ) ‪ ( 4‬ﻓﻼ ﯾﺘﺤﻘﻖ اﻟﺸﺮط " أي ﯾﻔﺸﻞ "‬
‫ﻓﻨﺨﺮج ﻣﻦ اﻟﺤﻠﻘﺔ اﻟﺪاﺧﻠﯿﺔ وﻧﺬﻫﺐ اﻟﻰ أﻣﺮ ) > ‪ ( <br /‬أي اﻟﺒﺪء ﺑﺴﻄﺮ ﺟﺪﯾﺪ ‪ ،‬ﺛﻢ ﻧﻌﻮد ﻣﺮة أﺧﺮى اﻟﻰ اﻟﺤﻠﻘﺔ‬
‫اﻟﺮﺋﯿﺴﯿﺔ ﻟﺘﺼﺒﺢ ﻗﯿﻤﺔ ) ‪ ( i‬ﻫﻲ ) ‪ ( 2‬ﻓﯿﺘﺤﻘﻖ اﻟﺸﺮط ﻓﻨﺪﺧﻞ ﺑﺪاﺧﻞ ﺣﻠﻘﺔ اﻟﺘﻜﺮار ﻓﻨﺬﻫﺐ اﻟﻰ ﺣﻠﻘﺔ اﻟﺘﻜﺮار‬
‫اﻟﺪاﺧﻠﯿﺔ ﻓﻨﺒﺪأ ﺑـ ) ‪ ( j‬ﺗﺴﺎوي ) ‪ ( 0‬وﯾﺼﺒﺢ اﻟﺸﺮط ) ‪ ( j < Arr[2].length‬ﻓﯿﺘﺤﻘﻖ اﻟﺸﺮط ﻟﺪﯾﻨﺎ ﻓﻨﺪﺧﻞ اﻟﻰ‬
‫ﺣﻠﻘﺔ اﻟﺘﻜﺮار اﻟﺪاﺧﻠﯿﺔ ﻓﻨﻄﺒﻊ ﻗﯿﻤﺔ ) ]‪ ( Arr[2][0‬واﻟﺘﻰ ﻫﻲ ) ‪ ( 15‬وﻫﻜﺬا ﺗﺴﺘﻤﺮ ﻣﻊ ﺑﻘﺎء ﻗﯿﻤﺔ ) ‪ ( i‬ﺛﺎﺑﺘﺔ‬
‫واﻟﺘﻰ ﻫﻲ ) ‪ ( 2‬وﻗﯿﻤﺔ ) ‪ ( j‬اﻟﺘﻰ ﺗﺰﯾﺪ ﺑﺄﺳﺘﻤﺮار ﺣﺘﻰ ﯾﻔﺸﻞ اﻟﺸﺮط ﻓﻨﺨﺮج ﻣﻦ ﺣﻠﻘﺔ اﻟﺘﻜﺮار اﻟﺪاﺧﻠﯿﺔ ﻓﻨﺬﻫﺐ‬
‫ﻟﻸﻣﺮ ) >‪ ( <br /‬أي اﻟﺒﺪء ﻓﻲ ﺳﻄﺮ ﺟﺪﯾﺪ ﺛﻢ ﻧﻌﻮد اﻟﻰ ﺣﻠﻘﺔ اﻟﺘﻜﺮار اﻟﺮﺋﯿﺴﯿﺔ ﻟﺘﺼﺒﺢ ) ‪ ( i‬ﻗﯿﻤﺘﻬﺎ ) ‪ " ( 3‬أي‬
‫ﺑﻌﺪ اﻟﺰﯾﺎدة " ﻓﯿﻔﺸﻞ اﻟﺸﺮط ﻓﺎﻟـ ) ‪ ( 3‬ﻟﯿﺴﺖ أﻗﻞ ﻣﻦ ) ‪ ( 3‬وﺑﺎﻟﺘﺎﻟﻲ ﻋﺪم اﻟﺪﺧﻮل ﻟﺘﻨﻔﯿﺬ ﻣﺎﺑﺪاﺧﻞ ﺣﻠﻘﺔ اﻟﺘﻜﺮار‬
‫اﻟﺮﺋﺴﯿﺴﺔ " أي ﺑﻤﻌﻨﻰ أﻧﻨﺎ ﻟﻦ ﻧﺪﺧﻞ اﻟﻰ ﺣﻠﻘﺔ اﻟﺘﻜﺮار اﻟﺪاﺧﻠﯿﺔ " إذا ﻫﻨﺎ ﻧﻜﻮن ﻗﺪ إﻧﺘﻬﯿﻨﺎ ﻣﻦ اﻟﻄﺒﺎﻋﺔ ﻓﻲ ﺣﻠﻘﺎت‬
‫اﻟﺘﻜﺮار اﻟﻤﺘﺪاﺧﻠﺔ واﻟﺼﻌﺒﺔ ﺑﺼﺮاﺣﺔ ‪. . .‬‬

‫وﺑﻌﺪ ﺧﺮوﺟﻨﺎ ﻣﻦ ﺣﻠﻘﺔ اﻟﺘﻜﺮار اﻟﺮﺋﯿﺴﯿﺔ ﻧﻐﻠﻖ اﻟﻮﺳﻢ ) >‪ ( </tt‬وﻫﻜﺬا ﻧﻜﻮن ﻗﺪ أﻧﻬﯿﻨﺎ اﻟﺒﺮﻧﺎﻣﺞ اﻟﺸﺎق ﻋﻠﯿﻨﺎ‬
‫وﻋﻠﯿﻚ ‪. .‬‬

‫ﻣﺜﺎل‪:‬‬
‫>‪<html‬‬
‫>‪</title‬اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ>‪<head><title‬‬
‫>"‪<script type = "text/javascript‬‬
‫‪var arr = [ [2,4] ,‬‬
‫‪[6] ,‬‬
‫; ] ]‪[8,10,12‬‬
‫)‪for (i=0 ; i< arr.length ; ++i‬‬
‫{‬
‫)‪for (j=0 ; j< arr[i].length ; ++j‬‬
‫;) " " ‪document.writeln( arr[i] [j] +‬‬
‫;) ">‪document.writeln( "<br /‬‬
‫}‬
‫>‪</script‬‬
‫>‪</head‬‬
‫>‪<body></body‬‬

‫>‪</html‬‬

‫‪٤٣‬‬
‫ﺗﺤﻠﯿﻞ ﻫﺬا اﻟﻤﺜﺎل ﻧﺘﺮﻛﻪ ﻟﻚ ‪ . .‬وإذا ﻟﻢ ﺗﺴﺘﻄﻊ ﺗﺤﻠﯿﻠﻪ ﺟﯿﺪا ﻓﻼ ﺗﺘﺮدد ﻓﻲ ﻣﺮاﺳﻠﺘﻲ ﻟﻤﺴﺎﻋﺪﺗﻚ ‪. .‬‬

‫ﻣﻼﺣﻈﺔ ‪:‬‬

‫) ‪.length ; ++i‬أﺳﻢ اﻟﻤﺼﻔﻮﻓﺔ <‪for (i=0 ; i‬‬


‫ﺗﻜﺎﻓﺊ‬
‫) أﺳﻢ اﻟﻤﺼﻔﻮﻓﺔ ‪for (var i in‬‬

‫‪-----------------------------------------------------------------------------‬‬

‫) ‪ [i]. length ; ++j‬أﺳﻢ اﻟﻤﺼﻔﻮﻓﺔ اﻟﺮﺋﯿﺴﯿﺔ <‪for ( var j=0 ; j‬‬


‫ﺗﻜﺎﻓﺊ‬
‫) ]‪ [i‬أﺳﻢ اﻟﻤﺼﻔﻮﻓﺔ اﻟﺮﺋﯿﺴﯿﺔ ‪for ( var j in‬‬

‫ﻫﻨﺎ ﺗﺴﺘﻄﯿﻊ أﺳﺘﺨﺪام أي ﺷﻜﻞ ﻟﺤﻠﻘﺔ اﻟﺘﻜﺮار ﻓﻲ اﻟﻤﺼﻔﻮﻓﺔ وﻟﻜﻦ أﻧﺎ أﻓﻀﻞ أن ﺗﺴﺘﺨﺪم اﻟﺸﻜﻞ اﻷول ‪ .‬واﻟﺬي‬
‫أﺳﺘﺨﺪﻣﻪ ﻓﻲ ﺑﺮاﻣﺠﻨﺎ اﻟﺴﺎﺑﻘﺔ ‪ .‬ﻓﻬﻮ أﻛﺜﺮ وﺿﻮﺣﺎ ﻟﻚ وﻟﻜﻦ ﻫﺬا رأﯾﻲ اﻟﺸﺨﺼﻲ وﻟﯿﺲ ﺑﺎﻟﻀﺮورة أن ﺗﻌﻤﻞ ﺑﻪ‬
‫ﻓﺎﻻﻣﺮ ﻣﺘﺮوك ﻟﻚ ‪.‬‬

‫‪٤٤‬‬
‫§ ‪: Math Object‬‬
‫وﻫﻲ ﻛﺎﺋﻨﺎت او ﻃﺮق اذا ﺟﺎز اﻟﺘﻌﺒﯿﺮ ﺗﻘﻮم ﺑﺎﻟﻌﻤﻠﯿﺎت اﻟﺤﺴﺎﺑﯿﺔ ‪ ..‬وﻃﺮﯾﻘﺔ اﺳﺘﺪﻋﺎﺋﻌﺎ او ﺗﻄﺒﯿﻘﻬﺎ ﺗﻜﻮن ﻋﻠﻰ‬
‫اﻟﺼﯿﻐﺔ اﻟﺘﺎﻟﯿﺔ ‪:‬‬
‫اول ﺷﻲء ذﻛﺮ اﺳﻢ ال ) ‪ ( Object‬ﺛﻢ ﻧﻘﻄﺔ ) ‪ ( dot‬ﺛﻢ ﺑﯿﻦ ﻗﻮﺳﯿﻦ ﯾﻮﺿﻊ ﻣﺎ ﻫﻮ ﻣﺮاد ﺣﺴﺎﺑﻪ ) ‪ .. ( 0‬واﺳﻢ‬
‫ال ) ‪ ( Object‬ﻫﻨﺎ ﻫﻮ ) ‪ ( Math‬ﻣﻦ ﻋﺒﺎرة " ‪ " mathematical calculation‬اي اﻟﻄﺮق‬
‫اﻟﺤﺴﺎﺑﯿﺔ " اذا ﺟﺎز اﻟﺘﻌﺒﯿﺮ " اذا اﻟﺼﯿﻐﺔ اﻟﻌﺎﻣﻪ ﻫﻨﺎ ﻫﻲ ‪:‬‬

‫) اﻟﺮﻗﻢ او اﻟﻤﺘﻐﯿﺮ( اﺳﻢ اﻟﻌﻤﻠﯿﺔ اﻟﺤﺴﺎﺑﯿﺔ‪Math .‬‬

‫ﻣﺜﺎل ‪:‬‬

‫)‪Math.sqrt(9‬‬

‫ﻫﻨﺎ ﻛﺎﻧﻨﺎ ﻧﻘﻮل ﻧﺮﯾﺪ اﻟﺠﺬر اﻟﺘﺮﺑﯿﻌﻲ ﻟﻠﻌﺪد ) ‪ ( 9‬اذا اﻟﺠﻮاب ﺳﻮف ﯾﻜﻮن ) ‪ ( 3‬وﻫﺬا ﻣﺎ ﺳﻮف ﯾﺨﺮﺟﻪ ﻟﻨﺎ‬
‫اﻟﺼﯿﻐﺔ اﻟﺴﺎﺑﻘﺔ‬

‫ﻣﻼﺣﻈﺔ ‪:‬‬
‫ﯾﺠﺐ ﻫﻨﺎ اﻻﻟﺘﺰام ﺑﺎﻟﺤﺮوف ﻣﻦ ﻛﺒﯿﺮه وﺻﻐﯿﺮه ﻓﺮﻛﺰ ﺣﺮف ال ) ‪ ( M‬ﯾﺎﺗﻲ ﺑﺎل ) ‪ ( capital letter‬اﻣﺎ‬
‫اﻟﺒﻘﯿﺔ ﺗﺄﺗﻲ ﻓﻲ ) ‪( Math ) .... ( small letter‬‬

‫ﻣﺜﺎل‬ ‫اﻟﻮﺻﻒ‬ ‫اﻟﻄﺮﯾﻘﺔ‬


‫‪abs(7.2) = 7.2‬‬ ‫)‪ abs(x‬اﻟﻘﯿﻤﺔ اﻟﻤﻄﻠﻘﺔ ﻟـ )‪(x‬‬
‫‪abs(0.0) = 0.0‬‬
‫‪abs(-5.6) = 5.6‬‬
‫‪ceil(9.2) = 10.0‬‬ ‫)‪ ceil(x‬اﻟﺘﻘﺮﯾﺐ ﻷﻛﺒﺮ ﻋﺪد ﺣﻘﯿﻘﻲ‬
‫‪ceil(-9.8) = -9.0‬‬
‫‪cos(0.0) = 1.0‬‬ ‫)‪ cos(x‬ﺟﯿﺐ اﻟﺘﻤﺎم )ﺟﺘﺎ( ﻟـ )‪(x‬‬
‫‪exp(1.0) = 2.71828‬‬ ‫)‪ exp (x‬ﻃﺮﯾﻘﺔ اﻷس )‪(ex‬‬
‫‪exp(2.0) = 7.38906‬‬
‫‪floor (9.2) = 9.0‬‬ ‫)‪ floor (x‬اﻟﺘﻘﺮﯾﺐ ﻷﺻﻐﺮ ﻋﺪد ﺣﻘﯿﻘﻲ‬
‫‪floor (-9.8) = -10.0‬‬
‫‪log (2.718282) = 1.0‬‬ ‫)‪ log (x‬ﻟﻮﻏﺎرﺛﻢ )‪(x‬‬
‫‪log (7.389056) = 2.0‬‬
‫‪max (2.3,9.7) = 9.7‬‬ ‫)‪ max (x,y‬أﻛﺒﺮ ﻗﯿﻤﺔ ﻣﻦ )‪ (x‬و )‪(y‬‬
‫‪max (-2.3,-9.7) = -2.3‬‬
‫‪min (2.3,9.7) = 2.3‬‬ ‫)‪ min (x,y‬أﺻﻐﺮ ﻗﯿﻤﺔ ﻣﻦ )‪ (x‬و )‪(y‬‬
‫‪min (-2.3,-9.7) = -9.7‬‬
‫‪pow(2.0,7.0) = 128.0‬‬ ‫)‪ (x) pow(x,y‬ﻣﺮﻓﻮع ﻟﻸس )‪ (y‬ﺗﻌﻨﻲ )‪(xy‬‬
‫‪pow(9.0,0.5) = 3.0‬‬
‫‪round(9.7) = 10‬‬ ‫)‪ round(x‬ﺗﻘﺮﯾﺐ )‪ (x‬ﻷﻗﺮب ﻋﺪد ﺣﻘﯿﻘﻲ‬
‫‪round(9.25) = 9‬‬
‫‪sin(0.0) = 0.0‬‬ ‫)‪ sin(x‬ﺟﯿﺐ )ﺟﺎ ( ﻟـ )‪(x‬‬
‫‪sqrt(900.0) = 30.0‬‬ ‫)‪ sqrt(x‬اﻟﺠﺬر اﻟﺘﺮﺑﯿﻌﻲ ﻟـ )‪(x‬‬
‫‪sqrt(9.0) = 3.0‬‬
‫‪tan(0.0) = 0.0‬‬ ‫)‪ tan(x‬ﻗﺘﺎ )‪(x‬‬

‫‪٤٥‬‬
‫ﻣﺜﺎل ‪:‬‬
‫>‪<html‬‬
‫>‪</title‬اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ>‪<head><title‬‬
‫>"‪<script type = "text/javascript‬‬

‫;))‪document.write(Math.sqrt(9‬‬
‫;)">‪document.write("<br /‬‬
‫;))‪document.write(Math.max(10,2‬‬
‫;)">‪document.write("<br /‬‬
‫;))‪document.write(Math.sin(1.0‬‬

‫>‪</script‬‬
‫>‪</head‬‬
‫>‪<body></body‬‬

‫>‪</html‬‬

‫ﺑﺸﻜﻞ ﻋﺎم ﻫﻜﺬا ﺗﻜﺘﺐ ال ) ‪ ( Math Object‬ﻓﻲ اﻟﺒﺮﻧﺎﻣﺞ اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ ‪..‬‬
‫ﻓﺠﻤﻠﺔ اﻟﻄﺒﺎﻋﺔ اﻻوﻟﻰ ﺳﻮف ﺗﻄﺒﻊ اﻟﺠﺬر اﻟﺘﺮﺑﯿﻌﻲ ﻟﻠﻌﺪد ) ‪ ( 9‬ﺛﻢ وﺿﻌﺖ ال ) >‪ ( <br /‬ﺑﻤﻔﺮده ﻓﻲ ﺟﻤﻠﺔ‬
‫ﻃﺒﺎﻋﺔ ﻟﻜﻲ ﻻ ﯾﺨﺘﻠﻂ ﻋﻠﯿﻚ اﻻﻣﺮ وذﻟﻚ ﻟﻜﻲ ﻧﻨﺰل ﺳﻄﺮا ﺟﺪﯾﺪا ﺛﻢ ﺗﺎﺗﻲ ﺟﻤﻠﺔ اﻟﻄﺒﺎﻋﺔ اﻟﺜﺎﻟﺜﺔ ﺗﻄﺒﻊ ﻟﻨﺎ اﻟﺮﻗﻢ‬
‫اﻻﻛﺒﺮ ﺑﯿﻦ اﻟﺮﻗﻤﯿﻦ اﻟﺬﯾﻦ وﺿﻌﻨﺎﻫﻤﺎ ﺛﻢ وﺿﻌﻨﺎ ﺟﻤﻠﺔ اﻟﻄﺒﺎﻋﺔ اﻟﺜﺎﻟﺜﺔ واﻟﺘﻲ ﻫﻲ ﻧﺰول ﺳﻄﺮ ﺟﺪﯾﺪ " ﺑﺪاﯾﺔ ﺳﻄﺮ‬
‫ﺟﺪﯾﺪ " ﺛﻢ وﺿﻌﻨﺎ ﺟﻤﻠﺔ اﻟﻄﺒﺎﻋﺔ اﻟﺮاﺑﻌﺔ واﻟﺘﻲ ﺳﻮف ﺗﻄﺒﻊ ﻟﻨﺎ ﺟﯿﺐ اﻟﺮﻗﻢ واﺣﺪ ‪...‬‬

‫ﻣﻼﺣﻈﺔ ‪:‬‬
‫ﻟﻮ اردت ان ﺗﻌﻤﻞ ﻣﻘﺎرﻧﻪ ﺑﯿﻦ ﺛﻼﺛﺔ ارﻗﺎم واﻟﺨﺮوج ﺑﺎﻻﻛﺒﺮ وﻗﺘﻬﺎ ﺗﻜﺘﺐ ﻫﻜﺬا ‪:‬‬

‫)‪Math.max(Math.max(4,5), 6‬‬
‫‪١‬‬
‫اﻟﺨﻄﻮة اﻻوﻟﻰ‬

‫ﻧﺨﺮج اﻻﻛﺒﺮ ﻣﻦ ﻫﻨﺎ‬


‫وﯾﻜﻮن رﻗﻢ ‪٥‬‬ ‫اﻟﺨﻄﻮة اﻟﺜﺎﻧﯿﺔ‬
‫‪٢‬‬

‫ﻧﻘﺎرن ﺑﯿﻦ‬
‫اﻟﺮﻗﻤﯿﻦ ‪ ٥‬و ‪٦‬‬

‫‪٤٦‬‬
‫ﻫﻨﺎ ﻛﺎﻧﻨﺎ ﻧﻘﻮل اﺧﺮج اﻟﺮﻗﻢ اﻻﻛﺒﺮ ﻓﻲ ال )‪ ( Math Object‬اﻟﺬي ﻓﻲ اﻟﺪاﺧﻞ اي ﺑﯿﻦ اﻟﺮﻗﻤﯿﻦ ) ‪ 4‬و ‪( 5‬‬
‫وﻣﻦ ﺛﻢ ﻃﺒﻖ ال ) ‪ ( Math Object‬اﻟﺬي ﻓﻲ اﻟﺨﺎرج وﻫﻮ ﺳﻮف ﯾﻜﻮن ﺑﯿﻦ اﻟﺮﻗﻤﯿﻦ ) ‪ ( 5‬اﻟﺬي ﺧﺮج ﻣﻦ ال‬
‫) ‪ ( Math Object‬اﻟﺘﻲ ﻓﻲ اﻟﺪاﺧﻞ وﺑﯿﻦ اﻟﺮﻗﻢ ) ‪ ( 6‬اﻟﺬي ﻓﻲ ال ) ‪ ( Math Object‬ﻓﻲ اﻟﺨﺎرج اي‬
‫اﻟﺮﺋﯿﺴﯿﺔ ‪..‬‬

‫اذا اردﻧﺎ ان ﻧﺨﺮج اﻟﺮﻗﻢ اﻻﻛﺒﺮ ﺑﯿﻦ ارﺑﻌﺔ ارﻗﺎم ﺗﻜﺘﺐ اﻟﺼﯿﻐﺔ ﻫﻜﺬا ‪:‬‬ ‫‪-‬‬
‫اي ﻫﻨﺎ ﻧﺎﺧﺬ ﻛﻞ ﻋﻤﻠﯿﺔ ﻋﻠﻰ ﺣﺪى وﻛﺎﻧﻬﺎ ﻟﻮﺣﺪﻫﺎ ‪...‬‬ ‫‪-‬‬

‫))‪Math.max(Math.max(4,5),Math.max(11,20‬‬

‫‪٢٠‬‬ ‫ﻧﺎﺗﺞ اﻟﻌﻤﻠﯿﺔ‬


‫‪٥‬‬ ‫رﻗﻢ ‪١‬‬

‫‪١‬‬ ‫ﻧﺎﺗﺞ اﻟﻌﻤﻠﯿﺔ‬


‫رﻗﻢ ‪٢‬‬
‫‪٢٠‬‬ ‫‪٢‬‬
‫ﻧﺎﺗﺞ اﻟﻌﻤﻠﯿﺔ‬
‫رﻗﻢ ‪٣‬‬

‫‪٣‬‬
‫ﺗﻤﺎرﯾﻦ إﺿﺎﻓﯿﺔ ﻋﻠﻰ اﻟﺪوال اﻟﺮﯾﺎﺿﯿﺔ ‪:‬‬ ‫§‬

‫اﻟﻘﯿﻤﺔ‬ ‫اﻟﻮﺻﻒ‬ ‫اﻟﺜﺎﺑﺖ‬


‫ﺗﻘﺮﯾﺒﺎ ﺗﺴﺎوي ‪2.718‬‬ ‫ﻗﯿﻤﺔ ﺛﺎﺑﺘﺔ‬ ‫‪Math.E‬‬
‫اﻟﻠﻮﻏﺎرﯾﺜﻢ اﻟﻄﺒﯿﻌﻲ ﻟـ )‪ (2‬ﺗﻘﺮﯾﺒﺎ ﺗﺴﺎوي ‪0.693‬‬ ‫‪Math.LN2‬‬
‫اﻟﻠﻮﻏﺎرﯾﺜﻢ ﻟﻄﺒﯿﻌﻲ ﻟـ )‪ (10‬ﺗﻘﺮﯾﺒﺎ ﺗﺴﺎوي ‪2.302‬‬ ‫‪Math.LN10‬‬
‫ﺗﻘﺮﯾﺒﺎ ﺗﺴﺎوي ‪1.442‬‬ ‫‪Math.LOG2E‬‬
‫ﺗﻘﺮﯾﺒﺎ ﺗﺴﺎوي ‪0.434‬‬ ‫‪Math.LOG10E‬‬
‫ﺗﻘﺮﯾﺒﺎ ﺗﺴﺎوي ‪3.141592653589793‬‬ ‫‪Math.PI‬‬
‫ﺗﻘﺮﯾﺒﺎ ﺗﺴﺎوي ‪0.707‬‬ ‫‪Math.SQRT1_2‬‬
‫ﺗﻘﺮﯾﺒﺎ ﺗﺴﺎوي ‪1.414‬‬ ‫اﻟﺠﺬر اﻟﺘﺮﺑﯿﻌﻲ ﻟـ )‪(2.0‬‬ ‫‪Math.SQRT2‬‬

‫‪: Methods of the String Object‬‬ ‫§‬

‫اﻟﻮﺻﻒ‬ ‫اﻟﻄﺮﯾﻘﺔ‬
‫ﯾﺮﺟﻊ اﻟﺤﺮف اﻟﻤﺤﺪد ﺑﺎﻟـ )‪(index‬‬ ‫)‪charAt(index‬‬
‫ﯾﺮﺟﻊ ﺷﯿﻔﺮة اﻟﺤﺮف اﻟﻤﺤﺪد ﺑﺎﻟـ )‪(index‬‬ ‫)‪charCodeAt(index‬‬
‫ﯾﺪﻣﺞ اﻟﻨﺺ اﻟﻤﺤﺪد ﻓﻲ اﻟـ )‪ (string‬اﻟﻤﺤﺪد ﻗﺒﻞ اﻻﻣﺮ‬
‫)‪ (concat‬ﻣﻊ اﻟﻨﺺ اﻟﻤﺤﺪد ﻓﻲ اﻟـ )‪ (string‬اﻟﺬي‬ ‫)‪concat(string‬‬
‫ﺑﯿﻦ اﻟﻘﻮﺳﯿﻦ اي اﻟﺬي ﺑﻌﺪ )‪(concat‬‬
‫ﯾﺤﻮل اﻻرﻗﺎم اﻟﻤﺤﺪدة ﺑﯿﻦ اﻻﻗﻮاس اﻟﻰ ﻗﯿﻤﺘﻬﺎ اﻟﺤﺮﻓﯿﺔ‬
‫‪fromCharCode(value1,value2‬‬
‫)…‪,‬‬
‫)‪ indexOf(substring,index‬اﻟﺒﺤﺚ ﻋﻦ اﻟﻨﺺ اﻟﻤﺤﺪدة ﻓﻲ )‪ (substring‬ﻣﻦ ﺑﻌﺪ‬
‫اﻟﻤﻮﻗﻊ رﻗﻢ )‪ (index‬ﻣﻦ اﻟﻨﺺ اﻟﻤﺤﺪد ﻓﻲ اﻟـ‬
‫)‪(string‬اﻟﻤﺤﺪد ﻗﺒﻞ اﻷﻣﺮ‪.‬‬
‫وﯾﺮﺟﻊ أول ﻣﻮﻗﻊ ﯾﺤﺘﻮي ﻋﻠﻰ أول ﺣﺮف ﻣﻦ اﻟﻨﺺ‬
‫اﻟﻤﺤﺪد ﻓﻲ )‪ (substring‬ﻣﻦ اﻟـ )‪(string‬‬
‫)‪ lastIndexOf(substring, index‬اﻟﺒﺤﺚ ﻋﻦ اﻟﻨﺺ اﻟﻤﺤﺪدة ﻓﻲ )‪ (substring‬ﻣﻦ ﻗﺒﻞ‬
‫اﻟﻤﻮﻗﻊ رﻗﻢ )‪ (index‬ﻣﻦ اﻟﻨﺺ اﻟﻤﺤﺪد ﻓﻲ اﻟـ‬

‫‪٤٧‬‬
‫)‪(string‬اﻟﻤﺤﺪد ﻗﺒﻞ اﻷﻣﺮ‪.‬‬
‫وﯾﺮﺟﻊ أول ﻣﻮﻗﻊ ﯾﺤﺘﻮي ﻋﻠﻰ أول ﺣﺮف ﻣﻦ اﻟﻨﺺ‬
‫اﻟﻤﺤﺪد ﻓﻲ )‪ (substring‬ﻣﻦ اﻟـ )‪(string‬‬
‫)‪ slice(start,end‬ﯾﺮﺟﻊ اﻟﻨﺺ ﻣﻦ اﻟﻤﻮﻗﻊ )‪ (start‬اﻟﻰ )‪ (end‬ﻣﻦ اﻟـ‬
‫)‪ (string‬اﻟﻤﺤﺪد ﻗﺒﻞ اﻷﻣﺮ‬
‫)‪ split(string‬ﺗﻘﺴﯿﻢ اﻟﻨﺺ اﻟﻤﺤﺪد ﻓﻲ )‪ (string‬اﻟﻰ ﻣﺠﻤﻮﻋﺔ‬
‫ﻛﻠﻤﺎت ﻧﺤﻦ ﻧﺤﺪد ﻛﯿﻔﯿﺘﻬﺎ ‪.‬‬

‫ﯾﺮﺟﻊ اﻟﻨﺺ اﻟﻤﺤﺪد ﻣﻦ اﻟﻤﻮﻗﻊ )‪ (start‬وﻋﺪد أﺣﺮﻓﻪ‬


‫)‪ (length) substr(start,length‬ﻣﻦ اﻟـ )‪ (string‬اﻟﻤﺤﺪد ﻗﺒﻞ اﻷﻣﺮ ‪.‬‬

‫ﯾﺮﺟﻊ اﻟﻨﺺ اﻟﻤﺤﺪد ﻣﻦ اﻟﻤﻮﻗﻊ )‪ (start‬اﻟﻰ اﻟﻤﻮﻗﻊ‬ ‫)‪substring(start,end‬‬


‫)‪(end‬‬
‫ﯾﺤﻮل اﻟـ )‪ (string‬اﻟﻤﺤﺪد ﻗﺒﻞ اﻷﻣﺮ اﻟﻰ ﺣﺮوف‬ ‫)(‪toLowerCase‬‬
‫اﻧﺠﻠﯿﺰﯾﺔ ﺻﻐﯿﺮة ‪.‬‬
‫ﯾﺤﻮل اﻟـ )‪ (string‬اﻟﻤﺤﺪد ﻗﺒﻞ اﻷﻣﺮ اﻟﻰ ﺣﺮوف‬ ‫)(‪toUpperCase‬‬
‫اﻧﺠﻠﯿﺰﯾﺔ ﻛﺒﯿﺮة ‪.‬‬
‫ﯾﺮﺟﻊ ﻧﻔﺲ اﻟـ اﻟﻨﺺ اﻟﻤﺤﺪد ﻓﻲ اﻟـ )‪(string‬‬ ‫)(‪toString‬‬
‫ﯾﺮﺟﻊ ﻧﻔﺲ اﻟـ اﻟﻨﺺ اﻟﻤﺤﺪد ﻓﻲ اﻟـ )‪(string‬‬ ‫)(‪valueOf‬‬
‫ﯾﻌﻤﻞ ﻋﻤﻞ )>‪(<a> name </a‬‬ ‫)‪anchor(name‬‬
‫ﯾﻌﻤﻞ ﻋﻤﻞ ) >‪(<blink>…</blink‬‬ ‫)(‪blink‬‬
‫ﯾﻌﻤﻞ ﻋﻤﻞ )>‪ (<tt>…</tt‬أي اﻟﻜﺘﺎﺑﺔ ﻋﻠﻰ ﺷﻜﻞ آﻟﺔ‬ ‫)(‪fixed‬‬
‫ﻃﺎﺑﻌﺔ‬
‫ﯾﻌﻤﻞ ﻋﻤﻞ )>‪(<a>…</a‬‬ ‫)‪link(url‬‬
‫ﯾﻌﻤﻞ ﻋﻤﻞ )> ‪ (<strick>…</strick‬أي ﯾﻀﻊ ﺧﻂ‬ ‫)(‪strike‬‬
‫ﻓﻲ وﺳﻂ اﻟﻜﻼم‬
‫ﯾﻌﻤﻞ ﻋﻤﻞ )>‪ (<sub>…</sub‬أي اﻟﻜﺘﺎﺑﺔ ﺗﺤﺖ‬ ‫)(‪sub‬‬
‫اﻟﺴﻄﺮ‬

‫)(‪ sup‬ﯾﻌﻤﻞ ﻋﻤﻞ )>‪ (<sup> … </sup‬أي اﻟﻜﺘﺎﺑﺔ ﻓﻮق‬


‫اﻟﺴﻄﺮ‬

‫ﻣﺜﺎل ‪:‬‬

‫>"‪<html dir="rtl‬‬
‫>‪</title‬اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ>‪<head><title‬‬
‫>"‪<script type = "text/javascript‬‬

‫;"‪var a ="samialr‬‬
‫;) )‪ " + a.charAt(0‬اﻃﺒﻊ اﻟﺤﺮف اﻟﻤﻮﺟﻮد ﻓﻲ اﻟﻤﻮﻗﻊ ﺻﻔﺮ >‪document.write("<p‬‬

‫>‪</script‬‬
‫>‪</head‬‬
‫>‪<body></body‬‬

‫>‪</html‬‬

‫‪٤٨‬‬
‫§ ‪ Date Object‬ﺧﺎﺻﻪ ﺑﺎﻟﻮﻗﺖ واﻟﺘﺎرﯾﺦ ‪:‬‬
‫وﻫﻲ ﻛﺎﺋﻨﺎت ﺧﺎﺻﻪ ﺑﺎﻟﻮﻗﺖ اي ﺗﻘﻮم ﺑﻌﻤﻠﯿﺎت ذات ﻋﻼﻗﻪ ﺑﺎﻟﻮﻗﺖ ﻣﻦ ﺟﻠﺐ ووﺿﻊ ‪.‬‬

‫ﻃﺮﯾﻘﺔ ﺗﻌﺮﯾﻔﻪ ‪:‬‬


‫) (‪var a = new Date‬‬

‫اﻟﻮﺻﻒ‬ ‫اﻟﻄﺮﯾﻘﺔ‬
‫ﯾﻌﻮد ﺑﺎﻻرﻗﺎم ﻣﻦ ‪ ١‬اﻟﻰ ‪ ٣١‬ﺣﺴﺐ اﻟﯿﻮم‬ ‫)(‪getDate‬‬
‫ﯾﻌﻮد ﺑﺎﻻرﻗﺎم ﻣﻦ ‪ ١‬اﻟﻰ ‪ ٣١‬ﺣﺴﺐ اﻟﯿﻮم‬ ‫)(‪getUTCDate‬‬
‫ﯾﻌﻮد ﺑﺎﻻرﻗﺎم ﻣﻦ ‪ " 0‬اﻷﺣﺪ " اﻟﻰ ‪ " 6‬اﻟﺴﺒﺖ "‬ ‫)(‪getDay‬‬
‫ﯾﻌﻮد ﺑﺎﻻرﻗﺎم ﻣﻦ ‪ " 0‬اﻷﺣﺪ " اﻟﻰ ‪ " 6‬اﻟﺴﺒﺖ "‬ ‫)(‪getUTCDay‬‬
‫ﯾﻌﻮد ﺑﺎﻟﺴﻨﺔ ﻣﻦ أرﺑﻌﺔ أرﻗﺎم‬ ‫)(‪getFullYear‬‬
‫ﯾﻌﻮد ﺑﺎﻟﺴﻨﺔ ﻣﻦ أرﺑﻌﺔ أرﻗﺎم‬ ‫)(‪getUTCFullYear‬‬
‫ﯾﻌﻮد ﺑﺎﻟﺴﺎﻋﺔ ﻣﻦ ‪ 0‬اﻟﻰ ‪23‬‬ ‫)(‪getHours‬‬
‫ﯾﻌﻮد ﺑﺎﻟﺴﺎﻋﺔ ﻣﻦ ‪ 0‬اﻟﻰ ‪23‬‬ ‫)(‪getUTSHours‬‬
‫ﯾﻌﻮد ﺑﺎﻟﻤﯿﻠﻲ ﺛﺎﻧﯿﺔ ﻣﻦ ‪ 0‬اﻟﻰ ‪999‬‬ ‫)(‪getMilliseconds‬‬
‫ﯾﻌﻮد ﺑﺎﻟﻤﯿﻠﻲ ﺛﺎﻧﯿﺔ ﻣﻦ ‪ 0‬اﻟﻰ ‪999‬‬ ‫)(‪getUTCMilliSecond‬‬
‫ﯾﻌﻮد ﺑﺎﻟﺪﻗﯿﻘﺔ ﻣﻦ ‪ 0‬اﻟﻰ ‪59‬‬ ‫)(‪getMinutes‬‬
‫ﯾﻌﻮد ﺑﺎﻟﺪﻗﯿﻘﺔ ﻣﻦ ‪ 0‬اﻟﻰ ‪59‬‬ ‫)(‪getUTCMinutes‬‬
‫ﯾﻌﻮد ﺑﺎﻟﺸﻬﺮ ﻣﻦ ‪" 0‬ﯾﻨﺎﯾﺮ" اﻟﻰ ‪ " 11‬دﯾﺴﻤﺒﺮ"‬ ‫)(‪getMonth‬‬
‫ﯾﻌﻮد ﺑﺎﻟﺸﻬﺮ ﻣﻦ ‪" 0‬ﯾﻨﺎﯾﺮ" اﻟﻰ ‪ " 11‬دﯾﺴﻤﺒﺮ"‬ ‫)(‪getUTCMonth‬‬
‫ﯾﻌﻮد ﺑﺎﻟﺜﺎﻧﯿﺔ ﻣﻦ ‪ 0‬اﻟﻰ ‪59‬‬ ‫)(‪getSeconds‬‬
‫ﯾﻌﻮد ﺑﺎﻟﺜﺎﻧﯿﺔ ﻣﻦ ‪ 0‬اﻟﻰ ‪59‬‬ ‫)(‪getUTCSeconds‬‬
‫ﺳﻮف ﻧﺸﺮح ﺑﻌﺾ ﻣﻨﻬﺎ اﺛﻨﺎء اﻟﻤﺜﺎل وﻫﺬا ﻟﻜﻲ ﺗﺼﻠﻚ ﺑﺸﻜﻞ اﻓﻀﻞ وﻣﺎ ﯾﻄﺒﻖ ﻋﻠﻰ اﻟﺒﻌﺾ ﯾﻄﺒﻖ ﻋﻠﻰ‬
‫اﻟﺒﻘﯿﺔ ‪..‬‬
‫)‪setDate(val‬‬
‫)‪setUTCDate(val‬‬
‫)‪setFullYear(y,m,d‬‬
‫)‪setUTCFullYear(y,m,d‬‬
‫)‪setHours(h,m,s,ms‬‬
‫)‪setUTCHours(h,m,s,ms‬‬

‫‪٤٩‬‬
‫)‪setMilliSeconds(ms‬‬
‫)‪setUTCMilliSeconds(ms‬‬
‫)‪setMinutes(m,s,ms‬‬
‫)‪setUTCMinutes(m,s,ms‬‬
‫)‪setMonth(m,d‬‬
‫)‪setUTCMonth(m,d‬‬
‫)‪setSeconds(s,ms‬‬
‫)‪setUTCSeconds(s,ms‬‬
‫)‪setTime(ms‬‬
‫ﯾﻌﻮد ﺑﺎﻟﻮﻗﺖ واﻟﺘﺎرﯾﺦ ﺑﺎﻟﺘﻔﺼﯿﻞ‬ ‫)(‪toLocaleString‬‬
‫ﯾﻌﻮد ﺑﺎﻟﻮﻗﺖ واﻟﺘﺎرﯾﺦ ﺑﺎﻟﺘﻔﺼﯿﻞ‬ ‫)(‪toUTCString‬‬

‫ﻟﻨﺘﻌﺮف ﻛﯿﻒ ﻧﺘﻌﺎﻣﻞ ﻣﻊ ﻣﺎذﻛﺮﻧﺎه ﻓﻲ اﻟﺠﺪول ‪:‬‬

‫وﻟﻜﻦ ﻗﺒﻞ ذﻟﻚ ﻟﻨﺄﺧﺬ ﻓﻜﺮة ﺳﺮﯾﻌﺔ ﻋﻦ ﻣﺎﻫﻮ اﻟﻤﺘﻐﯿﺮ اﻟﻨﺼﻲ اﻟﺘﺎﻟﻲ ) ‪. ( string‬‬

‫ﺻﯿﻐﺘﻪ ‪:‬‬

‫; " ‪var a = " thamer‬‬

‫أي ﺗﻌﺮف ﻣﺘﻐﯿﺮ ) ‪ ( a‬وﻧﻀﻊ ﺑﺪاﺧﻠﻪ ﻧﺺ وﻟﻜﻲ ﺗﺨﺒﺮ ان ﻫﺬا ﻧﺺ ﻧﻀﻌﻪ ﺑﯿﻦ ) " ( ‪.‬‬

‫ﻣﻼﺣﻈﺎت ﻋﻠﻰ ﻫﺬا اﻟﻤﺘﻐﯿﺮ ‪:‬‬

‫‪ -١‬أي ﺷﻲ ﯾﺴﻨﺪ ﻟﻠﻤﺘﻐﯿﺮ وﯾﻜﻮن ﺑﯿﻦ ) " ( ﺳﻮف ﻧﺄﺧﺬه ﻋﻠﻰ أﺳﺎس أﻧﻪ ﻧﺺ ﺣﺘﻰ ﻟﻮ ﻛﺎن رﻗﻢ ‪.‬‬

‫ﻣﺜﺎل ‪:‬‬
‫; " ‪var a = " 123‬‬

‫ﻫﺬا ﻻﻧﺄﺧﺬه ﻛﻘﯿﻤﺔ رﻗﻤﯿﺔ إﻃﻼﻗﺎ ﺑﻞ ﻧﺺ ﻟﯿﺲ ﻟﻪ ﻗﯿﻤﺔ رﻗﻤﯿﺔ ‪.‬‬

‫ﻣﺜﺎل آﺧﺮ ‪:‬‬


‫; " ‪var a = "ab12‬‬

‫ﻫﺬا ﻋﺒﺎرة ﻋﻦ ﻧﺺ ﻛﯿﻒ ﻋﺮﻓﻨﺎ ذﻟﻚ ﻻن اﻟﺮﻗﻢ ﺟﺎء ﺑﯿﻦ ) " ( ﺣﺘﻰ اﻻﺣﺮف ‪.‬‬

‫‪ -٢‬اﻟﻌﻼﻣﺎت او اﻟﺮﻣﻮز إذا ﺟﺎﺋﺖ ﻓﻲ ال ) ‪ ( string‬ﺗﻌﺘﺒﺮ ﻧﺺ وأﯾﻀﺎ اﻟﻔﺮاغ ﯾﻌﺘﺒﺮ ﺣﺮف إذا ﺟﺎز اﻟﺘﻌﺒﯿﺮ ‪.‬‬

‫ﻣﺜﺎل ‪:‬‬
‫; " @‪var a = "ab c12‬‬

‫ﻫﺬى اﻟﻤﺴﺎﻓﺔ ﺗﻌﺘﺒﺮ ﺣﺮف )" @( أي أﻧﻬﺎ ﺗﺄﺧﺬ ﻣﻮﻗﻊ ﻓﻲ ال ) ‪ ( Memory‬ﻫﻮ ﻣﻮﻗﻊ اﻟﺴﺎدس إﺑﺘﺪاﺋﺎ ﻣﻦ‬
‫اﻟﺼﻔﺮ ‪.‬‬

‫إذا ﻟﻨﻨﺘﻘﻞ اﻷن اﻟﻰ ﻛﯿﻔﯿﺔ اﻟﺘﻌﺎﻣﻞ ﻣﻊ ﻣﺎذﻛﺮﻧﺎه ﺑﺎﻟﺠﺪول ‪.‬‬

‫‪٥٠‬‬
‫ﺻﯿﻐﺔ ﻛﺘﺎﺑﺘﻬﺎ ‪:‬‬

‫ﺑﻤﺎ أﻧﻨﺎ ﻧﺘﺤﺪث ﻋﻦ ﻃﺮق ﺗﻄﺒﻖ ﻋﻠﻰ اﻟﻜﺎﺋﻨﺎت اﻟﻨﺼﯿﺔ إذا ﯾﺠﺐ أن ﻧﻜﻮن ﻟﺪﯾﻨﺎ ﻣﺘﻐﯿﺮ ﻧﺼﻲ أي ) ‪( string‬‬
‫ﻟﻨﺠﺮي ﻋﻠﯿﻪ ﻣﺎﻧﺮﯾﺪ ﻣﻦ اﻟﻄﺮق ﺳﺎﻟﻔﺔ اﻟﺬﻛﺮ ﻓﻲ اﻟﺠﺪول إذا ‪:‬‬

‫‪ -١‬ﻧﻌﺮف أول ﺷﻲ ﻣﺘﻐﯿﺮ ﻧﺼﻲ ) ‪.( string‬‬


‫; " ‪var a = " Javascript‬‬

‫‪ -٢‬اﻷ ن ﻧﻄﺒﻖ ﻋﻠﯿﻪ ال ) ‪ ( Methods‬ﻛﯿﻒ ذﻟﻚ ‪:‬‬

‫ﻫﻨﺎ ﺗﻜﻮن اﻟﺼﯿﻐﺔ اﻟﺘﻰ ﺗﺮﯾﺪ أن ﺗﻄﺒﻘﻬﺎ ﻋﻠﻰ اﻟﻨﺺ ‪.‬‬

‫ﻣﺜﺎل ‪:‬‬

‫) ذﻛﺮ اﻟﻔﻬﺮس أو اﻟﻤﺘﻐﯿﺮ أو اﻟﻨﺺ أو اﻟﻘﯿﻤﺔ ( أﺳﻢ اﻟﻄﺮﯾﻘﺔ ‪ .‬أﺳﻢ اﻟﻤﺘﻐﯿﺮ اﻟﻨﺼﻲ ) ‪.( string‬‬

‫ﻟﻨﺄﺧﺬ ﺷﻜﻼن وﻧﺮى ‪:‬‬

‫‪ -١‬ﻧﻌﺮف ﻣﺘﻐﯿﺮ ﻧﺼﻲ‬


‫; " ‪var a = "Javascript‬‬

‫‪ -٢‬ﻧﻀﯿﻒ اﻟـ ) ‪( Methods of the string object‬‬

‫)‪a . substring(0,4‬‬

‫أﺧﺒﺮﻧﺎه أﻧﻨﺎ ﻧﺮﯾﺪ أن ﯾﻄﺒﻊ ﻟﻨﺎ أﺣﺮف ﻣﻦ اﻟﻤﻮﻗﻊ ﺻﻔﺮ ﻣﻦ اﻟﻤﺘﻐﯿﺮ اﻟﻨﺼﻲ ) ‪ ( a‬ﺑﻄﻮل ) ‪ ( 4‬أي أﻃﺒﻊ‬
‫اﻟﺤﺮوف ﻓﻲ اﻟﻤﻮﻗﻊ ) ‪ 0‬و ‪ 1‬و ‪ 2‬و ‪ ( 3‬إذا ﺳﻮف ﯾﻄﺒﻊ ﺧﻤﺴﺔ أﺣﺮف‪ ...‬وﻫﻲ ) ‪.( Java‬‬

‫ﻟﻨﺄﺧﺬ اﻟﺸﻜﻞ اﻻﺧﺮ اﻻن ‪:‬‬ ‫•‬

‫‪ -١‬ﻧﻌﺮف ﻣﺘﻐﯿﺮ ﻧﺼﻲ‬


‫; " ‪var a = "Javascript‬‬

‫‪ -٢‬ﻧﻀﯿﻒ اﻟـ ) ‪( Methods of the string object‬‬

‫)‪a . toUpperCase(0,4‬‬

‫وﻓﻲ ﻫﺬه اﻟﺤﺎﻟﺔ ﺳﻮف ﯾﻄﺒﻊ ﻟﻨﺎ ﻛﻠﻤﺔ ) ‪ ( javascript‬وﻟﻜﻦ ﺑﻌﺪ ﺗﺤﻮﯾﻞ اﺣﺮﻓﻬﺎ اﻟﻰ اﻷﺣﺮف اﻻﻧﺠﻠﯿﺰﯾﺔ‬
‫اﻟﻜﺒﯿﺮه اذا ﺳﻮف ﺗﻈﻬﺮ ﻟﻨﺎ ﺑﻌﺪ ﻃﺒﺎﻋﺘﻬﺎ ﺑﺎﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ ) ‪( JAVASCRIPT‬‬

‫ﻗﺪ ﺗﺘﺴﺎﺋﻞ ﻟﻤﺎذ ﻟﻢ ﻧﻀﻊ ﺑﻌﺪ ) ‪ ( toUpperCase‬ﻗﯿﻤﺔ ﺑﺪاﺧﻞ اﻟﻘﻮﺳﯿﻦ ﻋﺰﯾﺰي اﻟﻤﺘﺪرب ﻓﻲ اﻟﺒﺪاﯾﺔ أﺧﺒﺮﺗﻚ‬
‫أﻧﻚ ﺗﻀﻊ إذا ﺗﻄﻠﺐ ذﻟﻚ ‪ ..‬وﻟﻜﻦ ﯾﻮﺟﺪ ﻃﺮق ﻻﯾﺴﺘﻠﺰم وﺟﻮد ﻗﯿﻤﺔ أي ﻋﻠﯿﻚ اﻻﻟﺘﺰام ﺑﺎﻟﺠﺪول‪ ..‬ﻣﻨﻬﺎ ﻣﺜﻼ ‪:‬‬

‫ﻧﺮﯾﺪ ﻓﻘﻂ أن ﻧﺠﻌﻞ اﻟﻨﺺ ﯾﺒﺪو ﺑﺎﻟﺤﺮوف اﻟﻜﺒﯿﺮة إذا ﻛﻞ اﻟﺬي ﻋﻠﯿﻨﺎ ذﻛﺮه أﺳﻢ اﻟﻤﺘﻐﯿﺮ اﻟﻨﺼﻲ وﻧﻘﻄﺔ ﺛﻢ ﻛﻠﻤﺔ‬
‫) ‪ ( toUpperCase‬إذا ﻓﻲ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ ﺑﻤﺎ أﻧﻨﺎ ﻧﺮﯾﺪ أن ﻧﻘﻮل أﻧﻨﺎ ﻧﺮﯾﺪ أن ﻧﺠﻌﻞ اﻟﻤﺘﻐﯿﺮ اﻟﻨﺼﻲ ) ‪( a‬‬
‫ﯾﻄﺒﻊ وﻟﻜﻦ ﻟﯿﺲ ﺑﻜﻞ أﺣﺮﻓﻪ ﺑﻞ ﺗﺮﯾﺪ أن ﯾﻄﺒﻊ ﻟﻨﺎ أرﺑﻊ أﺣﺮف ﺑﺪاﯾﺔ ﻣﻦ اﻟﻤﻮﻗﻊ ﺻﻔﺮ إذا ﻫﻨﺎ ﻧﺤﻦ ﺑﺤﺎﺟﺔ اﻟﻰ أﺳﻢ‬

‫‪٥١‬‬
‫اﻟﻤﺘﻐﯿﺮ اﻟﻨﺼﻲ وﺛﺎﻧﻲ ﺷﻲ ﻣﻦ أي ﻣﻮﻗﻊ ﯾﺒﺪأ اﻟﻌﺪ إذا ﻫﻨﺎ ﯾﺠﺐ أن ﻧﺬﻛﺮ ﺻﻔﺮ ﺛﻢ ﯾﺠﺐ أن ﻧﻜﺘﺐ ﻛﻢ ﻃﻮل اﻟﺬي‬
‫ﻧﺮﯾﺪه ﻣﻦ اﻟﻤﻮﻗﻊ ﺻﻔﺮ إذا ﻫﻨﺎ ﻧﺬﻛﺮ ) ‪ ( 4‬أي أرﺑﻊ ﺧﻄﻮات ﺑﺪاﯾﺔ ﻣﻦ اﻟﺼﻔﺮ ‪.‬‬
‫>"‪<html dir="rtl‬‬
‫>‪</title‬اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ>‪<head><title‬‬
‫>"‪<script type = "text/javascript‬‬
‫;" ‪var a = " samialr‬‬
‫;" ‪var b = " name‬‬
‫;))‪" + a.charAt (0‬ﺳﻮف ﯾﻄﺒﻊ اﻟﺤﺮف اﻟﺬي ﻓﻲ اﻟﻤﻮﻗﻊ ﺻﻔﺮ >‪document.writeln("<p‬‬
‫;) )( ‪ " + a.toUpperCase‬ﺳﻮف ﯾﻄﺒﻊ اﻟﻜﻠﻤﺔ اﻟﺘﻲ ﻓﻲ اﻟﻤﺘﻐﯿﺮ ﺑﺄﺣﺮف ﻛﺒﯿﺮة>‪document.writeln("<p‬‬
‫;) )‪ " + b.concat (a‬دﻣﺞ اﻟﻤﺘﻐﯿﺮﯾﻦ اﻟﻨﺼﯿﯿﻦ ﻟﯿﺼﺒﺢ ﻧﺺ واﺣﺪ >‪document.writeln("<p‬‬
‫>‪</script‬‬
‫>‪</head‬‬
‫>‪<body></body‬‬

‫>‪</html‬‬

‫ﻓﻲ ﻫﺬا اﻟﻤﺜﺎل ﻟﻦ ﻧﺤﺘﺎج ﻟﻨﺸﺮﺣﻪ ﻟﻚ ﻻن ﺷﺮح ﻛﻞ اﻣﺮ او ﺧﻄﻮه ﻣﻮﺟﻮد داﺧﻞ ﺟﻤﻠﺔ اﻟﻄﺒﺎﻋﺔ ﻣﺎ ﻋﻠﯿﻚ ﺳﻮى‬
‫ﻗﺮاءة اﻟﻤﺜﺎل وﺗﻄﺒﯿﻘﻪ وﻓﻬﻢ ﻣﺎ ﺗﺤﺘﻮﯾﻪ ﺟﻤﻞ اﻟﻄﺒﺎﻋﺔ ﻣﻦ اواﻣﺮ وﺷﺮح ‪.‬‬

‫ﻛﯿﻔﯿﺔ اﻟﺘﻌﺎﻣﻞ ﻣﻊ ) ‪ ( Date object‬أي ﻛﺎﺋﻦ اﻟﺘﺎرﯾﺦ واﻟﻮﻗﺖ إذا ﺟﺎز اﻟﺘﻌﺒﯿﺮ ‪ .‬ﻫﻨﺎ ﺗﺨﺼﺺ اﻟﻜﺎﺋﻦ‬ ‫•‬
‫) ‪ ( Date‬ووﺿﻊ ﻓﻲ ﻣﺘﻐﯿﺮ ﻣﻌﯿﻦ وﻣﻦ ﺛﻢ ﺗﻄﺒﯿﻘﻪ ﻋﻠﻰ اﻟﻤﺘﺼﻔﺢ ﺑﺨﺎﺻﯿﺔ أو ﺑﻄﺮﯾﻘﺔ ﻣﻦ اﻟﺨﻮاص اﻟﺘﻲ‬
‫ذﻛﺮﻧﺎه ﻓﻲ اﻟﺠﺪول‪،‬‬

‫إذا ﻛﯿﻔﯿﺔ ﻛﺘﺎﺑﺘﻬﺎ ‪:‬‬ ‫•‬


‫‪ -١‬ﻧﻌﺮف ﻣﺘﻐﯿﺮ ﻧﻀﻊ ﺑﻪ اﻟﻜﺎﺋﻦ ) ‪ ( Date‬ﺑﻬﺬا اﻟﺸﻜﻞ ‪:‬‬
‫;)(‪var d = new Date‬‬

‫‪ -٢‬ﻧﻄﺒﻖ ﻣﺎﻧﺮﯾﺪه ﻣﻦ اﻟﺨﻮاص أو اﻟﻄﺮق اﻟﻤﺬﻛﻮره ﻓﻲ اﻟﺠﺪول ﻋﻠﻰ ﻫﺬا اﻟﻤﺘﻐﯿﺮ اﻟﺬي وﺿﻌﻨﺎه ‪.‬‬
‫‪d.getDay() +1‬‬

‫اﻟﺨﺎﺻﯿﺔ اﻟﻤﻄﻠﻮب ﺗﻄﺒﯿﻘﻬﺎ ‪ -‬وﻫﻨﺎ ﻧﺮﯾﺪ ان ﯾﻄﺒﻊ ﻟﻨﺎ اﻟﯿﻮم‬


‫اﻟﺬي ﺳﻮف ﯾﻄﺒﻌﻪ ﻟﻨﺎ ﺑﺎﻷرﻗﺎم‬
‫إﺳﻢ اﻟﻤﺘﻐﯿﺮ اﻟﺬي ﺧﺼﺼﻨﺎ ﻟﻪ‬
‫اﻟﻜﺎﺋﻦ ‪Date‬‬

‫‪٥٢‬‬
‫ﻣﻼﺣﻈﺔ ‪:‬‬

‫وﺿﻌﻨﺎ ) ‪ ( 1+‬ﻻﻧﻪ ﯾﻄﺒﻊ ﻟﻨﺎ اﻟﯿﻮم ﻣﻦ ‪ ٠‬اﻟﻰ ‪ ٦‬وﻟﻜﻨﻨﺎ ﻧﺮﯾﺪه ﻣﻦ ‪ ١‬اﻟﻰ ‪٧‬‬
‫وﻟﻜﻦ اﻟﺬي ﻃﺒﻘﻨﺎ ﻋﻠﯿﻪ اي اﻟﻜﺎﺋﻦ ﻫﻮ اﻟﺨﺎص ﺑﺎﻟﻄﺮق ) ‪ ( get‬ﻣﺜﻞ ) )(‪ ( getDate‬او ) )(‪( getMonth‬‬
‫وﻫﻜﺬا ‪...‬‬
‫وﻟﻜﻦ ﻣﺎذا ﻋﻦ ) ‪ ( set‬ﻣﺜﻞ ) )‪ ( setDate(value‬او ) )‪ ... ( setMonth(m,d‬اﻟﺦ‬

‫أﻗﺼﺪ ﺑﻬﺎ اﻟﻘﯿﻤﺔ اﻟﺘﻲ‬


‫ﺳﻮف ﺗﺤﺪدﻫﺎ اﻧﺖ ﻟﺘﻤﺜﻞ‬ ‫أﻗﺼﺪ ﺑﻬﺎ ﻗﯿﻤﺔ اﻧﺖ ﺗﺤﺪدﻫﺎ‬
‫اﻟﺸﻬﺮ‬ ‫ﻟﺘﻤﺜﻞ اﻟﯿﻮم‬

‫وﻫﻜﺬا إذا ﻫﻨﺎ ﻗﺪ ﻧﺤﺘﺎج ان ﻧﺨﺒﺮ اﻟﻤﺘﺼﻔﺢ ﺑﺎن ﯾﺤﻀﺮ ﻟﻨﺎ اﻟﺸﻬﺮ ﻣﻦ اﻟﺠﻬﺎز وﯾﻄﺒﻌﻪ ﻟﻨﺎ ﻣﺜﻞ ) ‪( getMonth‬‬
‫ﻫﺬا ﯾﻌﻨﻲ أن ﻧﻘﻮل ﻟﻠﻤﺘﺼﻔﺢ أﻃﺒﻊ ﻟﻨﺎ اﻟﺸﻬﺮ ﺑﻌﺒﺎرة أﺧﺮى ) ‪ ( get‬ﻛﺄﻧﻨﺎ ﻧﻘﻮل أﺣﻀﺮ اﻟﺸﻬﺮ ﻣﻦ اﻟﺠﻬﺎز‬
‫اﻟﺤﺎﺳﻮب وأﻃﺒﻌﻪ ﻟﻨﺎ ‪.‬‬

‫أﻣﺎ ﻟﻮ أردﻧﺎ ﻧﺤﻦ أن ﻧﻀﻊ اﻟﺸﻬﺮ اﻟﺬي ﻧﺮﯾﺪه وﻟﯿﺲ اﻟﻤﻮﺟﻮد ﺑﺠﻬﺎز اﻟﺤﺎﺳﻮب ﻋﻨﺪﻫﺎ ﻧﻜﺘﺐ‬
‫) )‪ ( setMonth(2,1‬وﺧﺎﺻﯿﺔ أو ﻃﺮﯾﻘﺔ ) )‪ ( setMonth(m,d‬ﻧﻀﻊ ﺑﺪاﺧﻠﻬﺎ ﻗﯿﻤﺘﯿﻦ ﻛﻤﺎ ﻋﺮﻓﻨﺎﻫﺎ‬
‫ﻓﻲ اﻟﺠﺪول ‪ ...‬ﻗﯿﻤﺔ ﻟـ ) ‪ ( m‬وﺗﻌﻨﻲ ﻗﯿﻤﺔ رﻗﻢ اﻟﺸﻬﺮ اﻟﻤﻄﻠﻮب وﻗﯿﻤﺔ ﻟـ ) ‪ ( d‬وﺗﻌﻨﻲ ﻟﻨﺎ اﻟﯿﻮم ﻣﺜﻞ ﻟﻮ وﺿﻌﻨﺎ‬
‫) ‪ ( 1‬ﻧﻌﻨﻲ ﺑﻪ ﯾﻮم اﻷﺣﺪ وﺷﺮﯾﻄﺔ أن ﻧﻀﻊ ) ‪ ( 1+‬اﻟﺨﺎﺻﯿﺔ ﻻﻧﻨﺎ ذﻛﺮﻧﺎ ﺳﺎﺑﻘﺎ أﻧﻪ داﺋﻤﺎ ﻓﻲ اﻟﻜﺎﺋﻦ أو اﻟﺘﺎرﯾﺦ‬
‫ﯾﺒﺪأ ﻣﻦ اﻟﺼﻔﺮ و اﻟﺼﻔﺮ ﻫﻮ اﻟﺬي ﯾﻤﺜﻞ ﯾﻮم اﻻﺣﺪ ‪ .‬إذا ﻻﺣﻈﺖ أﻧﻪ ﻋﻨﺪﻣﺎ ﻧﻜﺘﺐ ) ‪ ( get‬ﻛﻨﺎ ﻧﻘﻮل أﺣﻀﺮ ﻛﺬا‬
‫وأﻃﺒﻌﻪ ﻛﻤﺎ ﻫﻮ وﻋﻨﺪﻣﺎ ﻧﻘﻮل ) ‪ ( set‬ﻛﺄﻧﻨﺎ ﻧﻘﻮل ﺿﻊ ﻛﺬا وﻛﺬا وﻟﻜﻦ ﻛﻤﺎ ﻧﺤﺪده ﻟﻚ ﻧﺤﻦ وﻟﯿﺲ ﻛﻤﺎ ﻫﻮ‬
‫ﻣﻮﺟﻮد ﻓﻲ اﻟﺠﻬﺎز او اﻟﻮاﻗﻊ اﻻﻓﺘﺮاﺿﻲ ‪.‬‬

‫ﻣﻼﺣﻈﺎت ‪:‬‬

‫‪ -١‬داﺋﻤﺎ ﻛﻞ اﻟﺨﻮاص أو اﻟﻄﺮق ﺗﺒﺪأ ﻣﻦ اﻟﺼﻔﺮ ﻣﺜﻼ ‪:‬‬


‫‪ ß 0‬ﯾﻤﺜﻞ ﯾﻮم اﻻﺣﺪ ‪ ß 1 ،‬ﯾﻤﺜﻞ ﯾﻮم اﻻﺛﻨﯿﻦ ‪ ß 2 ،‬ﯾﻤﺜﻞ ﯾﻮم اﻟﺜﻼﺛﺎء ‪ ،‬وﻫﻜﺬا وﻧﻔﺲ اﻟﺸﻲ ﻣﻊ‬
‫اﻻﺷﻬﺮ‪.‬‬

‫‪ -٢‬ﻫﻨﺎ ﯾﻄﺒﻊ ﻟﻨﺎ داﺋﻤﺎ اﻷرﻗﺎم اﻟﺘﻲ ﺗﻤﺜﻞ اﻻﺷﻬﺮ واﻻﯾﺎم وإذا أردﻧﺎ أن ﯾﻄﺒﻌﻬﺎ ﻟﻨﺎ ﻛﺄﺳﻤﺎء ﻧﻀﻊ اﻻرﻗﺎم ﻓﻲ‬
‫) ‪ ( switch‬وﻧﺠﻌﻠﻪ ﯾﻄﺒﻌﻬﺎ ﻟﻨﺎ ﻛﺄﺳﻤﺎء وﺳﻮف ﻧﺄﺧﺬ ﻣﺜﺎل وﻧﺮى ﻻﺣﻘﺎ ‪.‬‬

‫>‪<html‬‬
‫>‪</title‬اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ>‪<head><title‬‬
‫>"‪<script type = "text/javascript‬‬

‫; )(‪var d = new Date‬‬


‫;))(‪ <p>" + d.getDate‬ﻃﺒﺎﻋﺔ رﻗﻢ اﻟﯿﻮم ﻣﻦ اﻟﺸﻬﺮ>‪document.writeln("<p‬‬
‫;))(‪ <p>" + d.getMonth‬ﻃﺒﺎﻋﺔ رﻗﻢ اﻟﺸﻬﺮ>‪document.writeln("<p‬‬
‫;))(‪ <p>" + d.getFullYear‬ﻃﺒﺎﻋﺔ اﻟﺴﻨﺔ ﻟﻨﺎ ﺑﺄرﺑﻊ أرﻗﺎم >‪document.writeln("<p‬‬

‫>‪</script‬‬
‫>‪</head‬‬
‫>‪<body></body‬‬

‫>‪</html‬‬

‫‪٥٣‬‬
: ‫ﻟﻨﺄﺧﺬ ﻣﺜﺎﻻ أﺧﺮ وﻧﺤﻠﻠﻪ‬

<html >
<head><title>‫<اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ‬/title>
<script type = "text/javascript">
var c = new Date (2004 , 9 ,29 , 1 , 7, 0 );
document.writeln("<b>Date :</b> + " c + "<br>");
c.setDate(11);
c.setMonth(9);
c.setHours(23);
c.setFullYear(2003);
c.setMinutes(50);
c.setSeconds(55);
document.writeln("<b>Dtae : </b>" + c);

</script>
</head>
<body></body>

</html>

٥٤
‫ﻟﻨﺤﻠﻞ اﻟﻤﺜﺎل ﺳﻮﯾﺎ وﻧﺮى ‪:‬‬

‫أول ﺷﻲ ﻋﺮﻓﻨﺎ ﻣﺘﻐﯿﺮ ﻫﻮ اﻟﻤﺘﻐﯿﺮ ) ‪ ( c‬ووﺿﻌﻨﺎ ﺑﺪاﺧﻠﻪ اﻟﻜﺎﺋﻦ ) ‪ ( Date‬ﺑﺸﻜﻞ ‪ Array‬إذا ﺟﺎز اﻟﺘﻌﺒﯿﺮ أي‬
‫أﻧﻨﺎ وﺿﻌﻨﺎ ﺑﺪاﺧﻠﻪ ﻗﯿﻢ ﺳﻮف ﺗﺴﻨﺪ إﻟﻰ أﻣﻮر ﺧﺎﺻﺔ ﺑﺎﻟﺘﺎرﯾﺦ واﻟﻮﻗﺖ ‪.‬‬

‫;) ‪newDate (2004 , 9 , 29 , 1 , 7, 0‬‬

‫وﺑﻬﺬا ﻧﻜﻮن ﻋﺒﺮﻧﺎ ﻋﻦ اﻟﺴﻨﺔ ﺑﺎﻟﻘﯿﻤﺔ اﻻوﻟﻰ وﻫﻲ ‪ 2004‬وﻋﺒﺮﻧﺎ ﻋﻦ اﻟﺸﻬﺮ ﺑﺎﻟﻘﯿﻤﺔ اﻟﺜﺎﻧﯿﺔ وﻫﻲ ‪ 9‬وﻋﻦ اﻟﯿﻮم‬
‫ﺑﺎﻟﻘﯿﻤﺔ اﻟﺜﺎﻟﺜﺔ وﻫﻲ ‪ 29‬وﻋﻦ اﻟﺴﺎﻋﺔ ﺑﺎﻟﻘﯿﻤﺔ اﻟﺮاﺑﻌﺔ وﻫﻲ ‪ 1‬وﻋﻦ اﻟﺪﻗﯿﻘﺔ ﺑﺎﻟﻘﯿﻤﺔ اﻟﺨﺎﻣﺴﺔ وﻫﻲ ‪ 7‬وﻋﻦ اﻟﺜﻮاﻧﻲ‬
‫ﺑﺎﻟﻘﯿﻤﺔ اﻟﺴﺎدﺳﺔ وﻫﻲ ‪ . 0‬إذا ﻫﻨﺎ ﺳﻮف ﺑﺘﻌﺮف ﻋﻠﻰ اﻟﻘﯿﻢ ﻫﻜﺬا ‪ :‬ﺳﻨﺔ ‪ ,‬ﺷﻬﺮ ‪ ,‬ﯾﻮم ‪ ,‬ﺳﺎﻋﺔ ‪ ,‬دﻗﯿﻘﺔ ‪ ,‬ﺛﺎﻧﯿﺔ ‪.‬‬

‫ﺛﻢ ﻛﺘﺒﻨﺎ ﺟﻤﻠﺔ اﻟﻄﺒﺎﻋﺔ ‪:‬‬

‫;)‪document.writeln("<b>Date : </b>" + C‬‬

‫وﺑﻬﺎ ﻧﻜﻮن ﻗﺪ ﻃﺒﻌﻨﺎ اﻟﻤﺘﻐﯿﺮ ) ‪ ( c‬أي ﺑﻤﺎ ﯾﺤﺘﻮﯾﻪ… وﻣﻨﻬﺎ ﺳﻮف ﯾﻄﺒﻊ ﻟﻨﺎ اﻟﺘﺎرﯾﺦ واﻟﻮﻗﺖ اﻟﺬي ﺣﺪدﻧﺎه ﻓﻲ ﺑﺪاﯾﺔ‬
‫ﺑﺮﻧﺎﻣﺠﻨﺎ ﻋﻨﺪ ﺗﻌﺮﯾﻔﻨﺎ ﻟﻠﻤﺘﻐﯿﺮ ) ‪ .( c‬وﻟﻜﻦ ﻟﻨﻘﻞ أﻧﻨﺎ أردﻧﺎ أن ﻧﻐﯿﺮ اﻟﻘﯿﻢ اﻟﺘﻲ ﻋﺮﻓﻨﺎﻫﺎ ﻓﻲ ﺑﺪاﯾﺔ ﺑﺮﻧﺎﻣﺠﻨﺎ ﻟﻠﻤﺘﻐﯿﺮ‬
‫) ‪ ( c‬أي اﻟﻮﻗﺖ واﻟﺘﺎرﯾﺦ ‪.‬ﻟﻨﺮى ﻛﯿﻒ ‪:‬‬

‫;)‪c.setDate(11‬‬
‫;)‪c.setMonth(9‬‬
‫;)‪c.setHours(23‬‬
‫;)‪c.setFullYear(2003‬‬
‫;)‪c.setMinuites(50‬‬
‫;)‪c.setSeconds(55‬‬

‫ﺑﻬﺬه اﻟﻄﺮﯾﻘﺔ ﻧﻜﻮن ﻛﺄﻧﻨﺎ ﻏﯿﺮﻧﺎ ﻛﻞ ﻗﯿﻤﺔ ﻓﻲ اﻟﻤﺘﻐﯿﺮ ) ‪ ( c‬اﻟﻰ ﻫﺬه اﻟﻘﯿﻢ اﻟﺘﻰ ذﻛﺮﻧﺎﻫﺎ وﻫﻮ ﺳﻮف ﯾﻐﯿﺮﻫﺎ‬
‫ﻣﺒﺎﺷﺮﺗﺎ ﻓﻼ ﻋﻠﯿﻚ ﺳﻮي ﻛﺘﺎﺑﺔ أﺳﻢ اﻟﻤﺘﻐﯿﺮ ﺛﻢ ﻧﻘﻄﺔ ﺛﻢ ) ‪ ( set‬وﺑﺠﺎﻧﺒﻬﺎ اﻟﺸﻲ اﻟﺬي ﻧﺮﯾﺪ ﺗﻐﯿﺮه ﺳﻮاءا ﯾﻮم‬
‫) ‪ ( Date‬أو ﺳﻨﺔ ) ‪ ( FullYear‬وﻫﻜﺬا ‪ .‬ﺛﻢ اﻻن ﻛﺘﺒﻨﺎ ﺟﻤﻠﺔ اﻟﻄﺒﺎﻋﺔ وأﺧﺒﺮﻧﺎ اﻟﺒﺮﻧﺎﻣﺞ أن ﯾﻄﺒﻊ ﻫﻨﺎ اﻟﻤﺘﻐﯿﺮ‬
‫) ‪ ( c‬ﻣﺮة أﺧﺮى‪.‬‬

‫;)‪document.writeln("<b>Dtae : </b>" + c‬‬

‫وﻟﻜﻦ ﻫﻨﺎ ﺳﻮف ﯾﻄﺒﻊ اﻟﻤﺘﻐﯿﺮ اﻟﺬى ﺳﻮف ﯾﻌﺒﺮ ﻟﻨﺎ ﻋﻦ اﻟﺘﺎرﯾﺦ واﻟﻮﻗﺖ ﺑﺎﻟﻘﯿﻢ اﻟﺠﺪﯾﺪة اﻟﺘﻲ ﺣﺪدﻧﺎﻫﺎ ﻗﺒﻠﻬﺎ ‪.‬‬

‫‪ -‬ﻋﺰﯾﺰي اﻟﻤﺘﺪرب ﻟﻘﺪ وﺿﻌﺖ ﻟﻚ ﻓﻲ ﻫﺬا اﻟﺒﺮﻧﺎﻣﺞ ﺷﻜﻠﯿﻦ ﻟﺘﺤﺪﯾﺪ اﻟﻮﻗﺖ واﻟﺘﺎرﯾﺦ ﺑﻨﻔﺴﻚ واﺣﺪة ﻣﺤﺪدة ﻣﻦ ﺑﺪاﯾﺔ‬
‫ﺑﺮﻧﺎﻣﺠﻨﺎ ﻣﻦ ﺧﻼل ﺗﻌﺮﯾﻔﻨﺎ ﻟﻠﻤﺘﻐﯿﺮ واﻟﺜﺎﻧﯿﺔ ﻋﻨﺪﻣﺎ أردﻧﺎ ﺗﻐﯿﯿﺮ اﻟﻘﯿﻢ اﻟﺘﻰ ﯾﺤﺘﻮﯾﻬﺎ اﻟﻤﺘﻐﯿﺮ وﻫﺬا ﻟﻜﻲ ﺗﻌﻢ اﻟﻔﺎﺋﺪة‬
‫وﺗﻌﺮف أﺑﻌﺎد اﻟﺨﺎﺻﯿﺔ ‪.‬‬

‫إذا ﻓﻲ اﻟﻨﻬﺎﯾﺔ ﻧﺴﺘﻨﺘﺞ ﺷﻲ واﺣﺪ وﻫﻮ أن ) ‪ ( get‬ﻋﻨﺪ إﺳﺘﺨﺪاﻣﻬﺎ ﻓﻲ اﻟﺘﺎرﯾﺦ واﻟﻮﻓﺖ ﺗﺤﺪد ﻟﻨﺎ اﻟﻘﯿﻢ ﻧﻔﺴﻬﺎ ﻣﻦ‬
‫اﻟﺠﻬﺎز أﻣﺎ اﻟـ ) ‪ ( set‬ﻧﺤﻦ ﻣﻦ ﻧﺤﺪد وﻧﻀﻌﻬﻤﺎ ﯾﺪوﯾﺎ‪.‬‬

‫‪٥٥‬‬
: ‫ﻣﺜﺎل ﻟﻨﺮى ﻛﯿﻔﯿﺔ ﺗﺤﻮﯾﻞ أرﻗﺎم اﻻﯾﺎم اﻟﻰ اﺳﻢ اﻟﯿﻮم ﻛﺘﺎﺑﺘﺎ‬

<html dir="rtl">
<head><title>‫<اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ‬/title>
<script type = "text/javascript">
var d = new Date() ;
switch( d.getDay()+1 )
{
case 1 :
document.writeln("‫;)" ﯾﻮم اﻷﺣﺪ‬
break ;

case 2 :
document.writeln("‫;)" ﯾﻮم اﻷﺛﻨﯿﻦ‬
break ;

case 3 :
document.writeln("‫;)" ﯾﻮم اﻟﺜﻼﺛﺎء‬
break ;

case 4 :
document.writeln("‫;)" ﯾﻮم اﻷرﺑﻌﺎء‬
break ;

case 5 :
document.writeln("‫;)" ﯾﻮم اﻟﺨﻤﯿﺲ‬
break ;

case 6 :
document.writeln("‫;)" ﯾﻮم اﻟﺠﻤﻌﺔ‬
break ;

case 7 :
document.writeln("‫;)" ﯾﻮم اﻟﺴﺒﺖ‬
break ;
}

</script>
</head>
<body></body>

</html>

٥٦
‫اﻟﻤﺜﺎل ﻻ ﯾﺤﺘﺎج اﻟﻰ ﺗﺤﻠﯿﻞ وذﻟﻚ ﻻﻧﻨﺎ ﻗﻤﻨﺎ ﺑﺸﺮح ال ) ‪ ( switch‬ﺳﺎﺑﻘﺎ ﻓﻲ اﻟﺪرس اﻟﺨﺎص ﺑﻪ وﻟﻜﻦ ﺳﻮف‬
‫اﺿﻊ ﺑﻌﺾ اﻟﻨﻘﺎط اﻟﺮﺋﯿﺴﯿﺔ اﻟﺘﻲ ﺑﻬﺎ ﺗﻠﺨﯿﺺ ﻟﺸﺮح ﻫﺬا اﻟﺒﺮﻧﺎﻣﺞ ‪.‬‬

‫‪ -‬ﻋﺮﻓﻨﺎ ﻣﺘﻐﯿﺮ ووﺿﻌﻨﺎ ﺑﻪ اﻟﻜﺎﺋﻦ ) ‪ ( Date‬ﺑﻬﺬا اﻟﺸﻜﻞ ‪:‬‬

‫;)(‪var d = new Date‬‬

‫‪ -‬وﺿﻌﻨﺎ ﺑﺪاﺧﻞ اﻟـ ) ‪ ( switch‬ﻛﻮد ﺟﻠﺐ اﻟﯿﻮم ﺑﺎﻻرﻗﺎم ) ) ‪ ( switch( d.getDay()+1‬وﺑﻌﺪ ذﻟﻚ‬
‫ﺳﻮف ﯾﻘﺎرن اﻟﺮﻗﻢ اﻟﺬي ﺳﻮف ﯾﺴﻨﺪ اﻟﻰ اﻟـ ) ‪ ( switch‬اﻟﻰ ﺟﻤﻞ اﻟﻄﺒﺎﻋﺔ ﻟﻜﻲ ﯾﻄﺒﻊ ﻟﻨﺎ اﻟﯿﻮم ﺑﺎﻟﻠﻐﺔ اﻟﻌﺮﺑﯿﺔ‬
‫اي ﺑﺎﺣﺮف اﻟﻠﻐﺔ اﻟﻌﺮﺑﯿﺔ وﻛﺎن ﺑﺈﻣﻜﺎﻧﻨﺎ ان ﻧﻌﺮف ﻣﺘﻐﯿﺮ ﻣﻦ ﺛﻢ ﻧﺴﻨﺪ ﻟﻪ ﻛﻮد ﺟﻠﺐ اﻟﯿﻮم ﺑﺎﻻرﻗﺎم وﻣﻦ ﺛﻢ ﻧﻀﻊ‬
‫ﻫﺬا اﻟﻤﺘﻐﯿﺮ ﻓﻲ اﻟـ ) ‪ ( switch‬ﺑﻬﺬه اﻟﻄﺮﯾﻘﺔ‬

‫;)(‪var d = new Date‬‬


‫;)(‪var n = d.gateDay‬‬

‫) ‪switch ( n‬‬
‫{‬

‫وﻟﻜﻨﻨﻲ اﺧﺘﺼﺮت اﻟﻄﺮﯾﻖ ووﺿﻌﺖ ﻛﻮد ﺟﻠﺐ اﻟﯿﻮم ﻣﺒﺎﺷﺮة ﻓﻲ اﻟـ ) ‪. ( switch‬‬

‫‪٥٧‬‬
: ‫§ ﻣﻌﻠﻮﻣﺎت ﺗﻄﺒﯿﻘﯿﺔ‬
( forms ) ‫§ ﻧﺄﺗﻲ ﻫﻨﺎ اﻟﻰ ذﻛﺮ آﺧﺮﻣﻮﺿﻮﻋﯿﻦ ﻓﻲ اﻟﻜﺘﺎب وﻫﻤﺎ ﻛﯿﻔﯿﺔ اﻟﺘﻌﺎﻣﻞ ﺑﺎﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ ﻣﻊ اﻟﻨﻤﺎذج‬
‫ ( ﻟﻜﻲ ﻻ أﻃﯿﻞ ﻋﻠﯿﻚ ﻋﺰﯾﺰي اﻟﻤﺴﺘﺨﺪم ﻓﺄﻧﺎ أﻋﻠﻢ أن‬status ) ‫واﻟﺸﻲء اﻵﺧﺮ ﻫﻮ ﻇﻬﻮر اﻟﻜﺘﺎﺑﺔ ﺿﻤﻦ ﺷﺮﯾﻂ‬
‫اﻟﻜﺘﺎب أﺛﻘﻞ ﻋﻠﯿﻚ ﻣﻦ ﻛﺜﺮ ﻣﺎﯾﺤﺘﻮي ﻋﻠﻰ ﺷﺮح وﻟﻬﺬا ﺳﻮف أذﻛﺮ ﻣﺜﺎل وﻧﺤﻠﻠﻪ ﻣﺒﺎﺷﺮة ﻓﻜﻞ ﺷﻲء ﯾﻔﻬﻢ ﻣﻦ‬
.. ‫ﺧﻼل اﻟﺘﻄﺒﯿﻖ‬
: ‫ﻣﺜﺎل‬
‫وﻫﻮ ﺗﻌﺒﺌﺔ ﻧﻤﻮذج ﻣﻦ ﻗﺒﻞ اﻟﻤﺴﺘﺨﺪم وﺑﻌﺪ اﻟﺘﻌﺒﺌﺔ ﯾﻀﻐﻂ ﻋﻠﻰ أﯾﻘﻮﻧﺔ ﻣﻮاﻓﻖ ﻓﯿﻄﺒﻊ ﺑﯿﺎﻧﺎﺗﻪ ﻓﻲ ﺻﻔﺤﺔ اﻷﻧﺘﺮﻧﺖ‬
<html dir="rtl">
<head><title> java script </title>
<script type="text/javascript">
function information()
{
var name=info.name.value;
var job=info.job.value;
var add=info.address.value;
var comm=info.command.value;
document.writeln("<table cellspasing=\"0\"
cellpadding=\"5\" border=\"1\" width=\"80%\"
align=\"center\" dir=\"rtl\" bgcolor=\"#eaeaea\"
bordercolor=\"#000000\">");
document.writeln("<caption><h3>
‫< اﻟﻤﻌﻠﻮﻣﺎت اﻟﺘﻲ ﺳﺠﻠﺘﻬﺎ ﻟﺪﯾﻨﺎ‬/h3></caption>");
document.writeln("<tbody>");
document.writeln("<tr><td width=\"30\"><b> ‫ اﻷﺳــــﻢ‬:
</b></td><td>" + name + "</td></tr>");
document.writeln("<tr><td width=\"30\"><b> ‫اﻟﻤﻬﻨـــﺔ‬
:</b></td><td> " + job + "</td></tr>");
document.writeln("<tr><td width=\"30\">
<b>‫ اﻟﻌﻨــﻮان‬:</b></td><td> " + add + "</td></tr>");
document.writeln("<tr><td width=\"30\">
<b>‫ ﻣﻼﺣﻈﺎت‬:</b></td><td> " + comm + "</td></tr>");
document.writeln("</tbody>");
document.writeln("</table>");
}
</script>
</head>
<body >
<form name="info" action="">
<table cellspacing="0" cellpadding="5" border="0" width="80%" align="center">
<tbody>
<tr>
<td>‫ اﻷﺳــــﻢ‬: </td>
<td><input type="text" name="name" value="" size="31"></td>
</tr>
<tr>
<td>‫ اﻟﻌﻨـــﻮان‬:</td>
<td> <input type="text" name="address" value="" size="45"></td>
</tr>
<tr>
<td>‫ اﻟﻤﻬﻨـــﺔ‬:</td>
<td><input type="text" name="job" value="" size="20"></td>
</tr>
<tr>
<td>‫ ﻣﻼﺣﻈـﺎت‬:</td>
<td><textarea name="command" rows="4" cols="50"></textarea></td>
</tr>
<tr>
<td colspan="2" align="center">
</br>
<input type="button" name="show" value="‫"اﻋﺮض‬
onclick="information()"><input type="reset" name="del" value="‫> "ﻣﺴﺢ‬
</td>
</tr>
</tbody> </table></body></html>

58
٥٨
‫ﻋﺰﯾﺰي اﻟﻤﺘﺪرب ﻻ ﺗﻨﺰﻋﺞ ﻣﻦ ﻃﻮل اﻟﻜﻮد ﻓﺎﻟﻜﻮد ﻟﯿﺲ ﺑﻄﻮﻟﻪ ﺑﻞ ﺑﺄواﻣﺮه اﻟﻤﺴﺘﺨﺪﻣﻪ وﺗﻜﻨﯿﻜﻪ وﻣﻦ ﻫﻨﺎ ﻻ ارﯾﺪ‬
‫ان اﺣﻠﻞ اﻟﻜﻮد ﻻﻧﻪ ﻻ ﯾﺤﺘﺎج ﺗﺤﻠﯿﻞ ﻓﻼ ﻋﻠﯿﻚ ﻣﻦ رﻫﺒﺔ ﻛﺜﺮﺗﻪ وﻃﻮﻟﻪ وﻣﻦ ﻫﻨﺎ ﺳﻮف اﺷﺮح ﻟﻚ اﻻﻣﻮر اﻟﺘﻲ ﺑﻬﺎ‬
‫اﺧﺘﺼﺎراﻟﺸﺮح ﺑﺎﻟﻜﻮد ‪..‬‬

‫اوﻻ ﻫﺬا اﻟﻜﻮد ﻟﯿﺲ ﺑﻪ اﻣﻮر ﻛﺜﯿﺮه او اواﻣﺮ ﻛﺜﯿﺮا ﺑﻞ ﻫﻮ ﺑﺴﯿﻂ اﻟﻰ اﺑﻌﺪ اﻟﺤﺪود ﻟﻨﻨﻈﺮ ﻛﯿﻒ ذﻟﻚ ‪:‬‬

‫ﻟﻘﺪ ﻋﺮﻓﺖ اﻟﻤﺘﻐﯿﺮات ﺑﺎﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ ‪:‬‬

‫; ‪var name=info.name.value‬‬
‫; ‪var job=info.job.value‬‬
‫; ‪var add=info.address.value‬‬

‫ﻫﻨﺎ ﺳﻮف اﺗﺠﺎوز ﺑﺸﺮﺣﻲ ﻗﻠﯿﻼ ﻋﻦ اﻟﻨﻤﻂ اﻟﺒﺮﻣﺠﻲ اﻟﺒﺤﺖ ﻟﻜﻲ ﺗﺼﻞ اﻟﻤﻌﻠﻮﻣﻪ اﻛﺜﺮ اذا ﺳﻤﺤﺖ ﻟﻲ ‪..‬‬

‫‪59‬‬
‫‪٥٩‬‬
‫ﻫﻨﺎ ﻋﺮﻓﻨﺎ اﻟﻤﺘﻐﯿﺮات ﺑﺎﻟﺸﻜﻞ اﻟﺬي ﻧﻌﺮﻓﻪ ﻣﺜﻞ ) ‪ ( name‬و ) ‪ ( job‬و ) ‪( add‬‬
‫وﺗﺬﻛﺮ أﺧﻲ اﻟﻤﺘﺪرب اﻧﻨﺎ ﻛﻨﺎ ﻧﻌﺮف ﻓﻲ اﻟﻤﺎﺿﻲ‪ ...‬اي ﻓﻲ اﻟﻤﺼﻔﻮﻓﺎت ﻣﺘﻐﯿﺮ ﻣﺜﻼ ) ‪ ( a‬وﯾﻜﻮن ﻫﻮ ﻋﺒﺎره ﻋﻦ‬
‫ﻣﺼﻔﻮﻓﻪ وﻛﺎﻧﺖ ﺗﻜﺘﺐ ﺑﺸﻜﻞ اﻟﺘﺎﻟﻲ ‪:‬‬

‫; ) (‪var a = new Array‬‬

‫وﻣﻨﻬﺎ ﻛﻨﺎ ﻧﻌﺮف ان ﻫﺬا اﻟﻤﺘﻐﯿﺮ ﻫﻮ ﻋﺒﺎره ﻋﻦ ﻣﺼﻔﻮﻓﻪ ‪..‬‬


‫وﻫﻨﺎ ﻧﻔﺲ اﻟﺸﻲء ﻗﻠﻨﺎ ﻣﺜﻼ اﻟﻤﺘﻐﯿﺮ ) ‪ ( name‬ﻫﻮ ﻋﺒﺎره ﻋﻦ ﻗﯿﻤﻪ ﺳﻮف ﯾﺪﺧﻠﻬﺎ اﻟﻤﺴﺘﺨﺪم ﻓﻲ اﻟﻨﻤﻮذج )‬
‫‪ ( form‬ﻛﻤﺎ ﻛﻨﺎ ﻧﻘﻮل ان ﻫﺬا اﻟﻤﺘﻐﯿﺮ ) ‪ ( a‬ﻫﻮ ﻋﺒﺎره ﻋﻦ ﻣﺼﻔﻮﻓﻪ ‪ ..‬ﻟﻬﺬا ﻛﺘﺒﻨﺎ اﻟﻤﺘﻐﯿﺮ ) ‪ ( name‬ﺑﻬﺬا‬
‫اﻟﺸﻜﻞ ‪:‬‬

‫; ‪var name=info.name.value‬‬

‫اي ﻫﻨﺎ ﻧﻘﻮل ان اﻟﻤﺘﻐﯿﺮ ) ‪ ( name‬ﻫﻮ ﻋﺒﺎره ﻋﻦ ﻗﯿﻤﻪ ﺳﻮف ﺗﻜﻮن ﻣﺪﺧﻠﻪ ﻣﻦ ﻗﺒﻞ اﻟﻤﺴﺘﺨﺪم ﻓﻲ ﺣﻘﻞ ﻣﻦ‬
‫ﺣﻘﻮل اﻟﻨﻤﻮذج اي ال ) ‪ ( form‬واﻟﺬي ﯾﺤﻤﻞ اﺳﻢ ) ‪ ( name‬ﻟﻜﻲ ﺗﺨﺰن ﺑﺪاﺧﻠﻬﺎ ‪..‬‬
‫اذا ﻫﻨﺎ ﻧﺄﺗﻲ ﻟﻠﺘﺴﺎؤﻟﻚ ﻋﺰﯾﺰي اﻟﻤﺘﺪرب ‪ ...‬ﻣﺎذا ﯾﻌﻨﻲ اﻟﻜﻮد اﻟﺘﺎﻟﻲ ‪:‬‬

‫; ‪info.name.value‬‬

‫ﻟﻨﻔﺴﺮﻫﺎ ﺳﻮﯾﺎ ‪:‬‬

‫) ‪ ( info‬وﻧﻌﻨﻲ ﺑﻬﺎ اﺳﻢ اﻟﻨﻤﻮذج اﻟﺬي ﺳﻮف ﯾﺪﺧﻞ ﺑﻪ اﻟﻤﺴﺘﺨﺪم اﻟﻘﯿﻤﻪ واﻟﺬي ﯾﻜﺘﺐ ﻓﻲ ال ) ‪( form‬‬ ‫§‬

‫> " "=‪< form name="info" action‬‬

‫ﻓﻜﻤﺎ ﺗﻌﺮف ﻓﻲ ﻟﻐﺔ ) ‪ ( html‬اﻟﻨﺼﯿﻪ ﯾﺠﺐ ان ﯾﺤﻤﻞ اﻟﻨﻤﻮذج اﺳﻢ اذا ﻫﻨﺎ ﯾﺠﺐ ان ﻧﻀﻊ ﻧﻔﺲ اﻻﺳﻢ اﻟﺬي‬
‫ﺣﺪدﻧﺎه ‪..‬ﻟﻠﻤﺘﻐﯿﺮ ) ‪ ( name‬وﻫﺬا ﻟﻜﻲ ﻧﺨﺒﺮ ان ﻫﺬا اﻟﻤﺘﻐﯿﺮ ﻣﺘﻌﻠﻖ ﺑﺬﻟﻚ اﻟﻨﻤﻮذج ‪..‬‬

‫§ ) ‪ ( name‬وﻧﻌﻨﻲ ﺑﻬﺎ اﻻﺳﻢ اﻟﺬي ﺳﻮف ﻧﻀﻌﻪ ﺑﺎﻟﺤﻘﻞ اﻟﺬي ﺳﻮف ﯾﺪﺧﻞ ﺑﻪ اﻟﻤﺴﺘﺨﺪم اﻟﻘﯿﻤﻪ وﻣﻦ ﺛﻢ ﺗﺨﺰن‬
‫ﻓﻲ اﻟﻤﺘﻐﯿﺮ ) ‪ ( name‬واﻟﺘﻲ ﺗﻜﻮن ﻓﻲ اﻟﻨﻤﻮذج ﺑﻬﺬا اﻟﺸﻜﻞ ‪:‬‬

‫> ”‪< input type="text" name="name" value="" size="3‬‬

‫وﻫﺬا ﻟﻜﻲ ﻧﻤﯿﺰ ان اﻟﺤﻘﻞ ﻫﺬا اﻟﺬي ﻓﻲ ال ) ‪ ( input‬واﻟﺬي ﺳﻮف ﯾﺪﺧﻠﻪ اﻟﻤﺴﺘﺨﺪم ﺳﻮف ﯾﺨﺰن ﻓﻲ اﻟﻤﺘﻐﯿﺮ‬
‫اﻟﺬي اﺳﻤﻪ ) ‪ ( name‬اي اﻧﻪ ﺧﺎص ﺑﻪ ‪.‬‬

‫) ‪ ( value‬وﻧﻌﻨﻲ ﺑﻪ ان ﻫﺬه اﻟﻘﯿﻤﻪ ﺳﻮف ﯾﺪﺧﻠﻬﺎ اﻟﻤﺴﺘﺨﺪم ﻟﺬﻟﻚ ﻫﻲ ﻏﯿﺮ ﻣﻌﻠﻮﻣﻪ اﻟﻰ اﻻن ‪..‬‬ ‫§‬

‫‪60‬‬
‫‪٦٠‬‬
‫وﺑﻬﺬا ﺗﻜﻮن اﻟﺼﯿﻐﺔ ﻟﻠﻤﺘﻐﯿﺮ واﻟﻘﯿﻤﺔ اﻟﺘﻲ ﺳﻮف ﺗﺨﺰن ﺑﻬﺎ ﻛﺘﺎﻟﻲ ‪:‬‬

‫; ‪var name=info.name.value‬‬

‫إذا ﻋﺮﻓﻨﺎ ﻟﻤﺎذا ﻧﻀﻊ اﻟﻤﺘﻐﯿﺮ وﻧﺴﺎوﯾﻪ ﺑﻬﺬا اﻟﺸﻜﻞ ﻛﻤﺎ ﻓﻲ اﻟﻤﺼﻔﻮﻓﻪ وﻟﻜﻦ ﺑﺎﺧﺘﻼف اﻟﻮﻇﯿﻔﻪ وﻃﺮﯾﻘﺔ اﻟﻜﺘﺎﺑﻪ ‪..‬‬
‫وﻣﺎ ﯾﻨﻄﺒﻖ ﻋﻠﻰ اﻟﻤﺘﻐﯿﺮ ) ‪ ( name‬ﯾﻨﻄﺒﻖ ﻋﻠﻰ اﻟﻤﺘﻐﯿﺮ ) ‪ ( job‬و ) ‪( add‬‬

‫§ ﻗﺒﻞ ان ﻧﻨﺘﻘﻞ اﻟﻰ ﺑﻘﯿﺔ اﻟﻜﻮد ﻟﻨﺘﺴﺄل ﻫﻞ اﻟﻤﺴﻤﯿﺎت ﻫﺬه ﺛﺎﺑﺘﻪ وﯾﺠﺐ ذﻛﺮﻫﺎ داﺋﻤﺎ ‪..‬؟‬
‫اﻟﺠﻮاب ‪ :‬ﻻ‬

‫ﻓﻘﺪ ﻧﺄﺗﻲ وﻧﺴﻤﻲ اﻟﻤﺘﻐﯿﺮ وﻧﻜﺘﺒﻪ ﺑﻬﺬا اﻟﺸﻜﻞ‪ .‬ﻟﻨﻘﻞ ﻣﺜﻼ ﻧﺮﯾﺪ ان ﻧﺴﻤﻲ ﻣﺘﻐﺮ ﺑﺈﺳﻢ ) ‪ ( a‬ﻓﺮﺿﺎ‪ .‬اذا ﻧﻜﺘﺒﻪ ﻛﺘﺎﻟﻲ ‪:‬‬

‫; ‪var a=myform.enter1.value‬‬

‫إذا ﺑﻤﺎ اﻧﻨﺎ ﻏﯿﺮﻧﺎ اﻟﻤﺴﻤﯿﺎت ﯾﺠﺐ ان ﻧﺜﺒﺖ ﺑﻬﺎ ﻋﻠﻰ اﻟﻨﻤﻮذج اي ال ) ‪ ( form‬ﻟﻜﻲ ﯾﻌﺮف ان ﻫﺬا اﻟﻤﺘﻐﯿﺮ‬
‫ﺧﺎص ﺑﻪ اذا اﻟﺘﻐﯿﺮات ﻛﺘﺎﻟﻲ ﺳﻮف ﺗﺼﺒﺢ ‪..‬‬

‫ﺗﻌﺮﯾﻒ اﻟﻤﺘﻐﯿﺮ ‪:‬‬

‫; ‪var a=myform.enter1.value‬‬

‫ﻋﻨﺪ ﻛﺘﺎﺑﺘﻨﺎ ﻟﻜﻮد اﻟﻨﻤﻮذج ﻧﺬﻫﺐ و ﻧﻜﺘﺐ اﺳﻢ ال ) ‪ ( form‬ﺑﻬﺬا اﻻﺳﻢ وﻫﻮ اﻟﺬي اﺧﺘﺮﻧﺎه ﻣﻦ ﺑﺪاﯾﺔ ﺑﺮﻧﺎﻣﺠﻨﺎ "‬
‫‪ " myform‬ﻛﺘﺎﻟﻲ ‪:‬‬

‫> " "=‪< form name="myform" action‬‬

‫واﻟﺤﻘﻞ اﻟﺬي ﺳﻮف ﯾﺪﺧﻞ ﻣﻦ ﺧﻼﻟﻪ اﻟﻤﺴﺘﺨﺪم ﻗﯿﻤﺔ اﻟﻤﺘﻐﯿﺮ اﻟﺘﻲ ﺳﻮف ﺗﺨﺰن ﺑﻪ ﺳﻮف ﯾﺄﺧﺬ اﺳﻢ " ‪" enter1‬‬
‫ﻛﺘﺎﻟﻲ ‪:‬‬

‫> "‪< input type="text" name="enter1" value="" size="31‬‬

‫§ اذا ﻧﺴﺘﻨﺘﺞ اﻟﺘﺎﻟﻲ ‪:‬‬


‫ان اﻟﻤﺴﻤﯿﺎت ﻧﺤﻦ ﻣﻦ ﻧﺤﺪدﻫﺎ وﻟﻜﻦ اذا ﺣﺪدﻧﺎﻫﺎ ﻣﻨﺬ ﺑﺪاﯾﺔ اﻟﺒﺮﻧﺎﻣﺞ ﻋﻠﯿﻨﺎ اﻻﻟﺘﺰام ﺑﻬﺎ اﻟﻰ اﺧﺮ اﻟﺒﺮﻧﺎﻣﺞ دون‬
‫ﺗﻐﯿﺮ ‪..‬‬

‫ﻧﺄﺗﻲ اﻻن اﻟﻰ اﻟﺸﻲء اﻻﺧﺮ وﻫﻮ اﻟﻜﻮد اﻟﺘﺎﻟﻲ وﻣﺎذا ﻧﻌﻨﻲ ﺑﻪ ‪:‬‬

‫>")(‪" onclick="information‬اﻋﺮض"=‪<input type="button" name="show" value‬‬

‫اﻟﺘﺴﺎؤل ﻫﻨﺎ ﻟﻤﺎذا وﺿﻌﻨﺎ ﻓﻲ اﻟﺤﻘﻞ اﻟﺨﺎص ﺑﺎل ) ‪ ( button‬ﻫﺬا اﻟﻜﻮد ‪:‬‬

‫")(‪onclick="information‬‬

‫‪61‬‬
‫‪٦١‬‬
‫ﻋﺰﯾﺰ اﻟﻤﺘﺪرب ﻫﻨﺎ ﺑﻤﺎ اﻧﻪ ﺣﻘﻞ ﺧﺎص ﺑﺎل ) ‪ ( button‬اذا ﯾﺠﺐ ﺑﻌﺪ ان ﯾﻀﻐﻂ ﻋﻠﯿﻪ اﻟﻤﺴﺘﺨﺪم ان ﯾﻨﻔﺬ اﻣﺮ‬
‫ﻣﻌﯿﻦ اذا ﻫﻨﺎ ﻧﻀﻊ اﺳﻢ اﻟﺪاﻟﻪ اي ال ‪ function‬اﻟﺬي ﻛﺘﺒﻨﺎ ﺑﺪاﺧﻠﻪ اﻟﻜﻮد ﻟﻜﻲ ﯾﻨﻔﺬ اﻻواﻣﺮ اﻟﺘﻲ ﺑﺪاﺧﻠﻪ ﻟﻬﺬا‬
‫وﺿﻌﻨﺎ ﻛﻠﻤﺔ ) ‪ ( onclick‬اي ﻣﺠﺮد ﻣﺎ ﯾﻀﻐﻂ اﻟﻤﺴﺘﺨﺪم ﻋﻠﻰ ال ) ‪ ( button‬ﻧﻔﺬ اﻟﺪاﻟﺔ اي ال )‬
‫‪ ( function‬اﻟﻤﺴﻤﻰ ) ‪ ( information‬وﻫﻮ اﺳﻢ اﻟﺪاﻟﺔ اﻟﺘﻲ ﺳﻤﯿﻨﺎﻫﺎ ﻓﻲ اول ﺑﺮﻧﺎﻣﺠﻨﺎ ‪ ..‬وﺑﻤﺠﺮد‬
‫اﻟﻀﻐﻂ ﻋﻠﯿﻬﺎ ﺳﻮف ﯾﻘﻮم اﻟﺒﺮﻧﺎﻣﺞ ﺑﻌﻤﻠﻪ وﻫﻮ ﺑﻨﺎء ﺟﺪول وﺑﺪاﺧﻠﻪ اﻟﻘﯿﻢ اﻟﺘﻲ ادﺧﻠﻬﺎ اﻟﻤﺴﺘﺨﺪم ‪..‬‬

‫وﻫﻜﺬا اﻛﻮن ﻗﺪ ﺣﻠﻠﺘﻪ ﻟﻚ اﻟﻰ اﺑﻌﺪ اﻟﺤﺪود وﻛﺄﻧﻨﻲ ﺷﺮﺣﺘﻪ واﻧﺎ ارى اﻧﻨﻲ ﺷﺮﺣﺘﻪ ﻓﺄﻧﺪﻣﺠﺖ ﻓﻲ ﺷﺮﺣﻪ وﻟﻢ اﺷﻌﺮ‬
‫ﺑﺬﻟﻚ‪..‬‬

‫اﻣﺎ ﻟﻤﺎذا ﻟﻢ اﻛﺘﺐ ﺷﺮح ﺑﻘﯿﺔ اﻟﻜﻮد ﻓﻼ ﯾﻮﺟﺪ ﺟﺪﯾﺪ ﺑﻪ ﻓﻜﻠﻪ اواﻣﺮ ) ‪ ( document.writeln‬اي اواﻣﺮ‬
‫ﻃﺒﺎﻋﻪ وﺿﻊ ﺑﺪاﺧﻠﻬﺎ ﻛﻮد ال ) ‪ ( html‬اﻣﺎ ﻛﯿﻔﯿﺔ ﻛﺘﺎﺑﺔ ﻛﻮد ال ) ‪ ( html‬ﺑﺪاﺧﻞ ﻛﻮد اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ ذﻛﺮﻧﺎه‬
‫ﻓﻲ ﺑﺪاﯾﺔ ﻛﺘﺎﺑﻨﺎ ‪ ..‬ﺑﻘﻲ اﻟﻜﻮد اﻟﺬي ﻓﻲ ال ) ‪ ( body‬اي ﻓﻲ ﺟﺴﻢ اﻟﺼﻔﺤﺔ ﻫﺬا ﻋﺒﺎره ﻋﻦ ﻛﻮد ) ‪..( html‬‬

‫اﻣﺎ ﻟﻤﺎذا ﻫﻨﺎ ﻛﺘﺒﻨﺎ ﻛﻮد ﻃﺒﺎﻋﺔ اﻟﺠﺪول ﻓﻲ داﺧﻞ ﻛﻮد اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ واﯾﻀﺎ ﻛﻮد ﻓﻲ اﻟﺠﺴﻢ اﻟﺼﻔﺤﺔ ‪..‬؟‬ ‫§‬

‫اﻟﺠﻮاب ‪:‬‬

‫اﻻول اي ﻛﻮد اﻧﺸﺎء اﻟﺠﺪول ﻓﻲ اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ ﻗﺼﺪﻧﺎ ﺑﻪ اﻧﻪ ﯾﻨﺸﺌﻪ ﻓﻲ ﺣﺎﻟﺔ ﺗﻨﻔﯿﺬ اﻟﺪاﻟﻪ اي ﺑﻌﺪ ان ﯾﻀﻐﻂ‬
‫اﻟﻤﺴﺘﺨﺪم ﻋﻠﻰ ال ) ‪ ( button‬وﯾﺤﺘﻮي ﺑﺪاﺧﻠﻪ اﻟﻘﯿﻢ اﻟﺘﻲ ﺳﻮف ﯾﻄﺒﻌﻬﺎ وﯾﻈﻬﺮﻫﺎ ﻟﻠﻤﺴﺘﺨﺪم اﻣﺎ اﻟﺠﺪول‬
‫اﻻﺧﺮ اﻟﺬي ﻓﻲ ال ) ‪ ( body‬ﻫﻮ اﻟﺠﺪول اﻟﺨﺎص ﺑﺎﻟﻨﻤﻮذج اي ال ) ‪ ( form‬اﻟﺬي ﺳﻮف ﯾﻈﻬﺮ ﻟﻠﻤﺴﺘﺨﺪم‬
‫ﻋﻨﺪ دﺧﻮﻟﻪ ﻟﻠﺼﻔﺤﺔ واﻟﺬي ﺳﻮف ﯾﻤﻸ ﺣﻘﻮﻟﻪ ﻟﺘﻨﺘﻘﻞ اﻟﻰ داﻟﺔ اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ وﯾﻨﻔﺬﻫﺎ ‪..‬‬

‫ﻣﻼﺣﻈﺔ ‪:‬‬
‫ﻗﺪ ﺗﺴﺘﺨﺪم ﺷﺮوط ﻣﻌﯿﻨﻪ ﺗﻠﺰم ﺑﻬﺎ ﻣﻌﺒﺊ اﻟﻔﻮرم ﺑﺎﺳﺘﺨﺪام اﺣﺮف او رﻣﻮز ﻣﻌﯿﻨﻪ ﻋﻠﻰ ﺳﺒﯿﻞ اﻟﻤﺜﺎل ذﻛﺮ رﻣﺰ اﻟـ )‬
‫@ ( ﻓﻲ ﺗﻌﺒﺌﺔ اﻟﻤﺴﺘﺨﺪم ﺧﺎﻧﺔ اﻟﺒﺮﯾﺪ اﻻﻟﻜﺘﺮوﻧﻲ ﻟﻠﺘﺄﻛﺪ اﻧﻪ وﺿﻊ ﺑﺮﯾﺪ اﻟﻜﺘﺮوﻧﻲ وﻏﯿﺮﻫﺎ ﻣﻦ اﻟﺸﺮوط اﻟﺘﻲ‬
‫أﺗﺮﻛﻬﺎ ﻟﻚ ﻟﺘﻘﻮم ﺑﻬﺎ ﺑﻨﻔﺴﻚ ﻟﻜﻲ ﻻ ﯾﻜﻮن ﻛﻞ ﺷﻲء ﺟﺎﻫﺰ داﺋﻤﺎ وﻟﻜﻦ ﺳﻮف أﻟﻤﺢ ﻟﻚ ﻛﯿﻔﯿﺔ ﻋﻤﻠﻬﺎ أﻻ ﯾﻤﻜﻨﻚ ﻋﻤﻞ‬
‫داﻟﻪ اي ‪ function‬ﺗﻘﻮم ﺑﻔﺤﺺ ﺧﺎﻧﺔ ﻣﻌﯿﻨﻪ ﻣﺜﻼ ﺗﻔﺤﺼﻬﺎ ﺑﺠﻤﻠﺔ ‪ if‬ﺑﺪاﺧﻞ ‪ function‬وﯾﺘﻢ اﺳﺘﺪﻋﺎء ال‬
‫‪ function‬ﻋﻨﺪ ﺗﻌﺒﺌﺔ اﻟﻤﺴﺘﺨﺪم ﺧﺎﻧﺔ ﻣﻌﯿﻨﻪ ﻣﺜﻞ ﺧﺎﻧﺔ اﻟﺒﺮﯾﺪ ﻣﺜﻼ ‪.‬‬

‫واﻟﻤﺜﺎل اﻵﺧﺮ ﯾﺘﺤﺪث ﻋﻦ ﻃﺒﺎﻋﺔ ﺟﻤﻠﺔ ﻣﻌﯿﻨﺔ ﻓﻲ ﺷﺮﯾﻂ ) ‪ ( status‬واﻟﺬي ﯾﻌﺘﺒﺮ ﻣﻦ اﻟﻜﺎﺋﻦ ‪window‬‬ ‫§‬
‫ﺗﻤﺜﻠﻪ ﻫﺬه اﻟﺼﻮرة ‪:‬‬

‫‪status‬ﻫﺬا ﻣﺎ أﻗﺼﺪه ﺑـ‬

‫‪62‬‬
‫‪٦٢‬‬
‫ﻓﺈذا أردت ﻋﺰﯾﺰي اﻟﻤﺘﺪرب أن ﺗﺬﻛﺮ أي ﺟﻤﻠﺔ ﻣﻌﯿﻨﺔ ﻓﺘﻈﻬﺮ ﻓﻲ ﺷﺮﯾﻂ ) ‪ ( status‬ﺗﺴﺘﻄﯿﻊ ذﻟﻚ ﻣﻦ ﺧﻼل‬
‫اﻻﻣﺮ ‪:‬‬

‫; " أﻫﻼ ﺑﻚ ﻓﻲ ﻣﻮﻗﻌﻨﺎ " = ‪window.status‬‬

‫أﻣﺎ إذا ﻛﻨﺖ ﺗﺮﯾﺪ أن ﯾﻈﻬﺮ ﻓﻲ ﺷﺮﯾﻂ ) ‪ ( status‬ﻣﺘﻐﯿﺮ ﻛﺄن ﯾﻈﻬﺮ ﻣﺜﻼ أﺳﻢ زاﺋﺮ ﻣﻮﻗﻌﻚ ﻓﯿﻜﺘﺐ ﺑﻬﺬا اﻟﺸﻜﻞ ‪:‬‬

‫; ‪window.status = name‬‬

‫وﻟﻮ أردت أن ﺗﺬﻛﺮ ﻓﻲ ﺷﺮﯾﻂ ) ‪ ( status‬ﺟﻤﻠﺔ وﻣﻦ ﺛﻢ ﻣﺘﻐﯿﺮ ﻓﺘﻜﻮن اﻟﺼﯿﻎ ﻛﻤﺎ ﯾﻠﻲ ‪:‬‬
‫‪-١‬‬
‫; " أﻫﻼ ﺑﻚ ﯾﺎ " ‪window.status = name‬‬
‫‪.‬‬

‫‪-٢‬‬
‫; ‪ " name‬ﺷﺮﻓﺖ ﻣﻮﻗﻌﻨﺎ " = ‪window.status‬‬

‫ﻣﺜﺎل ‪:‬‬

‫> ‪<html‬‬
‫>‪</title‬اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ>‪<head><title‬‬
‫>"‪<script type = "text/javascript‬‬
‫; " أﻫﻼ ﺑﻚ ﻓﻲ ﻣﻮﻗﻌﻨﺎ " = ‪window.status‬‬
‫>‪</script‬‬
‫>‪</head‬‬
‫>‪<body></body‬‬

‫>‪</html‬‬

‫ﻫﻨﺎ ﺗﻨﻔﯿﺬ اﻟﻤﺜﺎل‬

‫‪63‬‬
‫‪٦٣‬‬
‫ﻻﯾﺤﺘﺎج اﻟﻰ ﺗﺤﻠﯿﻞ ﻓﺄﻧﺖ أﻋﻠﻢ ﺑﻪ ‪ .‬وﻟﻜﻦ ﻟﻨﻔﺮض ان ﻟﺪﯾﻨﺎ ﺑﻌﺾ اﻟﺠﻤﻞ اﻟﻤﻮﺟﻮده ﻓﻲ اﻟﻤﺼﻔﻮﻓﻪ وﻧﺮﯾﺪ ﻋﺮﺿﻬﺎ‬
‫ﻓﻲ ال ‪ status‬اي ﯾﻌﺮض ﻟﻨﺎ ﺟﻤﻞ ﻣﺘﻐﯿﺮة ﺑﺎﺳﺘﻤﺮار ‪ ...‬اﺗﺮﻛﻪ ﻟﻚ ﻟﺘﻔﻜﺮ ﺑﻪ وﻟﻜﻦ أﻟﻤﺢ ﻟﻚ ﻟﺒﻌﺾ‬
‫اﻻﺳﺘﺨﺪاﻣﺎت ﻟﺘﻨﻔﯿﺬ ذﻟﻚ‪ ..‬اوﻻ ﻧﺤﺘﺎج اﻟﻰ ﺗﻌﺮﯾﻒ ﻣﺼﻔﻮﻓﺔ ‪ Array‬واﯾﻀﺎ اﻟﻰ ﺟﻤﻠﺔ ‪ for‬واﻟﺒﻘﯿﺔ ﻋﻠﯿﻚ ‪.‬‬

‫ﻟﻨﺄﺧﺬ اﯾﻀﺎ ﺑﻌﺾ ﻣﻦ اﻟﻜﺎﺋﻦ ‪ window‬ﻛﺄﻣﺜﻠﻪ وﺳﻮف اﺗﺮك ﻟﻚ ﺗﺤﻠﯿﻠﻬﺎ وﻟﻜﻦ ﺳﻮف اﺿﻊ ﺑﻌﺾ‬ ‫§‬
‫اﻟﺘﻌﻠﯿﻘﺎت اﻟﺘﻲ ﺳﻮف ﺗﺴﺎﻋﺪك ﻋﻠﻰ ﺗﺤﻠﯿﻞ ﻛﻞ ﻣﺜﺎل وﻟﻦ اﺿﻊ ﻟﻚ ﺻﻮرا ﻟﻬﺎ ﻟﻜﻲ ﺗﻨﻔﺬﻫﺎ اﻧﺖ ﻓﻲ ﻧﻔﺴﻚ‬
‫وﺗﺘﺨﯿﻠﻬﺎ ‪..‬‬

‫> ‪<html‬‬
‫>‪</title‬اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ>‪<head><title‬‬
‫>"‪<script type = "text/javascript‬‬
‫‪window.open ("www.freewebs.com", "new_web", " toolbar = no ,‬‬
‫‪location = no , directories = no , status = no , menubar= no , scrollbars‬‬
‫; ) " ‪= no , resizable = no , copyhistory = yes , width = 400 , height = 400‬‬
‫>‪</script‬‬
‫>‪</head‬‬
‫>‪<body></body‬‬

‫>‪</html‬‬

‫ﯾﻘﻮم ﻫﺬا اﻟﺒﺮﻧﺎﻣﺞ او اﻟﻜﻮد ﺑﻔﺘﺢ ﺻﻔﺤﺔ ﺟﺪﯾﺪه ﺑﻤﺠﺮد دﺧﻮل اﻟﻤﺴﺘﺨﺪم ﻋﻠﻰ اﻟﺼﻔﺤﺔ اﻟﺘﻲ ﺑﻬﺎ ﻫﺬا اﻟﻜﻮد اﻣﺎ ﻣﺎ‬
‫ﯾﺤﺘﻮي ﺗﻼﺣﻆ اﻧﻪ ﯾﺤﺘﻮي ﻋﻠﻰ اﻟﻜﺎﺋﻦ ‪ window‬وﺑﺪاﺧﻠﻪ اﺳﻢ اﻟﻤﻮﻗﻊ اﻟﺬي ﺳﻮف ﯾﻔﺘﺤﻪ ﻟﻠﻤﺴﺘﺨﺪم اﻣﺎ ﺑﻘﯿﺔ‬
‫اﻻواﻣﺮ ﻫﻲ ﺧﺼﺎﺋﺺ ﺻﻔﺤﺔ اﻻﻛﺴﺒﻠﻮرر ﻣﻦ وﺟﻮد ‪ toolbar‬او ﻋﺪﻣﻪ ﻣﻦ ﺳﻤﺎح ﻟﻠﻤﺴﺘﺨﺪم ﺑﺎﻟﺘﺤﻜﻢ ﻓﻲ ﺣﺠﻢ‬
‫اﻟﺼﻔﺤﺔ اﻟﺘﻲ ﺳﻮف ﺗﻔﺘﺢ ﻟﻪ ﺑﺎﻻﺿﺎﻓﻪ اﻟﻰ ﻃﻮل وﻋﺮض اﻟﺼﻔﺤﺔ اﻟﺘﻲ ﺗﺮﯾﺪ ان ﺗﻔﺘﺢ ﻟﻠﻤﺴﺘﺨﺪم ‪ ...‬اﻟﺦ ﺟﺮب ان‬
‫ﺗﻐﯿﺮ ﺑﯿﻦ ال ‪ yes‬وال ‪ no‬واﻧﻈﺮ ﻣﺎذا ﺳﻮف ﯾﺤﺪث ﻓﺎﻟﻤﻌﻠﻮﻣﻪ ﺗﺼﻠﻚ ﺑﺎﻟﺘﻄﺒﯿﻖ ‪..‬‬

‫> ‪<html‬‬
‫>‪</title‬اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ>‪<head><title‬‬
‫>"‪<script type = "text/javascript‬‬
‫) (‪location.reload‬‬
‫>‪</script‬‬
‫>‪</head‬‬
‫>‪<body></body‬‬

‫>‪</html‬‬

‫ﯾﻘﻮم اﻟﻜﺎﺋﻦ ‪ reload‬ﻣﻦ ﺧﻼل اﻻﻣﺮ ) (‪ location.reload‬ﺑﺈﻋﺎدة ﺗﺤﻤﯿﻞ اﻟﺼﻔﺤﺔ اي ﻋﻤﻠﯿﺔ ‪refresh‬‬
‫ﻟﻠﺼﻔﺤﺔ ‪.‬‬
‫ﻣﻼﺣﻈﺔ‪:‬‬
‫ﯾﻔﻀﻞ إﺳﺘﺨﺪام أﻣﺮ ‪ break‬أو وﺿﻊ اﻟـ ) (‪ location.reload‬ﺿﻤﻦ ﺗﻜﻨﯿﻚ ﻣﻌﯿﻦ ﻣﻦ داﻟﺔ أو ﺣﻠﻘﺔ‬
‫ﺗﻜﺮار ﻟﻜﻲ ﻻ ﯾﺪوم اﻟـ ‪ refresh‬اﻟﻰ ﻣﺎ ﻻ ﻧﻬﺎﯾﺔ وﺑﺎﻟﺘﺎﻟﻲ ﻻ ﺗﺴﺘﻄﯿﻊ إﻏﻼق اﻟﺼﻔﺤﺔ‬
‫> ‪<html‬‬
‫>‪</title‬اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ>‪<head><title‬‬
‫>"‪<script type = "text/javascript‬‬
‫) (‪window.print‬‬
‫>‪</script‬‬
‫>‪</head‬‬
‫>‪<body></body‬‬

‫>‪</html‬‬

‫‪64‬‬
‫‪٦٤‬‬
‫ﯾﻘﻮم ﻫﺬا اﻟﻜﻮد ﺑﻄﺒﺎﻋﺔ اﻟﺼﻔﺤﺔ اﻟﺘﻲ ﯾﻮﺿﻊ ﺑﻬﺎ اﻟﻜﺎﺋﻦ ) (‪ window.print‬اي ﺗﺸﻐﯿﻞ ﺧﺎﺻﯿﺔ اﻟﻄﺒﺎﻋﺔ ﻓﻲ‬
‫اﻟﺠﻬﺎز ‪ ..‬ﻟﺘﻘﻮم اﻟﻄﺎﺑﻌﺔ ﺑﻄﺒﺎﻋﺔ اﻟﺼﻔﺤﺔ ﺑﻤﻌﻨﻰ ﺑﺪﻻ ﻣﻦ ان ﯾﺬﻫﺐ اﻟﻤﺴﺘﺨﺪم اﻟﻰ ‪ file‬وﻣﻦ ﺛﻢ ﯾﺨﺘﺎر ‪ print‬ﻫﺬا‬
‫اﻻﻣﺮ ﯾﻘﻮم ﺗﻠﻘﺎﺋﯿﺎ ﺑﺬﻟﻚ‪ ..‬ﺑﻤﺠﺮد دﺧﻮل اﻟﺰاﺋﺮ اﻟﻰ اﻟﺼﻔﺤﺔ ﻋﺰﯾﺰي اﻟﻤﺘﺪرب ﺣﺎول ان ﺗﻀﻌﻪ اﻧﺖ ﺿﻤﻦ‬
‫‪ button‬ﺑﺤﯿﺚ ﻋﻨﺪﻣﺎ ﯾﻀﻐﻂ اﻟﻤﺴﺘﺨﺪم ﻋﻠﯿﻬﺎ ﺗﻘﻮم ﺑﻄﺒﺎﻋﺔ اﻟﺼﻔﺤﺔ‪ ..‬ﻟﯿﺴﺖ ﺻﻌﺒﻪ ﺗﺬﻛﺮ اﻧﻪ ﯾﻤﻜﻨﻨﺎ ﻋﻤﻞ‬
‫‪ function‬ووﺿﻊ ﺑﺪاﺧﻠﻪ ﻛﺎﺋﻦ ﻃﺒﺎﻋﺔ اﻟﺼﻔﺤﺔ وﻣﻦ ﺛﻢ اﻟﺬﻫﺎب اﻟﻰ ﻛﻮد اﻻﯾﻘﻮﻧﺔ ﻓﻲ ال ‪ HTML‬ووﺿﻊ‬
‫‪ onclick‬وﻣﺴﺎوﺗﻪ ﺑﺈﺳﻢ ال ‪ function‬وﺑﻬﺬا ﻧﻘﻮل ﻋﻨﺪﻣﺎ ﯾﻀﻐﻂ ﻧﻔﺬ ﺗﺬﻛﺮ ﻣﺎ ﺷﺮﺣﻨﺎه ﺳﺎﺑﻘﺎ ﻓﻲ اﻟـ ‪form‬‬
‫‪.‬‬

‫>"‪<html dir="rtl‬‬
‫>‪</title‬اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ>‪<head><title‬‬
‫>"‪<script type = "text/javascript‬‬
‫; )">‪: "+ navigator.appName + "<br /‬إﺻﺪار ﻣﺘﺼﻔﺤﻚ ﻫﻮ "(‪document.write‬‬
‫; ) ">‪document.write (window.screen.availWidth + "<br /‬‬
‫; )">‪document.write( window.screen.availHeight + "<br /‬‬
‫; )">‪document.write( window.screen.colorDepth + "<br /‬‬
‫>‪</script‬‬
‫>‪</head‬‬
‫>‪<body></body‬‬

‫>‪</html‬‬

‫ﻫﺬا اﻟﻤﺜﺎل ﻻ ﯾﺤﺘﺎج اﻟﻰ ﺗﺤﻠﯿﻞ ﻓﻬﻮ ﯾﺤﺘﻮي ﻋﻠﻰ ﻛﺎﺋﻨﺎت اﻟﻤﺘﺼﻔﺢ ووﺿﻌﻨﺎﻫﺎ ﻓﻲ ﺟﻤﻞ ﻃﺒﺎﻋﺔ ﻟﻜﻲ ﯾﻄﺒﻊ ﻟﻨﺎ ﻣﺎ‬
‫ﺳﻮف ﺗﻘﻮم ﺑﻪ او ﺑﻤﻌﻨﻰ اﺻﺢ ﻣﺎ ﺳﻮف ﯾﺮﺟﻌﻪ ﻟﻨﺎ ﻛﻞ ﻛﺎﺋﻦ وﺳﻮف اﺿﻊ ﺑﻌﺾ اﻟﺸﺮح ﻟﻚ ﻟﻜﻲ ﯾﺴﻬﻞ ﻋﻠﯿﻚ‬
‫ﺗﺤﻠﯿﻠﻪ ‪..‬‬

‫‪ navigator.appName‬ﻫﺬا اﻟﻜﺎﺋﻦ ﺳﻮف ﯾﻌﻮد ﻟﻨﺎ ﺑﺈﺳﻢ اﻟﻤﺘﺼﻔﺢ ﻟﺪﯾﻨﺎ وﻻﺣﻆ ﻋﻨﺪ وﺿﻌﻪ ﻓﻲ ﺟﻤﻠﺔ‬ ‫§‬
‫اﻟﻄﺒﺎﻋﺔ وﺿﻌﻨﺎه ﻛﻤﺘﻐﯿﺮ ‪.‬‬
‫‪ window.screen.availWidth‬ﻫﺬا اﻟﻜﺎﺋﻦ ﯾﻘﻮم ﺑﺎرﺟﺎع ﻋﺮض اﻟﺸﺎﺷﻪ ﻓﻲ ﺟﻬﺎز اﻟﻤﺴﺘﺨﺪم اي‬ ‫§‬
‫‪. RESOLUTION SCREEN‬‬
‫‪ window.screen.availHeight‬ﻫﺬا اﻟﻜﺎﺋﻦ ﯾﻘﻮم ﺑﺎرﺟﺎع ﻃﻮل اﻟﺸﺎﺷﻪ ﻓﻲ ﺟﻬﺎز اﻟﻤﺴﺘﺨﺪم اي‬ ‫§‬
‫‪. RESOLUTION SCREEN‬‬
‫‪ window.screen.colorDepth‬ﻫﺬا اﻟﻜﺎﺋﻦ ﯾﻘﻮم ﺑﺎرﺟﺎع ﻟﻨﺎ ﻣﻘﺪار اﻟﻌﻤﻖ ﻓﻲ اﻷﻟﻮان اﻟﻤﺴﺘﺨﺪﻣﻪ‬ ‫§‬
‫ﻓﻲ ﺟﻬﺎز اﻟﻤﺴﺘﺨﺪم أﻟﯿﺲ اﻟﻤﺴﺘﺨﺪم ﯾﺨﺘﺎر ﻓﻲ ﺟﻬﺎزه ﻣﻦ ‪ settings‬ﻓﻲ ﺧﺼﺎﺋﺺ ﻋﺮض اﻟﺸﺎﺷﻪ ال‬
‫‪ color quality‬ﻣﺜﻼ ‪ 32 bit‬او ‪ ... 16 bit‬اﻟﺦ‬

‫‪65‬‬
‫‪٦٥‬‬

You might also like