ﺗﻌﻠﯿﻢ اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ JAVASCRIPT LERNNING إﻋﺪاد : م .ﺳﺎﻣـــﻲ اﻟﺮﺑﺎﯾﻌـــﺔ By : Eng . SAMI AL-RABA’AH Email : [email protected] اﻟﻤﻤﻠﻜـﺔ اﻷردﻧﯿــﺔ اﻟﻬﺎﺷﻤﯿــﺔ © ﺟﻤﯿـــــﻊ اﻟﺤﻘــــــــــﻮق ﻣﺤﻔـــــــﻮﻇـــــــــﺔ 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 ﻟﺘﺮك ﻣﺴﺎﻓﺔ ﺑﯿﻦ ﻛﻞ ﻛﻠﻤﺔ وﻛﻠﻤﺔ ﺑﺤﯿﺚ ﺗﻈﻬﺮ ﻛﺠﺪول \\r ;)\"window.alert(\"hi \\\\ all ﻟﻮﺿﻊ ﻛﻞ ﻛﻠﻤﺔ ﺑﺴﻄﺮ وﻟﻜﻦ ﺑﺈﺧﺘﻼف ال position \\\\ ;)\"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 : ; )\"> </h3اﻟﺪوﻟﺔ اﻟﺘﻲ أدﺧﻠﺘﻬﺎ ﻟﯿﺴﺖ ﻣﻦ ﺿﻤﻦ اﻟﺨﯿﺎرات اﻟﻤﺘﺎﺣﺔ >document.writeln(\"<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 وﻋﺰﯾﺰي اﻟﻤﺴﺘﺨﺪم اﻻﻣﺮ اﻟﻄﺒﯿﻌﻲ واﻟﺒﺪﯾﻬﻲ أن ﯾﻄﺒﻊ ﺟﻤﯿﻊ اﻷﺳﻤﺎء اﻟﺘﻲ ﺑﺎﻟﻤﺼﻔﻮﻓﺔ ﻟﻜﻦ ﻫﻨﺎ اﻟﺬي ﺳﻮف ﯾﺤﺪث أﻧﻪ ﺳﻮف ﯾﻄﺒﻊ ﻓﻘﻂ أرﺑﻌﺔ أﺳﻤﺎء .وﯾﺨﺮج ﺧﺎرج ﺣﻠﻘﺔ اﻟﺘﻜﺮار ﻟﻤﺎذا ... 2٢6٦
ﻷﻧﻨﺎ وﺿﻌﻨﺎ ﺷﺮط داﺧﻞ ﺣﻠﻘﺔ اﻟﺘﻜﺮار وﻫﻮ ) ( 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 2٢7٧
ﻟﻨﺤﻠﻞ اﻟﻤﺜﺎل ﺳﻮﯾﺎ : ﻋﺮﻓﻨﺎ اﻟﻤﺘﻐﯿﺮ ) ( 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ﺗﺬﻛﺮ 2٢8٨
§ اﻟﺪوال ) : ( 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 اﻟﻤﺨﺰﻧﺔ ﺑﺪاﺧﻞ Array a[1] 90 ال Array رﻗﻢ اﻟﻤﻮﻗﻊ اﻟﻤﺴﻤﻰ Index 20 ]a[2 45 ]a[3 § ﻗﺒﻞ أن ﻧﺒﺪأ ﺑﻤﺜﺎل ﻻﺑﺪ أن أوﺿﺢ ﻟﻚ ﺷﯿﺌﺎ ﻣﻬﻢ . . . ﺑﻤﺎ أن اﻟﻤﺼﻔﻮﻓﺔ ﺗﺤﺘﻮي ﻋﻠﻰ ﻋﺪة ﻣﻮاﻗﻊ إذا ﯾﺠﺐ ﻋﻠﻲ أن أﺟﻌﻞ ﺑﺮﻧﺎﻣﺠﻲ ﯾﻤﺮ ﻋﻠﻰ ﻛﻞ ﻣﻮﻗﻊ إذا ﻫﻨﺎ ﺑﺤﺎﺟﺔ اﻟﻰ ﺣﻠﻘﺔ ﺗﻜﺮار ﻟﻜﻲ اﺳﺘﻄﯿﻊ اﻟﻤﺮور ﻋﻠﻰ ﻛﻞ ﻣﻮﻗﻊ وأﻃﺒﻌﻪ او أﻧﻔﺬه . أﻛﺜﺮﻧﺎ اﻟﺤﺪﯾﺚ . .ﻟﻨﺄﺧﺬ ﻣﺜﺎﻻ ﻓﺎﻟﻤﺜﺎل اﻟﺘﻄﺒﯿﻘﻲ واﻟﻌﻤﻠﻲ ﻫﻮ اﻟﺬي ﯾﻮﺿﺢ ﻣﺎ ﺑﻬﻢ ﻟﻚ . ﻣﺜﺎل : >\"<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(xاﻟﺘﻘﺮﯾﺐ ﻷﻛﺒﺮ ﻋﺪد ﺣﻘﯿﻘﻲ ceil(9.2) = 10.0 ceil(-9.8) = -9.0 ) cos(xﺟﯿﺐ اﻟﺘﻤﺎم )ﺟﺘﺎ( ﻟـ )(x cos(0.0) = 1.0 ) exp (xﻃﺮﯾﻘﺔ اﻷس )(ex exp(1.0) = 2.71828 exp(2.0) = 7.38906 ) floor (xاﻟﺘﻘﺮﯾﺐ ﻷﺻﻐﺮ ﻋﺪد ﺣﻘﯿﻘﻲ floor (9.2) = 9.0 floor (-9.8) = -10.0 ) log (xﻟﻮﻏﺎرﺛﻢ )(x log (2.718282) = 1.0 log (7.389056) = 2.0 ) max (x,yأﻛﺒﺮ ﻗﯿﻤﺔ ﻣﻦ ) (xو )(y max (2.3,9.7) = 9.7 max (-2.3,-9.7) = -2.3 ) min (x,yأﺻﻐﺮ ﻗﯿﻤﺔ ﻣﻦ ) (xو )(y min (2.3,9.7) = 2.3 ) (x) pow(x,yﻣﺮﻓﻮع ﻟﻸس ) (yﺗﻌﻨﻲ )(xy min (-2.3,-9.7) = -9.7 pow(2.0,7.0) = 128.0 ) round(xﺗﻘﺮﯾﺐ ) (xﻷﻗﺮب ﻋﺪد ﺣﻘﯿﻘﻲ pow(9.0,0.5) = 3.0 round(9.7) = 10 ) sin(xﺟﯿﺐ )ﺟﺎ ( ﻟـ )(x round(9.25) = 9 ) sqrt(xاﻟﺠﺬر اﻟﺘﺮﺑﯿﻌﻲ ﻟـ )(x sin(0.0) = 0.0 sqrt(900.0) = 30.0 ) tan(xﻗﺘﺎ )(x sqrt(9.0) = 3.0 tan(0.0) = 0.0 ٤٥
Search