Important Announcement
PubHTML5 Scheduled Server Maintenance on (GMT) Sunday, June 26th, 2:00 am - 8:00 am.
PubHTML5 site will be inoperative during the times indicated!

Home Explore كتاب-الجافا-سكريبت-www.edlibre.com_ (1)

كتاب-الجافا-سكريبت-www.edlibre.com_ (1)

Published by Bnswaad, 2021-01-26 00:25:50

Description: كتاب-الجافا-سكريبت-www.edlibre.com_ (1)

Search

Read the Text Version

‫ﺗﻌﻠﯿﻢ اﻟﺠﺎﻓﺎ ﺳﻜﺮﺑﺖ‬ ‫‪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‬‬ ‫‪٤٥‬‬


Like this book? You can publish your book online for free in a few minutes!
Create your own flipbook