You are on page 1of 121

‫‪ ‬‬

‫‪2‬‬
‫‪2008‬‬ ‫ﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ‬
‫اﻟﻌﺪد اﻷول ﻟﺸﻬ‬

‫ﺻﻞ‬
‫ﺧﻴﺮا وﺻ‬
‫‪ 2008‬أﺧ‬
‫ﺠﻮال ﺳﺘﺘﻮدﻳﻮ ‪8‬‬
‫اﻟﻔﻴﺠ‬

‫ﻮال ﺳﺘﻮدﻳﻮ ‪2008‬‬


‫ﻣﻘﺪﻣﺔ إﻟﻰ اﻟﺘﻘﻨﻴﻴﺎت اﻟﻘﺎدﻣﺔ ﻣﻊ اﻟﻔﻴﺠﻮ‬
‫ﺔ‬
‫ﺳﺮﻳﻌﺔ ﻋﻠﻰ ﺗﻘﻨﻴﺔ ‪Linq‬‬
‫ﺔ‬ ‫ﻧﻧﻈﺮة‬

‫‪20‬‬
‫‪008‬‬ ‫ﺟﺪﻳﺪ ااﻟﻔﻴﺠﻮال ﺑﻴﻴﺴﻚ‬

‫ﺤﻠﻲ ﻋﻠﻰ ااﻟﻨﻮع‬


‫‪ 9‬اﻻﺳﺘﺘﺪﻻل اﻟﻤﺤ‬
‫ﺮق اﻟﻤﻮﺳﻌﻌﺔ‬
‫‪ 9‬اﻟﻄﺮ‬ ‫ﻣﻠﻒ اﻟﻌﺪد‬
‫ﻟﺘﻨﻘﻴﺢ و ﻣﺸﺎﻫﺪة ﺷﻔﺮات ﻣﻣﺠﻤﻌﺎت‬ ‫‪20‬‬
‫‪008‬‬ ‫ﺳﺘﻮدﻳﻮ‬
‫إﻋﺪاد اﻟﻟﻔﻴﺠﻮال ﺳ‬
‫إﻃﺎر اﻟﻌﻌﻤﻞ ‪.‬ﻧﺖ‬

‫ﺗﻄﻮﻳﺮ ﺗﻄﺒﻴﻖ ﻣﺘﻌﺪﺪد اﻟﻄﺒﻘﺎت ‪N-Tier‬‬


‫اﻟﻔﻴﺠﻮال ﺑﻴﺴﻚ‬
‫ل‬ ‫ﺷﺮح ﻣﻌﻌﻈﻢ اﻟﺪوال اﻟﺒﺮﻣﺠﻴﺔ اﻟﻤﻮﺟﻮدة ﻓﻓﻲ‬
‫أﺣﺪاث اﻟﺘﻄﺒﻴﻖ ﻓﻲ اﻟﻔﻴﺠﻮال ﺑﺑﻴﺴﻚ ‪.‬ﻧﺖ ‪Appllication Events‬‬
‫اﻟﺮﺳﻢ ﻓﻲ اﻟﻔﻴﺠﻮﻮال ﺑﻴﺴﻚ ‪.‬ﻧﺖ‬
‫ﻢ‬ ‫ﺿﻮع‬
‫ﺳﻴﺔ ﻓﻲ ﻣﻮﺿ‬
‫ﻷﻣﻮر اﻷﺳﺎﺳ‬
‫ﺑﻌﺾ اﻷ‬
‫ﺤﺘﻮﻳﺎت‬
‫اﻟﻤﺤﺘ‬
‫ﺷﺎرﻛﻨﺎ ﻓﻲ ﻫﺬا اﻟﻌﺪﺪد‬ ‫ﷲ اﻟﻌﺘﻴﻖ‬
‫ﺳﺘﺎذ ﻋﺒﺪ اﷲ‬‫ﻣﺪﻳﺮ اﻟﻟﻤﺠﻠﺔ‪ /‬اﻷﺳ‬
‫ﻣﺤﻤﺪ ﺳﺎﻣﻣﺮ أﺑﻮ ﺳﻠﻮ‪،‬‬ ‫رﺋﻴﺲ اﻟﺘﺤﺮﻳﺮ‪ :‬وﻟﻴﻴﺪ ﺑﻮاﻟﻄﻤﻴﻦ‬
‫ﻦ‪.‬‬
‫ﺴﻴﺮي‪،‬‬‫ﺗﺮﻛﻲ اﻟﻌﺴ‬ ‫ﻓﺮﻳﻖ اﻟﻌﻤﻞ ﻋﻠﻰ اﻟﻌﺪد‪:‬‬
‫أﺣﻤﺪ ﺑﺪر‪،‬‬ ‫ﻣﺼﻄﻔﻔﻰ ﻣﺤﻤﻮد‪ ،‬ﻧﻮرﻫﺎن ﻋﺎددل‪ ،‬ﻧﺒﻬﺎن ﻧﻮر‪.‬‬
‫ﺐ‪،‬‬
‫رﻏﻴﺪ ﻃﻴﺐ‬
‫ل‪،‬‬
‫أﺣﻤﺪ ﺟﻤﺎل‬
‫ﺴﺎم اﻟﻤﻤﺠﻠﺔ‬
‫أﻗﺴ‬
‫ﻋﺼﺎم ﺣﻨﻔﻔﻲ‪،‬‬ ‫اﻟﻤﻘﺎل‬
‫ﻧﺠﻴﺐ اﻟﻤﺠﺠﻴﺪي‪،‬‬ ‫ﺗﺤﻠﻴﻴﻞ و ﺗﺼﻤﻤﻴﻢ اﻟﻨﻈﻢﻢ‬
‫ﻣﺤﻤﺪ ﺟﻤﺎل اﻟﺪﻳﻦ‪،‬‬
‫ﻟﻐﺔ ااﻟﻔﻴﺠﻮال ﺑﻴﺴﻚ ‪.‬ﻧﺖ‬
‫ﻣﺼﻄﻔﻰ إﺳﻤﺎﻋﻴﻞ‪،‬‬
‫ﻬﺎﻧﻲ‬
‫ﻣﺤﻤﺪ اﻟﻨﺒﻬ‬ ‫ﻟﻐﺔ ااﻟﺴﻲ ﺷﺎررب‬

‫ﺗﻄﺎﻟﻌﻌﻮن ﻓﻓﻲ ﻫﺬﺬا اﻟﻌﺪﺪد‬ ‫ﻧﺖ اﻟﻌﺎم‬


‫ﺑﻴﺌﺔ اﻟﺪوت ﺖ‬
‫اﻟﻔﻴﺠﻮال ﺑﻴﺴﻚ ‪6‬‬
‫ل‬ ‫ﻟﻐﺔ‬
‫‪N‬‬
‫‪N-Tier‬‬ ‫ت‬
‫اﻟﻄﺒﻘﺎت‬ ‫ﻄﺒﻴﻖ ﻣﺘﻌﺪﺪد‬
‫ﺗﻄﻮﻳﺮ ﺗﻄ‬
‫‪Application‬‬ ‫اﺳﺘﺮاﺣﺔ اﻟﻘﺎررئ‬
‫ﺟﺪﻳﺪ اﻟﻔﻔﻴﺒﻲ ‪/2008‬اﻟﻄﺮق ﻟاﻟﻤُﻮَﺳِّﻌﺔ‬ ‫ﻣﻠﻒ اﻟﻌﺪد‬
‫ﻲ‬
‫اﻟﻤﺤﻠﻲ‬ ‫‪ Extensio‬و اﻻﺳﺘﺪﺪﻻل‬
‫‪E‬‬ ‫‪on Metthods‬‬ ‫ﺮوﺳﻮﻓﺖ‬
‫أدوات و ﺗﻘﻨﻴﺎﺎت ﻣﺎﻳﻜﺮ‬
‫ت‬
‫اﻟﻨﻮع‬
‫ﻋﻠﻰ ع‬
‫ﺎت اﻟﻌﺎم‬
‫ﻗﻮاﻋﺪ اﻟﺒﻴﺎﻧ ت‬
‫ﺪ‬
‫ﻓﻲ اﻟﻔﻴﺠﻮال‬
‫ﻈﻢ اﻟﺪوال اﻟﺒﺮﻣﺠﻴﺔ اﻟﻤﻤﻮﺟﻮدة ﻲ‬ ‫ﺷﺮح ﻣﻌﻈ‬
‫اﻟﻤﻨﺘﺪى‬
‫ى‬ ‫ر‬
‫أﺧﺒﺎر‬
‫ﺑﻴﺴﻚ ‪.‬‬ ‫ﻣﺴﺎﺑﺑﻘﺎت اﻟﻤﻨﺘﺘﺪى‬

‫ﻟﺘﻨﻘﻴﺢ اﻟﺸﻔﺮات اﻟﻤﺼﺪرﻳﺔ ﻹﻃﺎر ﻋﻤﻞ ‪.‬ﻧﺖ‬


‫ﺢ‬ ‫ﺳﺘﻮدﻳﻮ ‪08‬‬
‫‪200‬‬ ‫إﻋﺪاد اﻟﻔﻴﺠﻮال ﺳ‬

‫ﺸﺎرﻳﻊ اﻷﻋﻋﻀﺎء اﻟﻤﻤﻤﻴﺰة‬


‫ﻣﺸ‬

‫‪Tra‬‬
‫‪affic‬‬ ‫‪-EED‬‬
‫‪E‬‬ ‫ﺼﺮي‬
‫ﺳﺔ اﻟﻤﺼ‬
‫اﻟﻤﺸﺮوعع اﻟﻔﺎﺋﺰ ﺑﺎﻟﻟﻤﺮﻛﺰ اﻷوول ﻓﻲ ﻳﻮﻮم اﻟﻬﻨﺪﺳ‬
‫‪Mo‬‬
‫‪onitorin‬‬
‫‪ng Syste‬‬
‫‪em Model‬‬

‫‪              ‬‬ ‫ﺸﻬﺮﻳﺔ ﻟﻠﻠﻤﻮﻗﻊ و ﻧﺘﺎﺋﺠﻬﺎ‬


‫اﻟﻤﺴﺎﺎﺑﻘﺎت اﻟﺸ‬

‫‪2‬‬
‫‪ ‬‬

‫اﻟﺤﻤﺪ ﷲ‪ ،‬واﻟﺼﻼة واﻟﺴﻼم ﻋﻠﻰ ﻣﺤﻤﺪ ﺑﻦ ﻋﺒﺪ اﷲ و ﻋﻠﻰ آﻟﻪ وﺻﺤﺒﻪ وﻣﻦ واﻻه‪ ...‬أﻣﺎ ﺑﻌﺪ‪.‬‬

‫ﺑﻔﻀﻞ ﻣﻦ اﷲ ﺗﻌﺎﻟﻰ‪ ،‬وﺑﺘﻮﻓﻴﻖ وﺳﺪاد ﻣﻨﻪ ﻋﺰ وﺟﻞ‪ ،‬ﻳﻘﺪم ﻣﻨﺘﺪى ﻓﻴﺠﻮال ﺑﻴﺴﻚ‪ ،‬اﻟﻤﻮﻗﻊ اﻟﻌﺮﺑﻲ‬
‫اﻷول اﻟﻤﺘﺨﺼﺺ ﻓﻲ ﻫﺬه اﻟﻠﻐﺔ ﻟﻠﻘﺎرئ اﻟﻌﺮﺑﻲ اﻟﻌﺪد اﻷول ﻣﻦ ﻣﺠﻠﺘﻪ اﻟﺪورﻳﺔ واﻟﺘﻲ ﻧﺄﻣﻞ أن ﺗﻜﻮن‬
‫ﻣﻮاﻓﻘﺔ ﻟﻄﻤﻮﺣﺎت ﻣﺤﺒﻲ ﻫﺬه اﻟﻠﻐﺔ ﻋﻤﻮﻣﺎً و أﻋﻀﺎء وزوار اﻟﻤﻨﺘﺪى ﺧﺼﻮﺻﺎً ‪ ،‬واﻟﺘﻲ ﺟﺎءت ﺑﺎﻟﻌﺪﻳﺪ‬
‫ﻣﻦ اﻟﻤﻮﺿﻮﻋﺎت واﻟﻔﻮاﺋﺪ اﻟﻤﺘﻔﺮﻗﺔ إﻟﻰ ﺟﺎﻧﺐ اﻟﺘﺴﻠﻴﺔ واﻟﺘﺮﻓﻴﻪ ﻟﺘﻀﻴﻒ ﻟﻤﻨﺘﺪﻳﺎت اﻹﻧﺘﺮﻧﺖ ﺑﻌﻀﺎً‬
‫ﻣﻦ اﻟﺰاد اﻟﻌﻠﻤﻲ واﻟﺜﻘﺎﻓﻲ اﻟﺬي ﻳﺒﺤﺚ ﻋﻨﻪ رواد ﻫﺬه اﻟﻤﻨﺘﺪﻳﺎت‪.‬‬

‫وﻻ ﻳﻔﻮﺗﻨﻲ ﺑﻬﺬه اﻟﻤﻨﺎﺳﺒﺔ أن أﻧﻮه إﻟﻰ اﻟﻨﺠﺎح اﻟﻜﺒﻴﺮ اﻟﺬي ﺣﻘﻘﻪ اﻟﻤﻨﺘﺪى ﺧﻼل ﻓﺘﺮة وﺟﻴﺰة ﻣﻦ‬
‫اﻓﺘﺘﺎﺣﻪ اﻟﺜﺎﻧﻲ ﺣﻴﺚ ﺗﺠﺎوز ﻋﺪد اﻷﻋﻀﺎء ﻋﺸﺮون أﻟﻒ ﻋﻀﻮ ﻓﻲ ﻓﺘﺮة ﻻ ﺗﺘﻌﺪى ﺳﺒﻌﺔ أﺷﻬﺮ‪،‬‬
‫وﺗﺠﺎوز ﻋﺪد اﻟﺰوار اﻟﻴﻮﻣﻲ أﻟﻔﻲ زاﺋﺮ ‪ ،‬وﻛﻞ ﻫﺬا ﻳﺪل ﻋﻠﻰ ﺣﺠﻢ اﻟﻔﺮاغ اﻟﺬي ﻳﺴﺪه اﻟﻤﻨﺘﺪى ﻓﻲ ﻣﺠﺎل‬
‫ﺗﺨﺼﺼﻪ ﻋﻠﻰ ﺷﺒﻜﺔ اﻻﻧﺘﺮﻧﺖ و اﻟﻤﻮاﻗﻊ اﻟﺘﻌﻠﻴﻤﻴﺔ اﻟﻌﺮﺑﻴﺔ‪.‬‬

‫وﺑﺎﺳﻢ إدارة ﻣﻮﻗﻊ ﻓﻴﺠﻮال ﺑﻴﺴﻚ ﻟﻠﻌﺮب ‪ vb4arab.com‬وﺑﺎﺳﻢ ﻣﺸﺮﻓﻴﻪ وأﻋﻀﺎءه أﺗﻘﺪم‬
‫ﺑﺎﻟﺸﻜﺮ اﻟﺠﺰﻳﻞ وﺑﺎﻟﺪﻋﺎء ﺑﺎﻟﺘﻮﻓﻴﻖ ﻟﻔﺮﻳﻖ اﻟﺘﺤﺮﻳﺮ ﻟﻤﺠﻠﺔ ﻣﻨﺘﺪى ﻓﻴﺠﻮال ﺑﻴﺴﻚ ﺑﻘﻴﺎدة اﻷﺳﺘﺎذ وﻟﻴﺪ‬
‫ﺑﻮاﻟﻄﻤﻴﻦ واﻟﺬي ﺑﺬل اﻟﻜﺜﻴﺮ ﻣﻦ ﺟﻬﺪه ووﻗﺘﻪ ‪ -‬ﺟﺰاه اﷲ ﺧﻴﺮاً ‪ -‬ﻟﻴﻈﻬﺮ ﻫﺬا اﻟﻌﻤﻞ ﻟﻠﻮﺟﻮد‪،‬‬
‫و ﻛﺬﻟﻚ ﻟﻜﻞ ﻣﻦ اﻷﺧﻮة اﻟﻜﺮام ﻣﺼﻄﻔﻰ ﻣﺤﻤﻮد‪ ،‬واﺋﻞ‪ ،‬ﻧﺒﻬﺎن ﻧﻮر‪ ،‬ﻧﻮرﻫﺎن ﻋﺎدل‪ ،‬ﻫﺎﻧﻲ ﻛﻤﺎ ﻻ‬
‫أﻧﺴﻰ أن أﺷﻜﺮ اﻷﺳﺘﺎذ اﻟﻤﻬﻨﺪس أﺣﻤﺪ ﺟﻤﺎل اﻟﻤﺸﺮف اﻟﻌﺎم ﻋﻠﻰ اﻟﻤﻨﺘﺪى واﻟﺬي ﻗﺎم ﺑﺪﻋﻢ ﻫﺬا‬
‫اﻟﻔﺮﻳﻖ و وﻓﺮ ﻟﻪ ﻛﻞ ﻣﺎ ﻳﺤﺘﺎﺟﻪ ﻣﻦ إﻣﻜﺎﻧﻴﺎت و ﺗﻮﺟﻴﻪ‪.‬‬

‫وﺧــﺘﺎﻣـﺎً أﺗـﻘـﺪم ﺑﺎﻟﺸــﻜــﺮ اﻟﺠـﺰﻳﻞ ﻟﺠـــﻤــﻴــﻊ ﻣﺸــﺮﻓــﻲ وأﻋـــﻀﺎء و زوار ﻣﻨﺘــﺪى ﻓﻴﺠـــﻮال ﺑﻴــﺴـﻚ‬
‫ﺟــﻤـﻴـﻌﺎً ﻛـﻞ ﺣـﺴـﺐ ﺟﻬﺪه وﻣـﺸﺎرﻛـﺘﻪ ﻓﻲ اﻟﻤﻨـﺘــﺪى‪ ،‬ﻓﻬـﻢ اﻟﻮﻗﻮد اﻟﺤﻘﻴﻘﻲ ﻟﻨﺸﺎط اﻟﻤﻨﺘﺪى وﻫﻢ‬
‫ﺳﺮ ﻧﺠﺎﺣﻪ وﺗﻔﻮﻗﻪ‪ ،‬آﻣﻠﻴﻦ ﻣﻦ اﷲ ﻋﺰ وﺟـﻞ أن ﻳﺸﺎرك اﻟﺠﻤﻴﻊ ﻓﻲ ﺗﻄﻮﻳﺮ اﻟﻤﺠـﻠـﺔ و اﻟﻤـﺸﺎرﻛﺔ‬
‫ﻓﻲ إﻧﻤﺎﺋﻬﺎ ﻟﻴﻌﻢ اﻟﺨﻴﺮ ﻋﻠﻰ ﺟﻤﻴﻊ اﻟﻤﺒﺮﻣﺠﻴﻦ اﻟﻌﺮب ‪.‬‬
‫‪.‬‬
‫أﺧﻮﻛﻢ ‪ /‬ﻋﺒﺪ اﷲ اﻟﻌﺘﻴﻖ‪.‬‬
‫‪ ‬‬

‫‪ ‬‬ ‫‪ ‬‬

‫‪ Visual Studio 2008‬أﺧﻴﺮا وﺻﻞ‬

‫ﻗﺎﻣﺖ ﺷﺮﻛﺔ ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ ﺑﺘﺎرﻳﺦ ‪ 2007-11-19‬ﺑﻄﺮح اﻹﺻﺪارة اﻟﺠﺪﻳﺪة ﻣﻦ ﻓﻴﺠﻮل ﺳﺘﻮدﻳﻮ واﻟﺘﻲ ﺗﺤﻤﻞ اﻻﺳﻢ‬
‫‪ Visual Studio 2008‬واﻟﺘﻲ ﺗﺘﻀﻤﻦ اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﺘﺤﺴﻴﻨﺎت ﻋﻠﻰ ﺻﻌﻴﺪ ﺑﻴﺌﺔ اﻟﺘﻄﻮﻳﺮ وﻟﻐﺎت اﻟﺒﺮﻣﺠﺔ ﻛﻤﺎ راﻓﻖ ﻃﺮح ﻫﺬه‬
‫اﻹﺻﺪارة اﻟﺠﺪﻳﺪة ﻃﺮح إﺻﺪارة ﺟﺪﻳﺪة ﻣﻦ إﻃﺎر ﻋﻤﻞ ‪ .Net Framework 3.5‬وﺗﻮﺟﻬﺖ ﻫﺬه اﻟﻨﺴﺨﺔ اﻟﺠﺪﻳﺪة ﻟﺘﻄﻮﻳﺮ ﻣﺠﺎل‬
‫واﺳﻊ ﻣﻦ اﻟﺘﻄﺒﻴﻘﺎت ﺑﺪءا ﺑﺘﻄﺒﻴﻘﺎت اﻟﻮﻳﺐ ﻣﺮورا ﺑﺎﻟﺘﻄﺒﻴﻘﺎت اﻟﺨﺎﺻﺔ ﺑـ ‪ Windows Vista‬و ‪Windows Server‬‬
‫‪ 2008‬واﻧﺘﻬﺎء ﺑﻨﻈﺎم ‪ Office 2007‬وﻣﻨﺼﺎت أﺧﺮى ﻛﺪﻋﻢ ‪ Ajax‬ﻓﻲ ﺗﻄﺒﻴﻘﺎت ‪ ASP .net‬ﻣﺜﻼ‪.‬‬

‫ﺣﻴﺚ ﻗﺪﻣﺖ ﻫﺬه اﻹﺻﺪارة ﻣﻦ ﻓﻴﺠﻮل ﺳﺘﻮدﻳﻮ رؤﻳﺔ ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ ﻋﻦ ﺗﻄﺒﻴﻘﺎت اﻟﺰﺑﻮن اﻟﺬﻛﻴﺔ ﻣﻤﻜﻨﺔ اﻟﻤﻄﻮرﻳﻦ ﻣﻦ ﺑﻨﺎء‬
‫ﺗﻄﺒﻴﻘﺎت ﻣﺘﺼﻠﺔ ﺑﺴﺮﻋﺔ ﺑﻨﻮﻋﻴﺔ ﻋﺎﻟﻴﺔ وﺗﺠﺮﺑﺔ ﻣﺴﺘﺨﺪم ﻏﻨﻴﺔ‪ .‬ﻓﻤﻊ ﻫﺬه اﻹﺻﺪار اﻟﺠﺪﻳﺪة ﺳﺘﺠﺪ اﻟﻤﻨﻈﻤﺎت أن اﻟﻮﺻﻮل ﻟﻠﻤﻌﻠﻮﻣﺔ‬
‫وﺗﺤﻠﻴﻠﻬﺎ أﺻﺒﺢ أﺳﻬﻞ ﺑﻜﺜﻴﺮ ﻣﻤﺎ ﻗﺒﻞ ﻣﻤﻜﻨﺔ إﻳﺎﻫﻢ ﻣﻦ اﺗﺨﺎذ ﻗﺮارات ﻣﺆﺛﺮة ﻗﻴﻤﺎ ﻳﺘﻌﻠﻖ ﺑﺎﻟﻌﻤﻞ ﻓﻬﻲ ﺗﻤﻜﻨﻬﻢ ﻣﻦ إﻧﺸﺎء ﺗﻄﺒﻴﻘﺎت‬
‫أﻛﺜﺮ أﻣﻨﺎ وإدارة و ﻣﻮﺛﻮﻗﻴﺔ ﺑﺴﺮﻋﺔ اﻛﺒﺮ ﻫﺬا ﻣﻊ اﻻﺳﺘﻔﺎدة اﻟﻜﺎﻣﻠﺔ ﻣﻦ ﺟﻤﻴﻊ ﻣﻴﺰات ‪ Windows Vista‬و ‪Office 2007‬‬

‫وﻳﻤﻜﻨﻨﺎ ﺳﺮد ﺑﻌﺾ اﻟﺘﻄﻮﻳﺮات ﻋﻠﻰ ﻣﺴﺘﻮى ﺑﻴﺌﺔ اﻟﺘﻄﻮﻳﺮ ﻓﻲ ﻫﺬه اﻹﺻﺪارة اﻟﺠﺪﻳﺪة‪:‬‬

‫إﻣﻜﺎﻧﻴﺔ ﺗﻬﺠﻴﺮ اﻹﻋﺪادات ﻣﻦ اﻹﺻﺪارة ‪ 2005‬إﻟﻰ اﻹﺻﺪارة ‪2008‬‬ ‫•‬


‫ﻋﻨﺪ إﻧﺸﺎء ‪ Community Components‬ﻳﻤﻜﻨﻚ ﺗﺤﺪﻳﺪ ﻓﻴﻤﺎ إذا ﻛﺎﻧﺖ ﺳﺘﻌﻤﻞ ﻋﻠﻰ ‪ 2005‬أو ‪ 2008‬أو ﻛﻠﻴﻬﻤﺎ‬ ‫•‬
‫ﻣﻌﺎ‬
‫إﺿﺎﻓﺔ دﻋﻢ ﻟـ ‪ Ajax Development‬ﻟﺪﻋﻢ اﻟﺨﺪﻣﺎت اﻟﺘﻲ ﺗﻌﻤﻞ ﺑﺘﻘﻨﻴﺔ ‪Ajax‬‬ ‫•‬
‫دﻋﻢ ‪ Windows Presentation Foundation (WPF) Applications‬وذﻟﻚ ﻣﻦ ﺧﻼل ﺗﻄﺒﻴﻘﺎت‬ ‫•‬
‫)‪ WPF Application‬و ‪ WPF Browser Application‬و ‪ WPF Custom Control Library‬و‬
‫‪(WPF User Control Library‬‬
‫دﻋﻢ ‪ Multitargeting‬اﻟﺘﻲ ﺗﻤﻜﻨﻚ ﻣﻦ ﻛﺘﺎﺑﺔ ﺗﻄﺒﻴﻘﺎت ﺗﻌﻤﻞ ﻋﻠﻰ أﻛﺜﺮ ﻣﻦ ﻓﺮﻳﻢ وورك )‪ 2.0‬و ‪ 3.0‬و ‪(3.5‬‬ ‫•‬
‫ﺗﺤﺴﻴﻨﺎت ﻋﻠﻰ اﻟﻨﺸﺮ ﺑﺘﻘﻨﻴﺔ ‪ ClickOnce‬اﻟﺘﻲ أﺻﺒﺤﺖ ﺗﺪﻋﻢ ﺗﻄﺒﻴﻘﺎت ‪ WPF‬واﻟﺘﻮاﻗﻴﻊ اﻟﺮﻗﻤﻴﺔ ﻟـ ‪Application‬‬ ‫•‬
‫‪ Manifest‬و اﻟـ ‪ Manifest‬اﻟﺨﺎﺻﺔ ﺑـ ‪ Vista UAC‬ودﻋﻢ إﺻﺪارات اﻟﻔﺮﻳﻢ وورك اﻟﻤﺨﺘﻠﻔﺔ‬
‫إﻣﻜﺎﻧﻴﺔ ﻛﺘﺎﺑﺔ )‪ cascading style sheets (CSS‬ﻣﻊ اﻷدوات اﻟﺨﺎﺻﺔ ﺑﺪﻋﻤﻬﺎ‬ ‫•‬

‫آﺧﺮ أﺧﺒﺎر اﻟﺴﺎﺣﺔ‬


‫إﻋﺪاد وﻟﻴﺪ ﺑﻮاﻟﻄﻤﻴﻦ‬
‫‪ ‬‬

‫‪ ‬‬
‫‪ Visual Studio 2008‬أﺧﻴﺮا وﺻﻞ‬
‫‪ ‬‬
‫ﻣﺤﻤﺪ ﺳﺎﻣﺮ أﺑﻮ ﺳﻠﻮ‬ ‫إﺿﺎﻓﺔ ‪  IntelliSense for Jscript and ASP.NET AJAX‬‬ ‫•‬
‫‪ ‬‬ ‫‪ ‬‬
‫إﻣﻜﺎﻧﻴﺔ ﻓﻠﺘﺮﻩ ‪ Object  Browser‬ﻹﻇﻬﺎر اﻟﻤﻌﻠﻮﻣﺎت اﻟﺨﺎﺻﺔ ﺑﺄي ﻓﺮﻳﻢ وورك ﻧﺮﻳﺪهﺎ ﻓﻘﻂ وآﺬﻟﻚ ﺗﺤﺴﻴﻦ اﻟﺒﺤﺚ ﻓﻴﻪ ﻟﻴﺴﺘﻬﺪف ﻧﺴﺨﺔ ﻣﻌﻴﻨﺔ ﻣﻦ‬ ‫•‬
‫اﻟﻔﺮﻳﻢ وورك ‪ ‬‬
‫ﺗﻘﺪﻳﻢ ‪ O/R Designer‬اﻟﺬي ﻳﺴﺎﻋﺪ اﻟﻤﻄﻮرﻳﻦ ﻋﻨﺪ ﺗﻄﻮﻳﺮ أﻏﺮاض ‪ Linq‬و ‪ Sql‬و ‪  Linq to Sql‬‬ ‫•‬
‫ﺗﺤﺴﻴﻨﺎت ﻋﺪة ﻋﻠﻰ ‪ Dataset Designer‬وﺗﻘﺪﻳﻢ ‪  TableAdapterManager‬‬ ‫•‬
‫ﺗﻘﺪﻳﻢ ﻟﻐﺔ اﻻﺳﺘﻌﻼﻣﺎت اﻟﻤﻀﻤﻨﺔ ‪ Linq‬اﻟﻨﻲ أﺿﺎﻓﺖ ﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ وﺑﺨﺎﺻﺔ ﻟﻐﺘﻲ ‪ C#‬و ‪ Visual  Basic‬إﻣﻜﺎﻧﻴﺎت اﺳﺘﻌﻼﻣﻴﺔ ﻗﻮﻳﺔ ﻋﻠﻰ اﻟﻌﺪﻳﺪ‬ ‫•‬
‫ﻣﻦ اﻷﻏﺮاض ﻣﺜﻞ اﻟﻤﺠﻤﻮﻋﺎت واﻟﻤﺼﻔﻮﻓﺎت واﻟﻔﺌﺎت و ‪ Sql Databases‬و ‪ XML‬وﻗﻮاﻋﺪ اﻟﺒﻴﺎﻧﺎت ‪ ‬‬
‫ﺗﻘﺪﻳﻢ ‪ Client Application Services‬اﻟﺘﻲ ﺗﻤﻜﻦ اﻟﺘﻄﺒﻴﻘﺎت اﻟﻤﻌﺘﻤﺪة ﻋﻠﻰ وﻳﻨﺪوز ﻣﻦ اﻟﻮﺻﻮل اﻟﺴﻬﻞ ﻟـ ‪  ASP .net‬‬ ‫•‬
‫ﺗﻘﺪﻳﻢ ﻧﻮﻋﺎن ﺟﺪﻳﺪان ﻣﻦ ﻣﺸﺎرﻳﻊ اﻟﺘﻘﺎرﻳﺮ ‪ Reports  Application  Template‬و ‪ ASP.NET  Reports  Web  Site  Template‬و ﺗﻘﺪﻳﻢ‬ ‫•‬
‫‪ XML‬آﻨﻮع ﺑﻴﺎﻧﺎت ﺟﺪﻳﺪ ‪ ‬‬
‫ﺗﻘﺪﻳﻢ ‪ Object  Initializers‬اﻟﺘﻲ ﺗﻤﻜﻨﻚ ﻣﻦ ﺗﻌﺮﻳﻒ وﺗﺤﺪﻳﺪ ﺧﺼﺎﺋﺺ ﻏﺮض ﻣﻌﻘﺪ ﺿﻤﻦ ﺗﻌﺒﻴﺮ واﺣﺪ و ﺑﺪون اﺳﺘﺪﻋﺎء واﺿﺢ ﻟﻠﺒﺎﻧﻲ وﺗﺴﺘﺨﺪم‬ ‫•‬
‫ﻟﺘﻌﺮﻳﻒ ﻣﺘﻐﻴﺮات ﻣﻦ اﻷﻧﻮاع اﻟﻤﻌﺮوﻓﺔ واﻟﻤﺠﻬﻮﻟﺔ ‪ ‬‬
‫ﺗﻘﺪﻳﻢ اﻷﻧﻮاع اﻟﻤﺠﻬﻮﻟﺔ ‪ :Anonymous  Types‬اﻟﺘﻲ ﺗﻤﻜﻨﻚ ﻣﻦ إﻧﺸﺎء اﻷﻏﺮاض ‪ Objects‬ﺑﺪون آﺘﺎﺑﺔ ﺗﻌﺮﻳﻒ ﻓﺌﺔ ‪ Class  definition‬ﻣﻦ أﺟﻞ‬ ‫•‬
‫ﻧﻮع اﻟﺒﻴﺎﻧﺎت وﻋﻮﺿﺎ ﻋﻦ ذﻟﻚ ﻳﻮﻟﺪ اﻟﻤﺘﺮﺟﻢ اﻟﻔﺌﺔ ﻣﻦ أﺟﻠﻚ وﻟﻦ ﻳﻜﻮن ﻟﻠﻔﺌﺔ اﺳﻤﺎ ﻗﺎﺑﻼ ﻟﻼﺳﺘﺨﺪام ﺣﻴﺚ ﺗﻜﻮن هﺬﻩ اﻟﻔﺌﺎت ﻣﻮروﺛﺔ ﻣﺒﺎﺷﺮة ﻣﻦ‬
‫‪ Object‬وﺗﻤﺘﻠﻚ اﻟﺨﺼﺎﺋﺺ اﻟﺘﻲ ﺗﺤﺪدهﺎ ﻋﻨﺪ ﺗﻌﺮﻳﻒ اﻟﻐﺮض ‪ Object‬وﺑﻤﺎ أن ﻧﻮع اﻟﺒﻴﺎﻧﺎت ﻟﻢ ﻳﺘﻢ ﺗﺤﺪﻳﺪﻩ ﻳﺘﻢ اﻹﺷﺎرة إﻟﻴﻪ ﻋﻠﻰ أﻧﻪ ﻧﻮع ﻣﺠﻬﻮل‪ ‬‬
‫‪  .type‬‬
‫اﻻﺳﺘﺪﻻل اﻟﻤﺤﻠﻲ ﻋﻠﻰ اﻟﻨﻮع ‪ :Local  Type  Inference‬ﻳﺴﺘﺨﺪم اﻟﻤﺘﺮﺟﻢ ﻓﻲ ﻓﻴﺠﻮل ﺑﻴﺴﻚ ‪ 2008‬اﻻﺳﺘﺪﻻل ﻋﻠﻰ اﻟﻨﻮع ‪Type  Inference‬‬ ‫•‬
‫ﻟﺘﺤﺪﻳﺪ ﻧﻮع اﻟﻤﺘﻐﻴﺮات اﻟﻤﺤﻠﻴﺔ اﻟﺘﻲ ﺗﻢ اﻟﺘﺼﺮﻳﺢ ﻋﻨﻬﺎ ﺑﺪون اﺳﺘﺨﺪام ﻓﻘﺮة ‪ As‬ﻓﻲ ﺗﻌﺒﻴﺮ اﻟﺘﺼﺮﻳﺢ ﺣﻴﺚ ﻳﺴﺘﺪل اﻟﻤﺘﺮﺟﻢ ﻋﻠﻰ ﻧﻮع اﻟﻤﺘﻐﻴﺮ ﻣﻦ ﻧﻮع‬
‫اﻟﺘﻌﺒﻴﺮ اﻟﺬي ﻳﻀﺒﻂ ﻗﻴﻤﺔ ذﻟﻚ اﻟﻤﺘﻐﻴﺮ ﻣﻤﺎ ﻳﻮﻓﺮ إﻣﻜﺎﻧﻴﺔ ﺗﻌﺮﻳﻒ اﻟﻤﻐﻴﺮات ﺑﺪون ﺗﺤﺪﻳﺪ ﻧﻮﻋﻬﺎ ‪ ‬‬

‫)‪Object Relational Designer (O/R Designer‬‬


‫ﻳﺰودﻧﺎ ‪ O/R Designer‬ﺑﺴﻄﺢ رﺳﻮﻣﻲ ﺑﺴﻴﻂ ﻹﻧﺸﺎء ﻓﺌﺎت ‪ Linq to Sql Entity Classes ‬واﻟﻌﻼﻗﺎت ﺑﻴﻦ اﻷﻏﺮاض اﻟﻤﺨﺘﻠﻔﺔ ﻓﻲ ﻗﺎﻋﺪة اﻟﺒﻴﺎﻧﺎت‬
‫ﻣﻨﺘﺠﺎ ‪ DataContext‬ﺗﺴﺘﺨﺪم ﻹرﺳﺎل واﺳﺘﻘﺒﺎل اﻟﺒﻴﺎﻧﺎت ﺑﻴﻦ اﻟـ‪   Classes‬و ﻗﺎﻋﺪة اﻟﺒﻴﺎﻧﺎت‪ .‬آﻤﺎ أﻧﻪ ﻳﻨﻈﻢ اﻟﺘﻌﺎﻣﻞ ﺑﻴﻦ اﻟﻄﺮاﺋﻖ اﻟﻤﺨﺘﻠﻔﺔ ﻓﻲ اﻟـ‬
‫‪ DataContext‬وﺑﻴﻦ اﻟﻮﻇﺎﺋﻒ واﻹﺟﺮاءات اﻟﻤﺨﺰﻧﺔ ﻓﻲ ﻗﻮاﻋﺪ اﻟﺒﻴﺎﻧﺎت ﻣﻦ أﺟﻞ اﻟﻌﻮدة ﺑﺎﻟﺒﻴﺎﻧﺎت إﻟﻰ‪   Classes‬آﻤﺎ أﻧﻪ ﻳﻮﻓﺮ إﻣﻜﺎﻧﻴﺔ ﺗﺼﻤﻴﻢ اﻟﻌﻼﻗﺎت‬
‫واﻟﻮراﺛﺔ ﺑﻴﻦ‪ Classes‬‬

‫‪TableAdapterManager‬‬
‫هﻮ ﻋﻨﺼﺮ ﺟﺪﻳﺪ ﻓﻲ ﻓﻴﺠﻮل ﺳﺘﻮدﻳﻮ ‪ 2008‬ﻣﺒﻨﻲ ﻋﻠﻰ اﻟﻤﻴﺰات اﻟﻤﻮﺟﻮدة ﻟﻠﺒﻴﺎﻧﺎت ﻓﻲ اﻟـ ‪ Datasets‬و اﻟـ ‪ TableAdapter‬ﻣﺰودا إﻣﻜﺎﻧﻴﺔ ﻟﺤﻔﻆ‬
‫اﻟﺒﻴﺎﻧﺎت ﻓﻲ اﻟﺠﺪاول اﻟﻤﺮﺗﺒﻄﺔ ﺣﻴﺚ ﻳﺴﺘﺨﺪم ﻋﻼﻗﺎت ‪ foreign‐key‬اﻟﺘﻲ ﺗﺮﺑﻂ اﻟﺠﺪاول ﺑﺒﻌﻀﻬﺎ ﻟﺘﺤﺪﻳﺪ اﻟﺘﺮﺗﻴﺐ اﻟﺼﺤﻴﺢ ﻹرﺳﺎل أواﻣﺮ اﻟﺤﺬف واﻹدﺧﺎل‬
‫واﻟﺘﺤﺪﻳﺚ ﻣﻦ اﻟـ ‪ Dataset‬إﻟﻰ ﻗﺎﻋﺪة اﻟﺒﻴﺎﻧﺎت ﺑﺪون أن ﻳﺘﻢ ﺧﺮق ﺷﺮوط ‪ foreign‐key‬اﻟﺘﻲ ﺗﺤﻜﻢ ﺗﺼﺮﻓﺎت ﻗﺎﻋﺪة اﻟﺒﻴﺎﻧﺎت ﻋﻨﺪ اﻹدﺧﺎل أو اﻟﺘﺤﺪﻳﺚ أو‬
‫اﻟﺤﺬف ﻋﻠﻰ اﻟﺴﺠﻼت اﻟﻤﺮﺗﺒﻄﺔ واﻟﺘﻲ ﺗﻤﻨﻌﻚ ﻣﻦ ﺣﺬف اﻟﺴﺠﻞ اﻷب ﻋﻨﺪﻣﺎ ﻳﻜﻮن ﻟﻪ ﺳﺠﻼت أﺑﻨﺎء وﺗﺪﻋﻰ ﻋﻤﻠﻴﺔ اﻟﺤﻔﻆ ﺑﺎﺳﺘﺨﺪام‬
‫‪ TableAdapterManager‬ﺑـ ‪ .Hierarchical  Update‬ﻓﻌﻤﻠﻴﺔ ﺣﻔﻆ اﻟﺒﻴﺎﻧﺎت ﻓﻲ ﺟﺪاول ﻣﺮﺗﺒﻄﺔ ﻣﻌﺎ ﻣﻌﻘﺪة أآﺜﺮ ﻣﻦ ﺣﻔﻆ اﻟﺒﻴﺎﻧﺎت إﻟﻰ ﺟﺪول ﻣﺴﺘﻘﻞ‬
‫وذﻟﻚ ﺑﺴﺒﺐ أن أي ﻋﻤﻠﻴﺔ ﻋﻠﻰ أي ﺟﺪول ﺳﺘﺆﺛﺮ ﻋﻠﻰ ﺑﻘﻴﺔ اﻟﺠﺪاول ﻟﺬا ﻻﺑﺪ ﻣﻦ ﺗﻨﻔﻴﺬ هﺬﻩ اﻟﻌﻤﻠﻴﺔ ﻋﻠﻰ اﻟﺠﺪاول ﺑﺎﻟﺘﺮﺗﻴﺐ اﻟﻤﻨﺎﺳﺐ ﻣﻦ أﺟﻞ ﺗﺠﻨﺐ ﺧﺮق ﺷﺮوط‬
‫‪ foreign‐key‬اﻟﻤﺤﺪدة ﻓﻲ ﻗﺎﻋﺪة اﻟﺒﻴﺎﻧﺎت‬

‫‪WPF Designer‬‬
‫ﻳﻤﻜﻨﻚ ﻣﻦ اﺳﺘﺨﺪام ﺑﻴﺌﺔ اﻟﺘﻄﻮﻳﺮ ﻟﺘﺼﻤﻴﻢ ﺗﻄﺒﻴﻘﺎت و أدوات ‪ WPF‬داﻣﺠﺎ اﻟﺘﺤﺮﻳﺮ اﻵﻧﻲ ﻟﻠﻐﺔ ‪ Xaml‬ﻣﻊ إﻣﻜﺎﻧﻴﺔ اﻟﺘﺼﻤﻴﻢ اﻟﺮﺳﻮﻣﻲ اﻟﻤﺤﺴﻦ ﺣﻴﺚ‬
‫ﻳﻤﻜﻨﻚ رؤﻳﺔ اﻟﺘﻌﺪﻳﻼت ﻋﻠﻰ ﻧﺺ ‪ Xaml‬وأﻧﺖ ﺗﻘﻮم ﺑﺎﻟﺘﺤﺮﻳﺮ اﻟﺮﺳﻮﻣﻲ ﻟﻠﻨﺎﻓﺬة آﻤﺎ ﻳﻤﻜﻨﻚ اﻻﻧﺘﻘﺎل اﻟﺴﺮﻳﻊ ﺑﻴﻦ اﻟﺘﺤﺮﻳﺮ اﻟﺮﺳﻮﻣﻲ واﻟﻨﺼﻲ ﺑﺴﺮﻋﺔ‬

‫‪Reports Wizard‬‬
‫ﺳﺘﺠﺪﻩ ﻳﺸﺘﻐﻞ ﺗﻠﻘﺎﺋﻴﺎ ﻋﻨﺪﻣﺎ ﺗﻘﻮم ﺑﺈﻧﺸﺎء أﺣﺪ ﻣﺸﺎرﻳﻊ اﻟﺘﻘﺎرﻳﺮ ‪ Reports  Application‬و ‪ ASP.NET  Reports‬وهﻮ ﻳﻘﻮدك ﻋﺒﺮ ﻋﺪة ﺧﻄﻮات‬
‫ﻹﻧﺸﺎء اﻟﺘﻘﺮﻳﺮ اﻷﺳﺎﺳﻲ ﻣﻤﺎ ﻳﻤﻜﻨﻚ ﻣﻦ ﺗﺤﺪﻳﺪ ﻣﺼﺪر اﻟﺒﻴﺎﻧﺎت وإﻋﺎدة ﺗﺤﺪﻳﺪ اﻟـ ‪ Datasets‬واﺧﺘﻴﺎر ﻧﻮع وﻣﻈﻬﺮ اﻟﺘﻘﺮﻳﺮ ﺛﻢ ﻳﻤﻜﻨﻚ ﺗﺤﺴﻴﻦ ﻣﻈﻬﺮ اﻟﺘﻘﺮﻳﺮ‬
‫ﻳﺪوﻳﺎ ﻋﺒﺮ ﻣﺼﻤﻢ اﻟﺘﻘﺎرﻳﺮ ﺑﻌﺪ اﻻﻧﺘﻬﺎء ﻣﻦ ﺧﻄﻮات اﻟﻤﻌﺎﻟﺞ‬

‫‪5‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫‪ ‬‬

‫‪ ‬‬
‫‪ Visual Studio 2008‬أﺧﻴﺮا وﺻﻞ‬
‫‪ ‬‬
‫ﻣﺤﻤﺪ ﺳﺎﻣﺮ أﺑﻮ ﺳﻠﻮ‬
‫ﺑﻴﺌﺔ اﻟﺘﻄﻮﻳﺮ‬
‫‪ ‬‬ ‫‪ ‬‬
‫ﻧﻼﺣﻆ أوﻻ اﻟﺸﺒﻪ اﻟﻜﺒﻴﺮ ﻓﻲ اﻟﺸﻜﻞ ﺑﻴﻦ ﺑﻴﺌﺘﻲ اﻟﺘﻄﻮﻳﺮ ﻓﻲ ‪ 2005‬و ‪ 2008‬ﻣﻊ ﻋﺪم إﻏﻔﺎل اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﺘﺤﺴﻴﻨﺎت اﻟﻤﻘﺪﻣﺔ ﻋﻠﻴﻬﺎ ﻓﻘﺪ‬
‫أﺻﺒﺢ ﺑﺎﻹﻣﻜﺎن ﺗﻬﺠﻴﺮ اﻹﻋﺪادات ﻣﻦ ﺑﻴﺌﺔ ﺗﻄﻮﻳﺮ ‪ 2005‬إﻟﻰ ﺑﻴﺌﺔ ﺗﻄﻮﻳﺮ ‪ 2008‬ﺑﺴﻬﻮﻟﺔ وﻧﻼﺣﻆ اﺧﺘﻔﺎء اﻷواﻣﺮ ‪ Ask a Question ‬و‪ Check ‬‬
‫‪Question  Status‬اﻟﺬﻳﻦ ﺗﻤﺖ إزاﻟﺘﻬﻤﺎ ﻣﻦ أﺟﻞ ﺗﻘﺪﻳﻢ ﺑﻨﺪ ﺟﺪﻳﺪ ﻓﻲ ﻗﺎﺋﻤﺔ ‪ Help‬ﺑﺎﺳﻢ ‪ MSDN  Forums‬آﻤﺎ ﺗﻤﺖ إزاﻟﺔ ﺟﻤﻴﻊ ﻣﺤﺘﻮﻳﺎت ﻗﺎﺋﻤﺔ‬
‫‪ Community‬وأﺻﺒﺤﺖ ﺑﻴﺌﺔ اﻟﺘﻄﻮﻳﺮ ﺗﺴﺘﺨﺪم ﺻﻨﺎدﻳﻖ اﻟﺤﻮار اﻟﺨﺎﺻﺔ ﺑﺎﻟﻨﻮاﻓﺬ ﺑﺪﻻ ﻋﻦ اﺳﺘﺨﺪاﻣﻬﺎ ﻟﺼﻨﺎدﻳﻖ ﺣﻮار ﻣﺨﺼﺼﺔ ووﺳﻊ اﻟـ ‪Class ‬‬
‫‪ Designer‬ﻟﻴﺸﻤﻞ دﻋﻤﺎ ﻣﺤﺪودا ﻟﻠﻐﺔ ‪ C++‬إﺿﺎﻓﺔ إﻟﻰ دﻋﻤﻪ ﻟﻠﻐﺘﻲ ‪ C#‬و ‪ VB‬آﻤﺎ ﻓﻲ اﻹﺻﺪارة اﻟﺴﺎﺑﻘﺔ آﻤﺎ أﻧﻚ ﺳﺘﺠﺪ أﻧﻮاﻋﺎ ﺟﺪﻳﺪة ﻣﻦ‬
‫اﻟﻤﺸﺎرﻳﻊ ﻣﺜﻞ ‪ Web  Application  Projects‬و دﻋﻢ ﻟـ ‪ AJAX  Development‬وﻧﻮﻋﺎن ﺟﺪﻳﺪان ﻟﻤﺸﺎرﻳﻊ اﻟﺘﻘﺎرﻳﺮ ‪Reports ‬‬
‫‪ Application‬و ‪ ASP.NET  Reports‬وﻣﺸﺎرﻳﻊ ‪ WPF‬ﻣﻦ ‪ WPF  Application‬و ‪ WPF  Browser  Application‬و ‪WPF  Custom ‬‬
‫‪ Control  Library‬و ‪ WPF  User  Control  Library‬وﻗﺪم ﻣﺼﻤﻢ ﺧﺎص ﻟﻮاﺟﻬﺎت ‪ WPF‬إﺿﺎﻓﺔ إﻟﻰ ﺗﺤﺴﻴﻨﺎت ﻋﻠﻰ اﻟﻨﺸﺮ ﺑﺘﻘﻨﻴﺔ‬
‫‪ ClickOnce‬أو ﺑﺎﺳﺘﺨﺪام ‪ Windows  Installer‬ﺷﻤﻠﺖ دﻋﻢ ‪ WPF‬ودﻋﻤﺎ ﻟﻠﻨﺴﺦ اﻟﻤﺨﺘﻠﻔﺔ ﻣﻦ اﻟﻔﺮﻳﻢ وورك ‪ Multitargeting‬ودﻋﻤﺎ ﻟـ‬
‫‪ .Vista  UAC‬إﺿﺎﻓﺔ إﻟﻰ ذﻟﻚ ﻓﻘﺪ أﺿﻴﻔﺖ ﺑﻌﺾ اﻷدوات ﻟﺪﻋﻢ )‪ cascading  style  sheets  (CSS‬ﻓﻤﻌﻈﻢ اﻟﻌﻤﻞ ﻓﻲ اﻟـ ‪ CSS‬أﺻﺒﺢ ﻳﺘﻢ اﻵن‬
‫ﻋﺒﺮ ﻣﺎ ﻳﺴﻤﻰ ﺑـ ‪ CSS  Properties  grid‬إﺿﺎﻓﺔ إﻟﻰ اﻷﻟﻮاح اﻟﺠﺎﻧﺒﻴﺔ اﻟﺨﺎﺻﺔ ﺑـ ‪ Apply  Styles ‬و‪   Manage  Styles‬آﻤﺎ وﺳﻌﺖ ﺧﺎﺻﻴﺔ‬
‫‪ Intellisense‬ﻟﺘﺸﻤﻞ ‪ ASP.NET AJAX‬و ‪ Jscript‬وأﻳﻀﺎ ‪.XML‬‬

‫وﻓﻴﻤﺎ ﻳﺘﻌﻠﻖ ﺑـ ‪ Object  Browser‬ﻓﻘﺪ ﺗﻤﺖ إﺿﺎﻓﺔ ﺧﺎﺻﻴﺔ ‪ Multitargeting‬إﻟﻴﻪ ﻓﺄﺻﺒﺢ ﺑﺎﻹﻣﻜﺎن ﻓﻠﺘﺮﺗﻪ ﻟﻌﺮض ﻧﺴﺨﺔ ﻣﺤﺪد ﻣﻦ اﻟﻔﺮﻳﻢ‬
‫وورك ﻣﻊ إﻣﻜﺎﻧﻴﺔ اﻟﺒﺤﺚ ﻓﻲ ﻧﺴﺨﺔ ﻣﻌﻴﻨﺔ ﻣﻦ اﻟﻔﺮﻳﻢ وورك أﻳﻀﺎ‪.‬‬

‫آﻤﺎ أﻧﻚ ﺳﺘﺠﺪ ﺑﻌﺾ اﻟﺘﺤﺴﻴﻨﺎت ﻓﻴﻤﺎ ﻳﺘﻌﻠﻖ ﺑﺎﻟﺘﻘﺎرﻳﺮ ﻓﻤﺼﻤﻢ اﻟﺘﻌﺎﺑﻴﺮ اﻟﺨﺎص ﺑﺎﻟﺘﻘﺎرﻳﺮ أﺻﺒﺢ ﻳﻘﺪم ﺑﻌﺾ اﻷﻣﺜﻠﺔ اﻟﻤﻤﻜﻦ اﺳﺘﺨﺪاﻣﻬﺎ آﻤﺎ أﺻﺒﺢ‬
‫اﻟﺘﺤﻜﻢ ‪ RSClientPrint‬ﻣﺘﻮﻓﺮا ﻋﻨﺪﻣﺎ ﻳﻜﻮن اﻟﺘﺤﻜﻢ ‪ ASP.NET  ReportViewer‬ﻣﻮﺟﻬﺎ ﻟﻠﻤﻌﺎﻟﺠﺔ اﻟﻤﺤﻠﻴﺔ آﻤﺎ أﺻﺒﺖ ﺗﺤﻜﻤﺎت‬
‫‪ ReportViewer‬ﺗﻘﻮم ﺑﻀﻐﻂ اﻟﺘﻘﺮﻳﺮ ﻋﻨﺪﻣﺎ ﻳﺘﻢ ﺗﺼﺪﻳﺮﻩ إﻟﻰ ﺻﻴﻐﺔ ‪PDF‬‬

‫وﻓﻴﻤﺎ ﻳﺘﻌﻠﻖ ﺑﺒﻨﺎء اﻟﻤﺸﺎرﻳﻊ ﻓﻘﺪ أﺻﺒﻚ ﺑﺈﻣﻜﺎﻧﻚ ﺗﺤﺪﻳﺪ أي ﻧﺴﺨﺔ ﻣﻦ اﻟﻔﺮﻳﻢ وورك ﺳﻴﺘﻢ ﺑﻨﺎء ﻣﺸﺮوﻋﻚ ﻟﻴﺴﺘﻬﺪﻓﻬﺎ ﻣﻊ إﻣﻜﺎﻧﻴﺎت ﺧﺎﺻﺔ ﻣﻦ أﺟﻞ‬
‫اﻷﻧﻈﻤﺔ ﻣﺘﻌﺪدة اﻟﻤﻌﺎﻟﺠﺎت ﺳﻮاء آﺎﻧﺖ ‪ MultiCore‬أو ‪Seperate‬‬

‫‪Linq‬‬
‫ﺗﻀﻴﻒ ‪ Linq‬إﻣﻜﺎﻧﻴﺎت اﺳﺘﻌﻼﻣﻴﺔ ﻗﻮﻳﺔ ﻟﻠﻐﺔ اﻟﺒﺮﻣﺠﺔ ﻓﻬﻲ ﺗﻘﺪم إﻣﻜﺎﻧﻴﺎت ﺑﺴﻴﻄﺔ وﻗﻮﻳﺔ ﻋﻨﺪﻣﺎ ﺗﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻌﺪﻳﺪ ﻣﻦ أﻧﻮاع اﻟﺒﻴﺎﻧﺎت‬
‫إﺿﺎﻓﺔ إﻟﻰ إرﺳﺎل اﻻﺳﺘﻌﻼم إﻟﻰ ﻗﺎﻋﺪة اﻟﺒﻴﺎﻧﺎت آﻲ ﻳﻌﺎﻟﺞ إﺿﺎﻓﺔ إﻟﻰ إﻣﻜﺎﻧﻴﺔ اﻟﺘﻌﺎﻣﻞ ﻣﻊ ﺻﻴﻐﺔ ﻣﺨﺘﻠﻔﺔ ﻟﻼﺳﺘﻌﻼم ﻟﻜﻞ ﻧﻮع ﻣﻦ أﻧﻮاع اﻟﺒﻴﺎﻧﺎت‬
‫اﻟﺘﻲ ﺗﻘﻮم ﺑﺎﻟﺒﺤﺚ ﻋﻨﻬﺎ‪ .‬ﺣﻴﺚ ﺗﻘﺪم ‪ Linq‬اﻻﺳﺘﻌﻼﻣﺎت آﺠﺰء ﻣﻦ اﻟﻠﻐﺔ ﻣﺴﺘﺨﺪﻣﺔ ﺻﻴﻐﺔ ﻣﻮﺣﺪة ﻟﻼﺳﺘﻌﻼم ﺑﻐﺾ اﻟﻨﻈﺮ ﻋﻦ ﻧﻮع اﻟﺒﻴﺎﻧﺎت‬
‫اﻟﻤﺴﺘﺨﺪم ﻣﻤﺎ ﻳﻤﻜﻨﻚ ﻣﻦ اﻻﺳﺘﻌﻼم ﻋﻦ اﻟﺒﻴﺎﻧﺎت ﻣﻦ ﻗﺎﻋﺪة ﺑﻴﺎﻧﺎت ‪ SQL  Server‬أو ‪ XML‬أو اﻟﻤﺠﻤﻮﻋﺎت واﻟﻤﺼﻔﻮﻓﺎت ﻓﻲ اﻟﺬاآﺮة أو ‪ADO ‬‬
‫‪ .net  Datasets‬أو أي ﻣﺼﺪر ﺑﻴﺎﻧﺎت ﻣﺤﻠﻲ أو ﺑﻌﻴﺪ ﻳﺪﻋﻢ ‪ Linq‬ﺣﻴﺚ ﻳﻤﻜﻨﻚ ﻋﻤﻞ ذﻟﻚ آﻠﻪ ﺑﺎﺳﺘﺨﺪام ﻋﻨﺎﺻﺮ اﻟﻠﻐﺔ اﻟﺸﺎﺋﻌﺔ ﻷن اﺳﺘﻌﻼﻣﺎﺗﻚ‬
‫أﺻﺒﺤﺖ ﻣﻜﺘﻮﺑﺔ ﺑﻬﺎ وﻧﺘﺎﺋﺞ اﻻﺳﺘﻌﻼم ﺗﻌﺎد آﺄﻏﺮاض أﻧﻮاع ﺑﻴﺎﻧﺎت ﻗﻮﻳﺔ داﻋﻤﺔ ‪ IntelliSense‬ﻣﻤﺎ ﻳﺴﺮع ﻣﻦ آﺘﺎﺑﺘﻚ ﻟﻠﻜﻮد وأﺻﺒﺢ اآﺘﺸﺎﻓﻚ‬
‫ﻟﻸﺧﻄﺎء ﻓﻲ اﻻﺳﺘﻌﻼﻣﺎت ﻋﻨﺪ ﺗﺮﺟﻤﺔ اﻟﻤﺸﺮوع ﺑﺪﻻ ﻣﻦ وﻗﺖ اﻟﺘﻨﻔﻴﺬ آﻤﺎ أن اﺳﺘﻌﻼﻣﺎت ‪ Linq‬ﻳﻤﻜﻦ أن ﺗﻜﻮن ﻣﺼﺪرا ﻻﺳﺘﻌﻼﻣﺎت إﺿﺎﻓﻴﺔ ﻟﻤﺰﻳﺪ‬
‫ﻣﻦ اﻟﺪﻗﺔ ﻓﻲ اﻟﺒﺤﺚ‪ .‬ﻣﻊ إﻣﻜﺎﻧﻴﺔ رﺑﻄﻬﺎ ﻣﻊ اﻟﺘﺤﻜﻤﺎت ﻟﺘﻤﻜﻴﻦ اﻟﻤﺴﺘﺨﺪم ﻣﻦ اﺳﺘﻌﺮاض وﺗﻌﺪﻳﻞ ﻧﺘﺎﺋﺞ اﻻﺳﺘﻌﻼم ﺑﺴﻬﻮﻟﺔ آﻞ ذﻟﻚ ﻳﺄﺗﻲ ﻋﺒﺮ ﻋﺪة‬
‫ﻣﺰودات ﺧﺎﺻﺔ ﺑـ ‪ Linq‬ﻟﺘﻮﻓﻴﺮ هﺬﻩ اﻟﻤﻴﺰات اﻟﻤﺨﺘﻠﻔﺔ ﻓﺎﻟﻤﺰود ‪ Linq  to  Objects‬ﻳﻤﻜﻨﻚ ﻣﻦ اﻻﺳﺘﻌﻼم ﻓﻲ اﻷﻏﺮاض اﻟﻤﺨﺘﻠﻔﺔ ﻣﺜﻞ اﻟﻔﺌﺎت‬
‫واﻟﻤﺼﻔﻮﻓﺎت واﻟﻤﺠﻤﻮﻋﺎت ﻃﺎﻟﻤﺎ أﻧﻬﺎ ﺗﺪﻋﻢ اﻟﻮاﺟﻬﺔ ‪ IEnumerable‬أو اﻟﻮاﺟﻬﺔ )‪ IEnumerable(T‬واﻟﻤﺰود ‪ Linq  to  SQL‬اﻟﺬي ﻳﻤﻜﻨﻚ ﻣﻦ‬
‫اﻻﺳﺘﻌﻼم ﻣﻦ ﻗﻮاﻋﺪ اﻟﺒﻴﺎﻧﺎت أو اﻟﺘﺤﺪﻳﺚ إﻟﻴﻬﺎ واﻟﻤﺰود ‪ Linq  to  XML‬اﻟﺬي ﻳﻤﻜﻨﻚ ﻣﻦ اﻟﺘﻌﺎﻣﻞ ﻣﻊ ‪ XML‬ﻣﻦ ﺣﻴﺚ اﻟﻘﺮاءة واﻟﺤﻔﻆ ﺑﺴﻬﻮﻟﺔ‬
‫وأﺧﻴﺮا اﻟﻤﺰود ‪ Linq to Dataset‬اﻟﺬي ﻳﻤﻜﻨﻚ ﻣﻦ اﻻﺳﺘﻌﻼم ﻣﻦ ‪ ADO .net Datasets‬واﻟﺘﻌﺪﻳﻞ ﻋﻠﻴﻬﺎ‬

‫‪Client Application Services‬‬


‫ﺗﻘﺪم ‪ Client  Application  Services‬ﻃﺮﻳﻘﺔ ﻣﺒﺴﻄﺔ ﻟﻠﻮﺻﻮل إﻟﻰ ﺧﺪﻣﺎت اﻟﺪﺧﻮل ﻟـ ‪ Ajax‬و ‪ Asp  .net‬إﺿﺎﻓﺔ إﻟﻰ اﻷدوار ‪ Roles‬و‬
‫‪ profile services‬ﻣﻦ داﺧﻞ ﺗﻄﺒﻴﻘﺎت ‪ Windows Forms‬أو ‪ WPF‬وﺗﺄﺗﻲ ﺿﻤﻦ ‪ ASP.NET 2.0 AJAX Extensions‬اﻟﺘﻲ ﺗﻢ ﺗﻀﻤﻴﻨﻬﺎ ﻓﻲ‬
‫ﻓﻴﺠﻮل ﺳﺘﻮدﻳﻮ ‪ 2008‬ﻣﻊ اﻟﻔﺮﻳﻢ وورك ‪ 3.5‬وهﻲ ﺗﺆﻣﻦ ﻟﺘﻄﺒﻴﻘﺎت ﻣﺘﻌﺪدة ﺗﻌﺘﻤﺪ ﻋﻠﻰ وﻳﻨﺪوز ووﻳﺐ اﻟﻤﺸﺎرآﺔ ﻋﻠﻰ ﻣﻌﻠﻮﻣﺎت اﻟﻤﺴﺘﺨﺪم وإدارﺗﻪ‬
‫ﻣﻦ ﺧﻼل ﺧﺎدم واﺣﺪ وهﻲ ﺗﺘﻀﻤﻦ ﻣﺰودات ﺧﺪﻣﺔ زﺑﻮن اﻟﺘﻲ ﺗﺮﺗﺒﻂ ﻣﻊ ﺧﺪﻣﺎت ﺗﻮﺳﻌﺎت وﻳﺐ ﻟﺘﻮﻓﻴﺮ ﺗﻌﺮﻳﻒ ﺑﺴﻴﻂ ﻟﻠﺰﺑﻮن وإﻣﻜﺎﻧﻴﺔ اﻟﺒﺮﻣﺠﺔ‬
‫اﻟﺴﻬﻠﺔ واﻟﺪﻋﻢ ﺧﻼل اﻻﻧﻘﻄﺎع و‪ ‬اﻟﺘﻜﺎﻣﻞ ﻣﻊ ﻣﺼﻤﻢ اﻹﻋﺪادات اﻟﺨﺎﺻﺔ ﺑﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ‬

‫‪6‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫‪ ‬‬

‫‪ ‬‬
‫ﻣﻘﺪﻣﺔ إﻟﻰ اﻟﺘﻘﻨﻴﺎت اﻟﻘﺎدﻣﺔ ﻣﻊ اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ‪2008‬‬
‫‪ ‬‬
‫ﻣﺤﻤﺪ اﻟﻨﺒﻬﺎﻧﻲ‬
‫‪ ‬‬ ‫أﺻﺒﺢ ‪ ، 2008‬وﻗﺪ ﺑﺪأ اﻟﺤﺪﻳﺚ ﻳﻜﺜﺮ‬
‫هﺬﻩ هﻲ ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ ‪ ،‬ﺗﺤﺪﻳﺚ داﺋﻢ وﺗﻄﻮر ﻣﺴﺘﻤﺮ ﻻ ﻳﻌﺮف اﻟﺘﻮﻗﻒ أو اﻟﻜﻠﻞ ‪ ،‬اﻹﺻﺪار اﻷﻗﺪم ﻣﻦ ‪  Visual Studio‬‬
‫آﺜﻴﺮا ﺣﻮل هﺬا اﻹﺻﺪار ﻓﻲ اﻵوﻧﺔ اﻷﺧﻴﺮة وﻣﺎ ﻳﺤﻤﻠﻪ ﻣﻦ ﺗﺤﺴﻴﻨﺎت وﺗﻄﻮﻳﺮات ﻳﻌﻮل ﻋﻠﻴﻬﺎ اﻟﻤﺒﺮﻣﺠﻮن واﻟﻤﻄﻮرون ‪ ،‬ﻓﻤﺎ هﻲ اﻟﺘﻄﻮﻳﺮات اﻟﻘﺎدﻣﺔ ﻣﻊ ﻧﺴﺨﺔ ال‬
‫‪ 2008‬ﻣﻦ اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ؟‬
‫ﺗﻘﻮل ﺷﺮآﺔ ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ ‪ -‬آﻤﺎ ﻳﺘﻀﺢ ﻣﻦ اﻟﺼﻮرة أﻋﻼﻩ ‪ -‬ﺑﺄن اﻹﺻﺪار اﻟﺠﺪﻳﺪ ﻳﺴﺘﻬﺪف اﻻﺳﺘﻔﺎدة ﻣﻦ ﻣﻴﺰات ﻣﻨﺘﺠﻲ ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ ‪ : Office‬وآﺬﻟﻚ ﻧﻈﺎﻣﻬﺎ‬
‫اﻟﺠﺪﻳﺪ ‪ Vista‬وآﺄن هﺬا اﻹﺻﺪار ﺳﻴﻜﻮن هﻮ اﻹﺻﺪار اﻷآﺜﺮ ﺗﻮاﻓﻘﺎ ﻣﻌﻬﻤﺎ‪ ،‬وهﺬا اﻷﻣﺮ واﺿﺢ ﻓـ ‪ Visual Studio 2005‬ﻻ ﻳﻌﻤﻞ ﺗﺤﺖ ‪ Vista‬دون وﺟﻮد‬
‫ﺣﺰﻣﻪ اﻟﺘﺤﺪﻳﺜﺎت اﻟﺨﺪﻣﻴﺔ اﻷوﻟﻰ ‪ SP1‬اﻟﻨﺴﺨﺔ اﻟﺨﺎﺻﺔ ﺑﻔﻴﺴﺘﺎ‪ ،‬آﻤﺎ اﻧﻪ ﻳﺴﺘﻐﻞ اﻹﺻﺪار ‪ 3.5‬ﻣﻦ إﻃﺎر اﻟﻌﻤﻞ‪net Framework .‬‬
‫ﺗﻘﺪم هﺬﻩ اﻟﺼﻔﺤﺔ ‪،‬اﻟﻜﺜﻴﺮ ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎت اﻟﺘﻔﺼﻴﻠﻴﺔ ﺣﻮل اﻟﺘﻄﻮﻳﺮات اﻟﻘﺎدﻣﺔ ﻣﻊ اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ‪ ،2008‬ﺷﺎﻣﻠﻪ آﻞ ﺟﺰء ﻣﻦ ‪Visual Studio‬‬
‫وﻟﻐﺎت اﻟـ ‪ net Framework‬آﻠﻬﺎ ‪ ،‬وﺗﺠﺪون ﻓﻴﻬﺎ ﻣﻠﻔﺎت ‪ xps‬ﺗﺤﺘﻮي ﻋﻠﻰ اﻟﻜﺜﻴﺮ ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎت‪ ،‬وﻟﻘﺮاءة هﺬﻩ اﻟﺼﻴﻐﺔ اﻟﺠﺪﻳﺪة ﻣﻦ اﻟﻤﻠﻔﺎت‬
‫ﻳﻤﻜﻨﻜﻢ ﺗﺤﻤﻴﻞ ﻋﺎرض هﺬﻩ اﻟﺼﻴﻐﺔ ﺑﺎﻟﻨﻘﺮ هﻨﺎ واﺧﺘﻴﺎر اﻹﺻﺪار اﻟﻤﻨﺎﺳﺐ ﻟﻚ وﻟﻨﻈﺎﻣﻚ ‪ -‬ﻟﻠﻤﺰﻳﺪ ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎت ﺣﻮل هﻴﺌﺔ ‪ xps‬اﻟﺠﺪﻳﺪة اﻧﻘﺮ هﻨﺎ‪.‬‬
‫ﻳﻘﺪم هﺬا اﻟﻤﻠﻒ ﻧﻈﺮﻩ ﻋﺎﻣﻪ ‪ Overview‬ﻋﻦ اﻹﺻﺪار اﻟﻘﺎدم ‪ ،‬وﺳﻨﺤﺎول هﻨﺎ اﺧﺘﺼﺎر هﺬا اﻟﻤﻠﻒ وإﻟﻘﺎء اﻟﻀﻮء وﻧﻈﺮﻩ ﺳﺮﻳﻌﺔ وﻣﻠﺨﺼﻪ ﻷهﻢ‬
‫اﻟﻤﻴﺰات واﻟﺘﺤﺴﻴﻨﺎت اﻟﺘﻲ ﺳﺘﺘﻮﻓﺮ ﻓﻲ هﺬا اﻹﺻﺪار‪.‬‬
‫وﺳﺄﻋﻮد ﻗﺮﻳﺒﺎ ﻹآﻤﺎل هﺬا اﻟﻤﻮﺿﻮع اﻟﻤﻬﻢ ﻟﻲ وﻟﻜﻢ آﻤﺒﺮﻣﺠﻲ وﻣﻄﻮري ‪ .net Framework.‬وﻟﻜﻦ ﻗﺒﻞ ذﻟﻚ أﻗﺪم ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﺮواﺑﻂ ورواﺑﻂ‬
‫ﺑﻴﺌﺔ اﻟﺘﺤﻤﻴﻞ ﻟﻤﻦ أراد ﺗﺠﺮﻳﺐ هﺬا اﻹﺻﺪار‪.‬‬

‫‪ -‬زﻳﺎدة اﻹﻧﺘﺎﺟﻴﺔ‬
‫ﻳﻘﺪم اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ‪ 2008‬أدوات ﺗﺴﺎﻋﺪ ﻋﻠﻰ اﺧﺘﺼﺎر اﻟﻮﻗﺖ اﻟﺬي ﺗﺤﺘﺎﺟﻪ ﻟﻠﻘﻴﺎم ﺑﻤﻬﺎم ﺑﺮﻣﺠﻴﺔ ﻃﻮﻳﻠﺔ ﺧﺼﻮﺻﺎ ﺗﻠﻚ اﻟﻤﺘﻌﻠﻘﺔ ﺑﻘﻮاﻋﺪ اﻟﺒﻴﺎﻧﺎت ‪،‬‬
‫آﻤﺎ ﻳﻘﺪم أدوات ﺗﺴﺎﻋﺪ ﻋﻠﻰ ﺗﻘﻠﻴﺺ اﻟﻮﻗﺖ واﻟﻤﻬﺎم اﻟﺒﺮﻣﺠﻴﺔ اﻟﻌﺎدﻳﺔ‪.‬‬
‫‪ -‬اﻟﺘﺤﻜﻢ ﺑﺪوره ﺣﻴﺎة اﻟﻤﺸﺮوع‬
‫ﻳﻘﺪم اﻹﺻﺪار ‪ Team System‬أدوات وﺗﺤﺴﻴﻨﺎت ﺟﺪﻳﺪة ﻟﻠﺘﺤﻜﻢ ﺑﺪورﻩ ﺣﻴﺎﻩ اﻟﻤﺸﺮوع وأﺟﺰاﺋﻪ‪ ،‬آﻤﺎ ﻳﺴﻬﻞ ﻋﻤﻠﻴﻪ اﻟﺘﻮاﺻﻞ ﻣﻊ اﻟﻌﻤﻼء ﺑﻐﻴﻪ‬
‫ﺗﻄﻮﻳﺮ وﺗﺤﺴﻴﻦ اﻟﻤﺸﺮوع‪.‬‬
‫‪ -‬اﺳﺘﻐﻼل أﺣﺪث اﻟﺘﻘﻨﻴﺎت واﻻﻧﺪﻣﺎج ﻣﻌﻬﺎ‬
‫ﻳﻘﺪم اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ‪ 2008‬دﻋﻤﺎ آﺒﻴﺮا ﻷﺣﺪث اﻟﺘﻘﻨﻴﺎت ﻣﻦ ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ وﺑﺸﻜﻞ أﺳﺎﺳﻲ أﻳﻀﺎ ‪ ،‬وﻣﻦ أهﻢ اﻟﺘﻘﻨﻴﺎت اﻟﺘﻲ ﻳﺪﻋﻤﻬﺎ هﻲ ‪Office‬‬
‫‪ 2007‬و ‪ Windows Vista‬وﺗﺴﺨﻴﺮ إﻣﻜﺎﻧﻴﺎﺗﻬﻤﺎ وﻣﺎ ﻳﺘﻤﺘﻌﺎن ﺑﻪ ﻣﻦ أﻣﺎن وﺑﻨﻴﻪ ﻣﺘﻴﻨﺔ وﻓﻌﺎﻟﻴﺔ ﻓﻲ اﻷداء ﻹﻧﺘﺎج ﺗﻄﺒﻴﻘﺎت ﺗﺴﺘﻔﻴﺪ ﻣﻦ هﺬﻩ اﻟﻤﻴﺰات‬
‫وﺗﻜﻮن ﻓﻌﺎﻟﻪ ﻓﻲ أداﺋﻬﺎ‪.‬‬
‫أﻫﻢ اﻟﺘﻄﻮﻳﺮت اﻟﺘﻲ ﻳﺄﺗﻲ ﺑﻬﺎ اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ‪2008‬‬
‫ﻳﺄﺗﻲ اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ‪ 2008‬ﺑﺘﻄﻮﻳﺮات ﺟﺪﻳﺪة ‪ ،‬ﻣﻨﻬﺎ‬
‫‪ -‬ﺗﺤﻜﻢ ﻗﻮي ﺑﺎﻟﺒﻴﺎﻧﺎت‬
‫ﻳﺪﻋﻢ اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ‪ 2008‬ﺗﻘﻨﻴﺔ ‪ LINQ‬واﻟﺘﻲ هﻲ اﺧﺘﺼﺎر ﻟﻠﻌﺒﺎرة ‪ : Language Integrated Query‬واﻟﺘﻲ ﺗﻌﻨﻲ ﺑﺎﻟﻌﺮﺑﻴﺔ ‪ :‬ﻟﻐﺔ‬
‫اﻻﺳﺘﻔﺴﺎرات اﻟﻤﺘﻜﺎﻣﻠﺔ ‪ -‬وهﺬا ﻣﻮﺿﻮع ﻃﻮﻳﻞ ﻟﻠﺤﺪﻳﺚ ﻋﻨﻪ ﻗﺪ ﻧﺘﺤﺪث ﻋﻨﻪ ﻻﺣﻘﺎ إذا ﺗﻮاﻓﺮ ﻟﻨﺎ اﻟﻮﻗﺖ ‪ -‬آﻤﺎ ﻳﺤﺘﻮي اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ‪ 2008‬ﻋﻠﻰ‬
‫ﺗﻄﻮﻳﺮات آﺒﻴﺮة أﻳﻀﺎ ﻓﻲ‪.ADO.NET‬‬
‫‪ -‬دﻋﻢ أﻛﺒﺮ ﻟﺘﻄﺒﻴﻘﺎت وﻳﺐ‬
‫وهﻞ ﺗﺤﺘﺎج هﺬﻩ اﻟﺘﻄﺒﻴﻘﺎت دﻋﻢ أآﺜﺮ ﻣﻦ اﻵن اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ‪ 2008‬ﻳﻘﻮل ﻧﻌﻢ !! ﻳﻘﻒ اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ‪ 2008‬ﺷﺎﻣﺨﺎ ﻟﻴﻘﻮل ‪ :‬أﻗﺪم دﻋﻤﺎ‬
‫ﻣﺘﻜﺎﻣﻼ ﻟـ ‪ IIS 7.0‬واﻟﺬي ﻇﻬﺮ ﻣﻊ وﻳﻨﺪوز ﻓﻴﺴﺘﺎ ! ‪ ،‬أﻳﻀﺎ اﻟﻤﺰﻳﺪ ﻣﻦ اﻟﺪﻋﻢ ﻟﺘﻘﻨﻴﺔ ‪ AJAX‬ﻓﻲ ﺗﻄﺒﻴﻘﺎت وﻳﺐ اﻟﻌﻤﻴﻞ ‪ ،‬واﻟﻤﺰﻳﺪ ﻣﻦ اﻟﺪﻋﻢ واﻷﻣﺎن‬
‫ﻓﻲ ﻣﺨﺘﻠﻒ اﻟﺘﻘﻨﻴﺎت اﻟﺘﻲ أوﻓﺮهﺎ‪.‬‬
‫‪ -‬ﺗﺤﻜﻢ أﻛﺒﺮ ﺑﺪوره ﺣﻴﺎه اﻟﻤﺸﺮوع ‪ALM‬‬
‫ﺗﻜﻠﻤﻨﺎ ﻋﻦ هﺬﻩ اﻟﻨﻘﻄﺔ ﻣﻦ ﻗﺒﻞ‪ ،‬ﻟﻜﻦ هﻨﺎ ﻣﺎ ﺳﻨﻘﻮﻟﻪ هﻮ ‪ :‬ﻳﻤﻜﻨﻚ اﻹﺻﺪار ‪ Team System‬ﻣﻦ اﻟﺘﺤﻜﻢ اآﺒﺮ ﺑﺎﻟﻤﺸﺮوع واﻟﺘﻮاﺻﻞ ﺑﺎﻟﻌﻤﻼء ﻟﻀﻤﺎن‬
‫اﻟﺤﺼﻮل اﻟﻨﺘﻴﺠﺔ اﻟﻤﺮﻏﻮﺑﺔ ﻣﻦ اﻟﺘﻄﺒﻴﻖ ﻣﻦ اﻟﻌﻤﻼء وﻣﺪراء ﺗﻘﻨﻴﺔ اﻟﻤﻌﻠﻮﻣﺎت‪.‬‬
‫‪ -‬اﺳﺘﻬﺪاف‪Windows Vista & .net Framework 3.5 :‬‬
‫ﻳﻌﺪ اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ‪ 2008‬اﻹﺻﺪار اﻟﺮﺳﻤﻲ اﻟﻤﻮﺟﻪ ﻟﺘﻄﻮﻳﺮ ﺗﻄﺒﻴﻘﺎت ﺗﻌﻤﻞ ﺑﺎﺳﺘﺨﺪام ‪ Windows Vista & .net Framework 3.5‬وهﺬا‬
‫هﻮ ﻣﺎ ﻳﻔﺘﻘﺮﻩ اﻹﺻﺪار اﻷﻗﺪم ) اﻗﺼﺪ ‪ ، ( 2005‬ﻓﻬﻮ ﻳﺴﺘﻐﻞ آﻞ ﺻﻐﻴﺮة وآﺒﻴﺮة ﻓﻲ هﺎﺗﻴﻦ اﻟﺒﻴﺌﺘﻴﻦ اﻟﻤﺘﺼﻠﺘﻴﻦ واﻟﻤﺮﺗﺒﻄﺘﻴﻦ ‪ ،‬آـ ‪ WPF‬وﻏﻴﺮهﺎ ﻣﻦ‬
‫اﻟﺘﻘﻨﻴﺎت‪.‬‬
‫‪ -‬إﻧﺸﺎء ﺗﻄﺒﻴﻘﺎت أوﻓﻴﺲ‪:‬‬
‫ﻳﻘﺪم اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ‪ 2008‬دﻋﻤﺎ ﻏﻴﺮ ﻣﺴﺒﻮق ﻟﺘﻄﺒﻴﻘﺎت أوﻓﻴﺲ وﺧﺼﻮﺻﺎ اﻹﺻﺪار ‪ 2007‬اﻷﻣﺮ اﻟﺬي ﻳﻌﻨﻲ اﻧﻚ ﺗﺴﺘﻄﻴﻊ ﺗﺨﺼﻴﺺ أي ﺗﻄﺒﻴﻖ‬
‫ﻣﻦ ﺗﻄﺒﻴﻘﺎت ‪ Microsoft Office 2007‬وﺟﻌﻠﻬﺎ ﺗﻌﻤﻞ ﺑﺎﻟﻄﺮﻳﻘﺔ اﻟﻤﻨﺎﺳﺒﺔ ﻟﻚ واﻟﺘﻲ ﺗﺰﻳﺪ ﻣﻦ ﻓﻌﺎﻟﻴﺔ اﻹﻧﺘﺎج ﻟﺪﻳﻚ‪ ،‬ﻋﻠﻤﺎ ﺑﺄن هﺬا اﻷﻣﺮ ﻣﻘﺘﺼﺮ‬
‫ﻋﻠﻰ إﺻﺪار اﻟﻤﺤﺘﺮﻓﻴﻦ ﻓﻘﻂ ‪. Professional Edition‬‬

‫‪7‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫‪ ‬‬

‫‪ ‬‬
‫ﻣﻘﺪﻣﺔ إﻟﻰ اﻟﺘﻘﻨﻴﺎت اﻟﻘﺎدﻣﺔ ﻣﻊ اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ‪2008‬‬
‫‪ ‬‬
‫ﻣﺤﻤﺪ اﻟﻨﺒﻬﺎﻧﻲ‬
‫‪ ‬‬ ‫ﺑﺎﻟﺒﻴﺎﻧﺎت ﻣﻦ ﺧﻼل ‪ LINQ‬ودﻋﻢ‬
‫ﻧﻜﻤﻞ ﻣﺎ ﺑﺪأﻧﺎ ﺑﻪ أﻋﻼﻩ‪ ،‬وﻗﺪ ذآﺮت اﺣﺪ أهﻢ اﻟﻤﻴﺰات اﻟﺠﺪﻳﺪة ﻓﻲ اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ‪ 2008‬وهﻲ اﻟﺘﺤﻜﻢ اﻷﻗﻮى ‪ ‬‬
‫ﻣﻜﺘﺒﻪ ‪ ADO.NET‬ﻟﻬﺎ ‪ ،‬ﻓﻤﺎ هﻲ ﺗﻘﻨﻴﺔ ‪ LINQ‬ﻳﺎ ﺗﺮى ؟‬

‫ﺣﺴﻨﺎ ﻳﺎ أﺧﻲ اﻟﻌﺰﻳﺰ ﺳﻨﺘﺤﺪث ﻋﻦ هﺬﻩ اﻟﺘﻘﻨﻴﺔ وﻧﺬآﺮ أهﻢ اﻟﻨﻘﺎط ﻋﻨﻬﺎ ﻟﻨﺠﻌﻠﻬﺎ ﻣﻔﻬﻮﻣﺎ واﺿﺤﺎ‪.‬‬

‫ﻣﺸﺮوع ‪LINQ‬‬

‫ﻟﻘﺪ ﻇﻬﺮ ﻣﺸﺮوع ‪ LINQ‬ﻟﻴﺤﻞ ﻣﺸﻜﻠﺔ اﺳﺘﺨﺪام ﻟﻐﺔ اﻻﺳﺘﻌﻼم ‪ SQL‬اﻟﺘﻲ ﻻ ﻏﻨﻰ ﻋﻨﻬﺎ ﻓﻲ ﺗﻄﻮﻳﺮ أي ﺗﻄﺒﻴﻖ ﻣﻌﺘﻤﺪ ﻋﻠﻰ ﻗﻮاﻋﺪ اﻟﺒﻴﺎﻧﺎت‬
‫ﻻﺳﺘﺨﺪاﻣﻬﺎ ﻓﻲ ﻣﺨﺘﻠﻒ اﻷﻏﺮاض‪ :‬ﻋﺮض اﻟﺒﻴﺎﻧﺎت وﻳﺸﻤﻞ اﻟﺒﺤﺚ واﻟﻔﺮز‪ ،‬ﺗﺤﺪﻳﺚ اﻟﺒﻴﺎﻧﺎت وﻏﻴﺮهﺎ‪ ...‬وﻟﻜﻦ ﻣﺎ هﻲ هﺬﻩ اﻟﻤﺸﻜﻠﺔ اﻟﺘﻲ ﻧﺘﺤﺪث ﻋﻨﻬﺎ‬
‫هﻨﺎ ؟‬

‫ﺗﻜﻤﻦ هﺬﻩ اﻟﻤﺸﻜﻠﺔ ﻓﻲ اﻧﻚ ﻋﻨﺪﻣﺎ ﺗﺤﺘﺎج إﻟﻰ آﺘﺎﺑﻪ ﺟﻤﻠﻪ اﺳﺘﻌﻼم داﺧﻞ آﻮد ﻣﻌﻴﻦ ﻓﺈﻧﻚ ﺑﺤﺎﺟﻪ إﻟﻰ آﺘﺎﺑﻪ اﻟﻌﺪﻳﺪ ﻣﻦ ﻋﻼﻣﺎت اﻟﺘﻨﺼﻴﺺ وﺗﻘﺴﻴﻢ‬
‫اﻟﻜﻮد ﺑﻄﺮﻳﻘﺔ ﺑﺸﻌﺔ‪ ،‬ﻧﺎهﻴﻚ ﻋﻦ اﺳﺘﺨﺪام اﻟﺒﺎراﻣﻴﺘﺮات!‬

‫وﻋﻨﺪﻣﺎ ﻇﻬﺮ هﺬا اﻟﻤﺸﺮوع‪ ،‬آﺎن اﻟﻬﺪف ﻣﻨﻪ هﻮ دﻣﺞ ﻟﻐﺔ ‪ SQL‬ﻣﻊ ﻟﻐﺘﻲ ‪ #C‬و ‪ VB.NET‬أي ﺟﻌﻠﻬﺎ ﻣﻨﺪﻣﺠﺔ ﻣﻌﻬﻤﺎ واﺳﺘﻐﻼل ﻣﻴﺰاﺗﻬﻤﺎ‬
‫داﺧﻠﻬﻤﺎ‪ ،‬ﺗﺨﻴﻞ أﺧﻲ اﻟﻌﺰﻳﺰ اﻟﻘﻴﺎم ﺑﺘﻔﺮع ‪ SELECT‬داﺧﻞ ﺟﻤﻠﻪ اﺳﺘﻌﻼم؟ أﺻﺒﺢ هﺬا ﻣﻤﻜﻨﺎ اﻵن ﺑﻜﻞ ﺳﻬﻮﻟﻪ!‬

‫ﻻﺣﻆ ﻣﻌﻲ أﺧﻲ اﻟﻌﺰﻳﺰ هﺬا اﻟﻜﻮد اﻟﻤﻜﺘﻮب ﺑﻠﻐﻪ ‪ ، #C‬ﻻﺣﻆ آﻴﻒ ﺗﻤﺖ آﺘﺎﺑﻪ اﻻﺳﺘﻌﻼم ﺑﻠﻐﺔ ‪ #C‬واﺳﺘﻐﻼل إﻣﻜﺎﻧﻴﺎت هﺬﻩ اﻟﻠﻐﺔ ﻟﻜﺘﺎﺑﻪ اﺳﺘﻌﻼم‬
‫ﺑﺴﻴﻂ؟ هﺬا اﻟﻜﻮد ﻗﺪ ﻻ ﻳﻜﻮن واﺿﺤﺎ آﻔﺎﻳﺔ أو ﻻ ﻳﺪل ﻋﻠﻰ آﻞ ﻓﻮاﺋﺪ هﺬﻩ اﻟﻄﺮﻳﻘﺔ ﻟﺬﻟﻚ ﺳﺄﺿﻊ هﻨﺎ ﺑﻌﺾ اﻷﻣﺜﻠﺔ ﻟﻬﺎ‪.‬‬

‫إن ﺗﻄﺒﻴﻖ ﺗﻘﻨﻴﺔ ال ‪ LINQ‬ﻳﺘﻢ ﺑﺎﺳﺘﺨﺪام إﺣﺪى اﻟﻄﺮق وأﺷﻬﺮهﺎ ‪ Dlinq‬وهﻲ ﺗﻘﻨﻴﺔ ﺗﻤﻜﻨﻚ ﻣﻦ آﺘﺎﺑﻪ اﻻﺳﺘﻌﻼم ﺑﻨﻔﺲ اﻟﻠﻐﺔ اﻟﺘﻲ ﺗﺴﺘﺨﺪﻣﻬﺎ ﻓﻲ إﻃﺎر‬
‫اﻟﻌﻤﻞ آـ ‪ #C‬أو ‪ VB.NET‬ﻟﻴﺘﻢ ﺗﺮﺟﻤﺘﻬﺎ وﻗﺖ اﻟﺘﻨﻔﻴﺬ ﺁﻟﻴﺎ إﻟﻰ ﺟﻤﻠﻪ اﺳﺘﻌﻼم ﺑﻠﻐﻪ ‪ SQL‬ﺗﻠﻘﺎﺋﻴﺎ‪ ،‬أي أن ﺗﻘﻨﻴﺔ ‪ LINQ‬ﺑﺸﻜﻞ ﻋﺎم ﺗﻌﻤﻞ ﻋﻠﻰ ﺗﺮﺟﻤﻪ‬
‫آﻮد ﻣﺤﺪد ﻣﻦ إﺣﺪى ﻟﻐﺎت اﻟﺪوت ﻧﺖ إﻟﻰ ﺟﻤﻠﻪ ‪ SQL‬وﻗﺖ اﻟﺘﻨﻔﻴﺬ وذﻟﻚ ﻟﺘﺴﻬﻴﻞ آﺘﺎﺑﺘﻬﺎ واﻟﺘﻌﺎﻣﻞ ﻣﻌﻬﺎ وﻟﻼﺳﺘﻔﺎدة اﻟﻘﺼﻮى ﻣﻦ إﻣﻜﺎﻧﻴﺎت اﻟﻠﻐﺔ‬
‫اﻟﺘﻲ ﺗﺴﺘﺨﺪﻣﻬﺎ أﻧﺖ ﻓﻲ اﻟﺘﻄﻮﻳﺮ اﻷﻣﺮ اﻟﺬي ﻳﻌﻨﻲ اﻧﻪ وﺑﻤﺮور اﻟﺰﻣﻦ ﺳﻴﻘﻞ اﺳﺘﺨﺪام اﻟﻤﻄﻮرﻳﻦ ﻟﺠﻤﻞ اﻻﺳﺘﻌﻼم ‪ SQL‬وﻗﺪ ﺗﻜﻮن هﺬﻩ هﻲ ﻧﻬﺎﻳﺔ ﻟﻐﺔ‬
‫‪ SQL‬ﺑﺸﻜﻞ ﻧﻬﺎﺋﻲ!‬

‫ﻓﻲ اﻟﺤﻘﻴﻘﺔ هﺬﻩ اﻟﻠﻐﺔ ﺳﺘﺴﻬﻞ ﻋﻠﻴﻨﺎ آﻤﻄﻮرﻳﻦ اﻟﻘﻴﺎم ﺑﺘﻄﻮﻳﺮ ﺗﻄﺒﻴﻘﺎت ﻗﻮاﻋﺪ اﻟﺒﻴﺎﻧﺎت‪ ،‬ﻓﺒﺪﻻ ﻣﻦ ﺗﻌﻠﻢ ﻟﻐﺔ ﺑﺮﻣﺠﺔ آـ ‪ #C‬أو ‪ Visual Basic‬وﻣﻦ ﺛﻢ‬
‫ﺗﻌﻠﻢ ‪ SQL‬واﻟﺘﺒﺤﺮ ﻓﻴﻬﺎ وﻣﺎ ﺗﺸﻤﻠﻪ ﻣﻦ إﺟﺮاءات ﻣﺨﺰﻧﺔ أو أﻧﻮاع ﺑﻴﺎﻧﺎت ﺧﺎﺻﺔ ﺑﻬﺎ‪ ،‬ﺛﻢ ﺗﻌﻠﻢ آﻴﻔﻴﻪ اﻟﺪﻣﺞ واﻟﺮﺑﻂ ﺑﻴﻦ اﻻﺛﻨﻴﻦ وﺗﻮﺣﻴﺪ أﻧﻮاع‬
‫اﻟﺒﻴﺎﻧﺎت ‪ ،‬اﻵن أﺻﺒﺢ ﺑﺈﻣﻜﺎﻧﻚ ﺗﻌﻠﻢ ﻟﻐﺔ اﻟﺒﺮﻣﺠﺔ ﻓﻘﻂ ‪ - #C‬أو ‪ Visual Basic.net -‬وﺳﺘﻘﻮم ﺑﻜﻞ ذﻟﻚ ﺑﺎﻟﻠﻐﺔ وﺣﺪهﺎ دون اﻟﺤﺎﺟﺔ ﻟﺘﻌﻠﻢ اﻟﻤﺰﻳﺪ‬
‫وﺿﻴﺎع اﻟﻤﺰﻳﺪ ﻣﻦ اﻟﻮﻗﺖ ﻓﻲ اﻟﻜﺘﺎﺑﺔ واﻟﺘﻮﻓﻴﻖ ﻓﻲ اﻟﺸﻔﺮات‪.‬‬

‫آﻤﺎ أن هﺬﻩ اﻟﺘﻘﻨﻴﺔ ﻗﺪ ﺗﺸﻤﻞ ﻟﻐﺎت ﻣﺨﺘﻠﻔﺔ آـ ‪ Delphi .Net‬ﻣﺜﻼ ﻧﻈﺮا ﻟﻬﺬﻩ اﻟﻔﻮاﺋﺪ اﻟﺘﻲ ﺗﻜﻠﻤﻨﺎ ﻋﻨﻬﺎ واﻟﺘﻲ ﺗﺰﻳﺪ ﻣﻦ اﻹﻧﺘﺎﺟﻴﺔ وﺗﺴﻬﻞ ﻋﻤﻞ اﻟﻤﻄﻮر‬
‫ﺑﺸﻜﻞ واﺿﺢ‪ .‬وهﺬا ﻣﺨﻄﻂ ﻳﺒﻴﻦ هﻴﻜﻠﻴﻪ هﺬﻩ اﻟﺘﻘﻨﻴﺔ وﻣﺪى ﺗﺪاﺧﻠﻬﺎ ﻣﻊ ﻟﻐﺎت اﻟﺪوت ﻧﺖ وإﻃﺎر اﻟﻌﻤﻞ واﻟﻜﺎﺋﻨﺎت اﻟﺘﻲ ﻧﻀﻤﻨﻬﺎ ﻓﻲ ﻣﺸﺎرﻳﻌﻨﺎ‪:‬‬

‫أﺧﻴﺮا اﺧﺘﻢ هﺬﻩ اﻟﻔﻘﺮة وﻣﻦ أراد اﻟﻤﺰﻳﺪ ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎت‬


‫أو اﻟﺘﻮﺳﻊ ﻓﻲ هﺬا اﻷﻣﺮ ﻓﻠﻴﺰر اﻟﺮواﺑﻂ اﻟﺘﺎﻟﻴﺔ اﻟﺘﻲ هﻲ‬
‫ﻣﺮاﺟﻊ ﻟﻤﻘﺎﻟﺘﻲ ﻋﻦ ‪LINQ‬‬

‫‪The LINQ Project Microsoft Web‬‬ ‫•‬


‫‪page‬‬
‫‪Looking to LINQ ‐ Redmon ‬‬ ‫•‬
‫‪  Developer News ‬‬
‫‐‪Language Integrated Query Wiki‬‬ ‫•‬
‫‪  pedia ‬‬
‫وهﻨﺎ ﻣﻮﺿﻮع ﻣﻦ ﻣﺠﻠﺔ ‪MSDN‬‬ ‫•‬
‫‪Magazine‬ﻋﺪد ﻳﻮﻧﻴﻮ ‪ VB.NET 2007‬‬
‫وهﻨﺎ ‪#C‬‬

‫‪8‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫‪ ‬‬

‫‪ ‬‬
‫ﻣﻘﺪﻣﺔ إﻟﻰ اﻟﺘﻘﻨﻴﺎت اﻟﻘﺎدﻣﺔ ﻣﻊ اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ‪2008‬‬
‫‪ ‬‬
‫ﻣﺤﻤﺪ اﻟﻨﺒﻬﺎﻧﻲ‬
‫ﺳﻨﺘﺤﺪث اﻵن ﻋﻦ اﻟﺘﻜﺎﻣﻞ ﺑﻴﻦ ‪ Visual studio 2008‬و ‪Microsoft Office 2007‬‬
‫‪ ‬‬ ‫‪ ‬‬

‫ﺗﻘﺪم ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ اﻟﺤﺰﻣﺔ ‪ ، Visual Studio Tools For Office‬و اﺑﺘﺪاء ﻣﻦ اﻹﺻﺪار ‪ 2008‬ﺳﻴﻜﻮن اﻟﺘﻜﺎﻣﻞ آﺒﻴﺮا ﻣﻊ اﻹﺻﺪار ‪ 2007‬ﻣﻦ‬
‫اﻷوﻓﻴﺲ ‪ ،‬وهﺬا اﻟﻜﻼم ﻳﻨﻄﺒﻖ ﻋﻠﻰ إﺻﺪار اﻟﻤﺤﺘﺮﻓﻴﻦ ﻣﻦ ﻓﻴﺠﻮال ﺳﺘﻮدﻳﻮ ‪.‬‬

‫اﻵن ﻳﻤﻜﻨﻚ ﺗﻄﻮﻳﻊ إﻣﻜﺎﻧﻴﺎت ‪ Microsoft Office‬ﻟﺘﻄﻮﻳﺮ ﺗﻄﺒﻴﻘﺎﺗﻚ اﻟﻤﺨﺘﻠﻔﺔ ﺳﻮاء آﺎﻧﺖ ‪ Windows Applications‬أم ‪Web‬‬
‫‪ Applications‬ﺑﻨﻔﺲ اﻟﻠﻐﺔ اﻟﺘﻲ ﺗﺴﺘﺨﺪﻣﻬﺎ ﻓﻲ اﻟﻌﺎدة !‬

‫وﻳﻤﻜﻨﻚ هﺬا ﻣﻦ ﺗﺨﺼﻴﺺ ﺗﻄﺒﻴﻘﺎت ﻣﺨﺘﻠﻔﺔ ﻣﻦ اﻷوﻓﻴﺲ آـ ‪ Word, Excel, PowerPoint, Visio, InfoPath, Outlook‬و ‪ Project‬ﻟﻠﻌﻤﻞ‬
‫ﺑﺎﻟﻜﻴﻔﻴﺔ اﻟﺘﻲ ﺗﺮﻳﺪهﺎ واﻻﺳﺘﻔﺎدة ﻣﻦ اﻟﻤﻴﺰات اﻟﺠﺪﻳﺪة ﻟﻺﺻﺪار ‪ 2007‬ﻣﻦ أوﻓﻴﺲ ‪.‬‬

‫وﺗﻤﻜﻦ اﻟﺤﺰﻣﺔ ‪ VSTO‬اﻟﻤﻄﻮر ﻣﻦ اﻟﻘﻴﺎم ﺑﻤﻬﺎم ﻣﺘﻌﺪدة ﻋﻠﻰ ﺳﺒﻴﻞ اﻟﻤﺜﺎل‬

‫‪ -‬اﻻﺳﺘﻔﺎدة اﻟﻘﺼﻮى ﻣﻦ ﻣﻴﺰات اﻹﺻﺪار ‪ 2007‬ﻣﻦ أوﻓﻴﺲ ﻓﻲ ﺗﻄﻮﻳﺮ ﻣﺴﺘﻮى اﻟﺘﻄﺒﻴﻖ وﻣﺴﺘﻮى اﻟﻮﺛﻴﻘﺔ ‪ Document‬اﻟﺘﻲ ﺗﻘﻮم ﺑﺘﺨﺼﻴﺺ‬
‫أوﻓﻴﺲ ‪ 2007‬ﺑﺴﻬﻮﻟﻪ وﺳﺮﻋﻪ‪ .‬آﻤﺎ ﻳﺤﺘﻮي اﻹﺻﺪار اﻟﺠﺪﻳﺪ ﻣﻦ ‪ VSTO‬ﻋﻠﻰ ﻣﺼﻤﻢ ﻣﺮﺋﻲ ﻟﻠﻮﻇﺎﺋﻒ اﻟﺮﺋﻴﺴﻴﺔ اﻟﻤﻮﺟﻮدة ﻓﻲ ﺗﻄﺒﻴﻘﺎت أوﻓﻴﺲ ﻣﻤﺎ‬
‫ﻳﺴﻬﻞ ﻋﻠﻴﻚ ﻓﻲ ﺗﺨﺼﻴﺺ واﺟﻪ اﻟﺘﻄﺒﻴﻖ ﻟﻠﻌﻤﻞ ﺑﺎﻟﺸﻜﻞ اﻟﻤﻼﺋﻢ‪.‬‬

‫‪ -‬ﺗﺼﻤﻴﻢ ﺗﻄﺒﻴﻘﺎت ﺗﻌﺘﻤﺪ ﻋﻠﻰ اﻟﻮاﺟﻬﺔ اﻟﻤﺮﺋﻴﺔ اﻟﻤﻮﺟﻮدة أﺳﺎﺳﺎ ﻓﻲ ﺗﻄﺒﻴﻘﺎت أوﻓﻴﺲ ‪ 2007‬ﻣﻤﺎ ﻳﻤﻜﻦ اﻟﻤﻄﻮرﻳﻦ واﻟﻤﺒﺮﻣﺠﻴﻦ ﻣﻦ ﺑﻨﺎء ﺗﻄﺒﻴﻘﺎت‬
‫ﻳﻜﻮن ﻓﻴﻬﺎ ‪ Microsoft Office‬هﻮ اﻟﻤﺘﺤﻜﻢ ﺑﺎﻟﺒﻴﺎﻧﺎت وﻣﺪﻳﺮهﺎ‪ ،‬وﻳﺘﻢ رﺑﻄﻬﺎ ﺑﺎﺳﺘﺨﺪام ﺧﺪﻣﺎت رﺑﻂ اﻟﺒﻴﺎﻧﺎت ﻣﻦ ‪. SharePoint‬‬

‫‪ -‬ﺗﺼﻤﻴﻢ ﺗﻄﺒﻴﻘﺎت ﺗﺴﺘﻔﻴﺪ ﻣﻦ إﻣﻜﺎﻧﻴﺎت ﻣﺰود ‪ ،SharePoint‬وﺑﻨﺎء ﺗﻄﺒﻴﻘﺎت وﻳﺐ ﻟﻬﺎ‪ ،‬ﻓﺈذا ﻋﻠﻤﻨﺎ اﻧﻪ ﻳﻤﻜﻦ اﻻﺳﺘﻔﺎدة ﻣﻦ أﺟﺰاء وﻳﺐ ‪Web Parts‬‬
‫اﻟﺨﺎﺻﺔ ﺑـ ‪ SharePoint‬ﻓﻲ ﺗﻄﺒﻴﻘﺎت أﺧﺮى‪ ،‬ﻓﺘﺨﻴﻠﻮا ﻣﻌﻲ اﻟﻔﻮاﺋﺪ اﻟﺘﻲ ﺗﺠﻨﻰ ﻣﻦ أﻣﺮ آﻬﺬا!‬

‫‪ -‬ﺗﺼﻤﻴﻢ ﺗﻄﺒﻴﻘﺎت أآﺜﺮ أﻣﻨﺎ وأﺳﻬﻞ ﻓﻲ اﻟﺘﻄﻮﻳﺮ‪ ،‬ﺣﻴﺚ ﺗﺪﻋﻲ ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ أن اﻹﺻﺪارات اﻟﻘﺎدﻣﺔ ﻣﻦ ‪ Visual Studio‬و ‪ Office‬ﺳﺘﻜﻮن ﺑﻨﻔﺲ‬
‫اﻟﺒﻨﻴﺔ اﻟﻘﺎدﻣﺔ ﻓﻲ اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ‪ 2008‬واﻟﻤﻮﺟﻮدة ﻓﻲ أوﻓﻴﺲ ‪ 2007‬ﻣﺎ ﻳﻌﻨﻲ اﻧﻪ ﻳﻤﻜﻨﻚ اﺳﺘﺨﺪام ﺗﻘﻨﻴﺔ ‪ ClickOnce‬ﻟﺘﺤﺰﻳﻢ ﺗﻄﺒﻴﻘﺎت أوﻓﻴﺲ‬
‫ﺑﻜﺎﻓﻪ إﻋﺪاداﺗﻬﺎ‪ ،‬ﻣﻤﺎ ﻳﻌﻨﻲ أن اﻟﻤﻄﻮرﻳﻦ وﻣﺪراء اﻟﻤﻌﻠﻮﻣﺎﺗﻴﺔ ﻳﻤﻜﻨﻬﻢ اﻵن ﺗﻄﻮﻳﺮ وﺻﻴﺎﻧﺔ ﺗﻄﺒﻴﻘﺎت ‪ Office‬اﻟﻤﺨﺼﺼﺔ ﺑﻜﻞ ﺳﻬﻮﻟﻪ وأآﺜﺮ ﻣﻦ أي‬
‫وﻗﺖ ﻣﻀﻰ ‪ .‬وهﺬا ﻳﻌﻨﻲ أﻳﻀﺎ أن ﺗﻄﻮﻳﺮ ﺗﻄﺒﻴﻘﺎت ﺗﻌﺘﻤﺪ ﻋﻠﻰ ‪ Microsoft Office 2007‬هﻮ أﻣﺮ ﺳﻬﻞ‪.‬‬

‫اﺳﺘﻬﺪاف اﻟﺒﺮﻣﺠﺔ ﺗﺤﺖ ‪Windows Vista & .Net Framework 3.5‬‬

‫ﻳﺴﺘﻐﻞ اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ‪ 2008‬اﻟﻤﻴﺰات اﻟﻤﺘﻮﻓﺮة ﻓﻲ وﻳﻨﺪوز ﻓﻴﺴﺘﺎ واﻹﺻﺪار ‪ 3.5‬ﻣﻦ إﻃﺎر اﻟﻌﻤﻞ دوت ﻧﺖ‪ ،‬اﻷﻣﺮ اﻟﺬي ﻳﻤﻜﻦ‬
‫اﻟﻤﻄﻮرﻳﻦ ﻣﻦ ﺗﻄﻮﻳﺮ ﺗﻄﺒﻴﻘﺎت ﺗﺴﺘﻔﻴﺪ ﻣﻦ هﺬﻩ اﻟﺘﻘﻨﻴﺎت وﻣﺎ ﺗﺤﺘﻮﻳﻪ ﻣﻦ ﺗﺤﺴﻴﻨﺎت ﺟﺒﺎرة وﻃﻔﺮات آﺒﻴﺮة ﻓﻲ ﻋﺎﻟﻢ اﻟﻤﻌﻠﻮﻣﺎﺗﻴﺔ‪.‬‬

‫وأﻫﻢ اﻟﺘﻄﻮﻳﺮات اﻟﺘﻲ ﻳﺤﺘﻮﻳﻬﺎ اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ‪ 2008‬ﻓﻲ ﻫﺬا اﻟﻤﺠﺎل ﻣﺎ ﻳﻠﻲ‬

‫‪ /1‬ﺗﻘﻠﻴﻞ اﻟﻮﻗﺖ ﺣﻴﺚ ﻳﻤﻜﻦ اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ‪ 2008‬اﻟﻤﻄﻮرﻳﻦ ﻣﻦ اﺳﺘﻐﻼل اﻟﻮﻗﺖ ﺑﺸﻜﻞ ﺟﺒﺎر ‪ ،‬ﻣﻦ ﺧﻼل‪:‬‬

‫‪ -‬دﻋﻢ اﻟﻬﻴﺌﺎت اﻟﻌﺎﻣﺔ اﻟﻤﺨﺘﻠﻔﺔ اﻟﺘﻲ ﻳﻮﻓﺮهﺎ وﻳﻨﺪوز ﻓﻴﺴﺘﺎ و اﻹﺻﺪار ‪ 3.5‬ﻣﻦ إﻃﺎر اﻟﻌﻤﻞ دوت ﻧﺖ ﻣﺜﻞ ‪ XAML -‬وهﺬﻩ ﺑﺤﺎﺟﻪ إﻟﻰ ﺗﻔﺼﻴﻞ‬
‫ﻟﻠﺒﻌﺾ ‪ -‬ﻟﻠﺘﺤﻜﻢ اﻷﻗﻮى واﻷﺳﻬﻞ ﺑﺘﺼﻤﻴﻢ اﻟﻨﻮاﻓﺬ واﻟﺘﺤﻜﻢ ﺑﺨﺼﺎﺋﺺ اﻷدوات وﺗﺼﻤﻴﻤﻬﺎ ورﺑﻄﻬﺎ ﺑﻤﺼﺎدر اﻟﺒﻴﺎﻧﺎت‪ ،‬ﻓﻤﺜﻼ اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ‬
‫‪ 2008‬ﻳﺪﻋﻢ اﺳﺘﺨﺪام ‪ Microsoft Expression Suite‬اﻟﺬي ﻳﺴﺎﻋﺪ ﻓﻲ ﺗﺼﻤﻴﻢ اﻟﻨﻮاﻓﺬ واﻷدوات وﺗﺼﺪﻳﺮهﺎ آﻤﻠﻔﺎت ﺗﺼﻤﻴﻢ ﺧﺎﺻﺔ إﻟﻰ‬
‫اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ‪ 2008‬ﻟﻴﺘﻤﻜﻦ اﻟﻤﻄﻮر ﺑﻌﺪهﺎ وﺑﺴﻬﻮﻟﻪ ﻣﻦ إآﻤﺎل ﻋﻤﻠﻪ وﻣﺒﺎﺷﺮﻩ آﺘﺎﺑﻪ اﻷآﻮاد‪.‬‬

‫‪ -‬اﻵن أﺻﺒﺢ ﺳﻬﻼ اﻻﻋﺘﻤﺎد ﻋﻠﻰ ﻃﻘﻢ ‪ Microsoft Office‬آﻤﻨﺼﺔ ﻋﻤﻞ وﺗﻄﻮﻳﺮ ﺗﻄﺒﻴﻘﺎت ﺗﻌﺘﻤﺪ واﺟﻬﺘﻬﺎ ﻋﻠﻰ اﻟﻮاﺟﻬﺔ اﻟﻤﻮﺟﻮدة ﻓﻲ ﺗﻄﺒﻴﻘﺎت‬
‫أوﻓﻴﺲ و ‪ SharePoint -‬ﺷﺨﺼﻴﺎ ﻟﻢ اﻓﻬﻢ هﺬﻩ اﻟﻨﻘﻄﺔ ﻟﺤﺪ اﻵن!‬

‫‪ /2‬ﺗﺼﻤﻴﻢ ﺗﻄﺒﻴﻘﺎت ﺗﻌﺘﻤﺪ ﻋﻠﻰ ﺗﻘﻨﻴﺔ ‪WPF‬‬

‫ﺣﻴﺚ ﻳﻤﻜﻦ اﻵن ﻟﻠﻤﻄﻮرﻳﻦ ﺗﻄﻮﻳﺮ ﺗﻄﺒﻴﻘﺎت ﺗﻌﺘﻤﺪ ﻋﻠﻰ ‪ WPF‬وهﻮ اﺧﺘﺼﺎر ﻟـ ‪Windows Presenation Foundation‬‬
‫‪ ،‬ﻓﺎﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ‪ 2008‬ﻳﺤﺘﻮي ﻋﻠﻰ ﻣﺤﺮر ﻟـ ‪ ، XAML‬وﻗﻮاﻟﺐ ﻣﺸﺎرﻳﻊ وﻏﻴﺮهﺎ ﻣﻦ اﻷدوات اﻟﻤﻔﻴﺪة‪.‬‬

‫‪9‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫‪ ‬‬

‫‪ ‬‬
‫ﻣﻘﺪﻣﺔ إﻟﻰ اﻟﺘﻘﻨﻴﺎت اﻟﻘﺎدﻣﺔ ﻣﻊ اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ‪2008‬‬
‫‪ ‬‬
‫ﻣﺤﻤﺪ اﻟﻨﺒﻬﺎﻧﻲ‬
‫‪ ‬‬ ‫‪ ‬‬ ‫‪ /3‬اﺳﺘﺜﻤﺎر اﻹﻣﻜﺎﻧﺎت اﻟﻤﺘﺎﺣﺔ اﻟﺘﻲ ﺗﻮﻓﺮﻫﺎ واﺟﻬﺔ اﻟﻤﺴﺘﺨﺪم ‪UI‬‬
‫ﻓﻲ اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ‪ 2008‬ﻳﻤﻜﻨﻜﻢ اﺳﺘﺨﺪام ﺗﻘﻨﻴﺎت ال ‪ WPF , Windows Forms,‬ﻓﻲ ﺗﻄﺒﻴﻖ واﺣﺪ ‪ ،‬ﻓﻤﺜﻼ ﻳﻤﻜﻨﻚ اﺳﺘﺨﺪام ‪ WPF‬ﻓﻲ ﺗﻄﺒﻴﻖ‬
‫ﺑﺘﻤﻜﻴﻦ ‪ Windows Forms Visual Designer‬ﻟﻴﻘﻮم ﺗﻠﻘﺎﺋﻴﺎ ﺑﻀﺒﻂ وﻣﺤﺎذاة اﻷدوات واﻟﻤﺤﺘﻮى اﻟﺠﺪﻳﺪ إﻟﻰ ﺗﻠﻚ اﻟﻘﺪﻳﻤﺔ‪ ،‬هﺬا اﻷﻣﺮ ﻳﻌﻨﻲ اﻧﻪ‬
‫ﻳﻤﻜﻨﻚ اﺳﺘﺨﺪام ‪ WPF‬ﻓﻲ ﺗﻄﺒﻴﻘﺎت ﺗﻌﺘﻤﺪ ﻋﻠﻰ ‪ Windows Forms‬ﺑﻼ ﻣﺸﺎآﻞ ﺳﺘﻔﻬﻢ هﺬﻩ اﻟﻨﻘﻄﺔ ﻋﻨﺪ اﻟﺘﻄﺒﻴﻖ ﻓﻼ ﺗﺴﺘﻌﺠﻞ ﻳﺎ ﻋﺰﻳﺰي‬
‫‪ /4‬اﺟﻌﻞ ﺗﻄﺒﻴﻖ ‪ ++C‬ﻳﻌﻤﻞ ﺑﺈﺣﺴﺎس وﻳﻨﺪوز ﻓﻴﺴﺘﺎ !‬
‫وﻳﻘﺼﺪ ﺑﻬﺬا‪ ،‬اﺟﻌﻞ ﺗﻄﺒﻴﻖ ‪ ++C‬ﻳﻌﻤﻞ ﺑﺸﻜﻞ ﻣﺘﻮاﻓﻖ ﺗﻤﺎﻣﺎ ﻣﻊ وﻳﻨﺪوز ﻓﻴﺴﺘﺎ وﻳﺴﺘﻔﻴﺪ ﻣﻦ اﻟـ ‪ API‬اﻟﻤﻮﺟﻮد ﻓﻴﻪ وذﻟﻚ ﻓﻘﻂ ﺑﻤﺠﺮد إﻋﺎدة ﺗﺮﺟﻤﺔ‬
‫اﻟﺘﻄﺒﻴﻖ ﺑﻮاﺳﻄﺔ اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ‪ 2008‬ﺗﺤﺖ ﻓﻴﺴﺘﺎ واﻧﺘﻬﺖ اﻟﻘﻀﻴﺔ‬
‫وﺑﺎﻟﻤﻨﺎﺳﺒﺔ ﻓﻠﻴﺲ ﻟﺪي اﻟﻮﻗﺖ اﻟﻜﺎﻓﻲ ﻟﻠﺤﺪﻳﺚ واﻟﺘﻔﺼﻴﻞ ﻓﻲ ‪ XAML‬ﻓﻬﺬﻩ ﺗﻘﻨﻴﻪ آﺎﻣﻠﺔ ﻟﺘﺼﻤﻴﻢ اﻟﻨﻮاﻓﺬ واﻷدوات ﺗﺴﺎﻋﺪ اﻟﻤﺼﻤﻤﻴﻦ ﻋﻠﻰ ﺗﺼﻤﻴﻢ‬
‫اﻟﻨﻮاﻓﺬ ﺑﺸﻜﻞ راﺋﻊ وإﺳﻨﺎد ﻣﻬﻤﺔ آﺘﺎب اﻷآﻮاد ﺑﺎﻟﻜﺎﻣﻞ ﻟﻠﻤﺒﺮﻣﺞ ﻟﻨﺤﺼﻞ ﻋﻠﻰ ﺑﺮاﻣﺞ ﺗﺠﺎرﻳﻪ ﻓﺎﺋﻘﺔ اﻟﺮوﻋﺔ‪ ،‬ﻟﻠﻤﺰﻳﺪ ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎت إﻟﻴﻜﻢ اﻟﺮواﺑﻂ‬
‫اﻟﺘﺎﻟﻴﺔ‪:‬‬
‫‪XAML Overview from Microsoft‬‬

‫‪http://www.xaml.net/‬‬

‫وهﺬﻩ آﺎﻧﺖ أهﻢ اﻟﺘﻄﻮﻳﺮات اﻟﺘﻲ ﺗﻬﻤﻨﺎ ﻓﻲ هﺬا اﻟﺠﺎﻧﺐ‪.‬‬

‫واﻵن ﺳﺄﺗﻄﺮق إﻟﻰ اﻟﺪﻋﻢ اﻟﺬي ﻳﻮﻓﺮﻩ اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ‪ 2008‬ﻟﺘﻄﺒﻴﻘﺎت وﻣﻮاﻗﻊ وﻳﺐ‪ ،‬ﺣﻴﺚ أن اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ‪ 2008‬ﻳﻘﺪم ﻣﺎ ﻳﻠﻲ ‪:‬‬
‫‪ -‬دﻋﻢ ﻛﺒﻴﺮ وﻣﺘﻜﺎﻣﻞ ﻟﺘﻘﻨﻴﺔ ‪AJAX‬‬
‫إن ﺗﻘﻨﻴﺔ أﺟﺎآﺲ ﻣﻦ ﺗﻌﺪ ﻣﻦ اﺣﺪث واهﻢ اﻟﺘﻘﻨﻴﺎت ﻓﻲ ﻋﺎﻟﻢ وﻳﺐ اﻟﻴﻮم‪ ،‬وﻗﺪ ﻇﻬﺮ دﻋﻢ ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ ﻟﻬﺎ ﺑﺸﻜﻞ ﺟﻠﻲ ﻣﻦ ﺧﻼل إﺻﺪارهﺎ اﻟﺤﺰﻣﺔ‬
‫اﻟﺒﺮﻣﺠﻴﺔ اﻟﻤﺴﻤﺎة ‪ Atlas‬واﻟﺘﻲ ﺗﻤﻜﻦ ﻣﻄﻮري ﻣﻮاﻗﻊ وﻳﺐ اﻟﺬﻳﻦ ﻳﺴﺘﺨﺪﻣﻮن ‪ ASP.NET‬ﻣﻦ ﺗﻄﻮﻳﺮ ﺗﻄﺒﻴﻘﺎت وﻳﺐ ﺗﻔﺎﻋﻠﻴﻪ ﺗﺴﺘﺨﺪم هﺬﻩ اﻟﺘﻘﻨﻴﺔ‪.‬‬
‫إﻻ أن اﻹﺻﺪار اﻟﺤﺎﻟﻲ ﻣﻦ ﻓﻴﺠﻮال ﺳﺘﻮدﻳﻮ ‪ 2005‬ﻻ ﻳﺄﺗﻲ ﺑﺬﻟﻚ اﻟﺪﻋﻢ ﺑﺸﻜﻞ ﻣﺒﻴﺖ ‪ ،‬أﻣﺎ اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ‪ 2008‬ﻓﻬﻮ ﻳﺪﻋﻤﻪ ﻣﻦ اﻟﺼﻔﺮ وﺣﺘﻰ‬
‫اﻟﻨﺨﺎع‪ ،‬ﻓﻘﻂ آﻞ ﻣﺎ ﻋﻠﻴﻚ اﻟﺘﺄآﺪ ﻣﻨﻪ هﻮ وﺟﻮد ﻣﺘﺼﻔﺢ ﻣﺘﻮاﻓﻖ ﻣﻊ ﻣﺘﺼﻔﺢ اﻟﻤﻮﻗﻊ آـ ‪ Windows Internet Explorer‬وﻏﻴﺮﻩ‪.‬‬
‫‪ -‬ﺗﺼﻤﻴﻢ ﺧﺪﻣﺎت وﻳﺐ ‪ Web Services‬أﺻﺒﺢ أﻛﺜﺮ ﺳﻬﻮﻟﻪ وﺗﺤﻜﻤﺎ‬
‫ﻳﻤﻜﻦ ﻟﻤﻄﻮري وﻳﺐ اﻟﺬﻳﻦ ﻳﺒﻨﻮن ﺧﺪﻣﺎت وﻳﺐ ﺑﺎﺳﺘﺨﺪام اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ‪ ،2008‬أن ﻳﻘﻮﻣﻮا ﺑﺘﺠﺮﺑﺔ واﺧﺘﺒﺎر ﺧﺪﻣﺎت وﻳﺐ اﻟﺘﻲ ﻳﺼﻤﻤﻮهﺎ ﺑﺪون‬
‫اﻟﺤﺎﺟﺔ إﻟﻰ اﺳﺘﺨﺪام أي ﺷﻔﺮات إﺿﺎﻓﻴﺔ‪ ،‬آﻤﺎ ﻳﻘﺪم اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ‪ 2008‬دﻋﻤﺎ آﺒﻴﺮ ﻟﻠﺘﺤﻜﻢ ﺑﺒﺮوﺗﻮآﻮﻻت وﻳﺐ آـ ‪ HTTP,TCP/IP‬ﻣﻦ أﺟﻞ‬
‫ﺿﻤﺎن أﻓﻀﻞ ﺗﺤﻜﻢ وأداء ﻟﺨﺪﻣﺎت وﻳﺐ‪.‬‬
‫‪ -‬اﺳﺘﻬﻼك أﺳﻬﻞ ﻟﺨﺪﻣﺎت ‪WCF‬‬
‫اﻵن أﺻﺒﺢ ﺑﺈﻣﻜﺎن اﻟﻤﻄﻮرﻳﻦ اﺳﺘﺨﺪام أدوات ‪ RAD‬اﻟﺠﺪﻳﺪة ﻹﻧﺸﺎء ﺧﺪﻣﺎت ) ‪WCF ( Windows Communication Foundation‬‬
‫وﺗﺠﺮﺑﺘﻬﺎ ﺑﺪون اﻟﺤﺎﺟﺔ ﻟﻜﺘﺎﺑﻪ أي آﻮد إﺿﺎﻓﻲ‪ ،‬آﻤﺎ ﺳﻴﺘﻤﻜﻦ اﻟﻤﻄﻮرﻳﻦ ﻣﻦ اﻟﺘﺤﻜﻢ ﺑﻤﻨﺎﻓﺬ ﺑﺮوآﺴﻲ وإﻧﺸﺎء اﺗﺼﺎﻻت اﻟﻌﻤﻼء ‪Client‬‬
‫‪ Connections‬ﺑﻜﻞ ﺳﻬﻮﻟﻪ‪.‬‬
‫‪ -‬ﺗﻮﻇﻴﻒ ﺧﺪﻣﺎت ‪ SOA‬و ‪ WCF‬ﻓﻲ ﺗﻄﺒﻴﻘﺎت اﻟﻬﻮاﺗﻒ واﻷﺟﻬﺰة اﻟﻤﺤﻤﻮﻟﺔ ﻛﻔﻴﺎ‬
‫اﻵن أﺻﺒﺢ ﺗﻄﻮﻳﺮ ﺧﺪﻣﺎت ﻋﻤﻴﻠﻪ وﺗﻄﺒﻴﻘﺎت ﻋﻤﻴﻠﺔ ﺗﻌﻤﻞ ﻋﻠﻰ أﺟﻬﺰﻩ ﻣﺤﻤﻮﻟﺔ ﺑﻐﺾ اﻟﻨﻈﺮ ﻋﻦ آﻮن هﺬﻩ اﻷﺟﻬﺰة ﻣﺘﺼﻠﺔ أم ﻻ ﺑﻤﺮآﺰ اﻻﺗﺼﺎل‪،‬‬
‫هﺬا ﻳﻌﻨﻲ أن اﻟﻤﺒﺮﻣﺞ ﻟﻦ ﻳﻬﺘﻢ ﺑﺎﻻﺗﺼﺎل وإﻧﻤﺎ ﺳﻴﻬﺘﻢ ﻓﻘﻂ ﺑﻤﻌﺎﻟﺠﻪ اﻟﺒﻴﺎﻧﺎت وﻣﺎ إﻟﻰ هﻨﺎك ‪ ،‬وهﺬا ﻳﻌﻨﻲ أﻳﻀﺎ أن اﻟﺘﻄﺒﻴﻖ ﺳﻴﺘﻤﻜﻦ ﻣﻦ إرﺳﺎل‬
‫واﺳﺘﻴﺮاد اﻟﺒﻴﺎﻧﺎت ﻃﺎﻟﻤﺎ أﻣﻜﻨﻪ ذﻟﻚ ودون ﺗﺪﺧﻞ ﻣﻨﻚ ﻋﺰﻳﺰي اﻟﻤﻄﻮر ﻓﻼ ﺗﻘﻠﻖ‬
‫وهﺬﻩ آﺎﻧﺖ أهﻢ اﻟﺘﻄﻮﻳﺮات اﻟﺘﻲ ﺗﻠﺤﻖ ﺟﺎﻧﺐ ﺗﻄﻮﻳﺮ ﺗﻄﺒﻴﻘﺎت وﺧﺪﻣﺎت وﻳﺐ ﻓﻲ اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ‪.2008‬‬
‫ﻟﻨﺮﺟﻊ إﻟﻰ ﻣﻮﺿﻮع ﺗﻘﻨﻴﺔ ال ‪Linq‬‬
‫ﺳﻨﺘﺤﺪث ﻋﻦ ﺗﻘﻨﻴﺔ ‪ LINQ‬اﻟﺘﻲ ﻳﺤﻤﻠﻬﺎ اﻹﺻﺪار ‪ 2008‬ﻣﻦ ‪ Visual Studio‬وﻟﻜﻦ ﻓﻲ اﻟﺤﻘﻴﻘﺔ اﻧﻪ اﺳﺘﻐﻼل ﻟﻠﻮﻗﺖ وﺗﻌﻠﻢ ﻟﺸﻲء ﺟﺪﻳﺪ ﺳﻴﺠﻌﻠﻨﺎ‬
‫ﻗﺎدرﻳﻦ ﻋﻠﻰ اﻟﻌﻤﻞ ﻣﻌﻪ ‪.‬‬
‫هﺬا اﻟﻤﻘﺎل ﻣﻘﺎل ﻣﺘﺮﺟﻢ وهﺬا ﻣﺼﺪرﻩ ﻟﻸﻣﺎﻧﺔ ‪ ،‬وﻻ ﺗﻨﺴﻮا أن اﻟﺘﺮﺟﻤﺔ هﻲ ﻣﺼﺪر رﺋﻴﺴﻲ ﻟﻠﻤﻌﻠﻮﻣﺎت أدت إﻟﻰ ﺗﻔﻮق اﻣﺘﻨﺎ اﻹﺳﻼﻣﻴﺔ اﻟﻌﺮﺑﻴﺔ ﻓﻲ‬
‫ﻗﺪﻳﻢ اﻟﺰﻣﺎن وهﻲ اﻟﻮﺳﻴﻠﺔ اﻟﺘﻲ ﺟﻌﻠﺖ اﻟﻐﺮب اﻟﻴﻮم ﻳﻌﻴﺶ ﻓﻲ هﺬﻩ اﻟﺜﻮرة اﻟﻌﻠﻤﻴﺔ اﻟﻌﻈﻴﻤﺔ اﻟﺘﻲ ﻳﺸﻬﺪهﺎ اﻟﻌﺎﻟﻢ اﻟﻴﻮم‪.‬‬

‫وأﺣﺐ اﻟﺘﻨﻮﻳﻪ هﻨﺎ أﻧﻨﻲ آﺘﺒﺖ هﺬﻩ اﻟﻤﻘﺎﻟﺔ أوﻻ ﻟـﺠﺎﻣﻌﺔ أهﻼ ﻋﺮب وﻗﺪ وﺿﻌﺖ ﻧﺴﺨﻪ ﻣﻨﻪ هﻨﺎ ﻟﻴﺴﺘﻔﻴﺪ اآﺒﺮ ﻗﺪر ﻣﻤﻜﻦ‬
‫ﻣﻦ اﻟﻤﺒﺮﻣﺠﻴﻦ واﻟﻘﺮاء ﻣﻨﻪ وإﺗﺒﺎﻋﺎ ﻟﺴﻴﺎﺳﺔ ﻋﺪم اﺣﺘﻜﺎر اﻟﻌﻠﻢ واﻟﻤﻌﺮﻓﺔ واﻟﺤﻔﺎظ ﻋﻠﻴﻬﺎ ﻣﻦ اﻟﻀﻴﺎع‪.‬‬

‫‪10‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫‪ ‬‬

‫‪ ‬‬
‫ﻣﻘﺪﻣﺔ إﻟﻰ اﻟﺘﻘﻨﻴﺎت اﻟﻘﺎدﻣﺔ ﻣﻊ اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ‪2008‬‬
‫‪ ‬‬
‫ﻣﺤﻤﺪ اﻟﻨﺒﻬﺎﻧﻲ‬
‫‪ ‬‬ ‫‪ ‬‬ ‫أوﻻ‪ :‬ﻣﺎ ﻫﻲ ﺗﻘﻨﻴﺔ ‪LINQ‬‬
‫ﻟﻘﺪ ﺗﺤﺪﺛﺖ ﻓﻲ هﺬا اﻟﻤﻮﺿﻮع ﻋﻦ هﺬﻩ اﻟﺘﻘﻨﻴﺔ ﺑﺸﻜﻞ ﻣﺨﺘﺼﺮ وهﻨﺎك ﺗﺠﺪ ﺟﻮاب هﺬا اﻟﺴﺆال ﻓﻼ داﻋﻲ ﻟﻠﺘﻜﺮار‬

‫ﺛﺎﻧﻴﺎ‪ :‬ﻣﺎ ﻫﻲ ‪LINQ to SQL‬‬


‫هﻲ ﻋﺒﺎرة ﻋﻦ أداﻩ ﺗﺘﻮﻓﺮ ﻓﻲ اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ‪ ،2008‬ﺗﻘﻮم هﺬﻩ اﻷداة ﺑﻌﺮض ﻗﺎﻋﺪة اﻟﺒﻴﺎﻧﺎت اﻟﺘﻲ ﺗﺘﺼﻞ ﺑﻬﺎ ﻋﻠﻰ هﻴﺌﺔ ﻓﺌﺎت ‪ net.‬ﻣﻤﺎ ﻳﺴﺎﻋﺪك‬
‫ﻋﻠﻰ اﺳﺘﺨﺪام ﺗﻘﻨﻴﺔ ‪ LINQ‬وﻣﺎ ﺗﺘﻀﻤﻨﻪ ﻣﻦ إﻣﻜﺎﻧﻴﺎت ﻣﺨﺘﻠﻔﺔ آﻌﺮض اﻟﺒﻴﺎﻧﺎت وﺗﻌﺪﻳﻠﻬﺎ وﺣﺬف اﻟﺒﻴﺎﻧﺎت وإﺿﺎﻓﺔ ﺑﻴﺎﻧﺎت ﺟﺪﻳﺪة وﻏﻴﺮهﺎ ﻣﻦ اﻷواﻣﺮ‬
‫اﻟﺘﻲ ﺗﻤﻜﻨﻨﺎ ﻟﻐﺔ ‪ SQL‬ﺳﺎﺑﻘﺎ ﻣﻦ اﻟﻘﻴﺎم ﺑﻬﺎ‪ .‬وﻳﺠﺐ أن ﻧﻌﻠﻢ أﻳﻀﺎ أن هﺬﻩ اﻷداة ﻻ ﺗﻐﻔﻞ ﻣﻜﻮﻧﺎت ﻗﺎﻋﺪة اﻟﺒﻴﺎﻧﺎت اﻷﺧﺮى آﺎﻟـ ‪Views,‬‬
‫‪.Transictions and Stored Procedures‬‬

‫وﺗﻮﺿﺢ هﺬﻩ اﻟﺼﻮرة أداة ‪ LINQ to SQL‬اﻟﺘﻲ ﺗﺮﺟﻤﺖ ﻗﺎﻋﺪة ﺑﻴﺎﻧﺎت ‪ Northwind‬اﻟﺸﻬﻴﺮة‬

‫وﻳﻮﺿﺢ هﺬا اﻟﻔﻴﺪﻳﻮ آﻴﻔﻴﺔ اﺳﺘﺨﺪام هﺬا اﻟﻤﺤﺮر آﺘﺎﺑﻪ ﺑﻌﺾ اﻷآﻮاد ﺑﻬﺬﻩ اﻟﺘﻘﻨﻴﺔ‪ .‬ﻟﻠﻤﺰﻳﺪ ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎت ﺣﻮل هﺬا اﻟﻔﻴﺪﻳﻮ اﻟﺮﺟﺎء اﻟﻨﻘﺮ هﻨﺎ‪ .‬وﺧﺬهﺎ‬
‫ﻧﺼﻴﺤﺔ ﻣﻨﻲ‪ ،‬ﻻ ﺗﻔﻮت اﻟﻔﻠﻢ اﻟﺴﺎﺑﻖ وﺣﺎول ﻗﺪر اﻹﻣﻜﺎن أن ﺗﺸﺎهﺪﻩ ﻗﺒﻞ أن ﺗﻜﻤﻞ هﺬﻩ اﻟﻤﻘﺎﻟﺔ ﻷﻧﻪ ﺑﺎﻟﻔﻌﻞ ﻳﻮﺿﺢ ﻟﻚ اﻻﺳﺘﺨﺪام اﻟﻌﻤﻠﻲ ﻟﻬﺬﻩ اﻟﺘﻘﻨﻴﺔ‬
‫ﺑﻠﻐﻪ ‪ #C‬وﻃﺒﻌﺎ ﻣﻊ ‪ VB.NET‬ﺳﻴﻜﻮن ﻣﺜﻠﻪ وﺳﻴﻜﺸﻒ ﻟﻚ اﻟﻜﺜﻴﺮ ﻣﻦ اﻟﻐﻤﻮض!‬

‫‪11‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫‪ ‬‬

‫‪ ‬‬
‫ﻣﻘﺪﻣﺔ إﻟﻰ اﻟﺘﻘﻨﻴﺎت اﻟﻘﺎدﻣﺔ ﻣﻊ اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ‪2008‬‬
‫‪ ‬‬
‫ﻣﺤﻤﺪ اﻟﻨﺒﻬﺎﻧﻲ‬
‫‪ ‬‬ ‫اﻟﻤﺒﺎﺷﺮ ﻟﻠﺠﺪاول واﻟﻜﺎﺋﻨﺎت اﻷﺧﺮى‬
‫‪ ‬‬ ‫وﻧﻼﺣﻆ ﻣﻦ هﺬﻩ اﻟﺼﻮرة آﻴﻒ أن ﻗﺎﻋﺪة اﻟﺒﻴﺎﻧﺎت ﺗﻈﻬﺮ ﺟﺪاوﻟﻬﺎ آﻔﺌﺎت ‪ net.‬وهﻨﺎ اﻟﺴﺮ ﻓﻲ آﻴﻔﻴﺔ اﻻﺳﺘﺨﺪام‬
‫ﻟﻘﺎﻋﺪة اﻟﺒﻴﺎﻧﺎت ﻓﻲ ﺷﻔﺮاﺗﻚ‬

‫واﻵن ﺣﺎن وﻗﺖ اﻟﺠﺪ اﻟﺤﻘﻴﻘﻲ ‪ ،‬وﻗﺖ اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﺸﻔﺮات‬


‫أﻣﺜﻠﻪ ﻟﻠﺘﻌﺎﻣﻞ ﻣﻊ ﺗﻘﻨﻴﺔ ‪ LINQ‬ﺑﺎﻟﻜﻮد‬
‫‪ /1‬اﻻﺳﺘﻌﻼم ﻋﻦ ﻗﻴﻤﻪ ﻣﻌﻴﻨﻪ ﺑﺎﺳﺘﺨﺪام ‪LINQ‬‬
‫ﻻﺣﻆ اﻟﻜﻮد اﻟﺘﺎﻟﻲ ﻣﺮﻓﻖ ﺑﺼﻴﻐﻪ ‪ VB.NET‬و ‪#C‬‬

‫ﻣﻦ ﺧﻼل ﻣﺤﺎوﻟﻪ ﻗﺮاءﻩ اﻟﻜﻮد اﻟﺴﺎﺑﻖ ﻧﺠﺪ اﻧﻪ ﻳﻘﺎﺑﻞ ﺷﻴﺌﺎ ﻣﺜﻞ اﻟﺠﻤﻠﺔ اﻟﺘﺎﻟﻴﺔ ﻓﻲ ‪SQL‬‬

‫ﻛﻮد‪:‬‬
‫"‪SELECT P FROM Products WHERE Category.CategoryName = "Beverages‬‬
‫ﻟﻜﻨﻨﺎ ﻧﻼﺣﻆ اﻧﻪ ﻣﻦ اﺣﺪ اﻟﻔﻮاﺋﺪ اﻟﺮﺋﻴﺴﻴﺔ هﻨﺎ أﻧﻨﺎ ﺣﺼﻠﻨﺎ ﻋﻠﻰ آﺎﺋﻦ ﻳﺴﻤﻰ ‪ Products‬ﻳﺤﺘﻮي ﻋﻠﻰ ﻧﺎﺗﺞ اﻟﺠﻤﻠﺔ اﻟﺴﺎﺑﻘﺔ ﺑﺸﻜﻞ ﻣﺒﺎﺷﺮ!‬

‫‪ /2‬ﺗﺤﺪﻳﺚ ‪ Product‬ﻓﻲ ﻗﺎﻋﺪة اﻟﺒﻴﺎﻧﺎت‬

‫اﻟﻜﻮد اﻟﺘﺎﻟﻲ ﻳﻤﺜﻞ ﻣﻘﺎﺑﻞ ﻟﺠﻤﻠﻪ اﺳﺘﻌﻼم ﻟﺘﺤﺪﻳﺚ اﻟﺠﺪول ‪ Products‬ﻓﻲ اﻟﺴﺠﻞ اﻟﺬي ﺗﻜﻮن ﻓﻴﻪ ﻗﻴﻤﻪ اﻟﺤﻘﻞ ‪ ProductName‬ﺗﺴﺎوي‪Toy 1‬‬

‫‪12‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫‪ ‬‬

‫‪ ‬‬
‫ﻣﻘﺪﻣﺔ إﻟﻰ اﻟﺘﻘﻨﻴﺎت اﻟﻘﺎدﻣﺔ ﻣﻊ اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ‪2008‬‬
‫‪ ‬‬
‫ﻣﺤﻤﺪ اﻟﻨﺒﻬﺎﻧﻲ‬
‫‪ ‬‬ ‫ﻻﺣﻆ آﻴﻒ أن ﻋﻤﻠﻴﻪ اﻟﺤﻔﻆ واﻟﺘﻌﺪﻳﻞ أﺻﺒﺤﺖ ﺳﻬﻠﻪ؟ أﻟﻴﺲ ﻣﺎ ﺗﺮﻳﺪﻩ أﻧﺖ آﻤﺒﺮﻣﺞ هﻮ اﻟﺤﺼﻮل ﻋﻠﻰ ﻃﺮق أﺳﻬﻞ ﻟﻠﻌﻤﻞ وﺗﻘﻠﻴﻞ ﺣﺠﻢ اﻟﻜﻮد ﻟﺘﻨﻔﻴﺬ‬
‫ﻋﻤﻠﻴﻪ ﻣﻌﻴﻨﻪ ﻣﻊ اﻻﺣﺘﻔﺎظ ﺑﺘﺤﻜﻢ ﺟﻴﺪ ﺑﻞ ﻣﻤﺘﺎز ﺑﺎﻟﻌﻤﻞ ؟ هﺬا ﻣﺎ ﺗﻘﺪﻣﻪ ﺗﻘﻨﻴﺔ ‪ LINQ‬ﻟﻠﻤﺒﺮﻣﺠﻴﻦ ﻓﻲ ﻣﺠﺎل ﻗﻮاﻋﺪ اﻟﺒﻴﺎﻧﺎت!‬

‫‪ /3‬إﺿﺎﻓﺔ ‪ Category‬ﺟﺪﻳﺪة إﻟﻰ ﻗﺎﻋﺪة اﻟﺒﻴﺎﻧﺎت ﻣﻊ ‪Products 2‬‬

‫وهﺬﻩ هﻲ آﻞ اﻟﺤﻜﺎﻳﺔ ﻳﺎ ﺳﻼم ﻋﻠﻰ هﺬﻩ اﻟﺘﻘﻨﻴﺔ‪.‬‬

‫‪ /4‬ﺣﺬف ‪ Product‬ﻣﻦ ﻗﺎﻋﺪة اﻟﺒﻴﺎﻧﺎت‬

‫وهﺬا ﻣﺜﺎل ﺑﺎﻟﻜﻮد ﻟﺤﺬف ﺟﻤﻴﻊ اﻟﺴﺠﻼت اﻟﺘﻲ ﺗﺤﺘﻮي ﻋﻠﻰ "‪ "Toy‬ﻓﻲ اﻟﺤﻘﻞ ‪CategoryName‬‬

‫ﻳﺎ ﺳﻼم ﻋﻠﻰ اﻟﺴﻬﻮﻟﺔ اﻟﺸﺪﻳﺪة‬

‫‪ /5‬اﺳﺘﺪﻋﺎء إﺟﺮاء ﻣﺨﺰن ‪ Stored Procedure‬ﻣﻦ‬


‫ﻗﺎﻋﺪة اﻟﺒﻴﺎﻧﺎت‬
‫‪ ‬‬
‫ﻳﺎ ﺳﻼم ﻋﻠﻰ اﻹﺟﺮاءات اﻟﻤﺨﺰﻧﺔ واﺳﺘﺨﺪاﻣﻬﺎ‪ ،‬ﻳﺎ ﺳﻼم‬
‫‪ ‬‬ ‫‪ ‬‬ ‫ﻋﻠﻰ ﺳﺮﻋﺘﻬﺎ وﻋﻠﻰ ﺗﺴﻬﻴﻠﻬﺎ ﻟﻠﻌﻤﻞ وﻣﻦ ﻳﻌﻤﻞ ﻋﻠﻰ‬
‫ﺗﻄﺒﻴﻖ آﺒﻴﺮ ﻳﻌﺮف ﻣﻌﻨﻰ آﻼﻣﻲ وأﻗﺪم ﻟﻪ هﺬﻩ اﻟﻬﺪﻳﺔ‬

‫‪13‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫‪ ‬‬

‫‪ ‬‬
‫ﻣﻘﺪﻣﺔ إﻟﻰ اﻟﺘﻘﻨﻴﺎت اﻟﻘﺎدﻣﺔ ﻣﻊ اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ‪2008‬‬
‫‪ ‬‬
‫ﻣﺤﻤﺪ اﻟﻨﺒﻬﺎﻧﻲ‬
‫‪ ‬‬

‫اﻟﻜﻮد اﻟﺴﺎﺑﻖ ﺑﻜﻼ اﻟﺼﻴﻐﺘﻴﻦ اﺳﺘﺪﻋﻰ إﺟﺮاء ﻣﺨﺰﻧﺎ ﻓﻲ ﻗﺎﻋﺪة اﻟﺒﻴﺎﻧﺎت اﺳﻤﻪ ‪ GetProductsByCategory‬واﻟﺬي أﺻﺒﺢ اﺳﺘﺪﻋﺎؤﻩ ﻷﺳﻬﻞ ﻣﻦ أي‬
‫وﻗﺖ ﻣﻀﻰ!‬

‫وﻗﺒﻞ أن اﺧﺘﻢ هﺬا اﻟﻤﻘﺎل‪ ،‬أود أن أﺧﺒﺮآﻢ ﺑﺨﺒﺮ ‪ ،‬وهﻮ أن هﺬﻩ اﻟﻤﻘﺎﻟﺔ ﻟﻴﺴﺖ آﺎﻣﻠﺔ وﻟﻜﻨﻨﻲ وﺿﻌﺖ اﻟﺠﺰء اﻟﺬي ﻳﺨﺺ اﻟﻜﻮد ﻓﻘﻂ ‪ ،‬ﻓﻬﻨﺎك ﺟﺰء ﺁﺧﺮ‬
‫ﻣﻦ هﺬﻩ اﻟﻤﻘﺎﻟﺔ ﻳﺘﺤﺪث ﺣﻮل اﻷداة ‪ LINQ to SQL‬وآﻴﻔﻴﺔ وﺿﻊ اﻟﺠﺪاول واﻟﺤﻘﻮل اﻟﻤﻄﻠﻮﺑﺔ ﻋﻠﻴﻬﺎ وأﻣﻮر أﺧﺮى ﻣﻬﻤﺔ ﻳﻤﻜﻨﻜﻢ اﻟﻮﺻﻮل إﻟﻴﻬﺎ‬
‫ﺑﺎﻟﻨﻘﺮ ﻋﻠﻰ هﺬا اﻟﺮاﺑﻂ‬

‫وآﺎﻟﻌﺎدة أﺟﺪد اﻟﻨﺪاء ‪ ،‬ﻳﺎ ﻣﻦ ﺗﺼﺮون ﻋﻠﻰ ‪ Visual studio 2002‬و ‪ 2003‬ﻓﻲ ﻋﻬﺪ ‪ 2005‬اﻟﻔﺮق ﺑﻴﻨﻬﻢ آﺒﻴﺮ ﺟﺪا ﻓﻠﻤﺎذا آﻞ هﺬا اﻹﺻﺮار ﻋﻠﻰ‬
‫اﻟﺒﻘﺎء ﻓﻲ اﻟﻮراء ؟‬

‫إﻟﻰ هﻨﺎ ﻧﺼﻞ إﻟﻰ ﻧﻬﺎﻳﺔ هﺬﻩ اﻟﻤﻘﺎﻟﺔ‪ ،‬وأﺳﺄل اﷲ ﺗﻌﺎﻟﻰ أن ﺗﻜﻮن ﻣﻦ اﻟﻌﻠﻢ اﻟﺬي ﻳﻨﺘﻔﻊ ﺑﻪ وان ﺗﺸﺤﺬ اﻟﻬﻤﻢ ﺑﻤﻦ ﻻ ﻳﺰال ﻳﻌﻚ ﻋﻠﻰ ‪ VB6‬ﺑﺄن ﻳﻨﺘﻘﻞ إﻟﻰ‬
‫‪ ‬‬ ‫‪ Visual studio .net 2005‬وﻣﺎ ﻓﻮق واﻧﺴﻮا ﺷﻲء اﺳﻤﻪ ‪ Visual studio 2003‬و ‪ 2002‬ﻓﻬﻲ أﺻﺒﺤﺖ ﻗﺪﻳﻤﻪ ﺟﺪا‬
‫‪ ‬‬ ‫ﺗﺤﻴﺎﺗﻲ ﻟﻜﻢ ‪ :‬اﻟﻨﺒﻬﺎﻧﻲ ﻣﻦ ﺳﻠﻄﻨﺔ ﻋﻤﺎن‬
‫‪ ‬‬

‫‪  ‬‬

‫‪14‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫ﺣﻤﺎﻳﺔ اﻟﻤﻠﻜﻴﺔ اﻟﻔﻜﺮﻳﺔ ‪..‬ﺣﻤﺎﻳﺔ ﻟﻠﻌﻘﻞ‬
‫ﻗﺎﻧﻮن ﺣﻤﺎﻳﺔ اﻟﻤﻠﻜﻴﺔ اﻟﻔﻜﺮﻳﺔ ﻓﻲ أي ﺑﻠﺪ ﻳﻘﻮم ﺑﺤﻤﺎﻳﺔ أﻏﻠﻰ وأﺛﻤﻦ ﻛﻨﺰ ﻣﻦ ﺛﺮوات‬
‫اﻟﺒﻠﺪ وﻫﻮ اﻟﻌﻘــــــــﻞ‪ ،‬وﻟﺬﻟﻚ ﻳﻤﻜﻨﻨﺎ أن ﻧﻄﻠﻖ ﻋﻠﻴﻬﺎ أﻳﻀﺎ ﺣﻤﺎﻳﺔ اﻟﻤﻠﻜﻴﺔ اﻟﻌﻘﻠﻴﺔ‪ ،‬اﻟﺘﻲ‬
‫ﺗﻬﺪف إﻟﻰ ﺣﻔﻆ ﺣﻘﻮق اﻟﺘﺄﻟﻴﻒ اﻟﻨﺎﺗﺠــــﺔ ﺑﺸﻜﻞ رﺋﻴﺴﻲ ﻣﻦ ﻓﻜﺮ اﻹﻧﺴﺎن وﻛﻞ ﻣﺠﻬﻮد‬
‫ﻋﻘﻠﻲ ﻳﻘﻮم ﺑﻪ‪ ،‬واﻟﺘﻲ ﺗﺘﺸﻜﻞ ﺑﺼﻮر ﻣﺨﺘﻠﻔﺔ‪ :‬ﻛﺘﺄﻟﻴﻒ اﻟﻜﺘــــــــﺐ‪ ،‬ﻛﺘﺎﺑﺔ اﻟﻤﻘﺎﻻت‬
‫اﻟﻌﻠﻤﻴﺔ‪ ،‬اﺑﺘﻜﺎر ﻃﺮق إدارﻳﺔ‪ ،‬اﻟﺼﻮر واﻟﺮﺳﻮم‪....‬‬
‫ﺗﺘﻤﺔ ﺻﻔﺤﺔ ‪16‬‬
‫ﺗﺮﻛﻲ اﻟﻌﺴﻴﺮي‬
‫ﺗﻌﻘﻴﺐ‪ /‬اﻟﺘﻌﺮﻳﻒ ﺑﺒﺮﻧﺎﻣﺞ ﺷﻬﺎدة أﻛﺎدﻳﻤﻴﺔ اﻟﻤﻨﻈﻤﺔ‬
‫‪ ‬اﻟﻌﺎﻟﻤﻴﺔ ﻟﻠﻤﻠﻜﻴﺔ اﻟﻔﻜﺮﻳﺔ ﻟﻠﺘﻌﻠﻴﻢ ﻋﻦ ﺑﻌﺪ‬
‫ﺗﺘﻤﺔ ﺻﻔﺤﺔ ‪17‬‬

‫ﻛـﻴــﻒ ﻧــﺤـﻞ ﻣـﺸـﺎﻛــﻠـــﻨـﺎ ﺑــﺄﻧــﻔــﺴــﻨـﺎ ؟‬


‫أوﻻ اﻟﺴﻼم ﻋﻠﻴﻜﻢ ورﺣﻤﺔ اﷲ وﺑﺮﻛﺎﺗﻪ‪....‬‬
‫وﺛﺎﻧﻴﺎً ﺗﻮاﺻﻼً ﻟﻤﺸﺎور اﻟﺴﻠﺴﻠﺔ اﻟﺬﻫﺒﻴﺔ ﻓﻲ اﻟﻤﻮاﺿﻴﻊ اﻟﻌﻠﻤﻴﺔ ﺳﻮف ﻧﻨﺎﻗﺶ اﻟﻴﻮم‬
‫ﻣﻮﺿﻮع ﻳﻬﻢ اﻟﻤﺒﺘﺪﺋﻴﻦ ﺑﺸﻜﻞ أﺳﺎﺳﻲ وﻫﻮ ﻛﻴﻔﻴﺔ اﺳﺘﻐﻼل ﻣﻌﻠﻮﻣﺎﺗﻚ اﻟﺒﺴﻴﻄﺔ ﻓﻲ‬
‫رﻏﻴﺪ ﻃﻴﺐ‬ ‫ﺗﻜﻮﻳﻦ ﻓﻜﺮة ﻋﻦ ﺣﻞ اﻟﻤﺸﻜﻠﺔ أو اﻟﻤﻮﺿﻮع اﻟﺬي ﺗﻨﻮي ﺑﺮﻣﺠﺘﻪ ﺛﻢ ﻧﻨﺘﻘﻞ ﺑﺈذن ﻣﻦ اﷲ‬
‫ﺗﻌﺎﻟﻰ وﺗﻮﻓﻴﻖ إﻟﻰ ﺑﻌﺾ اﻻﺧﺘﺼﺎرات و اﻷﻓﻜﺎر اﻟﺒﺮﻣﺠﻴﺔ اﻟﺒﺴﻴﻄﺔ اﻟﺘﻲ ﺑﺎﻟﺘﺄﻛﻴﺪ ﺳﻮف‬
‫ﺗﺴﺘﻐﻠﻬﺎ ﻓﻲ اﻟﻌﺪﻳﺪ ﻣﻦ ﺑﺮاﻣﺠﻚ اﻟﻘﺎدﻣﺔ وذﻟﻚ ﻓﻲ اﻟﻤﻮﺿﻮع اﻟﺘﺎﻟﻲ ﻣﻦ ﺣﻠﻘﺎت ﻫﺬه‬
‫اﻟﺴﻠﺴﻠﺔ إن ﺷﺎء اﷲ ﺗﻌﺎﻟﻰ ‪ ...‬واﺧﺺ ﺣﺪﻳﺜﻲ ﻫﺬا ﺑﺄﺧﻮﺗﻲ ﺣﺪﻳﺜﻮ اﻟﻌﻬﺪ ﺑﺎﻟﺒﺮﻣﺠﺔ‪...‬‬
‫ﺗﺘﻤﺔ ﺻﻔﺤﺔ ‪19‬‬

‫ﺟﻤــــﺎل اﻟﺸـــﻜﻞ وﻓﺴـــﺎد اﻟـــﺮوح‬


‫اﻟﻜﺒﺮ اﻟﻜﺒﺮ ‪ -‬اﻟﻠﻬﻢ أﻏﺜﻨﺎ –‬
‫أﺣﻤﺪ ﺑﺪر ‪BADRMEDIA‬‬ ‫اﻟﺸﻜﻞ‪ :‬ﻣﺒﺮﻣﺞ ﻣﻄﻮر ﻣﺤﺘﺮف وﻣﻤﻴﺰ‪.‬‬
‫اﻟــــﺮوح‪ :‬ﻣﺘﻜﺒﺮ ﺻﺎﺣﺐ ﻏﺮور ﺑﺎﻟﻨﻔﺲ‪.‬‬
‫اﻟﻨﺘﻴﺠﺔ‪ :‬ﺧﺎﺳﺮ ﻟﻠﺪﻧﻴﺎ واﻵﺧﺮة‬
‫ﺗﺘﻤﺔ ﺻﻔﺤﺔ ‪23‬‬
‫‪ ‬‬

‫ﻣﻘﺎﻻت ﻣﻨﻮﻋﺔ ﻳﻜﺘﺒﻬﺎ ﻛﺒﺎر أﺳﺎﺗﺬة اﻟﻤﻨﺘﺪى‬


‫إﻋﺪاد ﻧﻮرﻫﺎن ﻋﺎدل‬
‫‪ ‬‬ ‫‪ ‬‬ ‫‪ ‬‬

‫‪ ‬‬ ‫‪ ‬‬
‫ﺣﻤﺎﻳﺔ اﻟﻤﻠﻜﻴﺔ اﻟﻔﻜﺮﻳﺔ ‪..‬ﺣﻤﺎﻳﺔ ﻟﻠﻌﻘﻞ‬
‫ﺗـﺮﻛــﻲ اﻟـﻌــﺴـﻴـﺮي‬
‫ﻗﺎﻧﻮن ﺣﻤﺎﻳﺔ اﻟﻤﻠﻜﻴﺔ اﻟﻔﻜﺮﻳﺔ ﻓﻲ أي ﺑﻠﺪ ﻳﻘﻮم ﺑﺤﻤﺎﻳﺔ أﻏﻠﻰ‬
‫ﺑﻜﻞ ﺗﺄآﻴﺪ ﻟﻦ أﻗﻒ ﻣﻜﺘـــﻮف اﻷﻳﺪي ﺷﺎﻋﺮًا ﺑﺎﻻآﺘﻔﺎء اﻟﺬاﺗﻲ‪ ،‬ﺑﻞ ﺳﺘﺰﻳﺪ‬ ‫وأﺛﻤﻦ آﻨﺰ ﻣﻦ ﺛﺮوات اﻟﺒﻠﺪ وهﻮ اﻟﻌﻘــــــــﻞ‪ ،‬وﻟﺬﻟﻚ ﻳﻤﻜﻨﻨﺎ أن ﻧﻄﻠﻖ‬
‫ﻣﻦ ﺣﻤﺎس اﻟﺸﺨﺺ واﻟﺘﻄﻠﻊ إﻟﻰ اﻟﺘﻄﻮﻳﺮ واﻟﺘﻨﻤﻴﺔ ﻓﻲ هﺬا اﻟﻤﺠﺎل‪،‬‬ ‫ﻋﻠﻴﻬﺎ أﻳﻀﺎ ﺣﻤﺎﻳﺔ اﻟﻤﻠﻜﻴﺔ اﻟﻌﻘﻠﻴﺔ‪ ،‬اﻟﺘﻲ ﺗﻬﺪف إﻟﻰ ﺣﻔﻆ ﺣﻘﻮق اﻟﺘﺄﻟﻴﻒ‬
‫وﻳﺒﺪأ ﺑﺎﻟﻌﻤﻞ أآﺜﺮ ﻣــــﻦ اﻟﻤﺮة اﻟﺴﺎﺑﻘﺔ ﻻﺳﺘﻤﺮار إﻧﺘﺎﺟﻴﺘﻪ‪ .‬ﻣﻦ ﻧﺎﺣﻴﺔ‬ ‫اﻟﻨﺎﺗﺠــــﺔ ﺑﺸﻜﻞ رﺋﻴﺴﻲ ﻣﻦ ﻓﻜﺮ اﻹﻧﺴﺎن وآﻞ ﻣﺠﻬﻮد ﻋﻘﻠﻲ ﻳﻘﻮم ﺑﻪ‪،‬‬
‫أﺧﺮى‪ ،‬ﻋﻨﺪ ﻗﻴﺎم اﻟﻤﺨﺮﺑﻴﻦ ﺑﻨﺴﺦ ﻣﺎ ﺟﻔﺖ ﻋﻠﻴﻪ أﻗﻼﻣﻲ ﻣﻦ اﻟﺘﻌـﺐ‪،‬‬ ‫واﻟﺘﻲ ﺗﺘﺸﻜﻞ ﺑﺼﻮر ﻣﺨﺘﻠﻔﺔ‪ :‬آﺘﺄﻟﻴﻒ اﻟﻜﺘــــــــﺐ‪ ،‬آﺘﺎﺑﺔ اﻟﻤﻘﺎﻻت‬
‫وﺑﺎدر اﻟﺠﻤﻴﻊ ﺑﺨﺮق ﻗﺎﻧﻮن ﺣﻤﺎﻳﺔ اﻟﻤﻠﻜﻴﺔ اﻟﻔﻜﺮﻳﺔ‪ ،‬ﻓﺴﺘﺠﺪ اﻹﺣﺒﺎط‬ ‫اﻟﻌﻠﻤﻴﺔ‪ ،‬اﺑﺘﻜﺎر ﻃﺮق إدارﻳﺔ‪ ،‬اﻟﺼﻮر واﻟﺮﺳﻮم‪ ،‬اﻷﻓﻼم اﻟﻤﺮﺋﻴﺔ‬
‫واﻟﻴﺄس ﻋﻨﺪ هﺬا اﻟﺸﺨﺺ ﻣﺎ اﻟﺬي ﻻ ﻳﻌﻠﻤـﻪ إﻻ اﻟﺬي ذاﻗﻪ ﻓﻘﻂ‪ ،‬ﺑﻞ ﻗﺪ‬ ‫واﻟﻤﺴﻤﻮﻋﺔ‪ ،‬واﻷهﻢ ﻣﻦ هﺬا آﻠـــــﻪ ﺗﻄﻮﻳــــﺮ ﺑﺮاﻣﺞ اﻟﻜﻤﺒﻴﻮﺗﺮ‪.‬‬
‫ﺗﺼﻞ اﻷﻣﻮر إﻟﻰ آﺮﻩ اﻟﻤﺠﺘﻤﻊ اﻟﺬي ﺣﻮﻟﻪ‪ ،‬وﻋﺪ اﻟﺘﻔﻜﻴﺮ ﻣﻄﻠﻘﺎ ﺑﻨﻔﻌﻬــﻢ‬ ‫واﻹﺟﺮاءات اﻟﺮوﺗﻴﻨﻴﺔ اﻟﺘﻲ ﺗﺘﺒﻌﻬﺎ اﻟﺪول ﻟﺤﻔﻆ هﺬﻩ اﻟﺤﻘﻮق ﺗﻜﻮن‬
‫أو ﺗﻄﻮﻳﺮهﻢ‪ ،‬وإن آﺎن ﺷﺨﺼ ًﺎ ﻣﺤﻈﻮﻇًﺎ ﻗﺪ ﻳﺒﺪأ ﻳﻔﻜﺮ ﻓﻲ اﻟﺴﻔﺮ أو‬ ‫ﻣﺨﺘﻠﻔﺔ‪ ،‬وﻟﻜﻦ ﻓﻲ أﻏﻠــﺐ اﻷﺣﻮال ﺗﺘﻢ ﺑﻌﺪ ﻗﻴﺎم ﺻﺎﺣﺐ اﻻﺑﺘﻜﺎر واﻟﻔﻜﺮة‬
‫اﻟﻬﺠﺮة‪ ،‬أو ﺗﺠﺪﻩ ﻓﻲ اﻟﻤﻘﺎهﻲ ﻳﺴﺐ وﻳﺸﺘﻢ وﻳﻤﺎرس ﺣﻴﺎة ﺑﺎﺋﺴﺔ ﺗﻘﻠﻴﺪﻳﺔ ‪.‬‬ ‫ﺑﺘﺴﺠﻴﻞ ﻓﻜﺮﺗﻪ واﻟﺤﺼﻮل ﻋﻠﻰ ﺣﻘـــﻮق اﻟﺘﺄﻟﻴــــﻒ وأﺧـﺬ ﺑﺮاءة‬
‫اﻻﺧﺘﺮاع ﻣﻦ إﺣﺪى اﻟﺠﻬﺎت اﻟﺤﻜﻮﻣﻴﺔ واﻟﻤﺴﺌﻮﻟﺔ ﻋﻦ ﺣﻤﺎﻳﺔ ﺣﻘﻮق‬
‫اﻟﺪﻋﻮة إﻟﻰ اﻻﺑﺘﻜﺎر‪ ،Creativity‬آﻤﺎ ذآﺮت ﻓﻲ ﺑﺪاﻳﺔ هﺬا‬
‫اﻟﻤﻠﻜﻴﺔ اﻟﻔﻜﺮﻳﺔ ﻓﻲ اﻟﺪوﻟـــــــﺔ‪ ،‬وﻗﺪ ﺗﻜـﻮن هﻨﺎك رﺳﻮم ﺑﺴﻴﻄﺔ‪ ،‬وﺑﻤﺠﺮد‬
‫اﻟﻤﻘﺎل‪ ،‬ﻓﺈن اﻟﻌﻘﻞ اﻟﺒﺸﺮي هﻮ أﺛﻤﻦ وأﻏﻠﻰ ﻣﺼﺪر ﻋﻠﻰ أي دوﻟﺔ اﻟﺤﻔﺎظ‬
‫ﻗﻴﺎم اﻟﺸﺨﺺ ﺑﺎﻟﺘﺴﺠﻴﻞ‪ ،‬ﻓﻘﺪ ﺿﻤﻦ ﻟﻨﻔﺴﻪ وﻋﻘﻠﻪ اﻟﺤﻔﺎظ ﻋﻠﻰ ﻣﻤﺘﻠﻜﺎﺗﻪ‬
‫ﻋﻠﻴﻪ وﺣﻤﺎﻳﺔ ﺣﻘﻮﻗﻪ‪ ،‬وﻻ ﻳﺨﺘﻠﻒ ﺷﺨﺼﺎن ﻋﻠﻰ أن ﺗﻄﻮر اﻷﻓﺮاد‬
‫ﻣﻦ اﻟﻨﺴﺦ واﻟﺘﺰوﻳﺮ واﻟﺴﺮﻗﺔ ‪ -‬أي ﻣﻦ اﻟﻘﺮﺻﻨﺔ ‪ Piracy‬ﺑﺸﻜﻞ ﻋﺎم ‪.‬‬
‫واﻟﻤﺠﺘﻤﻌﺎت ﻧﺎﺗــﺞ ﻣﻦ اﻻﺑﺘﻜﺎر وﺧﻠﻖ أﻓﻜﺎر ﺟﺪﻳﺪة واﻟﺘﻔﻜﻴﺮ ﻓﻲ ﺣﻠﻮل‬
‫ﺗﺰﻳﺪ ﻣﻦ إﻧﺘﺎﺟﻴﺔ اﻟﻔﺮد واﻟﻤﺠﺘﻤﻊ‪ .‬ﻣﻦ اﻟﺜﻘﺎﻓﺎت اﻟﺘﻲ ﺗﺮﺑﻴﻨﺎ ﻋﻠﻴﻬﺎ ﻣﻨﺬ‬ ‫اﻟﻨﻈﺮة اﻻﻗﺘﺼﺎدﻳﺔ ﺗﺸﻴﺮ إﻟﻰ أن اﻹﻧﺴﺎن ﻟﻴﺲ ﺑﺤﺎﺟﺔ إﻟﻰ‬
‫ﻧﻌﻮﻣﺔ أﻇﻔﺎرﻧﺎ ‪ -‬ﻧﺘﻴﺠﺔ ﻟﻠﻌﻮاﻣﻞ اﻟﺘﻌﻠﻴﻤﻴﺔ واﻻﺟﺘﻤﺎﻋﻴﺔ‪ -‬هﻮ اﻻﻧﻘﻴﺎد‬ ‫ﺷﻬﺎدة ﻓﻲ ﺗﺨﺼﺺ ﻋﻠﻢ اﻻﻗﺘﺼﺎد ﺣﺘــﻰ ﻳﻘﺘﻨـــــﻊ أن دﺧﻮل أي ﺻﻨﺎﻋﺔ‬
‫وﻋﺪم اﻟﺘﻔﻜﻴﺮ ﻣﻄﻠﻘًﺎ ﻓﻲ اﺳﺘﺨﺪام آﻠﻤــﺔ »ﻟﻤﺎذا؟« ﻓﺘﺠﺪﻧﺎ ﻣﻨﻘﺎدﻳﻦ دون‬ ‫ﺟﺪﻳﺪة وﺗﻄﻮر ﺗﻘﻨﻲ ﺗﺸﻬﺪﻩ أي ﺑﻠﺪ ﻳﺆدي إﻟﻰ زﻳﺎدة ﻓﻲ اﻟﻨﺎﺗــﺞ اﻟﻘﻮﻣﻲ‬
‫أن ﻧﻌﺮف ﻟﻤﺎذا وإﻟﻰ أﻳﻦ ﻧﻨﻘﺎد‪ ،‬وﻳﺼﺒﺢ ﺗﻔﻜﻴﺮﻧﺎ ﻣﺤﺪودًا ﻻ ﻳﺘﻌﺪى ﻧﻄﺎق‬ ‫ﻼ وأﺧﺬت اﻟﺼﻨﺎﻋﺎت اﻟﺤﺪﻳﺜﺔ‬ ‫اﻟﻤﺤﻠﻲ ‪ GDP‬ﻟﻠﺪوﻟﺔ‪ .‬وﻟﻮ ﻓﻜﺮت ﻗﻠﻴ ً‬
‫اﻟﻤﻜـﺎن اﻟﺬي ﺳﻨﻘﻀﻲ ﻓﻴﻪ اﻟﻠﻴﻠﺔ ﺑﻌﺪ ﻧﻬﺎﻳﺔ ﻳﻮم اﻟﻌﻤـــﻞ أو ﻣﻜﺎن ﻗﻀــﺎء‬ ‫آﺎﻻﺗﺼﺎﻻت واﻟﻄﻴﺮان ووﺳﺎﺋﻞ اﻟﺘﺮﻓﻴﻪ وﻏﻴﺮهــﺎ‪ ،‬ﺳﺘﺠـﺪ أﻧﻬـــــﺎ‬
‫اﻟﻌﻄﻠــﺔ اﻟﺼﻴﻔﻴـــﺔ‪ ،‬وهﺬا اﻟﺸـﻲء ‪ -‬ﻣﻊ اﻷﺳﻒ اﻟﺸﺪﻳﺪ ‪ -‬ﻣﻨﻐﺮس ﻓﻴﻨﺎ‬ ‫ﺳﺎهﻤﺖ ﻓﻲ زﻳﺎدة اﻗﺘﺼﺎد اﻟﺪوﻟﺔ‪ ،‬ووﻓﺮت ﺁﻻف اﻟﻔﺮص اﻟﻮﻇﻴﻔﻴﺔ‪ .‬ﻟﻴﺲ‬
‫وﻓﻲ ﺛﻘﺎﻓﺘﻨﺎ‪ .‬إﻣﺎ أن ﺑﺪأ اﻟﺸﺨﺺ ﻳﺴﺄل وﻳﻜﺜﺮ ﻣﻦ اﺳﺘﺨﺪام اﻟﻜﻠﻤﺔ‬ ‫هﺬا ﻓﻘﻂ‪ ،‬ﺑﻞ إن دﺧﻮل أي ﺻﻨﺎﻋـــــﺔ ﺟﺪﻳﺪة ﻳﻨﺘﺢ ﻋﻨﻪ ارﺗﺒﺎﻃﺎت ﻟﺠﻬﺎت‬
‫»ﻟﻤـــﺎذا؟« ﻓﻬﻨﺎ ﺳﺘﻜــﻮن ﺑﺪاﻳﺔ اﻟﻄﺮﻳﻖ إﻟﻰ ﻋﺎﻟﻢ اﻻﺑﺘﻜﺎر واﻟﻨﻈﺮ إﻟﻰ‬ ‫أﺧﺮى‪ ،‬ﻓﻠﻮ ﺗﺄﺧﺬ اﻟﻬﺎﺗﻒ ﻋﻠﻰ ﺳﺒﻴﻞ اﻟﻤﺜﺎل ﻻ اﻟﺤﺼﺮ‪ ،‬ﺳﺘﺠﺪ ﻓﺮﺻـﺎ‬
‫اﻷﻣﻮر ﻣﻦ زواﻳﺎ أﺧﺮى‪ ،‬ﻓﻌﻨﺪﻣﺎ أرى ﻣﺸﻜﻠﺔ ﻣﺎ ﻓﻲ ﺟﻬﺔ ﺗﻨﻈﻴﻤﻴﺔ‪،‬‬ ‫أﺧﺮى ﻟﺒﻴﻊ أﺟﻬﺰة اﻟﺠﻮال واﻻﺗﺼﺎﻻت‪ ،‬ﺑـﻞ ﺣﺘﻰ دﺧــــﻠﺖ ﺷﺮآـــﺎت‬
‫أﺳﺘﻄﻴﻊ أن أﻃﺮح أﺳﺌﻠﺔ ﻟﻤﺎذا؟ ﻟﻤﺎذا ﻻ ﻧﻘﻮم ﺑﺘﻐﻴﻴﺮ ﻃﺮﻳﻘﺔ إﺟﺮاء هﺬﻩ‬ ‫اﻹﻋﻼﻧــﺎت اﻟﻬﺎﺗﻔﻴـــﺔ‪ ،‬وهﻨﺎك ﺷﺮآﺎت اﻟﺘﺮﻓﻴﻪ اﻟﻤﺘﺨﺼﺼﺔ ﻓﻲ اﻟﻨﻐﻤﺎت‬
‫اﻟﻤﻌﺎﻣﻠﺔ ﺣﺘﻰ ﻧﺨﺘﺼﺮ اﻟﻮﻗﺖ‪ ،‬ﻟﻢ ﻻ ﻧﻘﻮم ﺑﺘﺤﻮﻳﻞ اﺳﺘﺨﺪام هﺬﻩ اﻟﺨﻄﻮات‬ ‫واﻟﺮﻣﻮز ﻋﻠﻰ اﻷﺟﻬﺰة‪ ،‬وﻇﻬﺮت ﺷﺮآﺎت أﺧﺮى ﻟﺼﻴﺎﻧﺔ أﺟﻬﺰة اﻟﺠﻮال‬
‫ﻣﻦ ﻗﺎﻋﺪ ورﻗﻴﺔ إﻟﻰ ﻗﺎﻋﺪة ﻣﻌﻠﻮﻣﺎﺗﻴﺔ؟ وﻏﻴﺮهﺎ ﻣﻦ اﻷﺳﺌﻠﺔ اﻟﺘﻲ ﺗﻨﺘﺞ ﻓﻲ‬ ‫وﺧﺪﻣـــﺎت اﻟﺪﻋﻢ اﻟﻔﻨﻲ‪ ،‬وﻋﺸﺮات اﻟﺸﺮآﺎت اﻷﺧﺮى اﻟﻤﺘﻌﺎﻗﺪة‬
‫ﻻ ﺟﺪﻳﺪة‪ ،‬ﻓﺎﻟﺤﺎﺟﺔ هﻲ أم اﻻﺧﺘﺮاع‪ .‬إن ﻧﻈــﺮﻧﺎ إﻟﻰ‬ ‫اﻟﻨﻬﺎﻳﺔ أﻓﻜﺎرا وﺣﻠﻮ ً‬ ‫‪ Contractors‬ﻣﻊ اﻟﺸﺮآﺔ اﻷم‪ ،‬واﻟﻤﺰﻳﺪ واﻟﻤﺰﻳـــﺪ )وآﻠﻪ ﻓﻲ اﻟﻨﻬﺎﻳﺔ‬
‫ﻣﺠﺘﻤﻌﻨــﺎ اﻟﺴﻌﻮدي ﺑﺸﻜـــﻞ ﺧﺎص؛ ﻓﻠﺪﻳﻪ ﻣﻦ اﻟﻄﺎﻗﺎت اﻟﻜﺎﻣﻨﺔ اﻟﺘﻲ‬ ‫ﻣﻦ ﻣﺼﻠﺤﺔ اﻟﻤﻮاﻃﻦ ﻓﻲ ﺗﻮﻓﻴﺮ اﻟﻤﺰﻳﺪ ﻣﻦ اﻟﻔﺮص اﻟﻮﻇﻴﻔﻴﺔ(‪ ،‬ﻓﻠﻮ ﺗﻼﺣﻆ‬
‫ﺗﺴﺎوي ﻣﻞء اﻷرض ذهﺒًﺎ‪ ،‬وأﺧﺘﺺ ﺑﺎﻟﻄﺎﻗﺎت اﻟﻜﺎﻣﻨﺔ هﻨﺎ ﺑﺎﻟﻄﺎﻗﺎت‬ ‫أن ﺟﻤﻴﻌﻬﺎ ﻇﻬﺮت ﺑﺴﺒﺐ دﺧﻮل ﺷﺮآﺔ اﺗﺼﺎﻻت ﻓﻲ دوﻟﺔ ﻣﺎ‪ ،‬وإﻧﻬﺎ‬
‫اﻟﻌﻘﻠﻴﺔ ﻓﻲ اﻟﻌﻨﺼـــﺮ اﻟﺒﺸﺮي‪ ،‬اﻟﺘﻲ إن اﺳﺘﺜﻤﺮت ﺑﺸﻜﻞ ﺻﺤﻴﺢ ﺳﺘﻐﻄﻲ‬ ‫ﻣﺮﺗﺒﻄﺔ ﺑﻪ ارﺗﺒﺎﻃًﺎ وﺛﻴﻘًﺎ‪ .‬آﺬﻟﻚ اﻟﺤﺎل ﻣﻊ ﺻﻨﺎﻋـــــﺔ اﻟﺒﺮﻣﺠﻴــــﺎت‬
‫ﻣﺎ ﻳﻘﻠﻞ اﻋﺘﻤﺎدﻧﺎ ﻋﻠﻰ اﻟﻤﺼــﺎدر اﻷﺧﺮى‪ ،‬ﻓﻬﺬا ﺷـﺎب ﻟﻪ ﻣﻦ اﻷﻓﻜﺎر‬ ‫‪ ،Software Industry‬ﻓﻌﻨﺪﻣﺎ ﺗﺜﺒﺖ هﺬﻩ اﻟﺼﻨﺎﻋﺔ وﺟﻮدهﺎ ﻓﻲ أي‬
‫اﻟﻜﺜﻴﺮ‪ ،‬وهﺬﻩ ﺷﺎﺑﺔ ﻟﻬﺎ ﻣﻦ اﻹﺑﺪاﻋﺎت ﻣﺎ ﻳﻔـﻮق اﻟﺘﻮﻗﻌـــﺎت‪ ،‬وﻋﺪم وﺟﻮد‬ ‫دوﻟﺔ‪ ،‬ﺳﺘﻼﺣﻆ زﻳﺎدة ﻓﻲ ﻣﺒﻴﻌﺎت أﺟﻬــﺰة اﻟﻜﻤﺒﻴﻮﺗﺮ‪ ،‬وﺳﺘﻈﻬﺮ اﻟﻤﺰﻳﺪ‬
‫اﻟﻔﺮص اﻟﺴﺎﻧﺤــــﺔ ﻟﻬـــﻢ واﻹﻣﻜﺎﻧﺎت ﺷﻲء ﻣﺤﺒﻂ وﻣﻐﻴﻆ‪ ،‬وﻗﺪ ﻳﺤﻮل‬ ‫ﻣﻦ ﻣﻌﺎهﺪ ﺗﻘﺪم دورات ﺗﺪرﻳﺒﻴﺔ‪ ،‬وﺳﺘﻜﻮن هﻨﺎك ﺟﻬﺎت وﺷﺮآــﺎت‬
‫اﻹﻧﺴﺎن ﻣﻦ ﺷﺨﺺ ﻣﻨﺘﺞ إﻟﻰ ﻣﺴﺘﻬـــــــﻠﻚ‪ .‬واﻟﺘﺠـــﺮﺑﺔ اﻟﻬﻨﺪﻳـــﺔ ﺧﻴـﺮ‬ ‫اﺳﺘﺸﺎرﻳﺔ ﻟﻠﻤﺸﺎرﻳﻊ اﻟﻜﺒﻴﺮة‪ ،‬وﺳﻴﺰداد اﻟﻄﻠﺐ ﻋﻠﻰ ﺷﺮآﺎت أﻣﻦ‬
‫دﻟﻴﻞ‪ ،‬ﻓﻘﺪ أﺻﺒﺤﺖ اﻟﺸﺮآﺎت اﻷوروﺑﻴﺔ واﻷﻣﺮﻳﻜﻴﺔ ﺗﺴﺘﻮرد ﻋﺸﺮات‬ ‫اﻟﻤﻌﻠﻮﻣﺎت ‪ Security‬وﺷﺮآﺎت إﻧﺘﺎج وﺣﺪات اﻟﺘﺨﺰﻳـﻦ ‪Storage‬‬
‫اﻵﻻف ﻣﻦ اﻟﻬﻨﻮد ﺳﻨﻮﻳــــﺎ ﺑﺴﺒــﺐ ﻋﻘﻮﻟﻬـﻢ‪.‬‬ ‫‪ ،Mediums‬وﺳﺘﻜﻮن اﻟﺤﺎﺟﺔ ﻟﻤﺰﻳﺪ ﻣﻦ اﻟﻤﺒﺮﻣﺠﻴﻦ واﻟﻤﺼﻤﻤﻴﻦ‬
‫واﻟﻤﻬﻨﺪﺳﻴﻦ‪ ،‬و‪ ..‬و‪ ..‬وﻏﻴﺮهــــﺎ اﻟﻜﺜﻴﺮ‪ .‬وهﺬﻩ اﻟﻘﻔﺰات اﻹﻳﺠﺎﺑﻴﺔ ﻧﺘﻴﺠﺘﻬﺎ‬
‫أﺛﺒﺖ ﻗﺎﻧﻮن ﺣﻤﺎﻳـــﺔ اﻟﻤﻠﻜﻴـــﺔ اﻟﻔﻜﺮﻳﺔ وﻋﻮدﻩ ﻋﻨﺪ ﺗﻄﺒﻴﻘـــﻪ‬
‫ﻗﺎﻋﺪة ﺛﺎﺑﺘﺔ ﻋﻨﺪ دﺧﻮل أي ﺻﻨﺎﻋﺔ ﺟﺪﻳﺪة ‪.‬‬
‫ﻓﻲ اﻟﺪول اﻟﻤﺘﻘﺪﻣﺔ ﺑﻬـــﺪف ﺣﻤﺎﻳﺔ ﻋﻘـــﻮل اﻷﻓﺮاد واﻧﺘﺎﺟﺎﺗﻬﻢ اﻟﻔﻜﺮﻳﺔ‬
‫ﻓﻲ اﻟﻤﺠﺘﻤﻊ‪ ،‬وهﻮ ﻳﺆدي إﻟﻰ زﻳﺎدة ﻧﻤﻮ اﻟﻤﺠﺘﻤﻌــــﺎت ﻣﻦ ﻧﻮاح ﻋﺪة‬ ‫اﻟﻨﻈﺮة اﻟﺘﻨﻤﻮﻳﺔ‪ ،‬ﻋﻨﺪﻣﺎ ﻳﻘﻮم أﺣﺪ اﻷﺷﺨﺎص ﺑﺈﻧﺘﺎج ﺑﺮﻧﺎﻣﺞ أو‬
‫آﺎﻟﻨﻮاﺣﻲ اﻻﻗﺘﺼﺎدﻳﺔ واﻟﺘﻨﻤﻮﻳﺔ واﻟﺒﺸﺮﻳﺔ‪ ،‬وهﻮ أﻳﻀًﺎ اﻟﻌﺎﻣﻞ اﻟﺮﺋﻴﺴﻲ‬ ‫ﺗﻄﺒﻴﻖ ﻓﻜﺮة ﻧﺎﺟﺤﺔ ﻟﻬﺎ ﺻﺪى‪ ،‬ﻓﺎﻟﻨﺘﻴﺠﺔ ﺳﺘﻜـﻮن واﺣﺪة ﻣﻦ اﺛﻨﺘﻴﻦ‪ :‬أﻣﺎ‬
‫ﻟﺨﻠﻖ أﻓﻜﺎر ﺟﺪﻳﺪة وﺗﻄﻮﻳــــــﺮ اﻟﺼﻨﺎﻋـﺎت‪ .‬وﻟﻮ ﻧﻈﺮﻧﺎ ﻓﻲ ﺷﺮﻳﻌﺘﻨﺎ‬ ‫اﻻﺳﺘﻤﺮار ﻓﻲ ﺗﻄﻮﻳﺮ هﺬﻩ اﻟﻔﻜﺮة وزﻳﺎدة اﻹﻧﺘﺎﺟﻴـــﺔ ‪Productivity‬‬
‫اﻟﺴﻤﺤﺔ‪ ،‬ﻻآﺘﺸﻔﻨﺎ أن اﻟﺪﻋﻮة إﻟﻰ ﺣﻤﺎﻳﺔ اﻟﻤﻠﻜﻴﺔ اﻟﻔﻜﺮﻳﺔ ﻣﻨﺬ ‪ 1400‬ﺳﻨﺔ‬ ‫اﻟﺘﻲ ﺗﻘــﺪﻣﻬﺎ‪ ،‬وإﻣﺎ اﻹﺣﺒﺎط واﻟﻴﺄس ﺳﻴﻜﻮن ﻣﻦ ﻧﺼﻴﺒﻪ‪ .‬ﻓﻠﻮ ﻗﻀﻴﺖ‬
‫ﻣﺬآﻮرة ﻓﻲ اﻟﻘﺮﺁن اﻟﻜﺮﻳﻢ ﻓﻲ ﻗﻮﻟﻪ ﺗﻌﺎﻟﻰ ﺑﺴﻮرة اﻟﻨﺴﺎء )) ﻳﺎ أﻳﻬﺎ اﻟﺬﻳﻦ‬ ‫ﻋﺸﺮات اﻷﺷﻬﺮ ﻓﻲ آﺘﺎﺑﺔ آﺘﺎب أو ﺗﻄﻮﻳﺮ ﺑﺮﻧﺎﻣﺞ‪ ،‬وﺗﻤــــــﺖ ﺣﻤﺎﻳﺔ‬
‫اﻣﻨﻮا ﻻ ﺗﺄآﻠﻮا أﻣﻮاﻟﻜﻢ ﺑﻴﻨﻜﻢ ﺑﺎﻟﺒﺎﻃﻞ إﻻ أن ﺗﻜﻮن ﺗﺠﺎرة ﻋﻦ ﺗﺮاض‬ ‫ﺣﻘﻮق ﻣﻠﻜﻴﺘﻲ اﻟﻔﻜﺮﻳﺔ ﻟﻪ‪ ،‬ﻓﻤﺎذا ﺳﺘﻜﻮن اﻟﻨﺘﻴﺠﺔ؟‬
‫ﻣﻨﻜﻢ (( وﻓﻲ ﺳﻮرة اﻟﺒﻘﺮة )) وﻻ ﺗﺄآﻠﻮا أﻣﻮاﻟﻜﻢ ﺑﻴﻨﻜﻢ ﺑﺎﻟﺒﺎﻃﻞ (( …‬

‫‪16‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫‪ ‬‬ ‫‪ ‬‬

‫ﺣﻤﺎﻳﺔ اﻟﻤﻠﻜﻴﺔ اﻟﻔﻜﺮﻳﺔ ‪ ..‬ﺣﻤﺎﻳﺔ ﻟﻠﻌﻘﻞ‬


‫ﺗـﺮﻛــﻲ اﻟـﻌــﺴـﻴـﺮي‬ ‫وﻓﻲ اﻟﺨﺘﺎم‪ ،‬ﻋﻨﺪ ﺗﻄﺒﻴﻖ ﺣﻤﺎﻳﺔ اﻟﻤﻠﻜﻴﺔ اﻟﻔﻜﺮﻳﺔ )ﺑﺸﻜﻞ واﻗﻌﻲ وﻟﻴﺲ‬
‫ورﻗﻲ( ﻓﻼ ﺗﺴﺘﺒﻌﺪ ﻳﻮﻣــًﺎ ﻣﻦ اﻷﻳﺎم ﻗﺮاءة ﻋﻨﺎوﻳﻦ ﻓﻲ اﻟﺼﺤﻒ ﺷﺒﻴﻬﻪ ﺑـ ‪:‬‬
‫‪-‬اﻟﻮﺣﺪة رﻗﻢ ‪ : 1‬ﻣﺪﺧﻞ إﻟﻰ اﻟﻤﻠﻜﻴﺔ اﻟﻔﻜﺮﻳﺔ‪.‬‬ ‫• وﻓﻘﺎ ﻹﺣﺼﺎﺋﻴﺎت ﻋﺎﻟﻤﻴﺔ‪ ،‬اﻟﺴﻌﻮدﻳﻮن أﻓﻀﻞ ﻣﺒﺮﻣﺠﻴﻦ ﺣﻮل اﻟﻌﺎﻟﻢ !‬
‫‪-‬اﻟﻮﺣﺪة رﻗﻢ ‪ : 2‬ﺣﻖ اﻟﻤﺆﻟﻒ‪.‬‬ ‫• وآﺎﻟﺔ ﻧﺎﺳﺎ اﻟﻔﻀﺎﺋﻴﺔ ﺗﺴﺘﻘﻄﺐ اﺳﺘﺸﺎرﻳﻴﻦ ﺳﻌﻮدﻳﻴﻦ ﻟﺪﻋﻢ أﺣﺪ‬
‫‪-‬اﻟﻮﺣﺪة رﻗﻢ ‪ : 3‬اﻟﺤﻘﻮق اﻟﻤﺠﺎورة ﻟﺤﻖ اﻟﻤﺆﻟﻒ‪.‬‬ ‫ﻣﺸﺎرﻳﻌﻬﺎ !‬

‫‪-‬اﻟﻮﺣﺪة رﻗﻢ ‪ :4‬اﻟﻌﻼﻣﺎت اﻟﺘﺠﺎرﻳﺔ‪.‬‬ ‫• زﻳﺎدة اﻟﺒﻌﺜﺎت اﻟﺪراﺳﻴﺔ ﻣﻦ ﺣﻮل اﻟﻌﺎﻟﻢ إﻟﻰ اﻟﻤﻌﺎهﺪ واﻟﺠﺎﻣﻌﺎت‬
‫اﻟﺴﻌﻮدﻳﺔ ﻟﺘﻌﻠﻢ اﻟﺘﻘﻨﻴﺔ !‬
‫‪-‬اﻟﻮﺣﺪة رﻗﻢ ‪ : 5‬اﻟﺒﻴﺎﻧﺎت اﻟﺠﻐﺮاﻓﻴﺔ‪.‬‬
‫• ﻗﻨﺎة ‪ CNN‬ﺗﻌﺘﻤﺪ أﻧﻈﻤﺘﻬﺎ اﻟﺠﺪﻳﺪة ﺑﺈﺷﺮاف ﺷﺮآﺎت ﺳﻌﻮدﻳﺔ !‬
‫‪-‬اﻟﻮﺣﺪة رﻗﻢ ‪ : 6‬اﻟﺮﺳﻮم أو اﻟﻨﻤﺎذج اﻟﺼﻨﺎﻋﻴﺔ‪.‬‬
‫هﻞ ﺗﻮد ﻗﺮاءة ﻣﺜﻞ هﺬﻩ اﻟﻌﻨﺎوﻳﻦ ﻳﻮﻣًﺎ ﻣﺎ؟ وآﻴﻒ ﺳﻴﻜﻮن ﺷﻌﻮرك إن‬
‫‪-‬اﻟﻮﺣﺪة رﻗﻢ ‪ : 7‬اﻟﺒﺮاءات‪.‬‬ ‫ﺗﺤﻘﻘﺖ؟‬

‫‪-‬اﻟﻮﺣﺪة رﻗﻢ ‪ :8‬اﻻﺗﻔﺎﻗﻴﺎت اﻟﻤﺘﻌﻠﻘﺔ ﺑﺄﻧﻈﻤﺔ اﻟﺘﺴﺠﻴﻞ اﻟﺪوﻟﻴﺔ اﻟﺘﻲ‬ ‫ﺗﺮآﻲ‪.‬‬


‫ﺗﺪﻳﺮهﺎ اﻟﻮﻳﺒﻮ‪.‬‬
‫ﺗﻌﻘﻴﺐ ﻋﻠﻰ ﻣﻘﺎﻟﺔ اﻷﺳﺘﺎذ ﺗﺮﻛﻲ اﻟﻌﺴﻴﺮي‪:‬‬
‫‪-‬اﻟﻮﺣﺪة رﻗﻢ ‪ : 9‬اﻟﻤﻨﺎﻓﺴﺔ ﻏﻴﺮ اﻟﻤﺸﺮوﻋﺔ‪.‬‬
‫‪-‬اﻟﻮﺣﺪة رﻗﻢ ‪ : 10‬ﺣﻤﺎﻳﺔ اﻷﺻﻨﺎف اﻟﻨﺒﺎﺗﻴﺔ اﻟﺠﺪﻳﺪة‪.‬‬ ‫اﻟﺘﻌﺮﻳﻒ ﺑﺒﺮﻧﺎﻣﺞ أﻛﺎدﻳﻤﻴﺔ اﻟﻤﻨﻈﻤﺔ اﻟﻌﺎﻟﻤﻴﺔ ﻟﻠﻤﻠﻜﻴﺔ‬
‫‪-‬اﻟﺠﺰء ‪ : 11‬ﻣﻠﺨﺺ وﻧﻘﺎش‪.‬‬ ‫اﻟﻔﻜﺮﻳﺔ )‪ (WIPO/OMPI Academy‬ﻟﻠﺘﻌﻠﻴﻢ‬
‫‪-‬اﻻﻣﺘﺤﺎن اﻟﺨﺘﺎﻣﻲ‪DL 101.‬‬ ‫ﻋﻦ ﺑﻌﺪ‪.‬‬
‫ﻳﻤﻜﻨﻜﻢ ﻣﺰاوﻟﺔ اﻟﺪراﺳﺔ ﻣﺒﺎﺷﺮة ﻋﻠﻰ اﻟﺨﻂ أو ﺗﻨﺰﻳﻞ ﻣﻠﻔﺎت ال ‪PDF‬‬ ‫آﻤﺎ ﻻ ﻳﺨﻔﻰ ﻋﻠﻰ أي ﻣﺒﺮﻣﺞ‪ ,‬ﻓﺈن ﺣﻤﺎﻳﺔ اﻟﺒﺮاﻣﺞ اﻟﺘﻲ ﺗﻌﺐ ﻓﻲ‬
‫اﻟﺨﺎﺻﺔ ﺑﺎﻟﺪروس‪.‬‬ ‫ﺗﻄﻮﻳﺮهﺎ أﻣﺮ هﺎم ﺟﺪا وﻟﺬﻟﻚ ﻋﻠﻴﻪ أن ﻳﻜﻮن ﻣﻠﻤﺎ ﺑﺎﻟﺤﻘﻮق اﻟﺘﻲ ﺗﻜﻔﻠﻬﺎ ﻟﻪ‬
‫آﻞ وﺣﺪة ﺗﺘﻮج ﺑﺎﻣﺘﺤﺎن ﻧﻬﺎﻳﺔ اﻟﻮﺣﺪة )اﻣﺘﺤﺎن ﺗﺠﺮﻳﺒﻲ( اﻟﺬي ﻳﺨﺘﺒﺮ‬ ‫ﻗﻮاﻧﻴﻦ اﻟﻤﻠﻜﻴﺔ اﻟﻔﻜﺮﻳﺔ و آﺬﻟﻚ اﻟﺘﻘﻴﻴﺪات‪.‬‬
‫ﻣﺪى ﻣﺘﺎﺑﻌﺘﻜﻢ ﻟﻠﺪروس‪.‬‬ ‫ﻟﺬﻟﻚ أﻧﺼﺤﻜﻢ ب"اﻟﺘﻔﻘﻪ" ﻓﻲ هﺬا اﻟﻤﺠﺎل و ذﻟﻚ ﺑﺪراﺳﺔ اﻟﺨﻄﻮط‬
‫ﺑﻌﺪ اﻧﺘﻬﺎء ﺗﺎرﻳﺦ إﺗﺎﺣﺔ اﻟﺪورة‪ ,‬ﻳﻤﻨﺢ ﻟﻜﻢ أﺳﺒﻮع ﻟﻠﻤﺮاﺟﻌﺔ ﻗﺒﻞ اﻟﺘﻘﺪم‬ ‫اﻟﻌﺮﻳﻀﺔ ﻟﻠﻤﻠﻜﻴﺔ اﻟﻔﻜﺮﻳﺔ ﻋﻦ ﻃﺮﻳﻖ اﻟﺒﺮﻧﺎﻣﺞ اﻟﺬي ﺗﺪﻳﺮﻩ اﻟﻮﻳﺒﻮ ﻟﻠﺘﻌﻠﻴﻢ‬
‫ﻟﻼﻣﺘﺤﺎن اﻟﺨﺘﺎﻣﻲ‪.‬‬ ‫ﻋﻦ ﺑﻌﺪ‪.‬‬

‫اﻻﻣﺘﺤﺎن اﻟﺨﺘﺎﻣﻲ ﻳﺘﻜﻮن ﻣﻦ ‪ 36‬إﻟﻰ ‪ 40‬ﺳﺆال ذات ﺧﻴﺎرات ﻣﺘﻌﺪدة‬ ‫اﻟﺘﺴﺠﻴﻞ ﻓﻲ اﻟﺒﺮﻧﺎﻣﺞ ﻣﺠﺎﻧﻲ ﻟﻠﻌﺮب و ذﻟﻚ ﻋﻠﻰ اﻟﻤﻮﻗﻊ اﻟﺘﺎﻟﻲ‪:‬‬
‫‪MCQs‬‬ ‫‪http://academy.wipo.int/ar/default2.asp‬‬

‫إذا ﺗﺤﺼﻠﺘﻢ ﻋﻠﻰ ‪ %50‬إﺟﺎﺑﺔ ﺻﺤﻴﺤﺔ ﺗﻌﺘﺒﺮون ﻧﺎﺟﺤﻴﻦ و ﺗﺤﺼﻠﻮن‬ ‫ﻣﻮاﻋﻴﺪ اﻟﺘﺴﺠﻴﻞ‪ :‬هﻨﺎك ﻓﺮﺻﺘﺎن ﺳﻨﻮﻳﺘﺎن ﻟﻠﺘﺴﺠﻴﻞ‬
‫ﻋﻠﻰ ﺷﻬﺎدة اﻋﺘﺮاف ﻋﺎﻟﻤﻴﺔ ﻣﻦ اﻟﻤﻨﻈﻤﺔ اﻟﻌﺎﻟﻤﻴﺔ ﻟﻠﻤﻠﻜﻴﺔ اﻟﻔﻜﺮﻳﺔ ﺗﺮﺳﻞ‬
‫اﻷوﻟﻰ‪ :‬ﻣﻦ ‪ 1‬دﻳﺴﻤﺒﺮ‪/‬آﺎﻧﻮن اﻷول إﻟﻰ ‪ 30‬ﻳﻨﺎﻳﺮ‪/‬آﺎﻧﻮن اﻟﺜﺎﻧﻲ‪.‬‬
‫ﻟﻜﻢ إﻟﻰ اﻟﻤﻨﺰل ﻓﻲ ﻣﺪة أﻗﺼﺎهﺎ ﺷﻬﺮﻳﻦ ‪.02‬‬

‫آﻤﺎ أن اﻟﻨﺠﺎح ﻳﻤﻜﻨﻜﻢ ﻣﻦ اﻻﻟﺘﺤﺎق ﺑﺪورات ﺗﺪرﻳﺒﻴﺔ اﺣﺘﺮاﻓﻴﺔ أﺧﺮى‬ ‫اﻟﺜﺎﻧﻴﺔ‪ :‬ﻣﻦ ‪ 1‬ﻳﻮﻟﻴﻪ‪/‬ﺗﻤﻮز إﻟﻰ ‪ 30‬أﻏﺴﻄﺲ‪/‬ﺁب‪.‬‬
‫ﺗﺪﻳﺮهﺎ ﻧﻔﺲ اﻷآﺎدﻳﻤﻴﺔ‪.‬‬
‫ﺑﻌﺪ اﺳﺘﻜﻤﺎل ﻋﻤﻠﻴﺔ اﻟﺘﺴﺠﻴﻞ ﺳﺘﺴﺘﻘﺒﻞ رﺳﺎﻟﺔ اﻟﻜﺘﺮوﻧﻴﺔ ﻓﻴﻬﺎ ﻣﻌﻠﻮﻣﺎت‬
‫ﻣﻼﺣﻈﺎت أﺧﻴﺮة‬ ‫اﻟﺘﺴﺠﻴﻞ اﻟﺨﺎﺻﺔ ﺑﻚ‪.‬‬

‫‪-‬ﻋﻠﻴﻜﻢ إدﺧﺎل اﻻﺳﻢ و اﻟﻠﻘﺐ اﻟﺼﺤﻴﺤﻴﻦ ﻋﻨﺪ اﻟﺘﺴﺠﻴﻞ ﻷﻧﻬﻤﺎ ﺳﻴﻈﻬﺮان‬ ‫ﺑﻌﺪ اﻟﺘﺴﺠﻴﻞ ﻋﻠﻴﻜﻢ اﻻﻧﺘﻈﺎر ﺣﺘﻰ ﺗﺎرﻳﺦ ﺑﺪاﻳﺔ اﻟﺪورة اﻟﺘﺪرﻳﺒﻴﺔ اﻟﺘﻲ ﺗﻨﻈﻢ‬
‫ﻓﻲ اﻟﺸﻬﺎدة‪.‬‬ ‫آﻤﺎ ﻗﻠﻨﺎ ﻣﺮﺗﻴﻦ ﻓﻲ اﻟﺴﻨﺔ‪:‬ﻣﻦ ‪ 1‬ﻣﺎرس‪/‬ﺁذار إﻟﻰ ‪ 15‬أﺑﺮﻳﻞ‪/‬ﻧﻴﺴﺎن و ﻣﻦ‬
‫‪ 1‬أآﺘﻮﺑﺮ‪/‬ﺗﺸﺮﻳﻦ اﻷول إﻟﻰ ‪ 15‬ﻧﻮﻓﻤﺒﺮ‪/‬ﺗﺸﺮﻳﻦ اﻟﺜﺎﻧﻲ‪.‬‬
‫‪ -‬ﺗﻘﺪﻳﻢ اﻟﻌﻨﻮان اﻻﻟﻜﺘﺮوﻧﻲ اﻟﺼﺤﻴﺢ اﻟﺬي ﺗﺴﺘﻌﻤﻠﻮﻧﻪ داﺋﻤﺎ ﻷﻧﻪ‬
‫ﺿﺮوري ﻟﻠﺘﻮاﺻﻞ ﻣﻊ اﻟﻤﺪﻳﺮ و اﻷﺳﺎﺗﺬة‪.‬‬ ‫آﻤﺎ ﺗﺮون‪ ,‬ﻓﺈن اﻟﺪورة ﺗﺪوم ‪ 6‬أﺳﺎﺑﻴﻊ‪.‬‬

‫‪ -‬ﺗﻘﺪﻳﻢ اﻟﻌﻨﻮان اﻟﺒﺮﻳﺪي اﻟﺼﺤﻴﺢ ﻻﺳﺘﻼم اﻟﺸﻬﺎدة‪.‬‬ ‫اﻟﺪورة اﻟﺘﺪرﻳﺒﻴﺔ ﻋﺒﺎرة ﻋﻦ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﺪروس ﻣﻨﻈﻤﺔ ﻓﻲ ﻣﺤﺎور و‬
‫وﺣﺪات‪:‬‬
‫وﻟﻴﺪ ﺑﻮاﻟﻄﻤﻴﻦ‬
‫‪17‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com ‬‬
‫‪ ‬‬ ‫‪ ‬‬

‫ﺣﻤﺎﻳﺔ اﻟﻤﻠﻜﻴﺔ اﻟﻔﻜﺮﻳﺔ ‪ ..‬ﺣﻤﺎﻳﺔ ﻟﻠﻌﻘﻞ‬


‫ﺗـﺮﻛــﻲ اﻟـﻌــﺴـﻴـﺮي‬

‫اﻟﺸﻬﺎدة اﻟﺘﻲ ﺳﺘﺘﺤﺼﻞ ﻋﻠﻴﻬﺎ ﺑﺈذن اﷲ ﺑﻌﺪ اﺟﺘﻴﺎز اﻻﻣﺘﺤﺎن اﻟﺨﺘﺎﻣﻲ‬

‫‪18‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫‪ ‬‬ ‫‪ ‬‬

‫ﻛـﻴــﻒ ﻧــﺤـﻞ ﻣـﺸـﺎﻛــﻠـــﻨـﺎ ﺑــﺄﻧــﻔــﺴــﻨـﺎ ؟‬ ‫‪5‬‬

‫رﻏــــﻴـــــــــﺪ ﻃـــــﻴــــــــﺐ‬
‫أوﻻ اﻟﺴﻼم ﻋﻠﻴﻜﻢ ورﺣﻤﺔ اﷲ وﺑﺮآﺎﺗﻪ‪....‬‬
‫ﻣﺜﺎل ﻳﺴﺘﺤﻖ اﻟﺘﺄﻣﻞ‬ ‫ﻼ ﻟﻤﺸﺎور اﻟﺴﻠﺴﻠﺔ اﻟﺬهﺒﻴﺔ ﻓﻲ اﻟﻤﻮاﺿﻴﻊ اﻟﻌﻠﻤﻴﺔ ﺳﻮف‬ ‫وﺛﺎﻧﻴًﺎ ﺗﻮاﺻ ً‬
‫ﻧﻨﺎﻗﺶ اﻟﻴﻮم ﻣﻮﺿﻮع ﻳﻬﻢ اﻟﻤﺒﺘﺪﺋﻴﻦ ﺑﺸﻜﻞ أﺳﺎﺳﻲ وهﻮ آﻴﻔﻴﺔ اﺳﺘﻐﻼل‬
‫دﻋﻨﺎ اﻵن ﻧﺮى آﻴﻒ ﻳﻤﻜﻦ اﻟﺘﻌﺎﻣﻞ ﻣﻊ هﺬﻩ اﻟﻤﺸﻜﻠﺔ اﻟﺒﺴﻴﻄﺔ‪..‬‬
‫ﻣﻌﻠﻮﻣﺎﺗﻚ اﻟﺒﺴﻴﻄﺔ ﻓﻲ ﺗﻜﻮﻳﻦ ﻓﻜﺮة ﻋﻦ ﺣﻞ اﻟﻤﺸﻜﻠﺔ أو اﻟﻤﻮﺿﻮع اﻟﺬي‬
‫ﻟﻨﻔﺮض اﻧﻚ آﻨﺖ ﺗﻘﻮم ﺑﺘﺼﻤﻴﻢ ﺑﺮﻧﺎﻣﺞ ﻟﺘﻌﻠﻴﻢ اﻟﺼﻐﺎر اﻟﺮﻳﺎﺿﻴﺎت‬
‫وﺗﺮﻳﺪ أن ﺗﺨﺘﺒﺮ اﻷرﻗﺎم اﻟﺬي ﻳﺪﺧﻠﻬﺎ اﻟﻄﻔﻞ ﺛﻢ ﺗﺴﺎﻋﺪﻩ ﻓﻲ ﻣﻌﺮﻓﺔ اﻟﻌﺪد‬ ‫ﺗﻨﻮي ﺑﺮﻣﺠﺘﻪ ﺛﻢ ﻧﻨﺘﻘﻞ ﺑﺈذن ﻣﻦ اﷲ ﺗﻌﺎﻟﻰ وﺗﻮﻓﻴﻖ إﻟﻰ ﺑﻌﺾ‬
‫اﻟﻔﺮدي ﻣﻨﻬﺎ ﻣﻦ اﻟﻌﺪد اﻟﺰوﺟﻲ!! ‪..‬‬ ‫اﻻﺧﺘﺼﺎرات و اﻷﻓﻜﺎر اﻟﺒﺮﻣﺠﻴﺔ اﻟﺒﺴﻴﻄﺔ اﻟﺘﻲ ﺑﺎﻟﺘﺄآﻴﺪ ﺳﻮف ﺗﺴﺘﻐﻠﻬﺎ‬
‫ﻓﻲ اﻟﻌﺪﻳﺪ ﻣﻦ ﺑﺮاﻣﺠﻚ اﻟﻘﺎدﻣﺔ وذﻟﻚ ﻓﻲ اﻟﻤﻮﺿﻮع اﻟﺘﺎﻟﻲ ﻣﻦ ﺣﻠﻘﺎت هﺬﻩ‬
‫ﻟﻠﻘﻴﺎم ﺑﻤﺜﻞ هﺬا اﻟﺒﺮﻧﺎﻣﺞ ﻳﺠﺐ ﻋﻠﻴﻚ أﻧﺖ أوﻻ ﻣﻌﺮﻓﺔ اﻟﺮﻗﻢ اﻟﻔﺮدي ﻣﻦ‬ ‫اﻟﺴﻠﺴﻠﺔ إن ﺷﺎء اﷲ ﺗﻌﺎﻟﻰ ‪ ...‬واﺧﺺ ﺣﺪﻳﺜﻲ هﺬا ﺑﺄﺧﻮﺗﻲ ﺣﺪﻳﺜﻮ اﻟﻌﻬﺪ‬
‫اﻟﺰوﺟﻲ ﺑﻄﺮﻳﻘﺔ ﺑﺮﻣﺠﻴﺔ ﻓﻠﻨﻔﺮض اﻧﻚ ﻗﻤﺖ ﺑﻘﺮاءة اﻟﺮﻗﻢ اﻟﺬي ادﺧﻠﻪ‬ ‫ﺑﺎﻟﺒﺮﻣﺠﺔ‪...‬‬
‫اﻟﻤﺴﺘﺨﺪم ﻓﻲ ﻣﺘﻐﻴﺮ ﻋﺪدي أﺳﻤﻴﺘﻪ ‪ N‬ﺑﺎﻟﻄﺮﻳﻘﺔ اﻟﺘﺎﻟﻴﺔ‪:‬‬
‫ﻛﻮد‪:‬‬ ‫اﻷﺳﻠﻮب اﻷﻣﺜﻞ ﻓﻲ ﺣﻞ اﻟﻤﺴﺎﺋﻞ اﻟﺒﺮﻣﺠﻴﺔ‬
‫‪Dim N As Integer‬‬
‫))"ادﺧﻞ أي ﻋﺪد ﺻﺤﻴﺢ"(‪N = val(InputBox‬‬ ‫ﻓﻲ آﺜﻴﺮ ﻣﻦ اﻷﺣﻴﺎن ﻧﻮاﺟﻪ ﻣﺸﺎآﻞ ﺑﺴﻴﻄﺔ ﻻ ﻧﻮﻓﻖ ﻓﻲ ﺣﻠﻬﺎ‬
‫وﺗﺘﺴﺒﺐ ﻓﻲ ﺗﻌﻄﻴﻞ ﺳﻴﺮ ﻋﻤﻞ ﺑﺮﻧﺎﻣﺠﻨﺎ‪ ...‬و هﻨﺎ ﻳﻨﺘﻬﺞ اﻟﺒﻌﺾ ﻣﻨﺎ‬
‫أﺳﻠﻮﺑﺎ ﺧﺎﻃﺌًﺎ ﻓﻲ اﻟﺒﺤﺚ ﻋﻦ اﻟﺤﻞ وهﻮ اﻟﻬﺮوع إﻟﻰ ﻃﻠﺐ اﻟﻤﺴﺎﻋﺪة‬
‫واﻵن آﻴﻒ ﻳﻤﻜﻦ ﻣﻌﺮﻓﺔ أن اﻟﺮﻗﻢ اﻟﻤﺨﺰن ﻓﻲ اﻟﻤﺘﻐﻴﺮ ‪ N‬هﻮ ﻋﺪد‬ ‫ﺳﻮا ًء ﻣﻦ ﺻﺪﻳﻖ أو ﻣﻦ ﻣﻨﺘﺪﻳﺎت اﻟﺒﺮﻣﺠﺔ اﻟﻤﻨﺘﺸﺮة ﻓﻲ اﻟﺸﺒﻜﺔ وﻣﻨﺘﺪاﻧﺎ‬
‫ﻓﺮدي أم زوﺟﻲ ؟؟؟‬ ‫هﺬا واﺣﺪ ﻣﻦ أﺑﺮزهﺎ ‪ ...‬وهﺬا اﻷﺳﻠﻮب و إن آﺎن اﻷﺳﺮع ﻓﻬﻮ اﺣﺪ‬
‫ﻃﺒﻌًﺎ إذا آﻨﺖ ﻣﻤﻦ ﻟﻬﻢ ﺑﺎع ﻃﻮﻳﻞ ﺑﺎﻟﺒﺮﻣﺠﺔ أﻇﻨﻨﻲ أراك اﻵن ﺗﺒﺘﺴﻢ‬ ‫اﻷﺳﺒﺎب اﻟﺮﺋﻴﺴﻴﺔ ﻹﻋﺎﻗﺔ ﺗﻘﺪﻣﻚ ﻓﻲ ﻋﺎﻟﻢ اﻟﺒﺮﻣﺠﺔ ذﻟﻚ اﻧﻚ ﺑﺎﻟﺘﺪرﻳﺞ وﻣﻊ‬
‫ﻼ دﻋﻨﺎ ﻧﺪرس اﻷﻣﺮ أوﻻ ﻓﺒﻌﺪ‬‫ﻣﻦ ﺳﺬاﺟﺔ اﻟﺴﺆال ‪ -‬وﻟﻜﻦ اﻧﺘﻈﺮ ﻗﻠﻴ ً‬ ‫ﺗﻜﺮار اﻧﺘﻬﺎﺟﻚ ﻟﻨﻔﺲ اﻷﺳﻠﻮب ﺗﻔﻘﺪ اﻟﻘﺪرة ﻋﻠﻰ اﺑﺘﻜﺎر ﺣﻠﻮل ﻣﻦ ﻋﻨﺪك‬
‫ﻗﻠﻴﻞ ﺳﻮف اﻃﻠﺐ ﻣﻨﻚ ﺣﻞ اﻟﻤﺴﺄﻟﺔ ﺑﺄآﺜﺮ ﻣﻦ ﺛﻼث ﻃﺮق ﻣﺨﺘﻠﻔﺔ ‪-‬‬ ‫ﺑﻞ اﻧﻪ ﻣﻊ ﻣﺮور اﻟﺰﻣﻦ ﺳﻮف ﺗﺠﺪ أن اﺑﺴﻂ اﻟﻤﺴﺎﺋﻞ اﻟﺒﺮﻣﺠﻴﺔ ﺗﻤﺜﻞ‬
‫‪ .....‬و أﻣﺎ إذا آﻨﺖ ﻣﺒﺘﺪﺋﺎً أو ﻣﻤﻦ اﻋﺘﺎد ﻋﺪم ﺑﺬل ﻣﺠﻬﻮد ﻓﻲ اﻟﺒﺤﺚ‬ ‫ﻋﻨﺪك ﻋﻘﺒﺎت آﺒﻴﺮة ﻳﺼﻌﺐ ﻋﻠﻴﻚ اﻟﺘﺨﻠﺺ ﻣﻨﻬﺎ‪...‬‬
‫ﻼ ﺣﺘﻰ وان ﻃﻠﺒﺖ ﻣﻨﻚ إﻳﺠﺎد‬
‫ﻋﻦ إﺟﺎﺑﺔ ﻗﺪ ﺗﺠﺪ أن هﺬا أﻣﺮ ﻣﺤﻴﺮ ﻓﻌ ً‬ ‫وأﻣﺎ اﻟﻄﺮﻳﻘﺔ اﻟﻤﻨﺎﺳﺒﺔ ﻓﻲ ﻣﻮاﺟﻬﺔ اﻟﻤﺴﺎﺋﻞ اﻟﻤﻌﻘﺪة هﻲ أوﻻ‬
‫أي ﺣﻞ وﻟﻴﺲ ﺛﻼﺛﺔ ﺣﻠﻮل ﻣﺨﺘﻠﻔﺔ‪...‬‬ ‫ﻣﺤﺎوﻟﺔ ﻓﻬﻢ اﻷﻣﺮ ﻓﻬﻤﺎً ﺻﺤﻴﺤﺎً ﺛﻢ اﻟﺸﺮوع ﻓﻲ ﻣﺤﺎوﻟﺔ اﻹﺟﺎﺑﺔ ﺑﻌﺪة‬
‫ﺣﺎول اﻵن ﻣﻌﻲ ﺗﺘﺨﻴﻞ اﻟﻄﺮق اﻟﺘﻲ ﻳﻤﻜﻦ أن ﺗﺠﻴﺐ ﺑﻬﺎ ﻋﻠﻰ هﺬا‬ ‫ﻃﺮق واﻟﺒﺤﺚ ﻓﻲ ﺟﻤﻴﻊ اﻷدوات أو اﻷواﻣﺮ اﻟﺘﻲ ﻳﻤﻜﻦ أن ﻳﻜﻮن ﻟﻬﺎ‬
‫اﻟﺴﺆال اﻟﺒﺴﻴﻂ ﻗﺒﻞ أن ﻧﺒﺪأ ﻓﻲ ﺧﻄﻮات اﻟﺤﺎل اﻟﺘﺎﻟﻴﺔ ‪...‬‬ ‫ﻋﻼﻗﺔ ﺑﺎﻟﻤﻮﺿﻮع وﺳﻮف اذآﺮ ﺑﻌﺪ ﻗﻠﻴﻞ ﻣﺜﺎل ﺑﺴﻴﻂ ﺛﻢ ﻧﺮى آﻴﻒ ﻳﻤﻜﻨﻨﺎ‬
‫أن ﻧﺠﻴﺐ ﻋﻠﻴﻪ ﺑﺄآﺜﺮ ﻣﻦ ﻃﺮﻳﻘﺔ ﺛﻢ اﻧﻈﺮ أي اﻟﻄﺮق آﻨﺖ ﺳﺘﺘﺨﺬهﺎ ﻓﻲ‬
‫ﺳﻮف ﻧﺪرس ﻓﻴﻤﺎ ﻳﻠﻲ اﻷﻣﺮ آﻤﺎ ﻳﻨﺒﻐﻲ ﻋﻠﻰ اﻟﻔﺮد أن ﻳﻨﺎﻗﺸﻪ ﻣﻊ ﻧﻔﺴﻪ‬ ‫ﺣﺎل ﻃﻠﺐ ﻣﻨﻚ ﺑﺮﻧﺎﻣﺞ آﻬﺬا‪...‬‬
‫ﻓﻲ آﻞ ﻣﺮة ﻳﻮاﺟﻪ ﻓﻴﻬﺎ ﺳﺆال ﻣﺸﺎﺑﻪ ﻳﺤﺘﺎج إﻟﻰ ﺷﻲء ﻣﻦ اﻟﺘﻔﻜﻴﺮ‪...‬‬
‫وأﻣﺎ اﻟﻄﺮﻳﻘﺔ اﻟﺜﺎﻧﻴﺔ ﻓﻬﻲ اﻟﺒﺤﺚ ﻓﻲ ﻣﻠﻔﺎت اﻟﻤﺴﺎﻋﺪة ﻋﻦ‬
‫اﻟﺤﻞ اﻷول ﻟﻠﻤﺴﺄﻟﺔ‬ ‫إﻣﻜﺎﻧﻴﺎت اﻟﻠﻐﺔ اﻟﺘﻲ ﺗﺴﺘﺨﺪﻣﻬﺎ ( ﻟﻐﺔ اﻟﺒﺮﻣﺠﺔ ﻃﺒﻌًﺎ وﻟﻴﺴﺖ اﻟﻠﻐﺔ اﻟﻄﺒﻴﻌﻴﺔ‬
‫( ﻓﺄﻧﺖ ﻻ ﺗﻌﻠﻢ آﻢ ﺳﺘﺴﺘﻔﻴﺪ ﻣﻦ هﺬا اﻟﺒﺤﺚ ﻓﻘﺪ ﺗﺒﺤﺚ ﻋﻦ ﻣﻮﺿﻮع وﺗﺠﺪ‬
‫اﻷﻣﺮ اﻟﺬي ﻳﻨﺒﻐﻲ أن ﺗﺬهﺐ إﻟﻴﻪ ﻋﻘﻮﻟﻨﺎ ﺟﻤﻴﻌﺎً هﻮ‬ ‫أﻣﺜﻠﺔ و دوال ﻟﻢ ﺗﻜﻦ ﺗﻌﻠﻢ ﺑﻮﺟﻮدهﺎ أﺻﻼ ﺑﻞ إﻧﻨﻲ أﺗﺬآﺮ أﺣﻴﺎﻧﺎ آﺜﻴﺮة‬
‫اﻟﺮﻳﺎﺿﻴﺎت ﻓﻤﺎ هﻲ اﻟﻄﺮﻳﻘﺔ اﻟﺘﻲ ﻧﻔﺮق ﻓﻴﻬﺎ ﺑﻴﻦ اﻟﻌﺪد اﻟﻔﺮدي واﻟﻌﺪد‬ ‫آﻨﺖ ﻓﻴﻬﺎ اﺑﺤﺚ ﻋﻦ ﻣﻮﺿﻮع ﻣﻌﻴﻦ وﻳﻨﺘﻬﻲ ﺑﻲ اﻟﻤﻄﺎف وﻗﺪ ﻧﺴﻴﺖ‬
‫اﻟﺰوﺟﻲ رﻳﺎﺿﻴًﺎ‪ ...‬ﻃﺒﻌًﺎ ﺟﻤﻴﻌﻨﺎ ﻳﺪرك أن اﻟﺮﻗﻢ اﻟﺬي ﻳﻘﺒﻞ اﻟﻘﺴﻤﺔ ﻋﻠﻰ‬ ‫اﻟﻤﻮﺿﻮع اﻟﺬي آﻨﺖ اﺑﺤﺚ ﻋﻨﻪ ﻟﻤﺎ أﺟﺪﻩ ﻣﻦ اﻟﻔﻮاﺋﺪ اﻟﻌﻈﻴﻤﺔ واﻟﻤﻮاﺿﻴﻊ‬
‫اﺛﻨﻴﻦ ﺑﺪون ﺑﺎﻗﻲ ‪ -‬أي أن اﻟﺒﺎﻗﻲ ﺻﻔﺮًا ‪ -‬ﻓﻬﻮ ﻋﺪد زوﺟﻲ وأﻣﺎ اﻟﺬي‬ ‫اﻟﺸﻴﻘﺔ أﺛﻨﺎء ﺑﺤﺜﻲ ﺧﺎﺻﺔ إذا آﻨﺖ ﺗﺘﺠﻮل ﻓﻲ ﻣﻜﺘﺒﺔ اﻟـ‪MSDN ....‬‬
‫ﻳﻨﺘﺞ ﻋﻨﻪ ﺑﺎﻗﻲ ﺑﻌﺪ ﻗﺴﻤﺘﻪ ﻋﻠﻰ ‪ 2‬ﻓﻬﻮ ﻋﺪد ﻓﺮدي‪ ...‬وهﺬا أﻣﺮ ﺑﺪﻳﻬﻲ‬
‫‪ ...‬إذا ﻣﺎ ﻳﺘﻮﺟﺐ ﻋﻠﻴﻨﺎ اﻟﺘﻔﻜﻴﺮ ﻓﻴﻪ هﻮ ﻣﺎ اﻷﻣﺮ أو اﻟﻤﻌﺎﻣﻞ اﻟﺬي‬ ‫وأﻣﺎ اﻟﺨﻄﻮة اﻷﺧﻴﺮة ﻓﻬﻲ اﻟﺘﻲ ﺗﻠﺠﺄ ﻓﻴﻬﺎ إﻟﻰ اﻟﻤﺴﺎﻋﺪة ﻣﻦ‬
‫ﻳﻤﻜﻨﻨﻲ أن اﺳﺘﺨﺪﻣﻪ ﻓﻲ ﻟﻐﺘﻨﺎ اﻟﻔﻴﺠﻮال ﺑﻴﺴﻚ ﻟﻠﺤﺼﻮل ﻋﻠﻰ ﺑﺎﻗﻲ‬ ‫أﺷﺨﺎص ﺗﻌﺮﻓﻬﻢ وﻣﻦ ﻣﻨﺘﺪاك هﺬا ﺑﺎﻟﻄﺒﻊ ‪ ...‬وﻟﻜﻦ ﺑﺸﺮط واﺣﺪ هﻮ أن‬
‫اﻟﻘﺴﻤﺔ ‪ ....‬أﻇﻦ اﻟﺠﻤﻴﻊ اﻵن ﻳﻌﺮف اﻹﺟﺎﺑﺔ ﻃﺒﻌًﺎ اﻟﻤﻌﺎﻣﻞ ‪ Mod‬ﻓﻬﻮ‬ ‫ﺗﻌﻲ وﺗﻔﻬﻢ اﻟﺤﻞ اﻟﺬي ﺳﺘﺠﺪﻩ وﺗﺤﺎول آﺘﺎﺑﺘﻪ ﺑﻨﻔﺴﻚ ﺑﻌﺪ أن ﺗﻔﻬﻤﻪ ﺟﻴﺪًا‪...‬‬
‫ﻳﺴﺘﺨﺪم ﻟﻠﺤﺼﻮل ﻋﻠﻰ ﺑﺎﻗﻲ اﻟﻘﺴﻤﺔ ‪ ....‬وأﻣﺎ إذا آﻨﺖ ﻻ ﺗﻌﺮف هﺬا‬ ‫)وﻻ ﺗﻨﺴﻰ أن ﺗﺪﻋﻮ ﺑﺎﻟﺨﻴﺮ ﻷﺧﻴﻚ اﻟﺬي أﻋﺎﻧﻚ ﻓﻲ ﺣﻞ اﻟﻤﺴﺄﻟﺔ‪(...‬‬
‫اﻟﻤﻌﺎﻣﻞ ﻓﺈﻟﻴﻚ هﺬﻩ اﻷﻣﺜﻠﺔ اﻟﺴﺮﻳﻌﺔ‪:‬‬
‫وﺑﻌﺪ أن ﺗﻌﺮف ﺣﻞ هﺬﻩ اﻟﻤﺸﻜﻠﺔ ﺣﺎول ﻧﻘﻠﻬﺎ ﻟﻤﻦ ﺗﻈﻦ أﻧﻬﻢ‬
‫‪0‬‬ ‫=‬ ‫‪12 Mod 3‬‬ ‫ﺳﻴﺴﺘﻔﻴﺪون ﻣﻨﻬﺎ‪....‬‬
‫‪0‬‬ ‫=‬ ‫‪6 Mod 2‬‬
‫‪1‬‬ ‫=‬ ‫‪7 Mod 2‬‬ ‫‪ ‬‬
‫‪3‬‬ ‫=‬ ‫‪15 Mod 4‬‬
‫‪2‬‬ ‫=‬ ‫‪9 Mod 7‬‬

‫‪19‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com ‬‬
‫‪ ‬‬ ‫‪ ‬‬

‫‪ ‬‬
‫ﻛـﻴــﻒ ﻧــﺤـﻞ ﻣـﺸـﺎﻛــﻠـــﻨـﺎ ﺑــﺄﻧــﻔــﺴــﻨـﺎ ؟‬
‫رﻏــــﻴـــــــــﺪ ﻃـــــﻴــــــــﺐ‬
‫ﻓﺎﻟﺴﻄﺮ اﻷول ﻳﺪل ﻋﻠﻰ أن ﺑﺎﻗﻲ ﻗﺴﻤﺔ ‪ 12‬ﻋﻠﻰ ‪ 3‬هﻮ ﺻﻔﺮ ﻷﻧﻪ ﻳﻨﺘﺞ‬
‫ﻣﻦ اﻟﻘﺴﻤﺔ ‪ 4‬واﻟﺒﺎﻗﻲ ﺻﻔﺮ‪.‬‬
‫وﻳﺴﺘﺨﺪم هﺬا اﻟﻤﻌﺎﻣﻞ ﻓﻲ إﻳﺠﺎد ﻧﺎﺗﺞ اﻟﻘﺴﻤﺔ ﺑﺪون ﺑﺎﻗﻲ أي أﻧﻨﺎ إذا‬
‫ﻗﺴﻤﻨﺎ ﺧﻤﺴﺔ ﻋﻠﻰ ‪ 2‬ﻓﺎن اﻟﻨﺎﺗﺞ هﻨﺎ ﺳﻴﻜﻮن ‪ 2‬وﻟﻴﺲ آﻤﺎ اﻋﺘﺪﻧﺎ اﺛﻨﻴﻦ‬ ‫وإﻣﺎ اﻟﺴﻄﺮ اﻟﺜﺎﻧﻲ ﻓﻬﻮ أﻳﻀﺎ ﺻﻔﺮ ﻻن ﻧﺎﺗﺞ ﻗﺴﻤﺔ ‪ 6‬ﻋﻠﻰ اﺛﻨﻴﻦ هﻮ‬
‫وﻧﺼﻒ و ذﻟﻚ ﻻن هﺬا اﻟﻤﻌﺎﻣﻞ ﻳﻬﻤﻞ اﻟﺒﺎﻗﻲ وﻳﻜﺘﻔﻲ ﺑﺎﻟﻨﺎﺗﺞ دون‬ ‫ﺛﻼﺛﺔ واﻟﺒﺎﻗﻲ ﺻﻔﺮ‪.‬‬
‫ﺑﺎﻗﻲ‪ ...‬وﻟﻤﺰﻳﺪ ﻣﻦ اﻷﻣﺜﻠﺔ اﻧﻈﺮ إﻟﻰ اﻟﺴﻄﻮر اﻟﺘﺎﻟﻴﺔ‪:‬‬
‫واﻟﺜﺎﻟﺚ آﺎن اﻟﻨﺎﺗﺞ ﻓﻴﻪ هﻮ واﺣﺪ ﻻن ﻧﺎﺗﺞ ﻗﺴﻤﺔ ‪ 7‬ﻋﻠﻰ اﺛﻨﻴﻦ هﻮ ‪3‬‬
‫‪4‬‬ ‫=‬ ‫‪12 \ 3‬‬ ‫اﻟﺒﺎﻗﻲ واﺣﺪ‪.‬‬
‫‪3‬‬ ‫=‬ ‫‪6 \ 2‬‬
‫‪3‬‬ ‫=‬ ‫‪7 \ 2‬‬
‫‪2‬‬ ‫=‬ ‫‪9 \ 4‬‬
‫وآﺬﻟﻚ اﻟﺤﺎل ﻓﻲ اﻟﺴﻄﺮ اﻟﺮاﺑﻊ ﻓﺎن ﻧﺎﺗﺞ ﻗﺴﻤﺔ ‪ 15‬ﻋﻠﻰ ‪ 4‬هﻮ ‪3‬‬
‫واﻟﺒﺎﻗﻲ ‪..3‬‬
‫ﻧﺮى ﺑﻮﺿﻮح أن ﻧﺎﺗﺞ اﻟﺴﻄﺮ اﻷول هﻮ أرﺑﻌﺔ ﻻن ﻧﺎﺗﺞ ﻗﺴﻤﺔ ‪12‬‬
‫ﻋﻠﻰ ‪ 3‬هﻮ ‪ 4‬ﺑﺪون ﺑﺎﻗﻲ‪...‬‬ ‫وأﻣﺎ اﻟﺴﻄﺮ اﻷﺧﻴﺮ ﻓﺎن ﻧﺎﺗﺞ ﻗﺴﻤﺔ ‪ 9‬ﻋﻠﻰ ‪ 7‬هﻮ واﺣﺪ واﻟﺒﺎﻗﻲ ‪...2‬‬

‫وﻓﻲ اﻟﺴﻄﺮ اﻟﺜﺎﻧﻲ أﻳﻀﺎ ﻓﺄن اﻟﻨﺎﺗﺞ ﻣﻦ ﻗﺴﻤﺔ ‪ 6‬ﻋﻠﻰ ‪ 2‬هﻮ ‪ 3‬واﻟﺒﺎﻗﻲ‬ ‫واﻵن ﻣﻦ اﻟﺴﻄﺮﻳﻦ اﻟﺜﺎﻧﻲ واﻟﺜﺎﻟﺚ ﻧﺮى ﺑﻮﺿﻮح أن ﻗﺴﻤﺔ ﻋﺪد زوﺟﻲ‬
‫ﺻﻔﺮ‪..‬‬ ‫) ‪ 6‬ﻓﻲ اﻟﺴﻄﺮ اﻟﺜﺎﻧﻲ( ﻋﻠﻰ ‪ 2‬ﻳﺒﻘﻰ ﺻﻔﺮًا‪ ...‬ﺑﻴﻨﻤﺎ ﻧﺎﺗﺞ ﻗﺴﻤﺔ ﻋﺪد‬
‫ﻓﺮدي ) اﻟﺴﺒﻌﺔ ﻓﻲ اﻟﺴﻄﺮ اﻟﺜﺎﻟﺚ ( ﻋﻠﻰ اﺛﻨﻴﻦ ﻓﺎن اﻟﺒﺎﻗﻲ هﻮ واﺣﺪ‪...‬‬
‫وأﻣﺎ اﻟﺴﻄﺮ اﻟﺜﺎﻟﺚ ﻓﻔﻴﻪ ‪ 7‬ﻗﺴﻤﺔ ‪ 2‬هﻮ ‪ 3.5‬وﻟﻜﻦ ﻻن اﻟﻘﺴﻤﺔ هﻨﺎ هﻲ‬
‫ﺑﺪون ﺑﺎﻗﻲ ﻓﺎن اﻟﻨﺎﺗﺞ هﻮ ‪ 3‬ﻓﻘﻂ‪...‬‬ ‫وﺑﺎﻟﺘﺎﻟﻲ ﻓﺈﻧﻨﺎ ﻳﻤﻜﻦ أن ﻧﺴﺘﻐﻞ اﻟﻤﻌﺎﻣﻞ ‪ Mod‬ﻓﻲ اﻟﺒﺮﻧﺎﻣﺞ آﺎﻟﺘﺎﻟﻲ‪:‬‬

‫وآﺬﻟﻚ اﻟﺴﻄﺮ اﻟﺮاﺑﻊ ﻓﺄن ﻧﺎﺗﺞ ﻗﺴﻤﺔ ‪ 9‬ﻋﻠﻰ ﻓﻘﻂ‪.‬و ‪ 2.25‬وﻟﻜﻦ اﻟﻨﺎﺗﺞ‬ ‫ﻛﻮد‪:‬‬
‫‪Dim N As Integer‬‬
‫هﻮ ﺑﺪون ﺑﺎﻗﻲ أي اﻧﻪ ‪ 2‬ﻓﻘﻂ‪...‬‬
‫))"ادﺧﻞ أي ﻋﺪد ﺻﺤﻴﺢ"(‪N = val(InputBox‬‬
‫‪If N Mod 2 = 0 Then‬‬
‫ﻟﻬﺬا ﻓﻨﻨﺎ ﻧﺨﺮج ﺑﺎﺳﺘﻨﺘﺎج أن اﻟﻘﺴﻤﺔ ﺑﺎﺳﺘﺨﺪام اﻟﻤﻌﺎﻣﻞ "‪ "/‬هﻲ ﻗﺴﻤﺔ‬ ‫"ﻋﺪد زوﺟﻲ" ‪MsgBox‬‬
‫ﻋﺎدﻳﺔ‪..‬‬ ‫‪Else‬‬
‫"ﻋﺪد ﻓﺮدي" ‪MsgBox‬‬
‫و أﻣﺎ اﻟﻘﺴﻤﺔ ﺑﺎﺳﺘﺨﺪام اﻟﻤﻌﺎﻣﻞ "\" ﻓﻬﻲ ﻗﺴﻤﺔ ﺑﺪون ﺑﺎﻗﻲ‪...‬‬ ‫‪End If‬‬

‫واﻵن آﻴﻒ ﻳﻤﻜﻦ أن ﻧﺴﺘﻐﻞ هﺬﻳﻦ اﻟﻤﻌﺎﻣﻠﻴﻦ ﻓﻲ ﺑﺮﻧﺎﻣﺠﻨﺎ اﻟﻘﺪﻳﻢ‪...‬‬ ‫هﺬا اﻟﺤﻞ آﺎن ﻣﻦ اﻟﻤﻔﺘﺮض أن ﻳﺴﺘﺨﺪﻣﻪ اﻟﺬﻳﻦ ﻳﻌﺮﻓﻮن اﻟﻤﻌﺎﻣﻞ ‪Mod‬‬
‫اﻹﺟﺎﺑﺔ ﺳﺘﻜﻮن ﺑﺎﻋﺘﻤﺎد ﻧﺎﺗﺞ اﻟﻘﺴﻤﺔ ﻣﻦ اﻟﻤﻌﺎﻣﻠﻴﻦ ﻋﻠﻰ اﻟﻌﺪد اﻟﺬي‬
‫ﻼ إذا ﻗﻤﺴﻨﺎ ﻋﺪد زوﺟﻲ ﻋﻠﻰ ‪ 2‬ﺑﺎﺳﺘﺨﺪام اﻟﻘﺴﻤﺔ اﻟﻌﺎدﻳﺔ ﻓﺎن‬
‫ﻧﺮﻳﺪﻩ ﻓﻤﺜ ً‬ ‫اﻟﺤﺎل اﻟﺜﺎﻧﻲ ﻟﻬﺬه اﻟﻤﺴﺄﻟﺔ‬
‫اﻟﻨﺎﺗﺞ ﺳﻜﻮن ﺑﺪون ﺑﺎﻗﻲ ﻷن اﻟﻌﺪد اﻟﺰوﺟﻲ ﻳﻘﺒﻞ اﻟﻘﺴﻤﺔ ﻋﻠﻰ اﺛﻨﻴﻦ‬
‫ﺑﺪون ﺑﺎﻗﻲ وأﻣﺎ إذا ﻗﺴﻤﻨﺎ اﻟﻌﺪد اﻟﺰوﺟﻲ ﻧﻔﺴﻪ ﻋﻠﻰ اﺛﻨﻴﻦ وﻟﻜﻦ‬ ‫ﻟﻨﻔﺮض اﻵن اﻧﻚ ﻟﻢ ﺗﻜﻦ ﻋﻠﻰ دراﻳﺔ ﺑﻮﺟﻮد هﺬا اﻟﻤﻌﺎﻣﻞ ﻓﻲ‬
‫ﺑﺎﺳﺘﺨﺪام اﻟﻘﺴﻤﺔ ﺑﺪون ﺑﺎﻗﻲ ﻓﺴﻮف ﻳﻨﺘﺞ أﻳﻀﺎ ﻧﻔﺲ اﻟﻨﺎﺗﺞ ﻣﻦ اﻟﻘﺴﻤﺔ‬ ‫اﻟﻔﻴﺠﻮال ﺑﻴﺴﻚ ﻓﻠﻴﺲ ﻣﻦ اﻟﻤﻤﻜﻦ أن ﺗﺴﺘﺨﺪﻣﻪ ﻣﻊ ﻋﺪم دراﻳﺘﻚ ﺑﻪ أﺻﻼ‬
‫‪ ....‬إذا أﻧﺖ اﻵن ﻣﻠﺰم ﺑﺎﻟﺒﺤﺚ ﻋﻦ ﺑﺪﻳﻞ ﻓﻠﻴﺲ ﻣﻦ اﻟﻤﻌﻘﻮل أﻳﻀﺎ أن‬
‫ﻼ‪:‬‬
‫اﻟﻌﺎدﻳﺔ ﻷﻧﻪ ﻻ ﻳﻮﺟﺪ ﺑﺎﻗﻲ أﺻﻼ ﺧﺬ ﻣﺜ ً‬
‫ﺗﻌﻴﻘﻚ ﻣﺜﻞ هﺬﻩ اﻟﻤﺸﻜﻠﺔ ﻓﻲ ﻣﺜﻞ هﺬا اﻟﺒﺮﻧﺎﻣﺞ اﻟﻤﻮﺟﻪ ﻟﻠﺼﻐﺎر!!‬
‫ﻗﺴﻤﺔ ﺑﺒﺎﻗﻲ ' ‪6 / 2 = 3‬‬
‫ﻗﺴﻤﺔ ﺑﺪون ﺑﺎﻗﻲ ' ‪6 \ 2 = 3‬‬ ‫واﻵن دﻋﻨﺎ ﻧﻔﻜﺮ ﻋﻦ ﺑﺪﻳﻞ ﻃﺒﻌًﺎ ﺳﻴﺒﻘﻰ ﻣﺠﺎل ﺗﻔﻜﻴﺮﻧﺎ رﻳﺎﺿﻴًﺎ ﺣﻴﺚ أن‬
‫اﻟﻤﻮﺿﻮع ﻳﺘﻌﻠﻖ ﺑﺎﻟﺮﻳﺎﺿﻴﺎت ) ﻓﻠﻴﺲ ﻣﻦ اﻟﻤﻌﻘﻮل أن ﻧﺒﺤﺚ ﻋﻦ ﺣﻞ‬
‫ﻻ ﺑﺎﻟﻄﺒﻊ ﻧﺘﻴﺠﺔ ﻗﺴﻤﺔ ‪ 6‬ﻋﻠﻰ اﺛﻨﻴﻦ هﻮ ﺛﻼﺛﺔ ﻓﻲ اﻟﺤﺎﻟﺘﻴﻦ‪ ...‬واﻵن‬ ‫ﻼ ﻣﺜﻞ ‪ Line‬و‪ ( Circle...‬ﻟﻬﺬا ﺳﻮف ﻧﺴﺘﻔﻴﺪ ﻣﻦ‬ ‫ﺑﻴﻦ دوال اﻟﺮﺳﻢ ﻣﺜ ً‬
‫ﻼ إذا ﻗﺴﻤﻨﺎ اﻟﺴﺒﻌﺔ ﻋﻠﻰ ‪ 2‬ﻗﺴﻤﺔ ﻋﺎدﻳﺔ‬‫دﻋﻨﺎ ﻧﺠﺮب ﻣﻊ ﻋﺪد ﻓﺮدي ﻓﻤﺜ ً‬ ‫ﻣﻌﺎﻣﻠﻲ اﻟﻘﺴﻤﺔ اﻟﺬﻳﻦ ﻳﻘﺪﻣﻬﻤﺎ ﻟﻨﺎ اﻟﻔﻴﺠﻮال ﺑﻴﺴﻚ ﻓﻜﻠﻨﺎ ﻳﻌﻠﻢ ﻣﻌﺎﻣﻞ‬
‫ﻓﺎن اﻟﻨﺎﺗﺞ هﻮ ‪ 3.5‬ﺑﺎﻟﻄﺒﻊ‪ ...‬وﻟﻜﻦ إذا ﻗﺴﻤﻨﺎ ﻧﻔﺲ اﻟﻌﺪد ‪ -‬اﻟﺴﺒﻌﺔ ‪-‬‬ ‫ﻼ‪:‬‬
‫اﻟﻘﺴﻤﺔ اﻟﻌﺎدﻳﺔ وهﻮ ‪ .. /‬ﻓﻤﺜ ً‬
‫‪4 = 12 / 3‬‬
‫ﻋﻠﻰ اﺛﻨﻴﻦ وﻟﻜﻦ ﺑﺪون ﺑﺎﻗﻲ أي ﺑﺎﺳﺘﺨﺪام اﻟﻤﻌﺎﻣﻞ "\" ﻓﺎن اﻟﻨﺎﺗﺞ ﻓﻲ‬ ‫‪3 = 6 / 2‬‬
‫هﺬﻩ اﻟﺤﺎﻟﺔ هﻮ ‪ 3‬ﻓﻘﻂ ﺑﺪون ﺑﺎﻗﻲ‪ ...‬اﻧﻈﺮ اﻟﻤﺜﺎل‪:‬‬ ‫‪3.5 = 7 / 2‬‬
‫‪3.75 = 15 / 4‬‬
‫ﻗﺴﻤﺔ ﺑﺒﺎﻗﻲ ' ‪7 / 2 = 3.5‬‬ ‫‪2.25 = 9 / 4‬‬
‫‪7 \ 2 = 3‬‬ ‫ﻗﺴﻤﺔ ﺑﺪون ﺑﺎﻗﻲ '‬
‫اﻟﻜﻞ ﻳﻌﻠﻢ اﻟﻨﻮاﺗﺞ اﻟﺴﺎﺑﻘﺔ ﻷﻧﻬﺎ ﻋﺒﺎرة ﻋﻦ ﻗﺴﻤﺔ ﻋﺎدﻳﺔ ‪ ...‬وﻟﻜﻨﻨﺎ ﺳﻮف‬
‫ﻣﻦ اﻟﻮاﺿﺢ اﻵن أن ﻧﺎﺗﺞ ﻗﺴﻤﺔ ﻋﺪد زوﺟﻲ ﻋﻠﻰ اﺛﻨﻴﻦ هﻮ ﻧﻔﺲ اﻟﻨﺎﺗﺞ‬ ‫ﻧﺴﺘﺨﺪم إﻟﻰ ﺟﻮار هﺬا اﻟﻤﻌﺎﻣﻞ ﻣﻌﺎﻣﻞ ﺁﺧﺮ ﻳﻬﻤﻨﺎ ﻓﻲ ﺣﻞ هﺬﻩ اﻟﻤﺴﺄﻟﺔ‬
‫ﻓﻲ ﺣﺎل اﺳﺘﺨﺪﻣﻨﺎ اﻟﻘﺴﻤﺔ ﺑﺒﺎﻗﻲ أو اﻟﻘﺴﻤﺔ ﺑﺪون ﺑﺎﻗﻲ‪ ...‬وأﻣﺎ إذا ﻗﺴﻤﻨﺎ‬ ‫وهﻮ اﻟﻤﻌﺎﻣﻞ \ وهﻮ ﻣﻌﺎﻣﻞ ﻋﻜﺲ ﻣﻌﺎﻣﻞ اﻟﻘﺴﻤﺔ اﻟﻌﺎدﻳﺔ ‪.../‬‬
‫ﻋﺪد ﻓﺮدي ﻋﻠﻰ ‪ 2‬ﻓﺎن اﻟﻨﺎﺗﺞ ﻳﺨﺘﻠﻒ ﻓﻴﻤﺎ إذا آﺎﻧﺖ اﻟﻘﺴﻤﺔ ﺑﺒﺎﻗﻲ أو‬
‫ﺑﺪون ﺑﺎﻗﻲ‬
‫‪20‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com ‬‬
‫‪ ‬‬ ‫‪ ‬‬

‫‪ ‬‬
‫ﻛـﻴــﻒ ﻧــﺤـﻞ ﻣـﺸـﺎﻛــﻠـــﻨـﺎ ﺑــﺄﻧــﻔــﺴــﻨـﺎ ؟‬
‫رﻏــــﻴـــــــــﺪ ﻃـــــﻴــــــــﺐ‬
‫ﻟﻬﺬا آﻠﻪ ﻳﻤﻜﻨﻨﺎ اﻵن اﺳﺘﺨﺪام هﺬﻩ اﻟﻤﻴﺰة ﻟﺠﻌﻞ ﺑﺮﻧﺎﻣﺠﻨﺎ ﻳﺒﺪو آﺎﻟﺘﺎﻟﻲ‪:‬‬

‫ﻛﻮد‪:‬‬
‫و ﻧﺮى ﺑﻮﺿﻮح أن اﻟﻨﺎﺗﺞ داﺋﻤًﺎ هﻮ ﺻﻔﺮ إﻻ ﻓﻲ ﺣﺎﻟﺔ واﺣﺪة‬
‫هﻲ أن ﻳﻜﻮن اﻟﺮﻗﻤﻴﻦ اﻟﺬي ﺗﺘﻢ ﻣﻘﺎرﻧﺘﻬﻤﺎ ﺑـ ‪ And‬هﻤﺎ واﺣﺪ ‪ ...‬وهﺬﻩ‬ ‫‪Dim N As Integer‬‬
‫ﻼ اذا‬
‫اﻟﻤﻘﺎرﻧﺔ ﺗﺘﻢ ﻋﻠﻰ ﻣﺴﺘﻮى اﻟﺒﺖ أي ﻋﻠﻰ اﻟﻤﺴﺘﻮى اﻟﺜﻨﺎﺋﻲ ﻓﻤﺜ ً‬ ‫))"ادﺧﻞ أي ﻋﺪد ﺻﺤﻴﺢ"(‪N = val(InputBox‬‬
‫‪If (N \ 2) = (N / 2) Then‬‬
‫ﻗﺎرﻧﺖ اﻟﺮﻗﻤﻴﻦ اﻟﺘﺎﻟﻴﻦ ب ‪: And‬‬
‫"ﻋﺪد زوﺟﻲ" ‪MsgBox‬‬
‫‪Else‬‬
‫‪12 And 6 = 4‬‬
‫"ﻋﺪد ﻓﺮدي" ‪MsgBox‬‬
‫اﻟﻨﺎﺗﺞ هﻮ ‪ 4‬واﻟﺴﺒﺐ ﻓﻲ ذﻟﻚ ﻳﻌﻮد ﻟﻠﻨﻈﺎم اﻟﺜﻨﺎﺋﻲ وﻟﻜﻲ ﻧﻔﻬﻢ‬ ‫‪End If‬‬
‫ﻟﻤﺎذا آﺎن اﻟﻨﺎﺗﺞ هﻮ ‪ 4‬ﻳﺠﺐ أوﻻ أن ﻧﺤﻈﺮ اﻷرﻗﺎم ‪ 6‬و ‪ 12‬ﺑﺎﻟﻨﻈﺎم‬ ‫ﻻﺣﻆ أن اﻟﺸﺮط آﺎن هﻮ اﻧﻪ إذا ﺗﺴﺎوى ﺣﺎﺻﻞ اﻟﻘﺴﻤﺔ ﺑﺪون‬
‫اﻟﺜﻨﺎﺋﻲ‪...‬‬ ‫ﺑﺎﻗﻲ ﻣﻊ ﺣﺎﺻﻞ اﻟﻘﺴﻤﺔ ﺑﺒﺎﻗﻲ ﻓﺄن اﻟﺮﻗﻢ ﻓﻲ هﺬﻩ اﻟﺤﺎﻟﺔ هﻮ ﻋﺪد زوﺟﻲ‬
‫ﻓﺎﻟـ ‪ 12‬ﻳﻤﺜﻞ اﻟﺮﻗﻢ ‪ 1100‬و أﻣﺎ اﻟﺴﺘﺔ ﻓﺮﻗﻤﻪ هﻮ ‪ 0110‬وﺑﺎﻟﺘﺎﻟﻲ ﻓﺎن‬ ‫وأﻣﺎ إذا ﻟﻢ ﻳﺘﺴﺎوى اﻟﻨﺎﺗﺠﺎن ﻓﺎن اﻟﻌﺪد هﻮ ﻋﺪد ﻓﺮدي وﻻ رﻳﺐ‪...‬‬
‫ﻣﻘﺎرﻧﺘﻬﻤﺎ ﺗﺘﻢ ﺑﺎﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ‪:‬‬
‫اﻟﺤﻞ اﻟﺴﺎﺑﻖ آﺎن ﻣﻦ اﻟﻤﻔﺘﺮض أن ﻳﺴﺘﺨﺪﻣﻪ ﻣﻦ آﺎﻧﺖ ﻟﻬﻢ ﻣﻌﺮﻓﺔ ﺳﺎﺑﻘﺔ‬
‫‪1100 And 0110 = 0100‬‬
‫وذﻟﻚ آﻤﺎ ﻳﻠﻲ‬
‫ﺑﻤﻌﺎﻣﻼت اﻟﻘﺴﻤﺔ اﻟﻌﺎدﻳﺔ واﻟﻘﺴﻤﺔ ﺑﺪون ﺑﺎﻗﻲ‪..‬‬
‫‪1100 = 12‬‬
‫‪0110 = 6‬‬ ‫اﻟﺤﻞ اﻟﺜﺎﻟﺚ )ﺣﻞ ﺛﻨﺎﺋﻲ(‬
‫‪------------‬‬
‫‪0100 = 4‬‬
‫ﻟﻘﺪ آﺎن اﻟﺤﻼن اﻟﺴﺎﺑﻘﺎن ﺟﻤﻴﻼن ﺟﺪا و ﻳﻔﻴﺎن ﺑﺎﻟﻐﺮض ﺗﻤﺎﻣًﺎ‬
‫ﻻﺣﻆ أﻧﻨﺎ ﻧﻘﺎرن آﻞ ﺑﺖ ﻣﻦ ﺑﺘﺎت اﻟﺮﻗﻢ ‪ 12‬ﻣﻊ اﻟﺒﺖ اﻟﺬي‬ ‫وﻟﻜﻦ ﻣﺎذا إذا ﻟﻢ ﺗﻜﻦ ﺗﻌﺮف ﺑﻮﺟﻮد اﻟﻤﻌﺎﻣﻼت اﻟﺴﺎﺑﻘﺔ ) اﻟـ ‪Mod‬‬
‫ﻳﻤﺎﺛﻠﻪ)ﺗﺤﺘﻪ ﻣﺒﺎﺷﺮة( ﻓﻲ اﻟﺮﻗﻢ ‪ 6‬اﻋﺘﻤﺎدًا ﻋﻠﻰ اﻟﻤﻌﺎﻣﻞ ‪ And‬ﻓﺈذا آﺎن‬ ‫واﻟﻘﺴﻤﺔ ﺑﺪون ﺑﺎﻗﻲ \ ( ﻓﻲ هﺬﻩ اﻟﺤﺎﻟﺔ ﻟﻦ ﺗﻜﻮن إﺟﺎﺑﺘﻚ ﻣﺸﺎﺑﻬﻪ ﻹﺣﺪى‬
‫هﻨﺎك ‪ 1‬وﺗﺤﺘﻪ ﻣﺒﺎﺷﺮة ‪ 1‬ﺁﺧﺮ ﻓﺎن اﻟﻨﺎﺗﺞ هﻮ ‪ 1‬وﻏﻴﺮ ذﻟﻚ ﻓﺎن اﻟﻨﺎﺗﺞ‬ ‫اﻟﻄﺮﻳﻘﺘﻴﻦ اﻟﺴﺎﺑﻘﺘﻴﻦ وﺳﻴﻜﻮن ﻣﻦ اﻟﻤﻔﺘﺮض ﻋﻠﻴﻚ أن ﺗﺠﻴﺐ ﻋﻠﻰ‬
‫هﻮ ‪ 0‬وﻳﻈﻬﺮ ﺑﻮﺿﻮح أن اﻟـ ‪ 12‬و ‪ 6‬ﻳﺸﺘﺮآﺎن ﻓﻲ أن اﻟﺒﺖ اﻟﺜﺎﻟﺚ‬ ‫اﻟﺴﺆال اﻟﻤﻄﺮوح هﻨﺎ وهﻮ آﻴﻔﻴﺔ اﻟﺘﻔﺮﻳﻖ ﺑﻴﻦ اﻹﻋﺪاد اﻟﺰوﺟﻴﺔ واﻟﻔﺮدﻳﺔ‬
‫)ﻣﻦ اﻟﻴﻤﻴﻦ( هﻮ واﺣﺪ ﻟﻬﺬا ﻓﺄن اﻟﻨﺎﺗﺞ ﺳﻮف ﻳﻜﻮن أﺻﻔﺎر ﻣﺎﻋﺪا اﻟﺒﺖ‬ ‫ﺑﺮﻣﺠﻴًﺎ ؟‪...‬‬
‫اﻟﺜﺎﻟﺚ ﻓﻬﻮ واﺣﺪ أي أن اﻟﺮﻗﻢ اﻟﻨﺎﺗﺞ هﻮ ‪ 0100‬وﺑﻨﻈﺮة ﺳﺮﻳﻌﺔ ﻳﻤﻜﻦ‬
‫ﻧﻌﺮف ﺟﻤﻴﻌﺎً أن اﻟﻜﻤﺒﻴﻮﺗﺮ اﻟﺬي ﻧﺠﻠﺲ اﻵن أﻣﺎﻣﻪ ﻳﻌﻤﻞ ﻋﻠﻰ‬
‫أن ﺗﻌﺮف أن هﺬا اﻟﺮﻗﻢ اﻟﺜﻨﺎﺋﻲ ﻳﻤﺜﻞ اﻟﺮﻗﻢ ‪ 4‬ﻓﻲ اﻟﻨﻈﺎم اﻟﻌﺸﺮي‪...‬‬
‫ﻧﻈﺎم واﺣﺪ وهﻮ اﻟﻨﻈﺎم اﻟﺜﻨﺎﺋﻲ ) ﺻﻔﺮ و واﺣﺪ (‪ ...‬وهﻮ أﻣﺮ ﻧﺴﻠﻢ ﺑﻪ‬
‫ﺟﻤﻴﻌﺎً وإن آﻨﺎ ﻧﻮاﺟﻪ ﺻﻌﻮﺑﺔ ﻓﻲ ﻓﻬﻢ آﻴﻒ ﺗﻜﻮن اﻟﺼﻮر اﻟﺘﻲ ﻧﺮاهﺎ‬
‫واﻵن ﻟﻨﻨﺘﻘﻞ إﻟﻰ ﻣﺎ ﻳﻬﻤﻨﺎ ﻓﻲ هﺬا آﻠﻪ ﻟﻨﻔﺮض أﻧﻨﺎ ﻗﺎرﻧﺎ أي رﻗﻢ ﻣﻊ‬
‫ﻓﻲ اﻟﺸﺎﺷﺔ واﻷﺻﻮات اﻟﺘﻲ ﻧﺴﻤﻌﻬﺎ ﻣﻦ اﻟﺴﻤﺎﻋﺎت هﻲ ﺟﻤﻴﻌﻬﺎ ﻧﺎﺗﺠﺔ‬
‫اﻟﺮﻗﻢ ‪ 1‬واﻟﺬي ﻳﻤﺜﻞ ‪ 0001‬ﻓﻲ اﻟﻨﻈﺎم اﻟﺜﻨﺎﺋﻲ ﻓﺎن اﻟﻨﺎﺗﺞ ﻓﻲ هﺬﻩ‬
‫ﻋﻦ هﺬا اﻟﻨﻈﺎم اﻟﺜﻨﺎﺋﻲ ) ‪ (0010100100100‬ﺷﻲء ﻏﺮﻳﺐ ﺑﺎﻟﻔﻌﻞ‪..‬‬
‫ﻼ إذا‬
‫اﻟﺤﺎﻟﺔ إﻣﺎ ﺻﻔﺮ أو واﺣﺪ وهﺬا ﻳﻌﺘﻤﺪ ﻋﻠﻰ اﻟﺒﺖ اﻷول ﻓﻲ اﻟﺮﻗﻢ ﻣﺜ ً‬
‫وﻟﻜﻦ ﻣﻊ ﺗﻌﻤﻘﻚ أآﺜﺮ وأآﺜﺮ ﻓﻲ اﻷﻣﻮر اﻟﺒﺮﻣﺠﻴﺔ ﺧﺎﺻﺔ اﻟﻤﺘﻌﻠﻘﺔ ﻣﻨﻬﺎ‬
‫ﻗﺎرﻧﺎ اﻟﺮﻗﻢ ‪ 7‬ﻣﻊ اﻟﻮاﺣﺪ‪:‬‬
‫ﺑﺎﻟﺒﺎﻳﺖ )‪(Byte‬واﻟﺒﺖ )‪ (Bit‬ﺳﻮف ﺗﺒﺪأ ﺗﺸﻌﺮ ﺑﺘﺄﻗﻠﻢ ﻣﻊ ﺗﻘﺒﻞ ﻓﻜﺮة أن‬
‫‪0111 = 7‬‬ ‫آﻞ ﺷﻲء ﻳﻌﻤﻞ ﺑﺎﻟﻔﻌﻞ ﺑﻬﺬا اﻟﻨﻈﺎم اﻟﻌﺠﻴﺐ!!‬
‫‪0001 = 1‬‬
‫‪---------- And‬‬ ‫ﺳﻮف ﻧﺤﺎول هﻨﺎ أن ﻧﺴﺘﻐﻞ هﺬا اﻟﻨﻈﺎم ﻓﻲ اﻟﺤﻞ اﻟﺬي ﻧﺒﺤﺚ‬
‫‪0001 = 1‬‬
‫وﻧﺮى ﺑﻮﺿﻮح أن ﻧﺎﺗﺞ اﻟﻤﻘﺎرﻧﺔ آﺎن واﺣﺪ ﻻن اﻟﺴﺒﻌﺔ ﻳﺤﻤﻞ اﻟﺮﻗﻢ‬ ‫ﻋﻨﻪ ﻣﺴﺘﻐﻠﻴﻦ هﻨﺎ اﻟﻤﻌﺎﻣﻼت اﻟﻤﻨﻄﻘﻴﺔ وﺑﺎﻟﺬات اﻟﻤﻌﺎﻣﻞ ‪ And...‬وﻟﻜﻦ‬
‫واﺣﺪ ﻓﻲ اﻟﺒﺖ اﻷول ﻟﻪ ﻣﻦ اﻟﻴﻤﻴﻦ‪....‬‬ ‫ﻗﺒﻞ هﺬا ﻳﻨﺒﻐﻲ أن ﻧﻌﺮف أن ﻟﻜﻞ رﻗﻢ ﻧﺴﺘﺨﺪﻣﻪ ﻓﻲ اﻟﻨﻈﺎم اﻟﻌﺸﺮي ﻣﺎ‬
‫ﻳﻘﺎﺑﻠﻪ ﻓﻲ اﻟﻨﻈﺎم اﻟﺜﻨﺎﺋﻲ‪.‬‬
‫أﻣﺎ إذا ﻗﺎرﻧﺎ اﻟﺮﻗﻢ ‪ 6‬ﻣﻊ اﻟﻮاﺣﺪ ﻓﻲ اﻟﻨﺎﺗﺞ ﻓﻲ هﺬﻩ اﻟﺤﺎﻟﺔ هﻮ ﺻﻔﺮ ﻻن‬
‫اﻟﺒﺖ اﻷول ﻣﻦ اﻟﻴﻤﻴﻦ ﻟﻠﺴﺘﺔ هﻮ ﺻﻔﺮ ‪ 0110‬وذﻟﻚ آﻤﺎ ﻳﻠﻲ‪:‬‬ ‫ﻣﺎ ﻳﻬﻤﻨﺎ هﻮ اﻟﻤﻌﺎﻣﻞ ‪ And‬وآﻴﻒ ﻳﺘﻌﺎﻣﻞ ﻣﻊ اﻷرﻗﺎم وهﺬا‬
‫اﻟﻤﻌﺎﻣﻞ اﻟﻤﻨﻄﻘﻲ ﻳﺪﺧﻞ ﺿﻤﻦ ﻋﺪة ﻣﻌﺎﻣﻼت أﺧﺮى ﻣﺜﻞ ‪ OR‬و ‪XOR‬‬
‫‪0110 = 6‬‬
‫‪0001 = 1‬‬
‫و ‪ EQV‬وﻏﻴﺮهﺎ ‪...‬واﻟﺠﺪول اﻟﻤﻨﻄﻘﻲ اﻟﻤﺮﺗﺒﻂ ﺑﺎﻟﻤﻌﺎﻣﻞ ‪ And‬هﻮ‬
‫‪---------- And‬‬ ‫آﺎﻟﺘﺎﻟﻲ‪:‬‬
‫‪0000 = 0‬‬
‫وﺑﻬﺬا ﻓﺎن اﻟﻨﺎﺗﺞ ﻳﻜﻮن ﺻﻔﺮ إذا آﺎن اﻟﺮﻗﻢ ﻳﺒﺪأ ﻣﻦ اﻟﻴﻤﻦ‬ ‫‪0‬‬ ‫‪And‬‬ ‫‪0‬‬ ‫=‬ ‫‪0‬‬
‫‪0‬‬ ‫‪And‬‬ ‫‪1‬‬ ‫=‬ ‫‪0‬‬
‫ﺑﺼﻔﺮ وﻳﻜﻮن واﺣﺪ إذا آﺎن اﻟﺮﻗﻢ ﻳﺒﺪأ ﺑﻮاﺣﺪ ‪ ...‬و ﺑﻨﻈﺮة ﺳﺮﻳﻌﺔ إﻟﻰ‬ ‫‪1‬‬ ‫‪And‬‬ ‫‪0‬‬ ‫=‬ ‫‪0‬‬
‫اﻟﺠﺪول اﻟﺴﺎﺑﻖ ﺳﻮف ﺗﺮى ﺑﻮﺿﻮح أن ﺟﻤﻴﻊ اﻹﻋﺪاد اﻟﺰوﺟﻴﺔ ﺗﺒﺪأ‬ ‫‪1‬‬ ‫‪And‬‬ ‫‪1‬‬ ‫=‬ ‫‪1‬‬
‫ﺑﺼﻔﺮ واﻷﻋﺪاد اﻟﻔﺮدﻳﺔ ﺗﺒﺪأ ﺑﻮاﺣﺪ ﻟﻬﺬا ﻳﻤﻜﻦ ﺑﺴﻬﻮﻟﺔ اﺳﺘﻐﻼﻟﻪ ﻓﻲ‬
‫ﺑﺮﻧﺎﻣﺠﻨﺎ ﺑﺎﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ‪:‬‬
‫‪21‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com ‬‬
‫‪ ‬‬ ‫‪ ‬‬

‫‪ ‬‬
‫ﻛـﻴــﻒ ﻧــﺤـﻞ ﻣـﺸـﺎﻛــﻠـــﻨـﺎ ﺑــﺄﻧــﻔــﺴــﻨـﺎ ؟‬
‫رﻏــــﻴـــــــــﺪ ﻃـــــﻴــــــــﺐ‬
‫ﻛﻮد‪:‬‬
‫‪Dim N As Integer‬‬
‫ﻛﻮد‪:‬‬ ‫))"ادﺧﻞ أي ﻋﺪد ﺻﺤﻴﺢ"(‪N = val(InputBox‬‬
‫‪If (N And 1) = 0 Then‬‬
‫‪Dim N As Integer‬‬ ‫"ﻋﺪد زوﺟﻲ" ‪MsgBox‬‬
‫))"ادﺧﻞ أي ﻋﺪد ﺻﺤﻴﺢ"(‪N = val(InputBox‬‬ ‫‪Else‬‬
‫‪Do Until N < 2‬‬ ‫"ﻋﺪد ﻓﺮدي" ‪MsgBox‬‬
‫‪N = N - 2‬‬ ‫‪End If‬‬
‫‪Loop‬‬
‫‪If N = 0 Then‬‬
‫"ﻋﺪد زوﺟﻲ" ‪MsgBox‬‬ ‫ﻻﺣﻆ أﻧﻨﺎ اﺳﺘﺨﺪﻣﻨﺎ ﻣﻌﺮﻓﺘﻨﺎ اﻟﺴﺎﺑﻘﺔ ﺑﺎن ﻣﻘﺎرﻧﺔ اﻟﻌﺪد اﻟﺰوﺟﻲ‬
‫‪Else‬‬ ‫ﻣﻊ اﻟﺮﻗﻢ واﺣﺪ ﻳﻨﺘﺞ ﻋﻨﻬﺎ ﺻﻔﺮ وﻣﻘﺎرﻧﺔ اﻟﻌﺪد اﻟﻔﺮدي ﻣﻊ اﻟﻮاﺣﺪ ﻳﻨﺘﺞ‬
‫"ﻋﺪد ﻓﺮدي" ‪MsgBox‬‬ ‫ﻋﻨﻪ واﺣﺪ‪...‬‬
‫‪End If‬‬
‫وﺑﻬﺬا ﻧﻜﻮن ﻗﺪ اﻧﻬﻴﻨﺎ ﺣﻞ اﻟﻤﺴﺄﻟﺔ ﺑﻄﺮق ﻣﺨﺘﻠﻔﺔ وﻃﺒﻌًﺎ ﻳﻤﻜﻦ‬ ‫هﺬا اﻟﺤﻞ ﻟﻦ ﻳﺴﺘﺨﺪﻣﻪ إﻻ ﻣﻦ آﺎﻧﺖ ﻟﻪ دراﻳﺔ ﺑﺎﻟﻨﻈﺎم اﻟﺜﻨﺎﺋﻲ‬
‫ﻟﻜﻞ ﺷﺨﺺ إن ﻳﺒﺘﻜﺮ ﻃﺮق أﺧﺮى وﻟﻜﻨﻲ اآﺘﻔﻲ هﻨﺎ ﺑﻬﺬا اﻟﺤﺪ‪....‬‬ ‫واﻟﻤﻌﺎﻣﻼت اﻟﻤﻨﻄﻘﻴﺔ‪...‬‬

‫ﻛﻠﻤﺔ أﺧﻴﺮة ﻟﺘﻮﺿﻴﺢ اﻟﻤﻘﺼﺪ ﻣﻦ اﻟﻤﻮﺿﻮع ﻛﻜﻞ‬ ‫اﻟﺤﻞ اﻟﻨﻬﺎﺋﻲ‬


‫ﻋﺸﻨﺎ ﺳﻮﻳًﺎ ﻓﻴﻤﺎ ﺳﺒﻖ دﻗﺎﺋﻖ ﺟﻤﻴﻠﺔ ﻓﻲ ﻣﺤﺎوﻟﺔ ﺣﻞ ﻣﺴﺄﻟﺔ‬ ‫ﻟﻨﻔﺮض اﻵن أﻧﻲ ﻟﻢ ﺗﻜﻦ ﻟﺪي اﻟﺨﺒﺮة اﻟﻜﺎﻓﻴﺔ ﻓﻲ اﻟﻤﻌﺎﻣﻼت اﻟﺴﺎﺑﻘﺔ‬
‫ﺑﺴﻴﻄﺔ وﺳﻌﻴﻨﺎ ﻓﻴﻬﺎ إﻟﻰ اﻟﺘﻮﺿﻴﺢ ﺑﺎن آﻞ واﺣﺪ ﻣﻨﺎ ﻗﺎدر ﻋﻠﻰ إﻳﺠﺎد‬ ‫ﺟﻤﻴﻌﺎً و ﻟﻴﺲ ﻟﺪي ﻏﻴﺮ اﻷﺷﻴﺎء اﻷﺳﺎﺳﻴﺔ ﻓﻲ اﻟﻠﻐﺔ أي ﻣﺜﻞ اﻟﻤﻘﺎرﻧﺎت‬
‫ﺣﻠﻮل واﺑﺘﻜﺎرهﺎ ﻣﻦ اﻟﻌﺪم وﻳﻨﺒﻐﻲ ﻓﻘﻂ ﻋﺪم اﺣﺘﻘﺎر ﻗﺪرات ﻋﻘﻮﻟﻨﺎ‬ ‫ﺑـ ‪ If‬و أواﻣﺮ اﻟﺪوران ‪ For‬و ‪ Until‬و ‪ While...‬ﻓﻬﻞ ﻳﻌﻨﻲ‬
‫اﻟﺒﺸﺮﻳﺔ اﻟﺬي ﻣﻨﺤﻨﺎ إﻳﺎهﺎ اﷲ ﺗﻌﺎﻟﻰ‪ ...‬وﻋﺪم اﻋﺘﻤﺎدك ﻋﻠﻰ اﻟﻐﻴﺮ ﺑﻘﺪر‬ ‫هﺬا أﻧﻲ ﻟﻦ أﺗﻤﻜﻦ ﻣﻊ ﺣﻞ اﻟﺒﺮﻧﺎﻣﺞ وﺳﻴﻨﺘﻬﻲ ﺑﻲ اﻟﻤﻄﺎف ﺑﺎﻹﻗﻼع ﻋﻦ‬
‫اﻹﻣﻜﺎن ﻓﻘﻠﻴﻞ ﺟﺪًا ﻣﻤﻦ ﺳﻴﻘﺮئ اﻟﻤﻮﺿﻮع ﺳﻴﺠﺪ اﻧﻪ ﻟﻢ ﻳﻜﻦ ﻳﻌﺮف أﻳﺎ‬ ‫ﺗﺼﻤﻴﻢ اﻟﺒﺮﻧﺎﻣﺞ ﺑﺸﻜﻞ آﺎﻣﻞ ؟‪....‬‬
‫اﻹﺟﺎﺑﺔ هﻨﺎ هﻲ ﺑﺎﻟﻄﺒﻊ‪ ...‬ﻻ!!!‬
‫ﻣﻦ اﻟﺤﻠﻮل اﻟﺴﺎﺑﻘﺔ وﺁﺧﺮون ﺳﻮف ﺗﺠﺪهﻢ ﻳﻌﺮﻓﻮن ﻣﻌﻈﻢ اﻟﻤﻌﺎﻣﻼت‬
‫اﻟﺘﻲ ذآﺮﻧﺎهﺎ وﻟﻜﻦ ﻟﻢ ﺗﺨﻄﺮ ﻟﻬﻢ اﻟﻔﻜﺮة ﻓﻲ اﺳﺘﺨﺪاﻣﻬﺎ وإﻣﺎ اﻟﺒﺎﻗﻴﻦ‬ ‫ﺑﻞ ﻳﻤﻜﻦ ﻟﻚ أن ﺗﻘﻮم ﺑﻌﻤﻞ ﺑﺴﻴﻂ ﺑﺎﺳﺘﺨﺪام اﻟﺪوران وﺳﻮف ﺗﺤﺼﻞ ﻓﻲ‬
‫ﻓﺴﻮف ﻳﺸﻌﺮون ﺑﺎن آﻞ ﻣﺎ ﺳﺒﻖ آﺎن ﻣﻀﻴﻌﺔ ﻟﻠﻮﻗﺖ وان هﺬﻩ ﺟﻤﻴﻌﻬﺎ‬ ‫اﻷﺧﻴﺮ ﻋﻠﻰ ﻧﺎﺗﺞ ﻣﺸﺎﺑﻪ و إن آﺎﻧﺖ اﻟﻨﺘﻴﺠﺔ ﺳﺘﻜﻮن اﻗﻞ آﻔﺎءة‬
‫ﻃﺮق ﺑﺴﻴﻄﺔ وﻳﻤﻜﻦ أن ﺗﻜﻮن ﻓﻲ رؤﺳﻬﻢ اﻟﻜﺜﻴﺮ ﻣﻦ اﻟﻄﺮق اﻷﻓﻀﻞ‬ ‫وﺳﺮﻋﺔ‪ ...‬وﻟﻜﻨﻬﺎ ﺳﺘﻜﻮن ﺑﺎﻟﺘﺄآﻴﺪ أﻓﻀﻞ ﻣﻦ أن ﻳﺘﻮﻗﻒ اﻟﺒﺮﻧﺎﻣﺞ آﻠﻴًﺎ‪...‬‬
‫ﻣﻦ هﺬﻩ ‪ ...‬و ﻃﺒﻌًﺎ ﺳﻴﻜﻮن هﺬا ﺑﺴﺒﺐ أﻧﻬﻢ ﻟﻢ ﻳﺮآﻨﻮا ﻋﻘﻮﻟﻬﻢ ﺑﺴﺮﻋﺔ‬
‫ﻓﻲ ﻣﻌﻈﻢ اﻟﻤﺸﺎآﻞ اﻟﺘﻲ ﺗﻮاﺟﻬﻬﻢ ﻓﻲ ﺣﻴﺎﺗﻬﻢ اﻟﺒﺮﻣﺠﻴﺔ‪...‬‬ ‫وهﺬﻩ اﻟﻄﺮﻳﻘﺔ ﺑﺒﺴﺎﻃﺔ هﻲ ﻣﺎذا ﻟﻮ ﻋﻤﻠﻨﺎ دوران ﺑﺴﻴﻂ ﻧﻘﻮم‬
‫ﻓﻴﻪ ﻓﻲ آﻞ ﻣﺮة ﺑﺘﻨﻘﻴﺺ اﻟﺮﻗﻢ اﻟﺬي ﻣﻌﻨﺎ ﺑﻤﻘﺪار اﺛﻨﻴﻦ ﺑﺤﻴﺚ ﻳﺘﻮﻗﻒ‬
‫ﻟﻬﺬا آﻠﻪ ﻧﺨﺮج أﻧﺎ وأﻧﺖ ﻋﺰﻳﺰي اﻟﻘﺎرئ ﺑﻨﺘﻴﺠﺔ ﻣﻬﻤﺔ وهﻲ‬ ‫اﻟﺪوران ﻋﻨﺪﻣﺎ ﻳﺼﺒﺢ اﻟﺮﻗﻢ اﻗﻞ ﻣﻦ اﺛﻨﻴﻦ‪ ...‬ﻓﺎن اﻟﻨﺎﺗﺞ ﻓﻲ هﺬﻩ اﻟﺤﺎل‬
‫ﻣﺤﺎوﻟﺔ اﻟﺒﺤﺚ ﻋﻦ اﻟﺤﻞ ﺑﻜﻞ اﻟﻄﺮق اﻟﻤﻤﻜﻨﺔ ﺛﻢ اﻟﻠﺠﻮء ﺑﻌﺪ ذﻟﻚ‬ ‫ﺳﻴﻜﻮن داﺋﻤًﺎ إﻣﺎ واﺣﺪ)ﻓﻲ ﺣﺎﻟﺔ اﻹﻋﺪاد اﻟﻔﺮدﻳﺔ( أو ﺻﻔﺮ ) ﻓﻲ ﺣﺎﻟﺔ‬
‫ﻟﻠﻤﺴﺎﻋﺪة آﻤﺎ اﻧﻚ ﻳﻤﻜﻦ أن ﺗﺰﻳﺪ ﻣﻦ اﺳﺘﻔﺎدﺗﻚ إذا ﺳﻌﻴﺖ ﻹﻳﺠﺎد اﻟﺤﻞ‬ ‫اﻹﻋﺪاد اﻟﺰوﺟﻴﺔ (‬
‫ﺛﻢ ﻗﻤﺖ ﺑﻄﺮح اﻟﻄﺮﻳﻘﺔ اﻟﺘﻲ ﺗﻮﺻﻠﺖ إﻟﻴﻬﺎ ﻓﻲ اﻟﻤﻨﺘﺪى ﻣﻊ اﻟﺴﺆال ﻋﻦ‬
‫وﺟﻮد ﻃﺮق أﻓﻀﻞ ﻓﺄن هﺬا ﺳﻴﻜﻮن أﻓﻀﻞ ﺑﻜﺜﻴﺮ ﻣﻦ اﻟﺴﺆال اﻟﻤﺒﺎﺷﺮ‬ ‫ﻼ اﻟﺮﻗﻢ ‪ 5‬إذا أﻧﻘﺼﻨﺎ ﻣﻨﻪ ‪ 2‬ﺳﻮف ﻳﺒﻘﻰ ‪ 3‬وﻷﻧﻪ ﻟﻴﺲ‬
‫ﺧﺬ ﻣﺜ ً‬
‫ﻋﻦ اﻟﺤﻞ ‪ ...‬وﺳﻮف ﻳﺘﺤﻮل ﺳﺆاﻟﻚ اﻟﻤﻄﺮوح ﻓﻲ اﻟﻤﻨﺘﺪى ‪ ....‬ﻣﻦ‬ ‫اﺻﻐﺮ ﻣﻦ اﺛﻨﻴﻦ ﻧﻘﻮم ﺑﺎﻟﺘﻨﻘﻴﺺ ﻣﺮة أﺧﺮى ﻓﻴﺼﺒﺢ ﻟﺪﻳﻨﺎ اﻵن ‪ 1‬وهﻮ‬
‫اﻟﺼﻴﻐﺔ‪:‬‬ ‫رﻗﻢ اﺻﻐﺮ ﻣﻦ اﺛﻨﻴﻦ اﻵن ﻧﻘﺎرن إذا آﺎن ﺻﻔﺮ ﻓﻬﻮ زوﺟﻲ وان آﺎن‬
‫واﺣﺪ آﻤﺎ ﻓﻲ هﺬﻩ اﻟﺤﺎﻟﺔ ﻓﻬﻮ ﻓﺮدي‪...‬‬
‫هﻞ ﺗﻮﺟﺪ ﻃﺮﻳﻘﺔ ﻟﻌﻤﻞ آﺬا و آﺬا ؟‬
‫ﻼ ﻓﺎﻧﻪ ﻓﻲ اﻟﻤﺮة اﻷوﻟﻰ ﻧﻨﻘﺺ ‪2‬‬ ‫وإذا ﻗﺎرﻧﺎ ﺑﺮﻗﻢ زوﺟﻲ ﻟﻨﻘﻞ اﻟـ ‪ 6‬ﻣﺜ ً‬
‫إﻟﻰ اﻟﺼﻴﻐﺔ‪:‬‬ ‫ﻓﻴﺒﻘﻰ ‪ 4‬ﺛﻢ ﻧﻨﻘﺺ ‪ 2‬ﻓﻴﺒﻘﻰ ‪ 2‬ﺛﻢ ﻧﻨﻘﺺ ‪ 2‬ﻓﻴﺒﻘﻰ ﺻﻔﺮًا وهﻨﺎ ﻧﺘﻮﻗﻒ ﻋﻦ‬
‫اﻟﺘﻨﻘﻴﺺ ﻻن اﻟﺮﻗﻢ اﻟﻤﺘﺒﻘﻲ اﺻﻐﺮ ﻣﻦ اﺛﻨﻴﻦ ) ﺑﻘﻲ ﺻﻔﺮًا ( وهﺬا ﻳﻌﻨﻲ‬
‫هﻞ ﺗﻮﺟﺪ ﻃﺮﻳﻘﺔ أﻓﻀﻞ ﻣﻦ هﺬﻩ اﻟﺘﻲ ﺗﻮﺻﻠﺖ إﻟﻴﻬﺎ ﻟﻌﻤﻞ آﺬا وآﺬا ؟‬
‫أن اﻟﺮﻗﻢ زوﺟﻲ‪...‬‬
‫ﻃﺒﻌًﺎ ﻟﻦ ﺗﻜﻮن ﺗﻤﻠﻚ اﻟﺤﻠﻮل ﻟﺠﻤﻴﻊ اﻟﻤﺸﺎآﻞ اﻟﺘﻲ ﺗﻮاﺟﻬﻚ وﺳﻮف‬
‫ﻳﻤﻜﻦ ﺗﺮﺟﻤﺔ ﻣﺎ ﺳﺒﻖ ﺑﺪوران ﺑﺴﻴﻂ ﻳﻨﻘﺺ ‪ 2‬ﻓﻲ آﻞ ﻣﺮة‬
‫ﺗﻀﻄﺮ ﻓﻲ ﺑﻌﺾ اﻟﻤﺮات إﻟﻰ ﻃﻠﺐ اﻟﻤﺴﺎﻋﺪة وﺳﻮف ﺗﺠﺪ ﻓﻲ ﻣﻨﺘﺪاﻧﺎ‬
‫وﻳﺘﻮﻗﻒ ﻋﻨﺪﻣﺎ ﻳﻜﻮن اﻟﺮﻗﻢ اﺻﻐﺮ ﻣﻦ ‪ 2‬ﺛﻢ ﻧﻘﺎرن ﺑﺎﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ‪:‬‬
‫ﻣﻦ ﻳﺴﺮﻩ آﺜﻴﺮًا أن ﻳﻤﺪ ﻳﺪ اﻟﻌﻮن ﻟﻚ وﻟﻜﻦ آﻦ ﻣﺘﺄآﺪًا ﻣﻦ اﻧﻚ ﻗﺪ‬
‫اﺳﺘﻨﻔﺪت آﻞ ﻣﺎ ﻓﻲ ﺟﻌﺒﺘﻚ ﻣﻦ ﻃﺮق ﻟﺤﻞ اﻟﻤﺸﻜﻠﺔ‪....‬‬

‫واﻟﺴﻼم ﻋﻠﻴﻜﻢ ورﺣﻤﺔ اﷲ وﺑﺮآﺎﺗﻪ‪....‬‬

‫‪22‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫‪ ‬‬ ‫‪ ‬‬

‫ﺟﻤــــﺎل اﻟﺸـــﻜﻞ وﻓﺴـــﺎد اﻟـــﺮوح‬


‫‪ ‬‬
‫‪6‬‬

‫أﺣــﻤـــﺪ ﺑـــﺪر ‪BADRMEDIA‬‬


‫‪ ‬‬
‫ﺻﺎﺣﺐ اﻟﻜﺒﺮ ﺑﻌﻴﺪ ﻋﻦ اﻟﺤﻖ واﻟﺪﻳﻦ‬ ‫اﻟﻜﺒﺮ اﻟﻜﺒﺮ ‪ -‬اﻟﻠﻬﻢ أﻏﺜﻨﺎ –‬

‫اﻟﺸﻜﻞ‪ :‬ﻣﺒﺮﻣﺞ ﻣﻄﻮر ﻣﺤﺘﺮف وﻣﻤﻴﺰ‪.‬‬


‫ﻳﻘﻮل ﺗﻌﺎﻟﻰ‪:‬‬
‫اﻟــــﺮوح‪ :‬ﻣﺘﻜﺒﺮ ﺻﺎﺣﺐ ﻏﺮور ﺑﺎﻟﻨﻔﺲ‪.‬‬
‫ﻖ َوِإنْ‬ ‫ﺤﱢ‬ ‫ض ِﺑ َﻐﻴْ ِﺮ اﻟْ َ‬
‫ن ﻓِﻲ اﻟَْﺄرْ ِ‬ ‫ﻦ َﻳ َﺘ َﻜ ﱠﺒﺮُو َ‬
‫ﻋﻦْ ﺁﻳَﺎﺗِﻲ اﱠﻟﺬِﻳ َ‬ ‫ف َ‬ ‫ﺳَﺄﺻْ ِﺮ ُ‬ ‫} َ‬
‫ﺳﺒِﻴﻠًﺎ‬
‫ﺨﺬُو ُﻩ َ‬‫َﻳ َﺮوْا ُآﻞﱠ ﺁ َﻳ ٍﺔ ﻟَﺎ ُﻳﺆْ ِﻣﻨُﻮا ِﺑﻬَﺎ َوِإنْ َﻳ َﺮوْا ﺳَﺒِﻴﻞَ اﻟ ﱡﺮﺷْ ِﺪ ﻟَﺎ َﻳ ﱠﺘ ِ‬ ‫اﻟﻨﺘﻴﺠﺔ‪ :‬ﺧﺎﺳﺮ ﻟﻠﺪﻧﻴﺎ واﻵﺧﺮة‬
‫ﻚ ِﺑَﺄ ﱠﻧ ُﻬﻢْ َآ ﱠﺬﺑُﻮا ﺑِﺂﻳَﺎ ِﺗﻨَﺎ وَآَﺎﻧُﻮا‬
‫ﺳﺒِﻴﻠًﺎ َذِﻟ َ‬
‫ﺨﺬُو ُﻩ َ‬ ‫ﻲ َﻳ ﱠﺘ ِ‬
‫َوِإنْ َﻳ َﺮوْا ﺳَﺒِﻴﻞَ اﻟ َﻐ ﱢ‬
‫ﻦ{ ﺳﻮرة اﻷﻋﺮاف – اﻵﻳﺔ ‪–146‬‬ ‫ﻋَﻨْﻬَﺎ ﻏَﺎ ِﻓﻠِﻴ َ‬

‫اﻟﻤﺘﻜﺒﺮ ﻳﺨﺘﻢ اﻟﻘﺪﻳﺮ ﻋﻠﻰ ﻗﻠﺒﻪ ﻓﻼ ﻳﻤﻴﺰ ﺑﻴﻦ اﻟﺤﻖ واﻟﺒﺎﻃﻞ ﻳﻘﻮل اﷲ ﺟﻞ‬
‫ر{ ﺳﻮرة ﻏﺎﻓﺮ ‪-‬‬
‫ﺟﺒﱠﺎ ٍ‬
‫ﺐ ُﻣ َﺘ َﻜ ﱢﺒ ٍﺮ َ‬
‫ﻋﻠَﻰ ُآﻞﱢ ﻗﻠْ ِ‬
‫ﻚ َﻳﻄْ َﺒ ُﻊ اﻟﻠﱠ ُﻪ َ‬
‫ﺟﻼﻟﻪ‪َ } :‬آ َﺬِﻟ َ‬ ‫اﻟﺤﻤﺪ ﷲ اﻟﺨﺎﻟﻖ اﻟﺒﺎرئ اﻟﻤﺼﻮر اﻟﻌﺰﻳﺰ اﻟﻌﻠﻲ اﻟﻤﺘﻜﺒﺮ‪،‬‬
‫اﻵﻳﺔ ‪-35‬‬ ‫اﻟﺠﺒﺎر اﻟﺬي آﻞ ﺟﺒﺎر ﻟﻪ ذﻟﻴﻞ ﺧﺎﺿﻊ‪ ،‬وآﻞ ﻣﺘﻜﺒﺮ ﻓﻲ ﺟﻨﺎب ﻋﺰﻩ‬
‫‪ -‬اﻟﻤﺘﻜﺒﺮ هﺎﻟﻚ هﺎﻟﻚ أﻻ ﻳﻌﻠﻢ أﻧﻪ ﻳﻨﺎزع ﻣﻦ !!!! اﷲ ) اﻟﻤﻠﻚ‬ ‫ﻣﺴﻜﻴﻦ ﺗﻮاﺿﻊ‪ ،‬وأﺷﻬﺪ أن ﻻ إﻟﻪ إﻻ اﷲ وﺣﺪﻩ ﻻ ﺷﺮﻳﻚ ﻟﻪ اﻟﻘﻬﺎر اﻟﺬي‬
‫(‪ ،‬ﻓﻌﻦ أﺑﻲ هﺮﻳﺮة رﺿﻲ اﷲ ﻋﻨﻪ ﻗﺎل‪ :‬ﻗﺎل رﺳﻮل اﷲ ﺻﻠﻰ اﷲ ﻋﻠﻴﻪ‬ ‫ﻻ ﻳﺪﻓﻌﻪ ﻋﻦ ﻣﺮادﻩ داﻓﻊ‪ ،‬اﻟﻐﻨﻲ اﻟﺬي ﻟﻴﺲ ﻟﻪ ﺷﺮﻳﻚ ﻓﻲ اﻟﻤﻠﻚ وﻻ‬
‫ﷲ ﺗﻌﺎﻟﻰ‪:‬اﻟﻜِﺒﺮِﻳﺎ ُء ِردَاﺋﻲ واﻟﻌَﻈ َﻤ ُﺔ إِزاري ﻓﻤﻦ‬
‫ل ا ُ‬
‫وﺳﻠﻢ‪)) :‬ﻳﻘﻮ ُ‬ ‫ﻣﻨﺎزع‪ ،‬وأﺷﻬﺪ أن ﻣﺤﻤﺪًا ﻋﺒﺪ اﷲ ورﺳﻮﻟﻪ ﺑﻌﺜﻪ اﷲ ﻷهﻞ اﻟﻬﺪى ﻧﺠـﻢ‬
‫ﺳﺎﻃﻊ‪ ،‬وﻋﻠﻰ أهﻞ اﻟﻔﺠﻮر واﻟﺨﻨﺎ ﺳﻴﻒ ﻗﺎﻃﻊ ﺻﻠﻰ اﷲ ﻋﻠﻴﻪ وﻋﻠﻰ ﺁﻟﻪ‬
‫ﻧﺎزﻋﻨﻲ واﺣِﺪًا ﻣﻨﻬﺎ أﻟﻘﻴﺘ ُﻪ ﻓﻲ ﺟﻬﻨ َﻢ وﻻ أﺑﺎﻟﻲ(( رواﻩ ﻣﺴﻠﻢ‪.‬‬
‫وﺻﺤﺒﻪ وﺳﻠﻢ ﻣﺎ ﺳﺠﺪ ﷲ ﺳﺎﺟﺪ أو رآﻊ ﷲ راآﻊ‪.‬‬
‫‪ -‬إن اﻟﻜﺒﺮ أﻣﺮﻩ ﺧﻄﻴﺮ ﻓﻴﻜﻔﻲ اﻟﻤﺮء أن ﻳﻜﻮن ﻓﻲ ﻗﻠﺒﻪ ﻣﺜﻘﺎل‬
‫أﻣﺎ ﺑﻌﺪ‪:‬‬
‫ذرة ﻣﻦ آﺒﺮ ﻟﻴُﺤﺮم اﻟﺠﻨﺔ وﻧﻌﻴﻤﻬﺎ‪ ،‬ﻓﻌﻦ ﻋﺒﺪ اﷲ ﺑﻦ ﻣﺴﻌﻮد رﺿﻲ اﷲ‬
‫ن‬
‫ﺠ ﱠﻨ َﺔ َﻣﻦْ آﺎ َ‬
‫ﻞ اﻟ َ‬
‫ﺧُ‬‫ﻋﻨﻪ ﻋﻦ اﻟﻨﺒﻲ ﺻﻠﻰ اﷲ ﻋﻠﻴﻪ وﺳﻠﻢ أﻧﻪ ﻗﺎل‪)) :‬ﻻﻳَﺪ ُ‬ ‫ﻓﺄوﺻﻴﻜﻢ ﻋﺒﺎد اﷲ ﺑﻮﺻﻴﺔ اﷲ ﻟﻸوﻟﻴﻦ واﻵﺧﺮﻳﻦ إذ ﻳﻘﻮل‪:‬‬
‫ر ٍة ِﻣﻦْ ِآﺒْﺮ ‪ ((..‬رواﻩ ﻣﺴﻠﻢ‪.‬‬
‫ل َذ ّ‬
‫ﻓﻲ ﻗﻠﺒ ِﻪ ِﻣﺜْﻘَﺎ ُ‬
‫ب ِﻣﻦْ ﻗﺒِْﻠ ُﻜﻢْ َوِإﻳﱠﺎ ُآﻢْ َأنْ‬
‫ﻦ أُوﺗُﻮا اﻟْ ِﻜﺘَﺎ َ‬
‫ﺻﻴْﻨَﺎ اﱠﻟﺬِﻳ َ‬
‫}‪َ ..‬وَﻟ َﻘﺪْ َو ﱠ‬
‫ﺑﻞ اﻟﻤﺘﻜﺒﺮون هﻢ أول ﻣﻦ ﺗﺒﺤﺚ اﻟﻨﺎر ﻋﻨﻬﻢ ﻳﻮم اﻟﻘﻴﺎﻣﺔ‪.‬‬ ‫ض‬
‫ت َوﻣَﺎ ﻓِﻲ اﻟَْﺄرْ ِ‬ ‫ﺴﻤَﺎوَا ِ‬
‫ن ِﻟﱠﻠ ِﻪ ﻣَﺎ ﻓِﻲ اﻟ ﱠ‬ ‫ا ﱠﺗﻘُﻮا اﻟﱠﻠ َﻪ َوِإنْ َﺗﻜْ ُﻔﺮُوا َﻓِﺈ ﱠ‬
‫أﺧﺮج اﻟﺘﺮﻣﺬي ﻋﻦ أﺑﻲ هﺮﻳﺮة رﺿﻲ اﷲ ﻋﻨﻪ ﻗﺎل‪ :‬ﻗﺎل رﺳﻮل اﷲ‬ ‫ﺣﻤِﻴﺪًا {‬
‫ﻏﻨِﻴًّﺎ َ‬
‫ن اﻟﻠﱠ ُﻪ َ‬
‫َوآَﺎ َ‬
‫ﻋُﻨﻖٌ ﻟ ُﻪ أُذﻧﺎن ﺗﺴﻤﻌﺎنِ‪،‬‬
‫ﻦ اﻟﻨﺎ ِر ُ‬
‫ج ِﻣ َ‬
‫ﺻﻠﻰ اﷲ ﻋﻠﻴﻪ وﺳﻠﻢ‪)) :‬ﻳﺨﺮ ُ‬
‫ﻞ ﺟﺒﺎ ٍر‬
‫ﺖ ﺑﺜﻼﺛ ٍﺔ‪ .‬ﺑﻜ ِ‬
‫ل‪ُ :‬وآّ ْﻠ ُ‬
‫ن ﻳﻨﻄﻖُ‪ ،‬ﻳﻘﻮ ُ‬‫وﻋﻴﻨﺎنِ ُﺗﺒْﺼِﺮانِ‪،‬وﻟِﺴﺎ ٌ‬ ‫اﻟﻌﻨﻮان ﻳﻮﺣﻲ ﺑﻤﺮاد اﻟﻤﻘﺎل أﻻ وهﻮ ﻓﺴﺎد اﻟﺠﻮهﺮ ﻣﻊ ﺟﻤﺎل اﻟﻤﻈﻬﺮ‬
‫ﷲ إﻟﻪ ﺁﺧﺮَ‪ ،‬وﺑﺎﻟﻤﺼﻮرﻳﻦ((‬ ‫ﻞ ﻣﻦ دﻋﺎ ﻣﻊ ا ِ‬ ‫ﻋﻨﻴﺪٍ ‪ ،‬وﺑﻜ ِ‬ ‫وآﻼﻣﻨﺎ هﻨﺎ ﻋﻦ ﺧﻠﻖ هﺎم ﻟﻜﻞ ﻣﻦ أراد أن ﻳﻜﻮن ﺣﺎﻣﻞ ﻟﻌﻠﻢ ﻣﻦ اﻟﻌﻠﻮم‬
‫ﻳﺎ اﷲ‬ ‫اﻟﺘﻲ أﻧﻌﻢ ﺑﻬﺎ اﷲ ﺳﺒﺤﺎﻧﻪ ﻋﻠﻰ ﺧﻠﻘﻪ ﺑﺎﻣﺘﻨﺎﻧﻪ‬

‫وهﻨﺎ ﺣﻮارﻧﺎ ﻋﻦ ﻋﻠﻮم اﻟﺒﺮﻣﺠﺔ واﻟﺘﻄﻮﻳﺮ اﻟﺘﻜﻨﻮﻟﻮﺟﻲ‪.‬‬


‫ن ﻋﻠﻰ‬ ‫ﻳﻘﻮل ﺻﻠﻰ اﷲ ﻋﻠﻴﻪ وﺳﻠﻢ ‪)) :‬ﻳُﺤﺸ ُﺮ اﻟﻤﺘﻜﺒﺮو َ‬
‫ل ﻣﻦ‬‫ل ﻳﻐْﺸﺎه ُﻢ اﻟﺬّ ُ‬‫ل اﻟ ّﺬ ّر )أي ﺻﻐﺎر اﻟﻨﻤﻞ(ﻓﻲ ﺻُﻮ ِر اﻟﺮﺟﺎ ِ‬ ‫أﻣﺜﺎ ِ‬ ‫وﻣﻦ أآﺜﺮ اﻷﺷﻴﺎء ﻓﺴﺎدًا ﻟﻠﺠﻮهﺮ ﻋﻦ آﺜﻴﺮ ﻣﻤﻦ ﺳﻠﻚ هﺬا اﻟﻤﻀﻤﺎر‬
‫ل ﻟﻪ ﺑُﻮَﻟﺲٌ‪،‬ﺗﻌﻠﻮهﻢ ﻧﺎر‬ ‫ﻦ ﻓﻲ ﺟﻬﻨ َﻢ ﻳُﻘﺎ ُ‬ ‫ن إﻟﻰ ﺳَﺠ ٍ‬ ‫ﻞ ﻣﻜﺎن‪،‬ﻳﺴﺎﻗﻮ َ‬ ‫آِ‬ ‫ﺗﻌﻈﻴﻢ اﻟﻨﻔﺲ واﻻﺳﺘﻜﺒﺎر واﻟﻐﺮور‪.‬‬
‫ل(( )اﻟﻨﺴﺎﺋﻲ‬ ‫ﻞ اﻟﻨﺎ ِر ﻃﻴﻨ ُﺔ اﻟﺨﺒﺎ ِ‬ ‫ن ِﻣﻦْ ﻋُﺼﺎ َر ِة أه ِ‬
‫اﻷﻧﻴﺎر ﻳُﺴﻘﻮ َ‬
‫وهﺬﻩ ﺁﻓﺎت أﻋﺎذﻧﺎ اﷲ وإﻳﺎآﻢ ﻣﻨﻬﺎ ‪ -‬ﻗﺎﺗﻠﺔ ﻟﺼﺎﺣﺒﻬﺎ ﻟﻴﺲ ﻷﻧﻪ ﺳﻴﻜﻮن‬
‫واﻟﺘﺮﻣﺬي(‪.‬‬
‫ﻣﻨﺒﻮذ ﻓﻲ وﺳﻄﻪ ﻓﻠﻴﺲ هﺬا ﺷﺮﻃًﺎ ﻓﻜﺜﻴﺮ ﻣﻦ ﻧﺮاﻩ ﻣﻐﺮور وﻳﻠﺘﻒ ﺣﻮﻟﻪ‬
‫اﻟﻜﺒﺮ إﺣﺴﺎس ﺑﺎﻟﻌﻈﻤﺔ ﻓﻲ اﻟﻨﻔﺲ ﻳﻨﻌﻜﺲ ﻓﻲ ﺻﻮرة‬ ‫أﻗﺮاﻧﻪ رﺑﻤﺎ ﻟﺤﺎﺟﺘﻬﻢ ﻟﻪ‪ ،‬ﻟﻜﻦ هﻲ ﻗﺎﺗﻠﺔ ﻷن اﷲ أوﻋﺪ وهﺪد ﺻﺎﺣﺒﻬﺎ‬
‫ﺗﺼﺮﻓﺎت اﻟﻤﺘﻜﺒﺮ‪ ،‬ﻓﺈﻣﺎ أن ﻳﻜﻮن اﺧﺘﻴﺎل ﻓﻲ اﻟﻤﺸﻴﺔ أو إﻋﺠﺎب ﺑﺎﻟﺮأي‬ ‫ﺑﺎﻟﻌﺎﻗﺒﺔ اﻟﺴﻮء ﻓﻲ اﻟﺪﻧﻴﺎ واﻵﺧﺮة‪.‬‬
‫ﺣﻴﺚ ﻳﺮد آﻞ رأي ﻣﺨﺎﻟﻒ وﻟﻮ آﺎن ﺣﻘًﺎ أو اﺳﺘﺒﺪاد ﻓﻲ اﻟﻤﻨﺼﺐ‬
‫وﺳﻨﺒﺪأ ﺑﺎﻟﺤﻮار ﻋﻦ ﻣﺮض اﻟﻜﺒﺮ واﻻﺳﺘﻜﺒﺎر‬
‫وازدراء ﻟﻶﺧﺮﻳﻦ‪.‬‬
‫وﻣﺎ أﺳﺮع اﻟﻜﺒﺮ إﻟﻰ أهﻞ اﻟﻌﻠﻢ ﻓﻼ ﻳﻠﺒﺚ أن ﻳﺴﺘﺸﻌﺮ ﻓﻲ ﻧﻔﺴﻪ آﻤﺎل‬
‫واﻟﻜﺒﺮ ﻣﻦ ﺻﻮرﻩ ﺗﻌﺎﻟﻴﻚ ﻋﻠﻰ ﻣﻦ ﻋﻠﻤﻚ وآﺎن ﺳﺒﺒًﺎ ﻓﻴﻤﺎ‬
‫اﻟﻌﻠﻢ ‪ ،‬ﻓﻴﺴﺘﻌﻈﻢ ﻧﻔﺴﻪ وﻳﺤﺘﻘﺮ اﻟﻨﺎس وﻳﺴﺘﺠﻬﻠﻬﻢ وﻳﺴﺘﺨﺪم ﻣﻦ ﺧﺎﻟﻄﻪ‬
‫أﻧﺖ ﻓﻴﻪ ‪ -‬أو ﻋﺪم إﺧﻀﺎع اﻟﺠﻨﺐ ﻟﻪ أو ﺟﻌﻠﻪ ﻧﺪًا أو رﻓﻊ ﻧﻔﺴﻚ ﻋﻠﻴﻪ‪.‬‬
‫ﻣﻨﻬﻢ وﻗﺪ ﻳﺮى ﻧﻔﺴﻪ ﻋﻨﺪ اﷲ ﺗﻌﺎﻟﻰ أﻋﻠﻰ وأﻓﻀﻞ ﻣﻨﻬﻢ‪.‬‬
‫ﻓﺤﺘﻰ ﻟﻮ آﻨﺖ أﻋﻠﻲ ﻣﻨﻪ ﻋﻠﻤًﺎ وﻣﺮﺗﺒﺔ ﻳﻜﻔﻲ أﻧﻪ آﺎن ﺳﺒﺒًﺎ ﻓﻲ وﺻﻮﻟﻚ‬
‫ﻟﻤﺎ أﻧﺖ ﻓﻴﻪ وﻻ ﺗﺨﻮل اﻷﻣﺮ ﻻﺟﺘﻬﺎدك وﻧﺸﺎﻃﻚ ‪ -‬ﻓﻠﻮ ﻟﻢ ﻳﻘﺪر اﷲ ﻟﻚ‬
‫ﻓﻼن ﻟﻦ ﺗﺼﻴﺮ ﻟﻤﺎ ﺻﺮت ﻟﻪ‪.‬‬
‫‪23‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫‪ ‬‬ ‫‪ ‬‬

‫‪ ‬‬
‫ﺟﻤــــﺎل اﻟﺸـــﻜﻞ وﻓﺴـــﺎد اﻟـــﺮوح‬
‫أﺣــﻤـــﺪ ﺑـــﺪر ‪BADRMEDIA‬‬
‫‪ ‬‬

‫ﻻ ﺗﻜﻦ ﻣﺜﻞ ﻗﺎرون ‪ -‬ﻓﻘﺼﺺ اﻟﻘﺮﺁن ﻟﻴﺴﺖ ﺣﻜﺎﻳﺎت ﻗﺒﻞ اﻟﻨﻮم‪ ،‬ﺑﻞ ﻟﻠﻌﺒﺮة وﻓﻬﻢ اﻟﺤﻜﻤﺔ وﻣﻦ ﺿﺎﻋﺖ ﻣﻨﻪ اﻟﺤﻜﻤﺔ وﻓﻬﻢ اﻟﻤﺜﻞ ﻓﻠﻴﺒﻚ ﻋﻠﻲ ﻧﻔﺴﻪ ‪.‬‬

‫إن أآﺜﺮ اﻟﻤﺘﻜﺒﺮﻳﻦ ﻋﺬاﺑًﺎ ﻣﻦ آﺎن ﻓﻘﻴﺮ وﺗﻜﺒﺮ وهﻮ أﺷﺪ ﻋﺬاﺑًﺎ وأﺷﺪ ﻣﻘﺘًﺎ ﻷﻧﻪ ﻟﻢ ﻳﺄت ﻣﻦ أﺳﺒﺎب اﻟﻜﺒﺮ ﺷﻲء وﻣﻊ ذﻟﻚ ﺗﺄﺑﻰ ﻧﻔﺴﻪ اﻟﻤﺮﻳﻀﺔ إﻻ اﻟﻜﺒﺮ‪.‬‬

‫ﷲ ﻳﻮ َم اﻟﻘﻴﺎﻣ ِﺔ وﻻ ﻳُﺰآﻴﻬﻢ وﻻ ﻳﻨﻈ ُﺮ إﻟﻴﻬﻢ وﻟﻬﻢ ﻋﺬابٌ أﻟﻴﻢ وذآ َﺮ ﻣﻨﻬﻢ وﻋﺎﺋﻞٌ)أي ﻓﻘﻴﺮ(‬
‫ﻳﻘﻮل ﻋﻨﻪ ﺻﻠﻰ اﷲ ﻋﻠﻴﻪ وﺳﻠﻢ‪)) :‬ﺛﻼﺛﺔٌ ﻻ ُﻳﻜﱠﻠِ ُﻤ ُﻬ ُﻢ ا ُ‬
‫ﻣﺴﺘﻜﺒﺮ((‪.‬‬

‫ﺲ َﻣﺜْﻮَى اﻟْ ُﻤﺘَﻜَﺒﱢﺮِﻳﻦَ{ ﺳﻮرة اﻟﺰﻣﺮ – اﻵﻳﺔ ‪– 72‬‬


‫ﻦ ﻓِﻴﻬَﺎ َﻓ ِﺒﺌْ َ‬
‫ﺟ َﻬ ﱠﻨ َﻢ ﺧَﺎِﻟﺪِﻳ َ‬
‫ب َ‬
‫ﺧﻠُﻮا َأﺑْﻮَا َ‬
‫ﻞ ادْ ُ‬
‫أﻋﻮذ ﺑﺎﷲ ﻣﻦ اﻟﺸﻴﻄﺎن اﻟﺮﺟﻴﻢ ‪ }:‬ﻗِﻴ َ‬

‫وداﺋﻤًﺎ ﺻﺎﺣﺐ اﻟﻌﻠﻢ ﻓﻘﻴﺮ‬

‫أﻧﺴﻴﺖ ﻗﻮل اﻟﻤﻠﻚ‬

‫"وﻣﺎ أوﺗﻴﺘﻢ ﻣﻦ اﻟﻌﻠﻢ إﻻ ﻗﻠﻴﻼ"‬

‫ﻓﺎﻟﻌﻠﻢ ﻻ ﻳﻮرث ﻟﻜﻲ ﺗﺘﻜﺒﺮ ﺑﻪ‪ ،‬ﺑﻞ ﻳﻤﻨﺤﻚ رب اﻟﻌﺎﻟﻤﻴﻦ إﻳﺎﻩ وهﻮ اﻟﻘﺎدر ﻋﻠﻲ ﺳﻠﺒﻪ ﺑﻌﺪ اﻣﺘﻨﺎﻧﻪ‪.‬‬

‫ﻓﻤﻦ ﺗﻜﺒﺮ ﺑﻌﻠﻢ ﻓﻬﻮ ﻣﻦ أﺷﺪ اﻟﻤﺘﻜﺒﺮﻳﻦ ﻋﺬاﺑًﺎ ﻷﻧﻪ ﻓﻘﻴﺮ ﻣﺘﻜﺒﺮ‪.‬‬ ‫‪-‬‬
‫إن ﻣﻦ اﻟﻜﺒﺮ أن ﻻ ﺗﻌﺘﺮف ﺑﺎﻟﺠﻤﻴﻞ واﻟﻌﺮﻓﺎن ﻟﻤﻦ ﺟﻌﻠﻪ اﷲ ﺳﺒﺒًﺎ ﻓﻲ ﺗﻌﻠﻤﻚ‪.‬‬ ‫‪-‬‬
‫إن ﻣﻦ اﻟﻜﺒﺮ أن ﻻ ﺗﺮي ﻣﻦ اﻟﻔﻬﻢ إﻻ أﻧﺖ‪.‬‬ ‫‪-‬‬
‫إن ﻣﻦ اﻟﻜﺒﺮ أن ﺗﻐﻠﻖ ﻋﻠﻰ آﻞ ﻃﺎﻟﺐ ﻋﺎﻟﻢ ﻳﺮﻳﺪ أن ﻳﺘﻌﻠﻢ ﺑﺎﺑﻚ‪.‬‬ ‫‪-‬‬
‫إن ﻣﻦ اﻟﻜﺒﺮ اﻟﺘﻠﺬذ ﺑﺈذﻻل اﻟﻐﻴﺮ ﻓﻲ ﻣﺤﺎوﻟﺘﻪ ﻟﻠﺘﻌﻠﻢ‪.‬‬ ‫‪-‬‬

‫وﻟﻴﺤﺎول آﻞ ﻣﻨﺎ أن ﻳﻌﺎﻟﺞ هﺬا اﻟﺪاء ﻓﻲ ﻧﻔﺴﻪ وﻓﻲ اﻵﺧﺮﻳﻦ ﻓﺈﻧﻪ ﻳﺒﺪأ ﻓﻲ اﻟﻨﻔﺲ ﺻﻐﻴﺮًا ﺛﻢ ﻳﻜﺒﺮ إن ﻟﻢ ﻳﺘﺪارك ﺣﺘﻰ ﻳﺼﻌﺐ ﻋﻼﺟﻪ‪.‬‬

‫ﻣﻦ أهﻢ وﺳﺎﺋﻞ ﻋﻼج ذﻟﻚ ﺗﺬآﻴﺮ اﻟﻨﻔﺲ اﻟﺪاﺋﻢ ﺑﺄﺻﻞ ﺧﻠﻘﺘﻬﺎ وﻣﺎهﻴﺘﻬﺎ‪.‬‬

‫وأﺣﻴﺎﻧًﺎ ﻗﺪ ﻳﻠﻢ ﺑﺎﻟﻤﺮء ﻟﻤﺔ ﻣﻦ آﺒﺮ ﻓﺈن ﺻﺮﻓﻬﺎ ﻓﺈﻧﻬﺎ ﻻ ﺗﻀﺮﻩ ﺑﺈذن اﷲ وﻣﻦ ذﻟﻚ ﻣﺎ روي أن ﺣﺬﻳﻔﺔ ﺑﻦ اﻟﻴﻤﺎن رﺿﻲ اﷲ ﻋﻨﻪ أم اﻟﻨﺎس ﻓﻲ‬
‫ﺴﻦّ إﻣﺎﻣًﺎ ﻏﻴﺮي‪،‬أو ﻟَُﺘﺼَﻠﱡﻦﱠ وُﺣﺪاﻧﺎً‪،‬ﻓﺈﻧﻲ رأﻳﺖ ﻓﻲ ﻧﻔﺴﻲ أﻧﻪ ﻟﻴﺲ ﻓﻲ اﻟﻘﻮم أﻓﻀﻞ ﻣﻨﻲ‪ ،‬ﻓﻬﻜﺬا اﻟﻨﻔﻮس اﻟﻤﺴﺘﻀﻴﺌﺔ ﺑﻨﻮر‬
‫ﺻﻼة ﻓﻠﻤﺎ ﺳﻠﻢ ﻗﺎل ﻟﺘﻠْﺘ ِﻤ ُ‬
‫اﻹﻳﻤﺎن ﺗﺘﺪارك أي ﻏﻤﺰة ﻣﻦ ﻏﻤﺰات اﻟﺸﻴﻄﺎن‪.‬‬

‫أرﺟﻮ أن ﻧﻜﻮن اﺳﺘﻔﺪﻧﺎ ﻣﻦ هﺬﻩ اﻟﻤﻘﺎﻟﺔ وأن ﻳﻠﻬﻤﻨﺎ اﷲ ﺳﺒﺤﺎﻧﻪ اﻟﻔﻬﻢ ﻟﻤﺮادهﺎ‬
‫وﻓﺤﻮاهﺎ وأن ﻳﻌﺬﻧﺎ اﷲ وإﻳﺎآﻢ ﻣﻦ اﻟﻜﺒﺮ وأهﻠﻪ وأن ﻳﺤﺮم ﻋﻠﻴﻨﺎ اﻟﻨﺎر وﻳﺮزﻗﻨﺎ اﻟﻔﺮدوس‪.‬‬

‫وﺁﺧﺮ دﻋﻮاﻧﺎ أن اﻟﺤﻤﺪ ﷲ رب اﻟﻌﺎﻟﻤﻴﻦ‬

‫‪BADRMEDIA‬‬

‫‪24‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫‪  ‬‬

‫ﺗﻄﻮﻳﺮ ﺗﻄﺒﻴﻖ ﻣﺘﻌﺪد اﻟﻄﺒﻘﺎت ‪N-Tier‬‬


‫اﻋﺘﻤﺎد ﺗﺼﺎﻣﻴﻢ ﻣﺸﺎرﻳﻌﻚ اﻟﻘﺎدﻣﺔ ﻋﻠﻰ اﻟﺘﺼﻤﻴﻢ ﻣﺘﻌﺪد اﻟﻄﺒﻘﺎت ‪ N-Tier Application Design‬ﻳﺼﺒﺢ ﻣﻄﻠﺐ إﻟﺰاﻣﻲ‬
‫ﻛﻠﻤﺎ زادت ﺗﻌﻘﻴﺪات وﻣﺘﻄﻠﺒﺎت وﻇﺎﺋﻒ اﻟﻤﺸﺮوع‪ .‬ﻓﻲ ﻫﺬا اﻟﻤﻘﺎل أﺣﺎول ﺗﻘﺪﻳﻢ ﻫﺬا اﻟﻤﻔﻬﻮم ﻟﻠﻤﺒﺘﺪﺋﻴﻦ ﻣﻊ ﺗﻄﺒﻴﻖ ﻣﺜﺎل ﻋﻤﻠﻲ‬
‫ﻣﺒﺴﻂ ﺟﺪا ﻋﻠﻴﻪ‪.‬‬

‫ﺷﻄﻴﺮة اﻟﻠﺤﻢ اﻟﺒﻘﺮي )"اﻟﻬﺎﻣﺒﺮﺟﺮ‪ "Hamburger‬أو ﻛﻤﺎ ﻳﻨﻄﻖ اﺳﻤﻬﺎ اﻟﻜﺜﻴﺮ ﻣﻦ اﻟﻌﺮب ﻫﺎﻣﺒﺮﺟﻞ( ﺗﻌﺘﺒﺮ –ﻓﻲ رأي اﻟﺸﺨﺼﻲ‪-‬‬
‫اﺑﺮز رﻣﺰ ﺻﺎرخ ﻟﻠﻌﻮﻟﻤﺔ ‪ Globalization‬اﻟﺘﻲ ﺗﻮاﺟﻬﻬﺎ اﻟﻤﺠﺘﻤﻌﺎت اﻟﻤﺪﻧﻴﺔ‪ ،‬ﻓﻮﺟﻮده أﺻﺒﺢ ﻓﻲ ﻛﻞ ﻣﻜﺎن وزﻣﺎن )ﻓﻲ اﻹﻓﻄﺎر‪،‬‬
‫اﻟﻐﺪاء‪ ،‬اﻟﻌﺸﺎء‪ ،‬وأي وﺟﺒﺎت ﺟﺎﻧﺒﻴﺔ أﺧﺮى(‪ ،‬ﻟﺪرﺟﺔ أﻧﺎ ﻻ ﻧﻌﻠﻢ ﻣﻦ ﻫﻢ أﻛﺜﺮ ﺷﻌﻮب اﻷرض اﺳﺘﻬﻼﻛﺎ ﻟﻪ‪ ،‬ﻫﻞ ﻫﻢ اﻟﺸﺮق أم اﻟﻐﺮب؟!‬
‫وﻟﻜﻦ )وﺑﻐﺾ اﻟﻨﻈﺮ ﻋﻦ ﻛﺎﻓﺔ اﻻﻋﺘﺒﺎرات اﻟﻌﺮﻓﻴﺔ اﻷﺧﺮى( أرى ﻓﻴﻪ ﻣﺜﺎل ﺗﺠﺴﻴﺪي راﺋﻊ ﻟﻤﺒﺪأ اﻟﻄﺒﻘﺎت ‪ Tiers‬وﻛﻴﻒ ﻳﻤﻜﻦ أن‬
‫ﺗﺰﻳﺪ ﻣﻦ إﻧﺘﺎﺟﻴﺔ ﺑﻨﺎء وﺟﺒﺎت اﻟﻬﺎﻣﺒﺮﺟﺮ وﻛﺎﻓﺔ اﻟﺴﺎﻧﺪوﻳﺘﺸﺎت اﻟﺘﻲ ﺗﺘﺨﺬ ﻣﻨﺤﻨﺎه‪.‬‬

‫ﻓﻲ اﻟﺼﻮرة اﻟﻤﻐﺮﻳﺔ اﻟﺴﺎﺑﻘﺔ‪ ،‬ﺗﺒﺪأ اﻟﻄﺒﻘﺔ اﻟﻌﻠﻮﻳﺔ ‪ Upper Tie‬ﺑﻘﻄﻌﺔ ﻣﻦ اﻟﺨﺒﺰ اﻟﺘﻲ ﺗﻤﺜﻞ اﻟﻮاﺟﻬﺔ اﻟﻌﻠﻮﻳﺔ واﻟﻤﻐﻠﻔﺔ‬
‫ﻟﻠﺴﺎﻧﺪوﻳﺘﺶ وﻫﻲ ﻧﻔﺲ اﻟﻄﺒﻘﺔ اﻟﺴﻔﻠﻴﺔ‪ ،‬وﻣﻦ ﺛﻢ ﻃﺒﻘﺔ ﺗﺤﺘﻮي ﻋﻠﻰ ﺗﺸﻜﻴﻠﺔ ﻣﺘﻨﻮﻋﺔ ﻣﻦ اﻟﺨﻀﺮوات‪، Vegetable Tier‬‬
‫وﺑﻌﺪﻫﺎ اﻟﻄﺒﻘﺔ اﻟﺮﺋﻴﺴﻴﺔ )ﻃﺒﻘﺔ ﺷﺮﻳﺤﺔ اﻟﻠﺤﻢ ) ‪ (Meat Tier‬وﻫﻲ أﻫﻢ ﻣﺎ ﻓﻲ اﻟﻮﺟﻮد )اﻟﻤﺤﺮك اﻷﺳﺎﺳﻲ ﻟﻠﻨﻈﺎم ‪Core‬‬
‫‪ (Engine‬واﻟﺘﻲ ﻗﺎل ﻓﻴﻬﺎ أﺣﺪ اﻟﺸﻌﺮاء‪:‬‬

‫أﻣﺮ ﻋﻠﻰ اﻟﺪﻳﺎر دﻳﺎر ﻟﺤﻢ ‪...‬‬

‫أﻗﻠﺐ ذا اﻟﻐﻄـﺎء وذا اﻟﻐﻄـﺎء‬

‫وﻣﺎ ﺣﺐ اﻟﻘﺪور ﺷﻐﻔﻦ ﻗﻠﺒﻲ ‪...‬‬

‫وﻟﻜﻦ ﺣﺐ ﻣﻦ ﺳﻜﻦ اﻟﻮﻋﺎء‬

‫ﺗـﺮﻛــﻲ اﻟـﻌــﺴـﻴـﺮي‬

‫ﻣﻮاﺿﻴﻊ ﻣﻨﻮﻋﺔ ﺗﺨﺘﺺ ﺑﻌﺎﻟﻢ ﺗﺤﻠﻴﻞ و ﺗﺼﻤﻴﻢ اﻟﻨﻈﻢ‬


‫إﻋﺪاد وﻟﻴﺪ ﺑﻮاﻟﻄﻤـﻴـﻦ‬
‫‪ ‬‬

‫ﺗﻄﺒﻴﻖ ﻣﺘﻌﺪد ااﻟﻄﺒﻘﺎت ‪N-Tier‬‬


‫ﻖ‬ ‫ﺗﻄﻮﻳﻳﺮ‬
‫ﺴـﻴـﺮي‬
‫ﺗـﺗـﺮﻛــﻲ اﻟـﻌــﺴ‬ ‫‪  ‬‬
‫ﻛﻴﻒ ﻳﻳﻤﻜﻦ أن ﺗﻔﻴﻴﺪﻧﺎ ﻃﺒﻘﺎت اﻟﻬﺎﻣﺒﺮﺟﺮ‬
‫)إن ﻟﻟﻢ ﺗﻜﻦ ﻣﺴﺘﺤﻴﻠﻠﺔ(‪ ،‬ﺑﻞ ﺳﻨﺤﺘﺎﺎج إﻟﻰ إﻋﺎدة اﻟﺒﻨﺎء ﻣﻦ ﺟﺪﻳﻳﺪ ﻋﻨﺪ‬
‫ﻼت اﻟﺠﻮهﺮﻳﺔﺔ‪ ،‬وآﻞ اﻟﻤﺰاﻳﻳﺎ اﻟﺘﻲ ﻋﺮﺿﻨﻨﺎهﺎ ﺑﺎﻟﻔﻘﺮات اﻟﺴﺎﺑﻘﺔ‬ ‫اﻟﺘﻌﺪﻳﻼ‬ ‫ﺣﺼﺮ‬ ‫ﺑﻨﺎء اﻟﻬﺎﻣﺒﺮﺟﺮ ﺑﻬﻬﺬا اﻟﺸﻜﻞ ﻟﻬﺎ ﻓﻓﻮاﺋﺪ ﺟﻤﺔ ﻻ ﺣ‬
‫إن ﻋﻤﻠﻴﺔ ء‬
‫ﺗﻮﻓﻴﺮ اﻷﻣﻮال )ﺧﺎﺻﺔ اﻟﺘﻲ ﻣﻊ ﺗﻌﺎﻗﺪات اﻟﻤﻮﻮردﻳﻦ‬
‫ﺼﺎر اﻟﻮﻗﺖ وﺗﻮ‬ ‫واﺧﺘﺼ‬ ‫ﺨﺼﺺ ‪ Specializaation‬ﻟﻟﺰﻳﺎدة‬ ‫أول ﻓﺎﺋﺪة أراهﺎ ﻣﻣﻦ ﻣﻨﻈﻮر اﻟﺘﺨ‬
‫ﻟﻬﺎ‪ ،‬ل‬
‫ﺟﺔ إﻟﻰ‬‫ﻤﻜﻦ ﺗﻄﺒﻴﻘﻬﺎ هﻨﻨﺎ ‪-‬أي آﻞ ﺗﻐﻴﻴﻴﺮ ﺑﺴﻴﻂ ﺑﺤﺎﺟ‬
‫‪ (Venddors‬ﻻ ﻳﻤﻜ‬ ‫اﻟﺘﻌﺎﻣﻞ ﻣﻊ‬
‫ﻞ‬ ‫ﺴﻨﻴﻦ ﻓﻲ‬
‫ﺒﺮة ﻋﺸﺮات اﻟﺴ‬
‫اﻟﺠﻮدة‪ ، Qualityy‬ﻓﻬﻨﺎﺎك ﺧﺒﺎز ﻟﻪ ﺧﺒﺮ‬
‫ﺗﻌﺪﻳﻞ ﺟﺪﻳﺪ ﻟﻠﻤﻨﺘﺞ‪.‬‬
‫ﻞ‬ ‫ﺼﻨﺎﻋﺔ اﻟﺨﺒﺰ‪ ،‬وﻳﻤﻜﻨﻨﺎ أن ﻧﻌﺘﺘﻤﺪ ﻋﻠﻴﻪ ﻓﻲ ﺑﻨﺎء ﺧﺒﺰ وﺟﺒﺘﻨﺎ‪ ،‬وﻣﻦ‬‫اﻟﺪﻗﻴﻖ ﻟﺼ‬
‫ﻧﺎﺣﻴﺔ اﻟﻟﺨﻀﺮوات‪ ،‬ﻓﻘﻘﺪ ﻧﻌﺘﻤﺪ ﻋﻠﻰ أﺣﺪ اﻟﻤﺮاآﺰ اﻟﺘﻲ ﺗﻌﺮض أﻧﻘﻰ‬
‫ﺑﻌﻴﺪا ﻋﻦ اﻟﻬﺎﻣﺒﺮﺟﺟﺮ‬
‫ا‬ ‫اﻟﺤﺎل ﻣﻊ ﻃﺒﻘﺔ اﻟﻠﺤﻢ‪،‬‬
‫ل‬ ‫ﺟﺔ‪ ،‬آﺬﻟﻚ‬ ‫وأﻓﻀﻞ أﻧﻮاع اﻟﺨﻀﺮﺮاوات اﻟﻄﺎزﺟ‬
‫ﻃﺎزﺟﺔ ذﺑﺤﺖ ﻟﻠﺘﻮ‪ ،‬ووﺑﺬﻟﻚ‬
‫ﺔ‬ ‫ﻄﺒﺦ ﻳﺄﺗﻲ ﻳﻮﻣﻴﺎﺎ ﺑﻠﺤﻮم‬
‫أن ﻧﺘﻌﺎﻣﻞ ﻣﻊ ﻣﻄ‬‫ﻳﻤﻜﻨﻨﺎ ن‬
‫ﻳﻘﺎل أﻧﻪ ﺗﻮﻮﺟﺪ ﻋﻼﻗﺔ ﻋﻜﻜﺴﻴﺔ ﺑﻴﻦ ﻋﻤﻞ اﻟﻌﻘﻞ وﻋﻤﻞ ﻟﻤﻌﺪة‪،‬‬ ‫ﺷﺨﺺ‬ ‫ﺗﺨﺼﺺ آﻞ ﺷﺨ‬ ‫ﺧﺮاﻓﻲ ﺑﺴﺒﺐ ﺗﺨ‬ ‫ﺠﻮدة ‪ Quality‬ﻟﻠﻤﻨﺘﺞ ﺑﺸﻜﻞ ﺧ‬ ‫ﺗﺰﻳﺪ اﻟﺠ‬
‫ﻼك آﻞ‬ ‫ﺑﺤﺎﺟﺔ ﻣﺎﺳﺔ ﻻﺳﺘﻬﻼ‬
‫ﻓﻌﻨﺪﻣﺎ ﺗﻌﻤﻞ اﻟﻤﻌﺪة ﻳﻳﺘﻌﻄﻞ اﻟﻌﻘﻞ‪ ،‬ووﺑﻤﺎ أﻧﻲ ﺟﺔ‬
‫ﺎ‬ ‫ﺳﺒﺔ‪ ،‬وﻳﺒﻘﻰ ﻋﻠﻴﻴﻨﺎ ﺗﺠﻤﻴﻊ اﻟﻄﺒﺒﻘﺎت وﻣﻦ ﺛﻢ ﺑﻴﻌﻬﺎ‬ ‫ﻓﻲ ﺑﻨﺎء اﻟﻄﺒﻘﺔ اﻟﻤﻨﺎﺳ‬
‫ﻋﺮوض اﻟﻬﺎﻣﺒﺮﺟﺮ ووأﺣﺎول‬
‫ض‬ ‫ﻃﺎﻗﺔ ﻋﻘﻠﻚ اﻹﻧﺘﺎﺟﻴﺔﺔ‪ ،‬ﻓﺴﺄﺗﻮﻗﻒ ههﻨﺎ ﻋﻦ‬ ‫ﺼﺪ اﻟﺰﺑﻮن(‪.‬‬
‫ﻟﻠﻤﺴﺘﺨﺪم اﻟﻨﻬﺎﺋﻲ )أﻗﺼ‬
‫م‬
‫‪N-T‬‬‫ﻄﺒﻘﺎت ‪Tier Applicaations‬‬ ‫اﻟﺘﻄﺒﻴﻘﺎت اﻟﻤﺘﻌﺪدة اﻟﻄ‬
‫ت‬ ‫ﻋﺮف‬ ‫أن أﻋ‬
‫ﺳﻠﻮب ﻟﺘﺼﻤﻴﻢ ﻣﻣﻌﻤﺎري ‪Archhitecture Deesign‬‬ ‫واﻟﺘﻲ ﻟﻴﺴﺖ ﺳﻮى أﺳ‬ ‫‪ Construction‬وأرﻳﺪ أن أﺗﺗﺤﺪث‬
‫‪C‬‬ ‫آﺎن هﺬا ﻣﻦ ﻧﺎﺣﻴﺔ اﻟﺒﻨﺎء ‪n‬‬
‫ﺑﺄداء ﻣﻬﻤﺔ‬ ‫ﻃﺒﻘﺎت ﻣﺴﺘﻘﻠﺔ‪ ،‬م‬
‫ﺗﻘﻮم آﻞ ﻃﺒﻘﺔ ء‬ ‫ت‬ ‫ﻄﺒﻴﻖ إﻟﻰ‬
‫ﻳﻬﺪف إﻟﻰ ﺗﻘﺴﻴﻢ اﻟﺘﻄ‬
‫ف‬ ‫ﻄﻮﻳﺮ‬
‫‪ Debug‬أو اﻟﺘﺘﻌﺪﻳﻞ‪ ،‬ﻓﻌﻨﺪﻣﺎ ﻧﺮﻳﺪ )ﻣﺜﻼ( ﺗﻄ‬ ‫هﻨﺎ ﻋﻦ اﻟﺘﻨﻘﻴﺢ ‪gging‬‬
‫اﻟﻄﺒﻘﺎت ﻳﻤﻜﻦ‬
‫ت‬ ‫ووﻇﻴﻴﻔﺔ ))ﻣﺤﺪدة(( و ))واﺿﺤﺔ((‪ .‬ﻣﻊ اﻟﺘﻨﻮﻳﻪ ﺑﺄﺄن هﺬﻩ‬ ‫ﺨﺎص‬ ‫‪ (Light Edition‬ﻷﺷﺨ‬
‫‪E‬‬ ‫ﺧﺮى ﻣﻦ اﻟﻬﺎﻣﺒﺒﺮﺟﺮ )ﻧﺴﺨﺔ ﺧ‬
‫ﺧﻔﻴﻔﺔ‬ ‫ﻧﺴﺨﺔ أﺧ‬
‫ﺨﺘﻠﻔﺔ –‬
‫ﻌﻤﻞ ﻓﻲ ﻧﻔﺲ ﻣﻨﻨﺼﺔ اﻟﻌﻤﻞ ‪ Platforrm‬أو ﻣﻨﻨﺼﺎت ﻋﻤﻞ ﻣﺨ‬ ‫أن ﺗﻌﻤ‬ ‫ﻃﺒﻘﺔ اﻟﺨﺒﺰ ‪Breead‬‬
‫ﺳﻨﻔﻌﻠﻪ ﺗﻐﻴﻴﺮ ﻃ‬
‫ﺧﺎﺻﺔ‪ ،‬ﻓﻜﻞ ﻣﺎ ﺳ‬ ‫ﺣﻤﻴﺔ ﻏﺬاﺋﻴﺔ ﺧ‬‫ﻳﺘﺒﻌﻮن ﺣ‬
‫أي ﻳﻤﻤﻜﻦ أن ﺗﻌﻤﻞ هﺬﻩ اﻟﻄﺒﻘﺎت اﻟﻟﻤﺨﺘﻠﻔﺔ ﻓﻲ ﺟﻬﻬﺎز ﺷﺨﺼﻲ وواﺣﺪ أو‬ ‫‪ ، (Brow‬دون ﺗﺗﺤﻤﻞ‬‫ﻤﺮ ‪wn Bread‬‬ ‫ﺧﺒﺰ ﺑﺮ )ﺧﺒﺰ أﺳﻤﺮ‬
‫‪ Tier‬ﻟﺘﺘﻌﺘﻤﺪ ﻋﻠﻰ ﺰ‬
‫ﻈﺮي ‪Concceptual‬‬ ‫ﺧﺎدم )‪ (Server‬ﻓﻬﻮ ﺗﺼﻤﻴﻢ ﻧﻈ‬ ‫ﻋﺸﺮﻳﻳﻦ أﻟﻒ ﺟﻬﺎز ﺧ‬ ‫هﻮ ذﻟﻚ اﻟﺸﺨﺺ اﻟﺬي‬‫اﻟﻄﺒﻘﺎت اﻷﺧﺮى )وﻻ أﻋﻠﻢ ﻣﻦ ﻮ‬
‫ت‬ ‫ﺗﻜﻠﻔﺔ ﻟﺘﻌﺪﻳﻞ‬
‫أي ﺔ‬
‫وﻟﻴﺲ ﻓﻴﺰﻳﺎﺋﻲ ‪. Physsical‬‬ ‫ﻳﺘﺒﻊ ﺣﻤﻴﻴﺔ ﻏﺬاﺋﻴﺔ وﻳﺴﺘﻤﻤﺮ ﻋﻠﻰ أآﻞ اﻟﻬﻬﺎﻣﺒﺮﺟﺮ!(‪.‬‬

‫ﻣﺰاﻳﺎ‪/‬ﻋﻴﻮب اﻟﺘﺼﻤﻤﻴﻢ ﻣﺘﻌﺪد اﻟﻟﻄﺒﻘﺎت‬ ‫ﻧﻔﻜﺮ ﻓﻲ اﻟﺘﺪوﻳﻞ ‪ Internationnalization‬وأﺧﺬ‬ ‫ﺮ‬ ‫وﻋﻨﺪﻣﺎ‬


‫‪ L‬ﺑﻌﻴﻦ اﻻﻋﺘﺒﺎر‪ ،‬ﻓﺎﻟﻤﺴﺄﻟﺔ ﻟﻦ ﺗﺘﺗﺘﻌﺪى‬‫‪Localization‬‬ ‫اﻹﻋﺪادات اﻹﻗﻠﻴﻤﻴﺔ ‪ns‬‬
‫ت‬
‫زﻳﻮت ﻣﻦ‬
‫ﺨﻨﺰﻳﺮ أو ت‬ ‫‪ ، Meat‬ﻓﺎﻟﻴﻬﻮد ﻻ ﻳﻳﺄآﻠﻮن ﻟﺤﻮم اﻟﺨ‬
‫ﺤﻢ‪M Tier‬‬ ‫ﻃﺒﻘﺔ اﻟﻠﺤ‬
‫ﺳﺄﺣﺎول‬
‫ﻣﺜﻞ هﺬﻩ اﻟﻔﻘﺮة ﻳﺼﻌﺐ ﺟﺪا اﻟﺘﻌﻤﻴﻢ ﻣﻣﻌﻬﺎ‪ ،‬وﻟﻜﻦ ﺳ‬
‫ﻃﺮﻳﻘﺔ ذﺑﺢ‬
‫ﺔ‬ ‫ن أﻳﻀﺎ‪ ،‬ﻓﻼﺑﺪ أأن ﺗﻜﻮن‬‫ﻋﻠﻰ ذﻟﻚ اﻟﻤﺴﻠﻤﻮن‬‫ﻣﺸﺘﻘﺎﺗﻪ‪ ،‬وﻳﺰﻳﺪهﻢ ﻰ‬
‫‪،‬‬
‫ﺼﺮ‪:‬‬ ‫ﻋﺮض اﺑﺮز اﻟﻤﺰاﻳﺎ واﻟﻌﻴﻮب ﻞ‬
‫ﺑﺸﻜﻞ ﻣﺒﺴﻂ وﻣﺨﺘﺼ‬ ‫ض‬
‫ﻜﻮن ﻟﺤﻢ ﺑﻘﺮي )ﻓﻬﻮ‬ ‫ﻼل ‪ ،Halal‬ووﻋﻨﺪ اﻟﻬﻨﺪوس ﻓﻓﻼ ﻳﻤﻜﻦ أن ﻳﻜﻮ‬ ‫اﻟﻠﺤﻢ ﺣﻼ‬
‫ﻣﺤﺮم أآآﻠﻬﺎ ﺑﻌﻘﻴﺪﺗﻬﻢ(‪ ،‬آﻞ ﻣﺎ ﻧﺤﺘﺎﺟﻪﻪ ﺗﻌﺪﻳﻞ ﻓﻲ ﻃﺒﻘﻘﺔ اﻟﻠﺤﻢ ﻓﻘﻂ‪ ،‬ووﺗﺒﻘﻰ‬
‫اﻟﻤﺰاﻳﺎ‪:‬‬ ‫اﻷﺧﺮى آﻤﺎ‬
‫ى‬ ‫ﻠﻄﺒﻘﺎت‬
‫‪) Ven‬اﻟﺬﻳﻦ ﻧﺘﺘﻌﺎﻣﻞ ﻣﻌﻬﻢ( ﻟﻠﻄ‬ ‫ﻋﻘﻮد اﻟﻤﻤﻮردﻳﻦ ‪ndors‬‬
‫دون ﻣﺸﺎآﻞ‪.‬‬
‫هﻲ ن‬
‫ﺗﺠﻌﻞ اﻟﺒﺮﻧﻧﺎﻣﺞ أآﺜﺮ ﺗﻨﻈﻴﻴﻤﺎ وﺗﺨﻔﺾ ﺗﻜﻜﻠﻔﺔ ﺗﻌﻘﻴﺪات اﻟﻟﺒﺮاﻣﺞ‬ ‫‪-‬‬
‫ﺑﻨﺎﺋﻬﺎ وﺗﻘﻞ‬
‫ﺎ‬ ‫ﺗﺴﻬﻞ ﻋﻤﻠﻴﺔ‬
‫ﻞ‬ ‫‪Software Compplexity‬ﻣﻤﺎ‬ ‫ﻇﻬﻮر‬‫ج‪ ،‬وهﻲ ﻋﻨﺪ ﻇ‬ ‫ﻣﻴﺰة أﺧﺮى ﻗﻗﺪ ﻧﺤﺘﺎﺟﻬﺎ ﺑﻌﺪ ﻓﺘﺮة ﻣﻦ اﻹﻧﺘﺎج‬
‫ﺸﺮوع‪.‬‬‫ﻣﺨﺎﻃﺮ ‪ Riskks‬ﻓﺸﻞ اﻟﻤﺸ‬ ‫اﻟﻤﺸﻜﻠﺔ ﻓﻲ‬
‫ﻠﺔ‬ ‫ﻄﺎء ﻓﻲ هﺬا اﻟﻟﻤﻨﺘﺞ‪ ،‬ﻓﻴﻤﻜﻦ إإﺻﻼح‬‫ﺷﻮاﺋﺐ ‪ Bugs‬أو أﺧﻄ‬
‫ﻳﻤﻜﻨﻚ ﺗﻌﺪﺪﻳﻞ أي ﻃﺒﻘﺔ ووﺗﺼﺤﻴﺢ ﻣﺸﺎآآﻠﻬﺎ أو ﺗﻄﻮﻳﺮههﺎ دون‬ ‫‪-‬‬ ‫اﻟﻄﺒﻘﺔ اﻟﻟﺘﻲ ﻳﻨﺘﻤﻲ ﻟﻬﺎ )))ﻓﻘﻂ(( دون أن ﺗﺘﺄﺛﺮ ودون أأن ﻧﺤﺘﺎج إﻟﻰ ﺗﺗﻌﺪﻳﻞ‬
‫ﺗﻐﻴﻴﺮ أو ﺗﻌﻌﺪﻳﻞ اﻟﻄﺒﻘﺎت اﻷﺧﺮى‪.‬‬ ‫اﻟﻄﺒﻘﺎت اﻷﺧﺮى ‪.‬‬
‫ﻣﺠﻬﻮد‪.‬‬
‫د‬ ‫إﺿﺎﻓﺔ ﻃﺒﻘﺎت ﺟﺪﻳﻳﺪة دون‬ ‫ﻳﻤﻜﻨﻚ ﺿ‬ ‫‪-‬‬
‫أآﺜﺮ أﻣﺎﻧﺎ‬
‫اﻟﺘﻄﺒﻴﻘﺎت اﻟﻤﻌﺪة ﺑﻬﺬا اﻟﺘﺼﻤﻴﻢ داﺋﻤﺎ ﻣﺎ ﺗﻜﻮن ﺮ‬ ‫‪-‬‬ ‫ﻣﺎذا ﻟﻮ ؟!‬
‫)ﻓﺎﻟﺜﻐﺮات اﻷﻣﻨﻴﺔ ﺑﻬﺎ ﻗﻠﻴﻠﻠﺔ ﺟﺪا(‪.‬‬
‫ﺳﺘﺨﺪام ‪ ،Coode Reusabbility‬ﻳﻤﻜﻨﻚ ﺗﺼﻤﻴﻢ‬ ‫إﻋﺎدة اﻻﺳ‬ ‫‪-‬‬ ‫ﺗﺘﺨﻴﻞ اﻟﻬﺎﻣﺒﺮﺟﺮ دوون ﻃﺒﻘﺎت آﻤﺎ ﻓﻓﻲ هﺬﻩ اﻟﺼﻮرة‪:‬‬
‫ﻞ‬ ‫أرﻳﺪك ﻟﻠﻠﺤﻈﺔ أن‬
‫ﺣﺘﻰ ﺗﺘﻤﻜﻦ ﻣﻦ إﻋﺎدة اﺳﺘﺨﺪاﻣﻣﻬﺎ ﻓﻲ‬ ‫ﻄﺮق اﺣﺘﺮاﻓﻴﺔ ﺣ‬ ‫ﻃﺒﻘﺎﺗﻚ ﺑﻄ‬
‫ﺧﺮى‪.‬‬‫ﻣﺸﺎرﻳﻊ أﺧ‬
‫ﻣﻨﺎﺳﺒﺔ ﺟﺪﺪا ﻟﻠﻌﻤﻞ اﻟﺠﻤﺎﺎﻋﻲ وﻓﺮق اﻟﺘﺘﻄﻮﻳﺮ‪ ،‬ﺣﻴﺚ ﺗﻮﺿﺢ‬ ‫‪-‬‬
‫ﺿﻮح‪.‬‬‫ﻋﻀﻮ ﺑﺪﻗﺔ ووﺿ‬ ‫ﻣﻬﺎم آﻞ ﻋ‬

‫اﻟﻌﻴﻮب‪:‬‬

‫ﺸﻔﺮات‪.‬‬
‫ﺗﺘﻄﻠﺐ آﺘﺎﺑﺑﺔ اﻟﻜﺜﻴﺮ ﻣﻦ اﻟﺸ‬ ‫‪-‬‬
‫ﺻﺔ إن‬
‫أﻣﺮ إﻟﺰاﻣﻲ ﺧﺎﺻ‬
‫اﻟﺘﻮﺛﻴﻖ ‪ Doocumentatioon‬ﻳﺼﺒﺢ ﻣﺮ‬ ‫‪-‬‬
‫آﺒﺮ ﺣﺠﻢ ووآﺜﺮ ﻋﺪد اﻟﻄﺒﻘﻘﺎت‪.‬‬
‫ﺼﺎﻻت ﺑﻴﻦ اﻟﻟﻄﺒﻘﺎت‬‫ﻟﻰ ﻣﺠﻬﻮد ﻟﻀﻤﻤﺎن ﻧﺠﺎح اﻻﺗﺼ‬ ‫ﺑﺤﺎﺟﺔ إ ﻰ‬ ‫‪-‬‬
‫اﻟﻤﺨﺘﻠﻔﺔ‪.‬‬
‫ﻓﻲ آﺘﺎﺑﺔ ﺑﻌﺾ اﻟﺸﻔﺮات )ﺧﺎﺻ‬
‫ﺻﺔ ﺷﻔﺮات اﻟﻘﻘﻮاﻧﻴﻦ‬ ‫اﻟﺘﻜﺮار ﻲ‬ ‫‪-‬‬
‫‪ (Rules‬ﻓﻲ أآﺜﺮ ﻣﻦ ﻃﺒﻘﻘﺔ‪.‬‬ ‫ﻓﻬﻨﺎ أي ﺗﻌﺪﻳﻳﻞ أو ﺗﻄﻮﻳﺮ أو ﺻﻴﺎﻧﺔ ﺳﺘﺘﺴﺘﻬﻠﻚ ﺟﻬﺪ وووﻗﺖ‬

‫‪26‬‬
‫ﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬
‫اﻟﻟﻌﺪد ‪ 01‬ﻟﺸﻬ‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫‪ ‬‬

‫ﺗﻄﻮﻳﺮ ﺗﻄﺒﻴﻖ ﻣﺘﻌﺪد اﻟﻄﺒﻘﺎت ‪N-Tier‬‬


‫ﺗـﺮﻛــﻲ اﻟـﻌــﺴـﻴـﺮي‬ ‫‪  ‬‬
‫اﻟﺘﺼﻤﻴﻢ ﺛﻼﺛﻲ اﻟﻄﺒﻘﺎت‬

‫ﻗﻠﻨﺎ أن اﻟﺘﺼﻤﻴﻢ ﻣﺘﻌﺪد اﻟﻄﺒﻘﺎت ﻳﻘﺴﻢ اﻟﺘﻄﺒﻴﻘﺎت إﻟﻰ ﻃﺒﻘﺎت‬


‫ﻣﺴﺘﻘﻠﺔ‪ ،‬وإن ﺳﺄﻟﺘﻨﻲ )أو ﻟﻢ ﺗﺴﺄﻟﻨﻲ( آﻢ اﻟﻌﺪد اﻟﺼﺤﻴﺢ ﻟﻬﺬﻩ اﻟﻄﺒﻘﺎت؟‬
‫ﻓﺎﻹﺟﺎﺑﺔ ﺗﺒﺪأ ﻣﻦ ‪ 2‬إﻟﻰ أﻗﺼﻰ ﻋﺪد ﻳﻤﻜﻦ أن ﺗﺘﺤﻤﻠﻪ أﻧﺎﻣﻠﻚ‪ ،‬وﻟﻜﻦ‬
‫اﻟﺘﺼﻤﻴﻢ ﺛﻼﺛﻲ اﻟﻄﺒﻘﺎت ‪ Tier Design 3‬ﻳﻌﺘﺒﺮ اﻷﺷﻬﺮ واﻷآﺜﺮ‬
‫إﺗﺒﺎﻋﺎ‪:‬‬

‫إن ﺿﺮﺑﺖ ﺑﺘﺤﺬﻳﺮي ﻋﺮض اﻟﺤﺎﺋﻂ‪ ،‬ﻓﺎﻋﻠﻢ أﻧﻚ ﺗﺨﻠﻂ اﻟﺤﺎﺑﻞ ﺑﺎﻟﻨﺎﺑﻞ‪،‬‬
‫وﺗﺴﻤﺢ ﻟﻄﺒﻘﺎﺗﻚ ﺑﺘﻜﻮﻳﻦ ﻋﻼﻗﺎت ﻏﻴﺮ ﺷﺮﻋﻴﺔ ﺳﺘﺆدي إﻟﻰ آﻮارث ﻓﻲ‬
‫ﺗﺼﻤﻴﻤﻚ اﻟﺜﻼﺛﻲ اﻟﻄﺒﻘﺎت‪ ،‬واﻟﺘﻲ ﻗﺪ ﺗﻜﻮن ﻣﺼﻴﺒﺘﻬﺎ أآﺒﺮ ﻣﻦ ﺷﻮاﺋﺐ‬
‫‪ Bugs‬ﻗﺪ ﺗﺆدي إﻟﻰ ﺛﻐﺮات أﻣﻨﻴﺔ ‪. Security Hacks‬‬

‫أﺧﻴﺮا‪ ،‬اﻟﻄﺒﻘﺎت هﺬﻩ ﻓﻲ ﺗﻄﻮر ﻣﺴﺘﻤﺮ وﻳﻤﻜﻨﻚ إﺿﺎﻓﺔ ﻃﺒﻘﺎت أﺧﺮى‬


‫ﻣﺘﻰ ﻣﺎ دﻋﺖ اﻟﺤﺎﺟﺔ إﻟﻰ ذﻟﻚ‪ ،‬ﻓﻤﻮﻗﻌﻲ اﻟﻤﺘﻮاﺿﻊ ‪al-asiri.COM‬‬
‫اﻟﺬي ﻳﻌﺘﻤﺪ اﻟﺘﺼﻤﻴﻢ ﺛﻼﺛﻲ اﻟﻄﺒﻘﺎت أﺳﺘﻄﻴﻊ أن أﺿﻴﻒ ﻋﻠﻴﻪ ﻃﺒﻘﺔ‬
‫ﺟﺪﻳﺪة ﻟﺨﺪﻣﺔ وﻳﺐ ‪ Web-Service‬أو أﺳﺘﺨﺪم ﻣﻮﻟﺪ ﺗﻘﺎرﻳﺮ ﻟﻘﺎﻋﺪة‬
‫اﻟﺒﻴﺎﻧﺎت دون اﻟﺤﺎﺟﺔ إﻟﻰ ﺗﻌﺪﻳﻞ ))ﺣﺮف واﺣﺪ(( ﻣﻦ اﻟﻄﺒﻘﺎت اﻷﺧﺮى‬ ‫آﻤﺎ ﻓﻲ اﻟﺸﻜﻞ اﻟﺴﺎﺑﻖ‪ ،‬ﻳﻘﺴﻢ اﻟﺘﺼﻤﻴﻢ ﺛﻼﺛﻲ اﻟﻄﺒﻘﺎت ﺑﺮﻧﺎﻣﺠﻚ إﻟﻰ ‪3‬‬
‫واﻟﻨﻈﺎم اﻷﺳﺎﺳﻲ ﻟﻠﻤﻮﻗﻊ ‪:‬‬ ‫ﻃﺒﻘﺎت ﻣﻨﻔﺼﻠﺔ‪:‬‬

‫‪ -‬ﻃﺒﻘﺔ اﻟﻌﺮض ‪ :View Tier‬ﺗﻤﺜﻞ ﻃﺒﻘﺔ اﻟﻌﺮض واﺟﻬﺔ‬


‫اﻻﺳﺘﺨﺪام ‪ User Interface‬اﻟﺮﺋﻴﺴﻴﺔ ﻟﻠﺒﺮﻧﺎﻣﺞ‪ ،‬واﻟﺘﻲ ﺗﻜﻮن ﺑﺎﻟﻌﺎدة إﻣﺎ‬
‫ﺗﻄﺒﻴﻖ ‪ Windows Application‬أو ﻣﻮﻗﻊ‪، Web Application‬‬
‫وهﻲ ﺗﺤﺘﻮي ﻋﻠﻰ ﺟﻤﻴﻊ اﻷﺟﺰاء اﻟﻤﺮﺋﻴﺔ اﻟﺘﻲ ﺗﺴﺘﺨﺪم ﻟﺘﻨﻔﻴﺬ اﻟﻮﻇﺎﺋﻒ‬
‫واﻷواﻣﺮ اﻟﻤﺨﺘﻠﻔﺔ ﻟﻠﺘﻄﺒﻴﻖ‪.‬‬
‫‪ -‬ﻃﺒﻘﺔ اﻷﻋﻤﺎل ‪ :Business Tier‬ﺗﻤﺜﻞ ﻃﺒﻘﺔ اﻷﻋﻤﺎل )ﺗﺴﻤﻰ‬
‫أﻳﻀﺎ ﺑﻤﻨﻄﻖ اﻷﻋﻤﺎل ‪ (Business Logic‬اﻻﻧﺠﺎز اﻟﻔﻌﻠﻲ ‪Real‬‬
‫‪Implementation‬ﻟﺠﻤﻴﻊ اﻟﻮﻇﺎﺋﻒ واﻷواﻣﺮ اﻟﺘﻲ ﻳﻘﻮم ﺑﻬﺎ اﻟﺘﻄﺒﻴﻖ‪،‬‬
‫وﻗﺪ ﺗﺸﻤﻞ أﻳﻀﺎ اﻟﻘﻮاﻋﺪ واﻟﻘﻮاﻧﻴﻦ ‪ Rules‬اﻟﺨﺎﺻﺔ ﺑﺒﺮﻧﺎﻣﺠﻚ ‪.‬اﻟﻐﺎﻟﺒﻴﺔ‬
‫اﻟﺴﺎﺣﻘﺔ ﻣﻦ هﺬﻩ اﻟﻄﺒﻘﺎت ﺗﻜﻮن ﻋﻠﻰ ﺷﻜﻞ ﻣﻜﺘﺒﺔ ﻓﺌﺎت ‪Class Library‬‬
‫ﻓﻲ ﻣﻠﻔﺎت‪. DLL‬‬
‫‪ -‬ﻃﺒﻘﺔ اﻟﺒﻴﺎﻧﺎت ‪ :Data Tier‬ﻃﺒﻘﺔ اﻟﺒﻴﺎﻧﺎت هﻲ اﻟﻄﺒﻘﺔ اﻟﻤﺴﺌﻮﻟﺔ‬
‫ﻋﻦ ﺣﻔﻆ وﺗﺨﺰﻳﻦ آﺎﻓﺔ وﺣﺪات اﻟﺘﻄﺒﻴﻖ ‪،Application Entities‬‬
‫ﻳﻤﻜﻦ ﻟﻌﻤﻠﻴﺔ اﻟﺤﻔﻆ أن ﺗﻜﻮن ﻓﻲ ﻣﻠﻔﺎت ﻋﻠﻰ اﻟﻘﺮص أو ﻓﻲ ﻣﺴﺠﻞ‬
‫اﻟﻨﻈﺎم ‪ . System Registry‬و إن زادت اﻟﺒﻴﺎﻧﺎت وأردت ﺳﺮﻋﺔ‬
‫وﻣﺮوﻧﺔ ﻓﻲ اﻟﺘﻌﺎﻣﻞ ﻣﻌﻬﺎ ﺑﻼ ﺣﺪود‪ ،‬ﻓﻠﻦ ﺗﺠﺪ أﻓﻀﻞ ﻣﻦ اﻻﻋﺘﻤﺎد ﻋﻠﻰ‬
‫ﺧﺎدم ﻗﻮاﻋﺪ ﺑﻴﺎﻧﺎت ‪DBMS Microsoft SQL Server 2005‬‬
‫ﻣﺸﺮوﻋﻨﺎ‬ ‫)اﺧﺘﻴﺎري اﻟﻤﻔﻀﻞ داﺋﻤﺎ(‪.‬‬

‫اﻟﺤﺪﻳﺚ ﻋﻦ اﻟﺘﺼﻤﻴﻢ ﻣﺘﻌﺪد اﻟﻄﺒﻘﺎت ﺣﺪﻳﺚ ذو ﺷﺠﻮن وﻗﺪ‬ ‫ﻣﻦ اﻟﻤﻬﻢ ﺟﺪا ﺟﺪا ﺟﺪا ﺟﺪا )ﻣﺎ أآﺜﺮ اﺳﺘﺨﺪاﻣﻲ ﻟﻬﺬا اﻟﺘﻌﺒﻴﺮ ﻓﻲ‬
‫أﻟﻒ ﻓﻴﻪ ﻣﺌﺎت اﻟﻜﺘﺐ وآﺘﺐ ﻋﻨﻪ ﺁﻻف اﻟﻤﻘﺎﻻت‪ ،‬وآﺎن ﻏﺮﺿﻲ اﻟﺤﻘﻴﻘﻲ‬ ‫ﺟﻤﻴﻊ آﺘﺎﺑﺎﺗﻲ( أن ﺗﺘﻢ ﻋﻤﻠﻴﺔ اﻻﺗﺼﺎل ﺑﻴﻦ اﻟﻄﺒﻘﺎت ﺑﺸﻜﻞ ﻧﻈﺎﻣﻲ وﻟﻴﺲ‬
‫ﻓﻲ هﺬا اﻟﻤﻘﺎل ﺗﻌﺮﻳﻔﻪ ﻟﻠﻤﺒﺘﺪﺋﻴﻦ ﻓﻘﻂ‪ ،‬وﻣﻦ هﻨﺎ ﺳﺄآﺘﻔﻲ ﺑﻤﺎ ﺳﻄﺮﺗﻪ ﻣﻦ‬ ‫ﻋﺸﻮاﺋﻲ‪ ،‬ﺑﻤﻌﻨﻰ أن ﻃﺒﻘﺔ اﻟﻌﺮض ‪-‬ﻣﺜﻼ ‪-‬ﻣﻤﻨﻮﻋﺔ ﻣﻨﻌﺎ ﺑﺎﺗﺎ ﻣﻦ اﻟﺘﺤﺪث‬
‫اﻟﻜﻼم اﻟﻨﻈﺮي‪،‬وﻧﺒﺪأ ﻓﻲ ورﺷﺔ ﻋﻤﻞ ﺻﻐﻴﺮة‪ ،‬وهﻲ ﻋﺒﺎرة ﻋﻦ ﻣﺸﺮوع‬ ‫ﻣﻊ ﻃﺒﻘﺔ اﻟﺒﻴﺎﻧﺎت‪ ،‬ﻓﻄﺒﻘﺔ اﻟﻌﺮض ﻻ ﺗﻌﻠﻢ أي ﺷﻲء ﻋﻦ اﻟﺒﻴﺎﻧﺎت وﻻ‬
‫ﺑﺴﻴﻂ ﺟﺪا ﺟﺪا )ﻗﺪ ﻳﻄﻮرﻩ اﻷﻃﻔﺎل( ﻳﻬﺪف إﻟﻰ ﺗﻄﻮﻳﺮ ﺑﺮﻧﺎﻣﺞ ﻳﺘﺒﻊ‬ ‫ﺗﺪري ﻣﺎذا ﻳﺤﺪث ﺑﻬﺎ وﻣﻦ هﻮ اﻟﻤﺴﺌﻮل ﻋﻨﻬﺎ‪ ،‬ﻓﻬﻲ ﺗﻌﺮف آﻴﻒ ﺗﺘﺤﺪث‬
‫أﺳﻠﻮب اﻟﺘﺼﻤﻴﻢ ﺛﻼﺛﻲ اﻟﻄﺒﻘﺎت‪.‬‬ ‫ﻣﻊ ﻃﺒﻘﺔ اﻷﻋﻤﺎل ﻓﻘﻂ )واﻟﺘﻲ ﺗﻜﻮن ﻣﺘﻔﻬﻤﺔ ﻣﻊ ﻃﺒﻘﺔ اﻟﺒﻴﺎﻧﺎت(‪.‬‬

‫ﺑﺮﻧﺎﻣﺠﻨﺎ اﻟﺼﻐﻴﺮ ﻓﻜﺮﺗﻪ ﺗﺤﺘﻚ ﺑﺸﻜﻞ ﻣﺒﺎﺷﺮ ﻣﻊ ﻣﺎ اﺳﺘﻔﺘﺤﺖ ﺑﻪ هﺬا‬


‫اﻟﻤﻘﺎل( اﻟﻬﺎﻣﺒﺮﺟﺮ(‪ ،‬ﺣﻴﺚ ﻳﻘﻮم ﺑﺘﺴﺠﻴﻞ ﻃﻠﺒﺎت اﻟﺰﺑﺎﺋﻦ ﻟﺼﺎﺣﺐ ﻣﻄﻌﻢ‪،‬‬
‫وﻳﻨﻘﺴﻢ إﻟﻰ ﺛﻼث ﻃﺒﻘﺎت‪:‬‬
‫‪27‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫‪ ‬‬

‫ﺗﻄﺒﻴﻖ ﻣﺘﻌﺪد ااﻟﻄﺒﻘﺎت ‪N-Tier‬‬


‫ﻖ‬ ‫ﺗﻄﻮﻳﻳﺮ‬
‫ﺴـﻴـﺮي‬
‫ﺗـﺗـﺮﻛــﻲ اﻟـﻌــﺴ‬
‫ﻋﻨﺎ( ﻳﺘﻢ‬
‫وﻟﻴﺲ ﻣﺜﻞ ﻣﺸﺮوﻋ‬
‫ﻓﻲ اﻟﺘﻄﺒﻴﻘﻘﺎت اﻟﻜﺒﻴﺮة واﻟﻟﻤﺤﺘﺮﻣﺔ ) ﺲ‬ ‫‪  ‬‬
‫ﺨﻄﻄﺎت‬ ‫ﻄﻴﻂ أوﻻ )ﻗﺒﻞ اﻟﺒﺪء ﻓﻲ ﺗﺼﻤﻤﻴﻢ ﻗﺎﻋﺪة اﻟﺒﻴﺎﻧﺎﺎت( ﺑﺈﺗﺒﺎع ﻣﺨ‬
‫اﻟﺘﺨﻄ‬
‫وﺣﺪات اﻟﻌﻼﻗﺎت ‪Entityy Relationsship Diagrrams (ER-‬‬ ‫ت‬
‫ﺼﻤﻴﻢ ﻋﺎﻟﻲ اﻟﻤﻤﺴﺘﻮى‬ ‫ﺳﻮى رﺳﻮم ﻟﺘﺼ‬ ‫ى‬ ‫)‪ ،Diagraams‬واﻟﺘﺘﻲ ﻟﻴﺴﺖ‬
‫ﺤﻚ ﺑﺎﻟﺒﺤﺚ ﺣﻮﻮل هﺬا‬ ‫‪ Highh Level Design‬ﻟﻘﺎﻋﺪة ااﻟﺒﻴﺎﻧﺎت‪ .‬أﻧﺼﺤ‬
‫ﺿﻮع ﻓﻲ أي ﻣﻮﻮﻗﻊ ﺑﺤﺚ‪.‬‬‫اﻟﻤﻮﺿ‬

‫ﺑﺨﺼﻮص إﺟﺮاءات ‪ Stored Proceduress‬ﻓﻬﻨﻨﺎك ‪4‬‬


‫ﻹﺟﺮاء‬
‫ﻟﻤﻨﺘﺠﺎت ‪ ،Produccts‬اﻹ‬ ‫إﺟﺮاءءات ﺧﺎﺻﺔ ﺑﺠﺪول اﻟﻤ‬
‫ﺿﻪ ﺗﻌﺮﻳﻒ ﻣﻨﺘﺘﺞ ﺟﺪﻳﺪ ﻓﻲ اﻟﺠ‬
‫ﺠﺪول‪:‬‬ ‫‪ Prodducts.AddN‬ﻣﺜﻼ ﻏﺮﺿ‬
‫‪New‬‬ ‫‪،Win‬‬‫اﻟﻌﺮض ﺳﺘﻜﻮن ﺗﻄﺒﻴﻴﻖ ‪ndows Appplication‬‬‫ض‬ ‫ﻃﺒﻘﺔ‬
‫ﺳﺘﻜﻮن ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﻔﺌﺎت ‪ Claasses‬ﻣﺤﻀﻮﻧﺔ داﺧﻞ‬
‫ن‬ ‫وﻃﺒﻘﺔ اﻷﻋﻤﺎل‬
‫ﻛﻮد‪:‬‬ ‫‪ DLL‬وﻃﺒﻘﺔ اﻟﺒﺒﻴﺎﻧﺎت ﺳﺘﻌﺘﻤﺪ ﻋﻠﻰ ﺧﺎدﻣﻲ اﻟﻤﻤﻔﻀﻞ‪Miccrosoft‬‬ ‫ﻣﻜﺘﺒﺔ ‪L‬‬
‫‪ALTE‬‬
‫‪ER PROCEDU‬‬
‫‪URE [Produ‬‬
‫‪ucts.AddNe‬‬
‫]‪ew‬‬ ‫‪.SQL‬‬
‫‪S‬‬ ‫‪Server 2005‬‬
‫(‬
‫‪@prdID un‬‬
‫‪niqueident‬‬
‫‪tifier,‬‬
‫(‪@prdName nvarchar‬‬
‫)‪(50‬‬ ‫اﻷﺧﺮى ﻓﻲ‬
‫ى‬ ‫ﻄﺒﻘﺎت‬‫ﺳﻨﻨﺠﺰ ﻃﺒﻘﺔ اﻟﺒﻴﺎﻧﺎﺎت ﻓﻘﻂ‪ .‬واﻟﻄ‬
‫ﺰ‬ ‫ﻓﻲ هﺬا اﻟﻤﻘﺎل‬
‫)‬ ‫ﺣﺴﺐ‬‫ن واﺣﺪ أو ااﺛﻨﻴﻦ‪ ،‬ﻋﻠﻰ ﺣ‬
‫اﻟﻘﺎدﻣـ‪/‬ـﺔ )ﻗﺪ ﻳﻜﻮن‬
‫ـ‬ ‫اﻟﻤﻘﺎل‪/‬اﻟﻟﻤﻘﺎﻻت‬
‫‪AS‬‬ ‫اﻟﻤﺰاج (‬
‫!( ‪.‬‬
‫‪SET NOCOU‬‬
‫‪UNT ON‬‬
‫‪INSERT IN‬‬
‫‪NTO Produc‬‬
‫‪cts‬‬
‫(‬ ‫ﻃﺒﻘﺔ ااﻟﺒﻴﺎﻧﺎت‬
‫‪D,‬‬
‫‪prdID‬‬
‫‪prdNa‬‬
‫‪ame‬‬ ‫وﻓﻲ ﻣﺸﺮوﻋﻨﺎ اﻟﻟﺒﺴﻴﻂ‬
‫وهﻲ آﻞ ﻣﺎ ﻳﺘﻌﻠﻖ ﺑﻘﺎﻋﺪة اﻟﺒﻴﺎﻧﺎت‪ ،‬ﻲ‬
‫)‬
‫‪VALUES‬‬ ‫ﺴﻢ اﻟﺜﺎﻧﻲ إﺟﺮاءات‬‫ﺗﻨﻘﺴﻢ إﻟﻟﻰ ﻗﺴﻤﻴﻦ‪ :‬اﻷول اﻟﺠﺪاول ‪ Tabless‬واﻟﻘﺴ‬
‫(‬ ‫ﻳﺨﺘﺼﺮ آﻞ‬
‫ﺮ‬ ‫ﺠﺪاول ﻓﺎﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ‬
‫‪ ،Stored Proceedures‬ﺑﺎﻟﻨﺴﺒﺔ ﻟﻠﺠ‬
‫‪ID,‬‬
‫‪@prdI‬‬ ‫اﻟﺤﻜﺎﻳﺔ ‪:‬‬
‫‪@prdN‬‬
‫‪Name‬‬
‫)‬
‫‪RETURN‬‬

‫ﻳﻌﻮد ﺑﻜﺎﻓﺔ اﻟﻤﻨﻨﺘﺠﺎت‪،‬‬


‫د‬ ‫اﻹﺟﺮاء ‪Produucts.GetAll‬‬
‫ﻹﺟﺮاء‬
‫‪ Products.Up‬ﻟﺘﻌﺪﻳﻞ ﺳﺠﻞ‪ ،‬واﻹ‬ ‫‪P‬‬ ‫ﺟﺮاء ‪pdate‬‬
‫واﻹﺟ‬
‫ﺿﻪ‪ .‬ﺑﺎﻟﻨﺴﺒﺔ ﻟﺠﺪوول اﻟﻄﻠﺒﺎت ‪Ordeers‬‬
‫‪ Products.De‬واﺿﺢ ﻏﺮﺿ‬
‫‪P‬‬ ‫‪elete‬‬
‫اﻟﻄﻠﺒﺎت ‪ Items‬ﻓﺘﻜﻮن اﻟﺒﺪاﻳﺔ ﻣﻊ اﻹ‬
‫ﻹﺟﺮاء‬ ‫ت‬ ‫ووﺣﺪﺪات‬
‫ﺸﺎء ﺳﺠﻞ ﺟﺪﺪﻳﺪ ﻓﻲ‬ ‫‪ Orders.DeefineNewO‬وواﻟﺬي ﻳﺒﺪأ ﺑﺈﻧﺸ‬‫‪Order‬‬
‫ﻟﻴﻤﺜﻞ ﻃﻠﺐ ﺟﺪﻳﺪ‪:‬‬
‫ﺟﺪول ‪ Orders‬ﻞ‬
‫ل‬

‫ﻛﻮد‪:‬‬
‫‪ALTE‬‬
‫‪ER PROCEDU‬‬
‫‪URE [Order‬‬
‫‪rs.DefineN‬‬
‫]‪NewOrder‬‬
‫(‬
‫‪@ordID un‬‬
‫‪niqueident‬‬
‫‪tifier,‬‬
‫‪@ordDate smalldate‬‬
‫‪etime‬‬
‫)‬
‫‪AS‬‬
‫‪SET NOCOU‬‬
‫‪UNT ON‬‬

‫‪INSERT IN‬‬
‫‪NTO Orders‬‬
‫‪s‬‬
‫(‬
‫‪D,‬‬
‫‪ordID‬‬
‫‪ordDa‬‬
‫‪ate‬‬
‫)‬
‫‪VALUES‬‬
‫(‬
‫‪ID,‬‬
‫‪@ordI‬‬
‫‪@ordD‬‬
‫‪Date‬‬
‫)‬

‫‪28‬‬
‫ﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬
‫اﻟﻟﻌﺪد ‪ 01‬ﻟﺸﻬ‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫‪ ‬‬

‫ﺗﻄﻮﻳﺮ ﺗﻄﺒﻴﻖ ﻣﺘﻌﺪد اﻟﻄﺒﻘﺎت ‪N-Tier‬‬


‫ﺗـﺮﻛــﻲ اﻟـﻌــﺴـﻴـﺮي‬
‫وﻓﻲ آﻞ ﻣﺮة ﺗﻮد إﺿﺎﻓﺔ ﻋﻨﺼﺮ إﻟﻰ اﻟﻄﻠﺐ‪ ،‬ﻓﺎﻹﺟﺮاء‪ Orders.AddItemToOrder‬ﺗﺤﺖ اﻟﺨﺪﻣﺔ‪:‬‬

‫ﻛﻮد‪:‬‬
‫‪  ‬‬
‫]‪ALTER PROCEDURE [Orders.AddItemToOrder‬‬
‫(‬
‫‪@itmOrderID uniqueidentifier,‬‬
‫‪@itmProductID uniqueidentifier,‬‬
‫‪@itmQuantity smallint‬‬
‫)‬
‫‪AS‬‬
‫‪SET NOCOUNT ON‬‬
‫‪INSERT INTO Items‬‬
‫(‬
‫‪itmOrderID,‬‬
‫‪itmProductID,‬‬
‫‪itmQuantity‬‬
‫)‬
‫‪VALUES‬‬
‫(‬
‫‪@itmOrderID,‬‬
‫‪@itmProductID,‬‬
‫‪@itmQuantity‬‬
‫)‬
‫‪RETURN‬‬

‫اﻹﺟﺮاء ‪ Orders.RemoveItemFromOrder‬ﻳﺤﺬف اﺣﺪ اﻟﻌﻨﺎﺻﺮ ﻣﻦ اﻟﻄﻠﺐ‪ ،‬وﻳﻤﻜﻨﻚ ﻣﻌﺮﻓﺔ ﺟﻤﻴﻊ اﻟﻌﻨﺎﺻﺮ اﻟﺘﺎﺑﻌﺔ ﻟﻠﻄﻠﺐ ﻣﻦ ﺧﻼل‬
‫اﻹﺟﺮاء ‪ .Orders.GetAllItemInOrder‬أﺧﻴﺮا‪ ،‬ﺑﺎﻟﻨﺴﺒﺔ ﻟﻺﺟﺮاء ‪ Orders.DeleteOrder‬ﺳﻴﻘﻮم ﺑﺤﺬف اﻟﻄﻠﺐ وﺟﻤﻴﻊ اﻟﻌﻨﺎﺻﺮ اﻟﺘﺎﺑﻌﺔ ﻟﻪ ﻓﻲ‬
‫ﺟﺪول ‪: Items‬‬

‫ﻛﻮد‪:‬‬
‫]‪ALTER PROCEDURE [Orders.DeleteOrder‬‬
‫(‬
‫‪@ordID uniqueidentifier‬‬
‫)‬
‫‪AS‬‬
‫‪SET NOCOUNT ON‬‬
‫‪DELETE FROM‬‬
‫‪Orders‬‬
‫‪WHERE‬‬
‫‪ordID = @ordID‬‬

‫‪DELETE FROM‬‬
‫‪Items‬‬
‫‪WHERE‬‬
‫‪itmOrderID = @ordID‬‬
‫‪RETURN‬‬

‫ﻗﺪ ﺗﺘﺴﺎءل ﻋﻦ ﺳﺒﺐ ﻗﻴﺎﻣﻲ ﺑﺤﺬف اﻟﻌﻨﺎﺻﺮ ﻓﻲ ﺟﺪول ‪ Items‬ﻳﺪوﻳﺎ‪ ،‬ﻓﺎﻟﻤﺘﻮﻗﻊ إن ﻳﻘﻮم ﻣﺤﺮك ﻗﺎﻋﺪة اﻟﺒﻴﺎﻧﺎت ﺑﺤﺬﻓﻬﺎ ﺗﻠﻘﺎﺋﻴﺎ ﺑﺴﺒﺐ اﻟﻌﻼﻗﺔ‪ ،‬وﻟﻜﻦ ﻓﻲ‬
‫اﻟﺤﻘﻴﻘﺔ ﻻ ﺗﻮﺟﺪ ﻋﻼﻗﺎت ﺑﻴﻦ اﻟﺠﺪاول ﻓﻼ أﺣﺒﺬ اﺳﺘﺨﺪاﻣﻬﺎ آﺜﻴﺮا ﺑﺴﺒﺐ أﻧﻬﺎ ﺗﻀﻌﻒ آﻔﺎءة اﻟﺘﻨﻔﻴﺬ‪ ،‬وﺑﺎﻟﻨﺴﺒﺔ ﻟﻠﻌﻼﻗﺎت اﻟﻮاﺿﺤﺔ ﺑﺎﻟﺼﻮرة ﻓﻬﻲ‬
‫ﻟﻠﺘﻮﺿﻴﺢ ﻓﻘﻂ )آﻤﺎ ﻳﻘﻮل اﻟﻤﺜﻞ‪ :‬ﻻ ﺗﺼﺪق آﻞ ﻣﺎ ﺗﺮاﻩ(‪.‬‬

‫ﺧﺎﺗﻤﺔ‬

‫اﻟﺘﻄﺒﻴﻘﺎت ﻣﺘﻌﺪدة اﻟﻄﺒﻘﺎت ‪ N-Tier Applications‬ﻟﻴﺴﺖ ﺳﻮى أﺳﻠﻮب ﻟﺘﺼﻤﻴﻢ ﻣﻌﻤﺎري ‪ Architecture Design‬ﻳﺘﺒﻌﻪ ﻣﺼﻤﻤﻮ‬
‫اﻟﺘﻄﺒﻴﻘﺎت‪ ،‬اﻟﻐﺮض ﻣﻨﻪ ﺗﻘﺴﻴﻢ اﻟﺘﻄﺒﻴﻖ إﻟﻰ ﻃﺒﻘﺎت ﻣﺴﺘﻘﻠﺔ أآﺜﺮ ﺗﻨﻈﻴﻤﺎ وﻗﺎﺑﻠﻴﺔ ﻟﻠﺼﻴﺎﻧﺔ‪ .‬ﻓﻲ اﻟﻤﻘﺎل اﻟﻘﺎدم ﺳﻨﻜﻤﻞ ورﺷﺔ اﻟﻌﻤﻞ ﻟﺒﻨﺎء ﺗﻄﺒﻴﻖ ﺛﻼﺛﻲ‬
‫اﻟﻄﺒﻘﺎت‪ ،‬واﻟﻰ ذﻟﻚ اﻟﺤﻴﻦ ﻳﻤﻜﻨﻚ إﻧﺰال ﺷﻔﺮة ﻗﺎﻋﺪة اﻟﺒﻴﺎﻧﺎت ‪) Database Script‬اﺿﻐﻂ ﻋﻠﻰ اﻟﺠﻤﻠﺔ اﻟﻤﺴﻄﺮة( ﺷﺎﻣﻠﺔ ﻟﻠﺠﺪاول وإﺟﺮاءات‬
‫‪Stored Procedures‬اﻟﺘﻲ ﺻﻤﻤﻨﺎهﺎ ﻟﻠﺘﻮ‪.‬‬

‫‪29‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
 

.... ‫اﺧﺘﺮﻧﺎ ﻟﻚ ﻣﻦ ﻣﻜﺘﺒﺔ ااﻟﻜﺘﺐ‬


‫ﺎ‬
Unifiied Modeliing Langua
age User Guide
G

(Booch, Ruumbaugh, Jaacobson)‫ﺴﻲ اﻟﻠﻐﺔ اﻷﺻﻠﻴﻴﻴﻦ‬


‫ ﻣﻦ ﻣﺆﺳﺴ‬UM
ML‫اﻟﻟﻤﺮﺟﻊ اﻟﻜﺎﻣﻞ ﻟﻟﺘﻌﻠﻢ ﻟﻐﺔ ال‬
‫ت‬
‫اﻟﻤﺤﺘﻮﻳﺎت‬ :‫ﺻﻮرة ااﻟﻐﻼف‬
Prefa
ace
Goalss
Audieence
How to Use This s Book
Orgaanization annd Special Features
F
A Briief History of
o the UML
Acknnowledgmen nts
I: Geetting Starrted
Why We Model
Intro
oducing the e UML
Hello
o, World!
II: Basic
B Strucctural Mod deling
Classses
Relattionships
Common Mecha anisms
Diagrams
Classs Diagrams s
III: Advanced d Structura al Modelin
ng
Advaanced Class ses
Advaanced Relattionships
Interrfaces, Typees, and Rolles
Packages
ances
Insta
Object Diagram ms
IV: Basic
B Beha avioral Moodeling ‫ اﻧﺠﻠﻴﺰﻳﺔ‬:‫اﻟﻠﻐﺔ‬
Interractions Ivar ،Ja
ames Rumb ady Booch :‫اﻟﻤﺆﻟﻒ‬
baugh ، Gra
Use Cases
C obson
Jaco
Use Case
C Diagrams CHM :‫ﻧﻮع اﻟﻤﻠﻠﻒ‬
Interraction Diaggrams ‫ ﺎ‬4.5 :‫ﺣﺠﻢ اﻟﻤﻤﻠﻒ‬
‫ﻣﻴﻐﺎ‬
Activ
vity Diagramms 2 :‫اﻟﻄﺒﻌﺔ‬
V: Advanced Behavioral
B l Modeling
g 2005 :‫ﺗﺎرﻳﺦ اﻟﻟﻨﺸﺮ‬
Evennts and Sign nals
Statee Machines
Addisonn Wesley :‫ﺸﺮ‬‫دار اﻟﻨﺸ‬
Proceesses and Threads
T  
Timee and Space e  
Stateechart Diaggrams  
VI: Architectu
A ural Modeling ‫ﻟﺘﻨﺰﻳﻞ اﻟﻜﺘﺎب اﺿﻐﻂ ههﻨﺎ‬
Components
Deplo oyment
Colla
aborations
Patte
erns and Frrameworks
Component Diagrams
Deplo oyment Diaagrams
Systeems and Models
VII: Wrapping g Up
Applyying the UMML
A. UMML Notation n
B. UMML Standarrd Elements s
C. Raational Uniffied Process
s
Glosssary

30
2008 ‫ ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ‬/ ‫ﻬﺮ ﻳﻨﺎﻳﺮ‬
‫ ﻟﺸﻬ‬01 ‫اﻟﻟﻌﺪد‬ vb4arab.com ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻋﻠﻰ اﻟﻨﺖ‬
‫ﺗﻄﺎﻟﻌﻮن ﻓﻲ ﻫﺬا اﻟﻌﺪد‪...‬‬

‫‪VB‬‬ ‫ﺑﻌﺾ اﻷﻣﻮر اﻷﺳﺎﺳﻴﺔ ﻓﻲ ﻣﻮﺿﻮع اﻟﺮﺳﻢ ﻓﻲ‬


‫‪.Net‬‬
‫ﺗﺴﺘﺨﺪم ﻣﻜﺘﺒﺔ اﻟـ ‪ GDI+‬ﻓﺌﺘﺎن أﺳﺎﺳﻴﺘﺎن ﻫﻤﺎ ‪ Pen‬و ‪Brush‬‬
‫ﻣﺤﻤﺪ ﺳﺎﻣﺮ أﺑﻮ ﺳﻠﻮ‬
‫ﻟﺘﺤﺪﻳﺪ ﻣﻈﻬﺮ ﻣﺎ ﺗﻘﻮم ﺑﺮﺳﻤﻪ‪ .‬ﺣﻴﺚ ﻳﺤﺪد ‪ Pen Object‬ﻛﻴﻔﻴﺔ رﺳﻢ اﻟﺨﻄﻮط‬
‫ﻛﺎﻟﻠﻮن واﻟﺴﻤﺎﻛﺔ واﻻﺳﺘﻤﺮارﻳﺔ واﻟﺘﻨﻘﻴﻂ ﻓﻤﺜﻼ ﻋﻨﺪﻣﺎ ﺗﺴﺘﺨﺪم اﻟﺪاﻟﺔ‪...‬‬
‫ﺗﺘﻤﺔ ﺻﻔﺤﺔ ‪32‬‬
‫‪H‬‬

‫ﺟﺪﻳﺪ اﻟﻔﻴﺒﻲ ‪ /2008‬اﻻﺳﺘﺪﻻل اﻟﻤﺤﻠﻲ ﻋﻠﻰ اﻟﻨﻮع‬


‫ﻳﺴﺘﺨﺪم ﻣﺘﺮﺟﻢ اﻟﻔﻴﺠﻮال ﺑﻴﺴﻚ ‪ 2008‬اﻻﺳﺘﺪﻻل ﻋﻠﻰ اﻟﻨﻮع ‪Type‬‬
‫ﻣﺤﻤﺪ ﺳﺎﻣﺮ أﺑﻮ ﺳﻠﻮ‬ ‫‪Inference‬ﻟﺘﺤﺪﻳﺪ ﻧﻮع اﻟﻤﺘﻐﻴﺮات اﻟﻤﺤﻠﻴﺔ اﻟﺘﻲ ﺗﻢ اﻟﺘﺼﺮﻳﺢ ﻋﻨﻬﺎ ﺑﺪون اﺳﺘﺨﺪام‬
‫ﻓﻘﺮة ‪ As‬ﻓﻲ ﺗﻌﺒﻴﺮ اﻟﺘﺼﺮﻳﺢ ﺣﻴﺚ ﻳﺴﺘﺪل اﻟﻤﺘﺮﺟﻢ ﻋﻠﻰ ﻧﻮع اﻟﻤﺘﻐﻴﺮ ﻣﻦ ﻧﻮع اﻟﺘﻌﺒﻴﺮ‪...‬‬
‫ﺗﺘﻤﺔ ﺻﻔﺤﺔ ‪36‬‬

‫ﺟﺪﻳﺪ اﻟﻔﻴﺒﻲ ‪/2008‬اﻟﻄﺮق اﻟﻤُﻮَﺳِّﻌﺔ‬


‫‪Extension Methods‬‬
‫ﻳﻘﺪم ﻓﻴﺠﻮال ﺑﻴﺴﻚ ‪ 2008‬اﻟﻄﺮق اﻟﻤُﻮَﺳِّﻌﺔ ‪Extension Methods‬‬
‫ﻣﺤﻤﺪ ﺳﺎﻣﺮ أﺑﻮ ﺳﻠﻮ‬
‫اﻟﺘﻲ ﺗﻤﻜﻦ اﻟﻤﻄﻮر ﻣﻦ إﺿﺎﻓﺔ وﻇﺎﺋﻒ ﻣﺨﺼﺼﺔ ﻷﻧﻮاع اﻟﺒﻴﺎﻧﺎت اﻟﻤﻌﺮﻓﺔ ﺳﺎﺑﻘﺎ ﻣﻦ دون‬
‫إﻧﺸﺎء ﻧﻮع ﺟﺪﻳﺪ ﻣﺸﺘﻖ‪ .‬ﻣﻤﺎ ﻳﻤﻜﻨﻚ ﻣﻦ ﻛﺘﺎﺑﺔ ﻃﺮﻳﻘﺔ ﻳﻤﻜﻦ أن ﺗﺴﺘﺪﻋﻰ ﻛﻤﺎ ﻟﻮ‬
‫ﻛﺎﻧﺖ ﻣﻦ ﺿﻤﻦ اﻟﻨﻮع اﻟﻤﻮﺟﻮد‪...‬‬
‫ﺗﺘﻤﺔ ﺻﻔﺤﺔ ‪38‬‬
‫‪H‬‬ ‫‪H‬‬

‫ﻣﺤﻤﺪ ﺳﺎﻣﺮ أﺑﻮ ﺳﻠﻮ‬ ‫أﺣﺪاث اﻟﺘﻄﺒﻴﻖ ‪Application Events‬‬


‫ﺗﺘﻤﺔ ﺻﻔﺤﺔ ‪41‬‬
‫‪ ‬‬

‫اﺧﺘﺮﻧﺎ ﻟﻚ ﻣﻦ ﻣﻜﺘﺒﺔ اﻟﻜﺘﺐ‬


‫‪Mastering Visual Basic. NET‬‬
‫ﻛﺘﺎب اﻷﺳﺘﺎذ ﺗﺮﻛﻲ اﻟﻌﺴﻴﺮي‬
‫إﺧﺘﺮﻧﺎ ﻟﻚ ﻣﻦ ﻣﻜﺘﺒﺔ اﻟﺸﻔﺮات‬
‫ﻣﻌﺮﻓﻪ اﻟﻠﻐﺎت )ﻟﻐﺎت اﻟﻜﺘﺎﺑﺔ(اﻟﻤﺪﻋﻮﻣﺔ ﻓﻲ اﻟﺠﻬﺎز‬
‫اﻟﺤﺼﻮل ﻋﻠﻰ ﻗﺎﺋﻤﻪ ﺑﺠﻤﻴﻊ اﻟﺨﻄﻮط اﻟﻤﻮﺟﻮدة ﻓﻲ اﻟﺠﻬﺎز‬

‫أﻓﻀﻞ ﻣﻮاﺿﻴﻊ اﻟﺸﻬﺮ ﻓﻲ ﻗﺴﻢ اﻟﻔﻴﺠﻮال ﺑﻴﺴﻚ ‪.‬ﻧﺖ‬


‫إﻋﺪاد وﻟﻴﺪ ﺑﻮاﻟﻄﻤﻴــﻦ‬
‫‪VB .Net‬‬ ‫ﺑﻌﺾ اﻷﻣﻮر اﻷﺳﺎﺳﻴﺔ ﻓﻲ ﻣﻮﺿﻮع اﻟﺮﺳﻢ ﻓﻲ‬
‫ﻣﺤﻤﺪ ﺳﺎﻣﺮ أﺑﻮ ﺳﻠﻮ ‪ ‬‬
‫ﺗﺴﺘﺨﺪم ﻣﻜﺘﺒﺔ اﻟـ ‪ GDI+‬ﻓﺌﺘﺎن أﺳﺎﺳﻴﺘﺎن هﻤﺎ ‪ Pen‬و ‪ Brush‬ﻟﺘﺤﺪﻳﺪ ﻣﻈﻬﺮ ﻣﺎ ﺗﻘﻮم ﺑﺮﺳﻤﻪ‪ .‬ﺣﻴﺚ ﻳﺤﺪد ‪ Pen Object‬آﻴﻔﻴﺔ رﺳﻢ‬
‫اﻟﺨﻄﻮط آﺎﻟﻠﻮن واﻟﺴﻤﺎآﺔ واﻻﺳﺘﻤﺮارﻳﺔ واﻟﺘﻨﻘﻴﻂ ﻓﻤﺜﻼ ﻋﻨﺪﻣﺎ ﺗﺴﺘﺨﺪم اﻟﺪاﻟﺔ ‪ DrawPolygon‬ﻟﺮﺳﻢ ﻣﻀﻠﻊ ﻓﺄﻧﺖ ﺗﻤﺮر ﻟﻬﺎ ‪Pen Object‬‬
‫ﻳﺤﺪد آﻴﻔﻴﺔ رﺳﻢ ﺧﻄﻮط ذﻟﻚ اﻟﻤﻀﻠﻊ ﻓﻲ ﺣﻴﻦ ﻳﺤﺪد ‪ Brush Object‬آﻴﻔﻴﺔ ﻣﻠﺊ اﻟﻤﺴﺎﺣﺎت آﺎﻟﻠﻮن وﻃﺮﻳﻘﺔ اﻟﺘﻬﺸﻴﺮ واﻟﺘﺪرج اﻟﻠﻮﻧﻲ ﻓﻤﺜﻼ ﻳﻤﻜﻨﻚ‬
‫اﺳﺘﺨﺪام ‪ Brush Object‬ﻟﺘﺤﺪﻳﺪ آﻴﻔﻴﺔ ﻣﻠﺊ اﻟﻤﺴﺎﺣﺎت اﻟﻤﻐﻠﻘﺔ آﻤﺎ ﻧﻔﻌﻞ ﻋﻨﺪ اﺳﺘﺨﺪام اﻟﺪاﻟﺔ ‪ FillRectangle‬ﻟﺮﺳﻢ ﻣﺴﺘﻄﻴﻞ ﻣﻤﻠﻮء‬

‫وﻳﻤﻜﻦ ﺗﺤﺪﻳﺪ اﻟﺨﻄﻮات اﻷﺳﺎﺳﻴﺔ ﻟﺮﺳﻢ أي ﺷﻜﻞ ﺑﺸﻜﻞ ﻋﺎم‬


‫‪ .1‬إﻧﺸﺎء ‪. Graphics Object‬‬
‫‪ .2‬ﺗﺤﺪﻳﺪ ‪ Brush Object‬ﻟﻤﻠﺊ اﻟﻤﺴﺎﺣﺎت ﻓﻲ ذﻟﻚ اﻟﺸﻜﻞ‪.‬‬
‫‪ .3‬ﺗﺤﺪﻳﺪ ‪ Pen Object‬ﻟﺘﺤﺪﻳﺪ آﻴﻔﻴﺔ رﺳﻢ ﺧﻄﻮط ذﻟﻚ اﻟﺸﻜﻞ‪.‬‬
‫‪ .4‬اﻟﻘﻴﺎم ﺑﻌﻤﻠﻴﺔ اﻟﺮﺳﻢ ﺑﺎﺳﺘﺨﺪام اﻟﺪاﻟﺔ اﻟﻤﻨﺎﺳﺒﺔ ﻟﻤﺎ ﻧﺮﻳﺪ رﺳﻤﻪ‪.‬‬

‫ﻓﻤﺜﻼ ﻳﻤﻜﻨﻚ اﺳﺘﺨﺪام اﻟﺤﺪث ‪ Paint‬ﻟﻠﻨﻤﻮذج ﻟﻠﺮﺳﻢ ﻋﻠﻴﻪ ﻋﻨﺪﻣﺎ ﻳﺘﻢ إﻋﺎدة رﺳﻢ اﻟﻨﻤﻮذج آﻤﺎ ﻓﻲ ﻗﻄﻌﺔ اﻟﻜﻮد اﻟﺘﺎﻟﻴﺔ ﺣﻴﺚ ﻳﻘﺪم ﻟﻚ إﺟﺮاء‬
‫اﻟﺤﺪث ‪ Paint‬اﻟﻮﺳﻴﻄﺔ ‪ e.Graphics‬اﻟﺘﻲ هﻲ اﻟـ ‪ Graphics Object‬اﻟﺬي ﻧﺴﺘﺨﺪﻣﻪ ﻟﻠﺮﺳﻢ وﻋﻨﺪ اﻧﺘﻬﺎء اﻟﺤﺪث ﻳﻘﻮم ﻓﻴﺠﻮل ﺑﻴﺴﻚ‬
‫ﺑﻨﻘﻞ ﻣﺎ ﺗﻢ رﺳﻤﻪ ﻋﻠﻰ اﻟـ ‪ Graphics Object‬إﻟﻰ اﻟﻤﻨﻄﻘﺔ اﻟﻤﻨﺎﺳﺒﺔ ﻋﻠﻰ اﻟﻨﻤﻮذج اﻟﺘﻲ ﻳﺠﺐ أن ﻳﺘﻢ اﻟﺮﺳﻢ ﻋﻠﻴﻬﺎ ‪.‬ﺣﻴﺚ ﻧﻘﻮم ﺑﺈﻧﺸﺎء آﺎﺋﻦ‬
‫‪ SolidBrush‬اﻟﻤﺸﺘﻖ ﻣﻦ اﻟﻜﺎﺋﻦ ‪ Brush‬اﻟﺬي ﺳﻨﺴﺘﺨﺪﻣﻪ ﻟﺮﺳﻢ داﺋﺮة ﻣﻤﻠﻮءة ﺑﺘﻤﺮﻳﺮﻩ ﻟﻠﺪاﻟﺔ ‪ FillEllipse‬ﺛﻢ ﻧﻘﻮم ﺑﺈﻧﺸﺎء آﺎﺋﻦ‬
‫‪Pen‬ﻧﻘﻮم ﺑﺘﻤﺮﻳﺮﻩ ﻟﻠﺪاﻟﺔ ‪ DrawEllipse‬اﻟﻤﺴﺘﺨﺪﻣﺔ هﻨﺎ ﻟﺮﺳﻢ داﺋﺮة ﺗﺤﻴﻂ ﺑﺎﻟﺪاﺋﺮة اﻟﺴﺎﺑﻘﺔ‪.‬‬

‫ﻛﻮد‪:‬‬
‫‪Private Sub Form1_Paint(ByVal sender As Object,ByVal e As‬‬
‫‪System.Windows.Forms.PaintEventArgs) Handles Me.Paint‬‬

‫)‪Dim sBrush As New SolidBrush(Color.YellowGreen‬‬


‫)‪e.Graphics.FillEllipse(sBrush, 10, 10, 100, 100‬‬

‫)‪Dim cPen As New Pen(Color.Blue, 5‬‬


‫)‪e.Graphics.DrawEllipse(cPen, 10, 10, 100, 100‬‬
‫‪End Sub‬‬

‫و ﻓﻲ اﻟﻐﺎﻟﺐ ﺗﺄﺗﻲ دوال اﻟﺮﺳﻢ ﺑﻌﺪة ﻧﺴﺦ ذات ﺗﺤﻤﻴﻞ زاﺋﺪ ‪ Overloaded‬ﻓﻤﺜﻼ اﻟﺪاﻟﺔ ‪ FillEllipse‬ﺗﻤﺘﻠﻚ أرﺑﻊ ﻧﺴﺦ ﻳﻤﻜﻦ‬
‫اﺳﺘﺨﺪام أي ﻣﻨﻬﺎ ﻟﻠﺮﺳﻢ ﺣﺴﺐ اﻟﺤﺎﺟﺔ‪.‬‬
‫ﻛﻮد‪:‬‬
‫)‪Graphics.FillEllipse (Brush, Rectangle‬‬
‫)‪Graphics.FillEllipse(Brush, RectangleF‬‬
‫)‪Graphics.FillEllipse(Brush, Int32, Int32, Int32, Int32‬‬
‫)‪Graphics.FillEllipse (Brush, Single, Single, Single, Single‬‬

‫ﺣﻴﺚ ﻳﻤﻜﻨﻨﺎ إﻋﺎدة آﺘﺎﺑﺔ ﻗﻄﻌﺔ اﻟﻜﻮد اﻟﺴﺎﺑﻘﺔ ﺑﺎﺳﺘﺨﺪام آﺎﺋﻦ ‪ Rectangle‬ﺑﺎﻟﺸﻜﻞ‪:‬‬
‫ﻛﻮد‪:‬‬
‫)‪Dim sBrush As New SolidBrush(Color.YellowGreen‬‬
‫)‪Dim rec As New Rectangle(10, 10, 100, 100‬‬

‫)‪e.Graphics.FillEllipse(sBrush, rec‬‬

‫)‪Dim cPen As New Pen(Color.Blue, 5‬‬


‫)‪e.Graphics.DrawEllipse(cPen, rec‬‬

‫وﺗﺄﺗﻲ ﺟﻤﻴﻊ ﻋﻤﻠﻴﺎت اﻟﺮﺳﻢ ﻓﻲ ﻣﻜﺘﺒﺔ ال ‪ GDI+‬ﺿﻤﻦ هﺬﻩ اﻟﺨﻄﻮات اﻷﺳﺎﺳﻴﺔ ﻟﻠﺮﺳﻢ وﻟﻜﻦ آﺎﺋﻨﺎت ‪ Pen‬و ‪ Brush‬ﻳﻤﻜﻦ أن ﺗﺄﺗﻲ‬
‫ﺑﺄﺷﻜﺎل أآﺜﺮ ﺗﻌﻘﻴﺪا ﻣﻤﺎ ورد هﻨﺎ ﺗﻠﺒﻴﺔ ﻟﻠﺤﺎﺟﺎت اﻟﻤﺨﺘﻠﻔﺔ ﻟﻌﻤﻠﻴﺔ اﻟﺮﺳﻢ ﺣﻴﺚ ﻳﻤﻜﻨﻚ رﺳﻢ ﻣﻀﻠﻊ ﺑﺎﺳﺘﺨﺪام أﻟﻮان ﻣﺘﺪرﺟﺔ ﺛﻢ إﺣﺎﻃﺘﻪ ﺑﺨﻂ ﻣﻨﻘﻂ آﻤﺎ‬
‫ﺗﺄﺗﻲ أﻳﻀﺎ ﺿﻤﻦ اﻟـ ‪ GDI+‬أواﻣﺮ ﺗﻤﻜﻨﻚ ﻣﻦ رﺳﻢ أﺷﻴﺎء ﻣﺜﻴﺮة آﺎﻟﺪاﻟﺔ ‪ DrawBezier‬اﻟﺘﻲ ﺗﺴﺘﺨﺪم ﻟﺮﺳﻢ اﻟﻤﻨﺤﻨﻴﺎت‪.‬‬

‫‪32‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
VB .Net ‫ﺑﻌﺾ اﻷﻣﻮر اﻷﺳﺎﺳﻴﺔ ﻓﻲ ﻣﻮﺿﻮع اﻟﺮﺳﻢ ﻓﻲ‬
 
  ‫ﻣﺤﻤﺪ ﺳﺎﻣﺮ أﺑﻮ ﺳﻠﻮ‬
  ‫ﻳﺤﺘﻮي ﻋﻠﻰ ﺛﻼث ﻓﺌﺎت أﺳﺎﺳﻴﺔ‬  ‫ ﻟﺮﺳﻢ اﻟﺨﻄﻮط ﺑﺤﻴﺚ‬System.Drawing.Text ‫ﻳﻤﻜﻨﻚ اﺳﺘﺨﺪام ﻣﺠﺎل اﻷﺳﻤﺎء‬
PrivateFontCollection ‫ و‬InstalledFontCollection ‫ و‬FontCollection
‫ اﻟﺘﻲ ﻧﺴﺘﺨﺪم داﻟﺘﻬﺎ‬InstalledFontCollection ‫ﻓﻠﻠﺤﺼﻮل ﻋﻠﻰ ﻗﺎﺋﻤﺔ ﺑﺎﻟﺨﻄﻮط اﻟﻤﺮآﺒﺔ ﻋﻠﻰ اﻟﺠﻬﺎز ﻧﺴﺘﺨﺪم اﻟﻔﺌﺔ‬
‫ ﺗﺘﻀﻤﻦ اﻟﺨﻄﻮط اﻟﻤﺮآﺒﺔ ﺣﻴﺚ ﻳﻤﻜﻨﻨﺎ ﻣﻠﺊ ﻗﺎﺋﻤﺔ ﺑﺎﻟﺨﻄﻮط اﻟﻤﺮآﺒﺔ ﻋﻠﻰ اﻟﺠﻬﺎز آﻤﺎ‬FontFamily ‫ ﻟﻠﺤﺼﻮل ﻋﻠﻰ ﻣﺼﻔﻮﻓﺔ‬Families
‫ﻓﻲ اﻟﻤﺜﺎل‬
:‫ﻛﻮد‬
Dim iFonts As New Drawing.Text.InstalledFontCollection
Dim iFamilies() As FontFamily = iFonts.Families()
For Each fFamily As FontFamily In iFamilies
lstFonts.Items.Add(fFamily.Name)
Next fFamily
lstFonts.SelectedIndex = 0
‫ اﻟﺬي ﻳﺤﺪد‬extRenderingHint (enumeration) ‫ ﻋﻠﻰ اﻟﺘﻌﺪاد‬System.Drawing.Text ‫آﻤﺎ ﻳﺤﺘﻮي ﻣﺠﺎل اﻷﺳﻤﺎء‬
: ‫ﻃﺮﻳﻘﺔ رﺳﻢ ﺣﻮاف اﻟﺨﻄﻮط وﻗﻄﻌﺔ اﻟﻜﻮد اﻟﺘﺎﻟﻴﺔ ﺗﺒﻴﻦ آﻴﻔﻴﺔ اﺳﺘﺨﺪاﻣﻪ ﻟﺮﺳﻢ اﻟﺨﻄﻮط‬
:‫ﻛﻮد‬
Private Sub Form1_Paint(ByVal sender As Object, _
ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint

Dim the_font As New Font(Me.Font.FontFamily, 40, FontStyle.Bold,


GraphicsUnit.Pixel)
'‫ﻻ ﺗﺴﺘﺨﺪم ﺧﺎﺻﻴﺔ اﻟﺘﻤﻠﻴﺲ‬.
e.Graphics.TextRenderingHint =
System.Drawing.Text.TextRenderingHint.AntiAliasGridFit
e.Graphics.DrawString("Alias", the_font, Brushes.Black, 5, 5)

'‫اﺳﺘﺨﺪم ﺧﺎﺻﻴﺔ اﻟﺘﻤﻠﻴﺲ‬.


e.Graphics.TextRenderingHint =
System.Drawing.Text.TextRenderingHint.SingleBitPerPixel
e.Graphics.DrawString("Alias", _
the_font, Brushes.Black, 5, 50)
End Sub

‫ ﻟﺮﺳﻢ ﻣﻨﺤﻨﻴﺎت ﻣﺤﺪدة ﺑﺄرﺑﻊ ﻧﻘﺎط ﺗﺤﻜﻢ ﺑﺤﻴﺚ ﻳﺒﺪأ اﻟﻤﻨﺤﻨﻰ ﻋﻨﺪ اﻟﻨﻘﻄﺔ اﻷوﻟﻰ وﻳﻨﺘﻬﻲ ﻋﻨﺪ اﻷﺧﻴﺮة‬DrawBezier ‫ﺗﺴﺘﺨﺪم اﻟﺪاﻟﺔ‬
.‫ﺑﺤﻴﺚ ﻳﺤﺪد اﻟﺨﻂ اﻟﻮاﺻﻞ ﺑﻴﻦ اﻟﻨﻘﻄﺔ اﻷوﻟﻰ واﻟﺜﺎﻧﻴﺔ اﺗﺠﺎﻩ اﻟﻤﻨﺤﻨﻰ ﺑﻴﻨﻤﺎ ﻳﺤﺪد اﻟﺨﻂ ﺑﻴﻦ اﻟﻨﻘﻄﺘﻴﻦ اﻟﺜﺎﻟﺜﺔ واﻟﺮاﺑﻌﺔ اﻻﺗﺠﺎﻩ اﻟﻨﻬﺎﺋﻲ ﻟﻠﻤﻨﺤﻨﻰ‬

‫ ﺗﻀﻢ اﻟﻨﻘﺎط اﻟﺘﻲ‬Point ‫ ﺣﻴﺚ ﻳﺒﺪأ اﻟﻜﻮد ﺑﺘﻌﺮﻳﻒ ﻣﺼﻔﻮﻓﺔ ﻧﻘﺎط ﻣﻦ اﻟﻨﻮع‬DrawBezier ‫ﺗﻤﺜﻞ ﻗﻄﻌﺔ اﻟﻜﻮد اﻟﺘﺎﻟﻴﺔ ﻣﺜﺎﻻ ﻋﻠﻰ اﺳﺘﺨﺪام اﻟﺪاﻟﺔ‬
‫ ﻟﺮﺳﻢ ﺧﻂ ﻳﺼﻞ ﺑﻴﻦ ﺗﻠﻚ اﻟﻨﻘﺎط ﺛﻢ ﻧﻨﺸﺊ‬DrawLine ‫ﻧﺮﻳﺪ اﺳﺘﺨﺪاﻣﻬﺎ ﻟﺮﺳﻢ اﻟﻤﻨﺤﻨﻰ ﺛﻢ ﻧﻨﺸﺊ ﻗﻠﻢ ﻣﺨﻄﻂ ﺑﻠﻮن أﺳﻮد ﻧﺴﺘﺨﺪﻣﻪ ﻣﻦ ﺧﻼل اﻟﺪاﻟﺔ‬
‫ ﻟﺮﺳﻢ اﻟﻤﻨﺤﻨﻰ‬DrawBezier ‫ﻗﻠﻢ ﺑﻠﻮن أزرق ﻧﻤﺮرﻩ ﻟﻠﺪاﻟﺔ‬
:‫ﻛﻮد‬
'‫ﺗﻌﺮﻳﻒ ﻧﻘﺎط اﻟﺘﺤﻜﻢ ﰲ ﻣﻨﺤﲎ اﻟﺪاﻟﺔ‬.
Dim pts() As Point = {
New Point(10, 10), _
New Point(200, 10), _
New Point(50, 200), _
New Point(200, 150)}
'‫ﻋﻤﻠﻴﺔ ﺗﻮﺻﻴﻞ اﻟﻨﻘﺎط ﲞﻂ ﻣﺘﻘﻄﻊ‬
Dim dashed_pen As New Pen(Color.Black, 0)
dashed_pen.DashStyle = Drawing2D.DashStyle.Dash
For i As Integer = 0 To 2
e.Graphics.DrawLine(dashed_pen, pts(i), pts(i + 1))
Next i
'‫ﻋﻤﻠﻴﺔ رﺳﻢ اﳌﻨﺤﲎ‬
e.Graphics.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
Dim bez_pen As New Pen(Color.Blue, 3)
e.Graphics.DrawBezier(bez_pen, pts(0), pts(1), pts(2), pts(3))

33
2008 ‫ ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ‬/ ‫ ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ‬01 ‫ﻟﻌﺪد‬ vb4arab.com ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ‬
‫‪VB .Net‬‬ ‫ﺑﻌﺾ اﻷﻣﻮر اﻷﺳﺎﺳﻴﺔ ﻓﻲ ﻣﻮﺿﻮع اﻟﺮﺳﻢ ﻓﻲ‬
‫‪ ‬‬
‫ﻣﺤﻤﺪ ﺳﺎﻣﺮ أﺑﻮ ﺳﻠﻮ ‪ ‬‬
‫آﻤﺎ ﺗﺴﺘﺨﺪم اﻟﺪاﻟﺔ ‪ DrawBezier‬ﻟﺮﺳﻢ ﺳﻠﺴﻠﺔ ﻣﻦ اﻟﺨﻄﻮط اﻟﻤﻨﺤﻨﻴﺔ اﻟﺘﻲ ﺗﻤﺘﻠﻚ ﻧﻘﺎط ﻧﻬﺎﻳﺔ ﻋﺎﻣﺔ وهﻲ ﺗﺄﺧﺬ آﻮﺳﻴﻄﺔ ﻟﻬﺎ ﻣﺼﻔﻮﻓﺔ‬
‫ﻣﻦ اﻟﻨﻘﺎط ﺗﺤﺪد اﻷﺷﻜﺎل اﻟﻤﻨﺤﻨﻴﺔ اﻟﺘﻲ ﺳﻴﺘﻢ رﺳﻤﻬﺎ ﺑﺤﻴﺚ ﺗﻤﺜﻞ اﻟﻨﻘﺎط اﻷرﺑﻌﺔ اﻷوﻟﻰ اﻟﻤﻨﺤﻨﻰ اﻷول وﻳﺴﺘﺨﺪم اﻟﻤﻨﺤﻨﻲ اﻟﺜﺎﻧﻲ ﻧﻘﻄﺘﻲ ﻧﻬﺎﻳﺔ اﻟﻤﻨﺤﻨﻰ‬
‫‪ ‬‬ ‫‪ ‬‬
‫اﻟﻤﻨﺤﻨﻴﺎت ﻧﺴﺘﺨﺪم اﻟﻤﻌﺎدﻟﺔ‪:‬‬ ‫اﻷول آﻨﻘﺎط ﺑﺪاﻳﺔ ﻟﻪ وﻳﺘﻜﺮر هﺬا ﻋﻠﻰ ﻣﺴﺘﻮى ﺟﻤﻴﻊ اﻟﻨﻘﺎط اﻟﻤﻮﺟﻮدة داﺧﻞ اﻟﻤﺼﻔﻮﻓﺔ وﻹﻧﺸﺎء ﻋﺪد ‪ N‬ﻣﻦ‬
‫‪ 1 * N + 3‬ﻟﺤﺴﺎب ﻋﺪد اﻟﻨﻘﺎط اﻟﻼزﻣﺔ ﻟﺮﺳﻢ ﺗﻠﻚ اﻟﻤﻨﺤﻨﻴﺎت وﺗﻤﺜﻞ ﻗﻄﻌﺔ اﻟﻜﻮد اﻟﺘﺎﻟﻴﺔ ﻣﺜﺎﻻ ﻋﻠﻰ اﺳﺘﺨﺪام اﻟﺪاﻟﺔ ‪DrawBezier‬‬
‫ﻛﻮد‪:‬‬
‫‪.‬ﺗﻌﺮﻳﻒ ﻧﻘﺎط اﻟﺘﺤﻜﻢ ﰲ ﻣﻨﺤﲎ اﻟﺪاﻟﺔ'‬
‫_ { = ‪Dim pts() As Point‬‬
‫_ ‪New Point(10, 10),‬‬
‫_ ‪New Point(200, 10),‬‬
‫_ ‪New Point(50, 200),‬‬
‫_ ‪New Point(200, 150),‬‬
‫_ ‪New Point(250, 50),‬‬
‫_ ‪New Point(250, 200),‬‬
‫})‪New Point(100, 250‬‬

‫ﻋﻤﻠﻴﺔ رﺳﻢ اﳌﻨﺤﲎ'‬


‫‪e.Graphics.SmoothingMode = Drawing2D.SmoothingMode.HighQuality‬‬
‫)‪Dim bez_pen As New Pen(Color.BlueViolet, 3‬‬
‫)‪e.Graphics.DrawBeziers(bez_pen, pts‬‬
‫ﺗﺴﺘﺨﺪم اﻟﺪاﻟﺔ ‪ DrawClosedCurve‬ﻟﺮﺳﻢ ﻣﻨﺤﻨﻰ ﻣﻐﻠﻖ وذﻟﻚ ﺑﻄﺮﻳﻘﺔ ﻣﺸﺎﺑﻬﺔ ﻻﺳﺘﺨﺪام اﻟﺪاﻟﺔ ‪ DrawBezier‬آﻤﺎ ﻓﻲ ﻗﻄﻌﺔ‬
‫اﻟﻜﻮد اﻟﺘﺎﻟﻴﺔ‪:‬‬
‫ﻛﻮد‪:‬‬
‫‪.‬ﺗﻌﺮﻳﻒ ﻧﻘﺎط اﻟﺘﺤﻜﻢ ﰲ ﻣﻨﺤﲎ اﻟﺪاﻟﺔ'‬
‫_ { = ‪Dim pts() As Point‬‬
‫_ ‪New Point(10, 50),‬‬
‫_ ‪New Point(200, 30),‬‬
‫_ ‪New Point(20, 200),‬‬
‫_ ‪New Point(200, 150),‬‬
‫_ ‪New Point(250, 50),‬‬
‫_ ‪New Point(250, 200),‬‬
‫})‪New Point(100, 250‬‬
‫ﻋﻤﻠﻴﺔ رﺳﻢ اﳌﻨﺤﲎ اﳌﻐﻠﻖ'‬
‫‪e.Graphics.SmoothingMode = Drawing2D.SmoothingMode.HighQuality‬‬
‫)‪Dim curve_pen As New Pen(Color.Black, 3‬‬
‫)‪e.Graphics.DrawClosedCurve(curve pen, pts‬‬

‫ﺗﺴﺘﺨﺪم اﻟﺪاﻟﺔ ‪ DrawPath‬ﻟﺮﺳﻢ آﺎﺋﻦ ‪ GraphicsPath‬ﺣﻴﺚ ﺑﻌﺪ إﻧﺸﺎء آﺎﺋﻦ ‪ GraphicsPath‬ﻓﺎرغ ﻧﺴﺘﺨﺪم اﻟﺪاﻟﺔ‬
‫‪ AddString‬ﻹﺿﺎﻓﺔ ﻧﺺ ﻟﻠﻤﺴﺎر وهﻲ ﺗﺄﺧﺬ آﺒﺎرﻣﺘﺮات ﻟﻬﺎ ﺳﻠﺴﻠﺔ ﻧﺼﻴﺔ وﻋﺎﺋﻠﺔ اﻟﺨﻂ وﺷﻜﻞ اﻟﺨﻂ وﺣﺠﻤﻪ وﻧﻘﻄﺔ ﺑﺪء رﺳﻢ اﻟﻨﺺ وﺗﻨﺴﻴﻖ‬
‫اﻟﻨﺺ آﻤﺎ ﻓﻲ ﻗﻄﻌﺔ اﻟﻜﻮد اﻟﺘﺎﻟﻴﺔ اﻟﺘﻲ ﺗﺴﺘﺨﺪم اﻟﺪاﻟﺔ ‪ FillPath‬ﻟﻤﻠﺊ ﻣﻨﻄﻘﺔ ﻣﺤﺪدة ﺑﻜﺎﺋﻦ ‪ GraphicsPath‬ﺛﻢ ﻧﺴﺘﺨﺪم اﻟﺪاﻟﺔ‬
‫‪ DrawPath‬ﻟﺮﺳﻢ اﻟﺤﺪود اﻟﺨﺎرﺟﻴﺔ ﻟﻤﺴﺎر اﻟﺮﺳﻢ‪:‬‬
‫ﻛﻮد‪:‬‬
‫ﺑﻨﺎء آﺎﺋﻦ ﻓﺎرغ'‬
‫‪Dim graphics_path As New Drawing2D.GraphicsPath‬‬
‫إﺿﺎﻓﺔ ﻧﺺ إﱃ اﻟﻜﺎﺋﻦ اﻟﻔﺎرغ'‬
‫_ ‪graphics_path.AddString("GraphicsPath",‬‬
‫_ ‪New FontFamily("Times New Roman"),‬‬
‫_ ‪CInt(FontStyle.Bold),‬‬
‫_ ‪80, New Point(10, 10),‬‬
‫)‪StringFormat.GenericTypographic‬‬
‫‪' Draw the path.‬‬
‫‪e.Graphics.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias‬‬
‫)‪e.Graphics.FillPath(Brushes.Yellow, graphics_path‬‬
‫)‪e.Graphics.DrawPath(New Pen(Color.Blue, 3), graphics path‬‬

‫آﻤﺎ ﻳﻤﻜﻦ اﺳﺘﺨﺪام ‪ GraphicsPath‬ﻟﺮﺳﻢ ﻣﺴﺎر ﻣﺆﻟﻒ ﻣﻦ ﻋﺪة أﺷﻜﺎل ﻣﺮآﺒﺔ ﻣﻌﺎ آﻤﺎ ﻓﻲ ﻗﻄﻌﺔ اﻟﻜﻮد اﻟﺘﺎﻟﻴﺔ اﻟﺘﻲ‬
‫ﺗﺴﺘﺨﺪم اﻟﺪوال ‪ AddEllipse‬و ‪ AddRectangle‬و ‪ AddPie‬ﻹﺿﺎﻓﺔ اﻷﺷﻜﺎل اﻟﺘﻲ ﻧﺮﻳﺪهﺎ ﻟـ‬
‫‪ GraphicsPath‬ﺛﻢ ﻧﻘﻮم ﺑﻌﻤﻠﻴﺔ اﻟﺮﺳﻢ‪.‬‬

‫‪34‬‬
‫ﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
VB .Net ‫ﺑﻌﺾ اﻷﻣﻮر اﻷﺳﺎﺳﻴﺔ ﻓﻲ ﻣﻮﺿﻮع اﻟﺮﺳﻢ ﻓﻲ‬
 
  ‫ﻣﺤﻤﺪ ﺳﺎﻣﺮ أﺑﻮ ﺳﻠﻮ‬
:‫ﻛﻮد‬
Dim graphics_path As New Drawing2D.GraphicsPath
 
graphics_path.AddEllipse(10, 10, 50, 75)
   
graphics_path.AddRectangle(New Rectangle(50, 50, 100, 80))
graphics_path.AddPie(100, 50, 120, 200, 45, 210)

e.Graphics.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
e.Graphics.FillPath(Brushes.Yellow, graphics_path)
e.Graphics.DrawPath(New Pen(Color.Blue, 3), graphics_path)

‫ ﻧﺖ ﺑﺤﻴﺚ ﻳﻤﻜﻨﻚ اﻻﺳﺘﻌﺎﻧﺔ ﺑﻬﺎ ﻟﺮﺳﻢ أي ﺷﻲء ﻳﻤﺮ‬. ‫وﺑﻬﺬا ﻧﻜﻮن ﻗﺪ ﻏﻄﻴﻨﺎ ﻓﻜﺮة ﻣﺒﺪﺋﻴﺔ ﻋﻦ آﻴﻔﻴﺔ اﺳﺘﺨﺪام أدوات اﻟﺮﺳﻢ ﻓﻲ ﻓﻴﺠﻮل ﺑﻴﺴﻚ‬
‫ ﻻﺳﺘﻌﺮاض ﻓﺌﺎت وآﺎﺋﻨﺎت ودوال اﻟﺮﺳﻢ اﻟﻤﻮﺟﻮدة وﻣﻦ ﺛﻢ اﺳﺘﺨﺪاﻣﻬﺎ ﻓﻲ ﺑﺮﻧﺎﻣﺠﻚ ﻟﺮﺳﻢ‬MSDN ‫ﺑﻤﺨﻴﻠﺘﻚ وﻟﻦ ﺗﺠﺪ ﺻﻌﻮﺑﺔ ﻓﻲ اﻻﺳﺘﻌﺎﻧﺔ ﺑﻤﻜﺘﺒﺔ‬
.‫ﻣﺎ ﺗﺮﻳﺪ‬

... ‫اﺧﺘﺮﻧﺎ ﻟﻚ ﻣﻦ ﻣﻜﺘﺒﺔ اﻟﻜﺘﺐ‬


Mastering Visual Basic. NET
.‫ ﻓﻘﺪ ﺣﺎن اﻟﻮﻗﺖ ﻟﻤﻌﺮﻓﺔ هﺬﻩ اﻟﺴﻠﺴﻠﺔ اﻟﻌﻠﻤﻴﺔ اﻟﺮاﺋﻌﺔ‬Mastering ‫ﻟﻤﻦ ﻻ ﻳﻌﺮف اﻟﺴﻠﺴﻠﺔ اﻟﺸﻬﻴﺮة‬
.‫اﻟﻜﺘﺎب اﻟﺬي ﺗﺮوﻧﻪ ﺑﻴﻦ أﻳﺪآﻢ واﺣﺪ ﻣﻦ أﺷﻬﺮ اﻟﻜﺘﺐ اﻟﺘﻲ ﺗﺴﺘﻌﻤﻞ آﻤﺮﺟﻊ ﻓﻲ ﺗﻌﻠﻴﻢ ﻟﻐﺔ اﻟﻔﻴﺒﻲ ﻧﺖ‬
‫اﻟﻤﺤﺘﻮﻳﺎت‬ :‫ﺻﻮرة اﻟﻐﻼف‬
Introduction
I • The Fundamentals
Chapter 1 • Getting Started with VB.NET
Chapter 2 • Visual Basic Projects
Chapter 3 • Visual Basic: The Language
Chapter 4 • Writing and Using Procedures
Chapter 5 • Working with Forms
Chapter 6 • Basic Windows Controls
Chapter 7 • More Windows Controls
Part II • Rolling Your Own Objects
Chapter 8 • Building Custom Classes
Chapter 9 • Building Custom Windows Controls
Chapter 10 • Automating Microsoft Office Applications
Part III • Basic Framework Classes
Chapter 11 • Storing Data in Collections
Chapter 12 • Handling Strings, Characters, and Dates
Chapter 13 • Working with Folders and Files
Part IV • Intermediate Programming
Chapter 14 • Drawing and Painting with Visual Basic ‫ اﻧﺠﻠﻴﺰﻳﺔ‬:‫اﻟﻠﻐﺔ‬
Chapter 15 • Printing with VB.NET Petroutsos Evangelos:‫اﻟﻤﺆﻟﻒ‬
Chapter 16 • The TreeView and ListView Controls PDF :‫ﻧﻮع اﻟﻤﻠﻒ‬
Chapter 17 • Error Handling and Debugging ‫ ﻣﻴﻐﺎ‬14.8 :‫ﺣﺠﻢ اﻟﻤﻠﻒ‬
Chapter 18 • Recursive Programming 1 :‫اﻟﻄﺒﻌﺔ‬
Chapter 19 • The Multiple Document Interface 1100 :‫ﻋﺪد اﻟﺼﻔﺤﺎت‬
Part V • Database Programming with VB.NET 2002 :‫ﺗﺎرﻳﺦ اﻟﻨﺸﺮ‬
Chapter 20 • Databases: Architecture and Basic Concepts   Sybex :‫دار اﻟﻨﺸﺮ‬
Chapter 21 • Building Database Applications with ADO.NET  
Chapter 22 • Programming the ADO.NET Objects ‫ﻟﺘﻨﺰﻳﻞ اﻟﻜﺘﺎب اﺿﻐﻂ هﻨﺎ‬
Part VI • VB.NET on the Web
Chapter 23 • Introduction to Web Programming
Chapter 24 • Accessing Data on the Web
Chapter 25 • XML Web Services
Index

35
2008 ‫ ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ‬/ ‫ ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ‬01 ‫ﻟﻌﺪد‬ vb4arab.com ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ‬
‫ﺟﺪﻳﺪ اﻟﻔﻴﺒﻲ ‪ /2008‬اﻻﺳﺘﺪﻻل اﻟﻤﺤﻠﻲ ﻋﻠﻰ اﻟﻨﻮع‬
‫‪ ‬‬
‫ﻣﺤﻤﺪ ﺳﺎﻣﺮ أﺑﻮ ﺳﻠﻮ ‪ ‬‬
‫ﻳﺴﺘﺨﺪم ﻣﺘﺮﺟﻢ اﻟﻔﻴﺠﻮال ﺑﻴﺴﻚ ‪ 2008‬اﻻﺳﺘﺪﻻل ﻋﻠﻰ اﻟﻨﻮع ‪ Type Inference‬ﻟﺘﺤﺪﻳﺪ ﻧﻮع اﻟﻤﺘﻐﻴﺮات اﻟﻤﺤﻠﻴﺔ اﻟﺘﻲ ﺗﻢ اﻟﺘﺼﺮﻳﺢ ﻋﻨﻬﺎ‬
‫ﺑﺪون اﺳﺘﺨﺪام ﻓﻘﺮة ‪ As‬ﻓﻲ ﺗﻌﺒﻴﺮ اﻟﺘﺼﺮﻳﺢ ﺣﻴﺚ ﻳﺴﺘﺪل اﻟﻤﺘﺮﺟﻢ ﻋﻠﻰ ﻧﻮع اﻟﻤﺘﻐﻴﺮ ﻣﻦ ﻧﻮع اﻟﺘﻌﺒﻴﺮ اﻟﺬي ﻳﻀﺒﻂ ﻗﻴﻤﺔ ذﻟﻚ اﻟﻤﺘﻐﻴﺮ ﻣﻤﺎ ﻳﻮﻓﺮ إﻣﻜﺎﻧﻴﺔ‬
‫‪ ‬‬ ‫ﺗﻌﺮﻳﻒ اﻟﻤﻐﻴﺮات ﺑﺪون ﺗﺤﺪﻳﺪ ﻧﻮﻋﻬﺎ آﻤﺎ ﻓﻲ اﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ‪:‬‬
‫ﻛﻮد‪:‬‬
‫‪ ‬‬
‫)(‪Public Sub inferenceExample‬‬
‫‪' Using explicit typing.‬‬
‫‪ ‬‬ ‫‪ ‬‬
‫‪Dim num1 As Integer‬‬ ‫‪= 3‬‬

‫‪' Using local type inference.‬‬


‫‪Dim num2 = 3‬‬
‫‪End Sub‬‬

‫وﻻ ﻳﻤﻜﻦ اﺳﺘﺨﺪام اﻻﺳﺘﺪﻻل اﻟﻤﺤﻠﻲ ﻋﻠﻰ اﻟﻨﻮع ﻋﻨﺪ ﺗﻌﺮﻳﻒ اﻟﺤﻘﻮل ﻓﻲ اﻟﻔﺌﺔ ‪ Class Fields‬ﻓﺈن آﺎن ‪ num2‬ﻓﻲ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ ﺣﻘﻼ ﻓﻲ‬
‫ﻓﺌﺔ ﺑﺪﻻ ﻋﻦ آﻮﻧﻪ ﻣﺘﻐﻴﺮا ﻣﺤﻠﻴﺎ ﻓﺴﻮف ﻳﻮﻟﺪ اﻟﺘﺼﺮﻳﺢ ﺧﻄﺄ إذا آﺎن ‪ Option Strict On‬وﺳﻮف ﻳﺼﻨﻒ ‪ num2‬ﻋﻠﻰ أﻧﻪ آﺎﺋﻦ‬
‫‪ Object‬إن آﺎن ‪ Option Strict Off‬وﺑﺸﻜﻞ ﻣﺸﺎﺑﻪ ﻓﻨﻮع اﻟﻤﺘﻐﻴﺮات اﻟﺴﺎآﻨﺔ ‪ Static Variables‬ﻻ ﻳﻤﻜﻦ اﻻﺳﺘﺪﻻل ﻋﻠﻴﻬﺎ إن آﺎن‬
‫‪ Option Strict On‬وإن آﺎن ‪ Option Strict Off‬ﻓﻨﻮع اﻟﻤﺘﻐﻴﺮ اﻟﺴﺎآﻦ ﺳﻴﻜﻮن آﺎﺋﻦ ‪ Object‬ﻓﺈن ﻟﻢ ﺗﻜﻦ ﺗﺮﻳﺪ ﻣﻦ‬
‫اﻟﻤﺘﻐﻴﺮ ‪ num2‬ﻓﻲ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ أن ﻳﻜﻮن ﻣﻦ اﻟﻨﻮع ‪ Integer‬ﻓﻴﻤﻜﻨﻚ ﺗﺤﺪﻳﺪ ﻧﻮﻋﺎ ﺁﺧﺮ ﻋﻨﺪ اﻟﺘﺼﺮﻳﺢ ﻋﻨﻪ‬
‫ﻛﻮد‪:‬‬
‫‪Dim num3 As Object = 3‬‬
‫‪Dim num4 As Double = 3‬‬
‫واﻟﻜﻮد اﻟﺬي ﻳﺴﺘﺨﺪم اﺳﺘﺪﻻل اﻟﻨﻮع ﻳﺸﺎﺑﻪ اﻟﻜﻮد اﻟﺬي ﻳﻌﺘﻤﺪ ﻋﻠﻰ اﻟﺮﺑﻂ اﻟﻤﺘﺄﺧﺮ ‪ Late Binding‬اﻟﺬي ﺳﻴﻜﻮن ﻧﻮﻋﻪ ﻣﻌﺮوﻓﺎ ﻓﻘﻂ ﻓﻲ زﻣﻦ‬
‫اﻟﺘﺸﻐﻴﻞ‪ .‬وﻣﻌﺮﻓﺔ اﻟﻨﻮع ﺑﺸﻜﻞ ﻣﺒﻜﺮ ﻳﻤﻜﻦ اﻟﻤﺘﺮﺟﻢ ﻣﻦ ﺗﺤﺪﻳﺪ اﻟﻤﺸﺎآﻞ ﻗﺒﻞ اﻟﺘﻨﻔﻴﺬ وﺣﺠﺰ اﻟﺬاآﺮة ﺑﺪﻗﺔ وإﺟﺮاء ﻋﻤﻠﻴﺎت اﻟﺘﺤﺴﻴﻦ اﻷﺧﺮى ﺑﺎﻹﺿﺎﻓﺔ‬
‫إﻟﻰ ﺗﻤﻜﻴﻦ ﺑﻴﺌﺔ اﻟﺘﻄﻮﻳﺮ ﻣﻦ ﺗﺰوﻳﺪ اﻟﻤﺒﺮﻣﺞ ﺑـ ‪ IntelliSense‬واﻟﻤﺴﺎﻋﺪة ﺣﻮل أﻋﻀﺎء ذﻟﻚ اﻟﻐﺮض ﺑﺎﻹﺿﺎﻓﺔ إﻟﻰ ﺗﻔﻀﻴﻠﻪ ﻻﻋﺘﺒﺎرات ﺧﺎﺻﺔ‬
‫ﺑﺎﻷداء ﺑﺴﺒﺐ أن ﺟﻤﻴﻊ اﻟﺒﻴﺎﻧﺎت اﻟﺘﻲ ﺗﺨﺰن ﺑﺎﺳﺘﺨﺪام اﻟﺮﺑﻂ اﻟﻤﺘﺄﺧﺮ ﻳﺠﺐ ﺗﻐﻠﻴﻔﻬﺎ وآﺄﻧﻬﺎ ﻣﻦ اﻟﻨﻮع ‪ Object‬واﻟﻮﺻﻮل إﻟﻰ اﻷﻋﻀﺎء ﻓﻲ زﻣﻦ‬
‫اﻟﺘﺸﻐﻴﻞ ﺳﻴﻜﻮن أﺑﻄﺄ‪.‬‬
‫ﻳﺤﺪث اﻻﺳﺘﺪﻻل ﻋﻠﻰ اﻟﻨﻮع ﻋﻨﺪﻣﺎ ﻳﺘﻢ اﻟﺘﺼﺮﻳﺢ ﻋﻦ اﻟﻤﺘﻐﻴﺮ ﺑﺪون اﺳﺘﺨﺪام ﻓﻘﺮة ‪ As‬ﻓﻲ ﺗﻌﺒﻴﺮ اﻟﺘﺼﺮﻳﺢ وﺿﺒﻂ ﻗﻴﻤﺔ ﻟﺬﻟﻚ اﻟﻤﺘﻐﻴﺮ‬
‫ﻓﻴﺴﺘﺨﺪم اﻟﻤﺘﺮﺟﻢ ﻧﻮع ﺗﻠﻚ اﻟﻘﻴﻤﺔ آﻨﻮع ﻟﻠﻤﺘﻐﻴﺮ ﻓﻤﺜﻼ ﺳﻄﻮر اﻟﻜﻮد اﻟﺘﺎﻟﻴﺔ ﺗﻌﺮف ﻣﺘﻐﻴﺮا ﻣﻦ اﻟﻨﻮع ‪String‬‬

‫ﻛﻮد‪:‬‬
‫‪' Using explicit typing.‬‬
‫"‪Dim name1 As String = "Springfield‬‬
‫‪' Using local type inference.‬‬
‫"‪Dim name2 = "Springfield‬‬
‫وﻳﺴﺘﻌﺮض اﻟﻜﻮد اﻟﺘﺎﻟﻲ ﻃﺮﻳﻘﺘﺎن ﻣﺘﻜﺎﻓﺌﺘﺎن ﻹﻧﺸﺎء ﻣﺼﻔﻮﻓﺔ ﻣﻦ اﻟﻨﻮع ‪Integer‬‬
‫ﻛﻮد‪:‬‬
‫‪' Using explicit typing.‬‬
‫}‪Dim someNumbers1() As Integer = New Integer() {4, 18, 11, 9, 8, 0, 5‬‬
‫‪' Using local type inference.‬‬
‫}‪Dim someNumbers2 = New Integer() {4, 18, 11, 9, 8, 0, 5‬‬
‫آﻤﺎ ﻳﻤﻜﻨﻚ اﺳﺘﺨﺪام اﻻﺳﺘﺪﻻل ﻋﻠﻰ اﻟﻨﻮع ﻟﺘﺤﺪﻳﺪ ﻧﻮع ﻣﺘﻐﻴﺮ اﻟﺘﺤﻜﻢ ﻟﺤﻠﻘﺔ ﺗﻜﺮارﻳﺔ ﻓﻔﻲ اﻟﻜﻮد اﻟﺘﺎﻟﻲ ﺳﻴﺘﻌﺮف اﻟﻤﺘﺮﺟﻢ ﻋﻠﻰ ‪ num‬ﺑﺄﻧﻪ ﻣﻦ اﻟﻨﻮع‬
‫‪ Integer‬ﻷن ‪ someNumbers2‬ﻋﺒﺎرة ﻋﻦ ﻣﺼﻔﻮﻓﺔ ‪Integer‬‬
‫ﻛﻮد‪:‬‬
‫‪Dim total = 0‬‬
‫‪For Each number In someNumbers2‬‬
‫‪total += number‬‬
‫‪Next‬‬
‫وﻳﺴﺘﺨﺪم اﻻﺳﺘﺪﻻل ﻋﻠﻰ اﻟﻨﻮع ﻓﻲ اﻟﻌﺒﺎرة ‪ Using‬أﻳﻀﺎ ﻟﺘﺤﺪﻳﺪ ﻧﻮع اﺳﻢ اﻟﻤﺼﺪر آﻤﺎ هﻮ واﺿﺢ ﻓﻲ اﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ‪:‬‬
‫ﻛﻮد‪:‬‬
‫‪Using proc = New System.Diagnostics.Process‬‬
‫‪' Insert code to work with the resource.‬‬
‫‪End Using‬‬

‫‪36‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫ﺟﺪﻳﺪ اﻟﻔﻴﺒﻲ ‪ /2008‬اﻻﺳﺘﺪﻻل اﻟﻤﺤﻠﻲ ﻋﻠﻰ اﻟﻨﻮع‬
‫‪ ‬‬
‫ﻣﺤﻤﺪ ﺳﺎﻣﺮ أﺑﻮ ﺳﻠﻮ ‪ ‬‬
‫وﻳﺴﺘﺪل ﻋﻠﻰ ﻧﻮع اﻟﻤﺘﻐﻴﺮ ﻣﻦ اﻟﻘﻴﻤﺔ اﻟﻤﻌﺎدة ﻣﻦ اﻹﺟﺮاء أﻳﻀﺎ آﻤﺎ هﻮ ﻇﺎهﺮ ﻓﻲ اﻟﻜﻮد اﻟﺘﺎﻟﻲ ﺣﻴﺚ ﻳﻜﻮن ‪ pList1‬و ‪ pList2‬ﻋﺒﺎرة ﻋﻦ ‪Lists‬‬
‫‪of Processes‬‬
‫‪ ‬‬ ‫ﻛﻮد‪:‬‬
‫‪' Using explicit typing.‬‬
‫‪ ‬‬ ‫)(‪Dim pList1() As Process = Process.GetProcesses‬‬
‫‪' Using local type inference.‬‬
‫‪ ‬‬ ‫)(‪Dim pList2 = Process.GetProcesses‬‬
‫وﻗﺪ ﻗﺪم ﻓﻴﺠﻮل ﺑﻴﺴﻚ ‪ 2008‬ﺧﻴﺎرا ﺟﺪﻳﺪا هﻮ ‪ Option Infer‬ﻳﻤﻜﻨﻚ ﻣﻦ ﺗﺤﺪﻳﺪ إذا آﺎن اﻻﺳﺘﺪﻻل اﻟﻤﺤﻠﻲ ﻋﻠﻰ اﻟﻨﻮع ﻣﺴﻤﻮﺣﺎ أم ﻻ ﻓﻲ‬
‫‪ ‬‬ ‫‪ ‬‬
‫اﻟﻤﻠﻒ‪:‬‬ ‫ﻣﻠﻒ ﻣﻌﻴﻦ‪ .‬ﻓﻠﺘﻤﻜﻴﻦ أو ﺗﻌﻄﻴﻞ ﺧﻴﺎر اﻻﺳﺘﺪﻻل ﻋﻠﻰ اﻟﻨﻮع اآﺘﺐ اﻟﺘﻌﺒﻴﺮ اﻟﻤﻨﺎﺳﺐ ﻣﻦ اﻟﺴﻄﺮﻳﻦ اﻟﺘﺎﻟﻴﻴﻦ ﻓﻲ ﺑﺪاﻳﺔ‬
‫ﻛﻮد‪:‬‬
‫‪Option Infer On‬‬
‫‪Option Infer Off‬‬
‫وإن ﻟﻢ ﺗﻘﻢ ﺑﺘﺤﺪﻳﺪ ﻗﻴﻤﺔ ﻟﻠﺨﻴﺎر ‪ Option Infer‬ﻓﻲ اﻟﻜﻮد ﻓﺎﻟﻤﺘﺮﺟﻢ ﺳﻴﺴﺘﺨﺪم اﻟﺨﻴﺎر اﻻﻓﺘﺮاﺿﻲ ‪ Option Infer On‬ﻣﻦ أﺟﻞ‬
‫اﻟﻤﺸﺎرﻳﻊ اﻟﺘﻲ ﺗﻢ إﻧﺸﺎؤهﺎ ﻓﻲ ‪ Visual Basic 2008‬واﻟﺨﻴﺎر ‪ Option Infer Off‬ﻣﻦ أﺟﻞ اﻟﻤﺸﺎرﻳﻊ اﻟﺘﻲ ﺗﻤﺖ ﺗﺮﻗﻴﺘﻬﺎ ﻣﻦ إﺻﺪارات‬
‫ﺳﺎﺑﻘﺔ‪ .‬وإن ﺗﻀﺎرﺑﺖ ﻗﻴﻤﺔ اﻟﺨﻴﺎر ‪ Option Infer‬ﻓﻲ اﻟﻤﻠﻒ ﻣﻊ اﻟﻘﻴﻤﺔ اﻟﻤﻀﺒﻮﻃﺔ ﻓﻲ ﺧﻴﺎرات ﺑﻴﺌﺔ اﻟﺘﻄﻮﻳﺮ أو ﻓﻲ ﺳﻄﺮ اﻷواﻣﺮ ﻓﺴﻮف ﻳﺘﻢ‬
‫اﺳﺘﺨﺪام اﻟﻘﻴﻤﺔ اﻟﻤﻮﺟﻮدة ﻓﻲ اﻟﻤﻠﻒ‪.‬‬
‫وﻳﺴﺘﺨﺪم اﻻﺳﺘﺪﻻل ﻋﻠﻰ اﻟﻨﻮع ﻓﻘﻂ ﻓﻲ اﻟﻤﺘﻐﻴﺮات ﻏﻴﺮ اﻟﺴﺎآﻨﺔ ‪ Non-Static‬وﻻ ﻳﻤﻜﻦ اﺳﺘﺨﺪاﻣﻬﺎ ﻓﻲ ﺗﻌﺮﻳﻒ ﺣﻘﻮل اﻟﻔﺌﺔ ‪ Class Fields‬أو‬
‫اﻟﺨﺼﺎﺋﺺ ‪ Properties‬أو اﻹﺟﺮاءات ‪Functions‬‬

‫‪Using‬‬ ‫ﻣﻌﻠﻮﻣﺔ‪ :‬اﻟﻜﻠﻤﺔ اﻟﻤﺤﺠﻮزة‬


‫اﻟﻜﻠﻤﺔ اﻟﻤﺤﺠﻮزة ‪ Using‬ﺗﺴﺘﺨﺪم ﻟﺘﻌﺮﻳﻒ اﻟﻤﺘﻐﻴﺮات وﻟﻜﻨﻬﺎ ﺗﻤﺘﺎز ﺑﺄﻧﻬﺎ ﺗﻘﻮم ﺑﻌﻤﻞ ﺗﺤﺮﻳﺮ ﻟﻠﻤﺴﺎر أي ‪ Dispose‬ﺗﻠﻘﺎﺋﻴﺎ ﺑﺪون ﺗﺪﺧﻞ ﻣﻨﻚ‬
‫ﻟﻠﺘﺨﻠﺺ ﻣﻦ اﻟﻤﺴﺎﺣﺎت اﻟﻤﻮﺟﻮدة ﻓﻲ اﻟﺬاآﺮة ﻣﻦ ﻃﺮف اﻟﻜﺎﺋﻨﺎت واﻟﺘﻲ ﻻ ﻧﺤﺘﺎﺟﻬﺎ أو اﻟﺘﻲ ﻗﺪ أﺗﻤﺖ ﻋﻤﻠﻬﺎ وهﺬا ﺣﻔﻈﺎ ﻋﻠﻰ ﺳﺮﻋﺔ اﻟﺒﺮﻧﺎﻣﺞ‬
‫وﺗﻄﺒﻴﻘﺎ ﻟﻤﺒﺪأ ﺗﺤﺴﻴﻦ اﻷداء )ال ‪.(Optimization‬‬

‫ﻛﻮد‪:‬‬

‫‪Using resource As New resourceType‬‬


‫‪' Insert code to work with resource.‬‬
‫‪End Using‬‬

‫‪' THE FOLLOWING TRY CONSTRUCTION IS EQUIVALENT TO THE USING BLOCK‬‬


‫‪Dim resource As New resourceType‬‬
‫‪Try‬‬
‫‪' Insert code to work with resource.‬‬
‫‪Catch ex As Exception‬‬
‫‪' Insert code to process exception.‬‬
‫‪Finally‬‬
‫‪' Insert code to do additional processing before disposing of resource.‬‬
‫)(‪resource.Dispose‬‬
‫‪End Try‬‬

‫‪37‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫‪Extension Methods‬‬ ‫ﺟﺪﻳﺪ اﻟﻔﻴﺒﻲ ‪/2008‬اﻟﻄﺮق اﻟﻤُﻮَﺳّﻌﺔ‬
‫‪ ‬‬
‫ﻣﺤﻤﺪ ﺳﺎﻣﺮ أﺑﻮ ﺳﻠﻮ ‪ ‬‬
‫ﻳﻘﺪم ﻓﻴﺠﻮل ﺑﻴﺴﻚ ‪ 2008‬اﻟﻄﺮق اﻟ ُﻤ َﻮﺳﱢﻌﺔ ‪ Extension Methods‬اﻟﺘﻲ ﺗﻤﻜﻦ اﻟﻤﻄﻮر ﻣﻦ إﺿﺎﻓﺔ وﻇﺎﺋﻒ ﻣﺨﺼﺼﺔ ﻷﻧﻮاع اﻟﺒﻴﺎﻧﺎت‬
‫اﻟﻤﻌﺮﻓﺔ ﺳﺎﺑﻘﺎ ﻣﻦ دون إﻧﺸﺎء ﻧﻮع ﺟﺪﻳﺪ ﻣﺸﺘﻖ‪ .‬ﻣﻤﺎ ﻳﻤﻜﻨﻚ ﻣﻦ آﺘﺎﺑﺔ ﻃﺮﻳﻘﺔ ﻳﻤﻜﻦ أن ﺗﺴﺘﺪﻋﻰ آﻤﺎ ﻟﻮ آﺎﻧﺖ ﻣﻦ ﺿﻤﻦ اﻟﻨﻮع اﻟﻤﻮﺟﻮد‪ .‬واﻟﻄﺮﻳﻘﺔ‬
‫‪ ‬‬ ‫اﻟﻤﻮﺳﻌﺔ ﻳﻤﻜﻦ أن ﺗﻜﻮن إﺟﺮاء ‪ Sub‬أو وﻇﻴﻔﺔ ‪ Function‬وﻻ ﻳﻤﻜﻦ أن ﺗﻜﻮن ﺧﺎﺻﻴﺔ ‪ Property‬أو ﺣﻘﻞ ‪ Field‬أو ﺣﺪث ‪Event‬‬
‫اﻷﺳﻤﺎء‬ ‫ﻣﺠﺎل‬ ‫ﻣﻦ‬ ‫>)(‪<Extension‬‬ ‫ﺑﺎﻟﺼﻔﺔ‬ ‫ﺗﻌﻠﻴﻤﻬﺎ‬ ‫ﻳﺠﺐ‬ ‫اﻟﻤﻮﺳﻌﺔ‬ ‫اﻟﻄﺮق‬ ‫وﺟﻤﻴﻊ‬
‫‪ ‬‬
‫‪System.Runtime.CompilerServices‬وﺗﺤﺪد اﻟﻮﺳﻴﻄﺔ اﻷوﻟﻰ ﻓﻲ اﻟﻄﺮق اﻟﻤﻮﺳﻌﺔ ﻧﻮع اﻟﺒﻴﺎﻧﺎت اﻟﻤﺮاد اﻟﺬي ﺳﻴﻄﻠﻖ‬
‫‪ ‬‬ ‫اﻟﻄﺮﻳﻘﺔ‪.‬‬
‫ﻓﻲ اﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ ﻳﺘﻢ ﺗﺤﺪﻳﺪ اﻟﻄﺮﻳﻘﺔ ‪ Print‬ﻟﺘﻮﺳﻴﻊ ﻧﻮع اﻟﺒﻴﺎﻧﺎت ‪ string‬واﻟﺘﻲ ﺗﺴﺘﺨﺪم ‪ Console.WriteLine‬ﻹﻇﻬﺎر‬
‫‪ ‬‬ ‫اﻟﻨﺺ ﺣﻴﺚ ﻳﺆﺳﺲ اﻟﻮﺳﻴﻂ ‪ aString‬أن اﻟﻄﺮﻳﻘﺔ ‪ Print‬ﺗﻮﺳﻊ اﻟﻔﺌﺔ ‪String‬‬
‫ﻛﻮد‪:‬‬
‫‪ ‬‬ ‫‪ ‬‬
‫‪Imports System.Runtime.CompilerServices‬‬
‫‪Module StringExtensions‬‬
‫_ >)(‪<Extension‬‬
‫)‪Public Sub Print(ByVal aString As String‬‬
‫)‪Console.WriteLine(aString‬‬
‫‪End Sub‬‬
‫‪End Module‬‬
‫ﻻﺣﻆ أن ﺗﻌﺮﻳﻒ اﻟﻄﺮﻳﻘﺔ اﻟﻤﻮﺳﻌﺔ ﻣﺤﺪد ﺑﺎﻟﺼﻔﺔ >)(‪ <Extension‬وﻳﻜﻮن ﺗﻌﻠﻴﻢ اﻟـ ‪ Module‬اﻟﺤﺎوﻳﺔ ﻟﻠﻄﺮﻳﻘﺔ اﺧﺘﻴﺎري وﻟﻜﻦ آﻞ‬
‫اﻷﺳﻤﺎء‬ ‫ﻣﺠﺎل‬ ‫اﺳﺘﻴﺮاد‬ ‫ﻳﺠﺐ‬ ‫آﻤﺎ‬ ‫اﻟﻤﺬآﻮرة‬ ‫ﺑﺎﻟﺼﻔﺔ‬ ‫ﺗﻌﻠﻴﻤﻬﺎ‬ ‫ﻳﺘﻢ‬ ‫أن‬ ‫ﻳﺠﺐ‬ ‫ﻣﻮﺳﻌﺔ‬ ‫ﻃﺮﻳﻘﺔ‬
‫‪ System.Runtime.CompilerServices‬ﺣﺘﻰ ﻧﺘﻤﻜﻦ ﻣﻦ اﻟﻮﺻﻮل إﻟﻰ ﺗﻠﻚ اﻟﺼﻔﺔ‪ .‬وﻻ ﻳﻤﻜﻦ ﺗﻌﺮﻳﻒ اﻟﻄﺮق اﻟﻤﻮﺳﻌﺔ إﻻ‬
‫ﺿﻤﻦ ‪ Module‬وﻧﻤﻮذﺟﻴﺎ ﺗﻌﺮف اﻟﻄﺮﻳﻘﺔ اﻟﻤﻮﺳﻌﺔ ﻓﻲ ﻧﻔﺲ اﻟـ ‪ Module‬اﻟﺘﻲ ﺳﺘﺴﺘﺪﻋﻴﻬﺎ وﺑﺪﻻ ﻋﻦ ذﻟﻚ ﻳﺘﻢ اﺳﺘﻴﺮادهﺎ ﻓﻲ اﻟﻤﻜﺎن اﻟﺬي‬
‫ﺳﻨﺤﺘﺎج ﻻﺳﺘﺨﺪاﻣﻬﺎ ﻓﻴﻪ ﻓﺒﻌﺪ اﻟـ ‪ Module‬اﻟﺘﻲ ﺗﺤﺘﻮي ﻋﻠﻰ اﻟﻄﺮﻳﻘﺔ ‪ Print‬ﻳﻤﻜﻦ اﺳﺘﺪﻋﺎء اﻟﻄﺮﻳﻘﺔ ﻋﻨﺪﻣﺎ ﻳﻜﻮن هﻨﺎك ﻃﺮﻳﻘﺔ ﻻ ﺗﺄﺧﺬ وﺳﺎﺋﻂ‬
‫ﻣﺜﻞ ‪ToUpper‬‬
‫ﻛﻮد‪:‬‬
‫‪Imports ConsoleApplication2.StringExtensions‬‬
‫‪Module Module1‬‬
‫)(‪Sub Main‬‬
‫"‪Dim example As String = "Hello‬‬
‫‪' Call to extension method Print.‬‬
‫)(‪example.Print‬‬

‫‪' Call to instance method ToUpper.‬‬


‫)(‪example.ToUpper‬‬
‫)(‪example.ToUpper.Print‬‬
‫‪End Sub‬‬
‫‪End Module‬‬
‫وﻓﻲ اﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ ﺗﻜﻮن ‪ PrintAndPunctuate‬ﻃﺮﻳﻘﺔ ﻣﻮﺳﻌﺔ أﺧﺮى ﻟﻠﻨﻮع ‪ String‬وﻓﻲ هﺬﻩ اﻟﻤﺮة ﺗﻤﺘﻠﻚ وﺳﻴﻄﺘﻴﻦ اﻷوﻟﻰ‬
‫‪aString‬ﺗﺤﺪد أن اﻟﻄﺮﻳﻘﺔ ﺗﻮﺳﻊ اﻟﻨﻮع ‪ String‬وﺗﻜﻮن اﻟﻮﺳﻴﻄﺔ اﻟﺜﺎﻧﻴﺔ ‪ punc‬ﻋﺒﺎرة ﻋﻦ ﺳﻠﺴﻠﺔ ﻣﻦ ﻋﻼﻣﺎت اﻟﺘﺮﻗﻴﻢ اﻟﺘﻲ ﺳﺘﻤﺮر ﻋﻨﺪ‬
‫اﺳﺘﺪﻋﺎء اﻟﻄﺮﻳﻘﺔ اﻟﺘﻲ ﺗﻈﻬﺮ ﻧﺼﺎ ﻣﺘﺒﻮﻋﺎ ﺑﻌﻼﻣﺎت اﻟﺘﺮﻗﻴﻢ‬
‫ﻛﻮد‪:‬‬
‫‪Imports ConsoleApplication2.StringExtensions‬‬
‫‪Module Module1‬‬
‫)(‪Sub Main‬‬
‫"‪Dim example As String = "Hello‬‬
‫‪' Call to extension method Print.‬‬
‫)(‪example.Print‬‬

‫‪' Call to instance method ToUpper.‬‬


‫)(‪example.ToUpper‬‬
‫)(‪example.ToUpper.Print‬‬
‫‪End Sub‬‬
‫‪End Module‬‬
‫ﺣﻴﺚ ﻳﺘﻢ اﺳﺘﺪﻋﺎء اﻟﻄﺮﻳﻘﺔ ﺑﺘﻤﺮﻳﺮ وﺳﻴﻄﺔ ﻧﺼﻴﺔ ﻟـ ‪ punc‬ﻣﺜﻼ)"‪example.PrintAndPunctuate(".‬‬
‫وﻳﻈﻬﺮ اﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ ﺗﺤﺪﻳﺪ واﺳﺘﺪﻋﺎء ‪ Print‬و ‪ PrintAndPunctuate‬واﺳﺘﻴﺮاد‬
‫‪System.Runtime.CompilerServices‬اﻟﺬي ﻳﻤﻜﻦ ﻣﻦ اﻟﻮﺻﻮل إﻟﻰ اﻟﺼﻔﺔ اﻟﺘﻲ ﺗﺤﺪد اﻟﻄﺮق‬
‫اﻟﻤﻮﺳﻌﺔ‪.‬‬

‫‪38‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫‪Extension Methods‬‬ ‫ﺟﺪﻳﺪ اﻟﻔﻴﺒﻲ ‪/2008‬اﻟﻄﺮق اﻟﻤُﻮَﺳِّﻌﺔ‬
‫‪ ‬‬
‫ﻣﺤﻤﺪ ﺳﺎﻣﺮ أﺑﻮ ﺳﻠﻮ ‪ ‬‬
‫ﻛﻮد‪:‬‬
‫‪Imports System.Runtime.CompilerServices‬‬
‫‪ ‬‬ ‫‪Module StringExtensions‬‬
‫_ >)(‪<Extension‬‬
‫‪ ‬‬ ‫)‪Public Sub Print(ByVal aString As String‬‬
‫)‪Console.WriteLine(aString‬‬
‫‪ ‬‬ ‫‪End Sub‬‬
‫_ >)(‪<Extension‬‬
‫)‪Public Sub PrintAndPunctuate(ByVal aString As String, ByVal punc As String‬‬
‫‪ ‬‬
‫)‪Console.WriteLine(aString & punc‬‬
‫‪End Sub‬‬
‫‪ ‬‬ ‫‪End Module‬‬ ‫‪ ‬‬
‫ﺛﻢ ﻳﺘﻢ اﺳﺘﺪﻋﺎء اﻟﻄﺮق اﻟﻤﻮﺳﻌﺔ‬
‫ﻛﻮد‪:‬‬
‫‪Imports ConsoleApplication2.StringExtensions‬‬
‫‪Module Module1‬‬
‫)(‪Sub Main‬‬
‫"‪Dim example As String = "Example string‬‬
‫)(‪example.Print‬‬
‫"‪example = "Hello‬‬
‫)"‪example.PrintAndPunctuate(".‬‬
‫)"!!!!"(‪example.PrintAndPunctuate‬‬
‫‪End Sub‬‬
‫‪End Module‬‬
‫آﻞ ﻣﺎ ﻳﺘﻄﻠﺒﻪ ﺗﺸﻐﻴﻞ ﻃﺮق ﻣﻮﺳﻌﺔ آﻬﺬﻩ هﻲ أن ﺗﻜﻮن ﺿﻤﻦ ﻣﺠﺎل رؤﻳﺔ اﻟﻜﻮد ﻓﺈن آﺎﻧﺖ ‪ Module‬ﺿﻤﻦ اﻟﻤﺠﺎل ﻓﺴﺘﻜﻮن اﻟﻄﺮﻳﻘﺔ ﻣﺮﺋﻴﺔ ﻣﻦ‬
‫ﻗﺒﻞ ‪ IntelliSense‬وﻳﻤﻜﻦ اﺳﺘﺪﻋﺎؤهﺎ آﻤﺎ ﻟﻮ آﺎﻧﺖ ﻣﻦ ﺿﻤﻦ اﻟﻄﺮق اﻻﻋﺘﻴﺎدﻳﺔ ‪.‬‬
‫ﻻﺣﻆ اﻧﻪ ﻋﻨﺪﻣﺎ ﻳﺘﻢ اﺳﺘﺪﻋﺎء اﻟﻄﺮق اﻟﻤﻮﺳﻌﺔ ﻻ ﻳﺘﻢ ﺗﻤﺮﻳﺮ ﻗﻴﻢ ﻟﻠﻮﺳﻴﻄﺔ اﻷوﻟﻰ ﻓﺎﻟﻮﺳﻴﻄﺔ ‪ aString‬ﻓﻲ اﻟﻄﺮﻳﻘﺔ اﻟﺴﺎﺑﻘﺔ ﺗﺤﺪد أﻧﻬﺎ ﻳﺠﺐ أن‬
‫ﺗﺴﺘﺪﻋﻰ ﻣﻦ اﻟﻨﻮع ‪ String‬واﻟﻤﺘﺮﺟﻢ ﺳﻴﺴﺘﺨﺪم اﻟﻤﺘﻐﻴﺮ اﻟﻨﺼﻲ آﻘﻴﻤﺔ ﻟﺘﻠﻚ اﻟﻮﺳﻴﻄﺔ وﻳﻤﻜﻦ ﺗﺤﺪﻳﺪ ﻃﺮق ﻣﻮﺳﻌﺔ ﻋﻠﻰ ﻣﻌﻈﻢ اﻷﻧﻮاع اﻟﺘﻲ‬
‫ﻳﻤﻜﻦ اﺳﺘﺨﺪاﻣﻬﺎ ﻓﻲ ﻓﻴﺠﻮل ﺑﻴﺴﻚ ﺿﻤﻦ ﻗﺎﺋﻤﺔ اﻟﻮﺳﺎﺋﻂ ﻣﺘﻀﻤﻨﺎ اﻟﺘﺎﻟﻲ‪:‬‬

‫اﻟﻔﺌﺎت ‪) Classes‬اﻷﻧﻮاع اﻟﻤﺮﺟﻌﻴﺔ‪(Reference Types‬‬ ‫‪-‬‬


‫اﻟﺘﺮاآﻴﺐ ‪Structures‬‬ ‫‪-‬‬
‫اﻟﻮاﺟﻬﺎت ‪Interfaces‬‬ ‫‪-‬‬
‫اﻹﺟﺮاءات اﻟﻤﻔﻮﺿﺔ‪Delegates‬‬ ‫‪-‬‬
‫وﺳﺎﺋﻂ ‪ ByRef‬و ‪ByVal‬‬ ‫‪-‬‬
‫وﺳﺎﺋﻂ اﻷﻧﻮاع ‪Generic‬‬ ‫‪-‬‬
‫اﻟﻤﺼﻔﻮﻓﺎت ‪Arrays‬‬ ‫‪-‬‬

‫‪ -‬ﺗﻮﻓﺮ اﻟﻄﺮق اﻟﻤﻮﺳﻌﺔ ﻃﺮﻳﻘﺔ ﻣﺮﻳﺤﺔ وﻗﻮﻳﺔ ﻟﺘﻮﺳﻴﻊ ﻧﻮع ﻣﻮﺟﻮد وﻣﻊ ذﻟﻚ آﻲ ﻳﻤﻜﻦ اﺳﺘﺨﺪاﻣﻬﻢ ﺑﻨﺠﺎح هﻨﺎك ﺑﻌﺾ اﻟﻨﻘﺎط اﻟﺘﻲ ﻳﺠﺐ أﺧﺬهﺎ ﺑﻌﻴﻦ‬
‫اﻻﻋﺘﺒﺎر وهﻲ ﺗﻨﻄﺒﻖ ﺑﺸﻜﻞ رﺋﻴﺲ ﻋﻠﻰ ﻣﻄﻮري ﻣﻜﺘﺒﺎت اﻟﻔﺌﺎت ‪ Class Libraries‬وﻟﻜﻨﻬﺎ ﻳﻤﻜﻦ أن ﺗﺆﺛﺮ ﻋﻠﻰ أي ﺗﻄﺒﻴﻖ ﻳﺴﺘﺨﺪم اﻟﻄﺮق‬
‫اﻟﻤﻮﺳﻌﺔ ‪.‬وﺑﺸﻜﻞ ﻋﺎم ﻓﺎﻟﻄﺮق اﻟﻤﻮﺳﻌﺔ اﻟﺘﻲ ﺗﻀﻴﻔﻬﺎ ﻟﻸﻧﻮاع اﻟﺘﻲ ﻻ ﺗﻤﻠﻜﻬﺎ ﺗﻜﻮن أﺿﻌﻒ ﻣﻦ ﺗﻠﻚ اﻟﺘﻲ ﺗﻤﻠﻚ اﻟﺘﺤﻜﻢ ﻋﻠﻴﻬﺎ ﻟﻮﺟﻮد ﻋﺪد ﻣﻦ اﻷﺷﻴﺎء‬
‫اﻟﺘﻲ ﻗﺪ ﺗﺤﺪث ﻋﻨﺪﻣﺎ ﺗﻀﺎف ﻃﺮق ﻣﻮﺳﻌﺔ ﻟﻸﻧﻮاع اﻟﺘﻲ ﻻ ﺗﻤﻠﻜﻬﺎ ﻓﻴﻤﻜﻦ أن ﺗﺘﺪاﺧﻞ ﺗﻠﻚ اﻟﻄﺮق ﻣﻊ ﻋﻤﻞ ﻃﺮﻳﻘﺘﻚ اﻟﻤﻮﺳﻌﺔ‪.‬‬
‫‪ -‬ﻋﻨﺪ وﺟﻮد ﻋﻨﺼﺮ ﻋﻀﻮ ﻓﻲ اﻟﻔﺌﺔ ﻳﻤﻠﻚ ﺗﻮﻗﻴﻌﺎ ﻣﺘﻮاﻓﻘﺎ ﻣﻊ وﺳﺎﺋﻂ اﻟﺘﻌﺒﻴﺮ اﻟﻤﺴﺘﺪﻋﻲ ﺑﺪون ﺣﺪوث ﺗﺤﻮﻳﻞ ﺗﻀﻴﻴﻖ ‪narrowing Conversion‬‬
‫ﻣﻄﻠﻮب ﻣﻦ اﻟﻮﺳﺎﺋﻂ ﻓﻴﻤﻠﻚ ذﻟﻚ اﻟﻌﻨﺼﺮ اﻷﻓﻀﻠﻴﺔ ﻋﻠﻰ ﻃﺮﻳﻘﺘﻚ اﻟﻤﻮﺳﻌﺔ ﻟﺬﻟﻚ ﻳﻤﻜﻦ ﻋﻨﺪ إﺿﺎﻓﺔ ﺑﻌﺾ اﻟﺨﺼﺎﺋﺺ ﻟﻠﻔﺌﺔ أن ﻻ ﻳﻌﻮد ﺑﺎﻹﻣﻜﺎن‬
‫اﻟﻮﺻﻮل ﻟﻄﺮﻳﻘﺘﻚ اﻟﻤﻮﺳﻌﺔ‪.‬‬
‫‪ -‬ﻻ ﻳﻤﻜﻦ أن ﻳﻤﻨﻊ آﺎﺗﺐ اﻟﻄﺮﻳﻘﺔ اﻟﻤﻮﺳﻌﺔ اﻟﻤﺒﺮﻣﺠﻴﻦ اﻵﺧﺮﻳﻦ ﻣﻦ آﺘﺎﺑﺔ ﻃﺮق ﻣﻮﺳﻌﺔ ﺗﺘﻌﺎرض ﻣﻊ ﻃﺮﻳﻘﺘﻪ‪.‬‬
‫‪ -‬ﻳﻤﻜﻨﻚ ﺗﺤﺴﻴﻦ ﻗﻮة إﺟﺮاءاﺗﻚ اﻟﻤﻮﺳﻌﺔ ﺑﻮﺿﻌﻬﺎ ﺿﻤﻦ ﻣﺠﺎل أﺳﻤﺎء ‪ NameSpace‬ﺧﺎص ﺑﻬﻢ ﻟﺘﻤﻜﻴﻦ ﻣﺴﺘﺨﺪﻣﻲ ﻣﻜﺘﺒﺘﻚ ﻣﻦ اﺳﺘﻴﺮاد أو‬
‫اﺳﺘﺒﻌﺎد آﺎﻣﻞ ﻣﺠﺎل اﻷﺳﻤﺎء أو اﺧﺘﻴﺎر اﻟﻤﻨﺎﺳﺐ ﻣﻦ ﻣﺠﺎﻻت أﺳﻤﺎء اﻟﻤﻜﺘﺒﺔ‪.‬‬
‫‪ -‬ﻳﻜﻮن ﺗﻮﺳﻴﻊ اﻟﻮاﺟﻬﺎت ‪ Interfaces‬ﺁﻣﻦ ﻣﻦ ﺗﻮﺳﻴﻊ اﻟﻔﺌﺎت ‪ Classes‬وﺧﺎﺻﺔ إذا آﻨﺖ ﻻ ﺗﻤﻠﻚ ﺗﻠﻚ اﻟﻮاﺟﻬﺔ أو اﻟﻔﺌﺔ ﻓﻜﻞ ﺗﻐﻴﻴﺮ ﻓﻲ واﺟﻬﺔ‬
‫ﺳﻴﺆﺛﺮ ﻋﻠﻰ ﺟﻤﻴﻊ اﻟﻔﺌﺎت اﻟﺘﻲ ﺗﻌﺘﻤﺪ ﻋﻠﻴﻬﺎ ﻟﺬﻟﻚ ﻓﺎﻟﻤﺒﺮﻣﺞ ﻗﻠﻴﻼ ﻣﺎ ﻳﻐﻴﺮ ﻓﻲ اﻟﻄﺮق اﻟﻤﻮﺟﻮدة ﻓﻲ اﻟﻮاﺟﻬﺔ‪.‬‬

‫‪39‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫‪Extension Methods‬‬ ‫ﺟﺪﻳﺪ اﻟﻔﻴﺒﻲ ‪/2008‬اﻟﻄﺮق اﻟﻤُﻮَﺳِّﻌﺔ‬
‫‪ ‬‬
‫ﻣﺤﻤﺪ ﺳﺎﻣﺮ أﺑﻮ ﺳﻠﻮ ‪ ‬‬
‫‪ -‬ﻗﻢ ﺑﺘﻮﺳﻴﻊ ﻧﻮﻋﺎ ﻣﺤﺪدا ﻗﺪر اﻹﻣﻜﺎن ﻓﻌﻨﺪﻣﺎ ﺗﻮﺳﻊ ﻧﻮﻋﺎ ﺗﺸﺘﻖ ﻣﻨﻪ أﻧﻮاع أﺧﺮى ﺗﻜﻮن هﻨﺎك ﻃﺒﻘﺎت ﻣﻦ اﻻﺣﺘﻤﺎﻻت ﻣﻦ اﻟﻄﺮق اﻟﻌﺎدﻳﺔ واﻟﻤﻮﺳﻌﺔ‬
‫اﻟﺘﻲ ﻗﺪ ﺗﺘﺪاﺧﻞ ﻣﻊ ﻃﺮﻳﻘﺘﻚ‪.‬‬
‫‪ ‬‬
‫ﻋﻨﺪﻣﺎ ﻳﺘﻄﺎﺑﻖ ﺗﻮﻗﻴﻊ ﻃﺮﻳﻘﺔ ﻋﺎدﻳﺔ ‪ Instance Method‬ﻣﻊ ﻃﺮﻳﻘﺔ ﻣﻮﺳﻌﺔ ‪ Extension Method‬ﻓﻲ ﻧﻔﺲ اﻟﻤﺠﺎل ﻻ ﻳﻤﻜﻦ اﻟﻮﺻﻮل‬
‫‪ ‬‬
‫ﻟﻠﻄﺮﻳﻘﺔ اﻟﻤﻮﺳﻌﺔ ﺑﺎﻟﻨﺘﻴﺠﺔ‪ .‬ﻟﻬﺬا ﻻ ﻳﻤﻜﻦ أن ﻧﻘﻮم ﺑﺎﺳﺘﺨﺪام ﻃﺮﻳﻘﺔ ﻣﻮﺳﻌﺔ ﻻﺳﺘﺒﺪال ﻃﺮﻳﻘﺔ ﻋﺎدﻳﺔ وﻣﻊ ذﻟﻚ ﻳﻤﻜﻦ ﻟﻠﻄﺮق اﻟﻤﻮﺳﻌﺔ اﻣﺘﻼك ﻧﻔﺲ‬
‫‪ ‬‬
‫اﻻﺳﻢ ﻣﻊ اﻟﻄﺮق اﻟﻌﺎدﻳﺔ وﻟﻜﻦ ﻣﻊ ﺗﻮﻗﻴﻊ ﻣﺨﺘﻠﻒ ﻓﺘﻜﻮن آﻠﺘﺎ اﻟﻄﺮﻳﻘﺘﺎن ﻣﺘﻮﻓﺮﺗﺎن ﻃﺎﻟﻤﺎ أن اﻟﺘﻮﻗﻴﻊ ﻣﺨﺘﻠﻒ ﻓﻤﺜﻼ إن آﺎﻧﺖ اﻟﻔﺌﺔ ‪ExampleClass‬‬
‫ﺗﺤﺘﻮي ﻋﻠﻰ ﻃﺮﻳﻘﺔ ‪ exampleMethod‬ﻻ ﺗﺄﺧﺬ أﻳﺔ وﺳﺎﺋﻂ ﻳﻤﻜﻦ ﻟﻄﺮﻳﻘﺔ ﻣﻮﺳﻌﺔ ﺗﻤﺘﻠﻚ ﻧﻔﺲ اﻻﺳﻢ أن ﺗﺘﻮاﺟﺪ وﻟﻜﻦ ﺑﺘﻮﻗﻴﻊ ﻣﺨﺘﻠﻒ‪.‬‬
‫‪ ‬‬ ‫ﻛﻮد‪:‬‬
‫‪Imports ConsoleApplication2.ExtensionExample‬‬
‫‪ ‬‬ ‫‪Module Module1‬‬
‫)(‪Sub Main‬‬
‫‪Dim ex As New ExampleClass‬‬
‫‪ ‬‬ ‫‪ ‬‬
‫‪' The following statement calls the extension method.‬‬
‫)"‪ex.exampleMethod("Extension method‬‬
‫‪' The following statement calls the instance method.‬‬
‫)(‪ex.exampleMethod‬‬
‫‪End Sub‬‬

‫‪Class ExampleClass‬‬
‫‪' Define an instance method named exampleMethod.‬‬
‫)(‪Public Sub exampleMethod‬‬
‫)"‪Console.WriteLine("Instance method‬‬
‫‪End Sub‬‬
‫‪End Class‬‬
‫‪End Module‬‬

‫‪Imports System.Runtime.CompilerServices‬‬
‫‪' Define an extension method named exampleMethod.‬‬
‫‪Module ExtensionExample‬‬
‫_ >)(‪<Extension‬‬
‫_ ‪Sub exampleMethod(ByVal ec As ExampleClass,‬‬
‫)‪ByVal stringParameter As String‬‬
‫)‪Console.WriteLine(stringParameter‬‬
‫‪End Sub‬‬
‫‪End Module‬‬
‫واﻟﺨﺮج اﻟﻨﺎﺗﺞ ﻋﻦ اﻟﻜﻮد اﻟﺴﺎﺑﻖ ﻳﻜﻮن آﻤﺎ ﻳﻠﻲ‬
‫‪Extension method‬‬
‫‪Instance method‬‬
‫ﻋﻨﺪﻣﺎ ﻳﻜﻮن ﻟﻄﺮﻳﻘﺘﻴﻦ ﻣﻮﺳﻌﺘﻴﻦ ﺗﻮﻗﻴﻌﺎن ﻣﻄﺎﺑﻘﺎن ﻓﻲ ﻧﻔﺲ ﻣﺠﺎل اﻟﻮﺻﻮل ﻳﺘﻢ اﺳﺘﺪﻋﺎء اﻟﻄﺮﻳﻘﺔ اﻟﺘﻲ ﺗﻤﻠﻚ اﻷﺳﺒﻘﻴﺔ اﻟﻌﻠﻴﺎ ﺣﻴﺚ ﻳﺘﻢ ﺗﺤﺪﻳﺪ هﺬﻩ‬
‫اﻷﺳﺒﻘﻴﺔ ﻋﺒﺮ ﻃﺮﻳﻘﺔ إدﺧﺎل هﺬﻩ اﻟﻄﺮﻳﻘﺔ ﺿﻤﻦ اﻟﻤﺠﺎل وﺗﻤﺜﻞ اﻟﻘﺎﺋﻤﺔ اﻟﺘﺎﻟﻴﺔ ﺗﺴﻠﺴﻞ اﻷﺳﺒﻘﻴﺔ اﻟﺘﺎﻟﻲ ‪:‬‬
‫‪ .1‬اﻟﻄﺮق اﻟﻤﻮﺳﻌﺔ اﻟﻤﻮﺟﻮدة ﺳﺎﺑﻘﺎ ﺿﻤﻦ ﻧﻔﺲ اﻟـ‪Module‬‬
‫‪ .2‬اﻟﻄﺮق اﻟﻤﻮﺳﻌﺔ اﻟﻤﻌﺮﻓﺔ ﺿﻤﻦ أﻧﻮاع اﻟﺒﻴﺎﻧﺎت ﻓﻲ ﻣﺠﺎل اﻷﺳﻤﺎء اﻟﺤﺎﻟﻲ أو أﺣﺪ ﺁﺑﺎﺋﻪ ﺣﻴﺚ ﺗﻤﻠﻚ ﻣﺠﺎﻻت اﻷﺳﻤﺎء اﻷﺑﻨﺎء أﺳﺒﻘﻴﺔ ﻋﻠﻰ‬
‫اﻵﺑﺎء‪.‬‬
‫‪ .3‬اﻟﻄﺮق اﻟﻤﻮﺳﻌﺔ اﻟﻤﻌﺮﻓﺔ ﺿﻤﻦ أي ﻧﻮع ﺗﻢ اﺳﺘﻴﺮادﻩ ﻟﻠﻤﻠﻒ اﻟﺤﺎﻟﻲ‪.‬‬
‫‪ .4‬اﻟﻄﺮق اﻟﻤﻮﺳﻌﺔ اﻟﻤﻮﺟﻮدة ﺿﻤﻦ أي ﻣﺠﺎل أﺳﻤﺎء ﻣﺴﺘﻮرد ﺿﻤﻦ اﻟﻤﻠﻒ اﻟﺤﺎﻟﻲ‪.‬‬
‫‪ .5‬اﻟﻄﺮق اﻟﻤﻮﺳﻌﺔ اﻟﻤﻌﺮﻓﺔ ﺿﻤﻦ أي ﻧﻮع ﻣﺴﺘﻮرد ﻋﻠﻰ ﻣﺴﺘﻮى اﻟﻤﺸﺮوع‬
‫اﻟﻄﺮق اﻟﻤﻮﺳﻌﺔ اﻟﻤﻌﺮﻓﺔ ﺿﻤﻦ أي ﻣﺠﺎل أﺳﻤﺎء ﻣﺴﺘﻮرد ﻋﻠﻰ ﻣﺴﺘﻮى اﻟﻤﺸﺮوع ﻓﺈن ﻟﻢ ﺗﺤﻞ ﺗﻠﻚ اﻷﺳﺒﻘﻴﺔ اﻟﻤﺸﻜﻠﺔ ﻳﻤﻜﻨﻚ ﻋﻨﺪهﺎ اﺳﺘﺨﺪام‬
‫اﻻﺳﻢ اﻟﻜﺎﻣﻞ ﻟﻠﻄﺮﻳﻘﺔ اﻟﻤﻮﺳﻌﺔ ﻟﺘﺤﺪﻳﺪ اﻟﻄﺮﻳﻘﺔ اﻟﺘﻲ ﺗﻘﻮم ﺑﺎﺳﺘﺪﻋﺎﺋﻬﺎ ﻓﺈن آﺎﻧﺖ اﻟﻄﺮﻳﻘﺔ ‪ Print‬ﻓﻲ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ ﻣﺤﺪدة ﺿﻤﻦ اﻟـ ‪Module‬‬
‫اﻟﻤﺴﻤﺎة ‪ StringExtensions‬ﻳﻜﻮن اﻻﺳﻢ اﻟﻜﺎﻣﻞ ﻟﻠﻄﺮﻳﻘﺔ اﻟﻤﻮﺳﻌﺔ هﻮ )‪ StringExtensions.Print(example‬ﺑﺪﻻ ﻋﻦ‬
‫‪example.Print().‬‬

‫‪40‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
Application Events ‫أﺣﺪاث اﻟﺘﻄﺒﻴﻖ‬
 
  ‫ﻣﺤﻤﺪ ﺳﺎﻣﺮ أﺑﻮ ﺳﻠﻮ‬
‫ ﺛﻢ ﻣﻦ ﺻﻔﺤﺔ‬Properties ‫ اﻧﻘﺮ زر اﻟﻔﺄرة اﻷﻳﻤﻦ ﻋﻠﻰ ﻣﺸﺮوﻋﻚ ﺛﻢ اﺧﺘﺮ‬Solution Explorer ‫ﻣﻦ ﻣﺴﺘﻜﺸﻒ اﻟﻤﺤﺎﻟﻴﻞ‬
‫ ﻓﻴﺘﻢ ﻧﻘﻠﻚ ﻟﻤﺤﺮر اﻟﻜﻮد ﺣﻴﺚ ﺗﺘﻤﻜﻦ ﻣﻦ اﺳﺘﺨﺪام اﻟﺤﺪث اﻟﺬي ﺗﺤﺘﺎج ﻟﻤﻌﺎﻟﺠﺘﻪ ﻓﻲ‬View Application Events ‫ اﺿﻐﻂ زر‬Application
  . ‫ﺗﻄﺒﻴﻘﻚ ﻣﻦ ﺧﺼﺎﺋﺺ اﻟﺘﻄﺒﻴﻖ‬
‫وﻓﻴﻤﺎ ﻳﻠﻲ ﺗﻌﺮﻳﻒ ﺑﻜﻞ ﺣﺪث ﻋﻠﻰ ﺣﺪة‬
 
My.Application.Startup Event
 
‫ﻳﻨﻄﻠﻖ هﺬا اﻟﺤﺪث ﻋﻨﺪ ﺑﺪاﻳﺔ اﻟﺘﻄﺒﻴﻖ ﻟﺘﻀﻊ ﻓﻴﻪ اﻷواﻣﺮ اﻟﺘﻲ ﺗﺮﻳﺪ ﺗﻨﻔﻴﺬهﺎ ﻋﻨﺪ ﺑﺪاﻳﺔ اﻟﺘﻄﺒﻴﻖ ﻓﻤﺜﻼ إذا أردت ﺗﻐﻴﻴﺮ اﻟﺜﻘﺎﻓﺔ اﻟﺨﺎﺻﺔ‬
  :‫ﺑﺎﻟﺘﻄﺒﻴﻖ إﻟﻰ اﻟﻌﺮﺑﻴﺔ – ﺳﻮرﻳﺔ ﻧﺴﺘﺨﺪم آﻮدا ﺷﺒﻴﻬﺎ ﺑﺎﻟﺘﺎﻟﻲ‬
:‫ﻛﻮد‬
  Private Sub MyApplication_Startup(ByVal sender As Object, _
ByVal e As Microsoft.VisualBasic.ApplicationServices.StartupEventArgs) _
  Handles Me.Startup

  ' ‫ﺑﻴﺪاﻳﺔ اﻟﱪﻧﺎﻣﺞ‬


  ‫ﺗﻐﻴﲑ اﻟﺜﻘﺎﻓﺔ اﳋﺎﺻﺔ ﺑﺎﻟﺘﻄﺒﻴﻖ ﻋﻨﺪ‬
' ‫ﻗﺒﻞ إﻇﻬﺎر أﻳﺔ ﻧﺎﻓﺬة‬
My.Application.ChangeCulture("Ar-Sy")
End Sub
‫ اﻟﺘﻲ‬Cancel ‫ اﻟﺘﻲ ﺗﻮﻓﺮ ﻣﻌﻠﻮﻣﺎت ﺣﻮل ﺑﺪاﻳﺔ اﻟﺘﻄﺒﻴﻖ وﻟﻬﺎ ﻋﺪة ﺧﺼﺎﺋﺺ ﻣﺜﻞ‬StartupEventArgs ‫ ﻳﺸﻴﺮ إﻟﻰ اﻟﻔﺌﺔ‬e ‫و اﻟﺒﺎراﻣﺘﺮ‬
‫ آﻤﺎ ﻳﻤﻜﻨﻚ اﻟﺤﺼﻮل‬command-line arguments ‫ اﻟﺘﻲ ﺗﻤﺮر ﺑﺎراﻣﺘﺮات ﺳﻄﺮ اﻷواﻣﺮ ﻟﻠﺘﻄﺒﻴﻖ‬CommandLine ‫ﺗﻘﻮم ﺑﺈﻟﻐﺎء اﻟﺤﺪث و‬
.‫ ﻣﻦ أي ﻣﻜﺎن ﻓﻲ اﻟﺘﻄﺒﻴﻖ‬My.Application.CommandLineArgs ‫ﻋﻠﻰ ﺑﺎراﻣﺘﺮات ﺳﻄﺮ اﻷواﻣﺮ أﻳﻀﺎ ﺑﺎﺳﺘﺨﺪام اﻷﻣﺮ‬

My.Application.Shutdown Event
.‫ﺣﻴﺚ ﻳﻨﻄﻠﻖ هﺬا ا اﻟﺤﺪث ﻋﻨﺪ ﻧﻬﺎﻳﺔ اﻟﺘﻄﺒﻴﻖ ﻓﻴﻤﻜﻨﻚ اﺳﺘﺨﺪاﻣﻪ ﻟﻤﻌﺎﻟﺠﺔ اﻷﻣﻮر اﻟﺘﻲ ﺗﺤﺘﺎﺟﻬﺎ ﻗﺒﻞ ﻧﻬﺎﻳﺔ اﻟﺘﻄﺒﻴﻖ ﻣﺒﺎﺷﺮة‬

:‫ﻣﺜﺎل‬
:‫ﻛﻮد‬
Private Sub MyApplication_Shutdown(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles Me.Shutdown
My.Application.Log.WriteEntry("Application Shut Down.")
End Sub

My.Application.StartupNextInstance Event
single-instance application ‫ﺣﻴﺚ ﻳﻨﻄﻠﻖ هﺬا ا اﻟﺤﺪث ﻋﻨﺪﻣﺎ ﺗﺤﺎول ﺗﺸﻐﻴﻞ ﻧﺴﺨﺔ ﺛﺎﻧﻴﺔ ﻣﻦ اﻟﺘﻄﺒﻴﻖ اﻟﻤﻔﺘﺮض أن ﻳﻜﻮن وﺣﻴﺪ اﻟﺘﻮاﺟﺪ‬
. ‫واﻟﺘﻄﺒﻴﻖ ﻣﻔﺘﻮح ﻓﻌﻠﻴﺎ‬
:‫ﻣﺜﺎل‬
:‫ﻛﻮد‬
Private Sub MyApplication_StartupNextInstance(ByVal sender As Object, ByVal e As _
Microsoft.VisualBasic.ApplicationServices.StartupNextInstanceEventArgs)_
Handles Me.StartupNextInstance
Dim inputArgument As String = "/input="
Dim inputName As String = ""
For Each s As String In e.CommandLine
If s.ToLower.StartsWith(inputArgument) Then
inputName = s.Remove(0, inputArgument.Length)
End If
Next
If inputName = "" Then
MsgBox("No input name")
Else
MsgBox("Input name: " & inputName)
End If
End Sub

41
2008 ‫ ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ‬/ ‫ ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ‬01 ‫اﻟﻌﺪد‬ vb4arab.com ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ‬
Application Events ‫أﺣﺪاث اﻟﺘﻄﺒﻴﻖ‬
 
  ‫ﻣﺤﻤﺪ ﺳﺎﻣﺮ أﺑﻮ ﺳﻠﻮ‬
Application ‫ اﻟﺘﻲ ﺗﻌﻴﺪ ﻣﻌﻠﻮﻣﺎت ﺣﻮل ﻧﺴﺦ اﻟﺘﻄﺒﻴﻖ‬StartupNextInstanceEventArgs ‫ ﻟﻠﻔﺌﺔ‬e ‫ﺣﻴﺚ ﻳﺸﻴﺮ اﻟﺒﺎراﻣﺘﺮ‬
‫ ﻓﻴﻤﺎ إذا آﺎن ﻳﺠﺐ ﻧﻘﻞ اﻟﺘﻮاﺟﺪ اﻷول ﻟﻠﺘﻄﺒﻴﻖ إﻟﻰ اﻟﻮاﺟﻬﺔ و اﻟﺨﺎﺻﻴﺔ‬BringToForeground ‫ ﺣﻴﺚ ﺗﺤﺪد اﻟﺨﺎﺻﻴﺔ‬Instances
 
.‫ ﺗﺤﺪد ﺑﺎراﻣﺘﺮات ﺳﻄﺮ اﻷواﻣﺮ ﻟﻠﺘﻮاﺟﺪ اﻟﺠﺪﻳﺪ ﻟﻠﺘﻄﺒﻴﻖ‬CommandLine
 
My.Application.UnhandledException Event
 
.‫ ﻓﻲ ﺗﻄﺒﻴﻘﻚ ﻟﻢ ﺗﺘﻢ ﻣﻌﺎﻟﺠﺘﻪ داﺧﻞ اﻟﺘﻄﺒﻴﻖ ﻟﺘﺘﻤﻜﻦ ﻣﻦ إﺟﺮاء ﻣﻌﺎﻟﺠﺔ ﻟﻬﺬا اﻻﺳﺘﺜﻨﺎء‬Exception ‫ﺣﻴﺚ ﻳﻨﻄﻠﻖ هﺬا اﻟﺤﺪث ﻋﻨﺪﻣﺎ ﻳﻨﻄﻠﻖ اﺳﺘﺜﻨﺎء‬
  :‫ﻣﺜﺎل‬
:‫ﻛﻮد‬
 
Private Sub MyApplication_UnhandledException(ByVal sender As Object, _
ByVal e As Microsoft.VisualBasic.ApplicationServices.UnhandledExceptionEventArgs) _
  Handles Me.UnhandledException

   
My.Application.Log.WriteException(e.Exception, _
TraceEventType.Critical, "Unhandled Exception.")
End Sub

‫ اﻟﺘﻲ ﺗﺤﻮي ﻣﻌﻠﻮﻣﺎت ﺣﻮل اﻟﺨﻄﺄ ﻣﺜﻞ اﻟﺨﺎﺻﻴﺔ‬UnhandledExceptionEventArgs ‫ ﻳﺸﻴﺮ إﻟﻰ اﻟﻔﺌﺔ‬e ‫و اﻟﺒﺎراﻣﺘﺮ‬
‫ اﻟﺘﻲ ﺗﺤﺪد ﻓﻴﻤﺎ إذا آﺎن ﻳﺠﺐ إﻧﻬﺎء اﻟﺘﻄﺒﻴﻖ ﻓﻮر‬ExitApplication ‫ اﻟﺘﻲ ﺗﺤﻮي ﻣﻌﻠﻮﻣﺎت ﻋﻦ اﻟﺨﻄﺄ و اﻟﺨﺎﺻﻴﺔ‬Exception
.‫ﻧﻬﺎﻳﺔ اﻹﺟﺮاﺋﻴﺔ‬

NetworkChange.NetworkAvailabilityChanged Event
‫ﻳﻨﻄﻠﻖ هﺬا اﻟﺤﺪث ﻋﻨﺪﻣﺎ ﺗﺤﺪث ﺗﻐﻴﻴﺮات ﺣﻮل ﺗﻮاﻓﺮ اﻟﺸﺒﻜﺔ‬
:‫ﻛﻮد‬
Private Sub MyApplication_UnhandledException(ByVal sender As Object, _
ByVal e As Microsoft.VisualBasic.ApplicationServices.UnhandledExceptionEventArgs) _
Handles Me.UnhandledException

My.Application.Log.WriteException(e.Exception, _
TraceEventType.Critical, "Unhandled Exception.")
End Sub
‫ اﻟﺘﻲ ﺗﻤﺮر ﻣﻌﻠﻮﻣﺎت ﺣﻮل ﺗﻮاﻓﺮ اﻟﺸﺒﻜﺔ وﻟﻬﺎ ﺧﺎﺻﻴﺔ ﻣﻔﻴﺪة هﻲ‬NetworkAvailableEventArgs ‫ ﻟﻠﻔﺌﺔ‬e ‫ﺣﻴﺚ ﻳﺸﻴﺮ اﻟﺒﺎراﻣﺘﺮ‬
.‫ اﻟﺘﻲ ﺗﻌﻴﺪ ﻗﻴﻤﺔ ﻣﻨﻄﻘﻴﺔ هﻞ اﻟﺸﺒﻜﺔ ﻣﺘﻮاﻓﺮة أم ﻻ‬IsNetworkAvailable

‫ ﺣﻴﺚ ﻳﻤﻜﻨﻜﻢ اﻟﺤﺼﻮل ﻋﻠﻰ اﻟﺘﻔﺎﺻﻴﻞ ﺣﻮل آﻞ‬Application Events ‫أرﺟﻮ أن ﻳﻜﻮن هﺬا اﻟﺸﺮح ﻋﻠﻰ ﻋﺠﺎﻟﺔ ﻣﻔﻴﺪا ﻟﻠﺠﻤﻴﻊ ﻓﻲ اﻟﺘﻌﺮف ﻋﻠﻰ‬
‫ اﻟﻤﺮﻓﻘﺔ ﻣﻊ اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ‬MSDN ‫ﺣﺪث ﻣﻦ هﺬﻩ اﻷﺣﺪاث ﻓﻲ ﻣﻜﺘﺒﺔ‬

... ‫اﺧﺘﺮﻧﺎ ﻟﻚ ﻣﻦ ﻣﻜﺘﺒﺔ اﻟﺸﻔﺮات‬


‫ﻣﻌﺮﻓﻪ اﻟﻠﻐﺎت )ﻟﻐﺎت اﻟﻜﺘﺎﺑﺔ(اﻟﻤﺪﻋﻮﻣﺔ ﻓﻲ اﻟﺠﻬﺎز‬

:‫ﻛﻮد‬
Imports System
Public Sub GetLanguages()
' Gets the list of installed languages.
Dim lang As InputLanguage
For Each lang In InputLanguage.InstalledInputLanguages
lstInstalledLanguages.Items.Add(lang.Culture.EnglishName & ControlChars.Cr)
Next lang
End Sub 'GetLanguages

42
2008 ‫ ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ‬/ ‫ ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ‬01 ‫اﻟﻌﺪد‬ vb4arab.com ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ‬
‫‪ ‬‬
‫‪Application Events‬‬ ‫أﺣﺪاث اﻟﺘﻄﺒﻴﻖ‬
‫‪ ‬‬ ‫ﻟﻠﺤﺼﻮل ﻋﻠﻰ ﻗﺎﺋﻤﻪ ﺑﺠﻤﻴﻊ اﻟﺨﻄﻮط اﻟﻤﻮﺟﻮدة ﻓﻲ اﻟﺠﻬﺎز‬

‫‪ ‬‬ ‫ﻛﻮد‪:‬‬

‫‪ ‬‬ ‫‪Dim f As System.Drawing.Text.InstalledFontCollection = New‬‬ ‫_‬


‫‪System.Drawing.Text.InstalledFontCollection‬‬
‫‪ ‬‬ ‫‪Dim fFamily As FontFamily‬‬
‫‪For Each fFamily In f.Families‬‬
‫)‪lstInstalledFonts.Items.Add(fFamily.Name‬‬
‫‪ ‬‬ ‫‪Next‬‬

‫‪ ‬‬
‫اﺧﺘﺮﻧﺎ ﻟﻚ ﻣﻦ ﻣﻜﺘﺒﺔ اﻟﻜﺘﺐ ‪...‬‬
‫‪ ‬‬
‫ﺑﺮﻣﺠﺔ إﻃﺎر ﻋﻤﻞ ‪ .Net‬ﺑﺎﺳﺘﺨﺪام ‪Visual Basic .Net‬‬
‫‪ ‬‬
‫آﺘﺎب ﻗﻴﻢ ﺟﺪا و أول ﻣﺎ ﺻﺪر ﻓﻲ اﻟﺴﺎﺣﺔ اﻟﻌﺮﺑﻴﺔ ﻋﻦ ﻟﻐﺔ اﻟﻔﻴﺒﻲ ‪.‬ﻧﺖ‬
‫اﻟﻤﺤﺘﻮﻳﺎت‬ ‫ﺻﻮرة اﻟﻐﻼف‪:‬‬
‫ﺗﻤﻬﻴﺪ‬
‫اﻟﺠﺰء اﻷول‪ :‬اﻷﺳﺎﺳﻴﺎت‬
‫اﻟﻔﺼﻞ اﻷول ‪ :‬ﺗﻌﺮف ﻋﻠﻰ ‪Visual Basic .NET‬‬
‫اﻟﻔﺼﻞ اﻟﺜﺎﻧﻲ ‪ :‬ﻟﻐﺔ اﻟﺒﺮﻣﺠﺔ‬
‫اﻟﻔﺼﻞ اﻟﺜﺎﻟﺚ ‪ :‬اﻟﻔﺌﺎت واﻟﻜﺎﺋﻨﺎت‬
‫اﻟﻔﺼﻞ اﻟﺮاﺑﻊ ‪ :‬اﻟﻮراﺛﺔ‬
‫اﻟﻔﺼﻞ اﻟﺨﺎﻣﺲ ‪ :‬اﻟﻮاﺟﻬﺎت‪ ،‬اﻟﺘﻔﻮﻳﺾ‪ ،‬واﻟﻤﻮاﺻﻔﺎت‬
‫اﻟﺠﺰء اﻟﺜﺎﻧﻲ ‪ :‬إﻃﺎر ﻋﻤﻞ ‪.NET Framework‬‬
‫اﻟﻔﺼﻞ اﻟﺴﺎدس ‪ :‬اﻟﻔﺌﺎت اﻷﺳﺎﺳﻴﺔ‬
‫اﻟﻔﺼﻞ اﻟﺴﺎﺑﻊ ‪ :‬اآﺘﺸﺎف اﻷﺧﻄﺎء‬
‫اﻟﻔﺼﻞ اﻟﺜﺎﻣﻦ ‪ :‬اﻟﻤﻠﻔﺎت واﻟﻤﺠﻠﺪات‬
‫اﻟﻔﺼﻞ اﻟﺘﺎﺳﻊ ‪ :‬ﺗﺴﻠﺴﻞ اﻟﻜﺎﺋﻨﺎت ‪Object Serialization‬‬
‫اﻟﻔﺼﻞ اﻟﻌﺎﺷﺮ ‪ :‬ﻣﺴﺎرات اﻟﺘﻨﻔﻴﺬ ‪Threading‬‬
‫اﻟﻔﺼﻞ اﻟﺤﺎدي ﻋﺸﺮ ‪ :‬اﻟﻤﺠﻤﻌﺎت ‪Assemblies‬‬
‫اﻟﻔﺼﻞ اﻟﺜﺎﻧﻲ ﻋﺸﺮ ‪ :‬ﻓﺌﺎت اﻻﻧﻌﻜﺎس ‪Reflection Classes‬‬
‫اﻟﺠﺰء اﻟﺜﺎﻟﺚ ‪ :‬ﺗﻄﻮﻳﺮ ﺗﻄﺒﻴﻘﺎت ‪Windows‬‬
‫اﻟﻔﺼﻞ اﻟﺜﺎﻟﺚ ﻋﺸﺮ ‪ :‬ﻧﻤﺎذج ‪Windows Forms‬‬
‫اﻟﻔﺼﻞ اﻟﺮاﺑﻊ ﻋﺸﺮ ‪ :‬اﻷدوات ‪Controls‬‬
‫اﻟﻔﺼﻞ اﻟﺨﺎﻣﺲ ﻋﺸﺮ ‪ :‬ﻣﺒﺎدئ ‪GDI+‬‬
‫اﻟﻔﺼﻞ اﻟﺴﺎدس ﻋﺸﺮ ‪ :‬ﻣﻮاﺿﻴﻊ ﻣﺘﻘﺪﻣﺔ‬
‫اﻟﺠﺰء اﻟﺮاﺑﻊ ‪ :‬ﺑﺮﻣﺠﺔ ﻗﻮاﻋﺪ اﻟﺒﻴﺎﻧﺎت‬ ‫اﻟﻠﻐﺔ‪ :‬ﻋﺮﺑﻴﺔ‬
‫اﻟﻔﺼﻞ اﻟﺴﺎﺑﻊ ﻋﺸﺮ ‪ :‬اﺳﺘﺨﺪام ‪ADO.NET‬‬ ‫اﻟﻤﺆﻟﻒ‪ :‬اﻷﺳﺘﺎذ ﺗﺮآﻲ اﻟﻌﺴﻴﺮي‬
‫اﻟﻔﺼﻞ اﻟﺜﺎﻣﻦ ﻋﺸﺮ ‪ ADO.NET :‬اﻟﻤﻨﻔﺼﻞ‬ ‫ﻧﻮع اﻟﻤﻠﻒ‪Zipped PDF :‬‬
‫اﻟﻔﺼﻞ اﻟﺘﺎﺳﻊ ﻋﺸﺮ ‪ :‬رﺑﻂ اﻟﺒﻴﺎﻧﺎت واﻟﺘﻜﺎﻣﻞ ﻣﻊ ‪XML‬‬ ‫ﺣﺠﻢ اﻟﻤﻠﻒ‪ 5.6 :‬ﻣﻴﻐﺎ‬
‫اﻟﺠﺰء اﻟﺨﺎﻣﺲ ‪ :‬ﺑﺮﻣﺠﺔ وﻳﺐ‬ ‫اﻟﻄﺒﻌﺔ‪1 :‬‬
‫اﻟﻔﺼﻞ اﻟﻌﺸﺮون ‪ :‬ﺗﻄﺒﻴﻘﺎت ‪(1) ASP.NET‬‬ ‫ﻋﺪد اﻟﺼﻔﺤﺎت‪738 :‬‬
‫اﻟﻔﺼﻞ اﻟﺤﺎدي واﻟﻌﺸﺮون ‪ :‬ﺗﻄﺒﻴﻘﺎت‪(2) ASP.NET‬‬ ‫ﺗﺎرﻳﺦ اﻟﻨﺸﺮ‪2003 :‬‬
‫اﻟﻔﺼﻞ اﻟﺜﺎﻧﻲ واﻟﻌﺸﺮون ‪ :‬ﺧﺪﻣﺎت وﻳﺐ ‪Web Services‬‬
‫اﻟﻤﻼﺣﻖ‬
‫اﻟﻤﻠﺤﻖ أ ‪ :‬ﻟﻐﺔ وﺻﻒ اﻟﺒﻴﺎﻧﺎت‪XML‬‬
‫اﻟﻤﻠﺤﻖ ب ‪ :‬ﻟﻐﺔ اﻻﺳﺘﻌﻼم ‪SQL‬‬
‫ﻟﺘﻨﺰﻳﻞ اﻟﻜﺘﺎب اﺿﻐﻂ ﻫﻨﺎ‬

‫‪43‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫‪ ‬‬

‫اﺧﺘﺮﻧﺎ ﻟﻚ ﻣﻦ ﻣﻜﺘﺒﺔ اﻟﻜﺘﺐ‬


‫‪Windows Forms In Action – Windows Forms Programming with C#‬‬
‫ﻣﻬﻤﺎ ﻛﺘﺒﺖ ﻓﻠﻦ أوﻓﻲ اﻟﻜﺘﺎب ﺣﻘﻪ‪ ,‬ﻟﻜﻞ ﻣﻦ ﻳﺮﻳﺪ أن ﻳﺘﻌﻠﻢ اﻟﺒﺮﻣﺠﺔ ﺑﻠﻐﺔ ال ‪C# 2.0‬ﻓﻲ وﻗﺖ ﺳﺮﻳﻊ ﺟﺪا و ﺗﻌﻠﻢ ﺑﺮﻣﺠﺔ‬
‫ال ‪ Windows Forms‬ﺑﻠﻐﺔ ال‪. C#‬‬
‫اﻟﻜﺘﺎب ﻳﻌﺘﻤﺪ ﻋﻠﻰ ﻃﺮﻳﻘﺔ ﻣﻨﻬﺠﻴﺔ ﺗﻌﻠﻴﻤﻴﺔ راﺋﻌﺔ ﺟﺪا وﻻ ﻳﺘﻄﻠﺐ إﻻ ﺑﻌﺾ اﻟﻤﻌﺮﻓﺔ ﺑﺎﻟﺒﺮﻣﺠﺔ ﻣﻊ أﻣﺜﻠﺔ واﻓﻴﺔ وﺷﺮح راﺋﻊ ﺟﺪا‬
‫ﻛﻤﺎ ﻳﻌﺘﻤﺪ ﻋﻠﻰ وﺣﺪاﻧﻴﺔ اﻟﻔﻜﺮة و اﻟﺘﺪرج ﻓﻲ اﻟﺘﻌﻠﻢ ﺣﻴﺚ ﻳﺒﺪأ ﻣﻌﻚ ﻣﻦ ﻣﺠﺮد ﺑﺮﻧﺎﻣﺞ ﺑﺴﻴﻂ إﻟﻰ ﻧﻈﺎم ﻛﺎﻣﻞ ﻟﻌﺮض اﻟﺼﻮر‪.‬‬
‫ﻋﻠﻰ اﻟﻌﻜﺲ ﻛﻤﺎ ﻳﻌﺘﻘﺪ اﻟﺒﻌﺾ‪ ,‬ﻓﻬﺬا اﻟﻜﺘﺎب ﻻ ﻳﻌﺎﻟﺞ إﻻ ﻗﺴﻢ واﺣﺪ ﻣﻦ ال ‪ Base Class Library‬اﻟﺨﺎﺻﺔ ﺑﺎل‬
‫‪ .Net Framework 2.0‬و ﻫﻮ ﻣﺠﺎل اﻷﺳﻤﺎء ‪ System.Windows.Froms‬ﺑﻤﺎ ﻳﺰﺧﺮ ﺑﻪ ﻣﻦ ﻓﺌﺎت ﻛﻤﺎ ﻳﻌﺎﻟﺞ‬
‫اﻟﻜﺘﺎب ﻫﻨﺪﺳﺔ اﻟﻤﻜﻮﻧﺎت اﻟﻤﺮﺋﻴﺔ ‪ Visual Components‬و اﻟﺪوت ﻧﺖ ‪ Components‬ﺑﻄﺮﻳﻘﺔ أﻛﺎدﻳﻤﻴﺔ ﺑﺤﺘﺔ‬
‫ﺗﻤﻜﻨﻚ ﻣﻦ ﺗﻌﻠﻢ أﺳﺎﺳﻴﺎت ﺑﺮﻣﺠﺔ اﻟﻤﻜﻮﻧﺎت ﻟﺘﻮزﻳﻌﻬﺎ ﻛﻤﺎ ﻳﺘﻌﻠﻢ اﻟﻘﺎرئ اﻟﻄﺮﻳﻘﺔ اﻟﻤﺜﻠﻰ ﻟﺘﺤﺮﻳﺮ اﻟﺸﻔﺮات اﻟﺒﺮﻣﺠﻴﺔ‪.‬‬
‫ﻛﺘﺎب ﻗﻴﻢ ﺟﺪا ﻟﻤﻦ ﻳﺮﻳﺪ أن ﻳﻨﺘﻘﻞ ﻣﻦ اﻟﻔﻴﺠﻮال ﺑﻴﺴﻚ ‪ 6.0‬أو اﻟﻔﻴﺠﻮال ﺑﻴﺴﻚ ‪.‬ﻧﺖ ﻛﻤﺎ أﻧﻪ ﺟﻴﺪ ﻟﻠﻤﺒﺘﺪﺋﻴﻦ ﻓﻲ اﻟﺒﺮﻣﺠﺔ‪.‬‬
‫ﺻﻮرة اﻟﻐﻼف‪:‬‬
‫اﻟﻤﺤﺘﻮﻳﺎت‬
‫‪Part 1 Hello Windows Forms‬‬
‫‪1 Getting started with Windows Forms‬‬
‫‪2 Getting started with Visual Studio‬‬
‫‪Part 2 Basic Windows Forms‬‬
‫‪3 Menus‬‬
‫‪4 Context menu and status strips‬‬
‫‪5 Reusable libraries‬‬
‫‪6 Files and common dialog boxes‬‬
‫‪7 Dialog boxes‬‬
‫‪8 Text boxes‬‬
‫‪9 Buttons‬‬
‫‪10 Handling user input and encryption‬‬
‫‪11 List boxes‬‬
‫‪12 Combo boxes‬‬
‫‪13 Tab controls and pages‬‬
‫‪14 Dates, calendars, and progress bars‬‬
‫‪15 Bells and whistles‬‬
‫‪16 Tool strips‬‬
‫‪Part 3 Advanced Windows Forms‬‬
‫‪17 Custom controls‬‬
‫‪18 Explorer interfaces and tree views‬‬
‫‪19 List views‬‬
‫‪20 Multiple document interfaces‬‬ ‫اﻟﻠﻐﺔ‪ :‬اﻧﺠﻠﻴﺰﻳﺔ‬
‫‪21 Data binding‬‬ ‫اﻟﻤﺆﻟﻒ‪Erik Brown :‬‬
‫‪22 Two-way binding and binding sources‬‬ ‫ﻧﻮع اﻟﻤﻠﻒ‪PDF :‬‬
‫‪23 Odds and ends .NET‬‬ ‫ﺣﺠﻢ اﻟﻤﻠﻒ‪ 7.54:‬ﻣﻴﻐﺎ‬
‫‪appendix A C# primer‬‬ ‫اﻟﻄﺒﻌﺔ‪2 :‬‬
‫‪appendix B .NET namespaces‬‬
‫ﻋﺪد اﻟﺼﻔﺤﺎت‪841 :‬‬
‫‪appendix C Visual index‬‬
‫‪appendix D For more information‬‬
‫ﺗﺎرﻳﺦ اﻟﻨﺸﺮ‪2006 :‬‬
‫دار اﻟﻨﺸﺮ‪MANNING :‬‬
‫ﻟﺘﻨﺰﻳﻞ اﻟﻜﺘﺎب اﺿﻐﻂ هﻨﺎ‬

‫ﻧﺎﻓﺬة ﻣﺒﺮﻣﺞ اﻟﻔﻴﺒﻲ ‪.‬ﻧﺖ ﻋﻠﻰ ﻟﻐﺔ اﻟﺴﻲ ﺷﺎرب‬


‫إﻋﺪاد أﺣﻤﺪ ﺟﻤﺎل‬
‫‪ ‬‬ ‫‪ ‬‬

‫‪ ‬‬
‫اﻷﻧﻮاع واﻟﺪوال اﻟﺮﺋﻴﺴﻴﺔ ﻓﻲ اﻟﺴﻲ ﺷﺎرب‬
‫‪ ‬‬ ‫‪ ‬‬
‫أﺣﻤﺪ ﺟﻤﺎل‬
‫ﺧﺼﺎﺋﺺ اﻟﻜﺎﺋﻦ ‪Console‬‬
‫ﻛﻮد‪:‬‬ ‫هﺬﻩ اﻟﻤﺮﺣﻠﺔ ﻣﻦ اﻟﺪروس‪ ،‬ﻧﺴﺘﻄﻴﻊ اﻵن اﻟﻜﺘﺎﺑﺔ ﻋﻠﻰ اﻟﺸﺎﺷﺔ‬
‫‪Console.Write("First Name: {0} - Age:‬‬ ‫وﻋﻤﻞ دوال واﺳﺘﺪﻋﺎءهﺎ واﺳﺘﺮﺟﺎع ﻗﻴﻢ وﻃﺒﺎﻋﺘﻬﺎ‪ ،‬ﻋﻨﺪ هﺬﻩ اﻟﻤﺮﺣﻠﺔ‬
‫;)‪{1}", name, age‬‬
‫ﺳﻨﺄﺧﺬ راﺣﺔ ﻗﺼﻴﺮة ﻟﻠﺘﻌﺮف ﻋﻠﻰ اﻟﻌﻨﺎﺻﺮ اﻷﺳﺎﺳﻴﺔ ﻟﻠﺒﻴﺌﺔ‪Console‬‬
‫اﻟﺘﻲ ﻧﻌﻤﻞ ﻋﻠﻴﻬﺎ ﺣﺎﻟﻴًﺎ‪.‬‬
‫وهﻨﺎ اﺳﺘﻌﻤﻠﻨﺎ ال ‪Regular Expressions‬‬
‫أهﻢ اﻟﺪوال اﻟﺘﻲ ﺗﺤﺘﻮﻳﻬﺎ اﻟﻔﺌﺔ ‪ Console‬هﻲ دوال اﻹدﺧﺎل واﻹﺧﺮاج‬
‫ﺑﻮاﺳﻄﺔ اﻟﻄﺮﻳﻘﺔ اﻟﺜﺎﻧﻴﺔ ‪ ،‬ﻳﻤﻜﻨﻚ ﻋﻤﻞ ﺗﻨﺴﻴﻖ ‪ Format‬ﻟﻠﻨﺺ‬ ‫وهﻲ‪:‬‬
‫ﻼ‪:‬‬
‫ﺑﺎﺳﺘﺨﺪام رﻣﻮز ‪ d‬ﻟﻸرﻗﺎم و ‪ e‬ﻟﻞ ‪ exponential‬ﺑﺎﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ ﻣﺜ ً‬ ‫ﻛﻮد‪:‬‬
‫;)‪Console.Write(string‬‬
‫ﻛﻮد‪:‬‬ ‫‪ .‬ﻧﺺ ﻟﻜﺘﺎﺑﺔ ‪//‬‬
‫;)‪Console.WriteLine(string‬‬
‫‪Console.WriteLine("E format: {0:E}",‬‬ ‫ﺑﻌﺪ ﺟﺪﻳﺪ ﻟﺴﻄﺮ اﻻﻧﺘﻘﺎل ﺿﻐﻂ ﻣﻊ ﻧﺺ ﻟﻜﺘﺎﺑﺔ ‪//‬‬
‫;)‪99999‬‬ ‫‪ .‬اﻹﻧﺘﻬﺎء‬
‫;)(‪string x=Console.ReadLine‬‬
‫اﻻﻧﺘﻬﺎء وﻳﺘﻢ اﳌﺴﺘﺨﺪم ﻣﻦ ﻣﺪﺧﻼت ﻟﻘﺮاءة ‪//‬‬
‫ﺗﻌﺮﻳﻒ اﻟﻤﺘﻐﻴﺮات ‪ -‬ﻋﻮدة ﻣﺮة أﺧﺮى ‪-‬‬ ‫اﻧﱰ ﺿﻐﻂ ﻣﻊ اﻟﻘﺮاءة ﻣﻦ‬
‫;)(‪int x=Console.ReadKey‬‬
‫آﻤﺎ ذآﺮﻧﺎ ﻓﻲ اﻟﺪروس اﻟﺴﺎﺑﻘﺔ ﻳﻤﻜﻨﻨﺎ ﺗﻌﺮﻳﻒ اﻟﻤﺘﻐﻴﺮات ﺑﺎﻟﻄﺮﻳﻘﺔ‬ ‫ﻋﻤﻠﻴﺔ اﻬﻧﺎء وﻳﺘﻢ ﻓﻘﻂ واﺣﺪ ﺣﺮف ﻗﺮاءة ‪//‬‬
‫اﻟﺘﺎﻟﻴﺔ‪:‬‬ ‫إﻧﱰ ﺿﻐﻂ ﻣﻊ اﻟﻘﺮاءة‬
‫;)(‪ConsoleKeyInfo r = Console.ReadKey‬‬
‫ﻛﻮد‪:‬‬ ‫اﻟﻘﺮاءة ﻣﻦ واﻻﻧﺘﻬﺎء ﻓﻘﻂ واﺣﺪ ﺣﺮف ﻗﺮاءة ‪//‬‬
‫زر ﻣﺜﻞ ﺷﻲء اي ادﺧﺎل ﳝﻜﻦ ‪ ،‬إدﺧﺎﻟﻪ ﺑﻌﺪ‬
‫;‪int x‬‬ ‫ً اﻷﺳﻬﻢ‬
‫ﺧﺎص ﻣﺘﻐﲑ ﰲ اﻟﻨﺎﺗﺞ ﲣﺰﻳﻦ ﻳﺘﻢ ﻟﺬا ﻣﺜﻼ‬
‫;‪string name‬‬
‫ﻓﻲ اﻟﻔﻴﺒﻲ ‪ .‬ﻧﺖ‬
‫ﻟﻮ آﻨﺖ ﻣﺒﺮﻣﺞ ‪ ، VB.net‬ﻗﻢ ﺑﺈزاﻟﺔ ﻋﻼﻣﺔ اﻟﺘﻨﺼﻴﺺ ; ﻣﻦ ﺁﺧﺮ‬
‫ﻛﻮد‪:‬‬ ‫اﻟﺠﻤﻠﺔ‪.‬‬
‫;‪Dim x As Integer‬‬
‫;‪Dim name As String‬‬
‫دوال أﺧﺮى ﺧﺎﺻﺔ ﺑﻌﻤﻠﻴﺎت اﻷﻟﻮان ﻣﺜﻞ ‪ForeGroundColor‬‬
‫ﻟﻠﻮن اﻟﻨﺺ و ‪ BackgroundColor‬ﻟﻠﻮن اﻟﺨﻠﻔﻴﺔ ‪ ،‬ﺗﺴﺘﻄﻴﻊ‬
‫وﺧﻼﻓﻪ آﺜﻴﺮ‪ ،‬وﻟﻜﻨﻚ ﺑﺎﻟﺘﺄآﻴﺪ ﺗﻼﺣﻆ وﺟﻮد اﻟﻜﻠﻤﺔ ‪ new‬ﻓﻲ آﺜﻴﺮ ﻣﻦ‬ ‫ﺗﻌﻴﻴﻦ اﻟﻠﻮن ﻋﻦ ﻃﺮﻳﻖ اﻟﻔﺌﺔ ‪ ConsoleColor‬ﺑﺎﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ‪:‬‬
‫ﺗﻌﺮﻳﻒ اﻟﻤﺘﻐﻴﺮات‪ ،‬ﻓﻤﺎ هﻲ ﻣﻬﻤﺘﻬﺎ ؟‬ ‫ﻛﻮد‪:‬‬
‫ﺑﻌﺾ اﻷﻧﻮاع اﻟﺒﺴﻴﻄﺔ ﻳﻤﻜﻦ ﺗﻌﺮﻳﻔﻬﺎ ﺑﺎﺳﺘﺨﺪام ‪ new‬وهﻮ ﻣﺎ ﺳﻴﺠﻌﻠﻬﺎ‬ ‫= ‪Console.ForegroundColor‬‬
‫;‪ConsoleColor.Yellow‬‬
‫ﺗﺤﻤﻞ ﻗﻴﻤﺔ اﻻﻓﺘﺮاﺿﻴﺔ اﻟﻤﻮﺟﻮدة ﻓﻲ اﻟﻤﻨﺸﺊ اﻟﺨﺎص ﺑﻬﺎ‪ ،‬ﺣﻴﺚ ﻳﺘﻢ‬
‫ﺗﺤﻮﻳﻞ اﻷﻧﻮاع اﻟﻤﻨﻄﻘﻴﺔ ‪ bool‬إﻟﻰ ‪ false‬واﻷرﻗﺎم إﻟﻰ ﺻﻔﺮ‬
‫وﺧﻼﻓﻪ‪.‬‬ ‫ﻧﻔﺲ اﻟﺸﻲء ﻟﻤﺒﺮﻣﺠﻲ اﻟﻔﻴﺒﻲ ‪.‬ﻧﺖ‬

‫ﻟﻜﻦ هﻨﺎك أﻧﻮاع أﺧﺮى ﻣﻦ اﻟﺒﻴﺎﻧﺎت ﻻ ﻳﻤﻜﻨﻚ اﺳﺘﺨﺪاﻣﻬﺎ إﻻ ﺑﺎﺳﺘﺨﺪام‬ ‫هﻨﺎك ﺧﺼﺎﺋﺺ أﺧﺮى ﻣﺜﻞ ‪ WindowWidth‬و ‪Title‬‬
‫‪ new‬ﻣﺜﻞ ال ‪ object‬و ‪ arraylist‬وﺧﻼﻓﻪ ﻣﻤﺎ ﺳﻨﺘﻌﺮف‬ ‫وﺧﻼﻓﻬﺎ ﻟﺘﺤﺪﻳﺪ ﻣﻈﻬﺮ اﻟﻨﺎﻓﺬة‪.‬‬
‫ﻋﻠﻴﻪ ﻓﻲ ﺣﻴﻨﻪ‪.‬‬
‫ﻧﻌﻮد ﻷﺣﺪ ﻣﻮاﺿﻴﻊ اﻟﻄﺒﺎﻋﺔ‪ ،‬ﻟﻨﻔﺘﺮض أﻧﻨﺎ ﻧﺮﻳﺪ اﻟﻘﻴﺎم ﺑﻄﺒﺎﻋﺔ اﻟﻨﺺ‬
‫هﺬا هﻮ ﺗﻘﺴﻴﻢ اﻷﻧﻮاع ﻓﻲ ‪: C#‬‬ ‫اﻟﺘﺎﻟﻲ‪ :‬اﻻﺳﻢ )اﻟﻤﺘﻐﻴﺮ ‪ (name‬و اﻟﻌﻤﺮ )اﻟﻤﺘﻐﻴﺮ ‪ ،(age‬ﻳﻤﻜﻨﻨﺎ اﻟﻘﻴﺎم‬
‫ﺑﺬﻟﻚ ﻋﻦ ﻃﺮﻳﻖ آﺘﺎﺑﺔ اﻟﻜﻮد اﻟﺘﺎﻟﻲ ‪:‬‬

‫ﻛﻮد‪:‬‬
‫‪Console.Write("First Name: " + name + " -‬‬
‫;)‪Age: " + age‬‬

‫هﻨﺎك ﻃﺮﻳﻘﺔ أﺧﺮى أﻓﻀﻞ أﻳﻀﺎً‪ ،‬ﺑﺎﻟﻄﺮﻳﻘﺔ اﻟﺘﺎﻟﻴﺔ‪:‬‬

‫‪45‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫‪ ‬‬ ‫‪ ‬‬

‫‪ ‬‬
‫اﻷﻧﻮاع واﻟﺪوال اﻟﺮﺋﻴﺴﻴﺔ ﻓﻲ اﻟﺴﻲ ﺷﺎرب‬
‫‪ ‬‬ ‫أﺣﻤﺪ ﺟﻤﺎل‬
‫‪ ‬‬ ‫‪ ‬‬

‫اﻟﺼﻮرة ﻣﻦ آﺘﺎب‪ProCSharp 2008 and .net 2008 platform .‬‬

‫ﺟﻤﻴﻊ اﻷﻧﻮاع اﻟﻤﺸﺘﻘﺔ ﻣﻦ اﻟﻔﺌﺔ ‪ Object‬ﺗﻤﻠﻚ ﺑﺎﻟﻀﺮورة ﻃﺮﻗﻪ اﻷﺳﺎﺳﻴﺔ ﻣﺜﻞ ‪ Equals‬و ‪ GetHashCode‬وﺧﻼﻓﻪ‪.‬‬

‫أﻣﺎ اﻟﻄﺮق اﻷﺳﺎﺳﻴﺔ ﻟﻸﻧﻮاع اﻟﺮﻗﻤﻴﺔ ﻣﺜﻞ ‪ int‬و ‪ long‬ﻓﺘﺸﻤﻞ اﻟﺨﺼﺎﺋﺺ اﻷﺳﺎﺳﻴﺔ ﻣﺜﻞ‬
‫‪ MaxValue‬و ‪ MinValue‬ﻓﻴﻤﺎ ﻳﺤﺘﻮي ال ‪ char‬ﻋﻠﻰ ﺧﺼﺎﺋﺺ ﻣﺜﻞ ‪ IsDigit‬و ‪ IsLetter‬ﻟﺘﺤﺪﻳﺪ ﻃﺒﻴﻌﺔ اﻟﻤﺪﺧﻼت ‪.‬‬
‫وﺳﻨﺒﺪأ اﻟﺤﺪﻳﺚ ﺣﻮل اﻟﻔﺌﺔ ‪string‬‬

‫اﻟﻔﺌﺔ ‪String‬‬

‫ﺳﻨﺘﺤﺪث ﻓﻲ درﺳﻨﺎ هﺬا ﺣﻮل آﻞ ﻣﺎ ﻳﺘﻌﻠﻖ ﺑﺎﻟﻨﻮع‪String .‬‬

‫‪46‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫‪ ‬‬ ‫‪ ‬‬

‫‪ ‬‬
‫اﻷﻧﻮاع واﻟﺪوال اﻟﺮﺋﻴﺴﻴﺔ ﻓﻲ اﻟﺴﻲ ﺷﺎرب‬
‫‪ ‬‬ ‫أﺣﻤﺪ ﺟﻤﺎل‬ ‫اﻟﺨﺼﺎﺋﺺ واﻟﺪوال اﻷﺳﺎﺳﻴﺔ ﻟﻠﻔﺌﺔ ‪String‬‬
‫‪ ‬‬ ‫‪ ‬‬
‫اﻟﺨﺎﺻﻴﺔ ‪Length‬‬
‫دﻣﺞ اﻟﻨﺼﻮص‬
‫ﺗﺤﺪد ﻃﻮل اﻟﻨﺺ‪.‬‬
‫اﻟﻄﺮﻳﻘﺔ اﻷﺑﺴﻂ ﻟﺪﻣﺞ اﻟﻨﺼﻮص هﻲ ﺑﺎﺳﺘﺨﺪام اﻟﻤﻌﺎﻟﻢ ‪ ،+‬أو ﺑﺎﺳﺘﺨﺪام‬
‫اﻟﺪاﻟﺔ ‪ Concate‬ﺑﺎﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ‪:‬‬
‫اﻟﺪاﻟﺔ ‪Compare‬‬
‫ﻛﻮد‪:‬‬
‫;)‪string s3 = String.Concat(s1, s2‬‬ ‫ﻟﻠﻤﻘﺎرﻧﺔ ﺑﻴﻦ ﻧﺼﻴﻦ‪.‬‬
‫ﺑﺎﻟﻔﻴﺒﻲ ‪.‬ﻧﺖ‬
‫اﻟﺪاﻟﺔ ‪Contains‬‬
‫ﻛﻮد‪:‬‬
‫;)‪Dim s3 As String = String.Concat(s1, s2‬‬ ‫ﻟﻠﺒﺤﺚ ﻋﻦ ﻧﺺ أو ﺣﺮف ﺿﻤﻦ اﻟﻨﺺ‪.‬‬

‫اﻟﺪاﻟﺘﻴﻦ ‪ EndWith‬و ‪StartWith‬‬


‫ﻳﻤﻜﻨﻚ ﻣﺮاﺟﻌﺔ اﻟﺮاﺑﻂ اﻟﺘﺎﻟﻲ ﻣﺒﺎﺷﺮة ﻻﺳﺘﺨﺪام اﻟﻄﺮﻳﻘﺔ اﻷﻓﻀﻞ ﻟﺪﻣﺞ‬
‫اﻟﻨﺼﻮص ﻋﻦ ﻃﺮﻳﻖ اﺳﺘﻌﻤﺎل اﻟﻔﺌﺔ ‪StringBuillder‬‬ ‫ﻣﻌﺮﻓﺔ ﻓﻴﻤﺎ إذا آﺎن اﻟﻨﺺ ﻳﺒﺪأ أو ﻳﻨﺘﻬﻲ ﺑﺤﺮف أو ﻧﺺ ﻣﻌﻴﻦ‪.‬‬

‫‪http://vb4arab.com/vb/showthread.php?p=57289‬‬ ‫اﻟﺪاﻟﺘﻴﻦ ‪ IndexOf‬و ‪LastIndexOf‬‬

‫ﻣﻘﺎرﻧﺔ اﻟﻨﺼﻮص‬ ‫ﻟﻤﻌﺮﻓﺔ ﻣﻜﺎن وﺟﻮد ﺣﺮف أو ﺑﺪاﻳﺔ ﻧﺺ ﻣﻌﻴﻦ ﺿﻤﻦ اﻟﻨﺺ‪ ،‬ﺳﻮاء ﻣﻦ‬
‫اﻟﺒﺪاﻳﺔ أو ﻣﻦ اﻟﻨﻬﺎﻳﺔ‪.‬‬
‫ﻳﻤﻜﻦ اﺳﺘﺨﺪام اﻟﻤﻌﺎﻣﻞ == ﻟﻤﻘﺎرﻧﺔ اﻟﻨﺼﻮص ﻓﻲ ‪ C#‬أو = ﻓﻲ‬
‫‪ ،VB.net‬إﻻ اﻧﻪ ﻣﻦ اﻟﻤﻔﻀﻞ اﺳﺘﺨﺪام اﻟﺪاﻟﺔ ‪ Equals‬ﺑﺎﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ‪:‬‬ ‫اﻟﺪاﻟﺔ ‪Remove‬‬
‫ﻛﻮد‪:‬‬
‫ﺣﺬف ﺟﺰء ﻣﻌﻴﻦ ﻣﻦ اﻟﻨﺺ‪.‬‬
‫;)‪Dim s3 As String = String.Concat(s1, s2‬‬
‫اﻟﺪاﻟﺔ ‪Insert‬‬
‫ﺣﺮوف اﻹﻓﻼت ‪Escape Characters‬‬
‫إدراج ﻧﺺ داﺧﻞ ال ‪. String‬‬
‫ﻓﻲ آﻞ ﻟﻐﺎت ﻋﺎﺋﻠﺔ ﻟﻐﺔ اﻟﺴﻲ‪ ،‬ﺗﺠﺪ ﺣﺮف ‪ /‬ﻣﺤﺠﻮزًا ﻟﺒﻌﺾ اﻟﺤﺮوف‬
‫اﻟﺪاﻟﺔ ‪Replace‬‬
‫اﻟﺨﺎﺻﺔ ﻣﺜﻞ ‪ /n‬ﻟﺴﻄﺮ ﺟﺪﻳﺪ و ‪ /t‬ﻟﻌﻤﻞ ‪ Tab‬وﻏﻴﺮﻩ ‪ ،‬ﺑﺎﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ‬
‫ﻼ‪:‬‬
‫ﻣﺜ ً‬
‫اﺳﺘﺒﺪال ﺟﺰء ﻣﻦ اﻟﻨﺺ‪.‬‬
‫ﻛﻮد‪:‬‬
‫;)"‪Console.Write("My Name:/nAhmed Gamal‬‬
‫اﻟﺪاﻟﺘﻴﻦ ‪ ToUpper‬و ‪ToLower‬‬
‫ﺑﺎﻟﻔﻴﺒﻲ ‪.‬ﻧﺖ‪:‬‬
‫ﻟﺘﺤﻮﻳﻞ ﺣﺎﻟﺔ اﻷﺣﺮف ﺑﻴﻦ ‪ capital‬و ‪. small‬‬
‫ﻛﻮد‪:‬‬
‫& ‪Console.Write("My Name:" & vbCrLf‬‬ ‫اﻟﺪاﻟﺔ ‪Split‬‬
‫)"‪"Ahmed Gamal‬‬
‫ﻼ ﺗﻘﺴﻴﻢ اﻟﻨﺺ ﻣﻊ آﻞ‬
‫ﺗﻘﺴﻴﻢ اﻟﻨﺺ ﺣﺴﺐ ﺷﻲء ﻣﻌﻴﻦ إﻟﻰ ﻣﺼﻔﻮﻓﺔ ‪ ،‬ﻣﺜ ً‬
‫ﻋﻼﻣﺔ )‪ (-‬إﻟﻰ ﻣﺼﻔﻮﻓﺔ ﺟﺪﻳﺪة‪.‬‬
‫ﻣﻼﺣﻈﺔ أﺧﺮى‪ ،‬اﻟﺤﺮف ‪ /‬ﻣﺤﺠﻮز ﻟﺬا إذا أردت أن ﺗﻜﺘﺐ ‪ /‬ﻓﻼ ﺑﺪ ﻟﻚ‬
‫أن ﺗﻜﺘﺐ اﻟﺤﺮف ‪ //‬ﻳﻌﻨﻲ ﻣﻜﺮر‪ ،‬هﻨﺎك ﺣﻞ ﺁﺧﺮ وهﻮ اﺳﺘﺨﺪام ﻣﺎ‬ ‫ﻛﻮد‪:‬‬
‫ﻳﻌﺮف ﺑﺎﺳﻢ ‪Verbatim Strings‬ﺣﻴﺚ ﻳﻤﻜﻨﻚ ﻓﻲ هﺬﻩ اﻟﺤﺎﻟﺔ آﺘﺎﺑﺔ‬ ‫;)"‪string[] newarray = g.Split("-‬‬
‫ﻧﺺ ﻋﺎدي ﺑﺪون اﻟﻘﻠﻖ ﻣﻦ ال ‪ Escape Characters‬ﺑﺎﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ‬ ‫اﻟﻔﻴﺒﻲ ‪.‬ﻧﺖ‬
‫ﻼ‪:‬‬
‫ﻣﺜ ً‬
‫ﻛﻮد‪:‬‬
‫ﻛﻮد‪:‬‬ ‫)"‪Dim newarray() As String = g.Split("-‬‬
‫;)"‪Console.WriteLine(@"C:\MyApp\bin\Debug‬‬

‫‪47‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫‪ ‬‬ ‫‪ ‬‬

‫‪ ‬‬
‫اﻷﻧﻮاع واﻟﺪوال اﻟﺮﺋﻴﺴﻴﺔ ﻓﻲ اﻟﺴﻲ ﺷﺎرب‬
‫‪ ‬‬ ‫أﺣﻤﺪ ﺟﻤﺎل‬
‫اﻟﺘﺤﻮﻳﻞ ﻣﻦ وإﻟﻰ اﻟﻨﻮع ‪String‬‬
‫‪ ‬‬ ‫‪ ‬‬
‫ﻋﻤﻠﻴﺔ اﻹﺿﺎﻓﺔ واﻟﻄﺮح ﺑﺎﺳﺘﺨﺪام اﻟﺪوال ‪ Add‬و ‪Substract‬‬
‫ﺗﺤﺘﻮي ﻣﻌﻈﻢ اﻷﻧﻮاع اﻷﺳﺎﺳﻴﺔ ﻋﻠﻰ اﻟﺪاﻟﺔ ‪ Parse‬واﻟﺘﻲ ﺗﺤﻮل‬
‫ﺑﺎﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ‪:‬‬
‫ﻼ‪:‬‬
‫اﻟﻨﺺ إﻟﻰ ﻣﻨﺎﻇﺮﻩ ‪ ،‬ﺑﺎﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ ﻣﺜ ً‬
‫ﻛﻮد‪:‬‬
‫ﻛﻮد‪:‬‬
‫‪Console.WriteLine(ts.Subtract(new‬‬
‫;)))‪TimeSpan(0, 15, 0‬‬ ‫;)"‪int x = int.Parse("1‬‬
‫;)"‪bool v = bool.Parse("True‬‬
‫أو‬
‫ﺑﺎﻟﻔﻴﺒﻲ ‪.‬ﻧﺖ‬
‫ﻛﻮد‪:‬‬
‫ﻛﻮد‪:‬‬
‫;)‪dt = dt.AddMonths(2‬‬
‫)"‪Dim x As Integer = Interger.Parse("1‬‬
‫ﻧﻜﺘﻔﻲ ﺑﻬﺬا اﻟﻘﺪر ﻣﻦ اﻟﺤﺪﻳﺚ ﺣﻮل اﻟﻤﺘﻐﻴﺮات‪ ،‬ﻧﻮاﺻﻞ ﻣﻊ اﻟﺘﺤﻮﻳﻞ ﺑﻴﻦ‬ ‫)"‪Dim v As Boolean = Boolean.Parse("True‬‬
‫أﻧﻮاع اﻟﻤﺘﻐﻴﺮات اﻟﻤﺨﺘﻠﻔﺔ‪.‬‬

‫اﻟﺘﺤﻮﻳﻞ ﺑﻴﻦ اﻟﻤﺘﻐﻴﺮات اﻟﻤﺨﺘﻠﻔﺔ‬ ‫آﻤﺎ ﺗﺤﺘﻮي أﻳﻀًﺎ ﻋﻠﻰ اﻟﺪاﻟﺔ ‪ ToString‬ﻟﺘﺤﻮﻳﻠﻬﺎ إﻟﻰ ﻧﺺ ﺑﺎﻟﺸﻜﻞ‬
‫ﻼ‪:‬‬
‫اﻟﺘﺎﻟﻲ ﻣﺜ ً‬
‫ﺑﺪاﻳﺔ‪ ،‬ﺗﻨﻘﺴﻢ اﻟﺘﺤﻮﻳﻼت ﺑﻴﻦ اﻟﻤﺘﻐﻴﺮات إﻟﻰ ﻧﻮﻋﻴﻦ رﺋﻴﺴﻴﻦ‪:‬‬
‫ﻛﻮد‪:‬‬
‫‪Widening Conversions -1‬‬ ‫;)(‪string x = m.ToString‬‬
‫‪Narrowing Conversions -2‬‬

‫‪Widening Conversions /1‬‬ ‫أﻋﺘﻘﺪ أﻧﻚ ﺑﺪأت ﺗﻌﺘﺎد ﻋﻠﻰ ﻃﺮﻳﻘﺔ اﻟﻜﺘﺎﺑﺔ ﻓﻲ اﻟﺴﻲ ﺷﺎرب و ﺳﺄدﻋﻚ‬
‫ﻟﺘﻘﻮم ﺑﺘﺮﺟﻤﺘﻬﺎ إﻟﻰ ﻟﻐﺔ اﻟﻔﻴﺒﻲ ‪.‬ﻧﺖ وﺣﺪك ﻣﻦ واﻵن وﺻﺎﻋﺪا‪.‬‬
‫ﻳﻘﺼﺪ ﺑﻬﺬا اﻟﻨﻮع ﻣﻦ اﻟﺘﺤﻮﻳﻼت ﺗﻠﻚ اﻟﺘﺤﻮﻳﻼت اﻟﺘﻲ ﻻ ﻳﻤﻜﻦ‬
‫ﻓﻴﻬﺎ ﺧﺴﺎرة أي ﻧﻮع ﻣﻦ اﻟﺒﻴﺎﻧﺎت‪ ،‬وﺗﺴﻤﻰ ﺑﺎﺳﻢ ‪ ،upward cast‬ﻣﺜﺎل‬ ‫اﻟﻔﺌﺔ ‪StringBuillder‬‬
‫ذﻟﻚ اﻟﺘﺤﻮﻳﻞ ﻣﻦ ‪ short‬إﻟﻰ ‪ int‬ﻓﻲ اﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ ‪:‬‬

‫ﻛﻮد‪:‬‬ ‫ﻓﺌﺔ ﻣﻄﻮرة ﻣﻦ ال ‪ String‬ﺗﺤﺘﻮي ﻋﻠﻰ ﻣﻤﻴﺰات إﺿﺎﻓﻴﺔ ﻣﺜﻞ داﻟﺔ‬


‫;‪short x = 5‬‬ ‫دﻣﺞ اﻟﻨﺼﻮص اﻟﺴﺎﺑﻘﺔ اﻟﺬآﺮ‪Append .‬‬
‫;)‪power(x‬‬
‫و هﻴﻜﻞ اﻟﺪاﻟﺔ ‪power‬‬ ‫اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﺘﺎرﻳﺦ واﻟﻮﻗﺖ‬
‫ﻛﻮد‪:‬‬ ‫ﻼ‬
‫ﺗﺠﺪ ﺟﻤﻴﻊ ﻣﺎ ﻳﺘﻌﻠﻖ ﺑﺎﻟﺘﺎرﻳﺦ واﻟﻮﻗﺖ ﻓﻲ اﻟﻔﺌﺔ ‪ ،DateTime‬ﻓﻤﺜ ً‬
‫)‪int power(int number‬‬ ‫ﻹﺿﺎﻓﺔ ﺗﺎرﻳﺦ ﻣﻌﻴﻦ‪:‬‬
‫{‬
‫;‪return number^2‬‬
‫}‬ ‫ﻛﻮد‪:‬‬
‫ﻟﻮ ﻻﺣﻈﺖ ﺳﺘﺠﺪ أن اﻟﺪاﻟﺔ ﺗﺴﺘﻘﺒﻞ ﺑﻴﺎﻧﺎت ﻣﻦ ﻧﻮع ‪ int‬ﻓﻴﻤﺎ أرﺳﻠﻨﺎ‬ ‫;)‪DateTime dt = new DateTime(2004, 10, 17‬‬

‫ﻟﻬﺎ ﺑﻴﺎﻧﺎت ﻣﻦ ﻧﻮع ‪ ، short‬ﻓﻲ هﺬﻩ اﻟﺤﺎﻟﺔ ﻟﻦ ﺗﻜﻮن هﻨﺎك ﻣﺸﻜﻠﺔ‬


‫ﻷن ﻣﺪى ال ‪ int‬اآﺒﺮ ﻣﻦ ﻣﺪى ال ‪ ، short‬وﺑﺎﻟﺘﺎﻟﻲ ﻓﺈن أي‬ ‫ﻟﻄﺒﺎﻋﺔ اﻟﺘﺎرﻳﺦ اﻟﺤﺎﻟﻲ‪:‬‬
‫ﻣﺪى ﻟﻞ ‪ short‬ﻳﻘﻊ ﺿﻤﻦ ال ‪ int‬ﺑﻜﻞ ﺗﺄآﻴﺪ‪.‬‬
‫ﻛﻮد‪:‬‬
‫‪Narrowing Conversions /2‬‬ ‫;)‪Console.WriteLine(DateTime.Now‬‬

‫ﻼ ﻟﻮ‬
‫اﻟﺤﺎﻟﺔ اﻟﻌﻜﺴﻴﺔ‪ ،‬اﻟﺘﺤﻮﻳﻞ ﻣﻦ اﻷآﺒﺮ إﻟﻰ اﻷﺻﻐﺮ‪ ،‬ﻣﺜ ً‬
‫آﺎن اﻟﻤﺘﻐﻴﺮان ﻣﻦ ﻧﻮع ‪ int‬واﻟﻨﺎﺗﺞ ﻣﻦ ﻧﻮع ‪ ،short‬ﺳﻴﻌﻤﻞ‬ ‫ﻳﻤﻜﻦ اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻮﻗﺖ أﻳﻀًﺎ ﺑﺎﺳﺘﺨﺪام اﻟﻔﺌﺔ ‪TimeSpan‬‬
‫ﻛﻮد‪:‬‬
‫اﻷﻣﺮ ﺑﺼﻮرة ﺻﺤﻴﺤﺔ ﻟﻮ آﺎن ﻣﺠﻤﻮع اﻟﺮﻗﻤﻴﻦ ‪ int‬اﺻﻐﺮ ﻣﻦ اﻟﺤﺪ‬
‫;)‪TimeSpan ts = new TimeSpan(4, 30, 0‬‬
‫اﻷﻗﺼﻰ ﻟﻞ ‪ ، short‬وﻟﻜﻦ ﻟﻮ اﻓﺘﺮﺿﻨﺎ أن ﻣﺠﻤﻮﻋﻬﻢ ﺗﺠﺎوز ﺣﺪود‬
‫ﻣﺪى ال ‪ short‬ﻓﺈن ذﻟﻚ ﺳﻴﻨﺘﺞ ﻣﺸﻜﻠﺔ‪.‬‬

‫ﻟﻬﺬا اﻟﺴﺒﺐ‪ ،‬ﻳﻤﻨﻌﻚ اﻟﻤﺘﺮﺟﻢ ﻣﺒﺎﺷﺮة ﻣﻦ آﺘﺎﺑﺔ ﻣﺜﻞ هﺬا اﻟﻜﻮد وﻳﻌﻄﻴﻚ‬
‫رﺳﺎﻟﺔ اﻟﺨﻄﺄ اﻟﺘﺎﻟﻴﺔ ‪Cannot implicitly convert type 'int' to‬‬
‫‪47‬‬ ‫‪'short'.‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫‪ ‬‬ ‫‪ ‬‬

‫‪ ‬‬
‫اﻷﻧﻮاع واﻟﺪوال اﻟﺮﺋﻴﺴﻴﺔ ﻓﻲ اﻟﺴﻲ ﺷﺎرب‬
‫‪ ‬‬ ‫أﺣﻤﺪ ﺟﻤﺎل‬
‫‪ ‬‬ ‫ﻟﻜﻦ ﻟﻮ رﻏﺒﻨﺎ ﻓﻲ اﻟﺘﺤﻮﻳﻞ رﻏﻤًﺎ ﻋﻦ هﺬﻩ اﻟﻨﻘﻄﺔ ﺣﺘﻰ ﻟﻮ ﻧﺘﺞ ﻋﻦ ذﻟﻚ ﺿﻴﺎع ﺑﻌﺾ اﻟﺒﻴﺎﻧﺎت‪ ،‬ﻓﻲ هﺬﻩ اﻟﺤﺎﻟﺔ ﻧﻠﺠﺄ ﻟﻤﺎ ﻳﺴﻤﻰ ﺑﻌﻤﻠﻴﺔ اﻟـ ‪. Cast‬‬

‫‪ ‬‬ ‫‪ ‬‬ ‫ﻋﻤﻠﻴﺎت ال ‪Cast‬‬

‫ﻻ ﺗﻨﻄﺒﻖ ﻋﻤﻠﻴﺎت ال ‪ cast‬ﻋﻠﻰ اﻟﺘﺤﻮﻳﻞ ﻣﻦ اآﺒﺮ ﻷﺻﻐﺮ ﻓﻘﻂ ‪ ،‬ﺑﻞ ﻳﻤﻜﻦ اﺳﺘﺨﺪاﻣﻬﺎ ﻓﻲ آﻞ ﻋﻤﻠﻴﺎت اﻟﺘﺤﻮﻳﻞ‪ ،‬اﺑﺴﻂ اﺳﺘﺨﺪام ﻟﻬﺎ هﻮ‬
‫ﻟﺘﺤﻮﻳﻞ ‪ Integer‬إﻟﻰ ‪ Short‬ﺑﺎﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ‪:‬‬

‫ﻛﻮد‪:‬‬
‫;‪int var = 10‬‬
‫;‪short var2 = (short)var‬‬
‫ﻓﻲ اﻟﻔﻴﺒﻲ ‪.‬ﻧﺖ ﻧﺴﺘﻌﻤﻞ اﻟﺪاﻟﺔ ‪ CType‬ﺣﻴﺚ ‪ Type‬آﻤﺎ هﻮ اﺳﻢ اﻟﻨﻮع اﻟﺬي ﻧﺮﻳﺪ اﻟﺘﺤﻮﻳﻞ إﻟﻴﻪ‬

‫ﻛﻮد‪:‬‬
‫;‪Dim var As Integer = 10‬‬
‫;)‪Dim var2 As Short = CShort(var‬‬
‫ﻓﻲ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ‪ ،‬ﻟﻮ ﻗﻤﻨﺎ ﺑﻄﺒﺎﻋﺔ ﻧﺘﻴﺠﺔ ‪ var2‬ﺳﻨﺠﺪ أﻧﻬﺎ ‪ ، 10‬ﻟﻜﻦ ﻣﺎذا ﻟﻮ اﻓﺘﺮﺿﻨﺎ اﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ‪:‬‬

‫ﻛﻮد‪:‬‬
‫;‪int var = 100000‬‬
‫;‪short var2 = (short)var‬‬
‫;)‪Console.WriteLine(var2‬‬
‫;)(‪Console.ReadKey‬‬

‫اﻟﻨﺘﻴﺠﺔ ﻟﻦ ﻳﻤﻜﻦ ﺗﻮﻗﻌﻬﺎ‪ ،‬ﺣﻴﺚ ﺳﺘﻜﻮن اﻟﻨﺘﻴﺠﺔ هﻲ ‪ ،31072-‬ﺣﻴﺚ ﺳﻴﻘﻮم اﻟﻤﺘﺮﺟﻢ ﺑﻌﻜﺲ اﻹﺷﺎرات اﺑﺘﺪاء ﻣﻦ ‪ 32768‬وﻣﻦ ﺛﻢ إﻧﻘﺎص رﻗﻢ ﻣﻊ‬
‫آﻞ زﻳﺎدة ﻋﻦ اﻟﺮﻗﻢ اﻟﺴﺎﺑﻖ‪ ،‬أو ﺑﺎﺧﺘﺼﺎر ﻓﻬﻮ ﻳﻘﻮم ﺑﻄﺮح اﻟﺮﻗﻢ اﻟﻨﺎﺗﺞ ﻣﻦ اﻟﺤﺪ اﻷﻗﺼﻰ أو اﻟﻤﺪى اﻷﻗﺼﻰ ﻟﻠﻨﻮع ‪ short‬وهﻮ ‪.32767‬‬

‫ﺑﺎﺳﺘﺨﺪام هﺬا اﻟﻨﻮع ﻣﻦ اﻟﺘﺤﻮﻳﻼت‪ ،‬ﻓﺈﻧﻪ ﻣﻦ اﻟﻤﻔﻀﻞ داﺋﻤًﺎ اﺳﺘﺨﺪام ‪ Try Catsh‬واﻟﺘﻲ ﺷﺮﺣﻬﺎ اﻷﺳﺘﺎذ ﻣﺤﻤﺪ ﺳﺎﻣﺮ ﻓﻲ درس اﻟﺴﺎﺑﻖ‪ ،‬واﻟﺘﻲ‬
‫ﺳﻨﻌﻮد ﻟﺸﺮﺣﻬﺎ ﻓﻲ ﻣﺮﺣﻠﺔ أﺧﺮى ﻣﻦ اﻟﺪورة ﺑﺎﻟﺘﻔﺼﻴﻞ‪.‬‬

‫اﻟﺘﺤﻮﻳﻞ ﺑﺎﺳﺘﺨﺪام اﻟﻔﺌﺔ ‪Convert‬‬

‫ﻼ‪:‬‬
‫ﻳﻤﻜﻦ اﻟﺘﺤﻮﻳﻞ ﺑﻴﻦ أي ﻧﻮع ﻣﻦ اﻟﺒﻴﺎﻧﺎت ﺑﺎﺳﺘﺨﺪام اﻟﻔﺌﺔ ‪ Convert‬ﺑﺎﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ ﻣﺜ ً‬

‫ﻛﻮد‪:‬‬
‫;)‪myByte = Convert.ToByte(myInt‬‬

‫‪48‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫‪ ‬‬

‫‪ ‬‬ ‫‪ ‬‬

‫ﺗﻄﺎﻟﻌﻮن ﻓﻲ ﻫﺬا اﻟﻌﺪد‪...‬‬

‫ﻣﺜﺎل ﻣﺒﺴﻂ ﻹﻧﺸﺎء ‪ Add-ins‬ﻟﺒﻴﺌﺔ ﺗﻄﻮﻳﺮ‬


‫ﻧﺠﻴﺐ اﻟﻤﺠﻴﺪي‬ ‫‪.NET‬‬
‫ﺗﺘﻤﺔ ﺻﻔﺤﺔ ‪51‬‬
‫ﺗﻌﺮف ﻋﻠﻰ ﺗﻘﻮﻳﻢ ﻓﺌﺔ أم اﻟﻘﺮى‬
‫أﺣﻤﺪ ﺑﺪر‬ ‫ﺗﺘﻤﺔ ﺻﻔﺤﺔ ‪57‬‬

‫اﻟﺘﺸﻔﻴﺮ و ﻓﻚ اﻟﺘﺸﻔﻴﺮ ﻓﻲ اﻟﺪوت ﻧﺖ – ﻧﻈﺮة‬


‫ﻋﺼﺎم ﺣﻨﻔﻲ!!!‪!!!Boris‬‬
‫ﺳﺮﻳﻌﺔ –‬
‫ﺗﺘﻤﺔ ﺻﻔﺤﺔ ‪58‬‬
‫‪H‬‬ ‫‪H‬‬

‫اﺑﺪأ ﻟﻴﻨﻚ‬

‫ﻟﻌﻠﻚ إﻧﺴﺎن أﻧﻴﻖ و ﺗﻬﺘﻢ ﺑﻤﻈﻬﺮ وواﺟﻬﺔ اﻟﻤﺴﺘﻌﻤﻞ‬


‫اﻟﺨﺎﺻﺔ ﺑﺒﺮﻧﺎﻣﺠﻚ ﻟﺬﻟﻚ ﻗﺪ ﻳﻬﻤﻚ ﻫﺬا اﻟﻤﻮﺿﻮع‬
‫ﻣﻜﺘﺒﺔ ‪ XPerience‬ﻣﺠﺎﻧﻴﺔ ﻓﻴﻬﺎ أﻛﺜﺮ ﻣﻦ ‪ 40‬أداة ﺟﺎﻫﺰة و ﻣﺠﺎﻧﻴﺔ‬
‫ﻻﺳﺘﻌﻤﺎﻟﻬﺎ ﻓﻲ اﻟﻤﺸﺎرﻳﻊ اﻟﻌﻤﻼﻗﺔ وان رﻏﺒﺖ ﻓﻲ اﻟﻜﻮد ﻳﻤﻜﻨﻚ وﻫﻲ ﺣﺴﺐ ﻣﺎ‬
‫رأﻳﺖ أﻓﻀﻞ و أﺟﻤﻞ ﺑﻜﺜﻴﺮ ﻣﻦ ﻣﻜﺘﺒﺔ ‪ EntryLib.Net‬ﻛﻤﺎ أﻧﻬﺎ ﺗﺤﺘﻮي‬
‫ﻋﻠﻰ أدوات ﺟﺪ ﻣﺘﻘﺪﻣﺔ ﻻ ﺗﻮﺟﺪ ﻓﻲ اﻷﺧﻴﺮة‪ ،‬ﻟﻄﻠﺐ ﻧﺴﺨﺔ ﻣﺠﺎﻧﻴﺔ و ﺗﺤﻤﻴﻠﻬﺎ‬
‫‪http://www.devexpress.com/Products/NET/WebRegistrati‬‬
‫‪  on/‬‬

‫ﺗﺸﻔﻴﺮ ﺟﻤﻠﺔ اﻻﺗﺼﺎل ‪Connection string‬‬

‫ﻣﻮاﺿﻴﻊ ﻣﻨﻮﻋﺔ ﻓﻲ ﻋﺎﻟﻢ اﻟﺪوت ﻧﺖ و اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ‬


‫إﻋﺪاد ﻣﺼﻄﻔﻰ ﻣﺤﻤﻮد)!‪(theCodeOfSilence‬‬
‫‪ ‬‬

‫‪ ‬‬
‫‪.NET‬‬
‫‪ Ad‬ﻟﺒﻴﺌﺔ ﺗﻄﻮﻳﺮ ‪T‬‬
‫‪dd-ins‬‬
‫ﻣﺜﺎل ﻣﺒﺴﻂ ﻹﻧﺸﺎء ‪s‬‬
‫ل‬
‫ﻧﺠﻴﺐ اﻟﻤﺠﺠﻴﺪي‬
‫اﻟﻤﻔﺎﺗﻴﺢ ( ‪ ,‬ﺛﻢ ﻧﻘﻮم ﺑﺑﻌﻤﻞ‬
‫ﺢ‬ ‫ﺷﺮ ﻟﻮﺣﺔ‬
‫اﻹدﺧﺎل اﻟﻔﻌﺎﻟﺔ ) ﻣﺆﺷ‬
‫ل‬ ‫ﻓﻲ ﻧﻘﻄﺔ‬
‫ﺸﺎء ﻣﺸﺮوع ‪ Add-inns‬ﻹدرااج اﻟﺘﺎرﻳﺦ واﻟﻮﻮﻗﺖ اﻟﺤﺎﻟﻲ ﻲ‬ ‫ﺳﻨﻘﻮم ﻓﻲ ﻣﺎ ﻳﻠﻲ ﺑﺈﻧﺸ‬
‫ﻟﻪ اﺧﺘﺼﺎر ﻣﻦ ﻟﻮﺣﺔ‬ ‫‪ Ad‬اﻟﺬي ﻗﻤﻨﺎ ﺑﻌﻤﻠﻪ إﻟﻰ ﺷﺮﻳﻳﻂ اﻷدوات و آآﻴﻒ ﻧﻀﻴﻒ ﻪ‬ ‫ﻀﻴﻒ اﻟـ ‪dd-ins‬‬ ‫ﻣﺸﺮوع ‪ setup‬ﻟﺘﺤﺰﺰﻳﻢ اﻟﺒﺮﻧﺎﻣﺞ وﻧﻧﺘﻌﻠﻢ آﻴﻒ ﻧﻀ‬
‫اﻟﻤﻔﺎﺗﻴﺢ‪ ...‬ﺑﺴﻢ اﷲ ﻧﺒﺒﺪأ‬
‫ﺢ‬
‫‪ ‬‬ ‫‪ ‬‬
‫أوﻻً‪ :‬ﺑﺮﻧﺎﻣﺞ اﻟـ‪Add-in‬‬

‫‪<= Other‬‬
‫‪O‬‬ ‫‪Proje‬‬‫ﺑﻔﺘﺢ ﻣﺸﺮوع ﺟﺪﻳﻳﺪ و ﻓﻲ ﻣﺮﺑﻊ اﻟﺤﻮار ‪ :‬ﻣﺸﺮووع ﺟﺪﻳﺪ =< ﻓﻲ ‪ Projecct Type‬اﺧﺘﺮ ‪ect Types‬‬
‫‪ .1‬ﻗﻢ ﺢ‬
‫ﺳﻢ اﻟﻤﺸﺮوع اآآﺘﺐ‬
‫اﻟﻨﺺ اﻟﺨﺎص ﺑﺎﺳ‬
‫‪ .Visual Stuudio Add-in‬ﻓﻲ ﻣﺮﺑﻊ ﺺ‬
‫‪ Tem‬اﺧﺘﺮ ‪ns‬‬ ‫‪ <=Extensib‬وﻓﻲ ‪mplates‬‬ ‫‪bility‬‬
‫‪.InsertDateT‬‬‫‪Time‬‬

‫ﺞ‬
‫ﻣﻌﺎﻟﺞ‬ ‫ﺳﻴﻈﻬﺮ ﻟﻚ‬ ‫‪ .2‬ﺑﻌﻌﺪ اﻟﻀﻐﻂ ﻰ‬
‫ﻋﻠﻰ زر ﻣﻮاﻓﻖ ﺳ‬
‫‪ Add-ins,,‬ﻗﻢ ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ زر اﻟﺘﺎﻟﻲ و ﻓﻓﻲ‬
‫ﻟﺸﺎﺷﺔ اﻟﺘﺎﻟﻴﺔ ﻗﻢ ﺑﺎﺧﺘﻴﺎر اﻟﻠﻠﻐﺔ اﻟﺘﻲ ﺗﺮﻳﺪﺪهﺎ‬
‫اﻟﺸ‬
‫وﻟﺘﻜﻦ ‪ VB.NET‬و هﻲ اﻟﺨﻴﺎر اﻟﺜﺎﻧﻲ ﺛﻢ‬
‫ﺿﻐﻂ زر ﻲ‬
‫اﻟﺘﺎﻟﻲ‪.‬‬ ‫اﺿ‬

‫‪50‬‬
‫‪200‬‬
‫ﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮااﻳﺮ ﻣﻦ ﺳﻨﺔ ‪08‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬ‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.ccom‬‬
‫‪ ‬‬

‫‪ ‬‬
‫‪.NET‬‬
‫‪ Ad‬ﻟﺒﻴﺌﺔ ﺗﻄﻮﻳﺮ‪T‬‬
‫‪dd-ins‬‬
‫ﻣﺜﺎل ﻣﺒﺴﻂ ﻹﻧﺸﺎء ‪s‬‬
‫ل‬
‫ﺠﻴﺪي ‪ ‬‬
‫ﻧﺠﻴﺐ اﻟﻤﺠ‬

‫‪ ‬‬ ‫‪ ‬‬
‫ﻋﻠﻰ اﻟﺘﻄﺒﻴﻖ اﻟﻟﺬي‬
‫ﻓﻲ اﻟﺸﺎﺷﺔ اﻟﺜﺎﻟﺜﺜﺔ ﻗﻢ ﺑﺎﻟﺘﺄﺷﻴﺮ ﻋ‬
‫‪ .3‬ﻲ‬
‫‪ Ad‬أن ﻳﺪﻋﻤﻪﻪ وﻓﻲ ﻣﺜﺎﻟﻨﺎ هﻮ‬ ‫ﺗﺮﺮﻳﺪ ﻣﻦ ‪dd-in‬‬
‫‪M‬‬
‫‪Microsoft‬‬ ‫اﻟﻟﺨﻴﺎر اﻷول ‪Visual Studiio‬‬
‫‪V‬‬
‫ﺿﻐﻂ زر اﻟﺘﺎﻟﻲ‪.‬‬
‫‪ 20088‬ﺛﻢ ا ﻂ‬

‫ﻓﻲ اﻟﺸﺎﺷﺔ اﻟﺮاﺑﻌﻌﺔ ﻗﻢ ﺑﻜﺘﺎﺑﺔ اﺳﻢﻢ اﻟـ ‪ Add-in‬ﻓﻲ‬


‫‪ .4‬ﻲ‬
‫ﻣﺮﺑﻊ اﻟﻨﺺ اﻷول وﻟﻴﻜﻦ ‪Innsert Date and‬‬
‫ﺛﻢ ﻗﻢ‬
‫ﻟﻪ ﻓﻲ ﻣﺮﺑﻊ اﻟﻨﻨﺺ اﻟﺜﺎﻧﻲ ﻢ‬ ‫‪ Time‬و وﺻﻒ ﻪ‬ ‫‪T‬‬
‫ﺑﺎﻟﻀﻐﻐﻂ ﻋﻠﻰ زر اﻟﺘﺎﺎﻟﻲ‪.‬‬

‫ﺿﻊ‬
‫ﻓﻲ اﻟﺸﺎﺷﺔ اﻟﺨﺎﻣﺴﺔ ﻳﻄﻠﺐ ﻣﻨﻨﻚ اﻟﻤﻌﺎﻟﺞ وﺿ‬ ‫‪ .5‬ﻲ‬
‫‪ Add‬ﻗﻢ ﺑﺎﺧﺘﻴﺎر اﻟﺨﻴﺎر اﻷوول‬ ‫ﺧﻴﺎرات ‪d-ins‬‬ ‫ﺧ‬
‫و اﻟﺨﻴﺎر اﻟﺜﺎﻧﻲ ﺛﺛﻢ اﺿﻐﻂ زر اﻟﻟﺘﺎﻟﻲ‪.‬‬
‫ﻋﻠﻰ‬‫ﺳﺔ ﺑﺎﻟﻀﻐﻂ ﻋ‬ ‫ﺴﺘﻄﻴﻊ ﺗﺠﺎوز اﻟﺸﺎﺷﺔ اﻟﺴﺎدﺳ‬ ‫‪ .6‬ﺗﺴ‬
‫اﻟﺴﺎﺑﻌﺔ و‬
‫ﺔ‬ ‫ﺷﺮة و ﻓﻲ اﻟﻟﺸﺎﺷﺔ‬ ‫ززر اﻟﺘﺎﻟﻲ ﻣﺒﺎﺷ‬
‫ﻷﺧﻴﺮة اﺧﺘﺮ ‪h‬‬
‫‪.Finish‬‬ ‫اﻷ‬

‫‪51‬‬
‫ﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬
‫اﻟﻟﻌﺪد ‪ 01‬ﻟﺸﻬ‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.ccom‬‬
‫‪ ‬‬

‫‪ ‬‬
‫ﻣﺜﺎل ﻣﺒﺴﻂ ﻹﻧﺸﺎء ‪ Add-ins‬ﻟﺒﻴﺌﺔ ﺗﻄﻮﻳﺮ‪.NET‬‬
‫ﻧﺠﻴﺐ اﻟﻤﺠﻴﺪي ‪ ‬‬
‫ﺑﻬﺬا ﻧﻜﻮن ﻗﺪ اﻧﺘﻬﻴﻨﺎ ﻣﻦ إﻋﺪاد ﺟﺰء آﺒﻴﺮ ﻣﻦ اﻟﺒﺮﻧﺎﻣﺞ و ﺳﻴﻘﻮم‬
‫ﺗﺸﻔﻴﺮ ﺟﻤﻠﺔ اﻻﺗﺼﺎل ‪Connection string‬‬ ‫‪VS.NET‬ﺑﻜﺘﺎﺑﺔ اﻟﻜﻮد اﻟﻼزم ﻧﻴﺎﺑﺔ ﻋﻨﺎ ‪ -‬آﺘﺮ ﺧﻴﺮﻩ ﺑﻴﻞ ﺟﻴﺘﺲ ‪ ,‬ﻣﺶ ﻣﺨﻠﻴﻨﺎ‬
‫ﻣﺤﻤﺪ ﺟﻤﺎل اﻟﺪﻳﻦ‬ ‫و اﻵن ﻓﻲ ﻣﺴﺘﻜﺸﻒ اﻟﻤﺸﺮوع ﻗﻢ ﺑﻌﺮض اﻟﻤﻠﻒ‬ ‫ﻣﺤﺘﺎﺟﻴﻦ ﺣﺎﺟﺔ ‪-‬‬
‫دﻋﻮﻧﺎ ﻧﻔﻜﺮ ﺑﺼﻮت ﻋﺎﻟﻲ ﺳﻮﻳﺎ‪....‬‬ ‫‪Connect.vb‬‬
‫ﻋﻨﺪﻣﺎ ﻧﻘﻮم ﺑﻌﻤﻞ ﻣﻮﻗﻊ ﻋﻠﻲ اﻻﻧﺘﺮﻧﺖ ﻳﺤﺘﺎج إﻟﻰ ﻗﺎﻋﺪة‬
‫و ﻣﺎﻳﻬﻤﻨﺎ اﻵن ﻣﻦ اﻹﺟﺮاءات و اﻟﺪوال اﻟﻤﻮﺟﻮدة هﻮ اﻹﺟﺮاء ‪ Exec ,‬ﻓﺤﺎول‬
‫داﺋﻤﺎ ؟؟؟‬
‫ﺑﻴﺎﻧﺎت‪ ...‬ﻓﻲ أي ﺷﻲ ﻧﻔﻜﺮ ‪ ‬‬
‫‪ ‬‬ ‫ﻼ و اذهﺐ ﻣﺒﺎﺷﺮة إﻟﻰ هﺬا اﻹﺟﺮاء‪ ,‬ﺳﺘﺠﺪ اﻟﻜﻮد‬
‫آﺒﺢ ﺟﻤﺎح ﺣﺐ اﻻﺳﺘﻄﻼع ﻗﻠﻴ ً‬
‫اﻹﺟﺎﺑﺔ ﻫﻲ‪ :‬ﻛﻴﻒ ﻳﻜﻮن اﻷداء ﺳﺮﻳﻊ ﺟﺪا وﻓﻲ ﻧﻔﺲ اﻟﻮﻗﺖ اﻛﺒﺮ‬ ‫اﻟﺘﺎﻟﻲ ‪:‬‬
‫أﻣﺎﻧﺎ‪ ..‬ﻛﻼم ﺟﻤﻴﻞ ﺟﺪا‪.‬‬ ‫ﻛﻮد‪:‬‬
‫ﻟﻬﺬا ﻟﺠﺎء اﻟﻜﺜﻴﺮ ﻣﻨﺎ إﻟﻰ ﻣﻠﻔﺎت ال ‪ Config files‬واﻟﺘﻲ‬ ‫‪Public Sub Exec(ByVal commandName As String,‬‬
‫ﺗﻌﺪ ﻣﻦ أﺟﻤﻞ اﻷﺷﻴﺎء ﻓﻲ اﻟﻌﻤﻞ ﺑﺎﻟﺪوت ﻧﺖ ﻋﻤﻮﻣﺎ‪.‬‬ ‫‪ByVal executeOption As vsCommandExecOption,‬‬
‫‪ByRef varIn As Object, ByRef varOut As Object,‬‬
‫دور ال ‪ Config File‬ﻫﻮ أﻧﻬﺎ ﺗُﻨﻔﺬ أوﻻ ﻗﺒﻞ ال ‪EXE‬‬ ‫‪ByRef handled As Boolean) Implements‬‬
‫ﻓﻲ ﺣﺎﻟﺔ ﺗﻄﺒﻴﻖ وﻳﻨﺪوز أو ﻗﺒﻞ أن ﺗﻈﻬﺮ ﺻﻔﺤﺔ اﻟﻨﺖ ﻓﻲ ﺣﺎﻟﺔ‬ ‫‪IDTCommandTarget.Exec‬‬
‫‪handled = False‬‬
‫ال‪. Web Application‬‬ ‫= ‪If executeOption‬‬
‫وﻟﻬﺬا ﺑﺪأﻧﺎ ﻧﻀﻊ ال ‪ Connection String‬اﻟﺨﺎص‬ ‫‪vsCommandExecOption.vsCommandExecOptionDoDefault‬‬
‫ﺑﻘﺎﻋﺪة اﻟﺒﻴﺎﻧﺎت ﻓﻲ ال‪ ،Config FILE‬ﺣﺘﻰ إذا ﺗﻢ ﻧﻘﻞ‬ ‫‪Then‬‬
‫= ‪If commandName‬‬
‫ﻗﺎﻋﺪة اﻟﺒﻴﺎﻧﺎت إﻟﻰ ﻣﻜﺎن آﺧﺮ ﻧﻜﺘﺐ اﻟﻤﺴﺎر اﻟﺠﺪﻳﺪ داﺧﻞ ال‬ ‫‪"InsertDateTime.Connect.InsertDateTime" Then‬‬
‫‪ Config File‬دون اﻟﺤﺎﺟﺔ إﻟﻰ إﻋﺎدة ﺗﺮﺟﻤﺔ اﻟﻤﺸﺮوع‬ ‫‪handled = True‬‬
‫‪Exit Sub‬‬
‫ﺛﺎﻧﻴﻪ‪.‬‬
‫‪End If‬‬
‫ﻫﻨﺎ وﺻﻠﻨﺎ اﻟﻠﻲ ﺟﺰء اﻟﺴﻬﻮﻟﺔ ﻓﻲ اﻷداء‪ ،‬وﻟﻜﻦ ﻫﻞ ﻫﻮ ﻓﻲ أﻣﺎن‬ ‫‪End If‬‬
‫ﻋﻦ اﻟﻬﺎﻛﺮز ؟ اﻹﺟﺎﺑﺔ ﻻ‪ ...‬ﺑﻤﻨﺘﻬﻰ اﻟﺴﻬﻮﻟﺔ ﻳﻤﻜﻦ ﻟﻤﺨﺘﺮق‬ ‫‪End Sub‬‬
‫اﻟﻤﻮاﻗﻊ أن ﻳﺤﺼﻞ ﻋﻠﻲ ال‪Connection String‬‬ ‫ﻗﻢ ﺑﺘﻐﻴﻴﺮ اﻟﺴﻄﺮ‬
‫وﻳﻘﻮم ﺑﻤﺎ ﻳﺤﻠﻮ ﻟﻪ ﻓﻲ ﻗﺎﻋﺪة اﻟﺒﻴﺎﻧﺎت‪ .‬وﺧﺼﻮﺻﺎ إذا ﻛﺎن ال‬
‫‪ Connection string‬ﻳﻌﻤﻞ ﺑﻨﻈﺎم ‪SQl‬‬ ‫ﻛﻮد‪:‬‬
‫‪handled = True‬‬
‫‪ Authentication‬وﻟﻴﺲ ﺑﺎل ‪Windows‬‬
‫إﻟﻰ‬
‫‪) Authentication‬ﻓﻲ ﺣﺎﻟﺔ ﻣﺤﺮك ﻗﻮاﻋﺪ اﻟﺒﻴﺎﻧﺎت‬
‫‪ (SQL Server‬ﻻن ﻓﻲ ﻫﺬه اﻟﺤﺎﻟﺔ ﺳﻴﺘﻢ ﻛﺘﺎﺑﻪ اﺳﻢ‬ ‫ﻛﻮد‪:‬‬
‫اﻟﻤﺴﺘﺨﺪم و ﻛﻠﻤﺔ اﻟﻤﺮور اﻟﺨﺎﺻﺔ ﺑﺎل ‪SQL Server‬‬ ‫)(‪handled = InsertDateTime‬‬
‫اﻵن ﻣﺎ ﻫﻮ اﻟﺤﻞ ﻟﻠﻌﻤﻞ ﺑﺄﻣﺎن‪ ،‬ﺑﺎﻟﺘﺄﻛﻴﺪ اﻟﺤﻞ اﻷﻣﺜﻞ ﻫﻮ أن‬ ‫وأﺳﻔﻞ اﻹﺟﺮاء ‪ Exec‬ﻗﻢ ﺑﻜﺘﺎﺑﺔ اﻟﺪاﻟﺔ اﻟﺘﺎﻟﻴﺔ ‪:‬‬
‫ﻧﻘﻮم ﺑﺘﺸﻔﻴﺮ ال ‪ Connection String‬وﻫﻮ ﺑﺪاﺧﻞ‬
‫ﻛﻮد‪:‬‬
‫ال ‪Config File‬‬
‫‪Public Function InsertDateTime() As Boolean‬‬
‫ﻛﻮد‪:‬‬ ‫‪If Not‬‬
‫;"‪string path = "/web‬‬ ‫)‪IsNothing(_applicationObject.ActiveDocument‬‬
‫= ‪Configuration config‬‬ ‫‪Then‬‬
‫‪WebConfigurationManager.OpenWebConfi‬‬ ‫‪CType(_applicationObject.ActiveDocument.Selectio‬‬
‫;)‪guration(path‬‬ ‫‪n, TextSelection).Text = DateTime.Now.ToString‬‬
‫‪ Config‬ال داﺧﻞ ﺗﺸﻔﲑﻩ اﳌﺮاد اﳉﺰء ‪//‬‬ ‫‪End If‬‬
‫‪File‬‬ ‫‪Return True‬‬
‫= ‪ConfigurationSection AppSet‬‬ ‫‪End Function‬‬
‫‪config.GetSection("ConnectionStrings‬‬ ‫وﺑﻬﺬا ﻧﻜﻮن ﻗﺪ اﻧﺘﻬﻴﻨﺎ ﻣﻦ اﻟﺒﺮﻧﺎﻣﺞ و ﻳﺘﺒﻘﻰ ﻟﻨﺎ اﻟﺘﺤﺰﻳﻢ و إﺿﺎﻓﺔ اﻟـ ‪ Add-in‬إﻟﻰ‬
‫;)"‬
‫ﺑﺎﻟﺘﺸﻔﲑ ﻗﻢ ‪//‬‬ ‫ﺷﺮﻳﻂ اﻷدوات ﻓﻲ ﺑﻴﺌﺔ اﻟﺘﻄﻮﻳﺮ ‪.‬‬
‫‪AppSet.SectionInformation.ProtectSec‬‬
‫‪tion("DataProtectionConfigurationPro‬‬ ‫ﺛﺎﻧﻴﺎً ‪ :‬ﺑﺮﻧﺎﻣﺞ اﻟﺘﺤﺰﻳﻢ‬
‫;)"‪vider‬‬
‫;)(‪config.Save‬‬
‫وﻟﻜﻲ ﻧﻌﻴﺪه إﻟﻰ ﺻﻴﻐﺘﻪ اﻷوﻟﻰ ‪ ..‬ﻧﻘﻮم ﺑﻔﻚ اﻟﺘﺸﻔﻴﺮ‬ ‫ﻗﻢ ﺑﺈﺿﺎﻓﺔ ﻣﺸﺮوع ﺟﺪﻳﺪ ﻣﻦ اﻟﻨﻮع ‪Setup and‬‬
‫ﻛﻮد‪:‬‬ ‫‪ Deployment‬واﺧﺘﺮ ‪ Setup Project‬وﻗﻢ ﺑﺘﺴﻤﻴﺘﻪ‬
‫‪AppSet.SectionInformation.UnprotectS‬‬ ‫‪ InsertDateTimeSetup‬واﺧﺘﺮ ﻣﻦ اﻟﻘﺎﺋﻤﺔ اﻟﻤﻨﺴﺪﻟﺔ‬
‫;)(‪ection‬‬ ‫‪ Solution‬اﻟﺨﻴﺎر ‪ Add to solution‬آﻤﺎ ﻓﻲ اﻟﺼﻮرة‬
‫;)(‪config.Save‬‬ ‫اﻟﺘﺎﻟﻴﺔ‪...‬‬

‫‪52‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫‪ ‬‬

‫‪ ‬‬
‫‪.NET‬‬
‫‪ Ad‬ﻟﺒﻴﺌﺔ ﺗﻄﻮﻳﺮ‪T‬‬
‫‪dd-ins‬‬
‫ﻣﺜﺎل ﻣﺒﺴﻂ ﻹﻧﺸﺎء ‪s‬‬
‫ل‬
‫ﺠﻴﺪي ‪ ‬‬
‫ﻧﺠﻴﺐ اﻟﻤﺠ‬

‫‪ ‬‬ ‫‪ ‬‬

‫ﺿﻐﻂ ﺑﺎﻟﺰر اﻷﻳﻤﻦ ﻋﻠﻰ ﻣﻣﺸﺮوع‬ ‫ﻣﺴﺘﻜﺸﻒ اﻟﻤﺸﺮوع اﺿ‬


‫ﻒ‬ ‫‪ .1‬ﻓﻲ‬
‫>== ‪. View‬‬
‫‪= Custom‬‬ ‫واﺧﺘﺮ ‪m Actions‬‬
‫ﺮ‬ ‫اﻟﺘﺤﺰﻳﻢ‬
‫ﺧﺘﺮ ‪Add custom‬‬ ‫ﻋﻠﻰ ‪ Custom Actions‬واﺧ‬ ‫‪ .2‬ﻗﻢ ﺑﺎﻟﻀﻐﻂ ﻋ‬
‫ﺳﻴﻈﻬﺮ ﻟﻚ ﻣﺮﺑﺑﻊ ﺣﻮار اﺧﺘﺮ ﻣﻨﻪ ‪Appllication‬‬
‫‪ Action‬ﺳ‬
‫ﺿﻐﻂ ﻋﻠﻰ اﻟﺰرر‪. OK‬‬
‫‪ Folder‬واﺿ‬

‫‪ ‬‬

‫‪53‬‬
‫ﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬
‫اﻟﻟﻌﺪد ‪ 01‬ﻟﺸﻬ‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.ccom‬‬
‫‪ ‬‬

‫‪ ‬‬
‫‪.NET‬‬
‫‪ Ad‬ﻟﺒﻴﺌﺔ ﺗﻄﻮﻳﺮ‪T‬‬
‫‪dd-ins‬‬
‫ﻣﺜﺎل ﻣﺒﺴﻂ ﻹﻧﺸﺎء ‪s‬‬
‫ل‬
‫ﺠﻴﺪي ‪ ‬‬
‫ﻧﺠﻴﺐ اﻟﻤﺠ‬

‫‪ ‬‬ ‫‪ ‬‬

‫اﻟﺰر ‪ Addd Output‬ﺳﻴﻈﻬﺮ‬‫ﺿﻐﻂ ﻋﻠﻰ ر‬ ‫‪ .3‬اﺿ‬


‫ﻟﻚ ﻣﺮﺮﺑﻊ ﺣﻮار ﺁﺁﺧﺮ‪ ,‬ﻗﻢ ﺑﺎﻟﺘﺄﺄﺷﻴﺮ ﻋﻠﻰ‬
‫ﻣﻮاﻓﻖ‪.‬‬ ‫ﺛﻢ‬ ‫‪Prim‬‬
‫‪mary‬‬ ‫‪Ouutput‬‬
‫ﻻﺣﻆ ااﻟﺼﻮرة اﻟﺘﺎﻟﻴﺔ‪...‬‬

‫ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ آﻞ ﻣﺸﺮﺮوع ﺑﺎﻟﺰر اﻷﻳﻳﻤﻦ و اﺧﺘﻴﺎر ‪ Buildd‬ﺛﻢ‬


‫ﻂ‬ ‫ﺸﺮوﻋﻴﻦ ‪ Add-in Prooject‬و ‪p Project‬‬
‫‪Setup‬‬ ‫ﻗﻢ ﺑﺘﺮﺟﻤﺔ اﻟﻤﺸ‬
‫اﻵن ﻢ‬
‫‪VS.NET‬‬ ‫أﻏﻠﻖ‪T.‬‬

‫ﻋﻠﻰ اﻟﻤﺴﺎر ‪"Projecct‬‬‫ﺟﻮد ﺿﻤﻦ ﻣﺠﻠﻠﺪ اﻟﻤﺸﺮوع ﻋ‬ ‫ﺤﺰﻳﻢ و اﻟﻤﻮﺟﻮ‬


‫اﻵن اذذهﺐ إﻟﻰ ﻣﺴﺎﺎر ﺑﺮﻧﺎﻣﺞ اﻟﺘﺤ‬
‫‪ Path\InsertDateTime\InssertDateTim‬وﻗﻢ ﺑﺘﺸﻐﻴﻞ ﻣﻠﻒ اﻟﺘﺜﺒﻴﺖ ‪.‬‬ ‫"‪meSetup\Deebug‬‬

‫‪45‬‬
‫ﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬
‫اﻟﻟﻌﺪد ‪ 01‬ﻟﺸﻬ‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.ccom‬‬
‫‪ ‬‬

‫‪ ‬‬
‫‪.NET‬‬
‫‪ Ad‬ﻟﺒﻴﺌﺔ ﺗﻄﻮﻳﺮ‪T‬‬
‫‪dd-ins‬‬
‫ﻣﺜﺎل ﻣﺒﺴﻂ ﻹﻧﺸﺎء ‪s‬‬
‫ل‬
‫ﺠﻴﺪي ‪ ‬‬
‫ﻧﺠﻴﺐ اﻟﻤﺠ‬
‫أدوات ﺑﻴﺌﺔ اﻟﺘﻄﻮﻮﻳﺮ‬
‫ﺛﺎﻟﺜﺎً‪ :‬إﺿﺎﻓﺔ ‪ InserrtDateTime Add-in‬إﻟﻰ ﺷﺮﻳﻂ ت‬

‫‪ Commands‬وﻣﻦ‬
‫‪C‬‬ ‫ﺧﺘﺮ اﻟﺘﺒﻮﻳﺐ ‪,‬‬
‫اﻟﺨﻴﺎر ‪ Cuustomize ,‬ﻓﻲ ﻣﺮﺑﻊ اﻟﺤﻮار اﻟﺘﺎﻟﻲ اﺧ‬‫ر‬ ‫اﻟﻘﺎﺋﻤﺔ ‪Tools‬‬
‫ﺔ‬ ‫ﺧﺘﺮ ﻣﻦ‬
‫ﺑﻌﺪ ﺗﺸﻐﻴﻞ ﺑﻴﺌﺔ اﻟﺘﻄﻮﻳﺮ اﺧ‬
‫ﺠﻨﺎ اﻟﺼﻐﻴﺮ آﻤﻤﺎ ﻓﻲ اﻟﺼﻮرة ااﻟﺘﺎﻟﻴﺔ‬
‫اﻟﺠﻬﺔ اﻟﻤﻘﺎﺑﻠﺔ ﺑﺮﻧﺎﻣﺠ‬
‫ﺔ‬ ‫‪ Categoories‬اﺧﺘﺮ ‪ ، Addins‬ﺳﻴﻴﻈﻬﺮ ﻓﻲ‬

‫‪ ‬‬ ‫‪ ‬‬

‫ﻟﻮﺣﺔ اﻟﻤﻔﺎﺗﻴﺢ ﻟﺘﺸﻐﻐﻴﻞ اﻟﺒﺮﻳﻤﺞ ‪ -‬ﺗﺗﺼﻐﻴﺮ‬


‫وﺗﺴﺘﻄﻴﻊ ﺗﺨﺼﻴﺺ اﺧﺘﺘﺼﺎر ﻣﻦ ﺔ‬
‫ﻊ‬ ‫ﻷدوات ﺑﻄﺮﻳﻘﺔ اﻟﺴﺤﺐ و اﻹﻓﻼ‬
‫ﻼت ‪,‬‬ ‫ﻗﻢ ﺑﻮﺿﻌﻪ ﻋﻠﻰ ﺷﺮﻳﻂ اﻷ‬
‫ﻈﻬﺮ ﺗﺄآﺪ ﻣﻦ ﺗﺗﺤﺪﻳﺪ ‪ Actioon.Add‬ﺛﻢ ﺿﻊ ﻣﺆﺷﺮ ﻟﻮﺣﺔ اﻟﻟﻤﻔﺎﺗﻴﺢ‬
‫ﺤﻮار اﻟﺬي ﺳﻴﻈ‬
‫‪ Keyboard‬وﻓﻲ ﻣﺮﺑﻊ اﻟﺤ‬
‫‪K‬‬ ‫ﺑﺮﻧﺎﻣﺞ ‪ -‬وذﻟﻚ ﺑﺎﺎﻟﻀﻐﻂ ﻋﻠﻰ زر‬
‫ﺞ‬
‫اﺿﻐﻂ ﻋﻠﻰ زر ﺗﻌﻴﻴﻴﻴﻦ ‪ Assign‬ﺛﺛﻢ ‪.OK‬‬
‫ﻂ‬ ‫‪ Ctrl+‬ﺛﻢ‬
‫ﻋﻠﻰ ﻣﻣﺮﺑﻊ اﻟﻨﺺ ‪ Press Shortcut keeys‬وﻗﻢ ﺑﺎﻟﻟﻀﻐﻂ ﻋﻠﻰ اﻷزرار ‪+Alt+1‬‬

‫ﻜﻮد‬
‫ﻣﺆﺷﺮ ﻟﻮﺣﺔ اﻟﻤﻔﺎﺗﻴﺢ ﻓﻲ أي ﻧﻘﻄﺔ داﺧﻞ ﻣﺤﺮر اﻟﻜﻮ‬
‫ﺮ‬ ‫أﺿﻒ ﻣﻠﻒ ﻧﺼﻲ ‪ ,‬أو ﺿﻊ‬ ‫وأﺧﻴﺮًا ﻟﺘﺠﺮﺮﺑﺔ اﻟﺒﺮﻧﺎﻣﺞ ﻗﻢﻢ ﺑﻔﺘﺢ ﻣﺸﺮوع ﺟﺪﻳﺪ ‪ ,‬ﺛﻢ ﻒ‬
‫‪ Add-in‬ﺟﺎهﺰ ﻟﻼﺳﺘﺘﺨﺪام‬
‫‪A‬‬ ‫أﺻﺒﺢ ﻟﺪﻳﻚ‬
‫ﺢ‬ ‫ﺴﺒﻘًﺎ‪ ،‬اﻵن‬
‫ﻟﻮﺣﺔ اﻟﻤﻔﺎﺗﻴﺢ اﻟﺬي ﻗﻤﻨﺎ ﺑﺘﻌﻴﻴﻨﻪ ﻣﺴ‬
‫ﺑﺎﺳﺘﺨﺪام اﺧﺘﺼﺎر ﺔ‬
‫م‬ ‫واﺿﻐﻂ ﻋﻠﻰ اﻟﺰر اﻟﺬﺬي ﻗﻤﻨﺎ ﺑﺈﺿﺎﻓﺘﺘﻪ‪ ،‬أو‬
‫ﻂ‬
‫وﻣﻦ ﻳﺪﺪري ﻗﺪ ﺗﻮﻓﻖ ﺑﺑﺒﻴﻌﻪ ﻷﺣﺪ اﻟﻤﻐﻔﻔﻠﻴﻦ ‪.‬‬

‫‪46‬‬
‫ﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬
‫اﻟﻟﻌﺪد ‪ 01‬ﻟﺸﻬ‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.ccom‬‬
‫‪ ‬‬

‫‪ ‬‬
‫ﺗﻘﻮﻳﻢ أم اﻟﻘﺮى ‪UmAlQuraCalendar Class‬‬
‫ﺑﺪر‪BADRMEDIA‬‬ ‫أﺣﻤﺪ‬
‫ﻓﻲ ﺑﻴﺌﺔ دوت ﻧﺖ ‪ 2005‬ﻳﻮﺟﺪ ‪ Class‬ﺟﺪﻳﺪ ﻳﻌﻮد ﺑﺘﻘﻮﻳﻢ أم اﻟﻘﺮى ﻟﻤﻦ ﻳﺤﺘﺎج ﻟﻠﺤﺼﻮل ﻋﻠﻰ اﻟﺘﺎرﻳﺦ اﻟﻬﺠﺮي‪.‬‬

‫ﺗﻌﺮﻳﻒ اﻟﻔﺌﺔ‬

‫ﻛﻮد‪:‬‬
‫‪Dim UmQ As New System.Globalization.UmAlQuraCalendar‬‬
‫ﻟﻠﺤﺼﻮل ﻋﻠﻰ اﻟﺘﺎرﻳﺦ اﻟﺤﺎﻟﻲ ‪:‬‬

‫ﻛﻮد‪:‬‬
‫‪ ‬‬ ‫‪Dim GetingDate As Date = Date.Now‬‬

‫‪ ‬‬ ‫‪ ‬‬ ‫ﻧﻌﺮف ﻟﻠﻴﻮم ﻣﺘﻐﻴﺮ وﻧﺮﺳﻞ ﻟﻠﻔﺌﺔ ﻟﻨﺤﺼﻞ ﻣﻨﻬﺎ ﻋﻠﻰ اﻟﻴﻮم اﻟﻬﺠﺮي‪:‬‬

‫ﻛﻮد‪:‬‬
‫)‪Dim hijriDay As Integer = UmQ.GetDayOfMonth(GetingDate‬‬
‫ﻧﻌﺮف ﻟﻠﺸﻬﺮ ﻣﺘﻐﻴﺮ وﻧﺮﺳﻞ ﻟﻠﻔﺌﺔ ﻟﻨﺤﺼﻞ ﻣﻨﻬﺎ ﻋﻠﻰ اﻟﻴﻮم اﻟﻬﺠﺮي‪:‬‬

‫ﻛﻮد‪:‬‬
‫)‪Dim hijriMonth As Integer = UmQ.GetMonth(GetingDate‬‬
‫ﻧﻌﺮف ﻟﻠﺴﻨﺔ ﻣﺘﻐﻴﺮ وﻧﺮﺳﻞ ﻟﻠﻔﺌﺔ ﻟﻨﺤﺼﻞ ﻣﻨﻬﺎ ﻋﻠﻰ اﻟﻴﻮم اﻟﻬﺠﺮي ‪:‬‬

‫ﻛﻮد‪:‬‬
‫)‪Dim hijriYear As Integer = UmQ.GetYear(GetingDate‬‬
‫وﺑﻌﺪ ذﻟﻚ أﺻﺒﺤﺖ ﺗﻤﻠﻚ اﻟﺘﺎرﻳﺦ‪.‬‬

‫اﺧﺘﺮﻧﺎ ﻟﻚ ﻣﻦ ﻣﻜﺘﺒﺔ اﻟﻜﺘﺐ ‪...‬‬


‫اﺑﺪأ ‪LINQ‬‬
‫ﻣﺤﺘﻮﻳﺎت اﻟﻜﺘﺎب‪:‬‬
‫اﻟﻔﺼﻞ اﻷول ‪ :‬ﻣﻴﺰات ﻟﻐﺔ ‪C#‬‬
‫اﻟﻔﺼﻞ اﻟﺜﺎﻧﻲ ‪ :‬أﺳﺎﺳﻴﺎت ‪LINQ‬‬
‫اﻟﻔﺼﻞ اﻟﺜﺎﻟﺚ‪LINQ To SQL :‬‬
‫ﻋﺪد ﺻﻔﺤﺎت اﻟﻜﺘﺎب‪ 53 :‬ﺻﻔﺤﺔ‬
‫ﺣﺠﻢ اﻟﻜﺘﺎب‪ 813 :‬ﻛﻴﻠﻮﺑﺎﻳﺖ‬
‫اﻟﻤﺆﻟﻒ‪ :‬ﻣﺠﻬﻮل‪.‬‬
‫ﻟﻠﺘﻨﺰﻳﻞ اﺿﻐﻂ ﻫﻨﺎ‬
‫رﻏﻢ أن ﻟﻐﺔ اﻟﺴﻲ ﺷﺎرب ﻫﻲ اﻟﻤﺴﺘﻌﻤﻠﺔ ﻓﻲ اﻟﻜﺘﺎب‪ ،‬إﻻ أن‬
‫اﻟﻘﺎرئ اﻟﻌﺰﻳﺰ ﺳﻴﺠﺪ ﻓﻴﻪ ﻣﻌﻠﻮﻣﺎت ﻗﻴﻤﺔ ﻋﻦ ﺑﻌﺾ ﺧﺼﺎﺋﺺ‬
‫ﻫﺬه اﻟﺘﻘﻨﻴﺔ اﻟﺠﺪﻳﺪة ﺑﻐﺾ اﻟﻨﻈﺮ ﻋﻦ ﻟﻐﺔ اﻟﺒﺮﻣﺠﺔ اﻟﻤﺴﺘﻌﻤﻠﺔ‪.‬‬
‫ﻣﺤﺎوﻟﺔ ﺟﻴﺪة ﺟﺪا ﻣﻦ اﻟﻤﺆﻟﻒ ﺟﺰاه اﷲ ﺧﻴﺮا‪.‬‬

‫‪57‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫‪ ‬‬

‫‪ ‬‬
‫اﻟﺘﺸﻔﻴﺮ و ﻓﻚ اﻟﺘﺸﻔﻴﺮ – ﻧﻈﺮة ﺳﺮﻳﻌﺔ –‬
‫ﺣﻨﻔﻲ!!!‪!!!Boris‬‬ ‫ﻋﺼﺎم‬
‫اﻟﺒﻴـــﺎﻧﺎت ﺗﺴﺘﻄﻴﻊ ﺣﻔﻈﻬﺎ أو ﻧﻘﻠﻬﺎ ﻣﻦ ﺧﻼل ﺷﺒﻜﺔ ‪ Network‬ﺑﻜﻞ ﺳﻬﻮﻟﺔ ﻣﻊ ذﻟﻚ ﻓﺄﻧﻚ ﺗﺴﺘﻄﻴﻊ اﺳﺘﺨﺪام ﻣﺘﻄﻠﺒﺎت ﻟﻠﺘﺼﺮﻳﺢ ﻟﻜﻲ ﺗﻘﻮم ﺑﺎﻟﺴﻴﻄﺮة‬
‫ﻋﻠﻰ ﻋﻤﻠﻴﺔ اﻟﺪﺧﻮل ﻟﺒﺮاﻣﺠﻚ ﺑﻄﺮﻳﻘﺔ ﺷﺮﻋﻴﺔ ﺑﺈﻋﻄﺎء اﻟﺘﺼﺮﻳﺤﺎت واﻟﺘﺼﺮﻳﺢ ﻋﻦ ﻣﺘﻄﻠﺒﺎﺗﻬﺎ ﻟﻜﻲ ﺗﺤﻤﻰ ﺑﻴﺎﻧﺎﺗﻚ‪.‬‬

‫ﻣﺒﺪﺋﻴﺎ ‪ ،‬ﻋﻨﺪ دﺧﻮل اﻟﻤﻬﺎﺟﻢ إﻟﻰ اﻟﻘﺮص اﻟﺼﻠﺐ ‪ H.D‬أو اﻟﺒﻨﻴﺔ اﻟﺘﺤﺘﻴﺔ ﻟﻞ ‪ Network‬ﻳﺴﺘﻄﻴﻊ ﺑﻄﺮق ﻣﻠﺘﻮﻳﺔ اﻟﺘﻌﺪﻳﻞ واﻟﻌﺒﺚ ﺑﺒﻴﺎﻧﺎﺗﻚ‬
‫واﻟﻤﻮﺟﻮدة ﻋﻠﻰ اﻟﺸﺒﻜﺔ‪.‬‬

‫ﺗﺴﺘﻄﻴﻊ اﺳﺘﺨﺪام اﻟﺘﺸﻔﻴﺮ ‪ cryptography‬ﻟﺤﻤﺎﻳﺔ ﺑﻴﺎﻧﺎﺗﻚ اﻟﺨﺎﺻﺔ واﻟﺘﻲ ﻳﺤﻔﻈﻬﺎ ﺑﺮﻧﺎﻣﺠﻚ أو ﻳﻘﻮم ﺑﻨﻘﻠﻬﺎ ﻋﺒﺮ أو إﻟﻰ أي ﺗﺪﻓﻖ ‪.Stream‬‬

‫اﻟــ ‪ .Net Framework‬ﻳﺰودك ﺑﻔﺌﺎت ﻟﺒﻌﺾ اﻷﻧﻮاع اﻟﻤﺨﺘﻠﻔﺔ ﻣﻦ اﻟﺘﺸﻔﻴﺮ ‪ cryptography‬ﻣﺘﻀﻤﻨــﺎ اﻟﺘﺸﻔﻴﺮ اﻟﺘﻨﺎﻇﺮي ‪ symmetric‬و‬
‫ﻏﻴﺮ اﻟﺘﻨﺎﻇﺮي ‪ asymmetric -‬و اﻟـﻤﺰج ‪ hashing‬واﻟـﺘﻮﻗﻴﻌﺎت اﻟﺮﻗﻤﻴﺔ ‪. digital signatures‬‬
‫‪ ‬‬ ‫‪ ‬‬
‫اﻟﺘﺸﻔﻴﺮ اﻟﺘﻨﺎﻇﺮي ‪Symmetric encryption‬‬

‫ﻳﺴﺘﻌﻤﻞ هﺬا اﻟﻨﻮع ﻣﻦ اﻟﺘﺸﻔﻴﺮ ﻣﻔﺘﺎح ﺳﺮي وﺣﻴﺪ ‪ Symmetric key‬أي اﻟﻤﻔﺘﺎح اﻟﻤﺘﻨﺎﺳﻖ و ﻳﻌﺮف ﺑﺄﻧﻪ ﻣﻔﺘﺎح ﺗﺸﻔﻴﺮ ﺳﺮى ﻳﺴﺘﺨﺪم ﻟﻌﻤﻠﻴﺘﻴﻦ‬
‫اﻟﺘﺸﻔﻴﺮ وﻓﻚ اﻟﺘﺸﻔﻴﺮ اﻟــ ‪ encrypt‬واﻟــ ‪ decrypt‬ﻟﻠﺒﻴﺎﻧﺎت ‪.‬‬

‫اﻟﺨﻮارزﻣﻲ اﻟﺬي ﻳﻌﻤﻞ ﺑﻬﺬا اﻟﻤﺒﺪأ ﻳﻌﺮف ﺑﺎﺳﻢ اﻟــ ‪ cipher‬ﻳﻘﻮم ﺑﻤﻌﺎﻟﺠﺔ اﻟﻨﺼﻮص اﻟﺒﺴﻴﻄــﺔ ﺑﻤﻔﺘﺎح اﻟﺘﺸﻔﻴﺮ اﻟﺴﺮي ﻟﻜﻲ ﻳﻘﻮم ﺑﺈﻧﺸﺎء اﻟﺒﻴﺎﻧﺎت‬
‫اﻟﻤﺸﻔﺮة واﻟﺘﻲ ﺗﺴﻤﻰ ‪ cipher text‬و هﻮ ﺁﻣﻦ إﻟﻰ ﺣﺪ آﺒﻴﺮ ﺣﻴﺚ ﻻ ﻳﻤﻜﻦ ﻣﻌﺮف اﻟﻨﺺ اﻟﻜﺎﻣﻞ ‪ Plain Text‬ﺑﺪون ﻣﻌﺮﻓﺔ اﻟﻤﻔﺘﺎح اﻟﺴﺮي‬
‫‪Secret Key‬‬

‫ﺧﻮارزم اﻟــ ‪ Symmetric‬ﻳﻌﻤﻞ ﺑﺴﺮﻋﺔ ﻋﺎﻟﻴﺔ ﺟﺪا وهﻮ ﻣﻼﺋﻢ وﻣﺮن ﺟﺪا ﻋﻨﺪ ﺗﺸﻔﻴﺮ ﺑﻴﺎﻧﺎت آﺒﻴﺮة اﻟﺤﺠﻢ وهﻮ أﻣﻦ وﻣﺤﻜﻢ وﻣﺤﻞ ﺛﻘﺔ ﻋﻦ‬
‫اﻟﺘﻌﺎﻣﻞ ﺑﻪ أﺛﻨﺎء ﻋﻤﻠﻴﺎت اﻟﺘﺸﻔﻴﺮ‪.‬‬

‫ﺑﺸﻜﻞ أﺧﺮ ﻣﻬﺎﺟﻢ اﻟﻨﻈﺎم ﻳﺴﺘﻄﻴﻊ ﻣﻄﺎﺑﻘﺔ اﻟﻨﺺ اﻟﻤﺸﻔﺮ ﺑﺈﻋﻄﺎء ال ‪ Cipher Text‬واﻟﻮﻗﺖ اﻟﻤﻨﺎﺳﺐ ﻟﻔﻜﻬــﺎ ﻟﻜﻲ ﻳﺘﻌﺮف ﻋﻠﻰ اﻟﻨﺺ اﻟﻜﺎﻣﻞ‪،‬‬
‫اﻟﻤﻬﺎﺟﻢ اﻟﺬي ﻳﺮﻳﺪ اﻗﺘﺤﺎم ﻧﻈﺎﻣﻚ ﻳﺤﺘﺎج إﻟﻰ اﺳﺘﺨﺪام ‪ Brute Force Attack‬ﻋﻠﻰ ﺳﺒﻴﻞ اﻟﻤﺜﺎل ﻟﻜﻲ ﻳﻘﻮم ﺑﺘﻮﻟﻴﺪ اﻟﺠﻤﻴﻊ اﻟﻤﻔﺎﺗﻴﺢ اﻟﻤﻤﻜﻨﺔ‬
‫‪ Symmetric Keys‬وذﻟﻚ ﺑﺘﺠﺮﺑﺔ ﺟﻤﻴﻊ اﻟﻤﺤﺎوﻻت ﻻﺳﺘﻨﺘﺎج أو ﻟﺘﻮﻟﻴﺪ اﻟــ ‪. Symmetric Keys‬‬

‫اﻟﺼﻮرة اﻟﺘﺎﻟﻴﺔ ﺗﺒﻴﻦ ﻟﻨــﺎ آﻴﻔﻴﺔ ﻧﻘﻞ اﻟﺒﻴﺎﻧﺎت اﻟﻤﺸﻔﺮة و اﻟﻤﻔﺎﺗﻴﺢ ﺑﺎﺳﺘﺨﺪام أﺳﺎﻟﻴﺐ ﻣﺨﺘﻠﻔﺔ ﻟﻼﺗﺼﺎﻻت واﻟﻨﻘﻞ ﻟﻜﻲ ﺗﻤﻜﻦ اﻟﻤﺴﺘﻠﻢ ﻣﻦ إﻋﺎدة ﻓﻚ‬
‫اﻟﺘﺸﻔﻴﺮ ﻟﻬﺬﻩ اﻟﺮﺳﺎﺋﻞ‪.‬‬

‫‪58‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫‪t ‬‬

‫‪ ‬‬
‫اﻟﺘﺸﻔﻴﺮ و ﻓﻚ اﻟﺘﺸﻔﻴﺮ – ﻧﻈﺮة ﺳﺮﻳﻌﺔ –‬
‫ﺣﻨﻔﻲ!!!‪!!!Boris‬‬ ‫ﻋﺼﺎم‬
‫أﺛﻨﺎء ﻧﻘﻠﻚ ﻟﻠﻤﻔﺎﺗﻴﺢ ﻣﺜﻼ ﻓﻌﻤﻠﻴﺔ اﻟﻨﻘﻞ واﻟﺘﺤﻮﻳﻞ ﺗﺘﻢ ﻣﻦ ﺧﻼل ﺗﺤﻮﻳﻞ اﻟﺮﺳﺎﺋﻞ إﻟﻰ رﺳﺎﺋﻞ ﺻﻮﺗﻴﺔ ﻣﻦ ﺧﻼل ‪ Phone Network‬وﺗﺮﺳﻞ ﻓﻴﺰﻳﺎﺋﻴﺎ‬
‫ﻣﻦ ﺧﻼل اﻟﺒﺮﻳﺪ اﻻﻟﻜﺘﺮوﻧﻲ ﻟﻜﻲ ﺗﺤﻤﻞ إﻟﻰ اﻟﻤﺴﺘﻘﺒﻞ ﻋﻨﺪ ﻣﺸﺎرآﺔ هﺬا اﻻﺗﺼﺎل ﻳﺴﺘﻄﻴﻊ اﻟﻤﺮﺳﻞ واﻟﻤﺴﺘﻘﺒﻞ اﺳﺘﺨﺪام اﻟﻤﻔﺎﺗﻴﺢ ﻟﻠﺘﺸﻔﻴﺮ وﻓﻚ اﻟﺘﺸﻔﻴﺮ‬

‫ﻟﻌﻠﻚ إﻧﺴﺎن أﻧﻴﻖ و ﺗﻬﺘﻢ ﺑﻤﻈﻬﺮ وواﺟﻬﺔ اﻟﻤﺴﺘﻌﻤﻞ اﻟﺨﺎﺻﺔ‬ ‫ﻷي ﻋﺪد ﻣﻦ اﻟﺮﺳﺎﺋﻞ اﻟﻤﺤﻮﻟﺔ داﺧﻞ اﻟﻨﻈﺎم‪.‬‬
‫ﺑﺒﺮﻧﺎﻣﺠﻚ ﻟﺬﻟﻚ ﻗﺪ ﻳﻬﻤﻚ ﻫﺬا اﻟﻤﻮﺿﻮع‬ ‫ﻓﺌــﺎت اﻟﺘﺸﻔﻴﺮ اﻟﺘﻨﺎﻇﺮي داﺧﻞ ﺑﻴﺌﺔ اﻟﺪوت ﻧﺖ‬

‫ﺟﻤﻴﻊ اﻟﻔﺌﺎت اﻟﺨﺎﺻﺔ ﺑﺎﻟـﺘﺸﻔﻴﺮ ﻧﺠﺪهــﺎ داﺧﻞ ﻣﺠﺎل اﻷﺳﻤﺎء‬


‫ﻣﻜﺘﺒﺔ ‪ EntryLib.net‬ﻋﺒﺎرة ﻋﻦ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﺜﻴﻤﺎت ﻟﻠﻔﻮرم‬ ‫‪System.Security.Cryptography:‬‬
‫واﻷدوات ﻣﻮﺟﻪ ﻣﻦ أﺟﻞ ﺗﺤﻘﻴﻖ ﻣﻈﻬﺮ ﺟﻴﺪ ﻷدواﺗﻚ ﻋﻠﻰ اﻟﻔﻮرم ‪ ،‬اﻟﻤﺸﻜﻠﺔ‬ ‫ﻳﺪﻋﻢ إﻃﺎر ﻋﻤﻞ اﻟﺪوت ﻧﺖ اﻟﺨﻮارزﻣﻴﺎت‪،RC2 ،DES :‬‬
‫اﻟﻮﺣﻴﺪة ﻟﻬﺬه اﻷدوات أﻧﻚ ﻣﻀﻄﺮ ﻻﻣﺘﻼك ﻣﺒﻠﻎ ‪ $199‬ﻛﺒﺪاﻳﺔ ﻟﺘﺴﺘﻄﻴﻊ‬ ‫‪TripleDES ،Rijndael‬‬
‫ﺷﺮاء ﺣﻘﻮق ﻫﺬه اﻟﻤﻜﺘﺒﺔ‪.‬‬ ‫ﺳﻨﺴﺘﻌﺮض ﻓﻲ هﺬا اﻟﻤﻘﺎل اﻟﻔﺌﺎت اﻟﺘﻲ ﺗﺴﺘﻌﻤﻞ هﺬﻩ اﻟﺨﻮارزﻣﻴﺎت‬
‫وﻣﻊ أﻧﻪ ﻣﺎ زال ﺑﺈﻣﻜﺎﻧﻚ ﺗﺠﺮﺑﻪ ﻧﺴﺨﺔ ﺗﺠﺮﻳﺒﻴﺔ ﻣﻦ اﻟﺒﺮﻧﺎﻣﺞ ﻣﻦ ﻋﻠﻰ ﻫﺬا‬ ‫ﺑﺼﻮرة ﻣﺒﺴﻄﺔ‪ ،‬آﻤﺎ ﻳﻤﻜﻨﻚ ﺗﺼﻔﺢ ﺟﻤﻴﻊ اﻟﻤﻌﻠﻮﻣﺎت ﻋﻨﻬﺎ ﻓﻲ‬
‫اﻟﺮاﺑﻂ‪http://www.kliksoft.com/?S=2&SS=14 :‬‬ ‫ال‪.MSDN‬‬
‫إﻻ أن ﻫﺬا ﻟﻴﺲ ﻫﻮ اﻟﻬﺪف ﻣﻦ ﻣﻘﺎﻟﺘﻨﺎ ‪ ،‬اﻟﻬﺪف اﻷﺳﺎﺳﻲ ﻫﻮ ﻋﻤﻞ ﺗﻤﻬﻴﺪ‬ ‫اﻟﻔﺌـــﺔ ‪: RijndaelManaged‬‬
‫ﻟﻌﺎﻟﻢ ﺗﺼﻤﻴﻢ وﺗﺠﻤﻴﻞ ﻣﻈﻬﺮ اﻟﺒﺮﻧﺎﻣﺞ ‪ ،‬أﻧﺎ ﺷﺨﺼﻴ ًﺎ ﻟﻦ أﺷﺘﺮي ﻓﻲ ﻳﻮم ﻣﺎ ‪-‬‬ ‫ﻳﺪﻋﻢ اﻟــ ‪ .Net Framework‬ﺧﻮارزﻣﻲ ‪Rijndael‬‬
‫‪ symmetric encryption algorithm‬ﺑﻤﻌﺎﻳﻴﺮ ﺗﺸﻔﻴﺮ رﺳﻤﻴﺔ أو‬
‫ﻋﻠﻰ ﻣﺎ أﻋﺘﻘﺪ ‪ -‬ﻫﺬه اﻷدوات ‪ ،‬وﻳﻜﻔﻴﻨﻲ ﻋﺬر ًا ﻓﻲ ﻫﺬه اﻟﺤﺎﻟﺔ اﻟﻤﻘﺎﺑﻞ اﻟﻤﺎدي‬
‫ﺣﻜﻮﻣﻴﺔ ‪ ، government encryption standard‬وﻳﺼﻨﻒ هﺬا‬
‫ﻟﻬﺬه اﻟﻤﺠﻤﻮﻋﺔ ﻣﻦ اﻷدوات واﻟﺘﻲ ﺗﺼﻞ إﻟﻰ ‪ $1999‬ﺣﺎل رﻏﺒﺖ ﻓﻲ‬ ‫اﻟﺨﻮارزﻣﻲ ﻣﻦ ﺿﻤﻦ ﻣﻌﺎﻳﻴﺮ اﻟﺘﺸﻔﻴﺮ اﻟﻤﺘﻘﺪﻣﺔ‪ ،‬اﻟــ‬
‫اﻟﻨﺴﺨﺔ اﻟﻜﺎﻣﻠﺔ ﻣﻊ اﻟﺴﻮرس ﻛﻮد ‪ ،‬وﻫﺬا اﻷﻣﺮ ﻟﻴﺲ ﺿﻤﻦ ﻣﺨﻄﻄﺎﺗﻲ ﻓﻲ‬ ‫‪ RijndaelManaged‬هﻮ اﻟﺨﻮارزﻣﻲ اﻟﻮﺣﻴﺪ ﻓﻲ إﻃﺎر ﻋﻤﻞ‬
‫اﻟﺤﻴﺎة ﻋﻠﻰ أﻳﺔ ﺣﺎل‪) .‬ﺣﺘﻰ ﻓﻲ ﻣﻨﺎﻣﻲ ﻟﻢ أﺟﺪ اﻟﺮﻗﻢ ‪($$1999‬‬ ‫‪ .Net Framework‬اﻟﺬي ﻳﺪار أدارة آﺎﻣﻠﺔ وﻣﺤﻜﻤﺔ ﻣﻦ ﻗﺒﻞ‬
‫ﻣﻜﺘﺒﺔ ‪ XPerience‬ﻣﺠﺎﻧﻴﺔ ﻓﻴﻬﺎ أﻛﺜﺮ ﻣﻦ ‪ 40‬أداة ﺟﺎﻫﺰة و ﻣﺠﺎﻧﻴﺔ‬ ‫اﻹﻃــﺎر‪ ،‬ﺑﺎﻗﻲ ﺧﻮارزﻣﻴﺎت اﻟﺘﺸﻔﻴﺮ ﺗﻨﺪرج ﺗﺤﺖ اﻟــ ‪unmanaged‬‬
‫ﻻﺳﺘﻌﻤﺎﻟﻬﺎ ﻓﻲ اﻟﻤﺸﺎرﻳﻊ اﻟﻌﻤﻼﻗﺔ وان رﻏﺒﺖ ﻓﻲ اﻟﻜﻮد ﻳﻤﻜﻨﻚ دﻓﻊ وﻫﻲ ﺣﺴﺐ‬ ‫‪ code‬ﺣﻴﺚ ﺗﺴﺘﻌﻤﻞ ﺧﺪﻣﺎت و دوال ال ‪ API‬اﻟﺨﺎﺻﺔ ﺑﺎﻟﺘﺸﻔﻴﺮ‬
‫ﻣﺎ رأﻳﺖ أﻓﻀﻞ و أﺟﻤﻞ ﺑﻜﺜﻴﺮ ﻣﻦ ﻣﻜﺘﺒﺔ ‪ EntryLib.Net‬ﻛﻤﺎ أﻧﻬﺎ‬ ‫اﻟﺘﻲ ﻳﻮﻓﺮهﺎ ﻧﻈﺎم اﻟﺘﺸﻐﻴﻞ وﻳﻨﺪوز‬
‫ﺧﻮارزﻣﻲ اﻟـ ‪ RijndaelManaged‬ﺧﻴﺎر راﻗﻲ وﻣﺘﻘﺪم ﻋﻨﺪ‬
‫ﺗﺤﺘﻮي ﻋﻠﻰ أدوات ﺟﺪ ﻣﺘﻘﺪﻣﺔ ﻻ ﺗﻮﺟﺪ ﻓﻲ اﻷﺧﻴﺮة‪ ،‬ﻟﻄﻠﺐ ﻧﺴﺨﺔ ﻣﺠﺎﻧﻴﺔ و‬
‫ﺗﺸﻐﻴﻞ ﺑﺮاﻣﺠﻚ ﺗﺤﺖ ﺑﻴﺌﺔ ﻣﻮﺛﻮق ﻣﻨﻬﺎ ‪trusted environment‬‬
‫ﺗﺤﻤﻴﻠﻬﺎ‬ ‫ﻣﺜﻞ ﺑﻴﺌﺔ ‪. windows‬‬
‫‪http://www.devexpress.com/Products/NET/WebRegistr‬‬
‫‪ation/‬‬ ‫اﻟﻔﺌـــﺔ ‪:RC2‬‬
‫اﻟﻬﺪف ﻣﻦ ﻫﺬه اﻟﻤﻘﺎﻟﺔ ﺛﻼث ﻧﻘﺎط‬ ‫هﻲ ﻋﺒﺎرة ﻋﻦ ﻣﻌﺎﻳﻴﺮ ﺗﺸﻔﻴﺮ ﻗﻴﺎﺳﻴﺔ ﻣﺼﻤﻤﺔ ﻻﺳﺘﺒﺪال اﻟــ‬
‫‪ DES‬اﻟﺬي ﻳﻌﻤﻞ ﻣﻦ ﺧﻼل اﺳﺘﺨﺪام أﺣﺠﺎم أو ﻣﺴﺎﺣﺎت أﺻﻐﺮ‬
‫اﻟﻨﻘﻄﺔ اﻷوﻟﻰ‪ ،‬ﻫﻲ أﻧﻨﺎ ﺑﺤﺎﺟﺔ ﻟﻠﺒﺪء ﺑﺘﻌﻠﻢ وﺳﺎﺋﻞ ﺗﺤﺴﻴﻦ اﻟﻤﻈﻬﺮ‪ ،‬ﺣﺎﻟﻴ ًﺎ‬ ‫ﻟﻠﻤﻔﺎﺗﻴﺢ ‪.‬‬
‫ﻳﻌﺘﺒﺮ ﻋﺎﻟﻢ ﺗﻘﻨﻴﺔ ‪ WPF‬ﻫﻮ اﻟﻤﻘﺼﻮد ﻟﻨﺎ ﻛﻤﺒﺮﻣﺠﻲ ‪ ،.net‬ﻫﻨﺎك درس‬ ‫اﻟﻔﺌـــﺔ ‪: DES‬‬
‫ﻟﻸخ ﻋﺼﺎم !!! ‪ !!! Boris‬ﻋﻦ ﻫﺬه اﻟﺘﻘﻨﻴﺔ وأﻃﻤﻊ أﻧﻨﻲ اﺳﺘﻄﻴﻊ أو‬
‫هﻰ اﺧﺘﺼــﺎر ﻟﻠﺠﻤﻠﺔ ‪Data Encryption Standard‬‬
‫ﻳﺴﺘﻄﻴﻊ أﺣﺪ اﻷﺧﻮة ﺗﻘﺪﻳﻢ درس ﻋﻤﻠﻲ ﺣﻮل ﻫﺬه اﻟﺘﻘﻨﻴﺔ ﻓﻲ اﻟﻤﺴﺘﻘﺒﻞ اﻟﻘﺮﻳﺐ‬ ‫هﻮ ﻋﺒﺎرة ﻋﻦ ﺧﻮارزم ﺗﺸﻔﻴﺮ ﻣﺘﻨﺎﺳﻖ واﻟﺬي ﻋﻤﻞ ﺑﺎﺳﺘﺨﺪام‬
‫ﻓﻤﺎ زﻟﻨﺎ ﻓﻲ ﺣﺎﺟﺔ ﻟﺒﻌﺾ اﻟﻤﻌﺮﻓﺔ ﺑﻬﺎ ‪ ،‬وﻟﻜﻦ ﺣﺘﻰ ذﻟﻚ اﻟﻮﻗﺖ ﻫﺬا راﺑﻂ ﻟﺘﻠﻚ‬ ‫اﻟﻤﺴﺎﺣﺔ اﻟﻨﺴﺒﻴﺔ ﻷﻗﺼﺮ ﻣﻔﺘــﺎح ‪ ،‬وهﻮ ﻣﻌﺮض ﻟﻠﻬﺠــﻮم )ﻋﻠﻴﻨــﺎ‬
‫اﻟﺘﻘﻨﻴﺔ ﻣﻦ ﻣﻮﻗﻊ ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ‪http://wpf.netfx3.com/‬‬ ‫ذآﺮهﺎ ﻣﻦ ﺑﺎب اﻟﺸﻤﻮﻟﻴــﺔ(‪.‬‬
‫وﻫﺬا ﺗﻌﺮﻳﻒ ﻟﻬﺎ ﻣﻦ اﻟﻤﻮﺳﻮﻋﺔ اﻟﺤﺮة وﻳﻜﺒﻴﺪﻳﺎ‪:‬‬ ‫اﻟﻔﺌـــﺔ ‪: TripleDES‬‬
‫‪http://en.wikipedia.org/wiki/Windows_Presentation_Fo‬‬ ‫إﻃﺎر ﻋﻤﻞ ‪.Net Framework‬ﻳﺰودك وﻳﻤﺪك ﺑﺎﻟﻔﺌﺔ‬
‫‪undation‬‬ ‫‪ TripleDES‬و اﻟﺨﻮارزﻣﻲ اﻟﺬي ﺗﺴﺘﻌﻤﻠﻪ ﻳﺴﻤﻰ ‪DES 3‬‬
‫اﻟﻨﻘﻄﺔ اﻟﺜﺎﻧﻴﺔ ‪ ،‬ﻻ ﺗﻨﺪﻫﺶ ﻟﻮ ﻋﻠﻤﺖ أن اﻹﻗﺒﺎل ﻋﻠﻰ ﻫﺬه اﻷدوات ﻛﺒﻴﺮ ﺟﺪ ًا‬ ‫‪ encryption algorithm symmetric‬وهﻰ ﺗﻘﻮم ﺑﺘﻄﺒﻴﻖ‬
‫؟؟؟ وأن اﻟﺸﺮﻛﺔ اﻟﻤﻨﺘﺠﺔ ﺣﻘﻘﺖ أرﺑﺎﺣ ًﺎ ﺟﻴﺪة ﻣﻦ وراء ﻫﺬه اﻷدوات وﻏﻴﺮﻫﺎ‬ ‫ﺧﻮارزﻣﻴﺔ اﻟـ ‪ DES‬ﺛﻼث ﻣﺮات‪.‬‬
‫ﻣﻦ اﻷدوات اﻟﻤﻤﺎﺛﻠﺔ ‪ ،‬ﻓﻲ ﺣﻴﻦ أن اﻟﺠﻬﺪ اﻟﻤﺴﺘﻐﺮق ﻓﻲ إﻧﺸﺎﺋﻬﺎ ﻟﻴﺲ ﺑﺴﻴﻄ ًﺎ‬
‫اﻟﻔﺌﺔ وﻟﻜﻨﻪ ﻟﻴﺲ ﺿﺨﻤ ًﺎ ‪ ،‬رﺑﻤﺎ ﻧﺴﺘﻄﻴﻊ ﻓﻲ ﻳﻮم ﻣﻦ اﻷﻳﺎم ﻣﺸﺎﻫﺪة ﻣﻨﺘﺞ ﻣﻦ ﺷﺮﻛﺔ‬ ‫ﻣﻦ‬ ‫ﻣﺸﺘﻘﺔ‬ ‫اﻟﺴﺎﺑﻘﺔ‬ ‫اﻟﺨﻮارزﻣﻴﺎت‬ ‫آﻞ‬
‫‪System.Security.Cryptographgy.Symm‬‬
‫ﻋﺮﺑﻴﺔ ﺑﻬﺬه اﻟﻜﻴﻔﻴﺔ واﻟﺠﻮدة‪.‬‬
‫‪etricAlgorithm‬‬
‫اﻟﻨﻘﻄﺔ اﻟﺜﺎﻟﺜﺔ ‪ ،‬ﻳﺘﺠﻪ اﻟﻌﺎﻟﻢ ﻛﻠﻪ ﻫﺬه اﻷﻳﺎم ﻧﺎﺣﻴﺔ ﻓﺼﻞ اﻟﺘﺼﻤﻴﻢ ﻋﻦ اﻟﻜﻮد‪،‬‬
‫ﺑﻤﻌﻨﻰ أن اﻟﺘﺼﻤﻴﻢ أو اﻻﺳﺘﺎﻳﻞ ﺗﺤﺪﻳﺪ ًا ﻳﻤﻜﻦ اﺳﺘﺨﺪاﻣﻪ أﻛﺜﺮ ﻣﻦ ﻣﺮة اﺑﺘﺪاء ﻣﻦ‬
‫‪ CSS‬اﻟﻤﻮاﻗﻊ واﻧﺘﻬﺎء ﺑﻤﺎ ﺗﻨﺘﺠﻪ ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ ﻓﻲ ﻣﻌﺎﻣﻠﻬﺎ ﻫﺬه اﻵوﻧﺔ ﻣﻦ‬ ‫ﻳﺘﺒﻊ‪...‬‬
‫‪ ،XAML‬ﻟﺬا ﻋﻠﻴﻨﺎ اﻟﺒﺪء ﻣﺒﻜﺮ ًا ﻓﻲ إﺗﺒﺎع ﻫﺬا اﻷﺳﻠﻮب رﻏﻢ أن اﻟﻤﻮﺿﻮع‬
‫ﻟﻴﺲ ﺟﺪﻳﺪ ًا ‪ ،‬وﻟﻜﻦ أرﺟﻮ أن ﻻ ﻧﻜﻮن آﺧﺮ اﻟﻮاﺻﻠﻴﻦ‪.‬‬

‫‪59‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫ﺗﻄﺎﻟﻌﻮن ﻓﻲ ﻫﺬا اﻟﻌﺪد‪...‬‬

‫ﺷﺮح ﻣﻌﻈﻢ اﻟﺪوال اﻟﺒﺮﻣﺠﻴﺔ اﻟﻤﻮﺟﻮدة ﻓﻲ اﻟﻔﻴﺠﻮال‬


‫ﻣﺼﻄﻔﻰ إﺳﻤﺎﻋﻴﻞ‬ ‫ﺑﻴﺴﻚ‬
‫ﺗﺘﻤﺔ ﺻﻔﺤﺔ ‪61‬‬
‫‪H‬‬ ‫‪H‬‬

‫ﺗﻤﺮﻳﺮ ﺑﺎرﻣﻴﺘﺮات إﻟﻰ داﺧﻞ اﻟﺒﺮﻧﺎﻣﺞ ﻣﻦ اﻟﻮﻳﻨﺪوز‬


‫ﻓﻲ ﻫﺬه اﻟﺤﻠﻘﺔ ﻣﻦ ﺣﻠﻘﺎت اﻟﺴﻠﺴﺔ اﻟﺬﻫﺒﻴﺔ ﻓﻲ اﻟﻤﻮاﺿﻴﻊ اﻟﻌﻠﻤﻴﺔ ﺳﻨﺘﻌﺮف‬
‫ﺑﺈذن اﷲ ﺗﻌﺎﻟﻰ ﻋﻠﻰ ﻃﺮﻳﻘﺔ ﺗﻤﺮﻳﺮ اﻟﺒﺎرﻣﺘﺮات إﻟﻰ داﺧﻞ ﺑﺮﻧﺎﻣﺞ ﻣﻦ ﺑﺮاﻣﺞ اﻟﻮﻳﻨﺪوز!‬
‫رﻏﻴﺪ ﻃﻴﺐ‬ ‫و ﻟﻜﻲ ﻧﻔﻬﻢ ﺳﻮﻳﺎً ﻣﺎ اﻟﻤﻘﺼﻮد ﻣﻦ ذﻟﻚ دﻋﻨﻲ أذﻛﺮك ﺑﻜﻴﻔﻴﺔ ﺗﻤﺮﻳﺮ‬
‫اﻟﺒﺎرﻣﺘﺮات إﻟﻰ أي إﺟﺮاء ﺗﻘﻮم ﺑﺘﺼﻤﻴﻤﻪ ﻓﻤﺜﻼً إذا اﻓﺘﺮﺿﻨﺎ اﻧﻚ ﺗﺮﻳﺪ أن ﺗﻘﻮم ﺑﺈﻧﺸﺎء إﺟﺮاء‬
‫ﺑﺴﻴﻂ وﻇﻴﻔﺘﻪ ﻋﺮض رﺳﺎﻟﺔ ﻣﻌﻴﻨﺔ ﻳﺘﻢ ﺗﻤﺮﻳﺮﻫﺎ إﻟﻰ اﻹﺟﺮاء ‪...‬‬
‫ﺗﺘﻤﺔ ﺻﻔﺤﺔ ‪67‬‬
‫‪H‬‬ ‫‪H‬‬

‫إﻧﻲ ذﻛﺮﺗﻚ واﻟﺬﻛﺮى ﻣﺆرﻗﺔ ‪4/1‬‬


‫‪ ‬ﺗﺮﻛﻲ اﻟﻌﺴﻴﺮي‬ ‫ﺳﻠﺴﻠﺔ ﻣﻦ اﻟﻤﻘﺎﻻت‪ ،‬أﺣﺎول ﻓﻴﻬﺎ ﺗﺤﻔﻴﺰ ﻣﺒﺮﻣﺠﻲ ‪ Visual Basic x.0‬اﻟﻌﺮب إﻟﻰ‬
‫ﻣﻮاﻛﺒﺔ اﻟﺘﻴﺎر واﻟﻬﺠﺮة ﺑﻼ ﻋﻮدة إﻟﻰ اﺣﺪ ﻟﻐﺎت إﻃﺎر ﻋﻤﻞ ‪NET Framework.‬‬
‫ﺗﺘﻤﺔ ﺻﻔﺤﺔ ‪71‬‬
‫‪ ‬‬

‫ﻫﻞ أﻧﺖ ﻣﺒﺮﻣﺞ ﻓﻴﺠﻮال ﺑﻴﺴﻚ ‪6‬؟‪ ..........‬اﺿﻐﻂ ﻫﻨﺎ‬

‫اﺧﺘﺮﻧﺎ ﻟﻚ ﻣﻦ ﻣﻜﺘﺒﺔ اﻟﻜﺘﺐ‬


‫ﻛﺘﺎب اﻷﺳﺘﺎذ ﺗﺮﻛﻲ اﻟﻌﺴﻴﺮي‪...‬‬

‫اﺧﺘﺮﻧﺎ ﻟﻚ ﻣﻦ ﻣﻜﺘﺒﺔ اﻟﺸﻔﺮات‬


‫ﺗﻐﻴﻴﺮ أﺳﻤﺎء ﻣﺤﺮﻛﺎت اﻷﻗﺮاص‬
‫ﻛﻴﻔﻴﺔ ﻣﻌﺮﻓﺔ ﺣﺎﻟﺔ اﻻﺗﺼﺎل ﺑﺸﺒﻜﺔ اﻻﻧﺘﺮﻧﺖ‬

‫أﻓﻀﻞ ﻣﻮاﺿﻴﻊ اﻟﺸﻬﺮ ﻓﻲ ﻗﺴﻢ اﻟﻔﻴﺠﻮال ﺑﻴﺴﻚ ‪6.0‬‬


‫إﻋﺪاد ﻧﺒﻬﺎن ﻧﻮر )اﻟﻤـﺰﻣـﺠــﺮ(‬
‫ﺷﺮح ﻣﻌﻈﻢ اﻟﺪوال اﻟﺒﺮﻣﺠﻴﺔ اﻟﻤﻮﺟﻮدة ﻓﻲ اﻟﻔﻴﺠﻮال ﺑﻴﺴﻚ‬
‫ﻣﺼﻄﻔﻰ إﺳﻤﺎﻋﻴﻞ ‪ ‬‬
‫ﻣﺎ ﻫﻲ اﻟﺪوال ‪:‬‬
‫اﻟﺪاﻟﺔ ‪ :Log‬ﺗﺴﺘﺨﺪم هﺬﻩ اﻟﺪاﻟﺔ ﻓﻲ ﺗﺤﺪﻳﺪ ﻗﻴﻤﺔ اﻟﻠﻮﻏﺎرﻳﺘﻢ اﻟﻌﺸﺮي‬ ‫اﻟﺪوال هﻲ أﺳﻤﺎء ﻣﺤﺠﻮزة وﻣﻌﺮﻓﺔ ﻣﻦ ﻗﺒﻞ اﻟﻔﻴﺠﻮال ﺑﻴﺴﻚ‬
‫ﻟﺮﻗﻢ وﺗﺄﺧﺬ اﻟﺼﻮرة اﻟﻌﺎﻣﺔ اﻟﺘﺎﻟﻴﺔ ‪:‬‬ ‫ﻟﺘﻘﻮم ﺑﻌﻤﻞ ﻣﻌﻴﻦ ﻣﺜﻞ اﻟﻤﺼﻔﻮﻓﺎت واﻟﻘﻴﻢ اﻟﻤﻄﻠﻘﺔ وﻏﻴﺮهﺎ‪ ..‬أو ﺑﻤﻌﻨﻲ‬
‫ﻛﻮد‪:‬‬ ‫اﺑﺴﻂ واﻋﻢ هﻲ ﻋﺒﺎرة ﻋﻦ ﺑﺮﻧﺎﻣﺞ ﺻﻐﻴﺮ ﻣﻜﺘﻮب ﻣﺴﺒﻘﺎ و ﻣﺤﻔﻮظ‬
‫)‪myNumber = Log (20‬‬ ‫داﺧﻞ ﻟﻐﺔ اﻟﻔﻴﺠﻮال ﺑﻴﺴﻚ ﻳﻤﻜﻦ اﺳﺘﺪﻋﺎءﻩ ﻣﻦ ﺧﻼل ﺑﺮﻧﺎﻣﺠﻚ‬
‫‪txtLogResult.Text = myNumber‬‬ ‫واﻻﺳﺘﻔﺎدة ﻣﻨﻪ ‪ ،‬إﺿﺎﻓﺔ إﻟﻰ ذﻟﻚ ﻳﻤﻜﻨﻚ أﻧﺖ أن ﺗﻜﺘﺐ داﻟﺔ وﺗﺴﺘﺪﻋﻴﻬﺎ‬
‫ﻓﺈن ﻧﺘﻴﺠﺔ ﺗﻨﻔﻴﺬ اﻟﺪاﻟﺔ هﻲ ‪myNumber = 2.9957327‬‬ ‫أآﺜﺮ ﻣﻦ ﻣﺮة داﺧﻞ ﺑﺮﻧﺎﻣﺠﻚ ‪.‬‬
‫واﻟﺪوال ﻓﻲ اﻟﻔﻴﺠﻮال ﺑﻴﺴﻚ ﺗﻨﻘﺴﻢ إﻟﻰ‪:‬‬
‫اﻟﺪاﻟﺔ ‪ : Exp‬ﺗﺴﺘﺨﺪم هﺬﻩ اﻟﺪاﻟﺔ ﻓﻲ ﺗﺤﺪﻳﺪ اﻟﻘﻴﻤﺔ )‪ (e‬وهﻲ ﻗﺎﻋﺪة‬ ‫‪ .1‬اﻟﺪوال اﻟﺮﻳﺎﺿﻴﺔ ‪. Mathematics Functions‬‬
‫‪ .2‬دوال ﺳﻼﺳﻞ اﻟﺒﻴﺎﻧﺎت‪. String Functions‬‬
‫اﻟﻠﻮﻏﺎرﻳﺘﻢ اﻟﻄﺒﻴﻌﻲ ﻣﺮﻓﻮﻋﺔ ﺑﻘﻮة اﻟﺮﻗﻢ اﻟﺬي ﺗﺘﻀﻤﻨﻪ ﺣﻴﺚ )‪(e‬‬
‫‪ .3‬دوال اﻟﻮﻗﺖ و اﻟﺘﺎرﻳﺦ ‪. Date and Time Functions‬‬
‫ﺗﺴﺎوي ﺗﻘﺮﻳﺒﺎ ‪ 2.7182818‬وﺗﺄﺧﺬ اﻟﺼﻮرة اﻟﻌﺎﻣﺔ اﻟﺘﺎﻟﻴﺔ‪:‬‬
‫‪ .4‬دوال اﻟﺘﺤﻘﻖ ﻣﻦ أﻧﻮاع اﻟﺒﻴﺎﻧﺎت ‪Data Type Inspection‬‬
‫ﻛﻮد‪:‬‬
‫‪.Functions‬‬
‫)رﻗﻢ(‪myNumber = Exp‬‬ ‫‪ .5‬دوال اﻟﻤﺪﺧﻼت و اﻟﻤﺨﺮﺟﺎت ‪Program Output and‬‬
‫‪.User Input Functions‬‬
‫اﻟﺪاﻟﺔ ‪ : Rnd‬وﺗﺴﺘﺨﺪم هﺬا اﻟﺪاﻟﺔ ﻓﻲ ﺗﻮﻟﻴﺪ أرﻗﺎم ﻋﺸﻮاﺋﻴﺔ ﺗﻘﻊ ﻣﺎ‬ ‫‪ .6‬دوال ﻣﺎﻟﻴﺔ ‪. Financial Functions‬‬
‫ﺑﻴﻦ اﻟﺼﻔﺮ و واﺣﺪ ﺑﺤﺪ أﻗﺼﻲ ‪ 15‬رﻗﻤﺎ ﻋﺸﺮﻳﺎ وﺗﺄﺧﺬ اﻟﺼﻮرة اﻟﻌﺎﻣﺔ‬ ‫‪ .7‬دوال اﻟﺘﺤﻮﻳﻼت ‪. Conversion Function‬‬
‫اﻟﺘﺎﻟﻴﺔ‪:‬‬ ‫‪ .8‬دوال اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻔﻬﺎرس‪.‬‬
‫ﻛﻮد‪:‬‬ ‫‪ .9‬دوال اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻤﻠﻔﺎت‪.‬‬
‫‪ .10‬دوال اﻟﻤﺼﻔﻮﻓﺎت‪.‬‬
‫)ﻋﺪد(‪myNumber = Rnd‬‬ ‫‪ .11‬دوال ﻣﺘﻨﻮﻋﺔ أﺧﺮى‪.‬‬
‫‪ .12‬دوال ﻣﻌﺮﻓﺔ ﻣﻦ ﻗﺒﻞ اﻟﻤﺒﺮﻣﺞ ‪User Defined Functions‬‬
‫ﻓﻤﺜﻼ اﻟﺪاﻟﺔ )‪ Rnd(10‬ﻗﺪ ﺗﻌﻄﻲ رﻗﻤﺎ ﻣﺜﻞ ‪ 0.7055475‬وﻋﻨﺪ‬ ‫) ‪.( UDF‬‬
‫ﺗﺸﻐﻴﻞ اﻟﺪاﻟﺔ ﻣﺮة أﺧﺮي ﻳﻨﺘﺞ رﻗﻤﺎ ﺁﺧﺮ ﻣﺜﻞ ‪ 0.533424‬وهﻜﺬا‪.‬‬ ‫وﻧﻼﺣﻆ أن ﻧﻮع اﻟﺪوال ﻣﻦ رﻗﻢ )‪ (1‬ﺣﺘﻰ رﻗﻢ )‪ (7‬أﻧﻬﺎ دوال‬
‫داﺧﻠﻴﺔ ﺿﻤﻦ اﻟﻠﻐﺔ‪ ،‬أي ﺗﺄﺗﻲ ﻣُﻌﺮﻓﺔ ﻓﻲ ﻟﻐﺔ اﻟﻔﻴﺠﻮال ﺑﻴﺴﻚ و ﻣﺒﺮﻣﺠﺔ‬
‫اﻟﺘﺼﺮﻳﺢ ‪ : Randomize‬ﻳﻌﻤﻞ هﺬا اﻟﺘﺼﺮﻳﺢ ﻣﻊ اﻟﺪاﻟﺔ ‪Rnd‬‬ ‫ﻣﺴﺒﻘًﺎ ﻟﻜﻲ ﺗﺴﺘﺨﺪﻣﻬﺎ ﻣﺒﺎﺷﺮة‪ ً.‬أﻣﺎ اﻟﻨﻮع اﻷﺧﻴﺮ ﻓﻴﺘﻢ ﺗﻌﺮﻳﻔﻪ ﺑﻮاﺳﻄﺔ‬
‫وﻧﺴﺘﻔﻴﺪ ﻣﻨﻪ ﻋﺪم اﻟﺘﻜﺮارﻳﺔ و اﻟﺤﺼﻮل ﻋﻠﻲ ﻋﺸﻮاﺋﻴﺔ أﻓﻀﻞ وذﻟﻚ‬ ‫اﻟﻤﺒﺮﻣﺞ‪ ،‬أي ﺑﻮاﺳﻄﺘﻚ أﻧﺖ‪.‬‬
‫ﻷﻧﻪ ﻳﻌﺘﻤﺪ ﻋﻠﻲ ﺳﺎﻋﺔ اﻟﻨﻈﺎم ﻟﺪﻳﻚ ‪ .‬وﻳﺄﺧﺬ اﻟﺼﻮرة اﻟﺘﺎﻟﻴﺔ‪.‬‬ ‫‪ .1‬اﻟﺪوال اﻟﺮﻳﺎﺿﻴﺔ ‪.Mathematics Functions‬‬
‫ﻛﻮد‪:‬‬ ‫اﻟﺪاﻟﺔ ‪ : Abs‬ﺗﺮﺟﻊ اﻟﻘﻴﻤﺔ اﻟﻤﻄﻠﻘﺔ ﻵي ﻋﺪد وﺗﺮﺟﻌﻪ ﻣﻦ ﻧﻔﺲ ﻧﻮع‬
‫‪Randomize‬‬ ‫اﻟﺒﻴﺎﻧﺎت اﻟﻤﻌﻄﻰ ﻟﻠﺪاﻟﺔ واﻟﻤﻘﺼﻮد ﺑﺎﻟﻘﻴﻤﺔ اﻟﻤﻄﻠﻘﺔ هﻲ ﻗﻴﻤﺔ اﻟﻌﺪد ﺑﺪون‬
‫)‪MsgBox Int((10 * Rnd) + 1‬‬
‫إﺷﺎرة ﻓﺎﻟﻘﻴﻤﺔ اﻟﻤﻄﻠﻘﺔ ل )‪ (13-‬ﻣﺜﻼ هﻲ )‪ (13‬وهﻜﺬا‪ ,‬ﻓﻤﺜﻼ ﻟﻮ آﺘﺒﻨﺎ‬
‫وهﻨﺎ ﻧﻌﻤﻞ ﻋﻠﻲ ﺗﻮﻟﻴﺪ أرﻗﺎم ﻋﺸﻮاﺋﻴﺔ ﻣﻦ واﺣﺪ إﻟﻰ ﻋﺸﺮة ‪.‬‬ ‫اﻟﻜﻮد اﻟﺘﺎﻟﻲ‬
‫أﻣﺎ إذا أردت أن ﺗﺠﻌﻞ هﺬﻩ اﻟﻌﺸﻮاﺋﻴﺔ ﻧﺼﻮص وﻟﻴﺲ أرﻗﺎﻣﺎ ﻓﻠﻚ‬ ‫ﻛﻮد‪:‬‬
‫ﻃﺮﻳﻘﺘﻴﻦ ﻟﺘﺤﺎﻳﻞ ﻋﻠﻲ هﺬا أﻣﺎ أن ﺗﻀﻊ اﻟﻨﺼﻮص ﻓﻲ ﻗﺎﻋﺪة ﺑﻴﺎﻧﺎت‬ ‫)‪myNumber = Abs(-45.6‬‬
‫وﻓﻲ ﺷﻜﻞ ﺳﺠﻼت وﺗﻌﻄﻲ ﻟﻜﻞ ﺳﺠﻞ رﻗﻢ أو ﺗﻀﻌﻪ ﻓﻲ ﻣﺼﻔﻮﻓﺔ‬ ‫‪txtAbsResult.Text = myNumber‬‬
‫وﺗﻌﻄﻲ ﻟﻜﻞ ﻧﺺ رﻗﻢ أﻳﻀﺎ وأﻧﺎ أﻓﻀﻞ اﻟﻄﺮﻳﻘﺔ اﻷوﻟﻰ ﻟﺴﺮﻋﺘﻬﺎ‪.‬‬
‫اﻟﺪاﻟﺔ ‪ : Int‬وﺗﺴﺘﺨﺪم هﺬﻩ اﻟﺪاﻟﺔ ﻟﺤﺴﺎب اﻟﺠﺰء اﻟﺼﺤﻴﺢ ﻓﻘﻂ‬ ‫ﻓﺈن ﻧﺘﻴﺠﺔ ﺗﻨﻔﻴﺬ اﻟﺪاﻟﺔ هﻲ ‪myNumber = 45.6‬‬
‫ﻣﻦ رﻗﻢ ﻳﺸﺘﻤﻞ ﻋﻠﻲ أرﻗﺎم ﺻﺤﻴﺤﺔ وﻋﺸﺮﻳﺔ أو ﺑﻌﺒﺎرة أﺧﺮ ﻟﺤﺬف‬ ‫وﻻﺣﻆ أن اﻟﻘﻴﻤﺔ اﻟﻤﺪﺧﻠﺔ ﻟﻠﺪاﻟﺔ ﻻﺑﺪ أن ﺗﻜﻮن ﻋﺪد أو ﺗﻌﺒﻴﺮ ﻋﺪدي ﻓﺈذا‬
‫اﻷرﻗﺎم اﻟﻌﺸﺮﻳﺔ اﻟﻤﻮﺟﻮدة ﺑﻌﺪ اﻟﻌﻼﻣﺔ اﻟﻌﺸﺮﻳﺔ ﺑﺪون ﺗﻘﺮﻳﺐ وﺗﺄﺧﺬ‬ ‫آﺎﻧﺖ اﻟﻘﻴﻤﺔ اﻟﻤﺪﺧﻠﺔ ﻟﻠﺪاﻟﺔ ‪ Null‬ﺳﺘﻜﻮن اﻟﻨﺘﻴﺠﺔ ‪ Null‬وإذا آﺎﻧﺖ‬
‫اﻟﺼﻮرة اﻟﺘﺎﻟﻴﺔ‪:‬‬ ‫اﻟﻘﻴﻤﺔ اﻟﻤﺪﺧﻠﺔ ﻟﻠﺪاﻟﺔ ﻣﺘﻐﻴﺮ ﻓﺎرغ أو ﻟﻢ ﻳﺘﻢ ﺗﻌﻴﻴﻦ ﻗﻴﻤﺔ ﻟﻪ ﺳﺘﻜﻮن اﻟﻨﺘﻴﺠﺔ‬
‫ﻛﻮد‪:‬‬ ‫‪.0‬‬
‫)‪myNumber = Int(332.54‬‬ ‫اﻟﺪاﻟﺔ ‪ : Sqr‬ﺗﺴﺘﺨﺪم هﺬﻩ اﻟﺪاﻟﺔ ﻓﻲ ﺗﺤﺪﻳﺪ اﻟﺠﺬر اﻟﺘﺮﺑﻴﻌﻲ ﻟﺮﻗﻢ ﻣﻌﻴﻦ‬
‫ﻓﺈن ﻧﺘﻴﺠﺔ ﺗﻨﻔﻴﺬ اﻟﺪاﻟﺔ هﻲ ‪myNumber = 332‬‬
‫وﺗﺄﺧﺬ اﻟﺼﻮرة اﻟﻌﺎﻣﺔ اﻟﺘﺎﻟﻴﺔ‪.‬‬
‫ﻛﻮد‪:‬‬
‫اﻟﺪاﻟﺔ ‪ : Atn‬ﺗﺴﺘﺨﺪم هﺬﻩ اﻟﺪاﻟﺔ ﻓﻲ ﺣﺴﺎب ﻣﻘﻠﻮب ﻇﻞ اﻟﺰاوﻳﺔ‬ ‫)‪myNumber = Sqr(10‬‬
‫"ﻇﺘﺎ" ﻟﻠﺮﻗﻢ اﻟﺬي ﺗﺸﺘﻤﻞ ﻋﻠﻴﺔ ﻣﻘﺪار ﺑﺎﻟﺘﻘﺪﻳﺮ اﻟﺪاﺋﺮي )‪(Radian‬‬ ‫‪txtSqrResult.Text = myNumber‬‬
‫وﺗﺄﺧﺬ اﻟﺼﻮرة اﻟﻌﺎﻣﺔ اﻟﺘﺎﻟﻴﺔ‪:‬‬
‫ﻛﻮد‪:‬‬ ‫ﻓﺈن ﻧﺘﻴﺠﺔ ﺗﻨﻔﻴﺬ اﻟﺪاﻟﺔ هﻲ‬
‫‪myNumber = 3.1622776‬‬
‫)رﻗﻢ(‪myNumber = Atn‬‬
‫‪ ‬‬

‫‪ ‬‬
‫‪61‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫ﺷﺮح ﻣﻌﻈﻢ اﻟﺪوال اﻟﺒﺮﻣﺠﻴﺔ اﻟﻤﻮﺟﻮدة ﻓﻲ اﻟﻔﻴﺠﻮال ﺑﻴﺴﻚ‬
‫ﻣﺼﻄﻔﻰ إﺳﻤﺎﻋﻴﻞ ‪ ‬‬ ‫اﻟﺪاﻟﺔ ‪ : Tan‬ﺗﺴﺘﺨﺪم هﺬﻩ اﻟﺪاﻟﺔ ﻓﻲ ﺗﺤﺪﻳﺪ ﻗﻴﻤﺔ ﻇﻞ زاوﻳﺔ ﻣﻌﻴﻨﺔ‬
‫أي أن اﻟﻤﺘﻐﻴﺮ ‪ myNumber‬ﻳﺤﻤﻞ ﻣﺼﻔﻮﻓﺔ ﻣﻤﺘﻠﺌﺔ ﺑﺎﻟﻨﺼﻮص‬ ‫وﺗﺄﺧﺬ اﻟﺼﻮرة اﻟﻌﺎﻣﺔ اﻟﺘﺎﻟﻴﺔ ‪:‬‬
‫اﻟﻤﺪﺧﻠﺔ ﺑﻌﺪ أن ﺗﺤﻮﻟﺖ إﻟﻰ ﻋﻨﺎﺻﺮ ﻟﻠﻤﺼﻔﻮﻓﺔ‪.‬‬ ‫ﻛﻮد‪:‬‬
‫ﻻﺣﻆ أن اﻟﻤﺘﻐﻴﺮ ‪ myNumber‬آﺎن ﻣﻦ ﻧﻮع ‪ Variant‬ﻷﻧﻨﺎ ﻟﻢ ﻧﻌﻠﻦ‬
‫)رﻗﻢ(‪myNumber = Tan‬‬
‫ﻋﻨﻪ وﻳﻤﻜﻦ ﻟﻠﻤﺘﻐﻴﺮ ﻣﻦ هﺬا اﻟﻨﻮع أن ﻳﺤﻤﻞ ﻣﺼﻔﻮﻓﺔ وآﺬﻟﻚ ﻳﻤﻜﻦ أن‬
‫ﺗﻜﻮن اﻟﻤﺼﻔﻮﻓﺔ ﻣﻦ أي ﻧﻮع ﺁﺧﺮ ﻓﺎﻟﻤﺼﻔﻮﻓﺔ اﻟﻤﺴﺘﻌﻤﻠﺔ ﻓﻲ اﻟﻤﺜﺎل‬
‫هﻲ ﻣﺼﻔﻮﻓﺔ ﻧﺼﻴﺔ ﺑﻴﻨﻤﺎ ﻟﻮ آﺎﻧﺖ اﻟﻌﻨﺎﺻﺮ اﻟﻤﺪﺧﻠﺔ أرﻗﻤﺎ )ﻻﺳﺘﻌﻤﻠﻨﺎ‬ ‫اﻟﺪاﻟﺔ ‪ : Cos‬وﺗﺴﺘﺨﺪم هﺬﻩ اﻟﺪاﻟﺔ ﻓﻲ ﺗﺤﺪﻳﺪ ﻗﻴﻤﺔ ﺟﻴﺐ ﺗﻤﺎم اﻟﺰاوﻳﺔ‬
‫ﻋﻼﻣﺎت اﻟﺘﻨﺼﻴﺺ ﻣﻊ اﻷرﻗﺎم ﺣﺘﻰ ﻻ ﺗﻌﺘﺒﺮ ﻧﺼﻮﺻﺎ( ﻟﻜﺎﻧﺖ‬ ‫ﻣﻌﻴﻨﺔ وﺗﺄﺧﺬ اﻟﺼﻮرة اﻟﻌﺎﻣﺔ اﻟﺘﺎﻟﻴﺔ‪:‬‬
‫ﻣﺼﻔﻮﻓﺔ ﻣﻦ ﻧﻮع ‪ Integer‬ﻣﺜﻼ ‪.‬‬ ‫ﻛﻮد‪:‬‬
‫اﻟﺪاﻟﺔ ‪ : Asc‬ﺗﺮﺟﻊ آﻮد اﻟﺮﻣﺰ اﻟﻤﺪﺧﻞ )‪ (ASCII Code‬ﻓﻤﺜﻼ‬ ‫)رﻗﻢ(‪myNumber = Cos‬‬
‫اﻟﺤﺮف ‪ A‬ﻟﻪ اﻟﻜﻮد ‪ 65‬ﻓﻌﻨﺪ إدﺧﺎل ﺣﺮف ‪ A‬ﻣﺜﻼ ﺳﺘﻜﻮن اﻟﻨﺘﻴﺠﺔ ‪65‬‬
‫وهﻜﺬا ) ﻻﺣﻆ أن ﺣﺮف ‪ A‬ﻳﺨﺘﻠﻒ ﻋﻦ ﺣﺮف ‪ a‬ﻓﻲ اﻟﻜﻮد(‪.‬‬ ‫اﻟﺪاﻟﺔ ‪ : Sin‬ﺗﺴﺘﺨﺪم هﺬﻩ اﻟﺪاﻟﺔ ﻓﻲ ﺗﺤﺪﻳﺪ ﻗﻴﻤﺔ ﺟﻴﺐ زاوﻳﺔ ﻣﻌﻴﻨﺔ‬
‫ﻛﻮد‪:‬‬ ‫وﺗﺄﺧﺬ اﻟﺼﻮرة اﻟﻌﺎﻣﺔ اﻟﺘﺎﻟﻴﺔ‪:‬‬
‫)"‪myNumber = Asc("a‬‬ ‫ﻛﻮد‪:‬‬
‫)رﻗﻢ(‪myNumber = Sin‬‬
‫ﺗﺠﺪ أن اﻟﻤﺘﻐﻴﺮ ‪ myNumber‬أﺻﺒﺢ ﻳﺤﻤﻞ اﻟﻘﻴﻤﺔ ‪ . 97‬وهﻜﺬا ‪ ..‬اﻧﺘﺒﻪ‬
‫ﻓﻴﻤﺎ ﻟﻮ ﻏﻴﺮة اﻟﺤﺮف ﻣﻦ ﺻﻐﻴﺮ إﻟﻰ آﺒﻴﺮ ﺳﺘﺘﻐﻴﺮ اﻟﻘﻴﻤﺔ إﻟﻰ ‪.65‬‬ ‫اﻟﺪاﻟﺔ ‪ : Round‬وهﻲ داﻟﺔ اﻟﺘﻘﺮﻳﺐ اﻟﺘﻲ ﻣﻦ ﺧﻼﻟﻬﺎ ﻳﻤﻜﻨﻚ ﺗﺤﺪﻳﺪ‬
‫اﻟﺪاﻟﺔ ‪ : UCase‬وﻇﻴﻔﺘﻬﺎ ﺑﺴﻴﻄﺔ ﺟﺪا ﻓﻬﻲ ﺑﺒﺴﺎﻃﺔ ﺗﺤﻮل ﺣﺎﻟﺔ‬ ‫ﻋﺪد اﻷرﻗﺎم اﻟﻌﺸﺮﻳﺔ وﺗﺄﺧﺬ اﻟﺼﻮرة اﻟﺘﺎﻟﻴﺔ‪:‬‬
‫اﻟﻨﺺ اﻟﻤﺪﺧﻞ ﻣﻦ ﺣﺎﻟﺔ اﻷﺣﺮف اﻟﺼﻐﻴﺮة )‪ (Small Letters‬إﻟﻰ‬ ‫ﻛﻮد‪:‬‬
‫ﺣﺎﻟﺔ اﻷﺣﺮف اﻟﻜﺒﻴﺮة )‪(Capital Letters‬‬
‫)‪myNumber = Round(4.52696,2‬‬
‫ﻓﺎﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ ﻳﺤﻮل "‪ "taftaf1267‬إﻟﻰ”‪"TAFTAF1267‬‬
‫ﻛﻮد‪:‬‬
‫ﺣﻴﺚ ‪ 4.52696‬اﻟﺮﻗﻢ اﻟﻤﺮاد ﺗﻘﺮﻳﺒﻪ أﻣﺎ اﻟﺮﻗﻢ ‪ 2‬ﻓﻬﻮ ﻋﺪد اﻟﺘﻲ ﺳﺘﻘﺮب‬
‫)"‪Ucase("taftaf1267‬‬ ‫ﺑﻌﺪ اﻟﻌﻼﻣﺔ اﻟﻌﺸﺮﻳﺔ وﺳﻴﻜﻮن اﻟﻨﺎﺗﺞ ‪4.53‬‬

‫اﻟﺪاﻟﺔ ‪ : LCase‬ﺗﻌﻴﺪ اﻟﺪاﻟﺔ ‪ LCase‬ﻧﺴﺨﺔ ﻣﻦ اﻟﻨﺺ ‪string‬‬ ‫اﻟﺪاﻟﺔ ‪ : Fix‬وهﻲ ﺗﺸﺒﻪ اﻟﺪاﻟﺔ ‪ Int‬ﺗﻤﺎﻣﺎ أي أﻧﻬﺎ ﺗﺴﺘﺨﺪم ﻟﺤﺴﺎب‬
‫ﺗﻜﻮن ﻓﻴﻪ ﺟﻤﻴﻊ اﻟﺤﺮوف ﺻﻐﻴﺮة ‪ Lowercase‬اﻟﻤﺘﻐﻴﺮة ‪myText‬‬ ‫اﻟﺠﺰء اﻟﺼﺤﻴﺢ ﻓﻘﻂ وﺗﺄﺧﺬ اﻟﺼﻮرة اﻟﺘﺎﻟﻴﺔ ‪:‬‬
‫ﻓﻲ اﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ ﺳﺘﺤﺘﻮي ﻋﻠﻰ ﻋﺒﺎرة ‪it works :‬‬ ‫ﻛﻮد‪:‬‬
‫ﻛﻮد‪:‬‬ ‫)‪myNumber= Fix(4.52696‬‬
‫"‪myText = "It Works‬‬
‫)‪myText = LCase(myText‬‬ ‫ﻓﺈن ﻧﺘﻴﺠﺔ ﺗﻨﻔﻴﺬ اﻟﺪاﻟﺔ هﻲ ‪myNumber = 4‬‬

‫اﻟﺪاﻟﺔ ‪ : chr‬ﺗﻘﻮم اﻟﺪاﻟﺔ ‪ chr‬ﺑﺄﺧﺬ ﻗﻴﻤﺔ ﺑﻴﻦ ‪ 0‬و ‪ 255‬وﺗﻌﻴﺪ‬ ‫‪ .2‬دوال ﺳﻼﺳﻞ اﻟﺒﻴﺎﻧﺎت ‪.String Functions‬‬
‫اﻟﺤﺮف اﻟﻤﻤﺜﻞ ﻟﻬﺬﻩ اﻟﻘﻴﻤﺔ ﻓﻲ ﺟﺪول رﻣﻮز‪ ، ASCII‬ﻋﻠﻰ ﺳﺒﻴﻞ‬
‫اﻟﻤﺜﺎل اﻟﻌﺒﺎرة اﻟﺘﺎﻟﻴﺔ ‪:‬‬ ‫اﻟﺪاﻟﺔ ‪ : Array‬ﺗﺤﻮل ﻋﺪة ﺑﻴﺎﻧﺎت ﻣﺪﺧﻠﺔ آﻨﺼﻮص ﺗﻔﺼﻠﻬﺎ‬
‫ﻛﻮد‪:‬‬
‫ﻓﺎﺻﻠﺔ إﻟﻰ ﻣﺼﻔﻮﻓﺔ ﻳﻜﻮن رﻗﻢ أول ﻋﻨﺼﺮ ﻓﻴﻬﺎ )‪(Lower Bound‬‬
‫‪Hi,‬‬ ‫هﻮ )‪ (0‬ﻓﻤﺜﻼ ﻟﻮ أدﺧﻠﻨﺎ اﻟﻨﺺ اﻟﺘﺎﻟﻲ إﻟﻰ اﻟﺪاﻟﺔ ‪.‬‬
‫"‪I'm "TafTaf‬‬ ‫ﻛﻮد‪:‬‬
‫=‪myNumber‬‬ ‫"‪Array("First‬‬ ‫‪,‬‬ ‫"‪"Second‬‬ ‫‪,‬‬
‫ﺳﺘﺠﺪ أﻧﻚ ﻻ ﺗﺴﺘﻄﻴﻊ آﺘﺎﺑﺘﻬﺎ ﺑﻬﺬا اﻟﺸﻜﻞ‪:‬‬ ‫) "‪"Third" , "Forth‬‬
‫ﻛﻮد‪:‬‬ ‫)‪Print myNumber(0‬‬
‫)‪Print myNumber(1‬‬
‫""‪myText = "Hi," & vbCrLf & "I'm "TafTaf‬‬ ‫)‪Print myNumber(2‬‬
‫)‪Print myNumber(3‬‬
‫ﻷن اﻟﺒﺮﻧﺎﻣﺞ ﺳﻴﻌﺘﻘﺪ ﺑﺄن ﻧﻬﺎﻳﺔ اﻟﺴﻠﺴﺔ اﻟﻨﺼﻴﺔ اﻟﺴﺎﺑﻘﺔ هﻲ ﻋﻨﺪ‬
‫ﻋﻼﻣﺎت اﻻﻗﺘﺒﺎس اﻟﺘﻲ ﺗﻘﻊ ﻣﺒﺎﺷﺮة ﻗﺒﻞ آﻠﻤﺔ ‪ TafTaf‬وﺳﺘﻈﻬﺮ ﻟﻚ‬ ‫ﻧﺮى أن اﻟﻨﺘﻴﺠﺔ هﻲ‬
‫رﺳﺎﻟﺔ ﺧﻄﺄ‪ ،‬ﻟﺬﻟﻚ ﻓﺈﻧﻨﺎ ﻧﻠﺠﺄ ﻻﺳﺘﺨﺪام اﻟﺪاﻟﺔ ‪ chr‬ﺣﻴﺚ أن رﻣﺰ ﻋﻼﻣﺔ‬ ‫‪First‬‬
‫اﻻﻗﺘﺒﺎس اﻟﻤﺰدوﺟﺔ ﻓﻲ ﺟﺪول ‪ ASCII‬هﻮ ‪ ،34‬ﻓﺘﻜﻮن اﻟﺼﻴﺎﻏﺔ‬ ‫‪Second‬‬
‫اﻟﺼﺤﻴﺤﺔ ﻟﻠﻌﺒﺎرة اﻟﺒﺮﻣﺠﻴﺔ اﻟﺴﺎﺑﻘﺔ آﺎﻟﺘﺎﻟﻲ‪:‬‬ ‫‪Third‬‬
‫ﻛﻮد‪:‬‬ ‫‪Forth‬‬
‫‪ ‬‬
‫" ‪myText = "Hi," & vbCrLf & "I'm‬‬
‫)‪& chr(34) & "TafTaf" & chr(34‬‬

‫‪62‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫ﺷﺮح ﻣﻌﻈﻢ اﻟﺪوال اﻟﺒﺮﻣﺠﻴﺔ اﻟﻤﻮﺟﻮدة ﻓﻲ اﻟﻔﻴﺠﻮال ﺑﻴﺴﻚ‬
‫ﻣﺼﻄﻔﻰ إﺳﻤﺎﻋﻴﻞ ‪ ‬‬ ‫اﻟﺪاﻟﺔ ‪ : Len‬ﺳﺘﺠﺪ ﻓﻴﻤﺎ ﺑﻌﺪ ﺣﺎﺟﺔ ﻓﻲ آﺜﻴﺮ ﻣﻦ اﻷﺣﻴﺎن ﻟﻤﻌﺮﻓﺔ‬
‫ﺳﺘﻮاﺟﻬﻚ ﻣﺸﻜﻠﺔ ﻓﻲ اﻟﺸﻔﺮة اﻟﺴﺎﺑﻘﺔ ﺣﻴﺚ ﻳﻘﻮم ﻓﺒﺠﻮال ﺑﻴﺴﻚ ﺑﺈﺿﺎﻓﺔ‬ ‫ﻃﻮل اﻟﺴﻠﺴﻠﺔ اﻟﻨﺼﻴﺔ ) ﻋﺪد اﻷﺣﺮف (‪ ،‬وﻟﻌﻤﻞ ذﻟﻚ اﺳﺘﺨﺪم اﻟﺪاﻟﺔ‬
‫ﻣﺴﺎﻓﺔ ﻗﺒﻞ آﻞ ﺳﻠﺴﻠﺔ ﻧﺼﻴﺔ ﺗﻨﺘﺞ ﻣﻦ اﻟﺪاﻟﺔ اﻟﺴﺎﺑﻘﺔ ‪.‬‬ ‫‪ ،Len‬ﻣﺮر إﻟﻴﻬﺎ اﻟﻨﺺ وﺳﺘﻌﻴﺪ ﻟﻚ ﻋﺪد اﻟﺤﺮوف‪.‬‬
‫اﻟﺪاﻟﺔ ‪ : Val‬وهﻲ ﺗﺤﻮل اﻟﺴﻼﺳﻞ اﻟﻨﺼﻴﺔ إﻟﻰ ﻗﻴﻤﺔ رﻗﻤﻴﺔ وهﻲ‬ ‫ﻛﻮد‪:‬‬
‫ﻋﻜﺲ اﻟﺪاﻟﺔ )(‪ Str‬اﻟﺘﻲ ﺗﺤﻮل اﻷرﻗﺎم إﻟﻰ ﺳﻼﺳﻞ ﻧﺼﻴﺔ وﺗﺄﺧﺬ‬ ‫)"‪myLength = Len("TafTaf‬‬
‫اﻟﺼﻮرة اﻟﺘﺎﻟﻴﺔ‪:‬‬
‫ﻛﻮد‪:‬‬
‫اﻟﺪاﻟﺔ ‪ : InStr‬ﻳﻤﻜﻨﻚ ﺑﻮاﺳﻄﺔ هﺬﻩ اﻟﺪاﻟﺔ ﻣﻌﺮﻓﺔ أول ﻣﻜﺎن‬
‫)‪myNumber = Val(txtMyNumber.text‬‬ ‫ﻳﻈﻬﺮ ﻓﻴﻪ ﻧﺺ ﻣﺎ ﺿﻤﻦ ﻧﺺ ﺁﺧﺮ أآﺒﺮ ﻣﻨﻪ‪ .‬اﻟﻮﺳﻴﻄﺔ اﻷوﻟﻰ هﻲ‬
‫وﺳﻴﻄﺔ اﺧﺘﻴﺎرﻳﺔ ﺗﺤﺪد ﻣﻜﺎن ﺑﺪء اﻟﺒﺤﺚ‪ ،‬أﻣﺎ اﻟﻮﺳﻴﻄﺔ اﻟﺜﺎﻧﻴﺔ ‪string1‬‬
‫وهﻨﺎ ﺗﻌﻤﻞ اﻟﺪاﻟﺔ ﻋﻠﻲ ﺗﺤﻮﻳﻞ اﻟﻘﻴﻤﺔ اﻟﻤﻮﺟﻮدة ﻓﻲ ‪txtMyNumber‬‬ ‫ﻓﺘﺤﺪد اﻟﺴﻠﺴﻠﺔ اﻟﻨﺼﻴﺔ اﻟﺘﻲ ﺳﻴﺘﻢ اﻟﺒﺤﺚ ﻓﻴﻬﺎ‪ ،‬واﻟﻮﺳﻴﻄﺔ اﻟﺜﺎﻟﺜﺔ‬
‫إﻟﻰ ﻗﻴﻤﺔ رﻗﻤﻴﺔ‪.‬‬ ‫‪string2‬ﺗﺤﺪد اﻟﺴﻠﺴﻠﺔ اﻟﻨﺼﻴﺔ اﻟﺘﻲ ﺳﻴﺘﻢ اﻟﺒﺤﺚ ﻋﻨﻬﺎ ﻓﻲ اﻟﺴﻠﺴﻠﺔ‬
‫اﻟﺪاﻟﺔ ‪ : Left‬ﺣﻴﺚ ﺗﻘﻮم ﺑﻮﺿﻊ ﺳﻠﺴﻠﺔ ﻧﺼﻴﺔ ‪ string‬وﺗﺤﺪد‬ ‫اﻷوﻟﻰ‪ ،‬أﻣﺎ اﻟﻮﺳﻴﻄﺔ اﻷﺧﻴﺮة ﻓﻬﻲ اﺧﺘﻴﺎرﻳﺔ أﻳﻀﺎ وﺗﺤﺪد ﻧﻮع اﻟﻤﻘﺎرﻧﺔ‬
‫اﻟﺠﺰء اﻟﺬي ﺗﺮﻳﺪ اﻗﺘﻄﺎﻋﻪ ﻣﻦ ﺑﺪاﻳﺔ اﻟﺴﻠﺴﻠﺔ ‪ ، length‬واﻟﺘﻌﺒﻴﺮ ﺑﻜﻠﻤﺔ‬ ‫اﻟﺘﻲ ﻳﺠﺐ إﺟﺮاﺋﻬﺎ وهﻲ ﺗﺄﺧﺬ أﺣﺪ اﻟﺜﻮاﺑﺖ اﻟﺘﺎﻟﻴﺔ ‪:‬‬
‫ﻣﻦ ﺑﺪاﻳﺔ اﻟﺴﻠﺴﻠﺔ أدق ﻣﻦ ﻳﺴﺎر اﻟﺴﻠﺴﻠﺔ ﻷن هﺬا ﻗﺪ ﻳﺤﺪث اﺷﺘﺒﺎهﺎ ﻓﻲ‬ ‫‪0 - vbBinaryCompare‬‬
‫اﻟﺴﻼﺳﻞ اﻟﻨﺼﻴﺔ ﻟﻠﻐﺎت اﻟﺘﻲ ﺗﻜﺘﺐ ﻣﻦ اﻟﻴﻤﻴﻦ إﻟﻰ اﻟﻴﺴﺎر ﻣﺜﻞ اﻟﻌﺮﺑﻴﺔ‪،‬‬ ‫‪1 - vbTextCompare‬‬
‫هﻨﺎ ﺗﻌﻴﺪ اﻟﺴﻠﺴﻠﺔ اﻟﻌﺪد اﻟﻤﺤﺪد ﻣﻦ اﻟﺤﺮوف ﻣﻦ اﻟﻴﻤﻴﻦ أي أﻧﻬﺎ ﻻ ﺗﻬﺘﻢ‬ ‫واﻟﻔﺮق ﺑﻴﻨﻬﻤﺎ هﻮ أن اﻷوﻟﻰ ﺗﺮاﻋﻲ ﺣﺎﻟﺔ اﻷﺣﺮف واﻟﺜﺎﻧﻲ ﻻ ﺗﺮاﻋﻲ‬
‫ﻻﺗﺠﺎﻩ ﻇﻬﻮر أﺣﺮف اﻟﺴﻠﺴﺔ وإﻧﻤﺎ اﺗﺠﺎﻩ ﺗﺨﺰﻳﻨﻬﺎ‪ ،‬وﻟﻠﺘﺨﻠﺺ ﻣﻦ هﺬﻩ‬ ‫ﺣﺎﻟﺔ اﻷﺣﺮف ‪.‬‬
‫اﻟﻤﺸﻜﻠﺔ ﺳﻨﻘﻮل ﺑﺪاﻳﺔ اﻟﺴﻠﺴﻠﺔ ‪.‬‬ ‫ﻓﻲ اﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ اﻟﻤﺘﻐﻴﺮ‪ i‬ﺳﻴﺤﺘﻮي ﻋﻠﻰ اﻟﻘﻴﻤﺔ ‪:1‬‬
‫اﻟﺪاﻟﺔ ‪ : Right‬ﻣﻄﺎﺑﻘﺔ ﻟﻠﺪاﻟﺔ ‪ Left‬ﻓﻲ آﻞ ﺷﻲء‪ ،‬إﻻ أﻧﻬﺎ ﺗﺄﺧﺬ‬ ‫ﻛﻮد‪:‬‬
‫اﻟﻌﺪد اﻟﻤﺤﺪد ﻣﻦ اﻟﺤﺮوف ﻣﻦ ﻧﻬﺎﻳﺔ اﻟﺴﻠﺴﻠﺔ ‪.‬‬ ‫)"‪i = InStr("TafTaf","T‬‬
‫اﻟﺪاﻟﺔ ‪ : Mid‬ﺗﻌﻴﺪ اﻟﺪاﻟﺔ ‪ Mid‬ﻋﺪدا ﻣﻦ اﻷﺣﺮف ﻗﺪرﻩ ‪length‬‬
‫ﺑﺪءا ﻣﻦ ﺣﺮف ﻣﻌﻴﻦ هﻮ ‪ ، start‬ﻓﻲ ﺳﻠﺴﻠﺔ ﻧﺼﻴﺔ ‪ string‬ﻻﺣﻆ‬ ‫وأﻣﺎ اﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ ﻓﺴﻴﺤﺘﻮي ‪ i‬ﻓﻴﻪ ﻋﻠﻰ اﻟﻘﻴﻤﺔ ‪:3‬‬
‫أﻳﻀﺎ أن اﻟﻮﺳﻴﻄﺔ ‪ length‬اﺧﺘﻴﺎرﻳﺔ وإذا ﻟﻢ ﺗﻤﺮر ﺑﻬﺎ أي ﻗﻴﻤﺔ ﻓﺈن‬ ‫ﻛﻮد‪:‬‬
‫اﻟﺪاﻟﺔ ﺳﺘﻌﻴﺪ اﻷﺣﺮف إﻟﻰ ﻧﻬﺎﻳﺔ اﻟﺴﻠﺴﻠﺔ ‪.‬‬
‫)"‪i = InStr("aafTaf","T‬‬
‫ﻓﻲ اﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ ﺳﺘﺤﺘﻮي اﻟﻤﺘﻐﻴﺮة ‪ myText‬ﻋﻠﻰ اﻟﻌﺒﺎرة ‪I'm‬‬
‫‪Taf :‬‬
‫ﺣﻴﺚ أن اﻟﺪاﻟﺔ ﻓﻲ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ ﺳﺘﺒﺤﺚ ﻋﻦ اﻟﺤﺮف ‪ T‬ﺑﺎدﺋﻪ ﻣﻦ‬
‫ﻛﻮد‪:‬‬
‫اﻟﺤﺮف اﻟﺜﺎﻧﻲ وﻟﺬﻟﻚ ﻓﻬﻲ ﻟﻦ ﺗﺠﺪ اﻟﺤﺮف اﻷول ‪.‬‬
‫)‪myText = Mid("I'm TafTaf", 1, 7‬‬ ‫اﻟﺪاﻟﺔ ‪ : InStrRev‬وهﻲ ﺷﺒﻴﻬﻪ ﺑﺪاﻟﺔ ‪) InStr‬وﻗﺪ ﺳﺒﻖ‬
‫ﺷﺮﺣﻬﺎ ﻣﻦ ﻗﺒﻞ ( وﻟﻜﻦ ﺗﻜﻮن ﻋﻤﻠﻴﺔ اﻟﺒﺤﺚ ﻋﻦ اﻟﺤﺮف ﻋﻜﺴﻴﺔ أي ﺗﺒﺪأ‬
‫أﻣﺎ ﻓﻲ اﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ ﻓﺴﺘﺤﺘﻮي ﻋﻠﻰ اﻟﻜﻠﻤﺔ‪TafTaf :‬‬ ‫ﻣﻦ ﻧﻬﺎﻳﺔ اﻟﻘﻴﻤﺔ ‪ .‬وهﻲ ﺣﺴﺎﺳﺔ ﻟﺤﺎﻟﺔ اﻷﺣﺮف وﺗﺄﺧﺬ اﻟﺼﻮرة اﻟﺘﺎﻟﻴﺔ‪:‬‬
‫ﻛﻮد‪:‬‬ ‫آﻮد‪:‬‬
‫)‪myText = Mid("I'm TafTaf", 5‬‬ ‫)”‪Print InStrRev("Mostafa", "a‬‬
‫)"‪Print InStr("Mostafa", "a‬‬
‫اﻟﺘﺼﺮﻳﺢ ‪ : Mid‬ﻳﻘﻮم اﻟﺘﺼﺮﻳﺢ ‪ Mid‬ﺑﺎﺳﺘﺒﺪال ﻣﻘﻄﻊ ﻣﺤﺪد ﻣﻦ‬
‫اﻟﻨﺺ ﺑﻨﺺ ﺁﺧﺮ‪ ،‬وهﻮ ﻳﻜﺘﺐ ﻓﻲ ﺻﻮرة ﻣﺸﺎﺑﻬﺔ ﺟﺪا ﻟﻄﺮﻳﻘﺔ آﺘﺎﺑﺔ‬ ‫ﺑﺎﻟﻨﺴﺒﺔ ﻟﻠﺤﺎﻟﺔ اﻷوﻟﻰ ﺳﻴﻜﻮن اﻟﻨﺎﺗﺞ رﻗﻢ ‪ 7‬ﻷﻧﻬﺎ ﺗﺒﺪأ ﻣﻦ ﻧﻬﺎﻳﺔ اﻟﻘﻴﻤﺔ‪.‬‬
‫داﻟﺔ ‪ Mid‬وﻟﻜﻦ ﺗﻮﺿﻊ ﺑﻌﺪﻩ ﻋﻼﻣﺔ ﻣﺴﺎواة وﺑﻌﺪهﺎ اﻟﻌﺒﺎرة اﻟﺠﺪﻳﺪة‪،‬‬ ‫أﻣﺎ ﻓﻲ اﻟﺤﺎﻟﺔ اﻟﺜﺎﻧﻴﺔ ﻓﺴﻴﻜﻮن اﻟﻨﺎﺗﺞ ‪ 5‬ﻷﻧﻬﺎ ﺗﺒﺪأ ﻣﻦ ﺑﺪاﻳﺔ اﻟﻘﻴﻤﺔ‪.‬‬
‫ﻓﻲ اﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ ﺳﺘﺤﺘﻮي اﻟﻤﺘﻐﻴﺮة ‪ myText‬ﻋﻠﻰ اﻟﻘﻴﻤﺔ ‪I'm‬‬
‫‪TafTaf :‬‬ ‫اﻟﺪاﻟﺔ ‪ : Str‬ﻗﺪ ﺗﺒﺪو اﻟﺪاﻟﺔ ‪ Str‬ﻣﺘﺸﺎﺑﻬﺔ ﻣﻊ اﻟﺪاﻟﺔ ‪ ، chr‬إﻻ أﻧﻬﺎ‬
‫ﻛﻮد‪:‬‬ ‫ﺗﺆدي وﻇﻴﻔﺔ ﻣﺨﺘﻠﻒ ﺗﻤﺎﻣﺎ‪ ،‬ﻓﻬﻲ ﺗﺤﻮل اﻷرﻗﺎم إﻟﻰ ﺳﻼﺳﻞ ﻧﺼﻴﺔ‪،‬‬
‫"‪name = "TafTaf‬‬ ‫وهﻲ ﺗﻔﻴﺪ ﻣﺜﻼ ﻓﻲ ﺣﺎل أردت أن ﺗﻘﻮم ﺑﺎﻟﺘﺤﺎم ﺑﻴﻦ رﻗﻤﻴﻦ ﻓﺘﻘﻮم ﺑﺘﺤﻮﻳﻞ‬
‫"‪myText = "I'm name‬‬ ‫آﻞ ﻣﻨﻬﻤﺎ إﻟﻰ ﺳﻠﺴﻠﺔ ﻧﺼﻴﺔ وﺗﻄﺒﻖ ﺑﻴﻨﻬﻤﺎ ﺟﻤﻊ اﻟﺴﻼﺳﻞ ) & ( اﻟﺬي‬
‫‪Mid(myText, 5) = name‬‬ ‫ﻳﺨﺘﻠﻒ ﻋﻦ ﺟﻤﻊ اﻷرﻗﺎم وﺑﺎﻟﺘﺎﻟﻲ ﺗﺤﺼﻞ ﻋﻠﻰ ﺳﻠﺴﻠﺔ ﺟﺪﻳﺪة ﻳﻤﻜﻨﻚ أن‬
‫ﺗﺤﻮﻟﻬﺎ إﻟﻰ رﻗﻢ ﻣﻦ ﺟﺪﻳﺪ‪ ،‬ﻋﻠﻰ ﺳﺒﻴﻞ اﻟﻤﺜﺎل اﻟﺪاﻟﺔ ‪myNumber‬‬
‫ﺣﻴﺚ ﺳﻴﺘﻢ ﺣﺬف اﻟﺠﺰء اﻟﻤﺤﺪد ﺑﺎﻟﺨﺎﺻﻴﺔ ‪ Mid‬وﻳﻮﺿﻊ اﻟﺠﺰء اﻟﺬي‬ ‫ﺗﺤﺘﻮي ﻋﻠﻰ اﻟﻘﻴﻤﺔ ‪.123456‬‬
‫ﺑﻌﺪ ﻋﻼﻣﺔ اﻟﻤﺴﺎواة ﻓﻲ ﻣﻜﺎن اﻟﺠﺰء اﻟﻤﺤﺬوف ‪.‬‬ ‫ﻛﻮد‪:‬‬
‫اﻟﺪاﻟﺔ ‪ : strReverse‬ﺗﻌﻴﺪ اﻟﺴﻠﺴﻠﺔ ‪ string‬ﻣﻌﻜﻮﺳﺔ‪،‬‬
‫)‪myNumber = Str(123) & Str(456‬‬
‫أي ﺗﺒﺪأ ﻣﻦ اﻟﺒﺪاﻳﺔ وﺗﻨﺘﻬﻲ ﻣﻦ اﻟﻨﻬﺎﻳﺔ‪ ،‬اﻟﻤﺘﻐﻴﺮة ‪ myText‬ﻓﻲ اﻟﻤﺜﺎل‬
‫اﻟﺘﺎﻟﻲ ﺳﺘﺤﺘﻮي ﻋﻠﻰ اﻟﻌﺒﺎرة ‪welcome :‬‬
‫ﻛﻮد‪:‬‬
‫)"‪myText = strReverse("welcome‬‬

‫‪63‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫ﺷﺮح ﻣﻌﻈﻢ اﻟﺪوال اﻟﺒﺮﻣﺠﻴﺔ اﻟﻤﻮﺟﻮدة ﻓﻲ اﻟﻔﻴﺠﻮال ﺑﻴﺴﻚ‬
‫ﻣﺼﻄﻔﻰ إﺳﻤﺎﻋﻴﻞ ‪ ‬‬ ‫اﻟﺪاﻟﺔ ‪ : Replace‬وﺗﻘﻮم ﺑﺎﺳﺘﺒﺪال اﻟﻨﺺ ‪ string2‬ﺑﺎﻟﻨﺺ‬
‫ﻛﻮد‪:‬‬ ‫‪string3‬ﺿﻤﻦ اﻟﺴﻠﺴﻠﺔ ‪ ، string1‬أي أﻧﻬﺎ ﺗﺒﺤﺚ ﻓﺒﺎﻟﻨﺺ ‪string1‬‬
‫)"ت"(‪MsgBox Ascw‬‬ ‫ﻋﻦ اﻟﻨﺺ ‪ string2‬وﻋﻨﺪﻣﺎ ﺗﺠﺪﻩ ﻓﺈﻧﻬﺎ ﺗﺤﺬﻓﻪ ﻣﻨﻪ وﺗﻀﻊ ﻣﻜﺎﻧﻪ‬
‫‪ ،string3‬وﻳﻤﻜﻦ ﺗﺤﺪﻳﺪ ﻧﻘﻄﺔ ﺑﺪاﻳﺔ اﻟﺒﺤﺚ ﺑﺎﻟﻮﺳﻴﻄﺔ ‪ ،start‬وﻋﺪد‬
‫اﻟﺪاﻟﺔ ‪ : Chrw‬وهﻲ ﻋﻜﺲ اﻟﺪاﻟﺔ ‪ Chr‬ﺗﻌﻴﺪ اﻟﺤﺮف اﻟﻤﻤﺜﻞ ﻟﻬﺬﻩ‬ ‫ﻣﺮات اﻻﺳﺘﺒﺪال اﻟﻘﺼﻮى ﺑﺎﻟﻮﺳﻴﻄﺔ ‪ ،count‬ﺿﻊ اﻟﻘﻴﻤﺔ ‪ 1-‬ﻻﺳﺘﺒﺪال‬
‫اﻟﻘﻴﻤﺔ ﻓﻲ اﻟﺘﺮﻣﻴﺰ ‪ Unicode‬وﺗﺄﺧﺬ اﻟﺼﻮرة اﻟﺘﺎﻟﻴﺔ‪:‬‬ ‫اﻟﻜﻞ‪ ،‬وﻃﺮﻳﻘﺔ اﻟﻤﻘﺎرﻧﺔ ﺑﺎﻟﻮﺳﻴﻄﺔ ‪ compare‬آﻤﺎ ذآﺮ ﺳﺎﺑﻘﺎ ‪.‬‬
‫ﻛﻮد‪:‬‬ ‫اﻟﻤﺘﻐﻴﺮة ‪ myText‬ﻓﻲ اﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ ﺳﺘﺤﺘﻮي ﻋﻠﻰ اﻟﻘﻴﻤﺔ ‪Hi‬‬
‫‪Everyone :‬‬
‫)‪MsgBox ChrW(1578‬‬ ‫ﻛﻮد‪:‬‬
‫‪myText‬‬ ‫=‬ ‫‪Replace("Welcome‬‬ ‫‪Everyone,",‬‬
‫ﺗﻮﺿﻴﺢ أآﺜﺮ ﻟﻠﺪوال اﻷرﺑﻊ ‪:‬‬ ‫)‪"Welcome", "Hi", 1, -1‬‬
‫ﻛﻮد‪:‬‬
‫)(‪Private Sub Command1 Click‬‬ ‫اﻟﺪاﻟﺔ ‪ : Format‬وﺗﻘﻮم هﺬﻩ اﻟﺪاﻟﺔ ﺑﺘﻨﺴﻴﻖ رﻗﻢ أو ﺳﻠﺴﻠﺔ ﺣﺮوف‬
‫)"ت"(‪MsgBox Asc‬‬
‫أو اﻟﺘﺎرﻳﺦ‪/‬اﻟﻮﻗﺖ اﻟﻤﻮﺟﻮد ﻓﻲ اﻟﺘﻌﺒﻴﺮ ﺗﺒﻌﺎ ﻟﺘﻌﻠﻴﻤﺎت اﻟﺘﻨﺴﻴﻖ اﻟﻤﻮﺟﻮدة‬
‫)"ت"(‪MsgBox AscW‬‬
‫)‪MsgBox Chr(202‬‬ ‫ﻓﻲ اﻟﺪاﻟﺔ ﻧﻔﺴﻬﺎ ‪ .‬وﺗﺄﺧﺬ اﻟﺼﻮرة اﻟﺘﺎﻟﻴﺔ‪:‬‬
‫)‪MsgBox ChrW(1578‬‬ ‫ﻛﻮد‪:‬‬
‫‪End Sub‬‬
‫)"‪myDate = Format(Date, "dd-mmm-yyyy‬‬
‫‪txtMyDate.Text = myDate‬‬
‫اﻟﺪاﻟﺔ ‪ : String‬وﺗﻌﻤﻞ هﺬﻩ اﻟﺪاﻟﺔ ﻋﻠﻲ ﺗﻜﺮار اﻟﺤﺮف اﻟﻤﺎر‬
‫أﻟﻴﻬﺎ وﻧﺎﺟﺬ اﻟﺼﻮرة اﻟﺘﺎﻟﻴﺔ‪.‬‬ ‫اﻟﺪاﻟﺔ ‪ : Trim‬ﺗﻘﻮم هﺬﻩ اﻟﺪاﻟﺔ ﺑﺤﺬف اﻟﻔﺮاﻏﺎت اﻟﻤﻮﺟﻮدة ﻓﻲ اﻟﺠﻬﺔ‬
‫ﻛﻮد‪:‬‬ ‫اﻟﻴﺴﺮي و اﻟﻴﻤﻨﻲ ﻣﻦ ﺳﻠﺴﻠﺔ وﺗﺄﺧﺬ اﻟﺼﻮرة اﻟﺘﺎﻟﻴﺔ‪:‬‬
‫)"‪myString = String(10, "T‬‬ ‫ﻛﻮد‪:‬‬
‫‪MsgBox myString‬‬
‫"(‪myText = Trim‬‬ ‫‪TafTaf‬‬ ‫)"‬
‫هﻨﺎ ﻋﻤﻠﻨﺎ ﻋﻠﻲ ﺗﻜﺮار ﺣﺮف ‪ T‬ﻋﺸﺮ ﻣﺮات‪.‬‬ ‫‪txtTafTaf.Text = myText‬‬
‫ﻛﻮد‪:‬‬
‫)‪myString = String(2, 13‬‬ ‫اﻟﺪاﻟﺔ ‪ : Rtrim‬ﺗﻘﻮم هﺬﻩ اﻟﺪاﻟﺔ ﺑﺤﺬف اﻟﻔﺮاﻏﺎت اﻟﻤﻮﺟﻮدة ﻓﻲ‬
‫& ‪ss = "Welcome To V.B World" & myString‬‬ ‫اﻟﺠﻬﺔ اﻟﻴﻤﻨﻲ ﻣﻦ ﺳﻠﺴﻠﺔ وﺗﺄﺧﺬ اﻟﺼﻮرة اﻟﺘﺎﻟﻴﺔ‪:‬‬
‫"‪"Welcome To V.B World‬‬ ‫ﻛﻮد‪:‬‬
‫‪MsgBox ss‬‬
‫‪myText = Rtrim("TafTaf‬‬ ‫)"‬
‫وﻓﻲ هﺬا اﻟﻤﺜﺎل ﻋﻤﻠﻨﺎ ﻋﻠﻲ ﺗﻜﺮار اﻟﻀﺮ ﻋﻠﻲ ﻣﻔﺘﺎح اﻹدﺧﺎل واﻟﺬي‬
‫اﻟﺪاﻟﺔ ‪ : Ltrim‬ﺗﻘﻮم هﺬﻩ اﻟﺪاﻟﺔ ﺑﺤﺬف اﻟﻔﺮاﻏﺎت اﻟﻤﻮﺟﻮدة ﻓﻲ‬
‫ﻳﺮﻣﺰ ﻟﻪ ﺑﺮﻣﺰ )‪ (13‬ﻓﻲ ﺟﺪول اﺳﻜﻲ ﻣﺮﺗﺎن‪.‬‬
‫اﻟﺠﻬﺔ اﻟﻴﺴﺮي و اﻟﻴﻤﻨﻲ ﻣﻦ ﺳﻠﺴﻠﺔ ‪ .‬وﺗﺄﺧﺬ اﻟﺼﻮرة اﻟﺘﺎﻟﻴﺔ‪:‬‬
‫‪ .3‬دوال اﻟﻮﻗﺖ و اﻟﺘﺎرﻳﺦ ‪.Date and Time‬‬ ‫ﻛﻮد‪:‬‬
‫"(‪myText = Ltrim‬‬ ‫)" ‪TafTaf‬‬
‫اﻟﺪاﻟﺔ ‪ : Now‬ﺗﻌﻴﺪ هﺬﻩ اﻟﺪاﻟﺔ ﺗﺎرﻳﺦ اﻟﻴﻮم و اﻟﻮﻗﺖ اﻟﺤﺎﻟﻲ ﺑﺎﺳﺘﺨﺪام‬
‫ﺳﺎﻋﺔ اﻟﺤﺎﺳﺐ اﻟﺬي ﺗﻌﻤﻞ ﻋﻠﻴﺔ وﺗﻜﻮن ﺑﺎﻟﺼﻮرة اﻟﺘﺎﻟﻴﺔ‪:‬‬ ‫اﻟﺪاﻟﺔ ‪ : Space‬وﺗﻘﻮم هﺬﻩ اﻟﺪاﻟﺔ ﺳﻠﺴﻠﺔ ﻓﺮاﻏﺎت ﻣﺤﺪدﻩ ﺑﺎﻟﻌﺪد‬
‫ﻛﻮد‪:‬‬ ‫اﻟﻤﻮﺟﻮد ﺑﻴﻦ اﻷﻗﻮاس‬
‫)(‪lblTodayDateHour.Caption = Now‬‬
‫ﻛﻮد‪:‬‬
‫"‪myText ="I'm" + Space (2) + "TafTaf‬‬
‫اﻟﺪاﻟﺔ ‪ : Time‬ﺗﻌﻴﺪ هﺬﻩ اﻟﺪاﻟﺔ اﻟﻮﻗﺖ اﻟﺤﺎﻟﻲ ﺣﺴﺐ ﻣﺎ هﻮ ﻣﺪون‬
‫ﺑﺴﺎﻋﺔ اﻟﺤﺎﺳﺐ اﻟﺬي ﺗﻌﻤﻞ ﻋﻠﻴﺔ وﺗﻜﻮن ﺑﺎﻟﺼﻮرة اﻟﺘﺎﻟﻴﺔ‬ ‫اﻟﺪاﻟﺔ ‪ : StrComp‬ﺗﻘﺎرن ﺳﻠﺴﻠﺘﻴﻦ ﻟﺘﺤﺪد هﻞ هﻤﺎ ﻣﺘﺴﺎوﻳﺘﻴﻦ ﺛﻢ ﺗﻌﻴﺪ‬
‫ﻛﻮد‪:‬‬ ‫رﻗﻤﺎ ﺑﻨﺘﻴﺠﺔ اﻟﻤﻘﺎرﻧﺔ وﺗﺄﺧﺬ اﻟﺼﻮرة اﻟﻌﺎﻣﺔ اﻟﺘﺎﻟﻴﺔ‪:‬‬
‫)(‪lblTodayHour.Caption = Time‬‬
‫ﻛﻮد‪:‬‬
‫)"‪myText = StrComp("TafTaf","TafTaf‬‬
‫اﻟﺪاﻟﺔ ‪ : Date‬ﺗﻌﻴﺪ اﻟﺘﺎرﻳﺦ اﻟﺤﺎﻟﻲ ﺣﺴﺐ ﻣﺎ هﻮ ﻣﺴﺠﻞ ﺑﺎﻟﺤﺎﺳﺐ‬
‫وﻳﻜﻮن ﺑﺎﻟﺼﻮرة اﻟﺘﺎﻟﻴﺔ‪:‬‬ ‫اﻟﺪاﻟﺔ ‪ : Ascw‬وهﻲ ﻋﻜﺲ اﻟﺪاﻟﺔ ‪ Asc‬ﻓﺎﻟﺪاﻟﺔ‬
‫ﻛﻮد‪:‬‬ ‫‪ Ascw‬ﺗﺮﺟﻊ آﻮد اﻟﺮﻣﺰ اﻟﻤﺪﺧﻞ إﻟﻰ اﻟﺘﺮﻣﻴﺰ‬
‫)(‪lblTodayDate.Caption = Date‬‬ ‫‪Unicode‬وﺗﺄﺧﺬ اﻟﺼﻮرة اﻟﺘﺎﻟﻴﺔ‪:‬‬
‫‪ ‬‬

‫‪64‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫ﺷﺮح ﻣﻌﻈﻢ اﻟﺪوال اﻟﺒﺮﻣﺠﻴﺔ اﻟﻤﻮﺟﻮدة ﻓﻲ اﻟﻔﻴﺠﻮال ﺑﻴﺴﻚ‬
‫ﻣﺼﻄﻔﻰ إﺳﻤﺎﻋﻴﻞ ‪ ‬‬ ‫اﻟﺪاﻟﺔ ‪ Day‬واﻟﺪاﻟﺔ ‪ : Month‬ﺗﻌﻴﺪ اﻟﺪاﻟﺔ )(‪ Day‬رﻗﻤﺎ ﻳﻘﻊ ﺑﻴﻦ‬
‫‪If Second Diff = 60 Then‬‬ ‫‪ 31 ،1‬ﻳﻤﺜﻞ ﺗﺮﺗﻴﺐ اﻟﻴﻮم اﻟﻤﻘﺎﺑﻞ ﻟﻘﻴﻤﺔ ﺗﺎرﻳﺨﻴﺔ ﺑﻴﻨﻤﺎ ﺗﻌﻴﺪ اﻟﺪاﻟﺔ‬
‫‪minuteDiff = minuteDiff+1‬‬ ‫)(‪ Month‬رﻗﻤﺎ ﻳﻘﻊ ﺑﻴﻦ ‪ 12 ، 1‬ﻳﻤﺜﻞ ﺗﺮﺗﻴﺐ اﻟﺸﻬﺮ اﻟﻤﻘﺎﺑﻞ ﻟﻘﻴﻤﺔ‬
‫‪SecondDiff = 0‬‬
‫‪End If‬‬
‫ﺗﺎرﻳﺨﻴﺔ‬
‫‪If minuteDiff = 60 Then‬‬ ‫ﻛﻮد‪:‬‬
‫‪hourDiff = hourDiff+1‬‬ ‫))(‪lblTodayDayIndex.Caption = Day(Date‬‬
‫‪minuteDiff = 0‬‬
‫))(‪lblTodayMonthIndex.Caption = Month(Date‬‬
‫‪End If‬‬
‫‪totalMinDiff‬‬ ‫=‬ ‫‪(hourDiff‬‬ ‫*‬ ‫)‪60‬‬ ‫‪+‬‬ ‫اﻟﺪاﻟﺔ ‪ : DateSerial‬ﺗﻌﻴﺪ هﺬﻩ اﻟﺪاﻟﺔ اﻟﺘﺎرﻳﺦ اﻟﻤﺴﻠﺴﻞ اﻟﻤﻘﺎﺑﻞ‬
‫‪minuteDiff‬‬
‫ﻟﻠﻴﻮم واﻟﺸﻬﺮ واﻟﺴﻨﺔ اﻟﻤﺪون ﺑﻴﻦ اﻷﻗﻮاس وﺗﺄﺧﺬ اﻟﺼﻮرة اﻟﺘﺎﻟﻴﺔ‪:‬‬
‫‪totalSecDiff‬‬ ‫‪=(totalMinDiff‬‬ ‫*‬ ‫)‪60‬‬ ‫‪+‬‬
‫‪seconDiff‬‬ ‫ﻛﻮد‪:‬‬
‫إﲨﺎﱄ اﻟﻮﻗﺖ اﳌﺘﺒﻘﻲ ﻋﻠﻲ ﻣﻨﺘﺼﻒ اﻟﻠﻴﻞ ” = ‪msg‬‬ ‫)‪myDate=DateSerial(2003,4,11‬‬
‫)”‪” & Format(Total SecDiff, ”#,##0‬هﻮ‬ ‫‪MsgBox myDate‬‬
‫”ﺛﺎﻧﻴﺔ ‪ ،‬ﳝﻜﻦ ﺗﺮﲨﺘﻬﺎ إﱄ” & ‪msg = msg‬‬
‫& ”ﺳﺎﻋﺔ‪msg = msg & hourDiff & “ ،‬‬ ‫اﻟﺪاﻟﺔ ‪ : TimeSerial‬ﺗﻌﻴﺪ هﺬﻩ اﻟﺪاﻟﺔ اﻟﻮﻗﺖ اﻟﻤﺴﻠﺴﻞ اﻟﻤﻘﺎﺑﻞ‬
‫‪minuteDiff‬‬ ‫ﻟﻠﺴﺎﻋﺔ و اﻟﺪﻗﻴﻘﺔ و اﻟﺜﺎﻧﻴﺔ اﻟﻤﺪوﻧﺔ ﺑﻴﻦ اﻷﻗﻮاس وﺗﺄﺧﺬ اﻟﺼﻮرة اﻟﺘﺎﻟﻴﺔ‪:‬‬
‫& ‪ ” & secondDiff‬دﻗﻴﻘﺔ‪ ،‬و“ & ‪msg = msg‬‬
‫”ﺛﺎﻧﻴﺔ“‬ ‫ﻛﻮد‪:‬‬
‫‪MsgBox msg‬‬ ‫)‪myTime=TimeSerial(12,59,20‬‬
‫ﻳﺴﺘﺨﺪم هﺬا اﻟﻤﺜﺎل اﻟﺪوال اﻟﺴﺎﺑﻘﺔ ﻟﺘﺤﻮﻳﻞ اﻟﻮﻗﺖ اﻟﻤﺘﺒﻘﻲ ﻋﻠﻲ ﻣﻨﺘﺼﻒ‬ ‫‪MsgBox myTime‬‬
‫اﻟﻠﻴﻞ إﻟﻰ ﺛﻮاﻧﻲ ﺛﻢ ﺗﺮﺟﻤﺔ هﺬا اﻟﻮﻗﺖ إﻟﻰ ﺳﺎﻋﺎت ودﻗﺎﺋﻖ وﺛﻮاﻧﻲ ﻓﻲ‬ ‫اﻟﺪاﻟﺔ ‪ : DateValue‬ﺗﻌﻴﺪ هﺬﻩ اﻟﺪاﻟﺔ اﻟﺘﺎرﻳﺦ اﻟﻤﻘﺎﺑﻞ ﻟﺘﻌﺒﻴﺮ‬
‫رﺳﺎﻟﺔ آﻬﺬﻩ " إﲨﺎﱄ اﻟﻮﻗﺖ اﳌﺘﺒﻘﻲ ﻋﻠﻲ ﻣﻨﺘﺼﻒ اﻟﻠﻴﻞ‬ ‫ﻣﻌﻴﻦ وﺗﺄﺧﺬ اﻟﺼﻮرة اﻟﺘﺎﻟﻴﺔ‪:‬‬
‫هﻮ ‪ 79972‬ﺛﺎﻧﻴﺔ ﳝﻜﻦ ﺗﺮﲨﺘﻬﺎ إﱃ ‪ 22‬ﺳﺎﻋﺔ ‪12‬‬ ‫ﻛﻮد‪:‬‬
‫دﻗﻴﻘﺔ ‪ 25‬ﺛﺎﻧﻴﺔ"‬
‫اﻟﺪاﻟﺔ ‪ : Weekday‬ﻋﻴﺪ هﺬﻩ اﻟﺪاﻟﺔ ﺗﺮﺗﻴﺐ اﻟﻴﻮم ﺑﻴﻦ أﻳﺎم اﻷﺳﺒﻮع‬ ‫)‪relVal = DateValue(Now – 1‬‬
‫‪MsgBox relVal‬‬
‫ﻣﻦ اﻟﺘﺎرﻳﺦ اﻟﻤﺪون ﺑﺤﻘﻞ اﻟﺘﺎرﻳﺦ أو اﻟﻘﻴﻤﺔ اﻟﺘﺎرﻳﺨﻴﺔ ﺑﺎﻋﺘﺒﺎر أن ﻳﻮم‬ ‫‪Select Case relVal‬‬
‫اﻷﺣﺪ رﻗﻢ ‪ 1‬واﻻﺛﻨﻴﻦ ‪ ... 2‬وهﻜﺬا‬ ‫" آﺎن" = ‪Case Is < Int(Now): verb‬‬
‫ﻛﻮد‪:‬‬ ‫"ﺳﻴﻜﻮن" = ‪Case Is > Int(Now): verb‬‬
‫"اﻟﻴﻮم هﻮ" = ‪Case Else: verb‬‬
‫‪lblweekdayIndex.Caption‬‬ ‫=‬ ‫‪End Select‬‬
‫)‪Weekday(#1/4/97#‬‬ ‫)”‪whatDay = Format(relVal, "dddd‬‬
‫اﻟﺪاﻟﺔ ‪: Year‬ﺗﻌﻴﺪ هﺬﻩ اﻟﺪاﻟﺔ رﻗﻤﺎ ﻳﻌﺒﺮ ﻋﻦ اﻟﺴﻨﺔ ﻟﺘﺎرﻳﺦ ﻣﻌﻴﻦ‪.‬‬ ‫‪MsgBox userDate & verb & whatDay‬‬
‫ﻛﻮد‪:‬‬
‫)‪lblWeekdayIndex.Caption = Year(#1/4/97#‬‬
‫ﻳﺒﻴﻦ هﺬا اﻟﻤﺜﺎل ﺗﺤﺪﻳﺪ ﻳﻮم ﻣﻦ أﻳﺎم اﻷﺳﺒﻮع )أﻣﺲ( ﺑﻌﺪ ﺗﺤﺪﻳﺪ ﻗﻴﻤﺔ‬
‫ﺗﺎرﻳﺦ اﻟﻴﻮم )ﺑﻔﺮض‪ :‬اﻻﺛﻨﻴﻦ اﻟﻤﻮاﻓﻖ ‪ 2‬ﺳﻨﺔ ‪ (1997‬ﺛﻢ ﻃﺮح )‪ (1‬ﻣﻨﺔ‬
‫اﻟﺪاﻟﺔ ‪ : DateAdd‬ﺗﻌﻴﺪ هﺬﻩ اﻟﺪاﻟﺔ ﺗﺎرﻳﺦ ﺟﺪﻳﺪ ﺑﻌﺪ أن ﺗﻀﻴﻒ ﻟﻪ‬ ‫ﻳﻈﻬﺮ اﻟﻨﺎﺗﺞ ﻓﻲ ﺻﻮرة رﺳﺎﻟﺔ ﺑﺎن أﻣﺲ "آﺎن اﻷﺣﺪ‪" .‬‬
‫ﻗﻴﻤﺔ ﺟﺪﻳﺪة وﺑﺼﺮف ﻋﻦ اﺳﻢ هﺬﻩ اﻟﺪاﻟﺔ ﻓﻬﻲ ﺗﻌﻤﻞ ﻣﻊ آﻞ ﻣﻦ اﻟﺘﺎرﻳﺦ‬
‫و اﻟﻮﻗﺖ ‪ .‬وﻳﻮﺿﺢ اﻟﺠﺪول اﻟﺘﺎﻟﻲ اﻟﻤﻘﺼﻮد ﺑﺎﻟﻤﻌﺎﻣﻞ "اﻟﻔﺎﺻﻞ اﻟﺰﻣﻨﻲ‬ ‫دوال ‪: Hour,Minute,Second,TimeValue‬‬
‫" و اﻟﻘﻴﻢ اﻟﺘﻲ ﻳﻤﻜﻦ ﺗﺨﺼﻴﺼﻬﺎ ﻟﻪ‪:‬‬ ‫ﻛﻮد‪:‬‬
‫اﻟﻔﺎﺻﻞ اﻟﺰﻣﻨﻲ ﺗﻮﺿﻴﺢ‬
‫)رﻗﻢ(‪Hour‬‬
‫ﺳﻨﺔ‬ ‫‪yyyy‬‬ ‫)رﻗﻢ(‪Minute‬‬
‫رﺑﻊ ﺳﻨﺔ‬ ‫‪q‬‬ ‫)رﻗﻢ(‪Second‬‬
‫)ﺗﻌﺒﲑ(‪TimeValue‬‬
‫ﺷﻬﺮ‬ ‫‪m‬‬
‫ﻳﻮم ﻓﻲ ﺳﻨﺔ‬ ‫‪y‬‬ ‫ﺗﻌﻴﺪ هﺬﻩ اﻟﺪوال ﻗﻴﻢ اﻟﺴﺎﻋﺔ ‪ ،‬اﻟﺪﻗﻴﻘﺔ ‪ ،‬اﻟﺜﺎﻧﻴﺔ أو اﻟﻮﻗﺖ‪.‬‬
‫ﻛﻮد‪:‬‬
‫ﻳﻮم‬ ‫‪d‬‬
‫)”‪midnight = TimeValue(“23:59:59‬‬
‫ﻳﻮم ﻣﻦ اﻷﺳﺒﻮع ) اﻷﺣﺪ ‪ ، 1‬واﻻﺛﻨﻴﻦ ‪ ..2‬وﻫﻜﺬا(‬ ‫‪w‬‬ ‫)‪hourDiff = Hour(midnight) - Hour(Now‬‬
‫أﺳﺒﻮع‬ ‫‪ww‬‬ ‫)‪minuteDiff = Minute(midnight) - Minute(Now‬‬
‫ﺳﺎﻋﺔ‬ ‫‪h‬‬ ‫‪secondDiff‬‬ ‫=‬ ‫)‪Scond(midnight‬‬ ‫‪-‬‬
‫‪Second(Now)+1‬‬
‫دﻗﻴﻘﺔ‬ ‫‪N‬‬
‫ﺛﺎﻧﻴﺔ‬ ‫‪s‬‬
‫ﻛﻮد‪:‬‬
‫‪lblDateAddResult.Caption‬‬ ‫=‬
‫)‪DateAdd("yyyy", -10, Date‬‬

‫‪65‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫ﺷﺮح ﻣﻌﻈﻢ اﻟﺪوال اﻟﺒﺮﻣﺠﻴﺔ اﻟﻤﻮﺟﻮدة ﻓﻲ اﻟﻔﻴﺠﻮال ﺑﻴﺴﻚ‬
  ‫ﻣﺼﻄﻔﻰ إﺳﻤﺎﻋﻴﻞ‬
‫ وﺗﺎرﻳﺦ اﻟﻴﻮم‬2003 ‫ﺑﻴﻨﻤﺎ اﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ ﻳﺤﺪد ﻋﺪد اﻷﺳﺎﺑﻴﻊ وﻋﺪد اﻷﻳﺎم ﻣﺎ ﺑﻴﻦ أول أﻳﺎم ﺳﻨﺔ‬
:‫ﻛﻮد‬
lblWeeksDateDiffResult.Caption = DateDiff("ww", #4/5/2003#, Now())
lblDaysDiffResult.Caption = DateDiff("y", #4/10/2003#, Now())
‫ ﺗﻘﻮم هﺬﻩ اﻟﺪاﻟﺔ ﺑﺈﻋﺎدة ﺟﺰء ﻣﻦ اﻟﺘﺎرﻳﺦ )ﻣﺜﻞ اﻟﻴﻮم أو اﻟﺸﻬﺮ أو اﻷﺳﺒﻮع أو اﻟﺴﺎﻋﺔ( وﻳﺘﻢ ﺗﻌﻴﻦ هﺬا اﻟﺠﺰء ﺑﻮاﺳﻄﺔ‬: DatePart ‫اﻟﺪاﻟﺔ‬
.‫اﻟﻔﺎﺻﻞ اﻟﺰﻣﻨﻲ‬
(OrderDate )‫ﺗﻌﻴﺪ اﻟﺪاﻟﺔ ﻓﻲ هﺬا اﻟﻤﺜﺎل رﻗﻢ اﻟﻴﻮم اﻟﻤﺤﺪد ﻓﻲ ﺣﻘﻞ ﺗﺎرﻳﺦ اﻻﻋﺘﻤﺎد‬
:‫ﻛﻮد‬
lblDayDatePart.Caption = DatePart("w", OrderDate)

...‫ﻳﺘﺒﻊ ﻻ ﺣﻘﺎ‬

... ‫اﺧﺘﺮﻧﺎ ﻟﻚ ﻣﻦ ﻣﻜﺘﺒﺔ اﻟﺸﻔﺮات‬


‫ﻛﻴﻔﻴﺔ ﻣﻌﺮﻓﺔ ﺣﺎﻟﺔ اﻻﺗﺼﺎل ﺑﺸﺒﻜﺔ اﻻﻧﺘﺮﻧﺖ‬

:‫ﻛﻮد‬
Private Declare Function InternetGetConnectedState Lib "wininet.dll" _
(ByVal lpdwFlags As Long, ByVal dwReserved As Long) As Long

Function IsConnected() As Boolean


IsConnected = CBool(InternetGetConnectedState(ByVal 0&, 0))
End Function

:‫ﻛﻮد‬
Private Sub Command1_Click()
If IsConnected Then
MsgBox "‫"ﺑﺎﻻﻧﱰﻧﺖ اﻻن ﻣﺘﺼﻞ اﻧﺖ‬
Else
MsgBox "‫"اﻻن ﺑﺎﻻﻧﱰﻧﺖ ﻣﺘﺼﻞ ﻏﲑ اﻧﺖ‬
End If
End Sub

:‫ﺗﻐﻴﻴﺮ أﺳﻤﺎء ﻣﺤﺮﻛﺎت اﻷﻗﺮاص‬

:‫ﻛﻮد‬
'API ‫داﻟﺔ ال‬
Private Declare Function SetVolumeLabel Lib "kernel32" Alias _
"SetVolumeLabelA" (ByVal lpRootPathName As String, _
ByVal lpVolumeName As String) As Boolean

On Error Resume Next


Dim IsChanged As Boolean
IsChanged = SetVolumeLabel(“c:\”,”New Name”)

66
2008 ‫ ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ‬/ ‫ ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ‬01 ‫اﻟﻌﺪد‬ vb4arab.com ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ‬
‫ﺗﻤﺮﻳﺮ ﺑﺎرﻣﻴﺘﺮات إﻟﻰ داﺧﻞ اﻟﺒﺮﻧﺎﻣﺞ ﻣﻦ اﻟﻮﻳﻨﺪوز‬
‫رﻏﻴﺪ ﻃﻴﺐ ‪ ‬‬ ‫ﺑﺴﻢ اﷲ اﻟﺮﺣﻤﻦ اﻟﺮﺣﻴﻢ‬
‫و ﻟﻜﻦ اﻟﺴﺆال اﻵن ﻫﻮ ﻣﺎ اﻟﺬي ﺣﺪث ﺑﺎﻟﻀﺒﻂ ؟!‬
‫اﻟﺴﻼم ﻋﻠﻴﻜﻢ و رﺣﻤﺔ اﷲ وﺑﺮآﺎﺗﻪ‪.‬‬
‫‪ ‬‬
‫ﻟﻨﺠﻴﺐ ﻋﻠﻰ اﻟﺴﺆال ﻳﺠﺐ أن ‪ ‬ﻧﻌﻠﻢ أن اﻟﻤﺘﻐﻴﺮ اﻟﻤﻌﺮف ﺿﻤﻨﻴًﺎ‬
‫ﻓﻲ هﺬﻩ اﻟﺤﻠﻘﺔ ﻣﻦ ﺣﻠﻘﺎت اﻟﺴﻠﺴﺔ اﻟﺬهﺒﻴﺔ ﻓﻲ اﻟﻤﻮاﺿﻴﻊ‬
‫و اﻟﻤﺴﻤﻰ ‪ Command‬ﻳﺤﺘﻔﻆ ﺑﻪ اﻟﻔﻴﺠﻮال ﺑﻴﺴﻚ ﻟﺘﺨﺰﻳﻦ‬
‫اﻟﺒﺮاﻣﻴﺘﺮات اﻟﺘﻲ ﺗﻢ ﺗﻤﺮﻳﺮهﺎ إﻟﻰ ﺑﺮﻧﺎﻣﺠﻨﺎ ‪ ..‬وﻣﺎ ﻗﻤﻨﺎ ﻧﺤﻦ ﺑﻪ هﻮ ﻓﻘﻂ‬ ‫اﻟﻌﻠﻤﻴﺔ ﺳﻨﺘﻌﺮف ﺑﺈذن اﷲ ﺗﻌﺎﻟﻰ ﻋﻠﻰ ﻃﺮﻳﻘﺔ ﺗﻤﺮﻳﺮ اﻟﺒﺎرﻣﺘﺮات إﻟﻰ‬
‫ﻋﺮض اﻟﺒﺮاﻣﺘﺮات اﻟﺘﻲ ﻣﺮرت ﻟﻠﺒﺮﻧﺎﻣﺞ وﻟﻮ أﻧﻚ ذهﺒﺖ إﻟﻰ اﻟﺴﻮاﻗﺔ‬ ‫داﺧﻞ ﺑﺮﻧﺎﻣﺞ ﻣﻦ ﺑﺮاﻣﺞ اﻟﻮﻳﻨﺪوز!‬
‫ﺳﻲ ‪ C ..‬ﺛﻢ ﻧﻘﺮت ﻋﻠﻰ اﻟﺒﺮﻧﺎﻣﺞ ‪ myMsg.exe‬ﻓﺎﻧﻚ ﻋﻨﺪهﺎ ﺳﺘﺮى‬
‫ﺑﺈذن اﷲ ﺗﻌﺎﻟﻰ ﻣﺮﺑﻊ ﺣﻮار ﻓﺎرغ ! ‪ ...‬و اﻟﺴﺒﺐ هﻮ أن اﻟﻨﻘﺮ اﻟﻌﺎدي‬ ‫و ﻟﻜﻲ ﻧﻔﻬﻢ ﺳﻮﻳًﺎ ﻣﺎ اﻟﻤﻘﺼﻮد ﻣﻦ ذﻟﻚ دﻋﻨﻲ أذآﺮك ﺑﻜﻴﻔﻴﺔ‬
‫ﻋﻠﻰ اﻟﺒﺮﻧﺎﻣﺞ ﻻ ﻳﻤﺮر ﻟﻪ أي ﺑﺎرﻣﻴﺘﺮات ﻟﻜﻨﻚ إذا ذهﺒﺖ إﻟﻰ اﻟﻘﺎﺋﻤﺔ‬ ‫ﻼ إذا اﻓﺘﺮﺿﻨﺎ اﻧﻚ‬
‫ﺗﻤﺮﻳﺮ اﻟﺒﺎﻣﻴﺘﺮات إﻟﻰ أي إﺟﺮاء ﺗﻘﻮم ﺑﺘﺼﻤﻴﻤﻪ ﻓﻤﺜ ً‬
‫ﻼ ﺛﻢ اﺗﺒﻌﺘﻪ‬
‫ﺗﺸﻐﻴﻞ ) ‪ ( Run‬ﻓﻲ اﺑﺪأ ﺛﻢ آﺘﺒﺖ ﻣﺴﺎر ﺑﺮﻧﺎﻣﺠﻚ آﺎﻣ ً‬ ‫ﺗﺮﻳﺪ أن ﺗﻘﻮم ﺑﺈﻧﺸﺎء إﺟﺮاء ﺑﺴﻴﻂ وﻇﻴﻔﺘﻪ ﻋﺮض رﺳﺎﻟﺔ ﻣﻌﻴﻨﺔ ﻳﺘﻢ‬
‫ﺑﻔﺮاغ ﺛﻢ أي ﻧﺺ ﻓﺄﻧﻪ ﺳﻮف ﻳﺘﻢ ﺗﺸﻐﻴﻞ اﻟﺒﺮﻧﺎﻣﺞ ﺑﺸﻜﻞ ﻃﺒﻴﻌﻲ ﻣﻊ‬ ‫ﺗﻤﺮﻳﺮهﺎ إﻟﻰ اﻹﺟﺮاء ‪...‬‬
‫ﺗﻤﺮﻳﺮ اﻟﻨﺺ اﻟﺬي آﺘﺒﺘﻪ إﻟﻴﻪ ﻋﻦ ﻃﺮﻳﻖ اﻟﻤﺘﻐﻴﺮ ‪ Command‬و ﻳﺒﻘﻰ‬
‫ﻋﻠﻰ اﻟﺒﺮﻧﺎﻣﺞ اﺳﺘﺨﺪاﻣﻪ ﺑﺎﻟﻨﺤﻮ اﻟﺬي ﻳﺮوق ﻟﻪ‬ ‫ﻣﻦ اﻟﻄﺒﻴﻌﻲ أن ﺗﻜﺘﺐ آﻮد آﺎﻟﺘﺎﻟﻲ‪:‬‬

‫اﻟﻔﺎﺋﺪة ﻣﻦ ذﻟﻚ ؟‬ ‫ﻛﻮد‪:‬‬


‫)‪Sub myMsg(ByVal Text As String‬‬
‫ﻗﺪ ﻳﺴﺄل ﺳﺎﺋﻞ ﻋﻦ اﻟﻔﺎﺋﺪة اﻟﻤﺠﻨﺎﻩ ﻣﻦ ﺗﻤﺮﻳﺮ ﺑﺎرﻣﻴﺘﺮات )‬ ‫‪MsgBox Text‬‬
‫‪End Sub‬‬
‫ﻧﺼﻴﺔ ( إﻟﻰ داﺧﻞ اﻟﺒﺮﻧﺎﻣﺞ و هﺬا ﺳﺆال راﺋﻊ ﻓﻲ ﺣﺪ ذاﺗﻪ و اﻹﺟﺎﺑﺔ‬
‫ﻋﻠﻴﻪ ﺳﺘﻌﻮد ﺑﻔﺎﺋﺪة أروع ﺑﺈذن اﷲ ﺗﻌﺎﻟﻰ ! ‪ ..‬ﺣﻴﺚ أن ذﻟﻚ ﻳﻔﻴﺪك ﻓﻲ‬
‫و ﻟﻜﻲ ﺗﺴﺘﺪﻋﻲ اﻹﺟﺮاء اﻟﺴﺎﺑﻖ ﻳﻨﺒﻐﻲ أن ﺗﻘﻮم ﺑﺘﻤﺮﻳﺮ اﻟﻨﺺ اﻟﺬي ﺗﺮﻳﺪ‬
‫ﺗﺨﺼﻴﺺ ﻃﺮﻳﻘﺔ ﺗﺸﻐﻴﻞ ﺑﺮﻧﺎﻣﺠﻚ ﺑﺤﻴﺚ ﻳﻌﻤﻞ اﻟﺒﺮﻧﺎﻣﺞ ﺑﺄآﺜﺮ ﻣﻦ‬
‫ﻋﺮﺿﻪ ﻓﻲ ﻣﺮﺑﻊ ﺣﻮار ﺑﺎﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ‪:‬‬
‫ﺻﻴﻐﺔ اﻋﺘﻤﺎدا ﻋﻠﻰ اﻟﺒﺮاﻣﺘﻴﺮ اﻟﻤﻤﺮ إﻟﻴﻪ و ﻳﻌﺘﻤﺪ اﻟﻮﻳﻨﺪوز ﻋﻠﻰ هﺬا‬
‫اﻟﻤﺒﺪأ ﺑﻄﺮﻳﻘﺔ ﻗﺪ ﻻ ﺗﺘﺨﻴﻠﻬﺎ ﻓﺠﻤﻴﻊ اﻟﺒﺮاﻣﺞ ﺗﻘﺮﻳﺒًﺎ ﺗﺴﺘﺨﺪم هﺬا اﻟﻤﺒﺪأ و‬
‫"‪myMsg "Welcome Brothers‬‬
‫ﺳﻴﻜﻮن ﻣﻦ اﻟﻤﻔﻴﺪ ﻟﻚ أﻳﻀًﺎ ﻣﻦ أن ﺗﺘﻌﺮف ﻋﻠﻴﻪ وﺗﺴﺘﻠﻐﻪ ﻓﻲ ﺑﺮاﻣﺠﻚ‬
‫اﻟﻤﺴﺘﻘﺒﻠﻴﺔ إن ﺷﺎء اﷲ ﺗﻌﺎﻟﻰ‪.‬‬
‫ﺗﺠﺮﺑﺘﻨﺎ اﻟﺴﺎﺑﻘﺔ آﺎﻧﺖ ﺟﻤﻴﻠﺔ ﻟﻠﻐﺎﻳﺔ ‪ ...‬دﻋﻨﺎ اﻵن ﻧﻐﻴﻴﺮ ﺗﻠﻚ اﻟﺘﺠﺮﺑﺔ‬
‫ﻼ‪:‬‬
‫ﻗﻠﻴ ً‬
‫دﻋﻨﺎ ﻧﻀﺮب أﻣﺜﻠﺔ!‬
‫‪ .1‬ﻗﻢ ﺑﻔﺘﺢ ﻣﺸﺮوع ﺟﺪﻳﺪ‬
‫‪ .2‬ﻣﻦ اﻟﻘﺎﺋﻤﺔ ‪ Project‬أﺧﺘﺮ اﻟﺒﻨﺪ ‪Remove Form1‬‬
‫ﻋﻨﺪﻣﺎ ﺗﻘﻮم ﺑﺎﻟﻨﻘﺮ ﻋﻠﻰ ﺑﺮﻧﺎﻣﺞ اﻟﻮورد ﻓﺄن هﺬا اﻟﺒﺮﻧﺎﻣﺞ ﺑﺒﺴﺎﻃﺔ ﻳﺘﻢ‬
‫ﺗﻨﻔﻴﺬﻩ وهﺬا ﺷﻲ ﺟﻤﻴﻞ ‪ ...‬ﻏﻴﺮ أﻧﻚ إذا ﻗﻤﺖ ﺑﺎﻟﻨﻘﺮ ﻋﻠﻰ أي ﻣﻠﻒ‬ ‫‪ .3‬ﻣﻦ اﻟﻘﺎﺋﻤﺔ ‪ Project‬أﻳﻀًﺎ أﺧﺘﺮ اﻟﺒﻨﺪ ‪Add Module‬‬
‫ﺑﺈﻣﺘﺪاد ﺗﺎﺑﻊ ﻟﻠﻮرد ) ‪ ( Doc.‬ﻓﺄن اﻟﺬي ﺳﻴﺤﺪث ﺣﻴﻨﻬﺎ أن اﻟﻮورد ﺳﻮف‬ ‫‪ .4‬ﻓﻲ اﻟﻤﻮدﻳﻮل اﻟﺠﺪﻳﺪ ﻗﻢ ﺑﻜﺘﺎﺑﺔ اﻟﻜﻮد اﻟﺘﺎﻟﻲ‪:‬‬
‫ﻳﻔﺘﺢ أﻳﻀًﺎ وﻟﻜﻦ ﻣﻊ ﺗﺸﻐﻴﻞ اﻟﻤﻠﻒ اﻟﺬي ﻧﻘﺮت ﻋﻠﻴﻪ ‪ ..‬اﻟﻴﺲ آﺬﻟﻚ ؟‬
‫ﻛﻮد‪:‬‬
‫إذا آﻨﺖ ﻣﻌﻲ ﻓﻲ ﻣﺎ ﺳﺒﻖ ﻓﺄﻋﻠﻢ أﺧﻲ أن اﻟﺬي ﺣﺪث هﻮ أن اﻟﻮﻳﻨﺪوز‬ ‫)(‪Sub Main‬‬
‫ﻓﻲ اﻟﻤﺮة اﻷوﻟﻰ ﻗﺎم ﺑﺘﺸﻐﻴﻞ اﻟﻮورد دون ﺗﻤﺮﻳﺮ أي ﺑﺎرﻣﻴﺘﺮات ﻷﻧﻚ‬ ‫‪Msgbox Command‬‬
‫ﻗﺪ ﻧﻘﺮت ﻋﻠﻴﻪ ﻣﺒﺎﺷﺮة و ﻟﻜﻨﻚ ﻓﻲ اﻟﻤﺮة اﻟﺜﺎﻧﻴﺔ ﻧﻘﺮت ﻋﻠﻰ ﻣﻠﻒ ﺗﺎﺑﻊ‬ ‫‪End Sub‬‬
‫ﻟﻠﻮرد ﻓﻘﺎم ﻧﻈﺎم اﻟﺘﺸﻐﻴﻞ ﺑﺘﻨﻔﻴﺬ ﺑﺮﻧﺎﻣﺞ اﻟﻮورد و ﻟﻜﻦ ﻣﻊ ﺗﻤﺮﻳﺮ أﺳﻢ‬
‫اﻟﻤﻠﻒ اﻟﺬي ﻧﻘﺮت ﻋﻠﻴﻪ أﻧﺖ وﻗﺎم ﺑﺘﺨﺰﻳﻨﻪ ﻓﻲ اﻟﻤﺘﻐﻴﺮ ‪Command‬‬ ‫‪ .5‬ﻣﻦ اﻟﻘﺎﺋﻤﺔ ‪ File‬ﻗﻢ ﺑﺘﺮﺟﻤﺔ اﻟﻤﺸﺮوع ﺑﺈﺳﻢ ‪ myMsg.exe‬و‬
‫‪ ...‬و هﻨﺎ ﻳﺠﺐ أن ﺗﻔﻬﻢ أن اﻟﻤﺒﺮﻣﺠﻴﻦ ) أﻣﺜﺎﻟﻚ ﻋﺰﻳﺰي ( اﻟﺬﻳﻦ‬ ‫أﺣﻔﻈﻪ ﻓﻲ اﻟﻤﺠﻠﺪ اﻟﺮﺋﻴﺴﻲ ﻟﻠﺴﻮاﻗﺔ \‪C:‬‬
‫ﺻﻤﻤﻮا اﻟﻮورد ﻗﺎﻣﻮا ﺑﻌﻤﻞ ﻓﺤﺺ ﺑﺴﻴﻂ ﻟﻠﻤﺘﻐﻴﺮ ‪ Command‬ﻋﻨﺪ‬ ‫‪ .6‬أﻏﻠﻖ ﻣﺸﺮوﻋﻚ و اﺗﺠﻪ إﻟﻰ ﻗﺎﺋﻤﺔ اﺑﺪأ ‪ Start‬ﺛﻢ اﺧﺘﺮ ﻣﻨﻬﺎ ﺗﺸﻐﻴﻞ‬
‫ﺗﺸﻐﻴﻞ اﻟﻮرد ﺑﺤﻴﺚ ﻳﺘﻢ اﻟﺘﺄآﺪ ﻣﻦ اﻧﻪ ﻻ ﻳﺤﻤﻞ أي ﻗﻴﻤﺔ ﻣﻤﺮرة ( أﺳﻢ‬ ‫‪Run‬‬
‫ﻣﻠﻒ ( ﻓﺎن آﺎن ﻳﺤﻤﻞ ﻗﻴﻤﺔ ﻳﺘﻢ ﻋﻨﺪهﺎ ﻓﺘﺢ اﻟﻤﻠﻒ اﻟﺬي ﺛﻢ ﺗﻤﺮﻳﺮ أﺳﻤﻪ‪.‬‬ ‫‪ .7‬أآﺘﺐ اﻟﺴﻄﺮ اﻟﺘﺎﻟﻲ ﻓﻲ ﻣﺮﺑﻊ اﻟﺤﻮار ﺛﻢ اﻧﻘﺮ ﻋﻠﻰ ﻣﻮاﻓﻖ‪:‬‬

‫و إن آﻨﺖ ﻣﻬﺘﻤﺎً ﺑﻤﻮﺿﻮع ارﺗﺒﺎﻃﺎت اﻟﻤﻠﻔﺎت وآﻴﻒ ﺗﺼﻨﻊ ارﺗﺒﺎط‬ ‫"‪C:\myMsg "Welcome Brothers‬‬
‫ﺧﺎص ﺑﺒﺮﻧﺎﻣﺠﻚ ﻓﻠﻌﻞ اﻟﺮاﺑﻂ اﻟﺘﺎﻟﻲ أن ﻳﻜﻮن ﻣﻔﻴﺪًا‬

‫‪http://www.vb4arab.com/vb/showthread.php?t=9‬‬ ‫إذا آﺘﺐ اﷲ ﻟﻬﺬا اﻟﺒﺮﻧﺎﻣﺞ اﻟﻨﺠﺎح ﻓﺈﻧﻚ ﺳﺘﺮى ﻣﺮﺑﻊ ﺣﻮار ﻳﻈﻬﺮ ﻟﻚ ﻓﻴﻪ‬
‫اﻟﻨﺺ اﻟﺬي آﺘﺒﺘﻪ وهﻮ ‪Welcome Brothers ..‬‬
‫اﻟﻤﺰﻳﺪ ﻣﻦ اﻷﻣﺜﻠﺔ‬

‫أن اﻟﻘﻴﻢ اﻟﻤﻤﺮرة ﻟﻠﺒﺮﻧﺎﻣﺞ ﻣﻔﻴﺪة أآﺜﺮ ﻣﻤﺎ ﻗﺪ ﺗﺘﺼﻮر ﻟﻬﺬا أﺳﻤﺢ ﻟﻲ أن‬
‫اﻏﺮس هﺬا اﻟﻤﺒﺪأ ﻓﻲ رأﺳﻚ ﻏﺮﺳًﺎ‪ ...‬ﻓﺈذا ﻃﻠﺒﺖ ﻣﻨﻚ أن ﺗﻘﻮم ﺑﺘﺸﻐﻴﻞ‬
‫ﻣﺴﺘﻜﺸﻒ اﻟﻮﻳﻨﺪوز ﺑﻮاﺳﻄﺔ زر ﻓﻲ اﻟﻔﻴﺠﻮال ﺑﻴﺴﻚ ﻓﺈﻧﻚ ﻋﻨﺪهﺎ ﺳﺘﻘﻮم‬
‫ﺑﻜﺘﺎﺑﺔ اﻟﺘﺎﻟﻲ‪:‬‬
‫‪67‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫ﺗﻤﺮﻳﺮ ﺑﺎرﻣﻴﺘﺮات إﻟﻰ داﺧﻞ اﻟﺒﺮﻧﺎﻣﺞ ﻣﻦ اﻟﻮﻳﻨﺪوز‬
‫رﻏﻴﺪ ﻃﻴﺐ ‪ ‬‬ ‫ﻛﻮد‪:‬‬
‫ﺳﻴﻘﻮم اﻟﺴﻄﺮ اﻟﺴﺎﺑﻖ ﺑﻔﺘﺢ اﻻآﺴﺒﻠﻮرر ﻣﻊ ﺗﺤﺪﻳﺪ اﻟﻤﻠﻒ اﻟﻤﻤﺮ ﺑﻌﺪ‬ ‫‪Shell "explorer.exe", vbNormalFocus‬‬
‫اﻟﺒﺮاﻣﻴﺘﺮ ‪ Select‬وهﻮ ﻓﻲ ﺣﺎﻟﺘﻨﺎ هﺬﻩ اﻟﻤﻠﻒ ‪C:\Autoexec.bat ...‬‬ ‫ﻃﺒﻌًﺎ هﺬا ﻷن ﺑﺮﻧﺎﻣﺞ اﻟﻤﺴﺘﻜﺸﻒ اﺳﻤﻪ ‪ Explorer.exe‬وﻷﻧﻪ ﻣﻦ‬
‫و ﻣﺜﻼ ﻟﺘﺤﺪﻳﺪ اﻟﻤﻠﻒ ‪ Win.ini‬اﻟﻤﻮﺟﻮد ﻓﻲ ﻣﺠﻠﺪ اﻟﻮﻳﻨﺪوز ﻳﻤﻜﻦ آﺘﺎﺑﺔ‬ ‫ﻼ و اآﺘﻔﻴﻨﺎ ﺑﺎﺳﻤﻪ ﻓﻘﻂ‬
‫ﻣﻠﻔﺎت اﻟﻨﻈﺎم ﻓﻠﻢ ﻧﻀﻄﺮ إﻟﻰ آﺘﺎﺑﺔ ﻣﺴﺎرﻩ آﺎﻣ ً‬
‫اﻟﺘﺎﻟﻲ‪:‬‬
‫‪ ‬‬ ‫‪ ‬‬ ‫و ﻷﻧﻨﻲ ﺳﺄﻓﺘﺮض اﻧﻚ آﻨﺖ ﻣﺮآﺰاً ﻋﻠﻰ آﻼﻣﻲ اﻟﺴﺎﺑﻖ و اﺳﺘﻮﻋﺒﺖ‬
‫ﻛﻮد‪:‬‬ ‫ﻣﻌﻈﻤﻪ ﻓﺄﻧﺖ ﺗﻌﻠﻢ ﺑﻔﻀﻞ اﷲ أن اﻟﻜﻮد اﻟﺴﺎﺑﻖ ﻗﺎم ﺑﺘﺸﻐﻴﻞ ﺑﺮﻧﺎﻣﺞ اﻟـ‬
‫‪Shell "explorer.exe‬‬ ‫‪ explorer.exe‬دون أن ﻳﻤﺮر أﻟﻴﻪ أي ﺑﺎرﻣﻴﺘﺮات ) ﻻن اﻟﺘﻤﺮﻳﺮ‬
‫‪/Select,C:\Windows\win.ini", vbNormalFocus‬‬ ‫ﻳﻜﻮن ﺑﻮﺿﻊ ﻓﺮاغ ﺑﻌﺪ اﺳﻢ اﻟﺒﺮﻧﺎﻣﺞ ﺛﻢ اﻟﻨﺺ اﻟﻤﺮاد ﺗﻤﺮﻳﺮﻩ آﻤﺎ ﻋﻤﻠﻨﺎ‬
‫ﻣﻊ ﻋﺒﺎرة ‪ Welcome Borthers‬ﻓﻲ اﻟﺴﺎﺑﻖ ( ‪ ...‬و اﻵن إذا ﺟﺮﺑﺖ‬
‫اﺳﺘﺒﺪال اﻟﻜﻮد اﻟﺴﺎﺑﻖ ﺑﺎﻟﺴﻄﺮ اﻟﺘﺎﻟﻲ‪:‬‬
‫إﻟﻰ ﺑﺮاﻣﺞ أﺧﺮى‪..‬‬
‫ﺑﻌﺪ اﻟﻠﻤﺤﺔ اﻟﺴﺮﻳﻌﺔ ﻋﻦ اﻟﻤﺘﺼﻔﺢ ﻗﻢ ﺑﻜﺘﺎﺑﺔ اﻟﺘﺎﻟﻲ‪:‬‬ ‫ﻛﻮد‪:‬‬
‫‪Shell "explorer.exe /e,C:\", vbNormalFocus‬‬
‫ﻛﻮد‪:‬‬ ‫إذا ﺟﺮت اﻷﻣﻮر ﺑﺸﻜﻞ ﺳﻠﻴﻢ ﻓﺎن اﻟﺬي ﺳﻴﺤﺪث أن اﻟﻤﺴﺘﻜﺸﻒ ﺳﻮف‬
‫‪Shell "Notepad.exe", vbNormalFocus‬‬ ‫ﻳﻔﺘﺢ و ﻟﻜﻦ اﻟﺘﺮآﻴﺰ ﺳﻮف ﻳﻜﻮن ﻋﻠﻰ اﻟﺴﻮاﻗﺔ ﺳﻲ ) ‪ ( Drive C‬و‬
‫ﻻ ﻳﺨﻔﻰ ﻋﻠﻰ أﺣﺪ أن هﺬا ﺳﻮف ﻳﺸﻐﻞ ﺑﺮﻧﺎﻣﺞ اﻟﻤﻔﻜﺮة‪ ...‬و ﻟﻜﻲ ﻧﻘﻮم‬ ‫اﻟﺴﺒﺐ ﻓﻲ ذﻟﻚ ﻳﻌﻮد إﻟﻰ أﻧﻨﺎ ﻗﺪ ﻗﻤﻨﺎ ﺑﺘﻤﺮﻳﺮ اﻟﺒﺮاﻣﻴﺘﺮ "‪ "\:C‬ﺑﻌﺪ اﺳﻢ‬
‫ﻼ‪:‬‬
‫ﺑﺘﺸﻐﻴﻞ ﻣﻠﻔﺎت ﺑﺎﺳﺘﺨﺪام اﻟﻤﻔﻜﺮة ﻣﺒﺎﺷﺮة اآﺘﺐ ﻣﺜ ً‬ ‫اﻟﺒﺮﻧﺎﻣﺞ ‪ ...‬ﻓﺎﻟﺠﺰء ‪ e/‬ﻳﺮﻣﺰ اﺧﺘﺼﺎرًا ﻟـ ‪ Explore‬وﻣﻌﻨﺎﻩ ) ﻗﻢ‬
‫ﺑﺘﺼﻔﺢ ) ﺛﻢ ﺗﺄﺗﻲ اﻟﻔﺎﺻﻠﺔ ﺑﻌﺪ ذﻟﻚ ﺛﻢ اﻟﺪراﻳﻒ ﺳﻲ ) ‪ ( \:C‬و ﻣﻌﻨﺎﻩ ﻗﻢ‬
‫ﻛﻮد‪:‬‬
‫ﻼ أن ﺗﺘﺼﻔﺢ اﻟﺪراﻳﻒ ‪ D‬اآﺘﺐ‬ ‫ﺑﺘﺼﻔﺢ اﻟﺪراﻳﻒ ‪ C‬وإذا أردت ﻣﺜ ً‬
‫‪Shell "Notepad.exe C:\Autoexec.bat",‬‬
‫‪vbNormalFocus‬‬ ‫اﻟﺴﻄﺮ‪:‬‬
‫ﺳﻮف ﻳﻘﻮم اﻟﺴﻄﺮ اﻟﺴﺎﺑﻖ ﺑﺘﺸﻐﻴﻞ اﻟﻤﻔﻜﺮة ﻣﻊ ﻓﺘﺢ اﻟﻤﻠﻒ‬
‫‪ Autoexec.bat‬ﻣﺒﺎﺷﺮة ﻷﻧﻨﺎ ﻗﻤﻨﺎ ﺑﺘﻤﺮﻳﺮﻩ ﻟﻠﻤﻔﻜﺮة آﺒﺮاﻣﻴﺘﺮ‬ ‫ﻛﻮد‪:‬‬
‫وإذا آﻨﺖ ﻗﺪ ﻓﻜﺮت ﻳﻮﻣًﺎ ﺑﻔﺘﺢ ﻟﻮﺣﺔ اﻟﺘﺤﻜﻢ ﺑﺎﻟﻜﻮد ﻓﻴﻜﻔﻴﻚ أن ﺗﻌﺮف أن‬ ‫‪Shell "explorer.exe /e,D:\", vbNormalFocus‬‬
‫ﻟﻮﺣﺔ اﻟﺘﺤﻜﻢ ﻣﺎ هﻲ إﻻ ﻋﺒﺎرة ﻋﻦ ﺑﺮﻧﺎﻣﺞ اﺳﻤﻪ ‪Control.exe‬‬ ‫وآﺬﻟﻚ اﻟﺤﺎل إذا أردت ﺗﺼﻔﺢ ﻣﺠﻠﺪ ﻣﻌﻴﻦ‪ ..‬ﻓﻤﺎ ﻋﻠﻴﻚ إﻻ أن ﺗﻘﻮم‬
‫وﺑﺎﻟﺘﺎﻟﻲ ﻟﺘﺸﻐﻴﻠﻪ اآﺘﺐ‪:‬‬ ‫ﺑﺘﻤﺮﻳﺮ اﻟﺮﻣﺰ ‪ e/‬و اﻟﺬي ﻳﻌﺮﻓﻪ اﻟـ ‪ Explorer‬ﻋﻠﻰ اﻧﻪ أﻣﺮ ﺑﺎﻟﺘﺼﻔﺢ‬
‫ﻛﻮد‪:‬‬ ‫ﻼ ﻟﺘﺼﻔﺢ ﻣﺠﻠﺪ اﻟﻮﻳﻨﺪوز اآﺘﺐ‬
‫ﺛﻢ ﻳﻠﻲ ذﻟﻚ اﻟﻤﺠﻠﺪ اﻟﻤﺮاد ﺗﺼﻔﺤﻪ ﻓﻤﺜ ً‬
‫‪Shell "Control.exe", vbNormalFocus‬‬ ‫اﻟﺘﺎﻟﻲ‪:‬‬
‫و ﻻن ﻟﻮﺣﺔ اﻟﺘﺤﻜﻢ ﺗﺘﻌﺎﻣﻞ ﻣﻊ ﻣﻠﻔﺎت ذوات اﻟﻼﺣﻘﺔ ‪ CPL‬ﻓﻴﻤﻜﻨﻚ إذا‬
‫ﻛﻮد‪:‬‬
‫ﺗﺠﺮﻳﺐ اﻟﺴﻄﺮ اﻟﺘﺎﻟﻲ‪:‬‬
‫‪Shell "explorer.exe /e,C:\Windows",‬‬
‫‪vbNormalFocus‬‬
‫ﻛﻮد‪:‬‬
‫وﻣﺎﺳﺒﻖ ﻳﻌﻨﻲ أن ﻣﺘﺼﻔﺢ اﻟﻮﻳﻨﺪوز ﻳﻔﺤﺺ اﻟﺒﺎرﻣﺘﺮات اﻟﻤﻤﺮرة إﻟﻴﻪ‬
‫‪Shell "Control.exe Desk.Cpl",‬‬ ‫ﻟﻠﺘﺄآﺪ ﻣﻦ ﻧﻮع اﻟﻌﺮض اﻟﻤﻄﻠﻮب ﺛﻢ ﻳﻘﻮم ﺑﻄﺮﻳﻘﺔ اﻟﻌﺮض اﻟﻤﻨﺎﺳﺒﺔ‬
‫‪vbNormalFocus‬‬
‫ﺑﺤﺴﺐ ﻃﻠﺒﻚ أﻧﺖ‬
‫وﺳﻮف ﺗﺮى أن ﺧﺼﺎﺋﺺ ﺳﻄﺢ اﻟﻤﻜﺘﺐ ﻗﺪ ﻇﻬﺮت أﻣﺎﻣﻚ ﻻن اﻟﻤﻠﻒ‬
‫اﻟﻤﺴﺆول ﻋﻨﻬﺎ هﻮ ‪ Desk.cpl‬و اﻟﺬي ﻳﺘﻢ ﻓﺘﺤﻪ ﺑﻮاﺳﻄﺔ ﻟﻮﺣﺔ اﻟﺘﺤﻜﻢ‬
‫‪ Control Panel‬أو اﻟـ ‪) Control.exe‬آﻤﺎ ﻋﺮﻓﻨﺎ ﻗﺒﻞ ﻗﻠﻴﻞ‪(...‬‬
‫اﻟﻤﺰﻳﺪ ﻋﻦ اﻟﻤﺘﺼﻔﺢ‪...‬‬

‫دﻋﻨﺎ ﻧﺮﺟﻊ اﻟﻰ اﻟﻮراء ﻗﻠﻴﻼً‪...‬‬ ‫ﻗﺒﻞ أن اﻧﺘﻘﻞ إﻟﻰ أﻣﺜﻠﺔ أﺧﺮى ﻗﺪرت اﻧﻪ رﺑﻤﺎ ﻳﻜﻮن ﻣﻦ اﻟﻤﻔﻴﺪ أن ﺗﻌﻠﻢ‬
‫ﻼ أن هﻨﺎك اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﺒﺮاﻣﻴﺘﺮات اﻟﻤﻤﻜﻦ ﺗﻤﺮﻳﺮهﺎ إﻟﻰ اﻟﺒﺮﻧﺎﻣﺞ‬ ‫ﻣﺜ ً‬
‫وﻋﻠﻴﻚ اﻟﺒﺤﺚ ﻟﻤﻌﺮﻓﺔ اﻟﺒﺮاﻣﺘﺮات اﻟﺘﻲ ﻳﺘﻘﺒﻠﻬﺎ آﻞ ﺑﺮﻧﺎﻣﺞ ﻻن اﻷﻣﺮ‬
‫ﺑﻌﻴﺪًا ﻋﻦ ﺑﺮاﻣﺞ اﻟﻮﻳﻨﺪوز و ﺑﺎﻟﻌﻮدة إﻟﻰ اﻟﻌﻬﺪ اﻟﻘﺪﻳﻢ ﻟﻠﺪوز ﻓﺄن اﻟﻤﺒﺪأ‬
‫ﻟﻴﺲ ﻣﺤﺪدًا و ﻳﺘﻮﻗﻒ ﻋﻠﻰ اﻟﻤﺒﺮﻣﺞ ﻧﻔﺴﻪ ﻓﻠﻜﻞ ﺑﺮﻧﺎﻣﺞ ﺑﺎرﻣﺘﺮاﺗﻪ‬
‫ﻧﻔﺴﻪ آﺎن وﻻزال ﻣﻮﺟﻮدًا ﻓﻌﻨﺪﻣﺎ ﺗﻜﺘﺐ ﻓﻲ ﻣﺤﺚ اﻟﺪوز اﻷﻣﺮ ‪CLS‬‬
‫اﻟﺨﺎﺻﺔ ‪ ...‬وﻣﻦ اﻟﻤﻔﻴﺪ أﻳﻀﺎ أن ﺗﻌﺮف أن ﻣﺒﺮﻣﺞ اﻹآﺴﺒﻠﻮرر ﻗﺎم‬
‫ﻓﺎن اﻟﺸﺎﺷﺔ اﻟﺘﻲ أﻣﺎﻣﻚ ﺳﻮف ﻳﺘﻢ ﺗﺼﻔﻴﺘﻬﺎ ﻷﻧﻪ اﻷﻣﺮ اﻟﺨﺎص ﺑﻤﺴﺢ‬
‫ﺑﺠﻌﻠﻪ ﻳﻔﺤﺺ ﺑﺎرﻣﻴﺘﺮ ﺁﺧﺮ اﺳﻤﻪ ‪ Select‬ﻟﻠﺘﺄآﺪ ﻣﻦ اﻧﻚ ﺗﺮﻳﺪ ﺗﺤﺪﻳﺪ‬
‫اﻟﺸﺎﺷﺔ ﻓﻲ اﻟﺪوز و إذا ﻗﻤﺖ ﺑﻜﺘﺎﺑﺔ أي أﻣﺮ ﺑﻌﺪ هﺬا اﻷﻣﺮ ﻓﺎن اﻟﻨﺎﺗﺞ‬
‫ﻼ ﺧﺬ اﻟﻤﺜﺎل اﻟﺒﺴﻴﻂ اﻟﺘﺎﻟﻲ‪:‬‬
‫ﻣﻠﻒ ﻣﻌﻴﻦ ﻣﺜ ً‬
‫ﺳﻮف ﻳﻜﻮن ﻣﺠﺮد ﻣﺴﺢ اﻟﺸﺎﺷﺔ ﻓﻘﻂ‪:‬‬
‫ﻛﻮد‪:‬‬
‫‪CLS Rgheed Altaib‬‬
‫‪Shell "explorer.exe‬‬
‫‪/Select,C:\Autoexec.bat",‬‬
‫ﻓﻠﻦ ﺗﺆﺛﺮ اﻟﻌﺒﺎرة ‪ Rgheed Altaib‬ﻋﻠﻰ اﻷﻣﺮ ﺑﺸﻲء ﻷﻧﻪ ﺑﺒﺴﺎﻃﺔ‬ ‫‪vbNormalFocus‬‬
‫ﻳﺘﺠﺎهﻞ اﻟﺒﺎرﻣﺘﺮات اﻟﻤﻤﺮرة إﻟﻴﻪ أﻣﺎ إذا آﺘﺒﺖ اﻷﻣﺮ‬

‫‪  Dir‬‬

‫‪68‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫ﺗﻤﺮﻳﺮ ﺑﺎرﻣﻴﺘﺮات إﻟﻰ داﺧﻞ اﻟﺒﺮﻧﺎﻣﺞ ﻣﻦ اﻟﻮﻳﻨﺪوز‬
‫رﻏﻴﺪ ﻃﻴﺐ ‪ ‬‬ ‫ﻓﺎﻧﻪ ﺳﻮف ﻳﻘﻮم ﺑﻌﺮض ﻣﺤﺘﻮﻳﺎت اﻟﻤﺠﻠﺪ اﻟﺤﺎﻟﻲ أﻣﺎﻣﻚ و أﻣﺎ إذا أﻋﺪت‬
‫ﻟﻤﺎذا ﻻ ﻧﻘﻮم ﻧﺤﻦ ﺑﺎﻟﺘﺠﺮﺑﺔ ؟‬ ‫ﺻﻴﺎﻏﺔ اﻷﻣﺮ ‪ DIR‬ﻟﻴﺼﺒﺢ آﺎﻟﺘﺎﻟﻲ‪:‬‬

‫ﻟﻘﺪ ذهﺒﻨﺎ ﺑﻌﻴﺪًا ﻓﻲ وﺻﻒ ﺑﺮاﻣﺞ ﻟﻴﺴﺖ ﻣﻠﻜﻨﺎ و ﺳﻴﻜﻮن ﻣﻦ اﻟﻤﻔﻴﺪ أن‬ ‫‪DIR /o:-n‬‬
‫ﻧﺠﺮب ﻧﺤﻦ ﺷﻴﺌًﺎ ﻣﻔﻴﺪًا ﻟﻨﺎ‪ ..‬وإذا آﻨﺖ ﺗﺘﺬآﺮ اﻟﺒﺮﻧﺎﻣﺞ اﻟﻈﺮﻳﻒ‬
‫ﻼ‬
‫‪ myMsg‬اﻟﺬي ﻗﻤﻨﺎ ﺑﺘﺼﻤﻴﻤﻪ ﻓﻲ أول اﻟﻤﻘﺎل ‪ ...‬ﻓﺤﺒﺬا ﻟﻮ ﻋﺪﻟﻨﺎﻩ ﻗﻠﻴ ً‬ ‫ﻓﺎﻧﻚ ﺳﻮف ﺗﺮى أن اﻟﻨﺘﺎﺋﺞ اﻟﻈﺎهﺮة أﻣﺎﻣﻚ هﻲ ﺑﺘﺮﺗﻴﺐ ﺗﻨﺎزﻟﻲ ﻷن‬
‫اﻟﻜﻮد اﻟﺬي ﻓﻴﻪ ﻣﻦ‪:‬‬ ‫اﻟﺒﺮاﻣﻴﺘﺮ ‪ O‬ﻳﺮﻣﺰ ﻟﻠﺘﺮﺗﻴﺐ ) ‪ ( Order‬و اﻟﺤﺮف ‪ n‬ﻳﻌﻨﻲ ﺗﺼﺎﻋﺪي‬
‫‪ ‬‬ ‫آﻲ ﻳﺼﺒﺢ أآﺜﺮ ﻓﺎﺋﺪة‪ ...‬ﻗﻢ ﻓﻘﻂ ﺑﺘﻌﺪﻳﻞ ‪ ‬‬
‫ﻛﻮد‪:‬‬ ‫وأﻣﺎ إذا ﺳﺒﻘﺘﻬﺎ ﺑﻌﻼﻣﺔ ﺳﺎﻟﺒﺔ ﻓﻴﻌﻨﻲ ذﻟﻚ ﻋﻜﺲ اﻟﺘﺮﺗﻴﺐ‬
‫وآﺬﻟﻚ اﻷﻣﺮ إذا آﺘﺒﺖ‪:‬‬
‫)(‪Sub Main‬‬
‫‪MsgBox Command‬‬
‫‪End Sub‬‬ ‫‪DIR /a:h‬‬
‫ﻟﻴﺼﺒﺢ ﺑﺎﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ‪:‬‬
‫هﺬا اﻷﻣﺮ ﺳﻮف ﻳﻌﺮض ﺟﻤﻴﻊ اﻟﻤﻠﻔﺎت اﻟﻤﺨﻔﻴﺔ ﻟﻚ اﻵن اﻟﺤﺮف ‪a‬‬
‫ﻛﻮد‪:‬‬ ‫اﺧﺘﺼﺎر ﻟـ ) ‪ ( Attribute‬و اﻟﺘﻲ ﺗﻌﻨﻲ ﺻﻔﺔ اﻟﻤﻠﻒ و اﻟﺤﺮف ‪h‬‬
‫ﻳﺮﻣﺰ ﻟﻠﻤﻠﻔﺎت اﻟﻤﺨﻔﻴﺔ ‪Hidden‬‬
‫)(‪Sub Main‬‬
‫‪Clipboard.Clear‬‬
‫‪Clipboard.SetText Command‬‬ ‫وﻳﻨﻄﺒﻖ اﻟﻤﺒﺪأ ﻋﻠﻰ ﺑﺎﻗﻲ أواﻣﺮ اﻟﺪوز و اﻟﺘﻲ ﻟﻴﺴﺖ إﻻ ﺑﺮاﻣﺞ ﻋﺎدﻳﺔ ﻻ‬
‫‪End Sub‬‬ ‫ﺗﺨﺘﻠﻒ ﻋﻦ ﺑﺮاﻣﺠﻨﺎ ﻓﻲ اﻟﻔﻴﺠﻮال إﻻ ﺑﺄﻧﻬﺎ ﺧﺎﺻﺔ ﺑﺒﻴﺌﺔ اﻟﺪوز ‪ ...‬وﻟﺬا‬
‫اﻟﺘﻌﺪﻳﻞ اﻟﺬي ﻗﻤﺖ ﺑﻪ أﻧﺎ هﻨﺎ هﻮ ﻓﻘﻂ ﺗﺼﻔﻴﺔ ﻣﺤﺘﻮﻳﺎت‬ ‫ﻓﻴﻨﺒﻐﻲ ﻋﻠﻴﻚ ﻋﻨﺪﻣﺎ ﺗﺮى أﻣﺮ ﻣﺜﻞ‪:‬‬
‫اﻟﺤﺎﻓﻈﺔ )ذاآﺮة اﻟﻮﻳﻨﺪوز( ﺛﻢ ﻗﻤﺖ ﺑﻨﺴﺦ ﻣﺤﺘﻮﻳﺎت اﻟﻤﺘﻐﻴﺮ‬
‫‪) Command‬اﻟﺬي ﻳﺤﺘﻮي ﻋﻠﻰ اﻟﺒﺎرﻣﺘﺮات اﻟﻤﻤﺮرة ﻟﻠﺒﺮﻧﺎﻣﺞ (‬ ‫‪DEL C:\myFile.txt‬‬
‫إﻟﻴﻬﺎ و اﻵن ﻗﻢ ﺑﺘﺮﺟﻤﺔ هﺬا اﻟﻤﺸﺮوع إﻟﻰ ﻣﻠﻒ ‪ exe‬و اﺟﻌﻞ اﺳﻤﻪ‬ ‫أﻧﺖ ﺗﻔﻬﻢ ﺑﻮﺿﻮح أن اﻷﻣﺮ ‪ DEL‬ﻣﺎ هﻮ إﻻ ﺑﺮﻧﺎﻣﺞ ﺧﺎص ﺑﺎﻟﺪوز و‬
‫‪ myPath‬وﺿﻌﻪ ﻓﻲ اﻟﻤﺠﻠﺪ اﻟﺮﺋﻴﺴﻲ \‪c:‬‬ ‫أن اﺳﻢ اﻟﻤﻠﻒ ‪ c:\myFile.txt‬ﻣﺎ هﻮ إﻻ ﺑﺎرﻣﻴﺘﺮ ﻣﻤﺮر إﻟﻰ اﻟﺒﺮﻧﺎﻣﺞ‬
‫‪DEL‬‬
‫واﻵن ﺳﻨﻘﻮم ﺑﺘﺴﺠﻴﻞ اﻟﺒﺮﻧﺎﻣﺞ ﻓﻲ اﻟﺮﻳﺠﺴﺘﺮي آﻲ ﻳﺘﻢ رﺑﻄﻪ‬
‫ﻣﻊ ﺟﻤﻴﻊ اﻟﻤﻠﻔﺎت ‪ ...‬ﻟﺘﺴﻬﻴﻞ اﻟﻌﻤﻠﻴﺔ ﻋﻠﻴﻚ اﻓﺘﺢ ﻣﺸﺮوع ﺟﺪﻳﺪ وﺿﻊ‬ ‫ﺗﻠﻤﻴﺢ ﻟﻼﺳﺘﻔﺎدة‬
‫اﻟﻜﻮد اﻟﺘﺎﻟﻲ ﻓﻲ زر أﻣﺮ وﻧﻔﺬﻩ‪.‬‬
‫آﻤﺎ ﺳﺒﻖ أن ﻗﻠﻨﺎ أن اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﺒﺮاﻣﺞ ﺗﻀﻊ ﻟﻨﻔﺴﻬﺎ‬
‫ﻛﻮد‪:‬‬ ‫ﺑﺎرﻣﺘﻴﺮات ﻣﻌﻴﻨﺔ ﻟﺘﻔﺤﺼﻬﺎ ﻋﻨﺪ اﻹﻗﻼع و ﻋﻠﻰ أﺳﺎﺳﻬﺎ ﺗﺤﺪد ﻧﻮع‬
‫)(‪Private Sub Command1_Click‬‬ ‫اﻟﻌﺮض أو اﻟﻌﻤﻞ اﻟﺬي ﺳﺘﻨﺘﻬﺠﻪ ﻓﻠﻮ اﻧﻚ اﻃﻠﻌﺖ ﻋﻠﻰ ﻣﻮﺿﻮع ﺷﺎﺷﺎت‬
‫‪Dim shl As Object‬‬ ‫اﻟﺘﻮﻗﻒ اﻟﺬي ﻧﺎﻗﺸﻪ اﻹﺧﻮة ‪ ،‬ﻓﺴﺘﻌﺮف أن ﺷﺎﺷﺔ اﻟﺘﻮﻗﻒ ‪( Screen‬‬
‫)"‪shl = CreateObject("Wscript.Shell‬‬
‫ﻣﺴﺎر\‪shl.regwrite "HKCR\*\Shell‬‬
‫) ‪Saver‬ﻣﺎ هﻲ إﻻ ﺑﺮاﻣﺞ ﻳﻤﻜﻦ أن ﺗﻜﻴﻴﻒ ﻧﻔﺴﻬﺎ ﻟﻠﻌﺮض ﺑﺄآﺜﺮ ﻣﻦ‬
‫"‪\command\", "C:\myPath.exe %l‬اﳌﻠﻒ‬ ‫ﻃﺮﻳﻘﺔ واﺣﺪة اﻋﺘﻤﺎدًا ﻋﻠﻰ اﻟﺒﺎرﻣﺘﺮات اﻟﺘﻲ ﻳﻤﺮرهﺎ ﻟﻬﺎ ﻧﻈﺎم اﻟﺘﺸﻐﻴﻞ‪.‬‬
‫‪End Sub‬‬
‫ﻻ أآﺜﺮ ﺑﺴﺎﻃﺔ‪ ...‬ﻓﻠﻮ اﻧﻚ ﻣﺪﻣﻦ ﻣﺎﺳﻨﺠﺮ‬‫ودﻋﻨﻲ اﺿﺮب ﻣﺜﺎ ً‬
‫اﻟﻜﻮد اﻟﺴﺎﺑﻖ ﺳﻮف ﻳﺴﻬﻞ ﻋﻠﻴﻚ ﺑﻔﻀﻞ اﷲ ﺗﻌﺎﻟﻰ ﺗﻌﺪﻳﻞ اﻟﺮﻳﺠﺴﺘﺮي‬ ‫ﻓﻠﺮﺑﻤﺎ آﻨﺖ ﻗﺪ ﺟﻌﻠﺖ اﻟﻤﺎﺳﻨﺠﺮ )‪ (MSN Messenger‬ﻳﻌﻤﻞ ﺑﻤﺠﺮد‬
‫ﻳﺪوﻳًﺎ‪.‬‬ ‫ﺗﺸﻐﻴﻞ اﻟﻮﻳﻨﺪوز وﺳﻮف وﻳﻨﺒﻐﻲ أن ﺗﻌﺮف آﻴﻒ اﺳﺘﻄﺎع اﻟﻤﺎﺳﻨﺠﺮ أن‬
‫و اﻵن إذا آﻨﺖ ﻗﺪ اﻟﺘﺰﻣﺖ ﺑﺎﺳﻢ اﻟﺒﺮﻧﺎﻣﺞ ‪ myPath.exe‬وآﺬﻟﻚ‬ ‫ﻳﻔﺮق ﺑﻴﻦ ﻧﻘﺮك اﻟﻌﺎدي ﻋﻠﻴﻪ ) وﻋﻨﺪهﺎ ﻳﻔﺘﺢ ﻣﺒﺎﺷﺮة ( و ﺑﻴﻦ ﺗﺸﻐﻴﻠﻪ‬
‫ﻣﺴﺎرﻩ ﻓﻲ اﻟﺴﻮاﻗﺔ ﺳﻲ ‪ ...‬ﻓﻴﻤﻜﻨﻚ أن ﺗﺬهﺐ إﻟﻰ أي ﻣﻠﻒ ﻓﻲ اﻟﻮﻳﻨﺪوز‬ ‫ﻋﻨﺪ اﻹﻗﻼع وﻋﻨﺪهﺎ ﻳﻤﻜﺚ ﻓﻲ اﻟﺨﻠﻔﻴﺔ وﻳﻈﻬﺮ ﻓﻘﻂ رﻣﺰﻩ ﺑﺠﻮار اﻟﺴﺎﻋﺔ‬
‫ﺛﻢ ﺗﻨﻘﺮ ﻋﻠﻴﻪ ﺑﺎﻟﺰر اﻷﻳﻤﻦ وﺳﻮف ﺗﺠﺪ أن أﻣﺮا ﺟﺪﻳﺪًا ﻗﺪ اﻧﻀﺎف إﻟﻰ‬ ‫دون أن ﻳﺰﻋﺠﻚ ؟ ‪ ...‬ﻟﻜﻲ ﺗﻌﺮف اﻟﺴﺒﺐ ﻗﻢ ﺑﺎﻟﺘﺄآﺪ ﻣﻦ اﻟﺒﺮاﻣﺞ اﻟﺘﻲ‬
‫اﻟﻘﺎﺋﻤﺔ ﺑﺈذن اﷲ ﺗﻌﺎﻟﻰ ‪ ...‬اﺳﻤﻪ ) ﻣﺴﺎر اﻟﻤﻠﻒ ( ﻗﻢ ﺑﺎﻟﻨﻘﺮ ﻋﻠﻴﻪ وﺳﻮف‬ ‫ﺗﻌﻤﻞ ﻋﻨﺪ ﺗﺸﻐﻴﻞ ﺟﻬﺎزك ) اآﺘﺐ ‪ msconfig‬ﻓﻲ اﻟﻘﺎﺋﻤﺔ ﺗﺸﻐﻴﻞ و‬
‫ﻳﺨﺰن ﻣﺴﺎر اﻟﻤﻠﻒ اﻟﺤﺎﻟﻲ ﻓﻲ اﻟﺬاآﺮة ﺑﺤﻴﺚ ﻳﻤﻜﻦ أن ﺗﻠﺼﻘﻪ ﺑﻌﺪ ذﻟﻚ‬ ‫اذهﺐ إﻟﻰ ﺁﺧﺮ ﺑﻨﺪ ‪.( Startup‬‬
‫ﻣﺒﺎﺷﺮة ﻓﻲ أي ﺑﺮﻧﺎﻣﺞ ﻟﻼﺳﺘﻔﺎدة ﻣﻨﻪ ‪ ...‬و ﺑﻬﺬا ﻧﻜﻮن ﻗﺪ ﻋﺮﻓﻨﺎ ﻃﺮﻳﻘﺔ‬
‫ﺑﺴﻴﻄﺔ ﻟﻤﻌﺮﻓﺔ اﻟﻤﺴﺎر اﻟﻜﺎﻣﻞ ﻷي ﻣﻠﻒ ﻓﻲ اﻟﻨﻈﺎم‪.‬‬ ‫وﺳﻮف ﺗﺠﺪ ﻗﺎﺋﻤﺔ ﺑﺠﻤﻴﻊ اﻟﺒﺮاﻣﺞ اﻟﺘﻲ ﺗﻌﻤﻞ ﻋﻨﺪ ﺗﺸﻐﻴﻞ‬
‫اﻟﺠﻬﺎز اﺑﺤﺚ ﻋﻦ اﻟﻤﺎﺳﻨﺠﺮ ‪ msnmsgr‬واﻧﻈﺮ إﻟﻰ اﻟﻤﺴﺎر اﻟﻤﻜﺘﻮب!‬
‫ﺳﻮف ﺗﺠﺪ اﻧﻪ ﻗﺪ آﺘﺐ ﻟﻚ ﻣﺴﺎر اﻟﻤﺎﺳﻨﺠﺮ ﻣﺘﺒﻮﻋًﺎ ﺑﺒﺎراﻣﻴﺘﺮ اﺳﻤﻪ‬
‫ﻗﺒﻞ أن أﺗﺮﻛﻚ ﻋﺰﻳﺰي!‬ ‫‪ backgound/‬ﻳﻌﺮف ﻣﻦ ﺧﻼﻟﻪ اﻟﻤﺎﺳﻨﺠﺮ اﻧﻚ ﺗﺮﻳﺪ ﺗﺸﻐﻴﻠﻪ ﻓﻲ‬
‫اﻟﺨﻠﻔﻴﺔ دون إزﻋﺎج اﻟﻤﺴﺘﺨﺪم‪...‬‬
‫ﺑﺎﻟﻔﻌﻞ ﺑﺪأت اﺷﻌﺮ ﺑﺒﻌﺾ اﻹرهﺎق ﻏﻴﺮ أﻧﻲ أﺣﺐ ﻗﺒﻞ أن اذهﺐ أن‬
‫اﺿﺮب ﻟﻚ ﻣﺜﺎل أﺧﻴﺮ رﺑﻤﺎ آﺎن ﻣﻔﻴﺪًا ﻟﺘﺜﺒﻴﺖ اﻟﻔﻜﺮة‪ ....‬ﻟﻨﻔﺘﺮض اﻧﻚ‬
‫ﺗﺮﻳﺪ أن ﺗﻌﻤﻞ ﺑﺮﻧﺎﻣﺞ ﻻ ﻳﻤﻜﻦ ﻟﻠﻤﺴﺘﺨﺪم أن ﻳﺸﻐﻠﻪ ﻣﺒﺎﺷﺮة ﻋﻦ ﻃﺮﻳﻖ‬
‫اﻟﻨﻘﺮ ﻋﻠﻴﻪ و ﺗﺮﻳﺪ أن ﺗﻘﻮم أﻧﺖ ﻓﻘﻂ ﺑﻔﺘﺤﻪ ﻋﻦ ﻃﺮﻳﻖ ﺗﻤﺮﻳﺮ آﻠﻤﺔ‬
‫ﺗﺨﺼﻚ ﻟﺘﺸﻐﻴﻠﻪ‪...‬‬
‫ﻟﺘﻨﻔﻴﺬ ﺷﻲء ﻣﺸﺎﺑﻪ ﻗﻢ ﺑﻔﺘﺢ ﻣﺸﺮوع ﺟﺪﻳﺪ و ﺻﻤﻢ اﻟﻮاﺟﻬﺔ اﻟﺘﻲ ﺗﺮﻳﺪهﺎ‬
‫ﻟﺒﺮﻧﺎﻣﺞ ﺛﻢ اآﺘﺐ اﻟﻜﻮد اﻟﺘﺎﻟﻲ ﻓﻲ اﻟﺤﺪث ‪ Load‬ﻟﻠﻔﻮرم‪:‬‬
‫‪69‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫ﺗﻤﺮﻳﺮ ﺑﺎرﻣﻴﺘﺮات إﻟﻰ داﺧﻞ اﻟﺒﺮﻧﺎﻣﺞ ﻣﻦ اﻟﻮﻳﻨﺪوز‬
‫رﻏﻴﺪ ﻃﻴﺐ ‪ ‬‬ ‫ﻛﻮد‪:‬‬
‫)(‪Private Sub Form_Load‬‬
‫‪If Command <> "Bye Rgheed" Then‬‬
‫‪End‬‬
‫‪End If‬‬
‫‪End Sub‬‬

‫واﻵن ﺗﺮﺟﻢ اﻟﻤﺸﺮوع إﻟﻰ ﻣﻠﻒ ﺗﻨﻔﻴﺬي وﻟﻴﻜﻦ ‪ Project1.exe‬وﺿﻌﻪ ﻓﻲ أي ﻣﻜﺎن وﻟﻴﻜﻦ اﻟﺴﻮاﻗﺔ ﺳﻲ ﻟﻼﺧﺘﺼﺎر ‪ ....‬و اﻵن ﺟﺮب أن ﺗﻔﺘﺢ‬
‫اﻟﺒﺮﻧﺎﻣﺞ ﻓﻠﻦ ﻳﻜﻮن ﺑﻤﻘﺪورك ذﻟﻚ أﺑﺪا ﻷﻧﻪ اﻟﺘﺎﻟﻲ‪:‬ﻟﻔﺤﺺ ﻟﻠﺘﺄآﺪ ﻣﻦ اﻟﺒﺎرﻣﻴﺘﺮ اﻟﻤﻤﺮ ﻟﻪ ﻓﺎن آﺎن ﻣﺴﺎوﻳًﺎ ﻟﻠﻌﺒﺎرة "‪ "Bye Rgheed‬ﻓﺴﻮف ﻳﻔﺘﺢ‬
‫‪ ‬‬ ‫‪ ‬‬ ‫ﺑﺈذن اﷲ ‪ ...‬وﻟﻜﻲ ﺗﻔﺘﺢ اﻟﺒﺮﻧﺎﻣﺞ اذهﺐ إﻟﻰ اﻟﻘﺎﺋﻤﺔ ﺗﺸﻐﻴﻞ ‪ Run‬واآﺘﺐ اﻟﺴﻄﺮ اﻟﺘﺎﻟﻲ‪:‬‬
‫‪C:\Project1.exe Bye Rgheed‬‬

‫أو ﻋﻦ ﻃﺮﻳﻖ ﺑﺮﻧﺎﻣﺞ ﻓﻴﺠﻮال اآﺘﺐ اﻟﺴﻄﺮ اﻟﺘﺎﻟﻲ‪:‬‬

‫ﻛﻮد‪:‬‬
‫‪Shell "C:\Project1.exe Bye Rgheed", vbNormalFocus‬‬
‫و ﺣﻴﻨﻬﺎ ﻓﻘﻂ ﺳﻴﻌﻤﻞ اﻟﺒﺮﻧﺎﻣﺞ ﺑﺈذن اﷲ ﺗﻌﺎﻟﻰ‬
‫أﺧﻴﺮا أﺗﻤﻨﻰ ﻟﻠﺠﻤﻴﻊ ﺗﺤﻘﻴﻖ اﻟﻔﺎﺋﺪة اﻟﻤﺮﺟﻮة‬
‫اﻟﺴﻼم ﻋﻠﻴﻜﻢ و رﺣﻤﺔ اﷲ و ﺑﺮآﺎﺗﻪ‬

‫اﺧﺘﺮﻧﺎ ﻟﻚ ﻣﻦ ﻣﻜﺘﺒﺔ اﻟﻜﺘﺐ ‪...‬‬


‫‪ Visual Basic‬ﻟﻠﺠﻤﻴﻊ‪ ,‬ﻧﺤﻮ ﺑﺮﻣﺠﺔ ﻛﺎﺋﻨﻴﺔ اﻟﺘﻮﺟﻪ ‪OOP‬‬
‫ﺑﻌﺾ اﻟﻤﺤﺘﻮﻳﺎت‬ ‫ﺻﻮرة ﻏﻼف اﻟﻜﺘﺎب‪:‬‬
‫اﻟﻤﻘﺪﻣﺔ‬
‫‪ -‬اﻟﻔﺼﻞ اﻟﺮاﺑﻊ ‪:‬ﻣﻜﺘﺒﺎت ‪ VB‬و‪VBA‬‬ ‫‪ -‬اﻟﺠﺰء اﻷول ‪:‬اﻷﺳﺎﺳﻴﺎت‬
‫اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻷﻋﺪاد‬ ‫‪ -‬اﻟﻔﺼﻞ اﻷول ‪:‬ﺗﻌﺮف ﻋﻠﻰ ‪Visual‬‬
‫اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﺤﺮوف‬ ‫‪Basic‬‬
‫اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻮﻗﺖ واﻟﺘﺎرﻳﺦ‬ ‫ﺑﻴﺌﺔ اﻟﺘﻄﻮﻳﺮ اﻟﻤﺘﻜﺎﻣﻠﺔ ‪IDE‬‬
‫اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻤﻠﻔﺎت واﻟﻤﺠﻠﺪات‬ ‫آﺘﺎﺑﺔ ﺑﺮﻧﺎﻣﺠﻚ اﻷول‬
‫آﺎﺋﻨﺎت أﺧﺮى‬ ‫‪ -‬اﻟﻔﺼﻞ اﻟﺜﺎﻧﻲ ‪ :‬اﻟﻨﻤﺎذج واﻷدوات‬
‫اآﺘﺸﺎف اﻷﺧﻄﺎء‬ ‫اﻟﺨﺼﺎﺋﺺ اﻟﻤﺸﺘﺮآﺔ‬
‫‪ -‬اﻟﻔﺼﻞ اﻟﺨﺎﻣﺲ ‪:‬اﻟﺒﺮﻣﺠﺔ آﺎﺋﻨﻴﺔ اﻟﺘﻮﺟﻪ‬ ‫اﻟﻄﺮق اﻟﻤﺸﺘﺮآﺔ‬
‫‪OOP‬‬ ‫اﻷﺣﺪاث اﻟﻤﺸﺘﺮآﺔ‬ ‫اﻟﻠﻐﺔ ‪:‬ﻋﺮﺑﻴﺔ‬
‫ﻣﻘﺪﻣﺔ إﻟﻰ ‪OOP‬‬ ‫ﻧﺎﻓﺬة اﻟﻨﻤﻮذج‬ ‫اﻟﻤﺆﻟﻒ‪ :‬اﻷﺳﺘﺎذ ﺗﺮآﻲ اﻟﻌﺴﻴﺮي‬
‫ﺑﻨﺎء اﻟﻔﺌﺎت‬ ‫اﻷدوات اﻟﺪاﺧﻠﻴﺔ‬ ‫ﻧﻮع اﻟﻤﻠﻒ‪ZIPed PDF :‬‬
‫‪ -‬اﻟﻔﺼﻞ اﻟﺜﺎﻟﺚ ‪:‬ﻟﻐﺔ اﻟﺒﺮﻣﺠﺔ‪ BASIC‬اﺳﺘﺨﺪام اﻟﻜﺎﺋﻨﺎت‬ ‫ﺣﺠﻢ اﻟﻤﻠﻒ‪ 1.05 :‬ﻣﻴﻐﺎ ﺑﺎﻳﺖ‬
‫‪ -‬اﻟﻔﺼﻞ اﻟﺴﺎدس ‪:‬ﺗﻌﺪد اﻟﻮاﺟﻬﺎت واﻟﻮراﺛﺔ‬ ‫اﻟﻤﺘﻐﻴﺮات واﻟﺜﻮاﺑﺖ‬ ‫ﺗﺎرﻳﺦ اﻟﻨﺸﺮ‪2002:‬‬
‫ﺗﻌﺪد اﻟﻮاﺟﻬﺎت ‪Polymorphism‬‬ ‫اﻟﺘﺮآﻴﺒﺎت واﻟﻤﺼﻔﻮﻓﺎت‬ ‫ﻋﺪد اﻟﺼﻔﺤﺎت‪200:‬‬
‫اﻟﻮراﺛﺔ ‪Inheritance‬‬ ‫اﻹﺟﺮاءات واﻟﺪوال‬ ‫اﻟﻤﺴﺘﻮى ‪:‬ﻣﺒﺘﺪأ‬
‫اﻷهﺮام اﻟﻜﺎﺋﻨﻴﺔ‬ ‫اﻟﺘﺤﻜﻢ ﻓﻲ ﺳﻴﺮ اﻟﺒﺮﻧﺎﻣﺞ‬ ‫ﻟﺘﻨﺰﻳﻞ اﻟﻜﺘﺎب اﺿﻐﻂ هﻨﺎ‬
‫ﺗﺤﺴﻴﻦ اﻟﻜﻔﺎءة‬

‫‪70‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫‪4/1‬‬ ‫إﻧﻲ ذﻛﺮﺗﻚ واﻟﺬﻛﺮى ﻣﺆرﻗﺔ‬
‫ﺗﺮﻛﻲ اﻟﻌﺴﻴﺮي ‪ ‬‬ ‫ﺳﻠﺴﻠﺔ ﻣﻦ اﻟﻤﻘﺎﻻت‪ ،‬أﺣﺎول ﻓﻴﻬﺎ ﺗﺤﻔﻴﺰ ﻣﺒﺮﻣﺠﻲ ‪Visual‬‬
‫‪ .1‬اﺳﺘﺪﻋﺎء اﻹﺟﺮاءات واﻟﺪوال ‪Procedure and‬‬ ‫‪ Basic x.0‬اﻟﻌﺮب إﻟﻰ ﻣﻮاﻛﺒﺔ اﻟﺘﻴﺎر واﻟﻬﺠﺮة ﺑﻼ ﻋﻮدة إﻟﻰ اﺣﺪ‬
‫‪function calls‬‬ ‫ﻟﻐﺎت إﻃﺎر ﻋﻤﻞ ‪NET Framework.‬‬

‫ﻣﻊ ﺑﺪاﻳﺎت ﻇﻬﻮر ﻟﻐﺔ اﻟـ‪ ، BASIC‬واﺟﻬﻨﺎ اﻟﻜﻠﻤﺔ اﻟﻤﺤﺠﻮزة‬ ‫ﺗﻤﺮ ﻋﻠﻰ اﻹﻧﺴﺎن ﻟﺤﻈﺎت اﻻﺷﺘﻴﺎق إﻟﻰ اﻟﻤﺎﺿﻲ واﻹﺑﺤﺎر ﺑﺎﻟﻨﻔﺲ‬
‫‪ GOSUB‬ﻻﺳﺘﺪﻋﺎء ﺟﺰء ﻣﻌﻴﻦ ﻣﻦ اﻟﺸﻔﺮة )ﻳﺮﻣﺰ ﻟﻪ ﺑﺮﻗﻢ أو اﺳﻢ(‪،‬‬ ‫اﻟﺠﻴﺎﺷﺔ إﻟﻰ ﻋﻜﺲ اﺗﺠﺎﻩ اﻟﻤﺠﺎدﻳﻒ‪ ،‬واﻟﺤﻨﻴﻦ إﻟﻰ ﺷﻮاﻃﺊ اﻟﻄﻔﻮﻟﺔ ﺣﻴﺚ‬
‫‪ ‬‬ ‫وﻟﻜﻦ ﻣﻊ ‪ Visual Basic‬ﻓﻘﺪ اﻇﻬﺮ ﻟﻨﺎ‪  ‬ﻧﻮﻋﻴﻦ ﻣﻦ اﻹﺟﺮاءات هﻤﺎ اﻟـ‬
‫ﺗﺒﻨﻰ ﻓﻴﻬﺎ ﻗﻼع اﻟﻄﻴﻦ‪ ،‬ﻣﻊ اﻻﺳﺘﻤﺎع إﻟﻰ اﻟﺤﺎن اﻟﻘﻮاﻗﻊ‪.‬‬
‫‪) Subs‬واﻟﺘﻲ ﻻ ﺗﻌﻮد ﺑﻘﻴﻤﺔ( ‪ ،‬واﻟـ ‪) Functions‬اﻟﺘﻲ ﺗﻌﻮد‬
‫ﺑﻘﻴﻤﺔ(‪.‬‬ ‫أن آﺎن اﻷﻏﻠﺐ ﻣﻨﺎ ﻳﻨﻈﺮ إﻟﻰ اﻟﻮرد ﻓﻲ ﻣﺎﺿﻴﻪ‪ ،‬ﻓﺎﻧﺎ أﻓﻀﻞ رؤﻳﺔ‬
‫اﻟﺸﻮك ﻣﻊ ﻟﻐﺎت اﻟﺒﺮﻣﺠﺔ‪ ،‬وﻣﻦ ﻣﻨﻄﻠﻖ ﺧﺼﺎﻟﻲ اﻟﺒﺮﻣﺠﻴﺔ ﻓﺄﻓﻀﻞ أن‬
‫ﻛﻮد‪:‬‬
‫أآﻮن ﺧﺎﺋﻨﺎ ﻟﻬﺎ وأﺣﺎول إﻇﻬﺎر اﻟﻮﺟﻪ اﻵﺧﺮ ﻋﻨﺪﻣﺎ أهﺎﺟﺮهﺎ‪) .‬ﻟﻘﺪ‬
‫إﺟﺮاء ﻻﺳﺘﺪﻋﺎء ‪' Sub‬‬
‫‪Subname Param1, Param2‬‬ ‫هﺎﺟﺮت اﻟﻜﺜﻴﺮ ﻣﻨﻬﺎ ﻓﻲ ﺣﻴﺎﺗﻲ‪ ،‬ﻓﻠﻢ ﻳﻌﺪ اﻟﻘﻠﺐ ﻳﺨﻔﻖ ﻷﺣﺪ(‬

‫داﻟﺔ ﻻﺳﺘﺪﻋﺎء ‪' Function‬‬ ‫وﺑﻤﺎ أﻧﻲ هﺠﺮت إﻟﻰ‪ ، Visual Basic.NET‬ﻓﺴﺄﺣﺎول ﻣﺎ ﺑﻮﺳﻌﻲ‬
‫)‪Result = FuncName(Param1, Param2‬‬ ‫ﺗﻮزﻳﻊ اﻟﺠﻮازات واﻟﺘﺄﺷﻴﺮات إﻟﻰ إﺧﻮاﻧﻲ أﻋﻀﺎء وزوار‬
‫‪vb4arab.com‬ﺣﺘﻰ ﻳﺴﻴﺮوا ﻣﻊ اﻟﺮآﺐ وﻳﻨﻄﻠﻘﻮا إﻟﻰ ﻣﺎ هﻮ اﻷﻓﻀﻞ‬
‫ﻻﺣﻈﻮا اﻟﻔﺮق اﻟﺠﺒﺎر ﻓﻲ آﻼ اﻻﺳﺘﺪﻋﺎﺋﻴﻦ‪ ،‬ﻓﺎﺳﺘﺪﻋﺎء اﻹﺟﺮاءات ﻣﻦ‬
‫ﻟﻬﻢ وﻷﻋﻤﺎﻟﻬﻢ‪ ،‬ﺣﻴﺚ أن اﺳﺘﻤﺮار ﻧﺸﺎط اﻟﻤﻨﺘﺪى ﺗﺤﺖ راﻳﺔ ‪Visual‬‬
‫اﻟﻨﻮع ‪ Sub‬ﻻ ﻳﻤﻜﻨﻚ اﺳﺘﺨﺪام اﻷﻗﻮاس ﻣﻌﻬﺎ‪:‬‬
‫‪ Basic 6‬اﻟﺬي ﻳﻄﻐﻰ ﻋﻠﻰ ﻧﺸﺎط ﻣﻨﺘﺪى –اﺣﻢ اﺣﻢ‪ -‬اﻗﺼﺪ ﻗﺴﻢ‬
‫ﻛﻮد‪:‬‬ ‫‪Visual Basic .NET‬أﻣﺮ ﻻ أرى ﻓﻴﻪ ﻣﺼﻠﺤﺔ –ﻻ ﻟﻠﻤﻨﺘﺪى وﻻ‬
‫ﺧﻄﺎ رﺳﺎﻟﺔ ﺳﺘﻈﻬﺮ '‬ ‫ﻟﺰوارﻩ‪.‬‬
‫)‪Subname(Param1, Param2‬‬
‫وﻟﻜﻨﻚ ﺗﺴﺘﻄﻴﻊ اﺳﺘﺨﺪام اﻷﻗﻮاس ﻣﻊ اﻹﺟﺮاءات ﻣﻦ اﻟﻨﻮع‬
‫– ‪ Function‬ﺣﺘﻰ ﻟﻮ ﻟﻢ ﺗﺴﺘﻔﺪ ﻣﻦ اﻟﻘﻴﻤﺔ اﻟﺘﻲ ﺗﻌﻮد ﺑﻬﺎ اﻟﺪاﻟﺔ‪:‬‬ ‫ﻣﻦ هﻨﺎ ﺳﻨﺤﺎول )ﺑﻌﺪ إذن إدارة اﻟﻤﻨﺘﺪى( ﺷﻦ ﺣﻤﻠﺔ ﺿﺪ ‪Visual‬‬
‫ﻛﻮد‪:‬‬ ‫‪ Basic 6‬وإﻇﻬﺎر ﻋﻴﻮﺑﻪ ﻟﺘﻜﻮن ﺣﺎﻓﺰ إﻟﻰ اﻟﻤﺒﺮﻣﺠﻴﻦ اﻟﻌﺮب ﻟﻼﻧﺘﻘﺎل‬
‫)‪FuncName(Param1, Param2‬‬ ‫إﻟﻰ‪ ، Visual Basic .NET‬وﻣﻦ ﺑﻌﺪ ﻣﺎ آﻨﺖ ﻣﻦ اﺷﺪ ﻋﺸﺎق‬
‫أن ﻗﻤﺖ ﺑﺎﺳﺘﺪﻋﺎء داﻟﺔ ﺑﺎﻟﻄﺮﻳﻘﺔ اﻟﺴﺎﺑﻘﺔ ) ﺑﺈﺿﺎﻓﺔ اﻷﻗﻮاس ودون‬ ‫‪ ،Visual Basic‬ﺳﺄرﻳﻜﻢ اﻟﻮﺟﻪ اﻷﺧﺮ ﻷﺻﺒﺢ ﻋﺪوﻩ اﻟﻠﺪود‪ .‬ﻓﺎﻹﺧﻮان‬
‫اﻻﺳﺘﻔﺎدة ﻣﻦ اﻟﻘﻴﻤﺔ اﻟﺘﻲ ﺗﻌﻮد ﺑﻬﺎ(‪ ،‬ﻓﺴﻴﺘﻢ اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻮﺳﻴﻄﺎت‬ ‫اﻟﺬﻳﻦ ﻻ ﻳﺰاﻟﻮن ﻳﺮﻓﻀﻮن اﻻﻧﺘﻘﺎل إﻟﻰ‪ ، Visual Basic.NET‬ﻻﺑﺪ‬
‫اﻟﻤﺮﺳﻠﺔ ‪ Param1‬و ‪ Param2‬آﻤﺎ ﻟﻮ أﻧﻬﺎ أرﺳﻠﺖ ﺑﺎﻟﻘﻴﻤﺔ ‪ByVal‬‬
‫ﻣﻦ ﻣﺤﺎوﻟﺔ ﺗﻐﻴﻴﺮ ﻗﻨﺎﻋﺎﺗﻬﻢ‪ .‬اﻋﻠﻢ اﻧﻪ ﻳﻌﺰ ﻋﻠﻴﻜﻢ ﻓﺮاق اﻟﺤﺒﻴﺒﺔ ‪Visual‬‬
‫ﺣﺘﻰ ﻟﻮ ﺗﻢ ﺗﻌﺮﻳﻔﻬﺎ ﻋﻠﻰ أﻧﻬﺎ ﺑﺎﻟﻤﺮﺟﻊ ! ‪ByRef‬‬
‫‪ ،Basic‬وﻟﻜﻦ ﻟﻤﺎ ﻻ ﺗﺤﺎوﻟﻮا إﺿﺎﻓﺔ اﻟﺤﺮوف ‪ NET.‬ﻋﻠﻴﻬﺎ؟‬
‫وﻟﻜﻦ ﻋﻨﺪ اﺳﺘﺨﺪام اﻟﻜﻠﻤﺔ اﻟﻤﺤﺠﻮزة ‪) Call‬ﻟﻢ أرى أي ﻣﺒﺮﻣﺞ‬
‫هﺬا ﻣﻘﺎل ﻣﻦ ﻣﻼﻳﻴﻦ اﻟﻤﻘﺎﻻت ﻓﻲ اﻻﻧﺘﺮﻧﺖ اﻟﺘﻲ ﺗﻈﻬﺮ ﻗﺼﻮر وﻏﺒﺎء‬
‫‪Visual Basic‬ﻳﺴﺘﺨﺪﻣﻬﺎ ﻓﻲ ﺣﻴﺎﺗﻲ( ﻓﺴﻴﺘﻢ إرﺳﺎل اﻟﻮﺳﻴﻄﺎت‬
‫ﻟﻐﺔ اﻟﺒﺮﻣﺠﺔ ‪ ،Visual Basic x.0‬ﻗﻤﺖ ﺑﺘﺮﺟﻤﺘﻪ ﺑﺘﺼﺮف‪ ،‬واﻟﻘﺎدم‬
‫ﺑﺎﻟﻤﺮﺟﻊ‪: ByRef‬‬
‫ﻛﻮد‪:‬‬ ‫ﻓﻲ اﻟﻄﺮﻳﻖ‪.‬‬
‫)‪Call FuncName(Param1, Param2‬‬
‫ﻣﻼﺣﻈﺔ‪ :‬ﻻ اﻋﺘﻘﺪ ﺑﺄﻧﻪ ﺳﻴﻔﻬﻢ ﻣﺤﺘﻮﻳﺎت هﺬا اﻟﻤﻘﺎل إﻻ ﻣﺒﺮﻣﺠﻲ‬
‫‪Variable‬‬ ‫اﻟﻤﺘﻐﻴﺮات‬ ‫ﻋﻦ‬ ‫‪ .2‬اﻟﺘﺼﺮﻳﺢ‬ ‫‪ Visual Basic‬اﻟﻤﺘﻤﺮﺳﻴﻦ‪.‬‬
‫‪Declaration‬‬ ‫ﻧﺺ اﻟﻤﻘﺎل‪ :‬ﺗﺮﺟﻤﺔ ﺧﺎﺻﺔ ﺑﺘﺼﺮف‬
‫ﻳﻤﻜﻨﻚ أن ﺗﺼﺮح ﻋﻦ ﻣﺘﻐﻴﺮ –آﻤﺎ هﻮ ﻣﻌﻠﻮم‪ -‬ﺑﺎﺳﺘﺨﺪام‬ ‫ﺷﺎرآﺖ اﻟﻤﺒﺮﻣﺠﺔ "ﻓﻴﺮﺗﻲ ﺳﺘﻮب" ﻓﻲ اﺣﺪ اﻟﻤﺸﺎرﻳﻊ ﺑﻠﻐﺔ ‪Visual‬‬
‫اﻟﻜﻠﻤﺔ اﻟﻤﺤﺠﻮزة‪Dim:‬‬
‫‪ Basic.‬وﻣﻦ أﺟﻞ اﻟﻔﺌﺎت واﻷﺟﻴﺎل اﻟﻘﺎدﻣﺔ ﻣﻦ ﻣﺒﺮﻣﺠﻲ ‪Visual‬‬
‫ﻛﻮد‪:‬‬ ‫‪ ،Basic‬ﻗﺮرت آﺘﺎﺑﺔ ﻣﻠﺨﺺ ﻟﺘﺠﺮﺑﺘﻬﺎ – ﻏﻴﺮ اﻟﺴﺎرة ‪ -‬آﻔﺎﺋﺪة ﻟﻬﻢ‪.‬‬
‫‪Dim I As Integer‬‬

‫اﻟﻤﺒﺮﻣﺠﻮن اﻟﻤﺘﻤﺮﺳﻮن ﻳﻔﻀﻠﻮن ﺗﻌﺮﻳﻒ اﻷﻧﻮاع اﻟﻤﺘﺸﺎﺑﻬﺔ ﻓﻲ ﺳﻄﺮ‬


‫واﺣﺪ‪:‬‬

‫ﻛﻮد‪:‬‬
‫‪Dim I, J, K, L As Integer‬‬

‫‪71‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫‪4/1‬‬ ‫إﻧﻲ ذﻛﺮﺗﻚ واﻟﺬﻛﺮى ﻣﺆرﻗﺔ‬
‫ﺗﺮﻛﻲ اﻟﻌﺴﻴﺮي ‪ ‬‬ ‫هﻬﻬﻬﻪ )ﻧﻠﺖ ﻣﻨﻚ هﺬﻩ اﻟﻤﺮة!(‪ ،‬ﻓﺠﻤﻴﻊ اﻟﻤﺘﻐﻴﺮات اﻟﺴﺎﺑﻘﺔ ﻣﻦ اﻟﻨﻮع‬
‫‪ .8‬ﻣﺼﻔﻮﻓﺔ اﻟﺜﻮاﺑﺖ ‪Arrays of constants‬‬ ‫‪ Variant‬ﻣﺎ ﻋﺪا اﻷﺧﻴﺮ ‪ L‬ﻓﻬﻮ اﻟﻮﺣﻴﺪ ﻣﻦ اﻟﻨﻮع ‪.Integer‬‬

‫ﻻﻳﻮﺟﺪ ﺷﻲء ﻓﻲ ‪ Visual Basic‬اﺳﻤﻪ ﻣﺼﻔﻮﻓﺔ اﻟﺜﻮاﺑﺖ‪.‬‬


‫ﻋﻠﻰ اﻳﺔ ﺣﺎل‪ ،‬ﻣﺎذا ﺳﺘﻔﻌﻞ ﺑﻬﺎ ﺣﺘﻰ ﻟﻮ آﺎﻧﺖ ﻣﻮﺟﻮدة؟ ‪ ---‬ﻣﺒﺮﻣﺞ‬ ‫‪ .3‬اﺳﺘﺪﻋﺎء داﻟﺔ أو اﺳﺘﺨﺪام ﻣﺼﻔﻮﻓﺔ ‪Call a function‬‬
‫‪ Visual Basic‬ﺗﻔﻜﻴﺮك ﻣﺤﺪود!!‬
‫‪ ‬‬
‫‪or access an array‬؟‬
‫‪ .9‬اﻟﻨﻮع ‪ Integer‬ﺣﺠﻤﻪ ‪ 16‬ﺑﺖ ‪The type‬‬ ‫ﻓﻲ اﻏﻠﺐ ﻟﻐﺎت اﻟﺒﺮﻣﺠﺔ‪ ،‬ﻳﻤﻜﻨﻚ اﻟﺘﻔﺮﻳﻖ ﺑﻴﻦ ﻋﻤﻠﻴﺔ اﺳﺘﺪﻋﺎء‬
‫‪ ‬‬ ‫‪ ‬‬
‫‪Integer declares a 16-bit integer‬‬ ‫اﻟﺪاﻟﺔ ‪ F‬اﻟﺘﻲ ﺗﺮﺳﻞ ﻟﻬﺎ اﻟﻘﻴﻤﺔ ‪ ،3‬وﺑﻴﻦ اﻟﻮﺻﻮل اﻟﻰ اﻟﻤﺼﻔﻮﻓﺔ ‪ F‬ﺑﺮﻗﻢ‬
‫اﻟﻔﻬﺮس ‪ ،3‬ﻓﺎﻷوﻟﻰ ﻗﺪ ﺗﻜﺘﺐ )‪ F(3‬واﻟﺜﺎﻧﻴﺔ ]‪ ،F[3‬وﻟﻜﻦ ﻣﻊ ‪Visual‬‬
‫ﻗﺪ ﺗﻜﻮن اﻟﻌﺒﺎرة اﻟﺴﺎﺑﻘﺔ ﻣﻘﺒﻮﻟﺔ ﺑﻜﻞ رﺣﺎﺑﺔ‪ ،‬وﻟﻜﻦ ﻋﻨﺪ‬
‫‪ Basic‬ﻓﻜﻼ اﻟﺤﺎﻟﺘﻴﻦ ﺗﻜﺘﺐ )‪! F(3‬‬
‫اﻟﺤﺪﻳﺚ ﻋﻦ ﻧﻈﻢ ‪ 32‬ﺑﺖ )واﻟﺘﻲ ﺑﺪأهﺎ ﻧﻈﺎم اﻟﺘﺸﻐﻴﻞ‪(Windows 95‬‬
‫ﻓﻠﻐﺎت اﻟﺒﺮﻣﺠﺔ اﻻﺧﺮى ﻗﺪ ﻻﺣﻈﺖ اﻟﺘﻐﻴﻴﺮ!‬ ‫"ﻣﻼﺣﻈﺔ‪ :‬ﺣﺘﻰ ‪ Visual Basic .NET‬ﻟﻢ ﻳﻐﻴﺮ هﺬﻩ اﻟﻌﺎدة"‬
‫‪ .4‬ﺷﻲء آﺧﺮ ﺣﻮل اﻟﻤﺼﻔﻮﻓﺎت ‪Another thing about‬‬
‫‪ .10‬اﻟﻤﻨﻄﻖ ‪Logic‬‬
‫‪arrays‬؟‬
‫هﺬا اﻟﺠﺰء اﻟﻬﺎم ﻣﻦ اﻟﻠﻐﺔ اﻟﺬي ﻳﻔﺘﺮض أن ﻳﻜﻮن ﺳﻬﻞ‬ ‫ﻳﺒﺪأ ﺗﺮﻗﻴﻢ ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ ﺑـ ‪ 0‬داﺋﻤﺎ‪ ،‬وﻟﻜﻦ ﻋﻨﺪ ﻧﻘﻞ‬
‫وﺑﺪﻳﻬﻲ‪ ،‬هﺬا اﺧﺘﺒﺎر ﺳﺮﻳﻊ ﻟﻚ‪ :‬اﻓﺘﺮض أن ‪ Check1‬أداة ﻣﻦ اﻟﻨﻮع‬
‫اﻟﺸﻔﺮة اﻟﻤﺼﺪرﻳﺔ إﻟﻰ ﺟﻬﺎز أو ﻣﻠﻒ ﺁﺧﺮ ﻳﺴﺘﺨﺪم اﻟﻤﻮﺟﻪ ‪Option‬‬
‫‪ CheckBox‬ﻋﻠﻰ ﻧﺎﻓﺬة اﻟﻨﻤﻮذج‪ ،‬وﻗﻤﺖ ﺑﺘﻨﻔﻴﺬ هﺬﻩ اﻟﺸﻔﺮة‪:‬‬
‫‪ ،Base 1‬ﻓﺴﻴﻜﻮن ‪.1‬‬
‫ﻛﻮد‪:‬‬
‫‪ .5‬وﻟﻜﻦ ﺗﻮﺟﺪ ﻫﻨﺎك اﻟﻤﺠﻤﻮﻋﺎت أﻳﻀﺎ ‪But there are‬‬
‫‪Dim b As Boolean, c As Boolean‬‬
‫‪b = Check1.Value‬‬ ‫‪also collections‬‬
‫‪c = Not Check1.Value‬‬
‫اﻟﺘﺼﻤﻴﻢ اﻟﻜﺎﺋﻨﻲ اﻟﺘﻮﺟﻪ ‪ OOP‬ﻻ ﻳﺨﻠﻮ ﻣﻦ اﻟﻤﺠﻤﻮﻋﺎت‬
‫ﻓﺎﻟﻤﺘﻐﻴﺮ ‪ b‬اﻟﺴﺎﺑﻖ ﺳﺘﻜﻮن ﻗﻴﻤﺘﻪ ‪ True‬إذا ﻗﺎم اﻟﻤﺴﺘﺨﺪم ﺑﺘﺤﺪﻳﺪ اﻷداة‬ ‫واﻟﺘﻲ ﻳﺒﺪأ ﺗﺮﻗﻴﻤﻬﺎ ﻓﻲ اﻟﻌﺎدة ﻣﻦ ‪ ،1‬رﻏﻢ اﻧﻪ ﻓﻲ ﺣﺎﻻت ﻗﺪ ﺗﺒﺪأ ﺗﺮﻗﻴﻢ‬
‫)‪ ،(Value = Checked‬واﻟﻘﻴﻤﺔ ‪ False‬إن ﻗﺎم ﺑﺈﻟﻐﺎء اﻟﺘﺤﺪﻳﺪ‬ ‫ﻋﻨﺎﺻﺮهﺎ ﺑـ ‪ 0‬أﻳﻀﺎ‪ ،‬وذﻟﻚ ﻳﻌﺘﻤﺪ ﻋﻠﻰ اﻟﻤﻜﺎن اﻟﺘﻲ ﻋﺮﻓﺖ ﻓﻲ‬
‫)‪ (Value = Unchecked‬ﻣﺎذا ﺗﻌﺘﻘﺪ ﺳﺘﻜﻮن ﻗﻴﻤﺔ اﻟﻤﺘﻐﻴﺮ‪ c‬؟‬ ‫اﻟﻤﺠﻤﻮﻋﺔ‪ .‬ﺗﺤﺘﺎج إﻟﻰ ﺿﺮﺑﺔ اﻟﺤﻆ هﺬﻩ اﻟﻤﺮة!‬
‫اﻹﺟﺎﺑﺔ اﻟﻤﻔﺎﺟﺌﺔ‪ :‬داﺋﻢ ‪)!!!!! True‬ﻣﺴﺎﻋﺪة‪ :‬ﺗﺤﻮﻳﻞ اﻟﻘﻴﻢ ﻓﻲ ﻓﻠﺴﻔﺔ‬ ‫‪ .6‬ﻫﻞ ﻟﻤﺤﺖ إﻟﻰ اﻟﺒﺮﻣﺠﺔ ﻛﺎﺋﻨﻴﺔ اﻟﺘﻮﺟﻪ ‪Did I‬‬
‫اﻟﺴﻴﺪ ‪ Visual Basic‬ﺗﺤﺘﺎج إﻟﻰ آﺘﺎب آﺎﻣﻞ!!!!(‬
‫‪mention OOP‬؟‬
‫هﻬﻬﻬﻬﻬﻬﻬﻬﻬﻬﻬﻬﻬﻬﻬﻬﻬﻬﻬﻬﻬﻬﻬﻬﻬﻪ‪ ،‬ﻻ ﺗﺨﺪع ﻧﻔﺴﻚ! ﻓﺄﻧﺖ‬
‫‪ .11‬ﻛﻠﻤﺎت ﻣﺤﺠﻮزة ﻧﻔﺲ اﻟﻤﻌﺎﻧﻲ ﻣﺨﺘﻠﻔﺔ اﻷﻏﺮاض‬
‫ﻣﺒﺮﻣﺞ ‪ Visual Basic‬ﻃﻴﺐ اﻟﻘﻠﺐ )ﻋﻠﻰ اﻟﻨﻴﺔ(‪.‬‬
‫‪ Nothing‬ﺗﻌﻨﻲ ﻻ ﺷﻲء‬
‫‪ .7‬إﺳﻨﺎد اﻟﻘﻴﻢ ﻟﺤﻈﺔ اﻟﺘﺼﺮﻳﺢ ‪Initialization‬‬
‫‪ Null‬ﺗﻌﻨﻲ ﻻ ﺷﻲء‬
‫ﻓﻲ اﻟﻌﺼﻮر اﻟﻮﺳﻄﻰ ﻟﻠﻐﺔ اﻟـ‪ ، BASIC‬ﺣﺎول ﻣﺼﻤﻤﻮهﺎ‬
‫أﻣﺎ ‪ Empty‬ﻓﺘﻌﻨﻲ ﻻ ﺷﻲء‬ ‫إﻳﺠﺎد ﺣﻞ ﻟﻤﺸﻜﻠﺔ إﺳﻨﺎد اﻟﻘﻴﻢ ﻟﺤﻈﺔ اﻟﺘﺼﺮﻳﺢ ‪(Dim x As‬‬
‫)‪ ،Integer = 10‬وآﺎن آﻞ ﻣﺎ اﺳﺘﻄﺎﻋﻮا ﻓﻌﻠﻪ أﺳﻠﻮب ﻏﺒﻲ ﻳﻌﺘﻤﺪ‬
‫ﻟﺘﻮﺿﻴﺢ اﻟﻔﺮق ﺑﻴﻨﻬﻢ‪ ،‬ﺗﺤﺘﺎج إﻟﻰ وﻗﺖ!‬ ‫ﻋﻠﻰ اﻟﻜﻠﻤﺎت اﻟﻤﺤﺠﻮزة ‪ DATA‬و‪ ،READ‬إﻻ أن ﻣﺼﻤﻤﻲ‬
‫‪Visual Basic‬اﺧﺘﺮﻋﻮا أﺳﻠﻮب أآﺜﺮ ﺣﺪاﺛﺔ واﻟﺬي ﻳﻜﻮن ﺷﻴﺌﺎ ﻣﺜﻞ‪:‬‬
‫‪ .12‬ﻣﺤﺮر اﻟﺸﻴﻔﺮة اﻟﻐﺒﻲ‪The stupid code editor‬‬
‫ﻛﻮد‪:‬‬
‫ﻳﻈﻬﺮ ﻟﻚ )ﺑﺸﻜﻞ اﻓﺘﺮاﺿﻲ( اﻟﺮﺳﺎﻟﺔ اﻟﻤﺰﻋﺠﺔ ﻋﻨﺪ ﻇﻬﻮر‬ ‫‪Dim A(20) As Double‬‬
‫ﺧﻄﺄ ﻧﺤﻮي وﻗﺖ اﻟﺘﺼﻤﻴﻢ ‪ .Design time syntax error‬وﻗﺪ‬ ‫ﻗﺪ ﻳﺒﺪأ اﻟﱰﻗﻴﻢ ﺑﻮاﺣﺪ !' ‪A(0) = 4.5‬‬
‫ﺗﻈﻬﺮ ﻋﻨﺪﻣﺎ ﺗﺘﺮك اﻟﺴﻄﺮ ﺑﻌﺪ آﺘﺎﺑﺔ آﻠﻤﺔ وﺣﺪة ﺑﺸﻜﻞ ﻣﺆﻗﺖ ﻟﺘﻨﺴﺦ‬ ‫‪A(1) = 4.71‬‬
‫‪A(2) = 4.82‬‬
‫ﺟﺰء ﻣﻦ ﺷﻔﺮة ﻣﺼﺪرﻳﺔ ﻓﻲ ﺳﻄﺮ أﺧﺮ‪.‬‬ ‫‪A(3) = 4.92‬‬
‫وﻧﻌﻢ اﻟﺘﻄﻮر!!!!‬

‫‪72‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫‪4/1‬‬ ‫إﻧﻲ ذﻛﺮﺗﻚ واﻟﺬﻛﺮى ﻣﺆرﻗﺔ‬
‫ﺗﺮﻛﻲ اﻟﻌﺴﻴﺮي ‪ ‬‬
‫‪ .13‬اﻟﻤﺘﺮﺟﻢ اﻟﻐﺒﻲ ‪The stupid compiler‬‬

‫واﻟﺬي ﻗﺪ ﻳﺠﺮي ﻋﻤﻠﻴﺔ ﺗﺮﺟﻤﺔ ‪ Compiling‬رﻏﻢ وﺟﻮد ﺑﻌﺾ اﻷﺧﻄﺎء ﻧﺤﻮﻳﺔ‪ ،‬ﻟﻴﻈﻬﺮ ﺧﻄﺄ آﺘﺎﺑﺔ اﻟﻌﺒﺎرة ‪ If‬دون ‪ End If‬آﺨﻄﺄ‬
‫وﻗﺖ اﻟﺘﻨﻔﻴﺬ ‪. Run time error‬‬

‫‪ .14‬ﻋﻮدة اﻟﻰ اﻹﺟﺮاءات ﻣﻦ اﻟﻨﻮع ‪Sub‬‬


‫‪ ‬‬ ‫اﻹﺟﺮاءات ﻣﻦ اﻟﻨﻮع ‪ Sub‬ﻳﻤﻜﻦ أن ﺗﺼﺮح ﺑﺎﻟﻜﻠﻤﺔ اﻟﻤﺤﺠﻮزة ‪ ،Private ،Public‬أو ‪ . Static‬أﻋﻄﻴﻚ ‪ 100‬دوﻻر أن وﺟﺪت‬
‫ﺣﺎﻟﺔ ﺣﻘﻴﻘﻴﺔ ﺗﺴﺘﺤﻖ ﻓﻌﻼ اﻻﺳﺘﻔﺎدة ﻣﻦ ﺗﻌﺮﻳﻒ اﻹﺟﺮاء ﺑﺎﺳﺘﺨﺪام ‪Static‬‬
‫‪ ‬‬

‫‪ ‬‬ ‫‪ .15‬اﻟﻔﺎﺋﺪة ﻓﻲ اﻟﻨﻬﺎﻳﺔ ﻟﻚ ﻳﺎ ﺑﻴﻞ ﺟﻴﺘﺲ‬

‫وأﺣﺎول ﺑﻘﺼﺎر ﺟﻬﺪي ﻹﻳﻘﺎف أرﺑﺎﺣﻪ‪ ،‬رﻏﻢ أﻧﻲ ﻣﺘﺄآﺪ ﺑﺄﻧﻲ أﺳﺎﻋﺪﻩ أﻳﻀﺎ!!‬

‫ﻳﺘﺒﻊ‪...‬‬

‫‪ ‬‬

‫‪73‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫‪ ‬‬

‫‪ ‬‬ ‫‪ ‬‬

‫إذا ﻋﻠﻤﺖ أن ﺟﺪ ﺳﺎﻟﻢ ﺗﻮﻓﻲ ﺳﻨﺔ ‪ 1872‬م‪ ،‬وأن ﺳﺎﻟﻢ ﺗﻮﻓﻲ ﺑﻌﺪ ﻣﻴﻼد ﺟﺪه ﺑﻤﻘﺪار ‪ 131‬ﺳﻨﺔ‪ ،‬وإن‬
‫ﻣﺠﻤﻮع ﻋﻤﺮي ﺳﺎﻟﻢ وﺟﺪه ‪ 105‬ﺳﻨﻮات‪ ،‬ﻓﻔﻲ أي ﺳﻨﺔ وﻟﺪ ﺳﺎﻟﻢ‪...‬‬

‫ﻳﻘﻮم اﻟﻤﻬﻨﺪس ﺧﺎﻟﺪ ﺑﺒﻨﺎء ﺣﺎﺋﻂ ﻣﻨﺰل ﺧﻼل ‪ 4‬ﺳﺎﻋﺎت ﻋﻤﻞ ﻣﺘﻮاﺻﻠﺔ ‪ ،‬ﺑﻴﻨﻤﺎ ﻳﻘﻮم اﻟﻤﻬﻨﺪس ﺣﺎﻣﺪ‬
‫ﺑﺒﻨﺎء ﻧﻔﺲ اﻟﺤﺎﺋﻂ ﻓﻲ ‪ 6‬ﺳﺎﻋﺎت ﻣﺘﻮاﺻﻠﺔ ‪ ،‬ﻓﺈذا ﺟﻤﻌﻨﺎ اﻟﻤﻬﻨﺪس ﺣﺎﻣﺪ واﻟﻤﻬﻨﺪس ﺧﺎﻟﺪ ﻓﻜﻢ ﻣﻦ اﻟﻮﻗﺖ‬
‫ﻳﺴﺘﻐﺮق ﺑﻨﺎء اﻟﺤﺎﺋﻂ ﻧﻔﺴﻪ ؟؟‬

‫ﻧﺮﻳﺪ ﺷﺮاء ‪ 100‬ﻃﻴﺮ ﻣﻦ اﻷﻧﻮاع اﻟﺘﺎﻟﻴﺔ ﺑـ ‪ 100‬رﻳﺎل ‪،‬ﺑﺤﻴﺚ ﺳﻌﺮ اﻟﺪﺟﺎﺟﺔ اﻟﻮاﺣﺪة ‪ 5‬رﻳﺎل ‪ ،‬وﺳﻌﺮ‬
‫ﻻ واﺣﺪًا ‪ ،‬وﺳﻌﺮ ‪ 20‬ﻋﺼﻔﻮرا ﺑﺮﻳﺎل واﺣﺪ ﻓﻘﻂ ‪ .‬ﻓﻜﻢ ﻋﺪد اﻟﻄﻴﻮر ﻣﻦ ﻛﻞ ﻧﻮع؟‬
‫اﻟﺤﻤﺎﻣﺔ اﻟﻮاﺣﺪة رﻳﺎ ً‬

‫ﻣﺎ ﻋﻠﻴﻚ إﻻ أن ﺗﺴﺘﻌﻤﻞ ﻣﻌﺎدﻻت رﻳﺎﺿﻴﺔ ﺑﺴﻴﻄﺔ ﻟﺘﺠﺪ اﻟﺤﻞ‪.‬‬

‫اﻷﺧﻄﺎء اﻟﺴﺒﻌﺔ ‪7 Bugs ...‬‬


‫اﻟﻠﻌﺒﺔ ﺑﺴﻴﻄﺔ ﺟﺪا‪...‬‬
‫ﻣﺎ ﻋﻠﻴﻚ إﻻ أن ﺗﺮاﺟﻊ اﻟﺸﻔﺮة اﻟﺒﺮﻣﺠﻴﺔ و ﺗﻜﺘﺸﻒ اﻷﺧﻄﺎء اﻟﻤﻨﻄﻘﻴﺔ و‪/‬أو اﻟﻨﺤﻮﻳﺔ اﻟﻤﻮﺟﺪة ﻓﻴﻬﺎ وﻫﻲ ‪7‬‬
‫أﺧﻄﺎء‪ ...‬ﻣﻤﻨﻮع اﻟﻐﺶ واﺳﺘﻌﻤﺎل ﺑﻴﺌﺔ اﻟﺘﻄﻮﻳﺮ أو أي ﻣﺘﺮﺟﻢ ﺧﺎص ﺑﺎﻟﻠﻐﺔ‪..‬‬
‫ﻗﺼﺺ ﻧﺠﺎح ‪ -‬اﻟﺤﻠﻘﺔ اﻷوﻟﻰ ‪-‬‬

‫ﻧﺠﻢ اﻷدﻣﻐﺔ اﻹﻟﻜﺘﺮوﻧﻴﺔ‬


‫ﻓﻴﻠﻴﺐ ﻛﺎن‪ .‬ﻣﺆﺳﺲ ﺷﺮﻛﺔ ﺑﻮرﻻﻧﺪ‬
‫داﺧﻞ ﻣﺴﺘﺸﻔﻰ ﻟﻠﻤﺠﺎﻧﻴﻦ‬
‫اﻟﺪﻛﺘﻮر ﻟﻠﻤﺮﻳﺾ‪:‬اﺳﻤﻚ إﻳﻪ؟ اﻟﻤﺮﻳﺾ‪:‬أﻧﺎ اﺑﻦ ﻧﺎﺑﻠﻴﻮن ﺑﻮﻧﺎﺑﺮت‬
‫ﺳﺎﺑﻪ اﻟﺪﻛﺘﻮر وﺳﺎل ﻣﺮﻳﺾ ﺗﺄﻧﻲ ﻣﻴﻦ ده‪ ،‬اﻟﻤﺮﻳﺾ اﻟﺜﺎﻧﻲ ‪:‬ده اﺑﻦ ﻧﺎﺑﻠﻴﻮن ﺑﻮﻧﺎﺑﺮت‬
‫اﻟﺪﻛﺘﻮر ﺑﺺ ﺷﺎف ﻣﺮﻳﺾ آﺧﺮ ﻣﺶ ﻣﻘﺘﻨﻊ ﺑﺎﻟﻜﻼم اﻵﺧﺮﻳﻦ ﻓﺴﺄﻟﻪ اﻟﺪﻛﺘﻮر‪:‬ﻫﻮ ده ﻓﻌﻼ اﺑﻦ ﻧﺎﺑﻠﻴﻮن ﺑﻮﻧﺎﺑﺮت‬
‫اﻟﻤﺮﻳﺾ‪:‬ﻛﺪاب ﻃﺒﻌﺎ ده ﻻ اﺑﻨﻲ وﻻ اﻋﺮﻓﻪ‪.‬‬

‫ﻧﺘﺴﻜﻴﺐ‪/‬اﻟﻘﺼﺔ اﻟﻜﺎﻣﻠﺔ ﻟﻌﻤﻴﺪ ﻣﺘﺼﻔﺤﺎت اﻹﻧﺘﺮﻧﺖ اﻟﺬي ﺗﻢ إﻳﻘﺎﻓﻪ‬ ‫وداﻋﺎً‬

‫إﻋﺪاد وﻟﻴﺪ ﺑﻮاﻟﻄﻤﻴﻦ‬


‫أﻃﻔﺎل ﻗﺮاﺻﻨﺔ ﻓﻲ ﻣﺪرﺳﺘﻲ‬
‫اﻟـﻐــﺎﻣــﺪي‬
‫ﻓﻲ ﻛﻞ ﻳﻮم ﻛﻨﺖ أﺳﻤﻊ ﻓﻴﻪ ﻋﻦ ﺧﺴﺎﺋﺮ ﺑﺎﻟﻤﻠﻴﺎرات ﺳﻨﻮﻳﺎ ﻣﻦ ﻣﺤﻄﺎت ﻣﺨﺘﻠﻔﺔ ﻧﺘﻴﺠﺔ ﻟﻌﻤﻠﻴﺎت اﻻﺧﺘﺮاق و اﻟﻘﺮﺻﻨﺔ‪.‬‬
‫وﺑﻴﻨﻤﺎ أﻧﺎ اﻛﺘﺐ ﻓﻲ أﺣﺪ اﻟﻤﻨﺘﺪﻳﺎت أﺗﺘﻨﻲ ﺧﺎﻃﺮة وﻫﻲ‪:‬‬

‫ﺗﺬﻛﺮت أﻃﻔﺎل ﻛﺎﻧﻮا أﻳﺎم دراﺳﺘﻲ اﻟﺘﻲ )ﻟﻢ أﺗﺎﺑﻊ ﺑﻬﺎ( وﺗﺬﻛﺮت ﻓﻴﻬﺎ إﻧﺠﺎزات أﻃﻔﺎل ﻓﻲ ﻣﺪرﺳﺘﻨﺎ ﻓﻲ ﺳﺒﻴﻞ اﻟﻘﺮﺻﻨﺔ‬
‫ﻧﻌﻢ رﺑﻤﺎ اﻟﻘﺮﺻﻨﺔ ﻓﻲ ﻣﻮﻗﻌﻨﺎ اﻟﺒﺮﻣﺠﻲ ﺗﻌﻨﻲ ﺷﻲء وﻟﻜﻦ ﻓﻲ ﻣﺪرﺳﺘﻲ ﺗﻌﻨﻲ أﺷﻴﺎء أﺧﺮى وﻫﻲ رﺑﻤﺎ‬
‫ﻋﻠﻰ ﺳﺒﻴﻞ اﻟﻤﺜﺎل‪.‬‬
‫ﻓﻔﻲ أﻳﺎم اﻻﺧﺘﺒﺎرات اﻷوﻟﻴﺔ ﻣﺜﻞ اﻹﻣﻼء واﻟﻤﺬاﻛﺮات وﻏﻴﺮﻫﺎ ﻣﻦ اﻹﺟﺮاءات اﻟﺘﻲ ﻳﺘﻄﻠﺒﻬﺎ اﻟﻄﺎﻟﺐ ﻟﻴﻨﺠﺢ ﻓﻴﻬﺎ‬
‫ﻛﺎن ﻛﻞ ﻣﺮة ﻳﺄﺗﻴﻨﺎ ﻃﻔﻞ وﻳﺤﺪﺛﻨﺎ ﻋﻠﻰ ﺛﻐﺮة ﻓﻲ ﻋﻤﻠﻴﺔ اﻻﺧﺘﺒﺎر‬
‫ﻓﺤﻴﻦ ﻧﻜﺘﺐ إﻣﻼء ﻛﺎن ﻳﻜﺘﺒﻬﺎ ﻋﻠﻰ اﻟﺼﻔﺤﺔ ﻓﻲ ﻣﻨﺘﺼﻒ اﻟﺪﻓﺘﺮ وﺣﻴﻦ ﺗﺄﺗﻲ اﻵﻧﺴﺔ ﻻ ﺗﺮاﻫﺎ وﻣﻨﻬﻢ ﻣﻦ ﻳﻜﻮن ﻗﺮﺻﺎن ذو ﻗﺪرة أﻋﻠﻰ‬
‫وﻫﻲ أن ﻳﻘﻮم ﺑﻜﺘﺎﺑﺔ اﻹﻣﻼء ﻋﻠﻰ ﺻﻔﺤﺔ وﺿﻌﻬﺎ ﻓﻮق ﺻﻔﺤﺔ اﻟﺪﻓﺘﺮ أﺛﻨﺎء ﻋﻤﻠﻴﺔ اﻟﻜﺘﺎﺑﺔ وﻳﻀﻐﻂ ﺑﺎﻟﻘﻠﻢ ﺣﺘﻰ ﺗﺒﻘﻰ آﺛﺎر اﻟﻜﺘﺎﺑﺔ ﻋﻠﻰ‬
‫اﻟﺪﻓﺘﺮ ﻟﻠﻐﺪ ﺣﺘﻰ ﺗﺄﺗﻲ اﻵﻧﺴﺔ وﺗﻘﺮأﻫﺎ ﻟﻨﻜﺘﺒﻬﺎ‪.‬‬
‫ﻓﺘﻜﻮن ﻣﻬﻤﺘﻪ ﻫﻲ أن ﻳﻌﻴﺪ اﻟﻜﺘﺎﺑﺔ ﻓﻮق اﻟﻨﺺ اﻟﺸﻔﺎف و ﻳﺄﺧﺬ ﻋﻼﻣﺔ ﺟﻴﺪ ﺟﺪا‪...‬‬
‫وﻟﻜﻦ اﻟﻤﺼﻴﺒﺔ ﺑﺎﻟﻤﻘﻠﺪﻳﻦ ﻟﻠﻔﻜﺮة ﻓﻴﺄﺗﻴﻚ أﻃﻔﺎل أﻏﺒﻴﺎء ﻓﺘﺄﺗﻲ اﻵﻧﺴﺔ وﺗﻘﺮأ وﻫﻢ ﻳﻜﺘﺒﻮن وﻟﻜﻦ ﻟﺴﻮء ﺣﻈﻬﻢ أن اﻵﻧﺴﺔ ﻻ ﺗﺒﺪأ ﻣﻦ‬
‫اﻷﻋﻠﻰ ﻓﻴﻜﺘﺒﻮﻧﻬﺎ وﻳﻈﻨﻮن أﻧﻬﻢ أذﻛﻴﺎء )ﻷﻧﻬﻢ ﻻ ﻳﺠﻴﺪون اﻟﻘﺮاءة( واﻟﻨﺘﻴﺠﺔ ﻫﻲ اﻛﺘﺸﺎف أﻣﺮه وأﺧﺬ ﻋﻼﻣﺔ ال ‪ 0‬وﺿﺎﻋﺖ ﻫﺬه‬
‫اﻟﻔﻜﺮة اﻟﺬﻫﺒﻴﺔ ﻣﻦ اﻷﻃﻔﺎل اﻵﺧﺮﻳﻦ ﻻن ﺑﺮﻧﺎﻣﺞ ‪ - Anti Trojan‬أﻗﺼﺪ اﻵﻧﺴﺎت‪ -‬اﻛﺘﺸﻔﺘﻦ اﻟﺨﻄﺔ وﺑﺎﺗﺖ ﻣﻜﺸﻮﻓﺔ وﺗﻢ إﻏﻼق‬
‫ﻫﺬه اﻟﺜﻐﺮة ﺑﻌﺪة ﻃﺮق‪.‬‬

‫وأﺧﻴﺮا ﻧﺄﺗﻲ ﻟﻠﻤﺤﺔ اﻟﻨﺠﺎح ﻧﻌﻢ ‪ ...‬ﻛﺎن ﻓﻲ ﻧﻬﺎﻳﺔ ﻛﻞ ﺳﻨﺔ دراﺳﻴﺔ ﻳﻌﻄﻮﻧﺎ ﺻﻔﻴﺤﺔ ﻣﻜﺘﻮب ﺑﻬﺎ ﺗﻘﺪﻳﺮﻧﺎ اﻟﻔﺼﻠﻲ ‪-‬اﻟﺮاﺋﻊ‪ -‬ﻟﻴﺸﺎﻫﺪه‬
‫أﻫﻠﻲ واﻟﻤﺼﻴﺒﺔ ﻫﻨﺎ‪...‬‬
‫ﻓﻤﻦ ﻟﺪﻳﻪ ﻋﻠﻰ ﺻﻔﻴﺤﺘﻪ ﻛﺮﺗﻮﻧﺔ ﻣﻠﻮﻧﺔ وﻣﺰرﻛﺸﺔ ﻛﺎن ﻛﺄﻧﻪ اﻷول واﻟﻤﺼﻴﺒﺔ ﻫﻲ ﺑﻤﻦ ﻟﻢ ﻳﺄﺧﺬ ﻫﺬه اﻟﻜﺮﺗﻮﻧﺔ اﻟﻤﻠﻮﻧﺔ وﻳﻌﻴﺐ ﻋﻠﻴﻪ‬
‫أﻫﻠﻪ ﻋﺪم ﺗﺤﺼﻠﻪ ﻋﻠﻴﻬﺎ ﻣﻤﺎ دﻓﻊ ﻟﻈﻬﻮر "ﻗﺮاﺻﻨﺔ اﻟﺼﻔﺎﺋﺢ" وﻫﻢ أﻳﻀﺎ ﻣﻦ اﻷﻃﻔﺎل‬
‫ﻓﺒﺎت اﻷﻃﻔﺎل ﻳﺸﺘﺮون ﻫﺬه اﻟﻜﺮﺗﻮن وﻳﻀﻴﻔﻮﻧﻬﺎ ﻟﺼﻔﺎﺋﺤﻬﻢ وﻳﺘﻔﺎﺧﺮون أﻣﺎ اﻷﻃﻔﺎل ﺑﻬﺎ وﺑﺄﻟﻮاﻧﻬﺎ وﺑﻜﺒﺮ ﺣﺠﻤﻬﺎ واﻟﺪﻫﺸﺔ ﻛﺎﻧﺖ ﻻ‬
‫ﺗﻔﺮح أﺣﺪ أﻛﺜﺮ ﻣﻦ واﻟﺪﻳﻪ اﻟﻠﺬان ﻳﻈﻨﺎن أن أﺑﻨﻬﻤﺎ ﺳﻴﺼﺒﺢ ﻃﺒﻴﺐ اﻟﻤﺴﺘﻘﺒﻞ وﻟﻢ وﻟﻦ وووو وﻣﻦ ﻫﺬا اﻟﺤﻜﻲ اﻷﺣﻼم‬
‫إﻻ أن ﺗﻢ اﻛﺘﺸﺎف ﻫﺬه اﻟﻤﺸﻜﻠﺔ ﻣﻦ ﻗﺒﻞ أﺣﺪ اﻟﻤﺪرﺳﻴﻦ وذﻟﻚ أﻳﻀﺎ ﻟﻮﺟﻮد ﺗﻠﻤﻴﺬ ﻏﺒﻲ أﺿﺎف ﻋﻠﻰ ﺻﻔﻴﺤﺘﻪ ﻣﺠﻤﻮﻋﺔ ﻣﻦ ﻫﺬه‬
‫اﻟﻜﺎرﺗﻮن ﻣﻦ أﻛﺒﺮﻫﺎ ﺣﺠﻤﺎ ﺣﻴﺚ ﻧﺴﻲ ﻫﺬا اﻟﻄﻔﻞ اﻟﻐﺒﻲ أن ﻋﻼﻣﺎﺗﻪ ﻻ ﺗﺘﻨﺎﺳﺐ ﻣﻊ ﻫﺬه اﻟﻜﺎرﺗﻮن ﻣﻤﺎ أدى ﻟﻜﺸﻔﻪ وﻓﻀﻴﺤﺘﻪ‬
‫واﻛﺘﺸﻒ اﻟﺠﻬﺎز اﻹداري ﻫﺬه اﻟﺜﻐﺮة وأﻟﺰم اﻹدارة ﺑﻮﺿﻊ ﺧﺘﻢ ﻋﻠﻴﻬﺎ ﻟﺘﺄﻛﻴﺪﻫﺎ‬
‫ﻧﻌﻢ ﻳﺎ ﺗﺮى ﻫﻞ ﻛﻨﺖ ﻗﺮﺻﺎن ﻓﻲ ﺻﻐﺮي رﺑﻤﺎ‬
‫ﻓﺤﻴﻦ ﻛﺎﻧﻮا ﻳﻌﻄﻮﻧﺎ ﻫﺬه اﻟﺼﻔﺎﺋﺢ ﻟﻴﺸﺎﻫﺪﻫﺎ أﺣﺪ أﻓﺮاد أﺳﺮﺗﻲ وﻳﻮﻗﻌﻮﻧﻬﺎ ﻛﻨﺖ ﺑﻜﻞ ﺳﻬﻮﻟﺔ أﻗﻠﺪ ﺗﻮﻗﻴﻊ واﻟﺪي أو أﺧﺘﺮع ﺗﻮﻗﻴﻊ‬
‫وﺑﻌﺾ اﻟﻌﺒﺎرات اﻟﻤﺸﺠﻌﺔ ﻟﻶﻧﺴﺔ "ﺷﻜﺮا ﻟﻜﻢ وﻋﻠﻰ ﺑﺬﻟﻜﻢ اﻟﻤﺠﻬﻮد اﻟﺮاﺋﻊ ﻓﻲ ﺳﺒﻴﻞ إﻧﺸﺎء وﻟﺪي ﻋﻠﻤﻴﺎ وزﻳﺎدة ﻣﻬﺎرﺗﻪ"‬
‫وﻛﻨﺖ أراﻋﻲ ﻋﻼﻣﺎﺗﻲ ﻓﺄرﻓﻖ ﻛﻼﻣﺎت اﻟﺘﻮﺑﻴﺦ ﻓﻲ ﺣﺎل ﻛﺎﻧﺖ ﻋﻼﻣﺎﺗﻲ ﻗﻠﻴﻠﺔ "ﺷﻜﺮا ﻟﻜﻢ و أرﺟﻮﻛﻢ أن ﺗﺒﺬﻟﻮا ﻣﺠﻬﻮد أﻛﺒﺮ ﻋﺴﻰ أن‬
‫ﻳﺘﺤﺴﻦ وﻟﺪي ﻓﻲ دراﺳﺘﻪ"‬
‫وﺣﻴﻦ ﺗﺄﺗﻲ ﻟﻶﻧﺴﺔ ﻟﺘﻘﺮأﻫﺎ ﻛﺎﻧﺖ اﻵﻧﺴﺔ ﺗﻜﺸﺮ ﻋﻦ أﺳﻨﺎﻧﻬﺎ وﻛﺄﻧﻬﺎ وﺟﺪت ﻣﺎ ﻳﻄﻔﺊ ﻋﻄﺸﻬﺎ ﻻﺳﺘﻌﻤﺎل ﻟﺴﺎﻧﻬﺎ أو‬
‫‪..........‬؟!!!! وﻟﻜﻨﻬﺎ ﻻ ﺗﺪري أﻧﻲ أوﻗﻌﺘﻬﺎ ﻓﻲ اﻟﻄﻌﻢ ﻓﺼﺪﻗﺖ اﻟﻄﻌﻢ ﺑﻴﻨﻤﺎ أﺳﺮﺗﻲ ﻟﻢ ﺗﺮى ﻗﻂ اﻟﻨﺘﻴﺠﺔ‪.‬‬
‫ﻓﺤﻴﻦ ﻳﺴﺄﻟﻮﻧﻲ أﻗﻮل ﻟﻬﻤﺎ اذﻫﺒﻮا ﻟﻠﻤﺪرﺳﺔ ﺑﻜﻞ ﺷﺠﺎﻋﺔ ﻓﻴﻈﻨﻮن أﻧﻬﻢ ﻟﻢ ﻳﻌﻄﻮﻧﻲ إﻳﺎه وﻳﻨﺘﻈﺮون آﺧﺮ اﻟﺴﻨﺔ ﻓﻴﺮوي اﻟﻨﺼﻴﺐ ﻣﻨﻪ أو‬
‫ﻛﻨﺖ أﺧﻔﻴﻪ ﻋﻨﻬﻢ أﻳﻀﺎ‬

‫أﻛﻴﺪ ﻫﺬه اﻷﻓﻌﺎل رﺑﻤﺎ ﻣﻠﺘﻮﻳﺔ وﻟﻜﻦ رﺑﻤﺎ ﺗﻌﺒﺮ ﻋﻦ ﻃﺎﻗﺔ ﻓﻲ ﻫﺆﻻء‬
‫اﻷﻃﻔﺎل رﺑﻤﺎ ﺳﻴﻜﻮﻧﻮن ﻣﻦ اﻟﻘﺮاﺻﻨﺔ ﻓﻲ اﻟﻤﺴﺘﻘﺒﻞ‪.‬‬

‫‪75‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫اﻷﺧﻄﺎء اﻟﺴﺒﻌﺔ ‪7 Bugs ...‬‬
‫إﻋﺪاد وﻟﻴﺪ ﺑﻮاﻟﻄﻤﻴﻦ‬
‫اﻟﻠﻌﺒﺔ ﺑﺴﻴﻄﺔ ﺟﺪا‪...‬‬
‫ﻣﺎ ﻋﻠﻴﻚ إﻻ أن ﺗﺮاﺟﻊ اﻟﺸﻔﺮة اﻟﺒﺮﻣﺠﻴﺔ و ﺗﻜﺘﺸﻒ اﻷﺧﻄﺎء اﻟﻤﻨﻄﻘﻴﺔ و‪/‬أو اﻟﻨﺤﻮﻳﺔ اﻟﻤﻮﺟﺪة ﻓﻴﻬﺎ‪...‬‬
‫ﻣﻤﻨﻮع اﻟﻐﺶ واﺳﺘﻌﻤﺎل ﺑﻴﺌﺔ اﻟﺘﻄﻮﻳﺮ أو أي ﻣﺘﺮﺟﻢ ﺧﺎص ﺑﺎﻟﻠﻐﺔ‪..‬‬
‫ﻟﻨﺒﺪأ‪.‬‬
‫ب‬
‫ﻋﻠﻴﻚ أن ﺗﻌﺮف أﻧﻪ ﻋﻨﺪ ﺣﺴﺎب ﻗﻮة ﻋﺪد ﻟﻌﺪد أﺧﺮ ﻣﺜﻼ أ ﻟﻪ ﺷﺮوط ﻳﻤﻜﻨﻚ اﻻﻃﻼع ﻋﻠﻴﻬﺎ ﻓﻲ اﻟﺤﻞ اﻟﺨﺎص ﺑﻬﺬه اﻟﺸﻔﺮة ﻟﻜﻦ‬
‫ﻗﺒﻞ ذﻟﻚ ﻋﻠﻴﻚ أن ﺗﺠﺮب ﺟﻤﻴﻊ اﻟﺤﺎﻻت‪ ،‬ﻛﻤﺎ أن اﻟﺤﻞ ﻣﺮﻓﻖ و ﻳﺠﺐ أن ﺗﻄﺎﻟﻌﻪ وﻟﻜﻦ ﺑﻌﺪ اﻟﻘﻴﺎم ﺑﺎﻟﺒﺤﺚ ﻋﻦ اﻷﺧﻄﺎء‬
‫أوﻻ اﻟﻤﺜﺎل ﺑﻠﻐﺔ اﻟﺴﻲ ﺷﺎرب‪،‬‬

‫ﻛﻮد‪:‬‬
‫;‪using System.Collections.Generic‬‬
‫;‪using System.Linq‬‬
‫;‪using System.Text‬‬

‫‪namespace SevenBugs‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;)"‪Console.Out.WriteLine("Enter the First and the second number‬‬
‫‪Point calculateExpVar = new Point‬‬
‫{‬
‫‪X = (uint)Console.ReadLine(),‬‬
‫)(‪Y = (uint)Console.ReadLine‬‬
‫}‬
‫;)‪uint result = CaclculateExp(calculateExpVar.X, calculateExpVar.Y‬‬
‫;))(‪Console.Out.WriteLine("The result is :" + result.ToString‬‬
‫}‬
‫)‪public uint CalculateExp(int num1, int num2‬‬
‫{‬
‫;)‪return (uint)Math.Pow((double)num1, (double)num2‬‬
‫}‬
‫}‬
‫‪public class Point‬‬
‫{‬
‫;‪private uint _X‬‬
‫;‪private uint _Y‬‬
‫‪public uint X‬‬
‫{‬
‫};‪get {return _X‬‬
‫};‪set {_X = value‬‬
‫}‬
‫‪public uint Y‬‬
‫{‬
‫};‪get {return _Y‬‬
‫};‪set {_Y = value‬‬
‫}‬
‫}‬
‫}‬
‫ﻣﺠﻨﻮن ﺑﻤﺼﻠﺤﺔ اﻟﻤﺠﺎﻧﻴﻦ ﻫﻮ وﺻﺪﻳﻘﻪ ﻧﺰﻻ إﻟﻰ اﻟﺒﺤﺮ ﻟﻠﺴﺒﺎﺣﺔ‬ ‫ﻋﺼﻔﻮر ﻳﺤﺐ أن ﻳﺴﻤﻊ زﻗﺰﻗﺘﻪ‬ ‫ﻛﻞ‬
‫ﻓﻐﺮق اﻟﺼﺪﻳﻖ ﺛﻢ أﺳﺮع اﻟﻤﺠﻨﻮن إﻟﻴﻪ وأﻧﻘﺬه وﻋﻨﺪﻫﺎ ﻗﺎل ﻃﺒﻴﺐ‬
‫ﻣﺜﻞ اﻧﺠﻠﻴﺰي‬
‫ﻓﻲ أﺣﺪ اﻟﻤﻄﺎﻋﻢ ﻋﻠﻖ زﺑﻮن ﻣﻌﻄﻔﻪ وذهﺐ إﻟﻰ اﻟﻤﺼﻠﺤﺔ ﻟﻠﻤﺠﻨﻮن‪! :‬ﻋﻤﻠﻚ اﻟﺒﻄﻮﻟﻲ ﻳﺤﺘﻢ ﻋﻠﻴﻨﺎ أن ﻧﺨﺮﺟﻚ ﻣﻦ‬
‫اﻟﺤﻤﺎم ﻓﺮﺳﻢ ﺻﺪﻳﻘﻪ ﻓﻲ ﻏﻔﻠﺔ ﻋﻨﻪ رأس ﺣﻤﺎر ﻋﻠﻰ اﻟﻤﺴﺘﺸﻔﻰ ﻷﻧﻚ ﺷﻔﻴﺖ ﺗﻤﺎﻣﺎ‬
‫ﺑﻤﻌﻄﻔﻲﺻﺎﺣﺒﻪ و رأى ﻣﺎ رأى ﻗﺎل ﻣﻦ وﻟﻜﻦ ﻟﻸﺳﻒ ﺻﺪﻳﻘﻚ اﻟﺬي أﻧﻘﺬﺗﻪ ﺷﻨﻖ ﻧﻔﺴﻪ ﺑﻌﺪ ذﻟﻚ ﻓﻘﺎل‬
‫ﻣﻌﻄﻔﻪ وﻟﻤﺎ ﻋﺎد‬
‫ﻣﺴﺢ وﺟﻬﻪ‬
‫اﻟﻤﺠﻨﻮن ﻻ ﻟﻢ ﻳﺸﻨﻖ ﻧﻔﺴﻪ ﺑﻞ أﻧﺎ ﻣﻦ ﻋﻠﻘﻪ ﻟﺘﺠﻒ ﺛﻴﺎﺑﻪ‬
‫‪76‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫اﻷﺧﻄﺎء اﻟﺴﺒﻌﺔ ‪7 Bugs ...‬‬
‫إﻋﺪاد وﻟﻴﺪ ﺑﻮاﻟﻄﻤﻴﻦ‬ ‫اﻵن ﺑﻠﻐﺔ اﻟﻔﻴﺒﻲ ‪.‬ﻧﺖ‬
‫ﻛﻮد‪:‬‬
‫‪Imports System.Collections.Generic‬‬
‫‪Imports System.Linq‬‬
‫‪Imports System.Text‬‬
‫‪Namespace SevenBugs‬‬
‫‪Public Class Program‬‬
‫))(‪Public Shared Sub Main(ByVal args As String‬‬
‫)"‪Console.Out.WriteLine("Enter the First and the second number‬‬
‫_ ‪Dim calculateExpVar As New Point With‬‬
‫{‬
‫_ ‪.X = Convert.ToUInt32(Console.ReadLine()),‬‬
‫_ ))(‪.Y = Convert.ToUInt32(Console.ReadLine‬‬
‫}‬
‫‪With calculateExpVar‬‬
‫)‪Dim result As UInteger = CaclculateExp(.X, .Y‬‬
‫))‪Console.Out.WriteLine("The result is:" & CStr(result‬‬
‫‪End With‬‬
‫‪End Sub‬‬
‫‪Public Function CalculateExp(ByVal num1 As Integer, ByVal num2 As Integer) As‬‬
‫‪UInteger‬‬
‫)‪Return Convert.ToUInt32(num1 ^ num2‬‬
‫‪End Function‬‬
‫‪End Class‬‬
‫‪Public Class Point‬‬
‫‪Private _X, _Y As UInteger‬‬
‫‪Public Property X() As UInteger‬‬
‫‪Get: Return _X: End Get‬‬
‫)‪Set(ByVal value As UInteger‬‬
‫‪_X = value‬‬
‫‪End Set‬‬
‫‪End Property‬‬
‫‪Public Property Y() As UInteger‬‬
‫‪Get: Return _Y: End Get‬‬
‫)‪Set(ByVal value As UInteger‬‬
‫‪_Y = value‬‬
‫‪End Set‬‬
‫‪End Property‬‬
‫‪End Class‬‬
‫‪End Namespace‬‬
‫‪25‬ﺳﻨﺔ ﺗﻘﻀﻴﻬﺎ ﻣﻦ ﻋﻤﺮك أﻣﺎم اﻟﺤﺎﺳﺐ !!!‬
‫ﻓﻲ اﺳﺘﻔﺘﺎء ﻗﺎم ﺑﻪ ﻣﻮﻗﻊ ﺷﺮﻛﺔ ‪ humyo.com‬ﻋﻦ ﻣﻌﺪل ﺟﻠﺴﺔ اﻟﺸﺨﺺ أﻣﺎم ﺷﺎﺷﺔ اﻟﺤﺎﺳﺐ‪ .‬ﺗﺒﻴﻦ ﻣﻦ ﻧﺘﻴﺠﺔ اﻻﺳﺘﻔﺘﺎء أن‬
‫اﻟﺸﺨﺺ ﻃﻴﻠﺔ ﺣﻴﺎﺗﻪ ﺳﻴﻘﻀﻲ ﻣﺎ ﻣﺘﻮﺳﻄﻪ ‪8.984‬ﻳﻮﻣﺎ ﻗﺎﺑﻌﺎ أﻣﺎم ﺷﺎﺷﺔ اﻟﺤﺎﺳﺐ‪ ،‬أي ﻣﺎ ﻳﻌﺎدل ‪24‬ﺳﻨﺔ و ‪8‬أﺷﻬﺮ‪ .‬وﻣﻦ‬
‫اﻟﻤﺘﻌﺎرف ﻋﻠﻴﻪ أن أﻛﺜﺮ ﻣﺎ ﻳﻤﻀﻴﻪ اﻹﻧﺴﺎن ﻣﻦ ﻋﻤﺮه ﻫﻮ ﻓﻲ اﻟﻨﻮم‪ ،‬ﻓﺎﻹﻧﺴﺎن ﻳﻘﻀﻲ ﺛﻠﺚ ﻋﻤﺮه ﻓﻴﻪ ‪.‬وﻟﻜﻦ اﻵن ﺟﺎء ﻣﻨﺎﻓﺲ‬
‫ﻟﻬﺬه اﻟﺤﻘﻴﻘﺔ وﻫﻲ ﻇﺎﻫﺮة اﻟﺠﻠﻮس أﻣﺎم ﺷﺎﺷﺔ اﻟﺤﺎﺳﺐ‪ .‬ﻓﻠﻮ اﻓﺘﺮﺿﻨﺎ أن إﻧﺴﺎﻧًﺎ ﻋﺎش ‪60‬ﺳﻨﺔ ﻓﺈن ‪20‬ﻣﻨﻬﺎ ﺳﻴﻘﻀﻴﻬﺎ ﻓﻲ اﻟﻨﻮم‬
‫ﺑﻴﻨﻤﺎ ‪24‬ﺳﻴﻘﻀﻴﻬﺎ أﻣﺎم ﺟﻬﺎز اﻟﺤﺎﺳﺐ!! وﻫﺬا ﺑﺎﻟﻄﺒﻊ أﻛﺜﺮ ﻣﻦ ﺣﺼﺔ اﻟﻨﻮم ﻓﻲ ﻋﻤﺮ اﻹﻧﺴﺎن وﺣﺘﻰ أﻛﺜﺮ ﻣﻦ ﺣﺼﺔ أي ﻋﻤﻞ‬
‫آﺧﺮ ﻣﻦ ﻋﻤﺮه‪ .‬ﻫﺬه اﻹﺣﺼﺎﺋﻴﺎت ﻣﻊ ﻋﺪم دﻗﺘﻬﺎ ﺗﺠﻌﻠﻨﺎ ﻧﺘﻨﺒﻪ إﻟﻰ اﻟﻮﻗﺖ اﻟﺬي ﻧﻘﻀﻴﻪ أﻣﺎم اﻟﺤﺎﺳﺐ‪ ،‬ﻫﻞ ﻳﻤﻜﻦ أن ﻧﻘﻮل إﻧﻬﺎ ﻣﻦ‬
‫اﻷوﻗﺎت اﻹﻧﺘﺎﺟﻴﺔ أم ﻣﻦ اﻷوﻗﺎت اﻟﻀﺎﺋﻌﺔ؟ ﻓﺈن ﻛﺎﻧﺖ ﻣﻦ اﻷوﻗﺎت اﻹﻧﺘﺎﺟﻴﺔ ﻓﺮﺑﺢ اﻟﺒﻴﻊ أﻣﺎ إن ﻛﺎﻧﺖ دون ذﻟﻚ ﻓﻬﻲ ﺧﺴﺎرة‬
‫ﻣﺤﺴﻮﺑﺔ ﻣﻦ أﻋﻤﺎرﻧﺎ ‪.‬‬
‫وﻫﻨﺎك ﺑﺮاﻣﺞ ﻋﺪﻳﺪة ﺗﺴﺎﻋﺪﻧﺎ ﻓﻲ ﻣﻌﺮﻓﺔ ﻛﻢ ﺳﺎﻋﺔ ﻧﻘﻀﻴﻬﺎ ﻓﻲ اﻷﻧﺸﻄﺔ اﻟﻤﺨﺘﻠﻔﺔ ﺧﻼل ﻋﻤﻠﻨﺎ ﻣﻊ ﺟﻬﺎز اﻟﺤﺎﺳﺐ‪ .‬ﻣﻨﻬﺎ‬
‫ﺑﺮﻧﺎﻣﺞ ‪ timesprite‬واﻟﺬي ﻳﺴﺠﻞ ﻟﻜﻞ ﺑﺮﻧﺎﻣﺞ اﻟﻮﻗﺖ اﻟﺬي ﺗﻘﻀﻴﻪ ﻓﻲ اﺳﺘﺨﺪاﻣﻪ‪ ،‬ﻛﻤﺎ ﻳﻘﺪم ﻟﻚ ﻧﻬﺎﻳﺔ اﻟﻴﻮم ﺗﻘﺮﻳﺮاً‬
‫ﻼ ﻋﻦ ﺳﺎﻋﺎت ﻧﻬﺎرك وﻛﻴﻒ ﺿﺎﻋﺖ ﻓﻲ ﻣﺘﺎﺑﻌﺔ ﺑﺮﻳﺪك اﻹﻟﻜﺘﺮوﻧﻲ أو ﻓﻲ ﺗﺼﻔﺢ اﻹﻧﺘﺮﻧﺖ أو ﻓﻲ ﺑﺮاﻣﺞ اﻟﻤﺤﺎدﺛﺔ‪ .‬ﺧﻼﺻﺔ‬ ‫ﻣﻔﺼ ً‬
‫ﻟﻘﻮل‪ ،‬ﺣﺮي ﺑﻬﺬا اﻟﺠﻴﻞ ﻣﻤﻦ ﻋﺎﻳﺶ اﺳﺘﺨﺪام ﺟﻬﺎز اﻟﺤﺎﺳﺐ أن ﻳﺘﺄﻣﻞ ﻓﻲ وﻗﺘﻪ اﻟﺬي ﻳﻘﻀﻴﻪ أﻣﺎﻣﻪ‪ ،‬وأن ﻳﺘﻨﺒﻪ‬
‫أﻳﻀﺎ ﻟﺼﺤﺘﻪ ﻓﺎﻟﺘﻬﺎب اﻟﻤﻔﺼﻞ اﻟﺮﺳﻐﻲ وﺿﻌﻒ اﻟﺒﺼﺮ وﺗﻨﻤﻞ اﻟﻴﺪ وﻏﻴﺮﻫﺎ ﻣﺎ ﻫﻲ إﻟﻰ ﺿﺮﻳﺒﺔ ﻗﻀﺎﺋﻨﺎ ﺟﻞ‬
‫أوﻗﺎﺗﻨﺎ ﻋﻠﻰ ﻫﺬه اﻷﺟﻬﺰة!! ﻓﻬﻞ اﻧﺘﺒﻬﻨﺎ ﻷﻧﻔﺴﻨﺎ!؟‬
‫أﺣﻴﺎﻧ ًﺎ ﻳﺼﻞ اﻷﻣﺮ ﻟــ ‪ 18‬ﺳﺎﻋﺔ ﻳﻮﻣﻴًﺎ و أﻧﺖ ﺗﺒﺮﻣﺞ أﻧﻈﻤﺔ ‪ -‬وهﺬا‬
‫اﻟﺠﻬﺎز ﻳﻘﻮم ﺑﺪورﻩ ﺑﺒﺮﻣﺠﺘﻚ‪...‬‬
‫‪77‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
7 Bugs ... ‫اﻷﺧﻄﺎء اﻟﺴﺒﻌﺔ‬
‫إﻋﺪاد وﻟﻴﺪ ﺑﻮاﻟﻄﻤﻴﻦ‬ ‫اﻟﺤﻞ‬
:‫ﻛﻮد‬
/*1‫اﳋﻄﺄ‬:
* System ‫ﳎﺎل اﻷﲰﺎء‬
* ‫ﻏﲑ ﻣﺴﺘﻮرد‬
*/
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SevenBugs
{
class Program
{
static void Main(string[] args)
{
Console.Out.WriteLine("Enter the First and the second number");
Point calculateExpVar = new Point
{
/*2‫اﳋﻄﺄ‬:
*‫ﻧﻮع ﺧﺼﺎﺋﺺ اﻟﻔﺌﺔ ﳚﺐ أن ﻳﺘﻮاﻓﻖ ﻣﻊ اﻟﺪاﻟﺔ اﻟﱵ ﺳﻨﻤﺮرهﻢ إﻟﻴﻬﺎ‬
*int ‫وهﻮ ﰲ ﺣﺎﻟﺘﻨﺎ اﻟﻨﻮع‬
*/
X = (uint)Console.ReadLine(),
Y = (uint)Console.ReadLine()
} //3‫اﳋﻄﺄ‬: ‫ﻋﻼﻣﺔ اﻟﺘﻨﺼﻴﺺ ;ﻏﲑ ﻣﻮﺟﻮدة‬

//4‫اﳋﻄﺄ‬: ‫ﺧﻄﺄ ﰲ اﺳﻢ اﻟﺪاﻟﺔ‬


uint result = CaclculateExp(caclculateExpVar.X, calculateExpVar.Y);
Console.Out.WriteLine("The result is :" + result.ToString());
}
/* 5‫اﳋﻄﺄ‬: ‫ ﻷﻧﻪ آﻞ داﻟﺔ‬static ‫هﺬﻩ اﻟﻄﺮﻳﻘﺔ ﳚﺐ أن ﺗﻜﻮن ﻣﺼﺮﺣﺔ ﺑﺎﻟﻜﻠﻤﺔ‬
* ‫ﻏﲑ ﻣﺼﺮﺣﺔ ﲠﺬﻩ اﻟﻜﻠﻤﺔ ﻻ ﳝﻜﻦ اﺳﺘﺪﻋﺎؤهﺎ ﻣﻦ ﻃﺮﻳﻘﺔ أﺧﺮى ﻋﺮﻓﺖ ﲠﺬﻩ‬
* main ‫اﻟﻜﻠﻤﺔ وهﻲ ﰲ ﺣﺎﻟﺘﻨﺎ اﻟﺪاﻟﺔ‬
*/
public uint CalculateExp(int num1, int num2)
{
/*6‫اﳋﻄﺄ‬: ‫ﺳﻨﺤﺼﻞ ﻋﻠﻰ ﻧﺘﺌﺞ ﻣﻐﺎﻳﺮة ﲤﺎﻣﺎ ﻟﻠﻨﺘﺎﺋﺞ اﳌﺘﻮﻗﻌﺔ‬
* Narrowing Converstion ‫ﻷﻧﻨﺎ اﺳﺘﻌﻤﻠﻨﺎ اﻟﺘﺤﻮﻳﻞ اﻟﻀﻴﻖ ﺑﲔ اﻷﻧﻮاع‬
* Int64 ‫ﺧﺎﺻﺔ ﰲ ﺣﺎﻟﺖ اﻷﻋﺪاد اﻟﻀﺨﻤﺔ آﻤﺎ أن اﻟﻨﺎﺗﺞ ﳚﺐ أن ﻳﻜﻮن‬
*‫ﻟﺘﻼﰲ ﺣﺼﻮل ﺣﺎﻟﺔ ﻋﺪدﻳﻦ آﺒﲑﻳﻦ ﺟﺪا‬
*/
/* 7‫اﳋﻄﺄ‬: ‫ ﻓﻬﺬا ﺧﻄﺄ رﻳﺎﺿﻲ رﻏﻢ أن‬،‫إذا ﻣﺎن اﻟﻌﺪدان ﻣﺴﺎوﻳﺎن ﻟﻠﺼﻔﺮ‬
* 1 ‫اﳌﱰﺟﻢ ﺳﻴﻌﻄﻴﻚ اﻟﻨﺘﻴﺠﺔ‬
*/
return (uint)Math.Pow((double)num1, (double)num2);
}
}
Public class Point
{
private uint _X;
private uint _Y;
public uint X
{
get { return _X; }
set { _X = value; }
}
public uint Y
{
get { return _Y; }
set { _Y = value; }
}
}
}

78
2008 ‫ ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ‬/ ‫ ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ‬01 ‫اﻟﻌﺪد‬ vb4arab.com ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ‬
7 Bugs ... ‫اﻷﺧﻄﺎء اﻟﺴﺒﻌﺔ‬
‫إﻋﺪاد وﻟﻴﺪ ﺑﻮاﻟﻄﻤﻴﻦ‬ ‫اﻟﺤﻞ‬
:‫ﻛﻮد‬
‘1‫اﳋﻄﺄ‬:
‘System ‫ﳎﺎل اﻷﲰﺎء‬
‘‫ﻣﺴﺘﻮرد‬ ‫ﻏﲑ‬
Imports System.Collections.Generic
Imports System.Linq
Imports System.Text

Namespace SevenBugs
Public Class Program
Public Shared Sub Main(ByVal args As String())
Console.Out.WriteLine("Enter the First and the second number")
Dim calculateExpVar As New Point With _
{ ‘2‫اﳋﻄﺄ‬:‫ﻋﻼﻣﺔ اﻻﻧﺘﻘﺎل إﱃ اﻟﺴﻄﺮ _ ﻏﲑ ﻣﻮﺟﻮدة‬
‘3‫اﳋﻄﺄ‬:
‘‫ﻧﻮع ﺧﺼﺎﺋﺺ اﻟﻔﺌﺔ ﳚﺐ أن ﻳﺘﻮاﻓﻖ ﻣﻊ اﻟﺪاﻟﺔ اﻟﱵ ﺳﻨﻤﺮرهﻢ إﻟﻴﻬﺎ‬
‘integer ‫وهﻮ ﰲ ﺣﺎﻟﺘﻨﺎ اﻟﻨﻮع‬
.X = Convert.ToUInt32(Console.ReadLine()), _
.Y = Convert.ToUInt32(Console.ReadLine()) _
}
With calculateExpVar
‘4‫اﳋﻄﺄ‬: ‫ﺧﻄﺄ ﰲ اﺳﻢ اﻟﺪاﻟﺔ‬
Dim result As UInteger = CaclculateExp(.X, .Y)
Console.Out.WriteLine("The result is:" & CStr(result))
End With
End Sub
‘ 5‫اﳋﻄﺄ‬: ‫ ﻷﻧﻪ آﻞ داﻟﺔ‬shared ‫هﺬﻩ اﻟﻄﺮﻳﻘﺔ ﳚﺐ أن ﺗﻜﻮن ﻣﺼﺮﺣﺔ ﺑﺎﻟﻜﻠﻤﺔ‬
‘ ‫ﻏﲑ ﻣﺼﺮﺣﺔ ﲠﺬﻩ اﻟﻜﻠﻤﺔ ﻻ ﳝﻜﻦ اﺳﺘﺪﻋﺎؤهﺎ ﻣﻦ ﻃﺮﻳﻘﺔ أﺧﺮى ﻋﺮﻓﺖ ﲠﺬﻩ‬
‘ main ‫اﻟﻜﻠﻤﺔ وهﻲ ﰲ ﺣﺎﻟﺘﻨﺎ اﻟﺪاﻟﺔ‬
Public Function CalculateExp(ByVal num1 As Integer, ByVal num2 As Integer) As
UInteger
‘6‫اﳋﻄﺄ‬: ‫ﺳﻨﺤﺼﻞ ﻋﻠﻰ ﻧﺘﺌﺞ ﻣﻐﺎﻳﺮة ﲤﺎﻣﺎ ﻟﻠﻨﺘﺎﺋﺞ اﳌﺘﻮﻗﻌﺔ‬
‘ Narrowing Converstion ‫ﻷﻧﻨﺎ اﺳﺘﻌﻤﻠﻨﺎ اﻟﺘﺤﻮﻳﻞ اﻟﻀﻴﻖ ﺑﲔ اﻷﻧﻮاع‬
‘ Int64 ‫ﺧﺎﺻﺔ ﰲ ﺣﺎﻟﺖ اﻷﻋﺪاد اﻟﻀﺨﻤﺔ آﻤﺎ أن اﻟﻨﺎﺗﺞ ﳚﺐ أن ﻳﻜﻮن‬
‘‫ﻟﺘﻼﰲ ﺣﺼﻮل ﺣﺎﻟﺔ ﻋﺪدﻳﻦ آﺒﲑﻳﻦ ﺟﺪا‬
‘ 7‫اﳋﻄﺄ‬: ‫ ﻓﻬﺬا ﺧﻄﺄ رﻳﺎﺿﻲ رﻏﻢ أن‬،‫إذا ﻣﺎن اﻟﻌﺪدان ﻣﺴﺎوﻳﺎن ﻟﻠﺼﻔﺮ‬
‘ 1 ‫اﳌﱰﺟﻢ ﺳﻴﻌﻄﻴﻚ اﻟﻨﺘﻴﺠﺔ‬

Return Convert.ToUInt32(num1 ^ num2)


End Function
End Class

Public Class Point


Private _X As UInteger
Private _Y As UInteger
Public Property X() As UInteger
Get
Return _X
End Get
Set(ByVal value As UInteger)
_X = value
End Set
End Property
Public Property Y() As UInteger
Get
Return _Y
End Get
Set(ByVal value As UInteger)
_Y = value
End Set
End Property
End Class
End Namespace

79
2008 ‫ ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ‬/ ‫ ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ‬01 ‫اﻟﻌﺪد‬ vb4arab.com ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ‬
‫ﻗﺼﺺ ﻧﺠﺎح ‪ -‬اﻟﺤﻠﻘﺔ اﻷوﻟﻰ ‪-‬‬
‫ﻣﻨﻘﻮل‬

‫ﻧﺠﻢ اﻷدﻣﻐﺔ اﻹﻟﻜﺘﺮوﻧﻴﺔ‬


‫ﻓﻴﻠﻴﺐ ﻛﺎن‪ .‬ﻣﺆﺳﺲ ﺷﺮﻛﺔ ﺑﻮرﻻﻧﺪ‬
‫ﻫﺬا اﻟﻌﻨﻮان ﻣﻘﺘﺒﺲ ﻣﻦ ﻣﻘﺎﻟﺔ ﻣﺘﺮﺟﻤﺔ ﻧﺸﺮت ﻓﻲ ﺷﻬﺮ دﻳﺴﻤﺒﺮ ‪ 1985‬ﻓﻲ ﻣﺠﻠﺔ‬
‫اﻟﻤﺨﺘﺎر اﻟﻌﺮﺑﻴﺔ ﻋﻦ ذات اﻟﺸﺨﺼﻴﺔ‪.‬‬

‫ﺗﻌﺘﻤﺪ ﻧﻈﺮﻳﺔ اﻟﻨﺠﺎح ﻓﻲ دﻧﻴﺎ اﻷﻋﻤﺎل ﻋﻠﻰ اﻟﻤﺠﻲء ﺑﻔﻜﺮة ﻋﺒﻘﺮﻳﺔ ﻻﻣﻌﺔ‪ ،‬ﻟﻢ ﻳﺴﺒﻘﻚ إﻟﻴﻬﺎ أﺣﺪ ﻣﻦ ﻗﺒﻠﻚ‪،‬‬
‫ﺛﻢ ﺗﻀﻊ ﺧﻄﺔ ﻋﻤﻞ ﻣﺤﻜﻤﺔ ﻗﺎﺑﻠﺔ ﻟﻠﺘﺤﻘﻴﻖ‪ ،‬ﺛﻢ ﺗﺒﺤﺚ ﻋﻦ اﻟﻤﻤﻮﻟﻴﻦ وﺗﻀﻊ‬
‫ﻧﺴﺒﺔ ﺗﻘﺴﻴﻢ ﻋﺎدﻟﺔ ﻟﻸرﺑﺎح واﻟﺨﺴﺎﺋﺮ‪ ،‬ﺛﻢ ﺗﺘﻮﻛﻞ ﻋﻠﻰ اﷲ وﺗﺠﺘﻬﺪ‪.‬‬
‫ﻫﺬه ﻧﻈﺮﻳﺔ أﻛﺎدﻳﻤﻴﺔ ﺑﺤﺘﺔ‪ ،‬وﻫﻲ وإن ﺗﺤﻘﻘﺖ ﻓﻲ ﻛﺜﻴﺮ ﻣﻦ اﻷﺣﻴﺎن‪ ،‬ﻟﻜﻦ ﻟﻜﻞ ﻧﻈﺮﻳﺔ ﺷﻮاذﻫﺎ‪ ،‬واﻟﻴﻮم‬
‫ﻧﺘﻨﺎول ﻫﺬا اﻷﻣﺮ ﻣﻦ ﺧﻼل ﻗﺼﺔ اﻟﻔﺮﻧﺴﻲ ﻓﻴﻠﻴﺐ ﻛﺎن اﻟﻤﻮﻟﻮد ﻓﻲ ‪ 16‬ﻣﺎرس ‪ ،1952‬اﻟﻌﺒﻘﺮي اﻟﺴﺎﺑﻖ ﻷواﻧﻪ‬
‫اﻟﺬي أﺑﺪع ﻓﺄﺷﻬﺮ ﺷﺮﻛﺔ ﺑﻮرﻻﻧﺪ ﻟﺒﺮاﻣﺞ اﻟﺤﻮاﺳﻴﺐ‪ ،‬ﺗﻠﻚ اﻟﺸﺮﻛﺔ اﻟﺘﻲ ﺧﺮج اﻟﺮﻋﻴﻞ اﻷول ﻣﻦ‬
‫اﻟﻤﺒﺮﻣﺠﻴﻦ اﻟﻌﺮب ﻳﺘﻌﻠﻤﻮن ﻋﻠﻰ ﺑﺮاﻣﺠﻬﺎ ﻓﻲ اﻟﺒﺮﻣﺠﺔ ﺑﻠﻐﺘﻲ ﺗﻴﺮﺑﻮ ﺑﺎﺳﻜﺎل وﺗﻴﺮﺑﻮ ﺳﻲ ودﻟﻔﻲ وﻣﻨﻬﺎ إﻟﻰ‬
‫ﺑﺮاﻣﺞ إدارة ﻗﻮاﻋﺪ اﻟﺒﻴﺎﻧﺎت ﺑﺎرادوﻛﺲ وﻏﻴﺮﻫﺎ اﻟﻜﺜﻴﺮ‪.‬‬
‫ﺣﺼﻞ ﻓﻴﻠﻴﺐ ﻋﻠﻰ ﺷﻬﺎدة اﻟﺪﻛﺘﻮراه ﻓﻲ اﻟﺮﻳﺎﺿﻴﺎت ﻣﻦ اﻷﻛﺎدﻳﻤﻴﺔ اﻟﻔﺮﻧﺴﻴﺔ ﻟﻠﻌﻠﻮم‪ ،‬وﻋﻤﻞ ﺑﺎﻟﺘﺪرﻳﺲ ﻟﻔﺘﺮة‬
‫ﻗﺼﻴﺮة ﺑﻌﺪ اﻟﺘﺨﺮج‪ ،‬ﺛﻢ ﺗﻌﻠﻢ ﻟﻐﺔ اﻟﺒﺮﻣﺠﺔ ﺑﺎﺳﻜﺎل ﻣﺒﺎﺷﺮة ﻋﻠﻰ ﻳﺪ ﻣﺨﺘﺮﻋﻬﺎ ﻓﻲ ﻣﺪﻳﻨﺔ زﻳﻮرخ ‪.‬دﺧﻞ ﻓﻴﻠﻴﺐ‬
‫ﻣﻌﺘﺮك اﻟﻌﻤﻞ ﻓﻲ ﻣﺠﺎل ﺗﻘﻨﻴﺔ اﻟﻤﻌﻠﻮﻣﺎت ﻗﺒﻞ ﻧﺸﺄﺗﻬﺎ‪ ،‬ﻓﻲ ﻣﻨﺘﺼﻒ اﻟﺴﺒﻌﻴﻨﻴﺎت ﻣﻦ اﻟﻘﺮن اﻟﻤﻨﺼﺮم‪ ،‬ﺣﻴﻦ‬
‫ﻋﻤﻞ ﻛﻤﺒﺮﻣﺞ ﻓﻲ ﻓﺮﻧﺴﺎ ﻋﻠﻰ ﺟﻬﺎز ﺣﻤﻞ اﺳﻢ ﻣﻴﻜﺮال‪ ،‬وﻫﻮ ﻣﺎ ﻳﺼﻄﻠﺢ اﻟﻤﺆرﺧﻮن ﻋﻠﻰ أﻧﻪ ﻛﺎن ﻣﻦ‬
‫إرﻫﺎﺻﺎت ﻧﺸﺄة اﻟﻤﺎﻳﻜﺮو ﻛﻤﺒﻴﻮﺗﺮ أو اﻟﻜﻤﺒﻴﻮﺗﺮ اﻟﺸﺨﺼﻲ اﻟﺼﻐﻴﺮ )ﻛﺎن ﻟﻔﻆ ﻛﻤﺒﻴﻮﺗﺮ وﻗﺘﻬﺎ ﻳﻄﻠﻖ ﻋﻠﻰ‬
‫ﻫﺬا اﻟﺠﻬﺎز اﻟﻌﻤﻼق اﻟﺬي ﻳﺸﻐﻞ ﻏﺮف ﻋﺪﻳﺪة وﻳﺤﺘﺎج ﻟﻄﺎﻗﺔ ﻛﻬﺮﺑﻴﺔ ﺗﻜﻔﻲ ﻣﺪﻳﻨﺔ ﺻﻐﻴﺮة‪ ،‬وﻟﻤﺤﻄﺎت ﺗﺒﺮﻳﺪ‬
‫ﺧﺎﺻﺔ(‪.‬‬
‫ﺳﺎﻓﺮ ﻓﻴﻠﻴﺐ إﻟﻰ اﻟﻮﻻﻳﺎت اﻟﻤﺘﺤﺪة اﻷﻣﺮﻳﻜﻴﺔ ﻓﻲ زﻳﺎرة أراد ﻣﻨﻬﺎ اﻟﻌﻤﻞ ﻫﻨﺎك‪ ،‬ﻓﻜﺎﻧﺖ أول وﻇﻴﻔﺔ ﻟﻪ ﻓﻲ‬
‫ﻣﻌﺎﻣﻞ ﺷﺮﻛﺔ ﻫﻴﻮﻟﺖ ﺑﺎﻛﺮد )اﺗﺶ ﺑﻲ اﻟﻴﻮم( ﻟﻜﻦ ﻫﺬه اﻟﻮﻇﻴﻔﺔ اﺳﺘﻤﺮت ﺛﻼﺛﺔ أﻳﺎم ﻓﻘﻂ‪ ،‬ﺑﻌﺪ أن اﻛﺘﺸﻔﺖ‬
‫اﻟﺸﺮﻛﺔ أﻧﻪ ﻗﺪم ﻟﻠﺒﻼد ﺑﻔﻴﺰا زﻳﺎرة وﺑﺎﻟﺘﺎﻟﻲ ﻻ ﺗﺴﺘﻄﻴﻊ ﺗﻌﻴﻴﻨﻪ ﺑﺪوام ﻛﺎﻣﻞ‪ ،‬ﻟﻜﻦ ﻳﻤﻜﻨﻬﺎ اﻻﺳﺘﻌﺎﻧﺔ ﺑﻪ‬
‫ﻛﺨﺒﻴﺮ ﻓﻨﻲ‪ ،‬وﻫﻮ ﻣﺎ واﻓﻖ ﻫﻮى ﻓﻴﻠﻴﺐ‪ ،‬ﻓﺄﺳﺲ ﺷﺮﻛﺔ اﺳﺘﺸﺎرات ﻓﻨﻴﺔ أﺳﻤﺎﻫﺎ ﻣﺎرﻛﺖ إن ﺗﺎﻳﻢ‪ ،‬وﻫﻲ ﺣﻤﻠﺖ‬
‫اﻟﺤﺮوف اﻟﺜﻼﺛﺔ اﻷول ام آي ﺗﻲ‪ ،‬ﻟﺘﺘﺸﺎﺑﻪ ﻣﻊ ﻣﻌﻬﺪ ﻣﺎﺳﺎﺗﻮﺗﺶ اﻟﺘﻘﻨﻲ اﻷﺷﻬﺮ ﻋﻠﻰ ﻣﺴﺘﻮى اﻟﻌﺎﻟﻢ‪.‬‬
‫اﻟﻄﺮﻳﻒ ﻓﻲ اﻷﻣﺮ أن ﻣﻘﺎﺑﻠﺔ اﻟﺘﻮﻇﻴﻒ ﻫﺬه اﻋﺘﻤﺪت ﻋﻠﻰ أن ﻓﻴﻠﻴﺐ ﺿﻠﻴﻊ ﻣﺠﺎل ﺗﺮﺗﻴﺐ اﻟﻤﻌﻠﻮﻣﺎت ﻓﻲ‬
‫ﺻﻔﻮف ‪ Queuing‬وﻫﻲ ﻛﺬﺑﺔ اﺳﺘﺪرﻛﻬﺎ ﻓﻴﻠﻴﺐ ﺑﻘﻀﺎء ﻟﻴﺎل ﻃﻮال ﻳﺬاﻛﺮ ﻓﻴﻬﺎ ﺑﺠﻬﺪ ﻫﺬه اﻟﺘﻘﻨﻴﺔ اﻟﺠﺪﻳﺪة‬
‫ﻼ – ﻓﻴﻠﻴﺐ اﻟﺸﺮﻳﺮ!‬‫ﺣﺘﻰ ﺻﺎر ﺧﺒﻴﺮًا ﻓﻴﻬﺎ ﻓﻌ ً‬
‫ﺑﺎﻟﻄﺒﻊ ﻟﻢ ﻳﻨﻞ اﺳﻢ ﺷﺮﻛﺘﻪ رﺿﺎ اﻟﻤﺴﺌﻮﻟﻴﻦ ﻓﻲ اﻟﻤﻌﻬﺪ اﻟﺸﻬﻴﺮ‪ ،‬اﻟﺬﻳﻦ أرﺳﻠﻮا رﺳﺎﻟﺔ ﺷﺪﻳﺪة اﻟﻠﻬﺠﺔ‬
‫ﻟﻠﺸﺮﻛﺔ اﻟﻨﺎﺷﺌﺔ ﺗﻄﻠﺐ ﺗﻐﻴﻴﺮ اﻻﺳﻢ وإﻻ‪...‬‬
‫ﺗﺼﺎدف ﻓﻲ ذات اﻟﻮﻗﺖ أن ﻛﺎن ﻓﻴﻠﻴﺐ اﻧﺘﻬﻰ ﻣﻦ ﻣﺸﺮوع ﻃﻠﺒﺘﻪ ﻣﻨﻪ ﺷﺮﻛﺔ أﻳﺮﻟﻨﺪﻳﺔ ﺣﻤﻠﺖ‬
‫اﺳﻢ ﺑﻮرﻻﻧﺪ‪ ،‬ﻧﺸﺄت ﻓﻲ ﻋﺎم ‪ 1980‬ﺛﻢ أﻓﻠﺴﺖ ﺗﺎرﻛﺔ دﻳﻮن ﻋﻤﻴﻘﺔ ﻟﻢ ﺗﺴﺪدﻫﺎ ﻟﻪ‪ ،‬ﻓﺎﺷﺘﺮاﻫﺎ‬
‫ﻓﻴﻠﻴﺐ ﻓﻲ ‪ 1983‬ﻣﻘﺎﺑﻞ أن ﻳﻨﺴﻰ دﻳﻮﻧﻬﺎ اﻟﺘﻲ ﻟﻢ ﺗﺴﺪدﻫﺎ ﻟﻪ‪ ،‬وأن ﻳﺤﺼﻞ ﻋﻠﻰ اﺳﻤﻬﺎ اﻟﺘﺠﺎري‬
‫وأﺻﻮﻟﻬﺎ وﻣﻤﺘﻠﻜﺎﺗﻬﺎ ‪.‬ﺑﺬﻟﻚ أﺻﺒﺤﺖ ﺷﺮﻛﺘﻪ ﺗﺤﻤﻞ اﺳﻢ ﺑﻮرﻻﻧﺪ رﺳﻤﻴًﺎ‪.‬‬

‫‪  80‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫ﻗﺼﺺ ﻧﺠﺎح ‪ -‬اﻟﺤﻠﻘﺔ اﻷوﻟﻰ ‪-‬‬
‫ﻣﻨﻘﻮل‬
‫ﻛﺎن ﻓﻴﻠﻴﺐ ﻳﺮى أن اﻟﺠﻤﻴﻊ ﻳﺮﻛﺰ ﻋﻠﻰ ﺗﻄﺒﻴﻘﺎت اﻟﻤﺤﺎﺳﺒﺔ واﻟﻜﺘﺎﺑﺔ‪ ،‬ﺗﺎرﻛﻴﻦ ﻣﺠﺎل اﻟﺒﺮﻣﺠﺔ ﺧﺎﻟﻴًﺎ‪ ،‬ﻟﺬا‬
‫أراد أن ﻳﻐﻄﻴﻪ ﺑﻠﻐﺔ اﻟﺒﺮﻣﺠﺔ ﺑﺎﺳﻜﺎل ﻋﻠﻰ ﺣﻮاﺳﻴﺐ آي ﺑﻲ ام اﻟﺸﻬﻴﺮة‪ ،‬وﻫﻮ أراد ﺗﻄﺒﻴﻘًﺎ ﻳﺤﺘﺎج ﻣﺴﺎﺣﺔ‬
‫ذاﻛﺮة ﺻﻐﻴﺮة ﻟﻠﻌﻤﻞ‪ ،‬وﻳﻌﺘﻤﺪ ﻋﻠﻰ واﺟﻬﺔ ﺗﻄﺒﻴﻖ أﻧﻴﻘﺔ‪ ،‬واﻷﻫﻢ ﻣﻦ ﻛﻞ ﻫﺬا ‪:‬ﺳﺮﻋﺔ ﺗﺸﻐﻴﻞ ﻛﺒﻴﺮة‪.‬‬
‫اﻟﻔﺸﻞ ﻫﻮ ﺑﺒﺴﺎﻃﺔ ﻓﺮﺻﺔ‬ ‫ﻛﺎﻧﺖ ﻫﺬه اﻟﻔﻜﺮة ﺻﻌﺒﺔ– ﺑﻞ ﻣﺴﺘﺤﻴﻠﺔ ‪ -‬اﻟﺘﻄﺒﻴﻖ وﻗﺘﻬﺎ‪ ،‬ﻟﻜﻦ ﻓﻴﻠﻴﺐ ﻓﻌﻠﻬﺎ‬
‫ﺟﺪﻳﺪة ﻟﻜﻲ ﺗﺒﺪأ ﻣﻦ ﺟﺪﻳﺪ‪،‬‬ ‫ﻓﻲ ﻧﻮﻓﻤﺒﺮ ‪ 1983‬ﻋﻨﺪﻣﺎ أﻃﻠﻖ ﺗﻴﺮﺑﻮ ﺑﺎﺳﻜﺎل ﺑﻤﺠﻬﻮد أرﺑﻌﺔ ﻣﺒﺮﻣﺠﻴﻦ ﻓﻘﻂ‪.‬‬
‫ﻓﻘﻂ ﻫﺬه اﻟﻤﺮة ﺑﺬﻛﺎء أﻛﺒﺮ‬ ‫ﻼ ﻟﻴﻀﻊ ﺗﺼﻤﻴﻢ أول إﻋﻼن ﻟﻠﻐﺔ اﻟﺒﺮﻣﺠﺔ‬ ‫ﻼ ﻃﻮﻳ ً‬
‫ﻛﻌﺎدﺗﻪ‪ ،‬ﺳﻬﺮ ﻓﻴﻠﻴﺐ ﻟﻴ ً‬
‫ﻫﻨﺮي ﻓﻮرد‪.‬‬ ‫ﺗﻴﺮﺑﻮ ﺑﺎﺳﻜﺎل‪ ،‬وﻋﻤﺪ ﻟﺨﺪﻋﺔ أﺧﺮى‪ ،‬ﺣﻴﻨﻤﺎ دﻋﺎ ﻣﺴﺌﻮل ﺑﻴﻊ اﻹﻋﻼﻧﺎت ﻓﻲ‬
‫ﻣﺠﻠﺔ ﺗﻬﺘﻢ ﺑﺸﺌﻮن اﻟﺤﻮاﺳﻴﺐ‪ ،‬وﺗﻈﺎﻫﺮ ﺑﺄن ﻟﺪﻳﻪ ﻋﺮوض إﻋﻼﻧﺎت ﻣﻦ ﻣﺠﻼت‬
‫ﻻ ﺛﻢ ﻗﺒﺾ ﺛﻤﻨﻪ ﻻﺣﻘًﺎ‪ .‬ﻫﺬه‬ ‫أﺧﺮى‪ ،‬ﻓﻤﺎ ﻛﺎن ﻣﻦ اﻟﺒﺎﺋﻊ اﻟﺬﻛﻲ إﻻ أن ﻋﺮض ﻋﻠﻰ ﻓﻴﻠﻴﺐ ﻧﺸﺮ اﻹﻋﻼن أو ً‬
‫اﻟﻔﻜﺮة أﺛﺒﺘﺖ روﻋﺘﻬﺎ وﻧﺠﺎﺣﻬﺎ ﻓﻴﻤﺎ ﺑﻌﺪ‪.‬‬
‫أراد ﻓﻴﻠﻴﺐ ﻛﺬﻟﻚ ﻋﻘﺪ ﻣﺆﺗﻤﺮ ﺻﺤﻔﻲ ﻟﺒﺮﻧﺎﻣﺠﻪ اﻟﺠﺪﻳﺪ ﺗﺰاﻣﻨًﺎ ﻣﻊ ﻣﻌﺮض ﻛﻮﻣﺪﻛﺲ اﻷﻣﺮﻳﻜﻲ‪ ،‬ﻟﻜﻨﻪ‬
‫ﻛﺎن ﻓﻘﻴﺮ اﻟﻤﺎل‪ ،‬ﻟﺬا ﻋﻤﺪ ﻟﻔﻜﺮة أذﻛﻰ‪ ،‬أﻋﻠﻦ ﻋﻦ ﻣﺆﺗﻤﺮه اﻟﺼﺤﻔﻲ ﻓﻲ ﻣﻄﻌﻢ ﻣﺎﻛﺪوﻧﺎﻟﺪز ﻟﻠﻮﺟﺒﺎت‬
‫اﻟﺴﺮﻳﻌﺔ‪ ،‬وﻫﻮ أﻣﺮ ﻟﻢ ﺗﺴﺘﻬﺠﻨﻪ اﻟﺼﺤﺎﻓﺔ‪ ،‬وﺣﻀﺮه ﺻﺤﻔﻲ ﻓﻲ ﻣﺠﻠﺔ ﺑﺎﻳﺖ اﻷﻣﺮﻳﻜﻴﺔ‪ ،‬واﻟﺬي ﻋﺎد ﻟﻴﻜﺘﺐ ﻓﻲ‬
‫ﺛﻼﺛﺔ أﻋﺪاد ﻣﺘﺘﺎﻟﻴﺔ ﻋﻦ ﻟﻐﺔ اﻟﺒﺮﻣﺠﺔ اﻟﺴﺎﺣﺮة اﻟﺮاﺋﻌﺔ‪ ...‬ﻛﻤﺎ اﻟﻨﺎر ﻓﻲ اﻟﻬﺸﻴﻢ‪ ،‬أﻗﺒﻞ اﻟﻨﺎس ﺑﺠﻨﻮن ﻋﻠﻰ ﻟﻐﺔ‬
‫اﻟﺒﺮﻣﺠﺔ اﻟﺠﺪﻳﺪة‪ ،‬واﻟﺘﻲ ﻛﺎﻧﺖ ﺗﺒﺎع ﺑﺴﻌﺮ زﻫﻴﺪ ) ‪ ( 49.99‬دوﻻر ﻓﻲ ﺣﻴﻦ اﻟﻠﻐﺎت اﻟﻤﻤﺎﺛﻠﺔ ﻛﺎﻧﺖ ﺗﺒﺎع‬
‫ﺑﺂﻻف وﻣﺌﺎت اﻟﺪوﻻرات‪ ،‬ﺧﻼل ﺳﻨﺘﻴﻦ ﻛﺎﻧﺖ ﺑﻮرﻻﻧﺪ ﻗﺪ ﺑﺎﻋﺖ ‪ 300‬أﻟﻒ ﻧﺴﺨﺔ ﻣﻦ ﺗﻴﺮﺑﻮ ﺑﺎﺳﻜﺎل‪ ،‬وﺗﺤﻮﻟﺖ‬
‫ﻣﻦ ﺷﺮﻛﺔ ﻳﻌﻤﻞ ﺑﻬﺎ أرﺑﻌﺔ أﻓﺮاد إﻟﻰ ﺷﺮﻛﺔ ﻟﺪﻳﻬﺎ ﻣﺌﺔ ﻣﻮﻇﻒ‪.‬‬
‫ﻟﻢ ﺗﺼﻔﻮ اﻟﺪﻧﻴﺎ ﻟﻠﻌﺒﻘﺮي ﻃﻮﻳﻼً‪ ،‬ﻓﺮﻏﻢ ﻧﺠﺎﺣﺎﺗﻪ ﻓﻲ ﻋﺎﻟﻢ أﻋﻤﺎل اﻟﺒﺮﻣﺠﺔ‪ ،‬ورﻏﻢ ﺻﺮاﻋﻪ ﻣﻊ ﻋﻤﺎﻟﻘﺔ‬
‫اﻟﺒﺮﻣﺠﻴﺎت ﻣﺜﻞ ﻟﻮﺗﺲ وﻣﺎﻳﻜﺮوﺳﻮﻓﺖ‪ ،‬ﻟﻜﻦ ﻓﻴﻠﻴﺐ ﺗﻠﻘﻰ ﻗﺮار اﻻﺳﺘﻐﻨﺎء ﻋﻦ ﺧﺪﻣﺎﺗﻪ ﺑﻌﺪ ‪ 12‬ﺳﻨﺔ ﻗﻀﺎﻫﺎ‬
‫ﻣﺪﻳﺮًا‪ ،‬ﻓﻲ ﻋﺎم ‪ 1994‬ﺑﻘﺮار ﻣﻦ ﻣﺠﻠﺲ اﻟﻤﺴﺎﻫﻤﻴﻦ‪ ،‬ﺑﻌﺪ أن ﺑﺪأت ﺷﺮﻛﺘﻪ ﻓﻲ اﻟﺒﻌﺪ ﻋﻦ ﻋﺰف ﻧﻐﻤﺔ اﻷرﺑﺎح‬
‫وﺑﺪأت ﺗﺘﻜﺒﺪ اﻟﺨﺴﺎﺋﺮ اﻟﺠﺴﺎم‪ ،‬وﻛﺎن ﻟﻘﺮارات ﻓﺸﻠﺖ ﻣﺜﻞ ﺷﺮاء ﺷﺮﻛﺔ أﺷﺘﻮن ﺗﺎﻳﺖ وﺑﺮﻧﺎﻣﺠﻬﺎ اﻟﺸﻬﻴﺮ دي‬
‫ﺑﻴﺰ ﺑﺮو ﻣﻘﺎﺑﻞ ‪ 439‬ﻣﻠﻴﻮن دوﻻر اﺳﺘﻨﺰف ﺳﻴﻮﻟﺔ اﻟﺸﺮﻛﺔ‪ ،‬وﻟﺘﺄﺧﺮ ﺑﻮرﻻﻧﺪ ﻓﻲ ﻃﺮح ﻧﺴﺨﺔ ﻣﻦ ﺑﺮﻧﺎﻣﺞ‬
‫ﻗﺎﻋﺪة اﻟﺒﻴﺎﻧﺎت ﻫﺬه ﺗﻌﻤﻞ ﻋﻠﻰ ﻧﻈﺎم وﻳﻨﺪوز‪ ،‬ﻛﺬﻟﻚ ﺑﻨﺎء ﻣﺒﻨﻰ ﻟﻠﺸﺮﻛﺔ ﺗﻜﻠﻒ ﻣﺌﺔ ﻣﻠﻴﻮن دوﻻر وﻏﻴﺮﻫﺎ(‬
‫اﻟﻔﻀﻞ ﻓﻲ اﻻﺳﺘﻐﻨﺎء ﻋﻨﻪ‪ .‬اﻟﻔﺸﻞ ﻻﻻﻻﻻ ﻳﻨﺎل أﺑ ًﺪا ﻣﻦ ﻣﻌﺎدن اﻟﺮﺟﺎل اﻟﻨﺎﺟﺤﻴﻦ‪ ،‬ﻟﺬا اﺳﺘﻤﺮ ﻓﻴﻠﻴﺐ ﻓﻲ درﺑﻪ‬
‫وأﺳﺲ ﺷﺮﻛﺔ أﺧﺮى ﺳﻤﺎﻫﺎ ﺳﺘﺎر ﻓﻴﺶ ﻟﻠﺒﺮﻣﺠﻴﺎت ‪ StarFish‬اﻟﻤﺘﺨﺼﺼﺔ ﻓﻲ اﻟﺘﻄﺒﻴﻘﺎت اﻟﻼﺳﻠﻜﻴﺔ ﻟﻨﻘﻞ‬
‫وﺗﺒﺎدل اﻟﻤﻌﻠﻮﻣﺎت ‪.‬ﺣﻴﻨﻤﺎ وﺿﻌﺖ زوﺟﺘﻪ اﺑﻨﺘﻬﻤﺎ ﺻﻮﻓﻲ‪ ،‬أراد اﻟﺰوﺟﺎن ﺗﺒﺎدل ﺻﻮر اﻟﺠﻤﻴﻠﺔ اﻟﺼﻐﻴﺮة ﻣﻊ‬
‫ﺑﻘﻴﺔ اﻟﻌﺎﺋﻠﺔ ﻋﺒﺮ اﻟﻬﺎﺗﻒ ﻻ اﻟﻜﻤﺒﻴﻮﺗﺮ‪ ،‬وﻫﺬه ﻛﺎﻧﺖ ﻟﺤﻈﺔ ﻣﻴﻼد ﻓﻜﺮة ﺧﺪﻣﺔ ﺗﺒﺎدل اﻟﺼﻮر ﻋﺒﺮ اﻟﻬﻮاﺗﻒ‬
‫اﻟﻨﻘﺎﻟﺔ ﻓﻲ ﻫﻴﺌﺔ ام ام اس وﻣﻴﻼد ﺷﺮﻛﺘﻪ اﻟﺜﺎﻟﺜﺔ‪ ،‬إذ ﻛﺎن ﻓﻴﻠﻴﺐ ﻳﺤﻤﻞ اﻟﻜﺎﻣﻴﺮا ‪ MMS‬اﻟﺮﻗﻤﻴﺔ ﻓﻲ ﻳﺪ‪،‬‬
‫واﻟﻬﺎﺗﻒ اﻟﻨﻘﺎل ﻓﻲ اﻟﻴﺪ اﻷﺧﺮى‪ ،‬وﻣﺜﻞ ﻫﺬه اﻟﻤﻮاﻗﻒ ﻻ ﺗﻤﺮ ﻋﻠﻰ ﻋﻘﻠﻴﺔ ﻻﻣﻌﺔ ﻣﺜﻠﻪ‪ ،‬ﻓﺎﻟﺴﺆال اﻟﻤﻨﻄﻘﻲ‬
‫اﻟﻄﺒﻴﻌﻲ ﺳﻴﻜﻮن ﻟﻤﺎذا ﻻ ﻧﻤﺰج اﻵﻟﺘﻴﻦ ﻣﻌًﺎ؟‬
‫ﻓﻲ ﻳﻮﻧﻴﻮ ‪ 1997‬ﻛﺎن ﻓﻴﻠﻴﺐ ﻗﺪ اﻧﺘﻬﻰ ﻣﻦ اﻟﻨﻤﻮذج اﻟﺘﺠﺮﻳﺒﻲ ﻟﻠﻬﺎﺗﻒ اﻟﻨﻘﺎل ذي اﻟﻜﺎﻣﻴﺮا‬
‫اﻟﺮﻗﻤﻴﺔ‪ ،‬ﻟﻴﺒﻴﻊ ﺷﺮﻛﺔ ﺳﺘﺎر ﻓﻴﺶ ﺑﻌﺪ ﺛﻼث ﺳﻨﻮات وﻧﺼﻒ ﻣﻦ إﻧﺸﺎﺋﻬﺎ ﺑﻤﺒﻠﻎ ‪ 253‬ﻣﻠﻴﻮن‬
‫دوﻻر ﻟﺸﺮﻛﺔ ﻣﻮﺗﻮروﻻ ﻓﻲ ﻋﺎم ‪ 1998 .‬اﺣﺘﻔﻆ ﻓﻴﻠﻴﺐ ﺑﻤﻮﻗﻌﻪ ﻛﻤﺪﻳﺮ ﻟﺸﺮﻛﺔ ﺳﺘﺎر ﻓﻴﺶ‪،‬‬
‫وﻗﺎم ﺑﻌﺪﻫﺎ ﺑﺘﺄﺳﻴﺲ ﺷﺮﻛﺘﻴﻦ ﺟﺪﻳﺪﺗﻴﻦ ‪:‬ﻻﻳﺖ ﺳﻴﺮف وأوﺑﻦ ﺟﺮﻳﺪ‪ ،‬ﺛﻢ أﺗﺒﻌﻬﻢ ﺑﺸﺮﻛﺘﻪ‬

‫‪81‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫ﻗﺼﺺ ﻧﺠﺎح ‪ -‬اﻟﺤﻠﻘﺔ اﻷوﻟﻰ ‪-‬‬
‫ﻣﻨﻘﻮل‬
‫اﻟﺮاﺑﻌﺔ واﻟﺤﺎﻟﻴﺔ " ﻓﻮﻟﺒﺎور " اﻟﺘﻲ أﺳﺴﻬﺎ ﻣﻊ زوﺟﺘﻪ ﻓﻲ ﻋﺎم ‪ 2003‬اﻟﺠﺪﻳﺮ ﺑﺎﻟﺬﻛﺮ أن ﺗﻄﺒﻴﻘﺎت اﻟﺘﻘﺎط‬
‫اﻟﺼﻮر اﻟﺮﻗﻤﻴﺔ ﺗﻌﺘﻤﺪ ﻋﻠﻰ ﺧﻮارزﻣﻴﺎت ﻟﻀﻐﻂ ﻫﺬه اﻟﺼﻮر ﻟﺘﺸﻐﻞ ﺣﺠﻤًﺎ أﻗﻞ‪ ،‬ﻫﺬه اﻟﺨﻮارزﻣﻴﺎت ﻛﺎﻧﺖ‬
‫ﻣﺤﻞ دراﺳﺔ ﻓﻴﻠﻴﺐ ﻓﻲ أﻃﺮوﺣﺘﻪ‪ ،‬ﻛﻤﺎ وﺗﻌﺘﻤﺪ ﺷﺮﻛﺔ ﻛﻮداك ﻓﻲ ﻛﺎﻣﻴﺮاﺗﻬﺎ اﻟﺮﻗﻤﻴﺔ ﻋﻠﻰ ﺑﺮاﻣﺞ ﺻﻤﻤﺘﻬﺎ‬
‫ﻟﻬﺎ ﺷﺮﻛﺔ ﻓﻴﻠﻴﺐ‪.‬‬
‫ﻻ ﺗﻈﻦ أن ﻓﻴﻠﻴﺐ ﻛﺎن ﻧﺎﺟﺤًﺎ ﻋﻠﻰ اﻟﺪوام‪ ،‬ﻓﻬﻮ ﻳﻌﺘﺮف ﺑﺎرﺗﻜﺎﺑﻪ أﺧﻄﺎء إدارﻳﺔ ﻛﺜﻴﺮة‪ ،‬ﻣﺜﻞ ﻣﺸﺮوﻋﻪ‬
‫ﻟﺘﺼﻤﻴﻢ ﻣﺴﺎﻋﺪ رﻗﻤﻲ ﺷﺨﺼﻲ ﻳﻤﻜﻦ أن ﺗﺮﺗﺪﻳﻪ‪ ،‬ﺛﻢ ﺗﻀﻌﻪ ﻓﻲ ﻣﻘﺒﺲ ﺗﻮﺻﻴﻞ ﻣﻊ ﺣﺎﺳﻮﺑﻚ اﻟﻨﻘﺎل ﻟﺘﺤﺪﻳﺚ‬
‫اﻟﺒﻴﺎﻧﺎت ﺛﻢ ﺗﻌﻮد ﻟﺘﺮﺗﺪﻳﻪ‪ ،‬وﺧﻄﺄ ﻓﻴﻠﻴﺐ– ﻛﻤﺎ ﻳﺨﺒﺮﻧﺎ ﺑﻨﻔﺴﻪ ‪-‬أﻧﻪ ﺑﺎع ﺣﻖ اﺳﺘﻐﻼل اﺧﺘﺮاﻋﻪ ﻫﺬا ﻟﺸﺮﻛﺔ ﻟﻢ‬
‫ﺗﺴﺘﻄﻴﻊ ﺗﺴﻮﻳﻘﻪ ﻋﻠﻰ اﻟﺸﻜﻞ اﻟﻤﻄﻠﻮب‪ ،‬ﻣﺎ أدى ﻷن ﺗﺴﺒﻘﻪ ﺷﺮﻛﺔ ﺑﺎﻟﻢ ﺑﻤﺴﺎﻋﺪﻫﺎ اﻟﺮﻗﻤﻲ ﺑﺎﻟﻢ‪.‬‬
‫ﻟﻠﻴﻮم‪ ،‬ﻻزال ﻓﻴﻠﻴﺐ ﻣﻦ ﻣﺴﺘﺨﺪﻣﻲ ﺑﺮاﻣﺞ ﺷﺮﻛﺘﻪ اﻟﺴﺎﺑﻘﺔ ﺑﻮرﻻﻧﺪ‪ ،‬وﻻ زال ﻳﺬﻛﺮﻫﺎ ﺑﻜﻞ ﺧﻴﺮ‪ ،‬وﻻزال‬
‫ﻳﺪﻋﻤﻬﺎ‪ .‬ﺗﺘﺠﻪ ﺑﻮرﻻﻧﺪ اﻟﻴﻮم ﻟﻠﺘﺮﻛﻴﺰ ﻋﻠﻰ ﺗﻮﻓﻴﺮ ﺑﻴﺌﺔ ﺑﺮﻣﺠﺔ وﺗﻄﻮﻳﺮ ﻟﻠﺸﺮﻛﺎت ﻛﺒﻴﺮة اﻟﺤﺠﻢ‪ ،‬وﻫﻲ‬
‫ﻋﻠﻤﺖ أن وﺧﺎﺻﺔ ﻟﻐﺔ اﻟﺒﺮﻣﺠﺔ ‪ IDE‬ﺗﻤﻴﺰﻫﺎ ﻳﺄﺗﻲ ﻓﻲ ﻣﺠﺎل ﺑﻴﺌﺎت ﺗﻄﺒﻴﻘﺎت اﻟﺘﻄﻮﻳﺮ دﻟﻔﻲ اﻟﺘﻲ ﻟﻬﺎ ﻣﺤﺒﻮن‬
‫ﻛﺜﻴﺮون ‪.‬ﻗﺪ ﻻ ﺗﻜﻮن ﺑﻮرﻻﻧﺪ ﻻﻗﺖ ﻣﺼﻴﺮًا أﻓﻀﻞ ﻣﻦ ﺷﺮﻛﺔ ﻧﺘﺴﻜﻴﺐ‪ ،‬ﻟﻜﻨﻬﺎ ﺗﺒﻘﻰ ﺿﻤﻦ ﺿﺤﺎﻳﺎ‬
‫ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ‪ ،‬ﻋﻠﻰ أﻧﻬﺎ ﺗﺜﺎﺑﺮ ﻟﻠﺨﺮوج ﻣﻦ ﻋﺜﺮﺗﻬﺎ‪.‬‬

‫اﻟﺪروس اﻟﻤﺴﺘﻘﺎة‬
‫‪ -‬ﺧﺴﺮت ﺑﻮرﻻﻧﺪ اﻟﻤﻌﺮﻛﺔ ﻟﺼﺎﻟﺢ ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ ﻷﻧﻬﺎ ﺣﺎدت ﻋﻦ اﻹﺑﺪاع واﻻﺑﺘﻜﺎر‪ ،‬ﻛﻤﺎ ﻟﻢ ﺗﻮﻓﻖ‬
‫أوﺿﺎﻋﻬﺎ ﺑﺸﻜﻞ ﺳﻠﻴﻢ ﻣﻊ ﺗﺰاﻳﺪ ﺣﺠﻤﻬﺎ‪ ،‬وﻟﻢ ﺗﺘﻨﺎﻏﻢ ﻣﻊ ﺗﻮﺟﻬﺎت اﻟﺴﻮق ﺑﺸﻜﻞ إﻳﺠﺎﺑﻲ‪.‬‬
‫‪ -‬ﻓﻲ ﺑﺪاﻳﺘﻪ‪ ،‬اﺳﺘﺨﺪم ﻓﻴﻠﻴﺐ ﺳﻼﺣﺎ ﺗﺴﻮﻳﻘﻴﺎ ﺟﺪﻳﺪا ‪ :‬ﺑﺎع ﻟﻐﺔ ﺑﺮﻣﺠﺔ‬
‫راﺋﻌﺔ ﺑﺴﻌﺮ ﻣﺘﺪن‪ ،‬ﻓﺘﻌﻠﻤﺖ ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ ﻣﻨﻪ اﻟﺪرس‪ ،‬وردﺗﻬﺎ ﻟﻪ ﻓﻲ‬
‫ﺻﻮرة ﺑﺮﻧﺎﻣﺞ ﻗﺎﻋﺪة ﺑﻴﺎﻧﺎت ﺑﺴﻌﺮ ‪ 99‬دوﻻر‪ ،‬ﻓﻲ ﺣﻴﻦ ﻛﺎن ﺳﻌﺮ ﻣﻨﺘﺞ ﺑﻮرﻻﻧﺪ اﻟﻤﻤﺎﺛﻞ ‪ 795‬دوﻻر‪.‬‬

‫ﻧﺘﺴﻜﻴﺐ‪/‬اﻟﻘﺼﺔ اﻟﻜﺎﻣﻠﺔ ﻟﻌﻤﻴﺪ ﻣﺘﺼﻔﺤﺎت اﻹﻧﺘﺮﻧﺖ اﻟﺬي ﺗﻢ إﻳﻘﺎﻓﻪ‬ ‫وداﻋًﺎ‬


‫ﻣﻊ ﻗﺮار ﺷﺮﻛﺔ أﻣﻴﺮﻛﺎ أوﻧﻼﻳﻦ ‪ AOL‬إﻳﻘﺎف‬
‫اﻟﺪﻋﻢ واﻟﺘﻄﻮﻳﺮ ﻟﻤﺘﺼﻔﺢ ﻧﺘﺴﻜﻴﺐ اﻟﺸﻬﻴﺮ ﻧﻬﺎﻳﺔ‬
‫اﻟﺸﻬﺮ اﻟﻘﺎدم ﻓﺒﺮاﻳﺮ ‪ ،2008‬ﺑﻌﺪ ﻓﺸﻠﻬﺎ ﻓﻲ‬
‫اﻟﺤﺼﻮل ﻋﻠﻰ ﺣﺼﺔ ﻣﻌﺘﺒﺮة ﻣﻦ ﺳﻮق اﻟﻤﺘﺼﻔﺤﺎت‬
‫اﻟﻌﺎﻟﻤﻴﺔ‪ ،‬واﻟﺬي ﻳﺴﻴﻄﺮ ﻋﻠﻴﻪ ﻣﺘﺼﻔﺢ ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ‬
‫اﻛﺴﺒﻠﻮرر ﺑﻨﺴﺒﺔ ﺗﻔﻮق ‪ ،%75‬واﺗﺠﺎه ﻓﺮﻳﻖ‬
‫اﻟﺘﻄﻮﻳﺮ ﻟﺪﻓﻊ ﻣﺴﺘﺨﺪﻣﻲ ﻧﺘﺴﻜﻴﺐ ﻻﺳﺘﺨﺪام‬
‫ﻣﺘﺼﻔﺢ ﻣﻮزﻳﻼ ﻓﺎﻳﺮﻓﻮﻛﺲ‪ ،‬اﻟﻤﺠﺎﻧﻲ واﻟﻤﻔﺘﻮح‬
‫اﻟﻤﺼﺪر‪ ،‬ﻛﺒﺪﻳﻞ أﻓﻀﻞ وأﻛﺜﺮ ﻗﻮة‪ ،‬ﻧﺴﺘﻌﺮض ﻓﻲ‬
‫ﺗﻘﻨﻴﺔ اﻟﻤﻌﻠﻮﻣﺎت‪ ،‬اﻟﻘﺼﺔ اﻟﻜﺎﻣﻠﺔ ﻷﺷﻬﺮ ﻣﺘﺼﻔﺤﺎت‬
‫اﻹﻧﺘﺮﻧﺖ وأﻗﺪﻣﻬﺎ ﺑﻌﺪ ﻣﺘﺼﻔﺢ ﻣﻮزاﻳﻴﻚ ‪.‬‬

‫‪82‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫ﻧﺘﺴﻜﻴﺐ‪/‬اﻟﻘﺼﺔ اﻟﻜﺎﻣﻠﺔ ﻟﻌﻤﻴﺪ ﻣﺘﺼﻔﺤﺎت اﻹﻧﺘﺮﻧﺖ اﻟﺬي ﺗﻢ إﻳﻘﺎﻓﻪ‬ ‫وداﻋًﺎ‬
‫ﻣﻨﻘﻮل‬ ‫ﻗﺼﺺ رﻳﺎدة وﺳﻴﺎدة وﺣﺮوب‬
‫ﻇﻬﺮت أول ﻧﺴﺨﺔ ﻣﻦ اﻟﻤﺘﺼﻔﺢ ﻓﻲ ‪13‬اﻛﺘﻮﺑﺮ ‪1994‬م ﺑﻮاﺳﻄﺔ ﻛﻞ ﻣﻦ ﻣﺎرك أﻧﺪرﺳﻦ و ﺟﻴﻢ ﻛﻼرك‪ ،‬ﺗﺤﺖ‬
‫ﻣﺴﻤﻰ‪ ،Moazic Netscape 0.9‬وﺗﻢ ﺗﻐﻴﻴﺮ اﻻﺳﻢ إﻟﻰ ‪ Netscape Navigator‬ﻟﺘﻔﺎدي أي ﻣﺸﻜﻼت ﻣﻊ ﺟﺎﻣﻌﺔ‬
‫إﻟﻴﻨﻮي و ‪ NCSA‬ﺻﺎﺣﺒﺔ اﻟﻤﺘﺼﻔﺢ ‪ Moasic‬واﻟﺬي ﻳﻌﺪ أول ﻣﺘﺼﻔﺢ ﺷﻬﻴﺮ ﻟﻠﻮﻳﺐ وﺗﻢ إﻳﻘﺎﻓﻪ ﻓﻲ ‪ ،1997‬واﺳﺘﻄﺎع‬
‫اﻟﻤﺘﺼﻔﺢ ﻧﺘﺴﻜﻴﺐ أن ﻳﻬﻴﻤﻦ ﻋﻠﻰ أﻛﺜﺮ ﻣﻦ ‪ % 80‬ﻣﻦ ﻋﺎﻟﻢ ﻣﺘﺼﻔﺤﺎت اﻟﻮﻳﺐ‪ ،‬وﻣﻊ ﻃﺮح اﻟﺸﺮﻛﺔ ﻟﻼﻛﺘﺘﺎب اﻟﻌﺎم ﻓﻲ‬
‫‪9‬اﻏﺴﻄﺲ ‪1995‬م ﺑﺴﻌﺮ‪ 14‬دوﻻرًا ﻟﻠﺴﻬﻢ‪ ،‬ﺣﻘﻖ ﻓﻲ أول ﻳﻮم ﺗﺪاول ﺳﻌﺮ ‪75‬دوﻻراً‪ ،‬ﻣﺎ ﺟﻌﻠﻬﺎ ﻗﺮﻳﺒﺔ ﻣﻦ ﺗﺤﻘﻴﻖ رﻗﻢ ﻗﻴﺎﺳﻲ‬
‫ﻓﻲ ﺗﺪاوﻻت اﻟﻴﻮم اﻷول ﻓﻲ ﺗﺎرﻳﺦ اﻟﺒﻮرﺻﺔ آﻧﺬاك‪ ،‬وواﺻﻠﺖ ﻧﺘﺴﻜﻴﺐ ﺗﺤﻘﻴﻖ اﻟﻨﺠﺎﺣﺎت ﺑﺘﻄﻮﻳﺮات ﻣﻬﻤﺔ ﻟﻤﺘﺼﻔﺤﻬﺎ وﺑﺮاﻣﺠﻬﺎ‪،‬‬
‫وأﻫﻤﻬﺎ ﺗﻮﺣﻴﺪ ﻣﻌﺎﻳﻴﺮ اﻟﺘﺼﻔﺢ ﺑﻐﺾ اﻟﻨﻈﺮ ﻋﻦ أﻧﻈﻤﺔ اﻟﺘﺸﻐﻴﻞ اﻟﻤﺨﺘﻠﻔﺔ اﻟﺘﻲ ﻳﻌﻤﻞ ﻋﻠﻴﻬﺎ‪ ،‬ﻟﺘﻄﻮر ﺑﻌﺪ ذﻟﻚ ﺗﻘﻨﻴﺎت ﺗﻤﻜﻦ‬
‫اﻟﻤﺴﺘﺨﺪﻣﻴﻦ ﻣﻦ اﻟﻮﺻﻮل وﺗﺤﺮﻳﺮ ﻣﻠﻔﺎﺗﻬﻢ ﻓﻲ أي ﻣﻜﺎن ﻋﺒﺮ اﻹﻧﺘﺮﻧﺖ‪ ،‬أﻳًﺎ ﻛﺎن اﻟﺠﻬﺎز اﻟﻤﺴﺘﺨﺪم أو ﻧﻈﺎم اﻟﺘﺸﻐﻴﻞ ‪.‬‬
‫وﻓﻲ ﻳﻮﻧﻴﻮ ‪1995‬ﻗﺎم ﻓﺮﻳﻖ ﻣﻦ اﻟﻤﺪراء اﻟﺘﻨﻔﻴﺬﻳﻴﻦ ﻟﻤﺎﻳﻜﺮوﺳﻮﻓﺖ ﺑﺰﻳﺎرة ﻟﺸﺮﻛﺔ ﻧﺘﺴﻜﻴﺐ واﻟﺘﻲ ﻛﺎﻧﺖ أرﺑﺎﺣﻬﺎ ﺗﺘﻀﺎﻋﻒ‬
‫ﻛﻞ رﺑﻊ ﺳﻨﺔ ﺗﻘﺮﻳﺒًﺎ ﻓﻲ ذﻟﻚ اﻟﻌﺎم ﻋﺎرﺿﻴﻦ ﺗﻘﺎﺳﻢ اﻟﺴﻮق ﺑﻴﻨﻬﻤﺎ‪ ،‬وﺗﻘﺪﻳﻢ ﻣﺘﺼﻔﺢ وﻳﺐ ﻟﻠﻮﻳﻨﺪوز ﻣﻊ إﻋﻄﺎء ﻧﺘﺴﻜﻴﺐ اﻟﻤﺠﺎل‬
‫ﻷﻧﻈﻤﺔ اﻟﺘﺸﻐﻴﻞ اﻷﺧﺮى‪ ،‬وﻫﻮ اﻟﻌﺮض اﻟﺬي رﻓﻀﺘﻪ ﺷﺮﻛﺔ ﻧﺘﺴﻜﻴﺐ‪ ،‬وﺿﺪ ﻗﻮاﻧﻴﻦ ﻣﻨﻊ اﻻﺣﺘﻜﺎر‪ ،‬ﻣﺎ ﺟﻌﻞ ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ ﺗﺒﺪأ‬
‫ﻣﺎ ﻋﺮف ﺑﺤﺮب اﻟﻤﺘﺼﻔﺤﺎت‪ ،‬وﻃﺮﺣﺖ اﻟﻨﺴﺨﺔ اﻷوﻟﻰ ﻣﻦ ﻣﺘﺼﻔﺢ اﻧﺘﺮﻧﺖ اﻛﺴﺒﻠﻮرر ‪ Internet Explorer‬ﻛﺠﺰء ﻣﻦ‬
‫ﺣﺰﻣﺔ ‪ Windows 95 Plus Pack‬وواﺻﻠﺖ ﻧﺘﺴﻜﻴﺐ وﺿﻊ اﻟﻤﻌﺎﻳﻴﺮ اﻷﺳﺎﺳﻴﺔ وﺗﻄﻮﻳﺮ اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﻤﻴﺰات اﻟﺠﺪﻳﺪة‬
‫ﻟﻤﺘﺼﻔﺤﻬﺎ‪ ،‬اﺳﺘﻤﺮت ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ ﻓﻲ إﺻﺪار ﻧﺴﺦ ﻣﺘﺘﺎﻟﻴﺔ ﻣﻦ ﻣﺘﺼﻔﺤﻬﺎ وﻣﺤﺎوﻟﺔ ﺗﺤﺴﻴﻨﻪ‪ ،‬وﺑﻨﻔﺲ اﻟﻮﻗﺖ ﺷﺤﻨﻪ ﻣﺠﺎﻧًﺎ‬
‫ﻛﺠﺰء ﻣﻦ ﻧﻈﺎم وﻳﻨﺪوز‪ ،‬وﻣﻊ اﻹﺻﺪار اﻟﺜﺎﻟﺚ ﻣﻦ اﻧﺘﺮﻧﺖ اﻛﺴﺒﻠﻮرر ‪ IE 3.0‬أﺻﺒﺢ ﻓﻲ وﺿﻊ ﻣﻨﺎﻓﺲ ﻣﻦ ﻧﺎﺣﻴﺔ اﻟﻤﻴﺰات‬
‫اﻟﺘﻘﻨﻴﺔ ﻣﻊ ﻧﺘﺴﻜﻴﺐ ‪ Netscape Communicator‬ﻟﻴﺼﺒﺢ اﻛﺒﺮ اﺳﺘﻘﺮارًا ﻓﻲ اﻟﻨﺴﺨﺔ اﻟﺮاﺑﻌﺔ وﻗﺎﻣﺖ ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ‬
‫ﺑﺪﻋﻤﻪ ﺑﺸﻜﻞ أﻛﺒﺮ ﻣﻊ ﺳﻴﺮﻓﺮات وﻳﻨﺪوز ‪ NT‬وﺷﻬﺪت ﺷﺮﻛﺔ ﻧﺘﺴﻜﻴﺐ أول ﻧﻬﺎﻳﺔ رﺑﻊ ﻣﺎﻟﻲ ﺳﻴﺌﺔ ﻓﻲ ﺗﺎرﻳﺨﻬﺎ ﻧﻬﺎﻳﺔ ﻋﺎم‬
‫‪1997‬م‪ ،‬واﺿﻄﺮت ﻟﺘﺴﺮﻳﺢ ﻋﺪد ﻣﻦ ﻣﻮﻇﻔﻴﻬﺎ ﻓﻲ ﻳﻨﺎﻳﺮ ‪1998‬م‪ ،‬ﻣﺎ أﻋﻄﻰ ﻋﻼﻣﺔ ﺳﻴﺌﺔ ﻋﻠﻰ ﻋﺪم ﻗﺪرة اﻟﺸﺮﻛﺔ ﻋﻠﻰ‬
‫ﻣﻮاﺟﻬﺔ اﻟﻤﻨﺎﻓﺴﺔ اﻟﺸﺮﺳﺔ وﻏﻴﺮ اﻟﻌﺎدﻟﺔ ﻣﻦ ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ‪ ،‬ﻟﺘﻘﻮم ﺑﺨﻄﻮة أﺧﻴﺮة ﻓﻲ ﻳﻨﺎﻳﺮ ﻋﺎم ‪1998‬ﺑﺈﻋﻼﻧﻬﺎ ﻣﺸﺮوع ﻣﻮزﻳﻼ‬
‫ﻟﻠﻤﺼﺎدر اﻟﻤﻔﺘﻮﺣﺔ‪ ،‬وإﺗﺎﺣﺘﻬﺎ ﻟﻠﺸﻴﻔﺮة اﻟﻤﺼﺪرﻳﺔ ﻟﻤﺘﺼﻔﺢ ‪ Netscape Communicator 4.0‬ﻟﻴﺼﺒﺢ أﺷﻬﺮ ﻣﺸﺮوع‬
‫ﻣﺼﺪر ﻣﻔﺘﻮح ﻓﻲ اﻟﻌﺎﻟﻢ‪ ،‬وﻟﻢ ﺗﻔﻠﺢ وزارة اﻟﻌﺪل اﻷﻣﻴﺮﻛﻴﺔ ﻓﻲ دﻋﻮاﻫﺎ ﺿﺪ ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ ﻓﻲ ﻣﺎﻳﻮ ‪1998‬ﺑﺎﻟﺮﻏﻢ ﻣﻦ‬
‫ﻣﺴﺎﻫﻤﺔ ﻛﺒﺎر اﻟﻤﺪراء اﻟﺘﻨﻔﻴﺬﻳﻴﻦ ﻓﻲ ﻧﺘﺴﻜﻴﺐ ﺑﺘﺰوﻳﺪ اﻟﻮزارة ﺑﻤﺴﺘﻨﺪات ووﺛﺎﺋﻖ ﺗﺜﺒﺖ ﺳﻮء اﻟﻨﻴﺔ واﻟﺘﺼﺮف ﻟﻤﺎﻳﻜﺮوﺳﻮﻓﺖ‬
‫ﻓﻲ ﺣﺮب اﻟﻤﺘﺼﻔﺤﺎت ‪.‬‬
‫ﺷﺮاء وﺗﻄﻮﻳﺮ‬
‫ﻓﻲ ﻧﻮﻓﻤﺒﺮ ‪ 1998‬أﻋﻠﻨﺖ ﺷﺮﻛﺔ ‪ AOL‬ﻋﻦ اﺳﺘﺤﻮاذﻫﺎ ﻋﻠﻰ ﺷﺮﻛﺔ ﻧﺘﺴﻜﻴﺐ‪ ،‬ﻓﻲ ﻋﻤﻠﻴﺔ ﺗﺒﺎدل أﺳﻬﻢ ﻣﻌﻔﺎة ﻣﻦ‬
‫اﻟﻀﺮاﺋﺐ ﻗﻴﻤﺘﻬﺎ ‪4.2‬ﻣﻠﻴﺎر دوﻻر‪ ،‬ﻟﺘﻨﻘﺴﻢ آراء اﻟﻤﺮاﻗﺒﻴﻦ واﻟﻤﺤﻠﻠﻴﻦ ﺑﻴﻦ ﻣﺆﻳﺪ وﻣﻌﺎرض‪ ،‬وﺣﺘﻰ ﻓﻲ ﻛﻴﻔﻴﺔ اﺳﺘﻴﻌﺎب وﺗﻔﺴﻴﺮ‬
‫ﻫﺬه اﻟﺨﻄﻮة‪ ،‬ﻟﺘﻘﻮم ﺑﺈﺻﺪار اﻟﻨﺴﺨﺔ اﻟﺴﺎدﺳﺔ ﻣﻦ ﻣﺘﺼﻔﺢ ﻧﺘﺴﻜﻴﺐ ‪ 6.0‬ﻓﻲ ﻧﻮﻓﻤﺒﺮ ‪ 2000‬اﻋﺘﻤﺎدًا ﻋﻠﻰ ﺷﻔﺮة ﻣﺘﺼﻔﺢ ﻣﻮزﻳﻼ‬
‫‪ Mozilla 0.6‬ﻟﻴﻠﻴﻪ اﻟﻨﺴﺨﺔ اﻟﺴﺎﺑﻌﺔ ﻣﻦ ﻧﺘﺴﻜﻴﺐ اﻋﺘﻤﺎدًا ﻋﻠﻰ ‪ Mozilla 1.0‬ﻓﻲ ﻣﺎﻳﻮ ‪2003‬دﻓﻌﺖ ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ ‪750‬‬
‫ﻣﻠﻴﻮن دوﻻر ﻟﺸﺮﻛﺔ ‪ AOL‬ﻓﻲ إﻃﺎر ﺗﺴﻮﻳﺔ ﺑﻴﻨﻬﻤﺎ‪ ،‬ﻛﺘﻌﻮﻳﺾ ﻟﻸﺿﺮار اﻟﺘﻲ ﻟﺤﻘﺖ ﺑﻨﺘﺴﻜﻴﺐ ﻣﻦ أﺳﻠﻮب ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ‬
‫اﻻﺣﺘﻜﺎري واﻟﻤﻨﺎﻓﺴﺔ ﻓﻲ اﻟﺴﻮق‪ ،‬وواﻓﻘﺖ ﻋﻠﻰ ﻣﺸﺎرﻛﺘﻬﺎ ﺑﻌﺾ اﻟﺘﻘﻨﻴﺎت‪ ،‬ﻣﻊ إﻋﻄﺎء اﻟﺤﻖ ل ‪ AOL‬ﺣﻖ ﺗﺮﺧﻴﺺ واﺳﺘﺨﺪام‬
‫وﺗﻮزﻳﻊ ‪ IE‬ﻟﺴﺒﻊ ﺳﻨﻮات‪ ،‬ﻣﺎ اﻋﺘﺒﺮه اﻟﻌﺪﻳﺪ ﻧﻮاة ﻣﻮت ﻣﺘﺼﻔﺤﺎت ﻧﺘﺴﻜﻴﺐ ‪.‬‬
‫ﻓﻲ اﻟﻔﺘﺮة ﺑﻴﻦ ‪ 2005‬و ‪ 2007‬ﺗﻢ إﺻﺪار اﻟﻨﺴﺨﺔ ‪ 8‬ﻣﻦ اﻟﻤﺘﺼﻔﺢ ‪ Netscape Browser‬ﻛﻤﺘﺼﻔﺢ ﻣﻨﻔﺮد‪ ،‬وﻟﻴﺲ‬
‫ﻛﺤﺰﻣﺔ ﺑﺮﻣﺠﻴﺔ ﻛﺎﻣﻠﺔ‪ ،‬وﻓﻲ ‪ 2006‬ﻗﺎﻣﺖ ‪ AOL‬ﺑﺘﻐﻴﻴﺮ ﻛﺎﻣﻞ ﻟﺒﻮاﺑﺔ ‪ Netscape.com‬ﻟﻴﺼﺒﺢ إﺣﺪى أﺷﻬﺮ اﻟﺒﻮاﺑﺎت‬
‫اﻻﺟﺘﻤﺎﻋﻴﺔ ﻓﻲ اﻟﻮﻻﻳﺎت اﻟﻤﺘﺤﺪة‪ ،‬وﺗﻢ إﺻﺪار ﻧﺴﺨﺔ ﺟﺪﻳﺪة ﻣﻦ اﻟﻤﺘﺼﻔﺢ ‪ Netscape navigator 9‬ﻓﻲ ‪ 2007‬اﻋﺘﻤﺎدًا‬
‫ﻋﻠﻰ ﺷﻔﺮة ‪Firefox 2‬‬
‫اﻟﻨﻬﺎﻳﺔ ﻗﺮار ‪ AOL‬ﺑﺈﻳﻘﺎف اﻟﺘﻄﻮﻳﺮ واﻟﺪﻋﻢ ﻟﻠﻤﺘﺼﻔﺢ‪ ،‬ﺑﺎﻟﺮﻏﻢ ﻣﻤﺎ ﻳﻤﺜﻠﻪ ﻟﻠﻌﺪﻳﺪﻳﻦ ﻣﻦ اﻓﺘﻘﺎد وﻏﻴﺎب ﻷﺷﻬﺮ اﻟﻤﺘﺼﻔﺤﺎت‬
‫وأﻗﺪﻣﻬﺎ‪ ،‬وﻣﺎ ﻳﺮﻣﺰ إﻟﻴﻪ ﻣﻦ ﺣﻘﺒﺔ ازدﻫﺎر وﺗﻄﻮﻳﺮ ﺗﻘﻨﻴﺎت اﻟﻮﻳﺐ‪ ،‬إﻻ أﻧﻪ ﻓﻲ رأي اﻟﺒﻌﺾ ﻣﻦ اﻟﻤﺮاﻗﺒﻴﻦ ﺧﻄﻮة ﺳﻠﻴﻤﺔ وإن‬
‫ﺗﺄﺧﺮت‪ ،‬وذﻟﻚ ﻟﻤﻮاﺟﻬﺔ ﻫﻴﻤﻨﺔ ﻣﺘﺼﻔﺢ ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ اﻧﺘﺮﻧﺖ اﻛﺴﺒﻠﻮرر ﻋﻠﻰ اﻟﻤﺘﺼﻔﺤﺎت ﺑﻨﺴﺒﺔ ‪ %77‬ﺑﺎﻟﺮﻏﻢ ﻣﻦ ﻋﺪم‬
‫ﻣﻄﺎﺑﻘﺘﻪ ﻟﻤﻌﺎﻳﻴﺮ اﻟﻮﻳﺐ اﻷﺳﺎﺳﻴﺔ‪ ،‬ﻋﻠﻤًﺎ ﺑﺄن اﻟﻤﺘﺼﻔﺢ ﻧﺘﺴﻜﻴﺐ ﻳﺴﺘﺤﻮذ ﺣﺎﻟﻴًﺎ ﻋﻠﻰ ‪ %0.60‬ﻣﻦ اﻟﻤﺘﺼﻔﺤﺎت‪،‬‬
‫ﻣﻘﺎﺑﻞ ‪ %16.01‬ﻟﻔﺎﻳﺮﻓﻮﻛﺲ‪ ،‬واﻟﺠﺪﻳﺮ ﺑﺎﻟﺬﻛﺮ ﻫﻮ دﻋﻢ اﻟﻠﻐﺎت )وﻣﻨﻬﺎ اﻟﻠﻐﺔ اﻟﻌﺮﺑﻴﺔ( ﻓﻲ ﻣﺘﺼﻔﺢ ﻧﺘﺴﻜﻴﺐ‬
‫ﻣﻨﺬ اﻟﺒﺪاﻳﺔ‪ ،‬ﺑﻞ وأﻓﻀﻠﻬﺎ دﻋﻤًﺎ آﻧﺬاك‪ ،‬ﻣﺘﻴﺤًﺎ اﻟﻔﺮﺻﺔ ﻟﻤﺘﺼﻔﺤﻲ اﻟﻤﻮاﻗﻊ اﻟﻌﺮﺑﻴﺔ اﻟﺘﺼﻔﺢ ﺑﺴﻬﻮﻟﺔ‪ ،‬وﺧﺘﺎﻣًﺎ ﻻ‬
‫أﻗﻮل ﺳﻮى وداﻋًﺎ ﻧﺘﺴﻜﻴﺐ‪.‬‬
‫اﻟﻤﺼﺪر‪/‬ﺟﺮﻳﺪة اﻟﺮﻳﺎض اﻟﻌﺪد‪10/01/2008‬‬
‫‪83‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫‪ ‬‬

‫‪ ‬‬ ‫‪ ‬‬

‫إﻋﺪاد اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ﻟﺘﻨﻘﻴﺢ اﻟﺸﻔﺮات اﻟﻤﺼﺪرﻳﺔ ﻹﻃﺎر ﻋﻤﻞ ‪.‬ﻧﺖ‬

‫أﺧﻴﺮا وﻓﻲ ﺳﺎﺑﻘﺔ ﻓﻲ ﺗﺎرﻳﺦ ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ‪ ،‬أﺻﺒﺤﺖ اﻟﺸﻔﺮات اﻟﺒﺮﻣﺠﻴﺔ ﻟﻤﻜﺘﺒﺎت اﻟﻔﺮﻳﻢ وورك ‪.‬ﻧﺖ ﻣﻔﺘﻮﺣﺔ‬
‫اﻟﻤﺼﺪر ﺑﺤﻴﺚ ﺻﺎر ﺑﺈﻣﻜﺎن اﻟﻤﺒﺮﻣﺞ أن ﻳﻄﻠﻊ ﻋﻠﻰ اﻟﺸﻔﺮات اﻟﻤﺼﺪرﻳﺔ ﻣﻊ ﺟﻤﻴﻊ اﻟﺘﻌﻠﻴﻘﺎت اﻟﺘﻲ ﻛﺘﺒﻬﺎ اﻟﻤﻄﻮرون ﻓﻲ‬
‫ال ‪.BCL Team‬‬

‫ﺧﻼل ﻫﺬا اﻟﻤﻘﺎل ﺳﻨﺘﻌﺮف ﺳﻮﻳﺎ ﻋﻠﻰ اﻟﺨﻄﻮات اﻟﻮاﺟﺐ ﺗﻨﻔﻴﺬﻫﺎ ﻟﻠﻮﺻﻮل إﻟﻰ اﻟﺸﻔﺮات اﻟﻤﺼﺪرﻳﺔ‬
‫ﻟﻤﺠﻤﻌﺎت إﻃﺎر اﻟﻌﻤﻞ ‪.‬ﻧﺖ‬

‫أﻋﻠﻦ ‪ Scott Guthrie‬أﺣﺪ رؤﺳﺎء ﻓﺮق اﻟﺘﻄﻮﻳﺮ اﻟﺨﺎﺻﺔ ﺑﺘﻘﻨﻴﺎت اﻟﺪوت ﻧﺖ ﻓﻲ ﻓﺮع ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ‬
‫ﻟﻠﺒﺮﻣﺠﻴﺎت أن اﻟﺸﺮﻛﺔ وﺿﻌﺖ ﺗﺤﺖ ﺗﺼﺮف اﻟﻤﺒﺮﻣﺠﻴﻦ إﻣﻜﺎﻧﻴﺔ ﻗﺮاءة اﻟﺸﻔﺮات اﻟﺒﺮﻣﺠﻴﺔ اﻟﺨﺎﺻﺔ ﺑﺈﻃﺎر ﻋﻤﻞ اﻟﺪوت‬
‫ﻧﺖ ﻣﻦ اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ‪.2008‬‬

‫ﻣﻘﺎل ﻣﺘﺮﺟﻢ ﻋﻦ ﻣﺪوﻧﺔ ‪Schwan burke’s‬‬


‫إﻋﺪاد وﻟﻴﺪ ﺑﻮاﻟﻄﻤﻴﻦ‬
‫‪ ‬‬

‫‪ ‬‬
‫ﻹﻃﺎر ﻋﻤﻞ ‪.‬ﻧﺖ‬
‫ﺸﻔﺮات اﻟﻤﻤﺼﺪرﻳﺔ ﻹ‬
‫إﻋﺪاد اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ﻟﺘﻨﻘﻴﺢ اﻟﺸ‬
‫‪ ‬‬

‫‪ ‬‬ ‫‪ ‬‬ ‫اﻟﺒﺮاﻣﺞ اﻟﻼزم ﺗﺜﺜﺒﻴﺘﻬﺎ‬


‫ﺞ‬
‫ﺳﺘﻮدﻳﻮ ‪.2008‬‬
‫ﻮ‬ ‫ﻓﻲ اﻟﻨﺴﺨﺔ اﻟﻤﺠﺎﻧﻴﻴﺔ ‪ Express‬ﻟﻠﻠﻔﻴﺠﻮال‬‫ﻏﻴﺮ ﻣﺘﻮﻓﺮة ﻲ‬‫أن هﺬﻩ اﻟﺨﺪﻣﺔ ﻏ‬ ‫‪ -‬ﻋﻠﻴﻴﻚ أن ﺗﻌﺮف ن‬
‫أو ﺧﺎﺻﻴﺔ ‪ Propeerty‬أو ﺣﻘﻞ ‪Field‬‬ ‫‪ -‬ﻓﻲ آﻞ ﻣﺎ ﺳﻴﺄﺗﻲ‪ ،‬آﻠﻤﺔ ‪ Syymbols‬اﻻﻧﺠﻠﻴﺰﻳﺔ ﺗﺗﻌﻨﻲ اﺳﻢ ﻃﺮﻳﻘﻘﺔ ‪ Method‬و‬
‫ﺧﺎﺻﺔ ﺑﻤﻨﻘﺢ‬
‫ﺔ‬ ‫ﻣﻜﺘﺒﺔ ‪DLL‬‬
‫ﺔ‬ ‫ﻳﻘﻮم ﺑﺘﺤﺪﻳﺚ‬
‫ﻣﻠﻒ ﺗﺼﺤﻴﺢ م‬ ‫‪ ،Visual Studdio 2008 QF‬هﺬا اﻟﺒﺮﻧﺎﻣﺞ ﻋﺒﺎرة ﻋﻦ ﻒ‬ ‫ﺗﻨﺼﻴﺐ اﻟﺒﺮﻧﺎﻣﺞ ‪FE‬‬
‫ﺐ‬ ‫أوﻻ ﻋﻠﻴﻚ‬
‫‪ .1‬ﻻ‬
‫ﺼﺪرﻳﺔ‪.‬‬
‫اﻟﻔﻴﻴﺠﻮال ﺳﺘﻮدﻳﻮ ﻟﻟﻜﻲ ﻳﺼﺒﺢ ﻗﺎدررا ﻋﻠﻰ اﺳﺘﺨﺮااج و إﻇﻬﺎر اﻟﻤﻤﻠﻔﺎت اﻟﺨﺎﺻﺔ ﺑﺑﺎﻟﺸﻔﺮات اﻟﻤﺼ‬
‫ﻀﻐﻂ ﻓﻮق اﺳﻤﻪﻪ آﻤﺎ ﻳﻤﻜﻨﻚ ﻗﺮﺮاءة ﻣﻌﻠﻮﻣﺎت ﻣﻔﻴﺪة ﻋﻠﻰ ﺻﻔﺤ‬
‫ﺤﺔ اﻟﺘﻨﺰﻳﻞ‪.‬‬ ‫ﻳﻤﻜﻜﻨﻚ ﺗﻨﺰﻳﻠﻪ ﺑﺎﻟﻀ‬
‫ﺨﻄﺄ ﻧﺎﺗﺞ ﻋﻦ إﻣﻜﺎﻧﻴﺔ‬
‫ﺠﻮال ﺳﺘﻮدﻳﻮ‪ ،‬ﻗﻗﺪ ﻳﻜﻮن هﺬا اﻟﺨ‬‫‪ -‬إذا ﺣﺼﻞ ﺧﻄﺄ أﺛﻨﺎء ﻋﻤﻠﻴﺔ اﻟﻟﺘﻨﺼﻴﺐ ﺣﺎول ﺑﺈدﺧﺎل ﻗﺮص اﻟﺪي ﻓﻲ دي اﻟﺨﺎص ﺑﺎﻟﻔﻴﺠ‬
‫ﻋﻦ وﺟﻮد ﻧﺴﺨﺔ أﻗﺪم ﻣﻦ اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ‪.‬‬ ‫ﺗﻌﺎﺎرض ﻧﺎﺗﺠﺔ ﻦ‬
‫‪. Tools > Options‬‬
‫‪O‬‬ ‫‪> Debugging‬‬
‫‪D‬‬ ‫إﻟﻰ ‪> General‬‬ ‫‪ 200‬و اذهﺐ ﻰ‬ ‫ﺑﻌﺪ اﺳﺘﻜﻤﺎل ﻋﻤﻠﻴﻴﺔ اﻟﺘﻨﺼﻴﺐ‪ ،‬ﻗﻢﻢ ﺑﺘﺸﻐﻴﻞ اﻟﻔﻴﺠﻮﻮال ﺳﺘﻮدﻳﻮ ‪08‬‬‫‪ .2‬ﺪ‬
‫أﺳﻔﻞ ﻧﺎﻓﺬة اﻹﻋﺪادات ﻗﺒﻞ‬
‫ﺧﺎﻧﺔ اﻟﺨﻴﺎرات اﻟﻤﻮﻮﺟﻮدة ﻓﻲ ﻞ‬‫ﺑﻴﺴﻚ اﻓﺘﺮاﺿﻴﺎ ﻋﻠﻴﻴﻚ ﺑﻀﺒﻂ ﺔ‬ ‫ﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ﻋﻠﻰ إﻋﺪادات اﻟﻔﻴﺠﻮال ﻚ‬ ‫إن آﻨﺖ ﺗﺸﻐﻞ اﻟﻔﻴ‬
‫اﻟﻤﻮ‬
‫ﻤﻮاﺻﻠﺔ ‪.‬‬
‫ﻗﻢ ﺑﺘﻐﻴﻴﺮ ﻗﻴﻢ اﻹﻋ‬
‫ﻋﺪادات اﻟﺘﺎﻟﻴﺔ‪:‬‬
‫‪.OFF‬‬ ‫‪ :Enabble Just My Code -‬اﺿﺒﻄﻬﻬﺎ ﻋﻠﻰ اﻟﺨﻴﺎر ‪F‬‬
‫ﻋﻠﻰ اﻟﺨﻴﺎر ‪O‬‬
‫‪.ON‬‬ ‫‪ :Ennable Source Server Su‬اﺿﺒﻄﻬﺎ ﻋ‬ ‫‪upport -‬‬
‫ﺳﺘﻜﻜﻮن ﻧﺎﻓﺬة اﻹﻋﺪﺪادات اﻟﺨﺎﺻﺔ ﺑﺎﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ آﻤﺎ ﻓﻲ اﻟﺼ‬
‫ﺼﻮرة اﻟﺘﺎﻟﻴﺔ‪:‬‬

‫ﺼﺎﺋﺺ اﻟﺜﻼﺛﺔ اﻟﺘﺘﺎﻟﻴﺔ‪:‬‬


‫ﺼﻮرة اﻵﺗﻴﺔ و ﻗﻗﻢ ﺑﺘﻐﻴﻴﺮ اﻟﺨﺼ‬
‫آﻤﺎ ﻳﻈﻬﺮ ﻓﻲ اﻟﺼ‬
‫‪ G‬إﻟﻰ اﻟﺘﺒﻮﻳﺐ ‪ Symbolss‬ﺎ‬ ‫ﺒﻮﻳﺐ ‪General‬‬ ‫‪ .3‬اﻧﺘﻘﻞ ﻣﻦ اﻟﺘﺒﻮ‬
‫‪htttp://referenccesource.miicrosoft.com‬‬ ‫أ‪ .‬ﻗﻢ ﺑﺈﺿﺎﺎﻓﺔ اﻟﻌﻨﻮان اﻟﺘﺎﻟﻟﻲ إﻟﻰ ﻣﻨﻄﻘﺔ ال ‪m/symbols: Symbol filee location‬‬
‫ﺠﻠﺪ ﻟﻴﺲ ﻟﻠﻘﺮاءءة ﻓﻘﻂ‪.‬‬
‫ﺨﺎدم ﻋﻠﻰ اﻟﻌﻨﻮﻮان اﻟﺴﺎﺑﻖ و ﺗﺗﺄآﺪ ﻣﻦ أن اﻟﻤﺠ‬‫ب‪ .‬ﻗﻢ ﺑﺎﺧﺘﻴﻴﺎر ﻣﺠﻠﺪ ﻟﺘﺨﺰﻳﻳﻦ اﻟﻤﻠﻔﺎت ال ‪ cash‬اﻟﺘﻲ ﻳﺘﻢ ﺗﻨﺰﻳﻠﻬﺎ ﻣﻦ اﻟﺨ‬
‫ﺗﺤﺖ اﻟﻔﻴﺴﺘﺎ أو ‪c:\ doocuments annd‬‬ ‫‪ c:\userss\yourUserN‬ﺖ‬ ‫‪Name\symb‬‬ ‫ﻣﺠﻠﺪ ﺣﺴﺎﺑﻚ )‪bols‬‬
‫اﻻﺧﺘﻴﺎر اﻷﻓﻀﻞ هﻮ ﻣﻣﺠﻠﺪ ﺗﺤﺖ ﺪ‬
‫ر‬
‫‪ settinngs\yourUserName\sym‬ﺗﺤﺖ اﻟﻮﻮﻳﻨﺪاوز ‪.(xp‬‬ ‫‪mbols‬‬

‫‪.Search the above loccations only when symb‬‬ ‫ﺑﺘﻔﻌﻴﻞ اﻟﺨﺎﺻﻴﺔ ‪bols are loadded manuallly‬‬
‫ﻞ‬ ‫ت‪ .‬ﻗﻢ‬
‫ﻼت اﻟﺴﺎﺑﻘﺔ‬
‫ﺑﻌﺪ اﻟﻘﻴﺎم ﺑﺎﻟﺘﻌﺪﻳﻼ‬
‫و هﺬﻩ ههﻲ ﺻﻮرة ﻧﺎﻓﺬةة اﻹﻋﺪادات ﺪ‬

‫‪85‬‬
‫‪200‬‬
‫ﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮااﻳﺮ ﻣﻦ ﺳﻨﺔ ‪08‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬ‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.ccom‬‬
‫‪ ‬‬
‫ﻹﻃﺎر ﻋﻤﻞ ‪.‬ﻧﺖ‬
‫ﺸﻔﺮات اﻟﻤﻤﺼﺪرﻳﺔ ﻹ‬
‫إﻋﺪاد اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ﻟﺘﻨﻘﻴﺢ اﻟﺸ‬
‫‪ ‬‬

‫‪ ‬‬ ‫‪ ‬‬

‫ﻋﻤﻠﻴﺔ اﻟﺘﻨﺼﻴﺐ‪ ...‬إﻟﻰ اﻟﻌﻤﻞ‬


‫اﻧﻬﻴﻨﺎ ﻋ‬

‫ﺷﻔﺮة إﻃﺎرر ﻋﻤﻞ اﻟﺪووت ﻧﺖ‬


‫اﻟﺘﻨﻘﻴﻴﺢ داﺧﻞ ﺷ‬
‫ﺨﻄﻮات‬
‫ﺳﺘﻌﻤﺎل ﻧﻔﺲ اﻟﺨ‬
‫‪ Windows Application‬ﻟﻜﻦ ﻳﻤﻜﻨﻚ اﺳ‬
‫‪A‬‬ ‫ﻋﻠﻰ ﻣﺸﺮوع ﻣﻦ ﻧﻮع ‪Project‬‬
‫ﺴﻲ ﺷﺎرب ﻰ‬
‫ﺳﻨﺴﺘﻌﻤﻤﻞ ﻣﺜﺎل ﺑﺴﻴﻂ ﺑﺑﺎﺳﺘﺨﺪام ﻟﻐﺔ اﻟﺴ‬
‫أي ﻣﺸﺮوع ﺁﺧﺮ ﺑﺑﻠﻐﺔ أﺧﺮى‪.‬‬ ‫ﻋﻠﻰ ي‬

‫ﻟﻚ ﻣﺤﺮر اﻟﺸﻔﺮات آﻤﺎ‬


‫‪ Windows‬ﺛﻢ اﺿﻐﻂ ﻣﻣﺮﺗﻴﻦ ﻋﻠﻰ اﻟﻨﻤﻤﻮذج ﻟﻴﻈﻬﺮ ﻚ‬
‫‪W‬‬ ‫ﻦ ﻧﻮع ‪Application Prroject‬‬ ‫ﺸﺮوع ﺟﺪﻳﺪ ﻣﻦ‬ ‫‪ .1‬ﻗﻢ ﺑﺈﻧﺸﺎء ﻣﺸ‬
‫اﻷﻣﺮ‪.‬‬
‫ﻋﻠﻰ ﺳﻄﺮ ﺮ‬ ‫اﻟﺼﻮرة اﻟﺘﺎﻟﻴﺔ‪ ،‬ﻗﻢ ﺑﻜﺘﺎﺎﺑﺔ اﻟﺸﻔﺮة آﻤﺎ ﻳﻳﻈﻬﺮ ﻓﻲ اﻟﺼﻮﻮرة و أﺿﻒ ﻧﻘﻘﻄﺔ ﺗﻮﻗﻒ )‪ (Breakpoiint‬ﻋ‬
‫ة‬ ‫ﻓﻲ‬

‫ﺟﻢ ﻋﻨﺪ ﻧﻘﻄﺔ اﻟﺘﻮﻗﻒ اﻟﺘﻲ أﺿﻔﺘﻬﺎ‪ ،‬و ﻗﻢ ﺑﺈﻇﻬﺎر ﻧﺎﻓﺬة رﺻﺔ‬ ‫ﺳﻴﺘﻮﻗﻒ اﻟﻤﺘﺮﺟ‬‫ﻋﻠﻰ اﻟﺰر ‪ ،F5‬ﺳ‬
‫ﺸﻐﻴﻞ اﻟﺒﺮﻧﺎﻣﺞ ﺑﺎﻟﻀﻐﻂ ﻰ‬ ‫‪ .2‬اﻵن ﻗﻢ ﺑﺘﺸ‬
‫ﺑﺎﻟﺰر اﻷﻳﻤﻦ ﻟﻠﻔﺄررة ﻋﻠﻰ‬
‫ر‬ ‫ﻀﻐﻂ ﻋﻠﻰ‬‫‪ ، (CRTL+‬ﺑﻌﺪهﺎ ﻗﻢ ﺑﺎﻟﻀ‬ ‫اﻻﺧﺘﺼﺎر )‪+ALT+C‬‬
‫ر‬ ‫اﻻﺳﺘﺪﻋﺎءات )‪ (Caall Stack‬ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ‬
‫ت‬
‫"‪ ،"Load Symbols‬هﺬﻩ اﻟﻌﻤﻠﻴﺔ ﺗﻘﻮم ﺑﺑﺘﺤﻤﻴﻞ‬
‫‪S‬‬ ‫‪ System.W‬ﻣﻣﻦ ﻋﻨﺎﺻﺮ اﻟﻘﺎﺋﺋﻤﺔ واﺧﺘﺮ ﺮ‬
‫اﻷﻣﺮ‬ ‫ﻋﻨﺼﺮ ﻳﺒﺪأ ب ‪Windows.Foorms.dll‬‬
‫ﺠﻤﻬﺎ ﺣﻮاﻟﻲ ‪ 10‬ﻣﻴﻐﺎ‬ ‫‪ System‬ﻣﻦ ﻋﻨﻨﻮان اﻟﺨﺎدم و اﻟﺬي ﻳﺒﻠﻎ ﺣﺠ‬
‫ﺠﻤﻊ ‪m.Windowss.Forms‬‬ ‫ﻣﻠﻔﺎت اﻟﺸﻔﺮﺮات اﻟﺒﺮﻣﺠﻴﺔ اﻟﺨﺎﺻﺔ ﺑﺎﻟﻤﺠ‬
‫ﺼﺎﻟﻚ ﺑﺸﺒﻜﺔ اﻻﻧﺘﺮﻧﺖ ﺑﻄﻴﺌﺎ‪.‬‬
‫ﺑﺎﻳﺖ‪ ،‬ﻟﺬﻟﻚ ﻋﻠﻴﻚ اﻟﺼﺒﺮ ﻗﻠﻠﻴﻼ إن آﺎن اﺗﺼ‬

‫‪86‬‬
‫‪200‬‬
‫ﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮااﻳﺮ ﻣﻦ ﺳﻨﺔ ‪08‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬ‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.ccom‬‬
‫‪ ‬‬

‫‪ ‬‬
‫ﻹﻃﺎر ﻋﻤﻞ ‪.‬ﻧﺖ‬
‫ﺸﻔﺮات اﻟﻤﻤﺼﺪرﻳﺔ ﻹ‬
‫إﻋﺪاد اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ﻟﺘﻨﻘﻴﺢ اﻟﺸ‬
‫‪ ‬‬

‫‪ ‬‬

‫‪ ‬‬ ‫‪ ‬‬

‫ﻣﻠﻒ اﻟﺸﻔﺮات ﺳﻴﻴﺨﺰن ﻓﻲ ﻣﺠﻠﺪ اﻟﻜﺎش‬ ‫ﻞ‪ ،‬وﻟﻜﻦ ﻋﻤﻠﻴﺔ ﻟﺘﻨﺰﻳﻞ هﺬﻩ ﻟﻦ ﺗﺘﻜﺮر ﻷن ﻒ‬
‫أﺛﻨﺎء ﻋﻤﻠﻴﺔ اﻟﺘﻨﺰﻳﻞ‬
‫ﺑﻴﺌﺔ اﻟﺘﻄﻮﻳﺮ ﻋﻦ اﻻﺳﺘﺠﺎﺑﺔ ء‬
‫ﺳﺘﺘﻮﻗﻒ ﺌﺔ‬
‫ﻋﻦ ﺗﻘﺪم ﻋﻤﻠﻴﺔ اﻟﺘﺘﻨﺰﻳﻞ ﺑﻤﺸﺎهﺪة ﻣﻨﻄﻘﺔ‬
‫ﻳﻤﻜﻨﻚ اﻻﺳﺘﻌﻼم ﻦ‬
‫ﻚ‬ ‫ﻋﻠﻰ ﺣﺪة‪،‬‬
‫ﺧﺎص ﺑﻜﻞ ﻣﺠﻤﻊ ﻋ‬
‫ﻣﻠﻒ ‪ PDB‬ص‬ ‫)اﻟﺬي ﻗﻤﺖ ﺑﺎﺧﺘﻴﺎرﻩ ﺳﺎﺑﻘﺎ( ﻋﻠﻰ ﺷﻜﻞ ﻒ‬
‫‪.Status Bar‬‬‫ال ‪ ProgreessBar‬ﻓﻲ ﺷﺮﺮﻳﻂ اﻟﺤﺎﻟﺔ ‪B‬‬

‫إﻟﻰ اﻟﻠﻮن‬
‫اﻟﻠﻮن اﻟﺮﻣﺎدي ﻰ‬
‫‪ Systtem.Windows.Forms.d‬ﻣﻦ ن‬ ‫ﺑﻌﺪ اﻧﺘﻬﺎء ﻋﻤﻠﻴﺔ اﻟﺘﻨﺰﻳﻞ أن ﻟﻮﻮن اﻟﻌﻨﺎﺻﺮ اﻟﺘﺘﻲ ﺗﺒﺪأ ب ‪dll‬‬
‫‪ .3‬ﺳﺘﻼﺣﻆ ﺪ‬
‫ﻷﺳﻤﺎء‬‫ﺨﺎص ﺑﻤﺠﺎل اﻷ‬‫ﺻﺮ اﻟﻤﺠﻤﻊ اﻟﺨ‬
‫ﺻﺔ ﺑﻜﻞ ﺣﺪث‪ ،‬ﺧﺎﺻﻴﺔ أو ﻃﺮﺮﻳﻘﺔ ﻟﺠﻤﻴﻊ ﻋﻨﺎﺻ‬‫ﺸﺎهﺪ اﻟﺸﻔﺮات اﻟﻟﻤﺼﺪرﻳﺔ اﻟﺨﺎﺻ‬ ‫اﻵن ﻳﻤﻜﻨﻚ أن ﺗﺸ‬
‫اﻷﺳﻮد‪ ،‬ن‬
‫ﻋﻦ ﺷﻲء ﻣﺎ‪.‬‬
‫‪ Load‬ﻓﻲ آﻞ ﻣﺮة ﺗﺮﺮﻳﺪ اﻻﺳﺘﻌﻼم ﻋ‬
‫‪L‬‬ ‫ﻀﻐﻂ ﻋﻠﻴﻬﺎ ﺑﺎﻟﺰﺰر اﻷﻳﻤﻦ و اﺧﺘﻴﺎر اﻷﻣﺮ ‪Symbools‬‬ ‫‪ Window‬ﺑﺎﻟﻀ‬ ‫‪ws.Forms‬‬

‫ﻮم ﺑﺘﻨﻔﻴﺬ‬
‫ﺳﺘﻌﻤﺎل اﻟﺰر ‪ F111‬اﻟﺬي ﻳﻘ م‬
‫ﻧﻘﺎط اﻟﺘﻮﻗﻒ و اﺳ‬
‫ﻄﺮ ﺑﺈﺿﺎﻓﺔ ط‬ ‫ﺒﻌﻬﺎ ﺳﻄﺮ ﺑﺴﻄ‬ ‫‪ .4‬ﻳﻤﻜﻨﻚ اﻵن ﺗﺘﺒﻊ ﺳﻴﺮ اﻟﺸﻔﻔﺮة اﻟﺨﺎﺻﺔ ﺑﺒﺒﺮﻧﺎﻣﺠﻚ و ﺗﺘﺒﻌ‬
‫ﺠﻤﻊ ﺑﺎﺧﺘﻴﺎر اﻟﻌﻌﻨﺼﺮ اﻟﺬي ﺗﺮﻳﻳﺪﻩ ﻣﻦ‬
‫ﺧﻄﻮة ﺧﻄﻮة داﺧﻞ ﻣﻠﻒ ال‪ DLL‬اﻟﺨﺎص ﺑﺎﻟﻤﺠ‬ ‫ة‬ ‫ﻣﻮاﺻﻠﺔ اﻟﺘﻨﻘﻴﺢ‬
‫ﺔ‬ ‫ﺳﻄﺮ ﺑﺴﻄﺮ‪ ،‬آﻤﺎ ﻳﻤﻜﻨﻚ‬
‫اﻟﺸﻔﺮة ﺮ‬
‫ﻔﺮة‪.‬‬
‫اﻟﻤﺘﺮﺟﻢ إﻟﻰ ﻣﻠﻒ اﻟﺸﻔﺮ‬
‫ﻢ‬ ‫ﻧﺎﻓﺬة ال ‪ Call Staack‬و اﻟﻟﻀﻐﻂ ﻋﻠﻰ اﻟﺰﺰر ‪ F11‬ﻣﺠﺪدا ﻟﻴﻨﺘﻘﻞ‬

‫ﺸﺮآﺔ(‪ ،‬ﻋﻠﻴﻚ ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ ﻣﻮاﻓﻖ‬


‫ﻴﺔ اﻟﻨﻬﺎﺋﻴﺔ ﺑﻴﻦ اﻟﻤﺴﺘﺨﺪم و اﻟﺸ‬
‫‪) EUL‬اﻻﺗﻔﺎﻗ ﺔ‬
‫ﺳﺘﺸﺎهﺪ ال ‪LA‬‬
‫ﺸﻔﺮة اﻟﻤﺼﺪرﻳﺔﺔ ﻷول ﻣﺮة‪ ،‬ﺳ‬ ‫‪ .5‬ﻋﻨﺪ ﻓﺘﺢ اﻟﺸ‬
‫‪ Accept‬ﻟﺘﺘﺒﺪأ ﻋﻤﻠﻴﺔ اﻟﺘﻨﺰﻳﻳﻞ‪.‬‬

‫‪87‬‬
‫‪200‬‬
‫ﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮااﻳﺮ ﻣﻦ ﺳﻨﺔ ‪08‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬ‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.ccom‬‬
‫‪ ‬‬

‫‪ ‬‬
‫ﻹﻃﺎر ﻋﻤﻞ ‪.‬ﻧﺖ‬
‫ﺸﻔﺮات اﻟﻤﻤﺼﺪرﻳﺔ ﻹ‬
‫إﻋﺪاد اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ﻟﺘﻨﻘﻴﺢ اﻟﺸ‬
‫‪ ‬‬

‫‪ ‬‬

‫‪ ‬‬ ‫‪ ‬‬

‫ﺼﺪرﻳﺔ ﺧﺎﺻﺔ ﺑﻤﺠﻤﻊ‬


‫اﻟﺘﻨﺰﻳﻞ ﻟﻜﻞ ﺷﻔﺮة ﻣﺼ‬
‫ﻞ‬ ‫ﺼﺪرﻳﺔ ﻟﻤﺠﻤﻊ ﺁﺁﺧﺮ‪ ،‬ﻋﻠﻴﻚ ﺑﺈﺗﺒﺒﺎع ﻧﻔﺲ اﻟﺨﻄﻮﻮات اﻟﺴﺎﺑﻘﺔ‪ ،‬ﻣﻣﻊ ﻣﻼﺣﻈﺔ أن ﻋﻤﻠﻴﺔ‬
‫ﻟﻤﺸﺎهﺪة أي ﺷﻔﺮة ﻣﺼ‬
‫ة‬
‫ﻋﻠﻰ ﺷﺮوط ال ‪ EULA‬ﻣﺮة وواﺣﺪة ﻟﻜﻞ ﻣﺠﻤﻤﻊ‪.‬‬ ‫ﻄﻠﺐ اﻟﻤﻮاﻓﻘﺔ ﻋ‬
‫ﺟﺪﻳﺪ ﺗﺘﻄ‬

‫ﻓﻲ اﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ‪:‬‬


‫‪ ،call stack‬آﻤﺎ ﻲ‬
‫‪s‬‬ ‫ﺠﻤﻊ اﻟﺬي ﺗﺮﻳﺪ أن ﺗﺸﺎهﺪ اﻟﻤﻠﻔﺎﺎت اﻟﻤﺼﺪرﻳﺔ اﻟﺨﺎﺻﺔ ﺑﻪ ﻓﻲ ﻧﺎﻓﺬة ال‬
‫ﺑﻌﺾ اﻟﺤﺎﻻت ﻗﺪ ﻻ ﺗﺠﺪ اﺳﻢ اﻟﻤﺠ‬
‫ﻓﻲ ﺾ‬

‫‪ Graaphics.Draw‬ﻳﺠﺐ أن ﺗﺗﻘﻮم ﺑﺘﺤﻤﻴﻞ ﻣﻠﻠﻔﺎت ال‪ pdb‬اﻟﻟﺨﺎﺻﺔ‬


‫ﻗﺒﻞ أن ﺗﻀﻐﻂ ﻋﻠﻰ اﻟﺰﺰر ‪ F11‬ﻟﻠﺪﺧﻮﻮل إﻟﻰ اﻟﺸﻔﺮة اﻟﻤﺼﺪرﻳﺔ ﻟﻞ ‪wRectangle‬‬
‫ﺧﺘﺼﺎر‬‫ﻀﻐﻂ ﻋﻠﻰ اﻻﺧ‬‫ﺤﺘﻮﻳﺎت و ذﻟﻚ ﺑﻌﺮض ﻧﺎﻓﺬة ‪ Modulees Window‬ﺑﺎﻟﻀ‬ ‫ﺻﺔ ﺑﺠﻤﻴﻊ اﻟﻤﺤ‬ ‫ﻋﺮض اﻟﺮﻣﻮز ‪ Symbbols‬اﻟﺨﺎﺻ‬ ‫ﺑﻬﺬا اﻟﻤﻤﺠﻤﻊ و ض‬
‫ﻣﻦ ﻃﺮف اﻟﻤﻨﻘﺢ‪ ،‬اﺧﺘﺮ‬
‫ﺤﺔ ﺑﺠﻤﻴﻊ اﻟﺮﻣﻮﻮز اﻟﻤﺤﻤﻠﺔ ﻦ‬ ‫‪) CTRL+AL‬ﺳﺘﻈﻬﺮ هﺬﻩ اﻟﻟﻨﺎﻓﺬة أﺛﻨﺎء ﻋﻤﻠﻠﻴﺔ اﻟﺘﻨﻘﻴﺢ ﻓﻘﻂ((‪ .‬ﺳﺘﻘﻮم اﻟﻨﺎﻓﺬة ﺑﻌﺮض ﻻﺋﺤ‬
‫‪LT+U‬‬
‫ﻓﻲ اﻟﺼﻮرة اﻟﺘﺎﻟﻴﻴﺔ‪:‬‬
‫‪ Load‬آﻤﺎ ﻳﻈﻬﺮ ﻲ‬
‫‪L‬‬ ‫ﺧﺘﻴﺎر اﻷﻣﺮ ‪Symbools‬‬ ‫‪ Systeem.Drawingg.DLL‬ﻓﻲ اﻟﻘﺎﺋﺋﻤﺔ و اﺿﻐﻂ ﺑﺎﺎﻟﺰر اﻷﻳﻤﻦ ﻻﺧ‬

‫‪88‬‬
‫‪200‬‬
‫ﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮااﻳﺮ ﻣﻦ ﺳﻨﺔ ‪08‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬ‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.ccom‬‬
‫‪ ‬‬

‫‪ ‬‬
‫ﻹﻃﺎر ﻋﻤﻞ ‪.‬ﻧﺖ‬
‫ﺸﻔﺮات اﻟﻤﻤﺼﺪرﻳﺔ ﻹ‬
‫إﻋﺪاد اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ﻟﺘﻨﻘﻴﺢ اﻟﺸ‬
‫‪ ‬‬

‫‪ ‬‬

‫‪ ‬‬

‫‪ ‬‬ ‫‪ ‬‬

‫ﺗﺤﻤﻴﻞ ﻣﻠﻒ اﻟﺮﻣﻮز‪ ،‬ﺳﺘﺠﺪ ﻣﺴﺎرﻩ ﻣﻌﺮوﺿﺎ ﻓﻲ اﻟﻟﻌﻤﻮد » ‪« Symbol File‬‬


‫ﻞ‬ ‫ﻻﺣﻆ أﻧﻧﻪ ﺑﻤﺠﺮد‬

‫ﻀﻐﻂ ﻋﻠﻰ اﻟﺰر ‪.F11‬‬


‫ﻄﻮة ﺧﻄﻮة ﺑﺎﻟﻀ‬
‫‪ Graaphics.Draw‬وﺗﺘﺒﻊ ﻋﻤﻠﻠﻴﺔ اﻟﺘﺮﺟﻤﺔ ﺧﻄ‬
‫اﻵن ﻳﻤﻜﻜﻨﻚ أن ﺗﺪﺧﻞ إﻟﻰ ﺷﻔﺮة اﻷﻣﺮ ‪wRectangle‬‬

‫ﺴﺘﺨﺪﻣﻴﻦ اﻟﻟﻤﺘﻘﺪﻣﻴﻦ‬
‫ﻟﻠﻤﺴ‬
‫ﻣﺠﻤﻊ ﺗﻮد ﺗﺘﺒﻊ اﻟﺘﻨﻘﻴﻴﺢ ﻓﻴﻪ‪،‬‬
‫ﻊ‬ ‫ﻼزم ﻟﻜﻞ‬ ‫اﻟﺘﻄﻮﻳﺮ ‪ Visual Studio‬ﺗﻘﻮم ﺑﺘﺤﻤﻤﻴﻞ اﻟﻤﻠﻔﺎت اﻟﻼ‬
‫ﺮ‬ ‫ﺢ‪ ،‬ﺑﻴﺌﺔ‬
‫اﻋﺘﻴﺎدﻳﺎ‪ ،‬ﻓﻲ آﻞ ﻣﺮة ﺗﺒﺪأ ﻓﻴﻴﻬﺎ ﻋﻤﻠﻴﺔ ﺗﻨﻘﻴﺢ‬
‫ﺠﻠﺪ اﻟﺬي ﻳﺨﺰﻧﻬﻬﺎ ﻓﻴﻪ )و اﻟﺬي ﻗﻤﻨﺎ ﺑﺸﺮح آﻴﻔﻔﻴﺔ اﺧﺘﻴﺎرﻩ و ﺗﻐﻐﻴﻴﺮﻩ ﻓﻲ اﻟﻔﻘﺮات اﻟﺴﺎﺑﻘﺔ(‪ ،‬ﺑﻌﻌﺾ اﻟﻤﺸﺎرﻳﻊ ﺗﺘﻄﻠﺐ‬ ‫وﺟﻮد اﻟﻤﻠﻒ ﻓﻲ اﻟﻤﺠ‬
‫د‬ ‫ﺑﻌﺪ أن ﻳﻳﺘﺄآﺪ ﻣﻦ‬
‫اﻟﻮﻗﺖ و ﻗﺪ ﺗﺘﻄﻠﺐ ووﻗﺖ آﺒﻴﺮ ﺟﺪا ﻓﻲ ﺣﺎﻟﺔ ﻋﺪم ووﺟﻮدهﺎ ﻋﻠﻰ اﻟﻟﻘﺮص‬ ‫ﺗﺘﻄﻠﺐ ﺑﻌﺾ ﺖ‬‫ﺐ‬ ‫ﻳﺠﻌﻞ اﻟﻌﻤﻠﻴﺔ‬
‫اﻟﻜﺜﻴﺮ ﻣﻣﻦ ﻣﻠﻔﺎت ‪ pdb‬اﻟﺨﺎﺻﺔ ﺑﻜﻞ ﻣﺠﻤﻊ ﻣﺎ ﻞ‬
‫اﻟﺼﻠﺐ ﻷﻧﻪ ﺳﻴﻘﻮم ﺑﺘﻨﺰﺰﻳﻠﻬﺎ ﻣﻦ اﻟﻤﻮﻗﻊﻊ‪ ،‬ﻟﺬﻟﻚ ﻧﻨﺼﺢ ﺑﺘﺘﺒﻊ ﻋﻤﻠﻴﺔ اﻟﺘﺘﻨﻘﻴﺢ ﻳﺪوﻳﺎ ﻋﻦ ﻃﺮﻳﻖ اﺧﺘﻴﺎر اﻷﻣﺮ ‪ Load Syymbols‬ﻣﻦ اﻟﻘﺎﺋﻤﺔ اﻟﻤﻨﺴﺪﻟﻟﺔ )آﻤﺎ‬
‫ﻋﻤﻠﻴﺔ اﻟﺘﺤﻤﻴﻞ اﻟﻴﻟﻴﺪوﻳﺔ ﺳﺎﺑﻘﺎ‪.‬‬ ‫ﻰ اﻟﺘﺮﺟﻤﺔ ﺳﻄﺮﺮا ﺳﻄﺮا ﺑﺎﻟﻀﻐ‬
‫ﻀﻐﻂ اﻟﺰر ‪ F11‬ﻟﻬﺬا اﻟﺴﺒﺐ‪ ،‬ﻗﻤﻤﻨﺎ ﺑﺎﺳﺘﻌﻤﺎل ﻋ‬ ‫ﺷﺮﺣﻨﺎههﺎ ﺳﺎﺑﻘﺎ( ﺑﺪﻻ ﻣﻦ اﻻﻋﺘﻤﺎد ﻋﻠﻰ‬

‫ﺑﻔﺘﺢ ﻧﺎﻓﺬة‬
‫ﻋﻤﻠﻴﺔ اﻟﺘﺤﻤﻴﻞ ااﻟﻴﺪوﻳﺔ اﻟﻤﻤﻠﺔ و ﻓﻲ ﻧﻔﺲ اﻟﻮﻗﻗﺖ ﺗﺴﺮﻳﻊ اﻟﻌﻤﻤﻠﻴﺔ‪ ،‬وذﻟﻚ ﺢ‬ ‫ﻋﻤﻠﻴﺔ اﻟﺘﺤﻤﻴﻞ ﺗﺗﻠﻘﺎﺋﻴﺔ ﻟﺘﻔﺎدي ﻋ‬
‫ﻃﺮﻳﻘﺔ ﻟﺠﻌﻞ ﻋ‬ ‫آﻞ ﺣﺎل‪ ،‬هﻨﺎك ﻃ‬ ‫ﻋﻠﻰ ﻞ‬
‫ﻧﺎﻓﺬة رﺻﺔ‬
‫ﺴﺪﻟﺔ ﻓﻮق ة‬ ‫‪ Symbols Settings‬ﻣﻣﻦ اﻟﻘﺎﺋﻤﺔ اﻟﻤﻨﺴ‬
‫‪S‬‬ ‫ﻷﻣﺮ‬
‫ﺷﺮة ﺑﺎﺧﺘﻴﺎر اﻷ‬
‫‪) Sym‬ﻳﻤﻜﻨﻚ اﻟﺪﺪﺧﻮل إﻟﻴﻬﺎ ﻣﺒﺎﺷ‬ ‫اﻹﻋﺪادات و اﺧﺘﻴﺎر اﻟﺘﺘﺒﻮﻳﺐ ‪mbols‬‬
‫ﻈﻬﺮ هﺬﻩ اﻟﻨﺎﻓﺬة أﺛﻨﺎء ﻋﻤﻠﻴﺔ اﻟﺘﻟﺘﻨﻘﻴﺢ ﻓﻘﻂ(( ﺑﻌﻌﺪهﺎ ﻗﻢ‬
‫‪) (CTRL‬ﺳﺘﻈ‬ ‫ال ‪L+ALT+U) Modules‬‬ ‫‪ (caall stack win‬أو ﻧﺎﻓﺬة ل‬ ‫ﻋﺎءات )‪ndow‬‬ ‫اﻻﺳﺘﺪﻋ‬
‫هﻮ ﺟﻌﻞ‬‫اﻵﺗﻴﺔ(‪ ،‬اﻟﻬﺪف ﻣﻦ هﺬﻩ اﻟﻌﻤﻠﻴﺔ ﻮ‬ ‫ﺔ‬ ‫‪) Seaarch from th‬آﻤﺎ ﻓﻲ اﻟﺼﻮرة‬ ‫ﻣﻦ أﻣﺎم اﻻﺧﺘﻴﺎرر …‪he above loocations‬‬ ‫ﺑﻨﺰع اﻟﻌﻌﻼﻣﺔ ﺻﺢ ﻦ‬
‫ﻟﻠﻤﺸﺮوع )‪.(F5‬‬
‫ع‬ ‫ﺟﻤﻴﻊ ﻣﻠﻔﺎت ‪ pddb‬ﻣﻦ اﻟﻤﻮﻗﻊ ﻣﻣﻊ أول ﻋﻤﻠﻴﺔ ﺗﺗﺮﺟﻤﺔ‬ ‫اﻟﺘﻄﻮﻳﺮ ﻳﻘﻮم ﺑﺘﻨﺰﻳﻞ ﺟ‬
‫ﺮ‬ ‫اﻟﻤﻨﻘﺢ ﻓﻓﻲ ﺑﻴﺌﺔ‬

‫ﻼﻣﺔ ﻗﻢ ﺑﺈﻏﻼق ﺑﺑﻴﺌﺔ اﻟﺘﻄﻮﻳﺮ و أﻋﺪ ﻓﺘﺢ ﻣﺸﺮووﻋﻚ ﻣﻦ ﺟﺪﻳﺪ‪ ،‬ﻋﻨﺪﻣﺎ ﺗﻜﻮن ﻣﻣﺴﺘﻌﺪا ﻟﻌﻤﻠﻴﺔ اﻟﺘﻟﺘﻨﺰﻳﻞ اﻟﻜﻠﻴﺔ ﻋﻠﻠﻴﻚ ﺑﺘﺮﺟﻤﺔ اﻟﻤﻤﺸﺮوع‬
‫ﺑﻌﺪ أن ﺗﺗﻘﻮم ﺑﻨﺰع اﻟﻌﻼ‬
‫أن ﺣﺠﻢ‬
‫ﻋﻠﻴﻚ أن ﺗﻌﻠﻢ ن‬
‫ال‪ pdb‬اﻟﻤﺘﻌﻠﻘﺔ ﺑﻤﺸﺮوﻋﻚ و ﺗﺗﺨﺰﻳﻨﻬﺎ ﻓﻲ اﻟﻘﺮﺮص اﻟﺼﻠﺐ‪ .‬ﻋ‬ ‫ﻋﻤﻠﻴﺔ اﻟﺘﻨﺰﻳﻞ ﻟﻟﺠﻤﻴﻊ ﻣﻠﻔﺎت ل‬
‫ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ زر ‪ F5‬وﻣﻦ ﺛﻢ ﺳﺘﺒﺪأ ﻋ‬
‫ﻂ‬
‫ﺴﻦ أن‬
‫هﺬﻩ اﻟﻤﻠﻠﻔﺎت ﻓﻲ اﻟﻌﺎدة هﻮ ‪ 50‬ﻣﻴﻐﺎ و هﻮ ﺣﺠﻢ آﺒﻴﻴﺮ ﻧﺴﺒﻴﺎ و ﻗﺪ ﻳﻳﺘﻄﻠﺐ ﺑﻌﺾ اﻟﻟﻮﻗﺖ‪ ،‬ﻟﺬﻟﻚ ﻻ ﺗﺠﺰع إن ﻟﻢ ﺗﺗﺴﺘﺠﺐ ﺑﻴﺌﺔ اﻟﺘﺘﻄﻮﻳﺮ و ﻳﺴﺘﺤﺴ‬
‫ﺧﺮ‪.‬‬
‫ﺗﺘﺮآﻬﺎ و ﺗﻘﻮم ﺑﻌﻤﻞ ﺁﺧ‬

‫‪89‬‬
‫‪200‬‬
‫ﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮااﻳﺮ ﻣﻦ ﺳﻨﺔ ‪08‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬ‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.ccom‬‬
‫‪ ‬‬

‫‪ ‬‬
‫ﻹﻃﺎر ﻋﻤﻞ ‪.‬ﻧﺖ‬
‫ﺸﻔﺮات اﻟﻤﻤﺼﺪرﻳﺔ ﻹ‬
‫إﻋﺪاد اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ﻟﺘﻨﻘﻴﺢ اﻟﺸ‬
‫‪ ‬‬

‫‪ ‬‬

‫‪ ‬‬

‫‪ ‬‬

‫‪ ‬‬ ‫‪ ‬‬

‫ﺿﻐﻂ ﻋﻠﻰ ﻣﻮاﻓﻓﻖ آﻤﺎ‬


‫ﻣﻮﻗﻊ اﻟﺘﺤﻤﻴﻞ و أﺿ‬
‫ﻼﻣﺔ ﺻﺢ ﻣﻦ أﻣﻣﺎم ﻋﻨﻮان ﻊ‬
‫ﺑﻌﺪ اﺳﺘﻜﻜﻤﺎل اﻟﻌﻤﻠﻴﺔ‪ ،‬ﻗﻗﻢ ﺑﺘﻮﻗﻴﻒ اﻟﻤﻨﻘﻘﺢ و ﻋﺪ إﻟﻰ ﻧﺎﻓﻓﺬة اﻹﻋﺪادات و ﻗﻢ ﺑﻨﺰع اﻟﻌﻼ‬
‫ﻓﻲ اﻟﺼﻮرة اﻟﺘﺎﻟﻟﻴﺔ‪:‬‬
‫ﻳﻈﻬﺮ ﻲ‬

‫ﺴﺎﺑﻘﺔ‪.‬‬
‫اﻟﻤﺮور ﺑﺎﻟﻤﺮاﺣﻞ اﻟﺴ‬
‫ر‬ ‫ﺘﺪﻋﺎءات( دون‬
‫ت‬ ‫ﺻﺔ اﻻﺳ‬
‫أن ﺗﻮاﺻﻞ ﻋﻤﻠﻴﺔ اﻟﺘﻨﻘﻴﺢ اﻋﺘﻴﺎدﻳﻳﺎ )ﻣﻦ ﻧﺎﻓﺬة رﺻ‬
‫ﺟﻤﻴﻊ هﺬﻩ اﻟﻤﺮاﺣﻞ ﻳﻤﻜﻨﻚ اﻵن ن‬
‫ﺑﻌﺪ اﺳﺘﻜﻤﺎل ﻊ‬
‫اﻵن ﺪ‬

‫‪90‬‬
‫‪200‬‬
‫ﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮااﻳﺮ ﻣﻦ ﺳﻨﺔ ‪08‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬ‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.ccom‬‬
‫‪ ‬‬

‫‪ ‬‬
‫ﻹﻃﺎر ﻋﻤﻞ ‪.‬ﻧﺖ‬
‫ﺸﻔﺮات اﻟﻤﻤﺼﺪرﻳﺔ ﻹ‬
‫إﻋﺪاد اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ﻟﺘﻨﻘﻴﺢ اﻟﺸ‬
‫‪ ‬‬

‫‪ ‬‬ ‫ﺴﺘﻌﻤﻠﻬﺎ‬
‫إﻟﻰ اﻟﻤﺸﺮوع ﻟﺘﺴ‬
‫أن ﺗﻀﻴﻒ ﻣﺠﻤﻤﻌﺎت ﺟﺪﻳﺪة ﻰ‬ ‫إﻟﻰ ﻣﺠﻤﻌﺎت ﻣﺨﺘﺘﻠﻔﺔ أو أردت ن‬
‫ﻻﻧﺘﻘﺎل إﻟﻰ ﻣﺸﺮﺮوع ﺁﺧﺮ ﻳﺴﺘﻌﻤﻤﻞ ﻣﺮاﺟﻊ ﻰ‬ ‫أن ﺗﻌﺮف أن اﻻ‬ ‫ﻋﻠﻴﻚ ن‬
‫ﺧﺮ‪.‬‬
‫ﺻﺔ ﺑﻬﺎ ﻻ ﻳﻌﺎد ﺗﻨﻨﺰﻳﻠﻬﺎ إن اﺳﺘﻌﻤﻤﻠﻬﺎ ﻣﺸﺮوع ﺁﺧ‬
‫ال ‪ pdb‬اﻟﺨﺎﺻ‬
‫ﺠﻤﻌﺎت اﻟﺘﻲ ﺗﻢ ﺗﻨﺰﻳﻞ ﻣﻠﻔﺎت ل‬
‫ﻳﺘﻄﻠﺐ إإﻋﺎدة اﻟﻘﻴﺎم ﺑﺎﻟﻤﻤﺮاﺣﻞ اﻟﺴﺎﺑﻘﺔ ﻣﻣﻊ اﻟﻌﻠﻢ أن اﻟﻤﺠ‬
‫‪ ‬‬

‫‪ ‬‬ ‫ت ﻋﻨﻬﺎ‬
‫ﺑﻌﺾ اﻷﺳﺌﻠﺔ و اﻹﺟﺎﺑﺎت‬
‫ﺾ‬
‫‪ ‬‬ ‫اﻟﻜﺎﺗﺐ ااﻷﺻﻠﻲ ﻟﻠﻤﻘﺎﻟﺔ ﻳﺘﻜﻠﻢ هﻨﺎ‪...‬‬
‫‪ ‬‬ ‫‪ ‬‬
‫‪ pd‬ﻟﻬﺎ؟‬
‫اﻟﻤﺠﻤﻌﺎت اﻟﺘﻲ ﺗﺘﻮﻓﺮﺮ ﻣﻠﻔﺎت ‪db‬‬
‫ت‬ ‫‪ /1‬ﻣﺎ ﻫﻲ‬

‫•‬ ‫‪Mscorlibb.DLL‬‬
‫•‬ ‫‪System.D‬‬‫‪DLL‬‬
‫•‬ ‫‪System.D‬‬‫‪Data.DLL‬‬
‫•‬ ‫‪System.D‬‬‫‪Drawing.DL‬‬‫‪LL‬‬
‫•‬ ‫‪System.W‬‬‫‪Web.DLL‬‬
‫•‬ ‫‪System.W‬‬‫‪Web.Extenssions.DLL‬‬
‫•‬ ‫‪System.W‬‬‫‪Windows.Foorms.DLL‬‬
‫•‬ ‫‪System.X‬‬‫‪XML.DLL‬‬
‫•‬ ‫‪WPF (UIAutomattion*.dll, System.Windows.DLL‬‬ ‫‪L, System‬‬ ‫‪m.Printing.D‬‬ ‫‪DLL, Systtem.Speech..DLL,‬‬
‫‪WindowssBase.DLL, WindowsF‬‬ ‫ﺧﺮى ‪FormsIntegrration.DLL, Presentatioon*.dll,‬‬
‫)وﺑﻌﺾ ﻟﻤﺠﻤﻌﺎت اﻷﺧ‬
‫•‬ ‫‪Microsofft.VisualBassic.DLL‬‬

‫ﺗﺴﺄﻟﻨﻲ ﻋﻦ‬
‫ﻲ‬ ‫اﻟﻤﻨﺴﺪﻟﺔ ﺗﻈﻬﺮ ﻟﻲ ﻧﻧﺎﻓﺬة ﻓﺘﺢ ﻣﻣﻠﻔﺎت‬
‫ﺔ‬ ‫‪ Lo‬ﻣﻦ اﻟﻘﺎﺋﺋﻤﺔ‬
‫‪oad Sym‬‬
‫ﻀﻐﻂ ﻋﻠﻰ اﻟﻟﺨﻴﺎر ‪mbols‬‬
‫‪ /2‬ﻋﻨﺪﺪﻣﺎ أﻗﻮم ﺑﺎﻟﻀ‬
‫ل ‪ ،PDB‬ﻟﻤﻤﺎذا؟‬‫ﻣﻠﻒ ال‬

‫ﺤﺎﻻت اﻟﺘﺎﻟﻴﺔ‪:‬‬
‫ﻈﻬﺮ هﺬﻩ اﻟﻨﺎﻓﺪة ﻓﻓﻲ ﺣﺎﻟﺔ ﻣﻦ اﻟﺤ‬
‫ﺗﻈﻬ‬

‫ﻻﻧﺘﺮﻧﺖ ﺑﻄﺮﻳﻳﻘﺔ ﺻﺤﻴﺤﺔ‪ ،‬ﺗﺄآﺪ ﻣﻦ ووﺿﻊ هﺬا اﻟﻌﻌﻨﻮان آﻤﺎ أووﺿﺤﻨﺎ‬ ‫ﺼﺪر اﻟﻤﻠﻔﺎت ﻣﻦ ﺷﺒﻜﺔ اﻻ‬ ‫ﺑﻮﺿﻊ ﻋﻨﻮان ﻣﺼ‬
‫ﻊ‬ ‫ﻟﻢ ﺗﻘﻢ‬
‫ﻢ‬ ‫‪-‬‬
‫‪http://rreferencesource.microosoft.com/sy‬‬ ‫ﺳﺎﺑﻘﺎ ‪ymbols‬‬ ‫ﺳ‬
‫ﺘﻴﺎر ﻋﻨﻮان ﻣﺠﻠﺪ ﻻ ﺗﻤﻠﻚ ﺻﻼﺣﻴﻴﺔ اﻟﺘﻌﺪﻳﻞ ﻓﻴﻪ‪.‬‬
‫ﻟﻘﻘﺪ ﻗﻤﺖ ﺑﺎﺧ ر‬ ‫‪-‬‬
‫ﺑﺎﺧﺘﻴﺎر ﻣﺠﻤﻊ ﻏﻴﺮ ﻣﻮﻮﺟﻮد ﻓﻲ اﻟﻘﺎﺋﻤﻤﺔ أﻋﻼﻩ‪.‬‬
‫ر‬ ‫ﻟﻘﻘﺪ ﻗﻤﺖ‬ ‫‪-‬‬
‫اﻟﻨﺴﺨﺔ اﻟﺘﺠﺮﻳﺒﻴﺔ ‪ Beeta‬ﻣﻦ‬
‫ﺔ‬ ‫ى ﻣﻦ إﻃﺎر اﻟﻌﻌﻤﻞ ‪.‬ﻧﺖ ﻣﺜﺒﺘﺔ ﻋﻠﻰ ﺟﻬﺎزك‪ ،‬ﻗﺪ ﻳﺤﺼﻞ هﺬا إن آﻨﺖ ﺗﺴﺘﻌﻤﻤﻞ ﻣﺜﻼ‬ ‫ﺗﺄﺗﺄآﺪ إن آﻨﺖ ﺗﻤﻤﻠﻚ ﻧﺴﺨﺔ أﺧﺮى‬ ‫‪-‬‬
‫ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ‬
‫ﻂ‬ ‫ﺴﺨﺔ اﻟﻤﺘﻮاﻓﻘﺔ‪ ،‬اذهﺐ إﻟﻰ ﻧﺎﺎﻓﺬة ال ‪Moddules‬‬ ‫‪ ،windows‬ﻟﻠﺘﺄآﺪ ﻣﻦ أﻧﻚ ﺗﻤﻠﻚ اﻟﻨﺴ‬
‫‪w‬‬ ‫ﻧﻈﺎم اﻟﺘﺸﻐﻴﻞ ‪seerver 2008‬‬‫ﻧﻈ‬
‫‪ mscorlib.dll‬هﻮ‬
‫‪m‬‬ ‫ﻊ‬
‫ﺑﺎﻟﻤﺠﻤﻊ‬ ‫ﺨﺎص‬ ‫‪) (CTR‬ﺳﺘﻈﻬﻬﺮ هﺬﻩ اﻟﻨﺎﻓﺬة أﺛﻨﺎء ﻋﻤﻠﻴﺔ اﻟﻟﺘﻨﻘﻴﺢ ﻓﻘﻂ( و اﻟﺘﺄآﺪ ﻣﻦ أن ررﻗﻢ اﻟﻨﺴﺨﺔ اﻟﺨ‬‫))‪RL+ALT+U‬‬
‫‪RTM‬‬‫ﺑﺘﺜﺒﻴﺖ اﻹﺿﺎﻓﺔ ‪M Version of the .NET Frameworkk‬‬ ‫ﺖ‬ ‫‪ 2.0.50727.14333‬آﻤﺎ ﻓﻲ ااﻟﺼﻮرة اﻟﺘﺎﻟﻴﺔ‪ ،‬أو ﺗﺄآﺪ ﻣﻦ أأﻧﻚ ﻗﻤﺖ‬
‫‪ 3.5.‬ﺑﺼﻮرة ﺻ‬
‫ﺻﺤﻴﺤﺔ‪.‬‬

‫ﺸﻐﻴﻞ ﺑﻴﺌﺔ اﻟﺘﻄﻮﻮﻳﺮ‬


‫‪ \..\M‬و أﻋﺪ ﺗﺸ‬ ‫ﺠﻠﺪ ‪mon7\IDE‬‬
‫‪Microsoft Viisual Studioo 9.0\Comm‬‬ ‫ﺗﺄﺗﺄآﺪ ﻣﻦ وﺟﻮد ااﻟﻤﻠﻒ ‪ symssrv.yes‬ﻓﻲ اﻟﻤﺠ‬ ‫‪-‬‬

‫‪ ‬‬

‫‪91‬‬
‫‪200‬‬
‫ﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮااﻳﺮ ﻣﻦ ﺳﻨﺔ ‪08‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬ‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.ccom‬‬
‫‪ ‬‬

‫‪ ‬‬
‫ﻹﻃﺎر ﻋﻤﻞ ‪.‬ﻧﺖ‬
‫ﺸﻔﺮات اﻟﻤﻤﺼﺪرﻳﺔ ﻹ‬
‫إﻋﺪاد اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ﻟﺘﻨﻘﻴﺢ اﻟﺸ‬
‫‪ ‬‬

‫‪ ‬‬ ‫‪"Source is not‬‬


‫‪n avaiilable fo‬‬
‫ﺗﻘﻮل ‪or this‬‬
‫أﺗﻠﻘﻰ رﺳﺎﻟﺔ ل‬
‫ل إﻟﻰ ﻧﺎﻓﺬة اﻟﻜﻮد‪ ،‬ﻰ‬ ‫‪ /3‬ﻋﻨﺪﺪﻣﺎ أﺣﺎول ﻓﺘﺘﺢ أو اﻟﺪﺧﻮل‬
‫‪ ‬‬
‫ﻫﻮ اﻟﺴﺒﺐ؟‬
‫ﺴﺎﺑﻘﺔ‪ ،‬ﻣﺎ ﻮ‬
‫"‪ location‬أو ﺗﺗﻈﻬﺮ ﻟﻲ رﺳﺎﺎﻟﺔ اﻟﺤﻮار اﻟﺴ‬

‫‪ ‬‬ ‫ﺼﻮرة ﺟﻴﺪة‪ ،‬ﻳﻤﻜﻜﻨﻚ اﻟﺘﺄآﺪ ﻣﻦ ذﻟﻚ ﺑﻤﺸﺎهﺪة اﻟﻌﻤﻮد‬


‫ﻣﻠﻔﺎت ال‪ PDB‬ﻗﺪ ﺗﺗﻢ ﺗﺤﻤﻴﻠﻬﺎ ﺑﺼ‬
‫ﺗﺘﺄآﺪ ﻣﻦ أن ت‬
‫ﺴﺎﺑﻖ ﻟﻜﻲ ﺪ‬
‫ﻄﺎﻟﻊ اﻟﺴﺆال اﻟﺴ‬
‫أوﻻ ﻋﻠﻴﻚ أن ﺗﻄ‬
‫ﻻ‬
‫‪. « Sym‬‬‫» ‪mbols Statuss‬‬
‫‪ ‬‬
‫ﻋﻠﻴﻚ ﺑﺎﻟﺘﺎﻟﻲ‪:‬‬
‫‪ « Symbols‬ﻳﺤﻤﻞ اﻟﻌﺒﺎررة "‪ "Symbols loaded.‬ﻋ‬
‫‪S‬‬ ‫إذا آﺎن اﻟﺤﻘﻞ ﻓﻲ اﻟﺨﺎﻧﺔ » ‪Staatus‬‬
‫‪ ‬‬
‫ﻳﺤﺘﻮي ﻋﻠﻰ‬
‫ي‬ ‫‪ PDB‬ﻟﻠﻤﺠﻤﻊ ﻟﻜﻨﻪ ﻻ‬‫ﺗﻜﻮن ﻗﺪ ﻗﻤﺖ ﺑﺘﻨﺰﺰﻳﻞ ﻣﻠﻒ ال ‪B‬‬ ‫ﺑﻀﺒﻂ ‪ Microosoft Symbbol Server‬ﺳﺎﺑﻘﺎ‪ ،‬ﻳﻤﻜﻦ أن ن‬ ‫ﻂ‬ ‫إذذا ﻗﻤﺖ‬ ‫‪-‬‬
‫‪ ‬‬ ‫‪ ‬‬
‫ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ اﻷﻣﺮ ‪Loadd‬‬
‫ﻂ‬ ‫اﻟﻤﻠﻔﺎت أو ﻗﻢ ﺑﺤﺬف اﻟﻤﺠﻠﺪ ﻧﻬﺎﺋﻴﺎ و أﻋﺪ ﻋﻤﻠﻴﺔ اﻟﻟﺘﻨﺰﻳﻞ‬
‫ت‬ ‫ﻣﻣﻌﻠﻮﻣﺎت ﻋﻦ اﻟﻟﺸﻔﺮة‪ .‬ﺣﺎول أأن ﺗﻐﻴﺮ ﻣﺴﺎر ﺗﺨﺰﻳﻦ‬
‫اﻟﻤﻌﻠﻮﻣﺎت(‪.‬‬
‫ت‬ ‫ل اﻟﺘﺎﻟﻲ ﻟﻠﻤﺰﻳﺪ ﻣﻦ‬
‫ﻄﻠﻊ ﻋﻠﻰ اﻟﺴﺆال‬
‫‪) Symbolss‬اﻟﻄ‬
‫اﻟﺘﺎﻟﻲ‪"Enaable Sourcee Server" :‬‬
‫ﻋﻠﻰ اﻟﻤﺴﺎر ﻲ‬ ‫‪ Enab‬ﻓﻲ ﻧﺎﻓﺬة اﻹﻋﺪادات ﻰ‬ ‫‪ble Souce Server‬‬
‫‪S‬‬ ‫ﻗﻤﺖ ﺑﺘﻔﻌﻴﻞ ﺧﺎﻧﺔ اﻟﺨﻴﺎر‬
‫ﺗﺄﺗﺄآﺪ ﻣﻦ أﻧﻚ ﺖ‬ ‫‪-‬‬
‫‪ittem on the Tools‬‬
‫‪T‬‬ ‫‪-> Op‬‬‫‪ptions -> D‬‬ ‫>‪Debugging -‬‬ ‫‪- General‬‬
‫ﺧﺎﺻﺔ(‪.‬‬‫اﻟﺘﺨﺰﻳﻦ )ﻟﻤﺴﺘﻌﻤﻠﻲ اﻟﻔﻴﺴﺘﺎ ﺑﺼﻔﺔ ﺧ‬
‫ﻦ‬ ‫ﻋﻠﻰ ﻣﺠﻠﺪ‬
‫ﺣﻴﺔ اﻟﺘﻌﺪﻳﻞ ﻰ‬ ‫ﺗﺄﺗﺄآﺪ ﻣﻦ أن ﺣﺴﺎﺎﺑﻚ ﻳﻤﻠﻚ ﺻﻼﺣ‬ ‫‪-‬‬

‫اﻟﻔﺮق ﺑﻴﻨﻪ‬
‫ﻣﻠﻔﺎت اﻟﺸﻔﺮات ﻣﻣﻨﻪ‪ ،‬ﻣﺎ ق‬
‫ت‬ ‫‪ Micros‬ﻟﻟﺘﻨﺰﻳﻞ‬
‫‪soft Sym‬‬
‫ﺳﻮﻓﺖ ‪mbol Serrver‬‬
‫‪ /4‬أﻧﺎ أﺳﺘﻌﻤﻞ ﺧﺎددم ﻣﺎﻳﻜﺮوﺳﻮ‬
‫و ﺑﻴﻦ اﻟﻄﺮﻳﻘﺔ اﻟﺘﻘﻘﻠﻴﺪﻳﺔ؟‬

‫ﻣﻠﻔﺎت ‪ PDB‬ﺑﺪون أي ﻣﻌﻠﻮﻣﺎت ﻋﻦ اﻟﺸﻔﺮة ﺑﺪاﺧﻠﻬﺎ‪ ،‬هﺬﻩ اﻟﻤﻌﻌﻠﻮﻣﺎت ﺗﻢ ﺣﺬﻓﻓﻬﺎ ﻗﺒﻞ ﻧﺸﺮهﺎ رﺳﻤﻴﺎ‬
‫‪ Microsoft Sym‬ﻳﻮﻓﺮ ت‬ ‫ﻣﻮﻗﻊ ‪mbol Serveer‬‬
‫ال ‪. http://refeerencesourcce.microsoftt.com/symbbols).PDB‬‬
‫(‪.‬‬ ‫ﻼل هﺬا اﻟﺸﺮح ﻟﺘﻨﺰﻳﻞ ﻣﻠﻔﺎت ل‬
‫ﺨﺪﻣﻨﺎﻩ ﺳﺎﺑﻘﺎ ﺧﻼ‬
‫ﻋﻠﻰ اﻟﻤﻤﻮﻗﻊ اﻟﺬي اﺳﺘﺨ‬

‫ﺿﻊ ﻗﺒﻞ‬‫‪ (http://referen‬اﻟﺬي ﻳﻮﺿ‬


‫‪h‬‬ ‫‪ncesource.m‬‬ ‫ت و هﻤﺎ اﻟﻌﻨﻮﻮان اﻟﺴﺎﺑﻖ )‪microsoft.coom/symbolss‬‬ ‫ﺼﺪرﻳﻦ ﻟﻠﻤﻠﻔﺎت‬
‫اﻟﻬﺪف ﻣﻦ إﺿﺎﻓﺔ ﻣﺼ‬
‫‪ (Microsoft‬هﻮ ﺗﻤﻜﻴﻦ ااﻟﻤﺴﺘﺨﺪم ﻣﻦ اﻟﻟﻘﻴﺎم ﺑﻌﻤﻠﻴﺔ ﺗﻨﺰﺰﻳﻞ ﻣﺮة واﺣﺪة ﻟﺠﻤﻴﻊ‬
‫‪M‬‬ ‫‪Sy‬‬‫ﻋﻨﻮان ﺧﺎدم ﻣﺎﻳﻜﻜﺮوﺳﻮﻓﺖ )‪ymbol Serveer‬‬ ‫اﻟﻤﺼﺪر اﻟﺜﺎﻧﻲ وهﻮ ﻋ‬
‫ر‬
‫ﺗﺴﺮﻳﻊ اﻟﻌﻤﻠﻴﺔ أآﺜﺮ ﺑﺑﺎﻟﺒﺤﺚ‬
‫ﻊ‬ ‫ﺷﺮﺣﻨﺎ ﻓﻲ ﻓﻘﺮة ﻟﻠﻤﺴﺘﺨﺪﻣﻴﻦ اﻟﻟﻤﺘﻘﺪﻣﻴﻦ( و اﻟﻬﻬﺪف هﻮ‬ ‫اﻟﻤﻠﻔﺎت اﻟﺨﺎﺻﺔ ﺑﺎﻟﻤﺠﻤﻤﻌﺎت اﻟﻤﺴﺘﻌﻤﻠﻠﺔ ﻣﻦ ﻃﺮف اﻟﻤﻤﺸﺮوع )آﻤﺎ ﺷ‬
‫إﻟﻰ ﻗﺎﺋﻤﺔ‬
‫‪ Microsofft Symbol Server‬ﻰ‬ ‫‪S‬‬ ‫اﻟﻤﺼﺪر اﻟﺜﺎﻧﻲ ‪ ...‬ﻗﻢ ﺑﺑﺈﺿﺎﻓﺔ ﻋﻨﻮان اﻟﻤﻮﻗﻊ‬
‫ر‬ ‫ﻣﻦ اﻟﻤﺼﺪر اﻷوول و ﻣﻦ ﺛﻢ ﺗﻨﺰﺰﻳﻠﻪ ﻣﻦ‬
‫ﻋﻦ ﻣﻌﻠﻮﻮﻣﺎت اﻟﻤﻠﻒ ﻦ‬
‫ﻋﻠﻰ ﻣﺼﺎدر اﻟﺘﻨﺰﻳﻳﻞ‬
‫اﻟﻌﻼﻣﺔ ﺻﺢ ﻣﻦ ﻰ‬‫ﻣﺔ‬ ‫ﺟﻤﺔ اﻟﻤﺸﺮوع و ﻋﻨﺪ اﻻﻧﺘﻬﺎء ﻗﻢ ﺑﻨﺰع‬‫اﻟﻤﺼﺎدر ‪ -‬آﻤﺎ ﻳﻈﻬﺮ ﻓﻓﻲ اﻟﺼﻮرة – وﻣﻦ ﺛﻢ ﻗﻢ ﺑﺘﺮﺟ‬
‫ر‬

‫ﺼﻠﺐ(‬
‫‪ pdb‬ﻓﻲ اﻟﻘﺮص اﻟﺼ‬
‫ﺠﻠﺪ ﻣﻠﻔﺎت ‪p‬‬ ‫أردت أن ﺗﻘﻮم ﺑﻌﻤﻠﻴﻠﻴﺔ ﺗﺤﺪﻳﺚ )ﻟﻤﺠ‬
‫ﻓﻲ ﺣﺎﻟﺔ أن ت‬‫ﺳﻴﻮﻟﺪ ﻣﺸﺎآﻞ ﻲ‬ ‫ﻀﺎ أن ﺗﻌﺮف أأن وﺟﻮد ﻣﺼﺪررﻳﻦ ﻣﺨﺘﻠﻔﻴﻦ ﺳ‬ ‫ﻋﻠﻴﻚ أﻳﻀ‬
‫ﺼﺪر اﻟﺜﺎﻧﻲ‪.‬‬
‫ﺤﺒﺬ ﺣﺬف اﻟﻤﺼ‬‫ﺼﺪرﻳﻦ‪ ،‬ﻟﺬﻟﻚ ﻳﺤ‬ ‫ﺑﺘﻨﺰﻳﻞ ﻣﻣﻠﻔﺎت ﺟﺪﻳﺪة ﻟﻤﻤﺸﺮوﻋﻚ ﻷن ﺑﻴﻴﺌﺔ اﻟﺘﻄﻮﻳﺮ ﺳﺘﺘﻮاﺟﻪ ﻣﺸﺎآﻞ ووﺧﻠﻂ ﺑﻴﻦ اﻟﻤﺼ‬

‫‪92‬‬
‫‪200‬‬
‫ﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮااﻳﺮ ﻣﻦ ﺳﻨﺔ ‪08‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬ‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.ccom‬‬
‫‪ ‬‬
‫ﻹﻃﺎر ﻋﻤﻞ ‪.‬ﻧﺖ‬
‫ﺸﻔﺮات اﻟﻤﻤﺼﺪرﻳﺔ ﻹ‬
‫إﻋﺪاد اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ﻟﺘﻨﻘﻴﺢ اﻟﺸ‬
‫‪ ‬‬

‫‪ ‬‬ ‫ﻫﺬه اﻟﻤﻴﺰة ﻣﻊ اﻟﻨﺴﺨﺔ ‪64-bit‬؟‬


‫ﻫﻞ ﺗﻌﻤﻞ ه‬
‫‪ /5‬ﻞ‬
‫‪ ‬‬
‫ﻧﻔﺲ اﻟﻮﻗﺖ ﺟﻤﻴﻊ أﻧﻮاع اﻟﺒﻨﻴﺎت اﻟﺘﺤﺘﻴﺔ‬
‫ﻣﻠﻔﺎت ال ‪ ،PDBs‬وهﻲ ﻓﻲ ﻣﺠﻤﻠﻬﻬﺎ ﺗﺪﻋﻢ ﻓﻲ ﺲ‬
‫ﻟﻠﻨﺴﺨﺔ ‪ 64 bit‬ت‬
‫ﺔ‬ ‫ﺖ أﻳﻀﺎ‬
‫وﻓﺮت ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ‬
‫ﻧﻌﻢ‪ ،‬ﻟﻘﺪ ت‬
‫‪ ‬‬ ‫ﻧﺴﺦ ﻣﻨﻔﺼﻠﺔ ﻟﻜﻞ ﺑﺑﻨﻴﺔ‪.‬‬
‫و ﻻ ﺗﺤﺘﺘﺎج ﻟﻮﺟﻮد ﺦ‬

‫‪ ‬‬ ‫ﺷﻔﺮة ﻟﻠﻔﺮﻳﻢ وورك ‪.‬ﻧﺖ؟؟؟‬


‫ﺿﻊ ﻧﻘﻄﺔ ﺗﻮﻮﻗﻒ داﺧﻞ ﺷ‬
‫‪ /6‬ﻛﻴﻴﻒ ﻟﻲ أن أﺿ‬
‫‪ ‬‬ ‫ﻒ ﻋﺎدﻳﺔ داﺧﻞ ااﻟﺸﻔﺮة ‪ ،‬ﺑﻌﺪهﺎ اﺿﻐﻂ ﻋﻠﻴﻬﺎ ﺑﺑﺰر اﻟﻔﺄرة اﻷﻳﻤﻤﻦ و اﺧﺘﺮ ‪ Locatiion‬ﻣﻦ اﻟﻘﻘﺎﺋﻤﺔ اﻟﻤﻨﺴﺪﻟﺔ آآﻤﺎ ﻓﻲ‬
‫ﺿﻊ ﻧﻘﻄﺔ ﺗﻮﻗﻒ‬
‫ﻧﻌﻢ ﻳﻤﻜﻨﻨﻚ ذﻟﻚ‪ ،‬ﻗﻢ ﺑﻮﺿ‬
‫اﻟﺼﻮرة اﻟﺘﺎﻟﻴﺔ ‪:‬‬
‫ة‬
‫‪ ‬‬

‫‪ ‬‬ ‫‪ ‬‬

‫ﻳﺤﻤﻞ ﻋﻼﻣﺔ ﺻﺢ و اﺿﻐﻂ ﻋﻠﻰ ﻣﻣﻮاﻓﻖ ‪OK‬‬


‫ﻞ‬ ‫‪"Allow‬‬ ‫ﺟﻌﻞ اﻟﺨﻴﺎر "‪nt‬‬
‫‪w Source to be Differen‬‬ ‫ﺑﻌﺪهﺎ اﺟ‬

‫ﻴﺔ‪.‬‬
‫ﺳﺘﺮى أن اﻟﻨﻘﻄﺔ ﺗﻌﻤﻞ ﺑﺼﻮرة ﻃﺒﻴﻌﻴﺔ‬

‫ﺻﺢ ﻣﻦ أﻣﺎم ﻟﺨﻴﺎر ‪“Reqquire sourcee files to exxactly matchh the‬‬‫آﻨﺖ ﺗﺴﺘﻌﻤﻞ هﺬﻩ اﻟﻤﻴﺰة ﺑﺼﻮرةة ﻣﺘﻜﺮرة‪ ،‬ﻗﻢ ﺑﺑﻨﺰع اﻟﻌﻼﻣﺔ ﺻ‬
‫إذا ﺖ‬
‫ﻲ ﺗﺒﻮﻳﺐ ‪ Debugging‬ﻣﻦ ﻧﺎﻓﺬة اﻹﻋﺪادات اﻟﺨﺎﺻﺔ ﺑﺒﻴﺌﺔ اﻟﺘﻄﻮﻳﺮ )‪(Toools->Optionns->Debuggging‬‬‫‪ original‬اﻟﺬي ﺗﺠﺪﻩ ﻓﻲ‬
‫‪o‬‬ ‫”‪verssion.‬‬

‫‪ "Go To Definitio‬ﻣﻊ ﺷﻔﺮة ﻟﻠﻟﻠﺪوت ﻧﺖ؟‬


‫‪D‬‬ ‫ت ﻣﺜﻞ "‪on‬‬
‫‪ /7‬ﻟﻤﺎﺎذا ﻻ ﺗﻌﻤﻞ ﺑﺑﻌﺾ اﻷدوات‬

‫اﻟﺪوت ﻧﺖ ﻷن اﻟﻤﻌﻌﻠﻮﻣﺎت‬
‫ت‬ ‫إن ﻋﻤﻠﻴﺔ اﻟﺘﺘﻨﻘﻞ ﻣﻦ اﻟﻤﺘﻐﻴﺮﺮ إﻟﻰ ﻣﺼﺪر ﺗﻌﺮﻳﻔﻪ داﺧﻞ ﺷﻔﺮة ﻋﺎدﻳﺔ ﺗﺘﺘﺨﻞ ﻋﻦ ﺣﺎﻟﺔ اﻟﺸﻔﺮة اﻟﻤﺼﺪرﻳﺔ ﻓﻲ‬
‫اﻟﻤﺘﻐﻴﺮات ﻣﺜﻼ ﻏﻴﺮ ﻣﻮﻮﺟﻮدة ﻓﻲ ﻣﻠﻒ ال ‪ PDB‬ﻷﻧﻬﻬﺎ ﺗﺴﺘﻌﻤﻞ أﺛﻨﺎء ﻋﻤﻠﻴﺔ ﺗﺮﺟﻤﺔ اﻟﻤﺠﻤﻊ و ﺗﻨﻔﻴﺬﻩ‪.‬‬
‫ت‬ ‫اﻹﺿﺎﻓﻴﻴﺔ ﻋﻦ‬

‫‪93‬‬
‫‪200‬‬
‫ﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮااﻳﺮ ﻣﻦ ﺳﻨﺔ ‪08‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬ‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.ccom‬‬
‫‪ ‬‬
‫إﻋﺪاد اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ﻟﺘﻨﻘﻴﺢ اﻟﺸﻔﺮات اﻟﻤﺼﺪرﻳﺔ ﻹﻃﺎر ﻋﻤﻞ ‪.‬ﻧﺖ‬
‫‪ ‬‬

‫‪ ‬‬ ‫‪ /8‬ﻟﻤﺎذا ﺑﻌﺾ اﻟﻌﻨﺎﺻﺮ )ﺧﺼﺎﺋﺺ أو ﻃﺮق( أو ﺑﻌﺾ اﻟﻤﺘﻐﻴﺮات اﻟﻤﺤﻠـﻴﺔ ﻏﻴﺮ ﻇﺎﻫﺮة أﺛﻨﺎء ﻋﻤﻠﻴﺔ اﻟﺘﻨﻘﻴﺢ؟‬
‫‪ ‬‬
‫ﺑﺘﺎت –‪ -Bits‬اﻟﻤﻠﻔﺎت ال‪ dll‬اﻟﺨﺎﺻﺔ ﺑﻤﺠﻤﻌﺎت ﻣﻜﺘﺒﺎت إﻃﺎر ﻋﻤﻞ اﻟﺪوت ﻧﺖ اﻟﺘﻲ ﻗﻤﺖ ﺑﺘﺜﺒﻴﺘﻬﺎ ﻋﻠﻰ ﺟﻬﺎزك هﻲ ﻓﻲ اﻟﺤﻘﻴﻘﺔ ﻣﺠﺰﺋﺔ‪ ،‬و‬
‫‪ ‬‬ ‫هﺬا ﻳﻌﻨﻲ أﻧﻬﺎ ﻣﺠﺰﺋﺔ ﻟﺘﺤﺴﻴﻦ اﻟﻜﻔﺎءة ﺑﺘﻘﻠﻴﻞ اﻟﻤﺴﺎﺣﺔ اﻟﻤﺤﺠﻮزة‪ .‬ﺟﺰئ ﻣﻦ ﻋﻤﻠﻴﺔ زﻳﺎدة اﻟﻜﻔﺎءة ﻳﺘﻄﻠﺐ ﺣﺬف ﺑﻌﺾ اﻟﻤﻌﻠﻮﻣﺎت ﻣﻦ ال ‪Process‬‬
‫اﻟﻤﻮﺟﻮدة ﻓﻲ اﻟﺬاآﺮة )اﻟﺘﻲ ﺗﺴﺘﻌﻤﻞ ﻓﺌﺎت هﺬﻩ اﻟﻤﺠﻤﻌﺎت( و اﻟﺘﻲ ﻻ ﺣﺎﺟﺔ ﻟﻬﺎ‪ .‬إذن ﻋﻤﻠﻴﺔ ﺗﻨﻘﻴﺢ هﺬﻩ اﻟﻤﺠﻤﻌﺎت اﻟﻤﺠﺰﺋﺔ ﺗﺘﺄﺛﺮ‪.‬‬
‫‪ ‬‬
‫آﻤﺎ أن ﺑﻌﺾ اﻟﻤﻨﺎﻃﻖ ﻓﻲ اﻟﺸﻔﺮة اﻟﻤﺼﺪرﻳﺔ ﻻ ﺗﻘﺒﻞ وﺿﻊ ﻧﻘﺎط ﺗﻮﻗﻒ ﻟﻠﺘﻨﻘﻴﺢ دﺧﻠﻬﺎ و ﻻ ﺗﻤﻜﻨﻚ أﺻﻼ ﻣﻦ ﺗﺘﺒﻊ ﻋﻤﻠﻴﺔ اﻟﺘﺮﺟﻤﺔ ﺳﻄﺮا‬
‫‪ ‬‬ ‫ﺳﻄﺮا ﺑﺪاﺧﻠﻬﺎ‪ ،‬ﻟﻜﻦ ﻣﻌﻈﻢ اﻟﻔﺌﺎت ﻗﺎﺑﻠﺔ ﻟﻠﺘﻨﻘﻴﺢ‪.‬‬

‫‪ ‬‬ ‫‪ /9‬ﻟﻤﺎذا ﻋﻤﻠﻴﺔ ﺗﻨﺰﻳﻞ ﺑﻌﺾ ﻣﻠﻔﺎت اﻟﺸﻔﺮات ﺗﺘﻄﻠﺐ وﻗﺖ ﻃﻮﻳﻞ؟‬
‫‪ ‬‬
‫ﺑﻌﺾ ﻣﻠﻔﺎت اﻟﺸﻔﺮات آﺒﻴﺮة ﺟﺪا – ﺣﻮاﻟﻲ ‪ 1‬ﻣﻴﻐﺎ – وهﻲ اﻟﻤﻠﻔﺎت اﻟﻀﺮورﻳﺔ ﻓﻲ ﻣﻌﻈﻢ اﻟﺤﺎﻻت ﻟﻸﺳﻒ‪.‬‬
‫‪ ‬‬
‫‪ /10‬ﻫﻞ أﺳﺘﻄﻴﻊ ﺗﻨﺰﻳﻞ ﺟﻤﻴﻊ اﻟﺸﻔﺮات ﻣﺮة واﺣﺪة؟‬

‫ﺣﺘﻰ اﻵن ﻏﻴﺮ ﻣﻤﻜﻦ‪ ،‬ﻟﻜﻦ اﻟﻌﻤﻞ ﺟﺎري ﻋﻠﻰ ﻗﺪ وﺳﺎق ﻟﺘﻮﻓﻴﺮ هﺬﻩ اﻹﻣﻜﺎﻧﻴﺔ ﻣﺴﺘﻘﺒﻼ‪.‬‬

‫‪ /11‬ﻋﻨﺪﻣﺎ أﻗﻮم ﺑﺘﻨﻘﻴﺢ ﺷﻔﺮة ﺑﻠﻐﺔ اﻟﻔﻴﺒﻲ‪ ،‬ﻣﺜﻼ ﺗﻨﻘﻴﺢ اﻟﻤﺠﻤﻊ ‪ Microsoft.VisualBasic.dll‬أﺟﺪ ﺗﻌﻠﻴﻘﺎت ﻓﻲ‬
‫اﻷﺳﻔﻞ ﻣﻜﺘﻮﺑﺔ ﺑﻠﻐﺔ اﻟﺴﻲ ﺷﺎرب‪ ،‬ﻫﻞ ﻫﺬه ﺷﺎﺋﺒﺔ )ﺧﻄﺄ( ؟‬

‫ﻟﻴﺲ آﺬﻟﻚ‪ ،‬ﻓﻲ اﻟﺤﻘﻴﻘﺔ أﺛﻨﺎء ﻗﻴﺎﻣﻨﺎ ﺑﻨﺸﺮ اﻟﺸﻔﺮات و إﺿﺎﻓﺔ ﺗﻌﻠﻴﻘﺎت ﺣﻘﻮق اﻟﻨﺸﺮ إﻟﻴﻬﺎ ﻓﻲ أﺳﻒ اﻟﺼﻔﺤﺔ‪ ،‬آﺎن ﻣﻮﻟﺪ اﻟﺸﻔﺮات ﻓﻲ ذﻟﻚ‬
‫اﻟﻮﻗﺖ ﻻ ﻳﺪﻋﻢ ﺗﻮﻟﻴﺪ ﺷﻔﺮات ﻣﻜﺘﻮﺑﺔ ﺑﻨﺴﻖ ﻟﻐﺎت ﻣﺨﺘﻠﻔﺔ ﻓﻲ ﻧﻔﺲ اﻟﻮﻗﺖ‪.‬‬

‫‪ /12‬ﻟﻘﺪ ﻗﻤﺖ ﺑﺎﻟﺪﺧﻮل إﻟﻰ ﻣﻠﻒ اﻟﺸﻔﺮات وﻛﻞ ﻣﺎ ﻗﺪ ﻗﻤﺖ ﺑﺘﻨﺰﻳﻠﻪ ﻛﺎن ﻣﻠﻔﺎ ﻓﺎرﻏﺎ؟‬

‫ﻟﻘﺪ رأﻳﻨﺎ هﺬا اﻷﻣﺮ ﻣﻦ ﻗﺒﻞ ﺑﺸﻜﻞ ﻣﺘﻘﻄﻊ و ﻟﻢ ﻧﺒﺤﺚ ﻓﻲ أﺳﺒﺎﺑﻪ‪ ،‬إذا رأﻳﺖ ﻧﻔﺲ اﻟﺸﻲء ﻓﺎﻟﺤﻞ هﻮ إﻋﺎدة ﺗﺸﻐﻴﻞ اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ﻟﻴﻘﻮم‬
‫ﺑﺈﻋﺎدة ﺗﻨﺰﻳﻞ اﻟﻤﻠﻒ أرﺟﻮ أن ﺗﺮاﺳﻠﻨﺎ )ﻓﺮﻳﻖ اﻟﺘﻄﻮﻳﺮ اﻟﺨﺎص ﺑﺈﻃﺎر اﻟﻌﻤﻞ( ﻣﻊ إﻋﻄﺎء اﻻﺳﻢ اﻟﻤﻌﻄﻮب و ﺗﺎرﻳﺦ ﺣﺪوث اﻟﺨﻠﻞ‪.‬‬

‫‪ /13‬ﻣﺎ اﻟﺬي ﺳﻴﺤﺪث إن ﻗﻤﺖ ﺑﺘﻨﺰﻳﻞ ﻣﻠﻒ ﺗﺼﺤﻴﺢ )‪ (HotFix‬أو ﺣﺰﻣﺔ ﺗﺤﺪﻳﺚ ‪service pack‬؟ ﻫﻞ أﺳﺘﻄﻴﻊ‬
‫أن أﺷﺎﻫﺪ اﻟﺸﻔﺮات اﻟﺨﺎﺻﺔ ﺑﻪ؟‬

‫ﻟﻘﺪ ﻗﻤﻨﺎ ﺑﺒﻨﺎء ﻧﻈﺎم ﻳﻤﻜﻨﻨﺎ ﻣﻦ ﺗﻮزﻳﻊ ﻧﺴﺦ ﻣﺘﻌﺪدة ﻣﻦ ﺷﻔﺮات ﺧﺎﺻﺔ ﺑﻤﻨﺘﺞ )ﺣﺴﺐ ﻧﺴﺨﺘﻪ(‪ ،‬وﻟﻢ ﻧﺘﺨﺬ أي ﻗﺮار ﺣﻮل آﻴﻔﻴﺔ ﺗﻮزﻳﻊ هﺬﻩ‬
‫اﻟﻨﺴﺦ وهﻲ اﻗﺘﺮاﺣﺎت ﻣﻔﺘﻮﺣﺔ ﻟﻠﻤﺴﺘﻌﻤﻠﻴﻦ و اﻟﻤﺒﺮﻣﺠﻴﻦ‪ .‬ﻣﺜﻼ‪ ،‬اﻧﻪ واﺿﺢ أن ﻋﻤﻠﻴﺔ وﺿﻊ ﺷﻔﺮة ﺧﺎﺻﺔ ﺑﺤﺰﻣﺔ ﺗﺤﺪﻳﺚ أﻣﺮ ﻣﻔﺮوغ ﻣﻨﻪ ﻟﻜﻦ اﻷﻣﺮ‬
‫ﺻﻌﺐ ﺑﻌﺾ اﻟﺸﻲء ﻓﻲ اﺗﺨﺎذ ﻗﺮار ﺣﻮل وﺿﻊ ﺷﻔﺮة ﺧﺎﺻﺔ ﺑﻜﻞ ﻋﻤﻠﻴﺔ ﺗﺼﺤﻴﺢ‪ ،‬وﻻ ﻧﺰال ﻓﻲ ﺣﺎﺟﺔ إﻟﻰ اﻗﺘﺮاﺣﺎت أو أي ﻣﻼﺣﻈﺎت‪.‬‬

‫ﻓﻲ اﻧﺘﻈﺎر اﺗﺨﺎذ أي ﻗﺮار‪ ،‬ﻋﻠﻴﻚ أن ﺗﻌﺮف ﺑﺄن ﻣﻠﻔﺎت ال ‪ PDB‬ﻻ ﺗﺘﻮاﻓﻖ ﻣﻊ ﺑﻌﺾ اﻟﺸﻔﺮات اﻷﺻﻠﻴﺔ اﻟﺨﺎﺻﺔ ﺑﻤﺠﻤﻊ إن ﺗﻢ ﺗﺤﺪﻳﺜﻪ ﺑﻮاﺳﻄﺔ ﻣﻠﻒ‬
‫ﺗﺼﺤﻴﺢ )‪ .(HotFix‬ﻓﻲ هﺬﻩ اﻟﺨﺎﻻت‪ ،‬ﻧﺎﻓﺬة ال ‪ Modules‬اﻟﺘﻲ ﺗﻜﻠﻤﻨﺎ ﻋﻠﻴﻬﺎ ﺳﺎﺑﻘﺎ ﺳﺘﺨﺒﺮك ﺑﺄن ﻋﻤﻠﻴﺔ ﺗﻨﺰﻳﻞ ﻣﻠﻒ ال‪ PDB‬اﻟﺨﺎص ﺑﺎﻟﻤﺠﻤﻊ ﻏﻴﺮ‬
‫ﻣﻤﻜﻦ‪ .‬ﺑﺎﻓﺘﺮاض أن ﻧﺴﺨﺔ ﺟﺪﻳﺪة ﻣﻦ هﺬﻩ اﻟﻤﻠﻔﺎت ﺗﻢ ﻧﺸﺮهﺎ‪ ،‬ﺳﻴﺘﻌﻴﻦ ﻋﻠﻴﻚ إﻋﺎدة ﻋﻤﻠﻴﺔ اﻟﺘﻨﺰﻳﻞ ﻣﻦ ﺟﺪﻳﺪ‪.‬‬

‫‪ /14‬ﻫﻞ أﺳﺘﻄﻴﻊ أن أدﺧﻞ ﻣﻦ اﻟﻤﺘﺼﻔﺢ إﻟﻰ ﻣﻮﻗﻊ ﺗﻨﺰﻳﻞ ﻣﻠﻔﺎت ال ‪ PDB‬و أﻗﻮم ﺑﺘﻨﺰﻳﻞ اﻟﻤﻠﻔﺎت ﻳﺪوﻳﺎ؟‬

‫ﻻ ﺗﺴﺘﻄﻴﻊ‪ ،‬وﺳﺘﻈﻬﺮ ﻟﻚ رﺳﺎﻟﺔ اﻟﺨﻄﺄ اﻟﺘﺎﻟﻴﺔ‪HTTP 400 (Bad Request):‬‬

‫‪94‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫‪ ‬‬

‫‪ ‬‬ ‫‪ ‬‬

‫ﺗﻄﺎﻟﻌﻮن ﻓﻲ ﻫﺬا اﻟﻌﺪد‪...‬‬

‫‪MCP‬‬ ‫اﻣﺘﺤﺎن ﺷﻬﺎدة اﻟﻤﺤﺘﺮف ﻣﻦ ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ‬


‫ﻳﻌﺪ ﻫﺬا اﻻﻣﺘﺤﺎن اﻟﺒﻮاﺑﺔ اﻟﺮﺋﻴﺴﻴﺔ اﻟﺘﻲ‬
‫ﻋﻠﻰ ﻛﻞ ﻣﺮﺷﺢ أن ﻳﺴﻠﻜﻪ ﻣﻦ أﺟﻞ‬
‫اﻟﻮﺻﻮل إﻟﻰ ﺑﺎﻗﻲ اﻟﺸﻬﺎدات اﻟﺘﻲ‬
‫وﻟﻴﺪ ﺑﻮاﻟﻄﻤﻴﻦ‪ ،‬ﻣﺼﻄﻔﻰ‬ ‫ﺗﻮﻓﺮﻫﺎ ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ و اﻟﺘﻲ ﺗﺰن ﻗﻴﻤﺔ ﻛﺒﻴﺮة ﺟﺪا ﻓﻲ ﺳﻮق اﻟﺒﺮﻣﺠﻴﺎت‪.‬‬
‫ﻣﺤﻤﻮد‬ ‫ﻟﻠﺤﺼﻮل ﻋﻠﻰ ﺷﻬﺎدة ال ‪ MCP‬ﻋﻠﻰ اﻟﻤﺘﺮﺷﺢ اﺟﺘﻴﺎز اﻣﺘﺤﺎن واﺣﺪ ﻋﻠﻰ اﻷﻗﻞ ﻣﻦ‬
‫ﺑﻴﻦ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻻﻣﺘﺤﺎﻧﺎت اﻟﻤﻌﺮﻓﺔ ﺑﺮﻗﻢ ﺗﺴﻠﺴﻠﻲ ﺧﺎص ﺑﻜﻞ واﺣﺪ‪...‬‬
‫ﺗﺘﻤﺔ ﺻﻔﺤﺔ ‪96‬‬

‫ﻣﺮاﺳﻞ اﻟﻤﻮﻗﻊ ﻣﻦ اﻟﺮﻳﺎض‬ ‫ﺧﻼﺻﺔ ﻣﺆﺗﻤﺮ ‪ MS Dev Stay ahead‬ﺑﺎﻟﺮﻳﺎض‬


‫‪  Maxima‬‬ ‫ﺗﺘﻤﺔ ﺻﻔﺤﺔ ‪100‬‬

‫ﻟﻌﻞ اﻟﻜﺜﻴﺮ ﻣﻨﻜﻢ ﻻ ﻳﻌﺮف ﻣﺎ ﻫﻮ ال ‪ CodePlex‬ﺣﺘﻰ اﻵن‬

‫‪ Microsoft Codeplex‬ﻫﻮ ﻋﺒﺎرة ﻋﻦ ﻣﻮﻗﻊ ﻟﻤﺎﻳﻜﻮﺳﻮﻓﺖ‬


‫ﻟﻠﺘﻌﺎﻣﻞ ﻣﻊ ال‪. OpenSource‬‬

‫ﺗﺴﺘﻄﻴﻊ أن ﺗﺼﻨﻊ ﺑﺮاﻣﺠﻚ اﻟﺠﺪﻳﺪة وﺗﺸﺎرك ﺑﻬﺎ ﻋﻠﻰ اﻟﻤﻮﻗﻊ ‪..‬‬


‫ﺗﺴﺘﻤﻊ إﻟﻰ أراء اﻟﻤﺒﺮﻣﺠﻴﻦ اﻵﺧﺮﻳﻦ‪ ,‬وﺗﺴﻤﺢ ﻟﻬﻢ ﺑﺎﺳﺘﺨﺪاﻣﻪ ﻟﻠﺘﻄﻮﻳﺮ ﻓﻴﻪ‬
‫وﻋﻤﻞ إﺿﺎﻓﺎت أﺧﺮي‪ ,‬وأﻧﺖ أﻳﻀﺎ ﺗﺴﺘﻄﻴﻊ أن ﺗﺄﺧﺬ اﻟﺒﺮاﻣﺞ اﻟﻤﻮﺟﻮدة‬
‫ﻋﻠﻴﻪ ﻟﺘﻄﻮﻳﺮﻫﺎ أﻳﻀﺎ‪.‬‬

‫ﻓﻲ اﻵوﻧﺔ اﻷﺧﻴﺮة أﺻﺒﺤﺖ ﻣﻴﻜﺮوﺳﻮﻓﺖ ﺗﻬﺘﻢ ﺑﺎل ‪Open‬‬


‫‪ Source‬ﻋﻤﺎ ﺳﺒﻖ وﻗﺪ ﺳﻤﻌﺘﻢ أن اﻟﺸﻔﺮة اﻟﻤﺼﺪرﻳﺔ ﻹﻃﺎر ﻋﻤﻞ‬
‫اﻟﺪوت ﻧﺖ أﺻﺒﺤﺖ ﻣﻔﺘﻮﺣﺔ ﻟﻠﻘﺮاءة‪.‬‬

‫أﺧﺒﺎر ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ‬
‫إﻋﺪاد ﻣﺼﻄﻔﻰ ﻣﺤﻤﻮد)!‪(theCodeOfSilence‬‬
‫‪ ‬‬
‫ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ‪MCP‬‬ ‫اﻣﺘﺤﺎن ﺷﻬﺎدة اﻟﻤﺤﺘﺮف ﻣﻦ‬
‫وﻟﻴﺪ ﺑﻮاﻟﻄﻤﻴﻦ‪ ،‬ﻣﺼﻄﻔﻰ ﻣﺤﻤﻮد‬
‫ﻣﻘﺪﻣﺔ‪:‬‬
‫ﻳﻌﺪ هﺬا اﻻﻣﺘﺤﺎن اﻟﺒﻮاﺑﺔ اﻟﺮﺋﻴﺴﻴﺔ اﻟﺘﻲ ﻋﻠﻰ آﻞ ﻣﺮﺷﺢ أن ﻳﺴﻜﻪ ﻣﻦ أﺟﻞ اﻟﻮﺻﻮل إﻟﻰ ﺑﺎﻗﻲ اﻟﺸﻬﺎدات اﻟﺘﻲ‬
‫ﺗﻮﻓﺮهﺎ ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ و اﻟﺘﻲ ﺗﺰن ﻗﻴﻤﺔ آﺒﻴﺮة ﺟﺪا ﻓﻲ ﺳﻮق اﻟﺒﺮﻣﺠﻴﺎت‪.‬‬
‫‪ ‬‬ ‫ﻟﻠﺤﺼﻮل ﻋﻠﻰ ﺷﻬﺎدة ال ‪ MCP‬ﻋﻠﻰ اﻟﻤﺘﺮﺷﺢ اﺟﺘﻴﺎز اﻣﺘﺤﺎن واﺣﺪ ﻋﻠﻰ اﻷﻗﻞ ﻣﻦ ﺑﻴﻦ ﻣﺠﻤﻮﻋﺔ ﻣﻦ‬
‫اﻻﻣﺘﺤﺎﻧﺎت اﻟﻤﻌﺮﻓﺔ ﺑﺮﻗﻢ ﺗﺴﻠﺴﻠﻲ ﺧﺎص ﺑﻜﻞ واﺣﺪ‬
‫‪ ‬‬ ‫‪ ‬‬ ‫وهﺬﻩ هﻲ اﻻﻣﺘﺤﺎﻧﺎت اﻟﺘﻲ ﻳﻤﻜﻦ ﻟﻚ أن ﺗﺠﺘﺎزهﺎ‪:‬‬

‫‪، 70-222، 70-221، 70-220، 70-219، 70-218، 70-217، 70-216، 70-215، 0-214، 70-210، 70-086، 70-057،70-056‬‬
‫‪70-، 70-270، 70-244، 70-234، 70-232، 70-230، 70-229، 70-228، 70-227، 70-226، 70-225، 70-224،70-223‬‬
‫‪، 70-297، 70-296، 70-294، 70-293، 70-292، 70-291، 70-290، 70-285، 70-284، 70-282، 70-281، 70-272،271‬‬
‫‪70-320 ، 70-316، 70-315، 70-310، 70-306، 70-305، 70-300، 70-299،70-298‬‬

‫وهﻲ اﻣﺘﺤﺎﻧﺎت ﻣﺘﻨﻮﻋﺔ وﻻ ﻳﺸﺘﺮط أن ﻳﻜﻮن اﻟﻤﺘﺮﺷﺢ ﻣﺒﺮﻣﺠﺎ ﻟﻠﺤﺼﻮل ﻋﻠﻴﻬﺎ و هﻲ ﺗﺨﺺ ﻓﻲ ﻣﺠﻤﻠﻬﺎ اﻟﺘﻘﻨﻴﺎت اﻟﺘﺎﻟﻴﺔ‪:‬‬

‫‪-.NET Framework‬‬
‫‪- BizTalk Server‬‬
‫‪- Commerce Server‬‬
‫‪- Exchange Server‬‬
‫‪-ISA Server‬‬
‫‪-Operations Manager Site Server‬‬
‫‪-Small Business Server‬‬
‫‪-SQL Server‬‬
‫)‪- Systems Management Server (SMS‬‬
‫‪- Windows 2000 Windows NT‬‬
‫‪- Windows Server 2003‬‬
‫‪- Windows XP‬‬

‫اﻻﻣﺘﺤﺎن‪:‬‬
‫‪ /1‬اﻟﺘﺴﺠﻴﻞ‪:‬‬

‫ﻋﻤﻠﻴﺔ اﻟﺘﺴﺠﻴﻞ ﺗﺘﻢ ﻓﻲ اﻟﻤﺮاآﺰ اﻟﻤﻌﺘﻤﺪة ﻣﻦ ﻗﺒﻞ ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ ﻓﻲ ﺑﻠﺪك )راﺟﻊ ﻣﻮﻗﻊ ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ ﻟﻤﻌﺮﻓﺔ اﻟﻤﺮاآﺰ اﻟﻤﻌﺘﻤﺪة ﻓﻲ ﺑﻠﺪك(‬
‫و هﻲ ﺗﺘﻄﻠﺐ ﻣﺼﺎرﻳﻒ ﺗﺨﺘﻠﻒ ﺑﺤﺴﺐ اﻟﻤﺮآﺰ و ﻟﻜﻦ ﻻ ﺗﺘﺠﺎوز ال ‪ 100‬دوﻻر ﻓﻲ أﻏﻠﺐ اﻷﺣﻴﺎن( ﻋﻠﻴﻚ اﻟﺒﺤﺚ ﻋﻦ اﻟﻤﺮآﺰ اﻟﻤﻌﺘﻤﺪ اﻟﺬي ﻳﻘﺪم‬
‫اﻟﺨﺪﻣﺎت اﻷرﺧﺺ – ﺑﻌﺾ اﻟﻤﺮاآﺰ ﺗﻘﺪم أﺳﻌﺎر ﺟﺪ ﻣﻐﺮﻳﺔ–‬

‫ﻳﺴﺘﻔﻴﺪ اﻟﻤﺮﺷﺢ ﻣﻦ دورة ﺗﺪرﻳﺒﻴﺔ ﻣﻜﺜﻔﺔ ﻗﺒﻞ اﺟﺘﻴﺎز اﻻﻣﺘﺤﺎن و ﻣﺪﺗﻬﺎ ﺗﺨﺘﻠﻒ ﻣﻦ ﻣﺮآﺰ إﻟﻰ ﻣﺮآﺰ آﻤﺎ ﻳﻤﻜﻦ ﻟﻠﻤﺮﺷﺢ أن ﻳﺠﺘﺎز اﻻﻣﺘﺤﺎن دون‬
‫اﻟﺨﻀﻮع ﻟﺪورة اﻟﺘﺪرﻳﺒﻴﺔ )اﻟﻤﺼﺎرﻳﻒ ﺗﻨﻘﺺ( أي أن اﻟﺪورة ﻣﻔﺼﻮﻟﺔ ﻋﻦ اﻻﻣﺘﺤﺎن ﺑﻤﻌﻨﻰ اﻧﻚ ﻳﻤﻜﻦ أن ﺗﺄﺧﺬ اﻟﺪورة ﻓﻲ ﻣﻜﺎن وﺗﺬهﺐ ﻟﺘﻤﺘﺤﻦ‬
‫ﻓﻲ ﻣﻜﺎن أﺧﺮ ﻳﻤﻜﻨﻚ ﺣﺘﻰ إن ﺗﺆدى آﻞ اﻣﺘﺤﺎن ﻓﻲ ﻣﻜﺎن إذا أردت‪.‬‬

‫ﻳﻤﻜﻨﻚ أن ﺗﺪرس اﻟﺪورة ﻓﻲ ﻣﺮآﺰ ﺗﻌﻠﻴﻢ أو ﺗﻘﻮم ﺑﻘﺮاءﺗﻬﺎ ﻣﻦ اﻟﻜﺘﺐ اﻟﻤﺘﻮﻓﺮة هﻨﺎ وهﻨﺎك أو ﺗﺴﺘﺨﺪم أي أﺳﻠﻮب ﺗﺸﺎء اﻟﻤﻬﻢ اﻟﺤﺼﻮل ﻋﻠﻰ‬
‫اﻟﻤﻌﻠﻮﻣﺎت‪.‬‬

‫ﻳﻤﻜﻨﻚ ﻣﺮاﺟﻌﺔ اﻟﺪورات اﻟﺘﻲ ﺗﻮﻓﺮهﺎ ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ واﻣﺘﺤﺎﻧﺎﺗﻬﺎ وآﻞ ﻣﺎ ﻳﺘﻌﻠﻖ ﺑﻬﺎ ﻓﻲ ﻗﺴﻢ اﻟﺸﻬﺎدات و اﻟﺘﺪرﻳﺐ ﻓﻲ ﻣﻮﻗﻊ ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ‪.‬‬

‫‪ /2‬اﻟﺬﻫﺎب ﻟﺤﺠﺰ اﻻﻣﺘﺤﺎن‬

‫ﺗﻘﻮم ﺑﺎﻟﺬهﺎب إﻟﻰ ﻣﺮآﺰ اﻻﻣﺘﺤﺎﻧﺎت اﻟﻤﻌﺘﻤﺪ اﻟﺬي ﺗﺮﻳﺪ أداء اﻻﻣﺘﺤﺎن ﻓﻴﻪ وﺗﻘﻮم ﺑﺈﻋﻄﺎﺋﻬﻢ رﻗﻢ اﻻﻣﺘﺤﺎن واﻟﻤﻴﻌﺎد اﻟﺬي ﺗﺮﻳﺪ‬
‫أن ﺗﺆدى اﻻﻣﺘﺤﺎن ﻓﻴﻪ‪.‬‬

‫ﻣﻨﺬ هﺬﻩ اﻟﻨﻘﻄﺔ أﻧﺖ ﻓﻲ اﻟﺤﻘﻴﻘﺔ ﺗﺘﻌﺎﻣﻞ ﻣﻊ ‪ 3‬ﺷﺮآﺎت‬

‫‪96‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫‪ ‬‬

‫‪ ‬‬
‫ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ‪MCP‬‬ ‫اﻣﺘﺤﺎن ﺷﻬﺎدة اﻟﻤﺤﺘﺮف ﻣﻦ‬
‫وﻟﻴﺪ ﺑﻮاﻟﻄﻤﻴﻦ‪ ،‬ﻣﺼﻄﻔﻰ ﻣﺤﻤﻮد‬
‫‪ .1‬ﺷﺮآﺔ ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ ‪ Microsoft‬وهﻰ اﻟﺸﺮآﺔ اﻟﺘﻲ ﺗﻘﻮم ﺑﻌﻤﻞ اﻻﻣﺘﺤﺎﻧﺎت وﺑﻴﻌﻬﺎ‬
‫‪ .2‬ﺷﺮآﺔ ﺑﺮوﻣﺎﺗﺮﻳﻚ ‪ promatric‬وهﻰ اﻟﺸﺮآﺔ اﻟﻮﺣﻴﺪة اﻟﺘﻲ ﺗﺘﻌﺎﻣﻞ ﻣﻌﻬﺎ ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ اﻵن ﻟﺘﻮﺻﻴﻞ اﻣﺘﺤﺎﻧﺎﺗﻬﺎ ﺣﻴﺚ ﺗﻘﻮم ﺑﺘﺄدﻳﺔ‬
‫اﻻﻣﺘﺤﺎن ﻓﻲ ﻣﺮآﺰ اﻻﻣﺘﺤﺎﻧﺎت ‪ Testing Center‬اﻟﻤﻌﺘﻤﺪ ﻣﻦ هﺬﻩ اﻟﺸﺮآﺔ ﻓﻲ ﺑﻠﺪك‪.‬‬
‫‪ ‬‬ ‫‪ .3‬اﻟﺸﺮآﺔ اﻟﺘﻲ ﺳﺘﺆدى اﻻﻣﺘﺤﺎن ﻓﻴﻬﺎ وهﺬﻩ هﻲ اﻟﺸﺮآﺔ اﻟﺘﻲ ﺗﺘﻌﺎﻣﻞ ﻣﻌﻬﺎ ﻣﺒﺎﺷﺮة واﻟﺘﻲ ﻳﻮﺟﺪ ﻓﻴﻬﺎ ﻣﺮآﺰ اﻻﻣﺘﺤﺎﻧﺎت اﻟﻤﻌﺘﻤﺪ ﻣﻦ‬
‫ﺑﺮوﻣﺎﺗﺮﻳﻚ‪.‬‬
‫‪ ‬‬ ‫‪ ‬‬
‫ﻋﻨﺪ ﺣﺠﺰ اﻻﻣﺘﺤﺎن ﺳﻴﻄﻠﺐ ﻣﻨﻚ ﻣﻸ اﺳﺘﻤﺎرة ﺗﺤﺘﻮى ﻋﻠﻰ ﻣﻌﻠﻮﻣﺎت ﻣﺜﻞ اﻻﺳﻢ واﻟﺘﻠﻴﻔﻮن و‪....‬‬

‫وﻟﻜﻦ ﺑﺎﻟﻨﺴﺒﺔ ﻟﻠﻌﻨﻮان ﻳﺠﺐ آﺘﺎﺑﺘﻪ ﺑﺪﻗﺔ ﻷن اﻟﺸﻬﺎدة ﺳﺘﺮﺳﻞ إﻟﻴﻚ ﻋﻦ ﻃﺮﻳﻘﻪ أو ﻳﻤﻜﻨﻚ ﺗﻐﻴﻴﺮﻩ ﻻﺣﻘﺎ آﻤﺎ ﺳﻨﺮى‪.‬‬

‫اﻟﺒﺮﻳﺪ اﻻﻟﻜﺘﺮوﻧﻲ ﻳﺠﺐ آﺘﺎﺑﺔ اﻟﺒﺮﻳﺪ اﻟﺬي ﺗﺴﺘﻌﻤﻠﻪ ﻷﻧﻪ ﺳﻴﺘﻢ إرﺳﺎل رﺳﺎﺋﻞ ﻟﻚ ﻋﻠﻰ هﺬا اﻟﻌﻨﻮان‪.‬‬

‫‪ /3‬اﻟﺘﺤﻀﻴﺮ ﻟﻼﻣﺘﺤﺎن‪:‬‬
‫إذا ﺳﺠﻠﺖ ﻓﻲ ﻣﺮآﺰ ﻣﻌﺘﻤﺪ و دﻓﻌﺖ ﻧﻔﻘﺎت اﻟﺘﺴﺠﻴﻞ آﺎﻣﻠﺔ‪ ،‬ﺳﺘﺴﺘﻔﻴﺪ ﻣﻦ دورة ﺗﺪرﻳﺒﻴﺔ ﻣﻜﺜﻔﺔ ﻗﺒﻞ اﺟﺘﻴﺎز اﻻﻣﺘﺤﺎن‪ ،‬و ﻣﻊ ذﻟﻚ ﻋﻠﻴﻚ اﻟﺘﺤﻀﻴﺮ‬
‫ﺑﻤﻔﺮدك ﺑﺎﺳﺘﻌﻤﺎل اﻟﻜﺘﺐ )راﺟﻊ ﻣﻜﺘﺒﺔ اﻟﻤﻮﻗﻊ – ﻗﺴﻢ اﻟﺘﺤﻀﻴﺮ ﻻﻣﺘﺤﺎﻧﺎت اﻟﺸﻬﺎدات اﻟﺪوﻟﻴﺔ – ( أو ﺑﺎﺳﺘﻌﻤﺎل ﺑﺮاﻣﺞ اﻟﺘﺤﻀﻴﺮ أو ﺑﻌﺾ ﻣﻮاﻗﻊ‬
‫اﻻﻧﺘﺮﻧﺖ‪.‬‬
‫هﺬﻩ ﺑﻌﺾ اﻟﺒﺮاﻣﺞ اﻟﻤﺸﻬﻮرة ﻟﻠﺘﺤﻀﻴﺮ‪:‬‬
‫‪ Vmware‬ﺗﺠﺪوﻧﻪ ﻋﻠﻰ اﻟﻤﻮﻗﻊ ‪www.vmware.com‬‬

‫‪Visual Cert Exam Suite manager‬‬

‫وآﻠﻬﺎ ﺗﻌﻤﻞ ﺑﻤﺒﺪأ اﻟﻤﻠﻔﺎت اﻟﺠﺎهﺰة اﻟﺘﻲ ﺗﺤﺘﻮي ﻋﻠﻰ اﻷﺳﺌﻠﺔ‪ ،‬اﻟﻤﺪة اﻟﻼزﻣﺔ‪ ،‬اﻹﺟﺎﺑﺎت اﻟﺼﺤﻴﺤﺔ‪ ،‬اﺳﻢ اﻻﻣﺘﺤﺎن أي أﻧﻪ ﻋﻠﻴﻚ أن ﺗﻌﻄﻲ ﻟﻠﺒﺮﻧﺎﻣﺞ‬
‫اﻟﻤﻠﻒ اﻟﺬي ﻳﺤﺘﻮي ﻋﻠﻰ ﻣﻌﻠﻮﻣﺎت اﻻﻣﺘﺤﺎن‪.‬‬
‫ﺑﻌﺾ اﻟﻤﻮاﻗﻊ اﻟﻤﻔﻴﺪة‪:‬‬

‫‪www.certifexpress.com‬‬
‫‪www.certiffiles.com‬‬
‫‪www.certexams.com‬‬
‫‪www.microsoft-certification-exam.org‬‬

‫‪ /4‬اﻻﻣﺘﺤﺎن‪:‬‬

‫اﻻﻣﺘﺤﺎن ﻓﻲ ﻣﺠﻤﻠﻪ ﻳﺘﻄﻠﺐ ﻣﻦ ﺳﺎﻋﺘﻴﻦ إﻟﻰ أرﺑﻊ ﺳﺎﻋﺎت ﺣﺴﺐ ﻧﻮﻋﻪ‪ ،‬و ﻋﻠﻴﻚ أن ﺗﺤﺼﻞ ﻋﻠﻰ ﻧﻘﻄﺔ ﺗﻌﺎدل ‪ 55‬إﻟﻰ ‪) 100/75‬ﺣﺴﺐ‬
‫ﻧﻮع اﻻﻣﺘﺤﺎن( ﻣﻦ إﺟﻤﺎﻟﻲ اﻹﺟﺎﺑﺎت ﺣﺘﻰ ﺗﻌﺘﺒﺮ ﻧﺎﺟﺤﺎ‪.‬‬

‫اﻷﺳﺌﻠﺔ ﻋﺒﺎرة ﻋﻦ أﺳﺌﻠﺔ ﺧﻴﺎر واﺣﺪ أو ﻣﺘﻌﺪد )‪ (SCQ ،MCQ‬و ﻋﻠﻴﻚ أن ﺗﺨﺘﺎر اﻹﺟﺎﺑﺔ )اﻹﺟﺎﺑﺎت( اﻟﺼﺤﻴﺤﺔ ﻣﻦ ﺑﻴﻦ اﻷﺟﻮﺑﺔ اﻟﻤﻘﺘﺮﺣﺔ‪.‬‬
‫ﺳﺘﺴﺘﻌﻤﻞ ﺣﺎﺳﻮب ﻣﺰود ﺑﺒﺮﻧﺎﻣﺞ اﻻﻣﺘﺤﺎن‪.‬‬

‫اﻷﺳﺌﻠﺔ آﻠﻬﺎ ﻣﻦ ﻧﻮع ) اﺧﺘﺮ اﻹﺟﺎﺑﺔ اﻟﺼﺤﻴﺤﺔ ( وﻟﻜﻦ هﻨﺎك أﻧﻮاع ﻟﻬﺬا اﻟﺴﺆال‬

‫اﺧﺘﺮ اﻹﺟﺎﺑﺔ اﻟﺼﺤﻴﺤﺔ ﻣﻦ اﻹﺟﺎﺑﺎت‪.‬‬ ‫‪.1‬‬


‫اﺧﺘﺮ ﻋﺪد ﻣﻦ اﻹﺟﺎﺑﺎت ﻳﻘﻮﻣﻮن ﺑﺘﺤﺪﻳﺪﻩ )ﺑﺤﻴﺚ ﺗﻜﻮن آﻞ إﺟﺎﺑﺔ ﻣﻨﻬﻢ ﺗﻤﺜﻞ ﺣﻼ ﻟﻠﻤﺸﻜﻠﺔ(‪.‬‬ ‫‪.2‬‬
‫اﺧﺘﺮ )ﻋﺪد ﻣﻦ اﻹﺟﺎﺑﺎت ﻳﻘﻮﻣﻮن ﺑﺘﺤﺪﻳﺪﻩ( ﺑﺤﻴﺚ ﺗﻜﻮن آﻞ إﺟﺎﺑﺔ ﺟﺰء ﻣﻦ اﻟﺤﻞ‪.‬‬ ‫‪.3‬‬
‫اﺧﺘﺮ ﺟﻤﻴﻊ اﻹﺟﺎﺑﺎت اﻟﺼﺤﻴﺤﺔ‪.‬‬ ‫‪.4‬‬

‫ﺗﻘﻮم ﺑﺎﻟﺘﻌﻠﻴﻢ ﻋﻠﻰ اﻹﺟﺎﺑﺔ اﻟﺘﻲ ﺗﺨﺘﺎرهﺎ ﻓﻲ ‪ radio button‬أو ‪ check box‬ﺣﺴﺐ ﻧﻮع اﻟﺴﺆال‪ ،‬ﻟﻠﺘﺪرﻳﺐ ﻋﻠﻰ اﻷﺳﺌﻠﺔ‬
‫ﻳﻤﻜﻨﻚ اﺳﺘﺨﺪام اﻣﺘﺤﺎﻧﺎت ‪ test king‬وﻟﻜﻦ ﻻ ﺗﻌﺘﻤﺪ ﻋﻠﻴﻬﺎ ﻓﻘﻂ ﻋﻠﻴﻚ ﺑﺎﻟﻤﺮاﺟﻌﺔ اﻟﺠﻴﺪة‬

‫هﺬا اﻟﻤﻮﻗﻊ ﻳﺤﺘﻮي ﻋﻠﻰ اﻣﺘﺤﺎﻧﺎت ﻣﺠﺎﻧﻴﺔ ﻳﻤﻜﻨﻚ ﺗﻨﺰﻳﻞ ﻣﺎ ﺗﺸﺎء ‪http://www.examcollection.com/‬‬

‫‪97‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫‪ ‬‬

‫‪ ‬‬
‫ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ‪MCP‬‬ ‫اﻣﺘﺤﺎن ﺷﻬﺎدة اﻟﻤﺤﺘﺮف ﻣﻦ‬
‫وﻟﻴﺪ ﺑﻮاﻟﻄﻤﻴﻦ‪ ،‬ﻣﺼﻄﻔﻰ ﻣﺤﻤﻮد‬
‫اﻟﻮﺳﺎﺋﻞ اﻟﻤﺘﺎﺣﺔ ﺧﻼل اﻻﻣﺘﺤﺎن‪ :‬اﻟﺮﺟﻮع ‪Review‬‬

‫هﺬﻩ اﻟﻮﺳﻴﻠﺔ ﺗﻤﻜﻨﻚ ﻣﻦ ﺗﻌﻴﻴﻦ اﻷﺳﺌﻠﺔ اﻟﺘﻲ ﺗﺮﻳﺪ اﻟﺮﺟﻮع إﻟﻴﻬﺎ ﻟﻤﺮاﺟﻌﺘﻬﺎ إن آﻨﺖ ﺗﺸﻚ ﻓﻲ إﺟﺎﺑﺘﻚ و ﻧﻨﺼﺤﻚ ﺑﺎﺳﺘﻌﻤﺎﻟﻬﺎ ﻟﺮﺑﺢ اﻟﻮﻗﺖ‪.‬‬
‫‪ ‬‬
‫ﺑﻌﺾ اﻟﻨﺼﺎﺋﺢ ﻟﻠﻤﻤﺘﺤﻨﻴﻦ‪:‬‬

‫‪ ‬‬ ‫‪ -‬ﻋﻠﻴﻚ ﺑﻘﺮاءة اﻹﺟﺎﺑﺎت اﻟﻤﺘﻮﻓﺮة ﻟﻠﺴﺆال اﻟﻤﻄﺮوح ﻗﺒﻞ رؤﻳﺘﻪ ﺛﻢ ﻗﻢ ﺑﻘﺮاءﺗﻪ‪ ،‬هﺬﻩ اﻟﻄﺮﻳﻘﺔ أﺛﺒﺘﺖ ﺟﺪارﺗﻬﺎ ﺣﻴﺚ أﻧﻬﺎ ﺗﻤﻜﻨﻚ ﻣﻦ ﻣﻌﺮﻓﺔ اﻟﺴﺆال‬
‫ﻣﺒﺎﺷﺮة‪.‬‬
‫‪ ‬‬ ‫‪ ‬‬
‫‪ -‬ﺑﻌﺪ ﻗﺮاءة اﻟﺴﺆال ﻋﻠﻴﻚ اﻻﻧﺘﺒﺎﻩ إﻟﻰ اﻟﺘﻮﺟﻴﻬﺎت "‪ "Best Choice‬و "‪ "with the least administrative effort‬اﻟﺘﻲ ﺗﺴﺎﻋﺪك ﻋﻠﻰ‬
‫ﻣﻌﺮﻓﺔ ﻧﻮع اﻹﺟﺎﺑﺔ و ﻓﻲ ﺑﻌﺾ اﻷﺣﻴﺎن ﻋﺪد اﻹﺟﺎﺑﺎت اﻟﺼﺤﻴﺤﺔ‪.‬‬

‫‪ -‬دع اﻷﺳﺌﻠﺔ اﻟﺘﻲ ﺗﺸﻚ ﻓﻴﻬﺎ ﻟﻞ ‪Review‬ﺣﺘﻰ ﻻ ﺗﻀﻴﻊ اﻟﻮﻗﺖ آﺜﻴﺮا‪.‬‬

‫‪ -‬ﺑﻌﺪ اﻹﺟﺎﺑﺔ ﻋﻠﻰ ﺟﻤﻴﻊ اﻷﺳﺌﻠﺔ و اﻟﻀﻐﻂ ﻋﻠﻰ زر‪ ، End Exam‬ﺗﻈﻬﺮ ﻟﻚ ﻗﺎﺋﻤﺔ ﺑﻬﺎ ﺟﻤﻴﻊ اﻷﺳﺌﻠﺔ و ﺑﺠﺎﻧﺒﻬﺎ ﻋﻼﻣﺔ ﺻﺢ ﻟﻸﺳﺌﻠﺔ اﻟﺘﻲ أردت‬
‫أن ﺗﺪﻋﻬﺎ ﻟﻞ‪Review.‬‬

‫إذا أﻧﻬﻴﺖ اﻹﺟﺎﺑﺔ ﻋﻠﻰ اﻷﺳﺌﻠﺔ اﻟﻤﺘﺒﻘﻴﺔ ﺳﺘﻈﻬﺮ ﻟﻚ رﺳﺎﻟﺔ ﺑﻬﺎ ﻧﺘﻴﺠﺔ اﻻﺧﺘﺒﺎر ﻣﺒﺎﺷﺮة‪ ،‬إﻣﺎ آﻠﻤﺔ ‪ Success‬أو‪Failed.‬‬

‫ﺑﻌﺪ اﻻﻧﺘﻬﺎء ﻣﻦ اﻻﻣﺘﺤﺎن ﺳﺘﺘﺴﻠﻢ ﺗﻘﺮﻳﺮ وهﻮ ﻳﺤﺘﻮى ﻋﻠﻰ ﻋﺪة أﺷﻴﺎء‬

‫‪ .1‬أوﻻ اﻟﺒﻴﺎﻧﺎت اﻟﺨﺎﺻﺔ ﺑﺎﻟﻤﻤﺘﺤﻦ ﻣﺜﻞ اﻻﺳﻢ رﻗﻢ اﻻﻣﺘﺤﺎن اﻟﻨﺘﻴﺠﺔ ‪ Candidate ID‬وﺑﻤﺎ أن هﺬﻩ أول ﻣﺮة ﺗﻤﺘﺤﻦ )إن آﺎﻧﺖ اﻟﻤﺮة‬
‫اﻷوﻟﻰ اﻟﺘﻲ ﺗﺠﺘﺎز ﻓﻴﻬﺎ اﻣﺘﺤﺎن ﻣﻦ اﻣﺘﺤﺎﻧﺎت ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ( ﺳﺘﺠﺪ ﻣﻜﺘﻮب ﺑﺠﻮارهﺎ ‪ ID Pending‬هﺬا هﻮ ‪ MCP ID‬وﻟﻜﻨﻚ ﻟﻢ‬
‫ﺗﺤﺼﻞ ﻋﻠﻴﺔ ﺑﻌﺪ‪.‬‬
‫‪ .2‬ﺛﺎﻧﻴﺎ ﻣﺠﻤﻮﻋﺔ رﺳﻮﻣﺎت ﺗﺒﻴﻦ ﻣﺪى إﺗﻘﺎﻧﻚ ﻟﻌﻨﺎﺻﺮ اﻻﻣﺘﺤﺎن ﺣﻴﺚ ﻳﺘﻢ ﺗﻘﺴﻴﻢ أﺳﺌﻠﺔ اﻻﻣﺘﺤﺎن إﻟﻰ ﻋﺪة ﻋﻨﺎﺻﺮ أو ﻣﺠﻤﻮﻋﺎت رﺋﻴﺴﻴﺔ‬
‫وﻳﺘﻢ إﻋﻄﺎءك ﺗﻘﻴﻴﻢ ﻟﻜﻞ ﻣﻨﻬﺎ‪.‬‬
‫‪ .3‬ﺛﺎﻟﺜﺎ ﺻﻔﺤﺔ أﺧﺮى ﺑﻬﺎ ﺑﻌﺾ اﻷﺷﻴﺎء ﻋﻦ اﻻﻣﺘﺤﺎن وﻣﺰاﻳﺎ اﻟﺤﺼﻮل ﻋﻠﻴﻪ‪.‬‬

‫إذا ﻧﺠﺤﺖ ﻓﻤﺎذا ﺳﺘﺠﻨﻲ؟‬

‫إذا ﻧﺠﺢ اﻟﻤﺘﺮﺷﺢ ﻓﻲ أﺣﺪ اﻻﻣﺘﺤﺎﻧﺎت ﻓﺈﻧﻪ ﺳﻴﺤﺼﻞ ﻋﻠﻰ ﺻﻨﺪوق ﺑﻪ ﺷﻬﺎدة وﺑﻄﺎﻗﺔ ﺑﻬﺎ ﺳﻨﺔ اﻟﺤﺼﻮل ﻋﻠﻰ اﻟﺸﻬﺎدة و اﻟﺮﻗﻢ اﻟﺘﺴﻠﺴﻠﻲ‬
‫ﻟﻠﻨﺎﺟﺢ ‪ MCPID‬و اﻟﺬي ﺳﺘﺤﺘﺎﺟﻪ ﻟﻠﺪﺧﻮل إﻟﻰ اﻟﻤﻮﻗﻊ اﻟﺨﺎص ﺑﺎل ‪ MCPs‬اﻟﺬي ﻳﺤﺘﻮي ﻋﻠﻰ ﺁﺧﺮ اﻟﻤﻌﻠﻮﻣﺎت ﻋﻦ ﺗﻘﻨﻴﺎت ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ و‬
‫اﻟﻌﺮوض اﻟﺠﻴﺪة و اﻟﺨﺪﻣﺎت اﻟﻤﺘﻮﻓﺮة‪.‬‬

‫اﻟﺸﻬﺎدة ﻟﻬﺎ ﻗﻴﻤﺔ ووزن ﺛﻘﻴﻞ ﻓﻲ اﻟﺴﻴﺮة اﻟﺬاﺗﻴﺔ ﻟﺼﺎﺣﺒﻬﺎ ﺣﻴﺚ ﺗﺰﻳﺪ ﻓﻲ ﻓﺮص اﻟﺘﻮﻇﻴﻒ ﻓﻲ اﻟﻬﻴﺌﺎت اﻟﻤﺨﺘﻠﻔﺔ‪.‬‬

‫‪98‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫‪ ‬‬

‫‪ ‬‬
‫ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ‪MCP‬‬ ‫اﻣﺘﺤﺎن ﺷﻬﺎدة اﻟﻤﺤﺘﺮف ﻣﻦ‬
‫وﻟﻴﺪ ﺑﻮاﻟﻄﻤﻴﻦ‪ ،‬ﻣﺼﻄﻔﻰ ﻣﺤﻤﻮد‬
‫ﻛﻴﻔﻴﺔ ﻃﻠﺐ اﻟﺸﻬﺎدة‪:‬‬

‫ﻟﺘﺤﺼﻞ ﻋﻠﻰ اﻟﺸﻬﺎدة ﻳﺠﺐ أوﻻ ﻃﻠﺒﻬﺎ ﻣﻦ ﻣﻮﻗﻊ ‪ MCP‬آﻴﻒ ؟؟؟‬


‫‪ ‬‬
‫ﻳﺠﺐ ﻋﻠﻴﻚ دﺧﻮل ﻣﻮﻗﻊ ‪ mcp‬وﻟﻜﻦ دﺧﻮل اﻟﻤﻮﻗﻊ ﻟﻴﺲ ﺑﻬﺬﻩ اﻟﺒﺴﺎﻃﺔ‬
‫‪ ‬‬
‫ﻟﺪﺧﻮل اﻟﻤﻮﻗﻊ ﻷول ﻣﺮة ﻳﺠﺐ أن ﺗﻜﻮن ﻣﻌﻚ ‪ 3‬أﺷﻴﺎء‬
‫‪ ‬‬
‫‪1- Windows Live e-mail‬‬
‫‪ ‬‬ ‫‪2- MCP ID‬‬ ‫‪ ‬‬
‫‪3- Access Code‬‬
‫‪windows live e-mail‬‬ ‫‪-1‬‬

‫إذا آﺎن ﻟﺪﻳﻚ أى ﺑﺮﻳﺪ ﻋﻠﻰ ‪ windows live ،hotmail ، msn‬ﻳﻤﻜﻨﻚ اﺳﺘﺨﺪاﻣﻪ ﻣﺒﺎﺷﺮة أﻣﺎ إذا آﺎن اﻟﺒﺮﻳﺪ اﻟﺬي ﺗﺮﻳﺪ اﻟﺘﺴﺠﻴﻞ ﺑﻪ ﻋﻠﻰ‬
‫ﻳﺎهﻮ ﻣﺜﻼ ﺳﺘﺠﺪ اﻟﺨﻴﺎرات ﻻﺳﺘﺨﺪاﻣﻪ وﺳﺘﺴﺘﺨﺪﻣﻪ ﺑﻼ ﻣﺸﺎآﻞ أﻧﺎ ﻣﺜﻼ ﺑﺮﻳﺪي ﻋﻠﻰ ﻳﺎهﻮ وأﻗﻮم ﺑﺎﺳﺘﺨﺪاﻣﻪ ﻟﻠﺘﺴﺠﻴﻞ ﻓﻲ ﻣﻮاﻗﻊ ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ ‪.‬‬

‫‪MCP ID‬‬ ‫‪-2‬‬

‫ﻟﻨﺘﻔﻖ أن هﺬﻩ أول ﻣﺮة ﺗﺆدى اﻣﺘﺤﺎن ﻓﻴﻬﺎ إذا ﻟﻴﺲ ﻟﺪﻳﻚ ‪ id‬ﺑﻌﺪ وﺗﺮﻳﺪ ﻣﻌﺮﻓﺘﻪ ﻓﻲ اﻟﺘﻘﺮﻳﺮ اﻟﺬي ﺳﺘﺴﺘﻠﻤﻪ ﺑﻌﺪ اﻻﻣﺘﺤﺎن ﻓﻲ اﻟﺼﻔﺤﺔ اﻟﺜﺎﻧﻴﺔ‬
‫ﺳﺘﺠﺪ ﻣﻮﻗﻊ اﻟﺸﺮآﺔ اﻟﺘﻲ اﻣﺘﺤﻨﺖ ﻓﻴﻬﺎ وهﻰ ﺑﺮوﻣﺎﺗﺮﻳﻚ وﺳﺘﺠﺪ ﺑﻌﺾ اﻟﺮواﺑﻂ اﻷﺧﺮى اﻟﺨﺎﺻﺔ ﺑﺎﻟﺘﺴﺠﻴﻞ ﻓﻲ ﻣﻮﻗﻊ اﻟﺸﺮآﺔ ﻋﻠﻰ ﺷﺒﻜﺔ اﻷﻧﺘﺮﻧﺖ‪.‬‬
‫ﻗﻢ ﺑﺎﻟﺪﺧﻮل إﻟﻴﻬﺎ ﺳﻴﻄﻠﺐ ﻣﻨﻚ ﺑﻌﺾ اﻟﻤﻌﻠﻮﻣﺎت هﺬﻩ اﻟﻤﻌﻠﻮﻣﺎت ﻣﻮﺟﻮدة ﻓﻲ اﻟﺘﻘﺮﻳﺮ ﻣﺜﻞ ‪ Registration‬و ‪ Validation‬وهﻲ أرﻗﺎم ﻣﻮﺟﻮدة‬
‫ﻓﻲ اﻟﺘﻘﺮﻳﺮ‪ ،‬ﺳﺘﻘﻮم ﺑﻜﺘﺎﺑﺘﻬﺎ وﺳﺘﻈﻬﺮ ﻟﻚ ﺻﻔﺤﺔ ﺗﺤﺘﻮى ﻋﻠﻰ اﺳﻤﻚ واﺳﻢ اﻻﻣﺘﺤﺎن واﻟﻨﺘﻴﺠﺔ ‪ ،Pass‬ﻻ ﻳﻮﺟﺪ اﻟﻨﺘﻴﺠﺔ آﺄرﻗﺎم ﻓﻘﻂ ﻧﺎﺟﺢ ورﻗﻢ‬
‫‪ Candidate ID‬هﺬا هﻮ ‪ MCP ID‬وهﻮ ﻳﺤﺘﺎج ﺣﺘﻰ ‪ 7‬أﻳﺎم ﻟﺘﺤﺼﻞ ﻋﻠﻴﻪ ﻓﻲ هﺬﻩ اﻷﺛﻨﺎء ﺳﻴﺄﺗﻲ ﻟﻚ ﻋﻠﻰ اﻟﺒﺮﻳﺪ اﻟﺬي ﻗﻤﺖ ﺑﻜﺘﺎﺑﺘﻪ ﻓﻲ ﻣﺮآﺰ‬
‫اﻻﻣﺘﺤﺎﻧﺎت ﺑﻌﺾ اﻟﺮﺳﺎﺋﻞ ﻣﻦ ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ و ﺑﺮوﻣﺎﺗﺮك وهﻰ رﺳﺎﺋﻞ اﺳﺘﻄﻼﻋﺎت ﻟﻠﺮأي ﺣﻮل اﻻﻣﺘﺤﺎن وﺑﻌﺾ اﻷﺷﻴﺎء اﻷﺧﺮى‪.‬‬

‫‪Access Code‬‬ ‫‪-3‬‬

‫ﺳﺘﻘﻮم ﺑﻄﻠﺒﻪ ﻣﻦ اﻟﺼﻔﺤﺔ اﻟﺘﻲ ﺗﻘﻮم ﺑﺎﻟﺘﺴﺠﻴﻞ ﻓﻴﻬﺎ ﻟﻠﺪﺧﻮل ﻋﻠﻰ اﻟﻤﻮﻗﻊ و ﺳﻴﺘﻢ إرﺳﺎل رﺳﺎﻟﺔ ﻟﻚ ﻋﻠﻰ اﻟﺒﺮﻳﺪ اﻟﺬي ﻗﻤﺖ ﺑﻜﺘﺎﺑﺘﻪ ﻋﻨﺪ اﻟﺘﺴﺠﻴﻞ‬
‫ﻓﻲ هﺬﻩ اﻟﺼﻔﺤﺔ هﺬﻩ اﻟﺮﺳﺎﻟﺔ ﺗﺤﺘﻮى ﻋﻠﻰ رﻗﻢ ‪ Access Code‬وهﻮ ﺻﺎﻟﺢ ﻟﻤﺪة ‪ 15‬ﻳﻮم أو ﺣﺴﺐ ﻣﺎ ﻳﻘﻮل ﻟﻚ ﻗﻢ ﺑﻨﺴﺨﺔ وآﻦ ﺣﺬرا ﻋﻨﺪ ﻟﻨﺴﺦ‬
‫ﺣﻴﺚ ﻻ ﺗﻘﻮم ﺑﻨﺴﺦ ﻣﺴﺎﻓﺔ ﻗﺒﻞ اﻟﺮﻗﻢ أو ﺑﻌﺪﻩ ﻗﻢ ﺑﺘﺤﺪﻳﺪ اﻟﺮﻗﻢ ﻓﻘﻂ ‪.‬‬

‫ﺑﻌﺪ آﻞ هﺬا ﺳﺘﺘﻤﻜﻦ ﻣﻦ اﻟﺪﺧﻮل ﻋﻠﻰ ﻣﻮﻗﻊ ‪ mcp‬ﺳﺘﺠﺪ ﻓﻲ هﺬا اﻟﻤﻮﻗﻊ أﺧﺒﺎر ﻋﻦ اﻟﺸﻬﺎدات اﻟﺠﺪﻳﺪة وﻋﻦ اﻟﺘﺤﺪﻳﺜﺎت وﺳﺘﺠﺪ ﻗﺴﻢ ﻟﻠﺸﻬﺎدات‬
‫ﺳﺘﺴﺘﻌﻤﻞ هﺬا اﻟﻘﺴﻢ ﻟﻄﻠﺐ اﻟﺸﻬﺎدة‪ .‬ﺑﻌﺪ اﻟﺪﺧﻮل ﻋﻠﻴﻪ ﺳﺘﺠﺪ اﺳﻤﻚ واﻟﻌﻨﻮان واﺳﻢ اﻻﻣﺘﺤﺎن اﻟﺬي أدﻳﺘﻪ ﺑﻨﺠﺎح وﻓﻰ أﺧﺮ اﻟﺼﻔﺤﺔ ﺳﺘﺠﺪ زر ﻟﻄﻠﺐ‬
‫اﻟﺸﻬﺎدة ﻗﻢ ﺑﺎﻟﻀﻐﻂ ﻋﻠﻴﺔ ﺳﺘﻈﻬﺮ ﻟﻚ رﺳﺎﻟﺔ ﺗﺨﺒﺮك إذا أردت ﺗﻐﻴﻴﺮ اﻟﻌﻨﻮان أو اﻹرﺳﺎل ﻋﻠﻰ اﻟﻌﻨﻮان اﻟﻤﻜﺘﻮب ﺳﺎﺑﻘﺎ‬
‫ﺑﻌﺪهﺎ ﺗﻨﺘﻈﺮ ﻣﻦ ‪ 4‬إﻟﻰ ‪ 6‬أﺳﺎﺑﻴﻊ ﺣﺘﻰ وﺻﻮل اﻟﺸﻬﺎدة ﻳﻤﻜﻨﻚ أن ﺗﺪﺧﻞ ﻋﻠﻰ ﻣﻮﻗﻊ ‪ mcp‬ﺑﻌﺪ ذﻟﻚ ﺑﺎﺳﺘﺨﺪام اﻟﺒﺮﻳﺪ وآﻠﻤﺔ اﻟﺴﺮ اﻟﺬي ﻗﻤﺖ ﺑﻜﺘﺎﺑﺘﻬﺎ‬
‫ﺳﺎﺑﻘﺎ ﻓﻘﻂ‪.‬‬

‫‪99‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫‪ ‬‬

‫‪ ‬‬
‫ﺧﻼﺻﺔ ﻣﺆﺗﻤﺮ ‪ MS Dev Stay ahead‬ﺑﺎﻟﺮﻳﺎض‬
‫ﻣﺮاﺳﻞ اﻟﻤﻮﻗﻊ ﻣﻦ اﻟﺮﻳﺎض ‪ ‬‬
‫‪  Maxima‬‬
‫ﻳﻮم اﻻﺛﻨﻴﻦ اﻟﻤﻮاﻓﻖ ‪ 2007/12/3‬ﺑﻔﻨﺪق اﻟﻤﺎرﻳﻮت ﺑﺎﻟﺮﻳﺎض آﺎن ﻳﻮم ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ واﻟﻤﺴﻤﻰ ‪MS Dev Stay ahead‬‬

‫اﻟﺤﻀﻮر آﺎن آﺜﻴﺮ ﺟﺪا ﻣﻤﺎ أﺛﺮ ﻋﻠﻰ اﻟﺘﻨﻈﻴﻢ وﻳﺆﺧﺬ ﻋﻠﻰ ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ ﻋﺪم اﺧﺘﻴﺎرهﺎ ﻟﻠﻤﻜﺎن اﻟﻤﻨﺎﺳﺐ ﻟﻠﻌﺪد ﺑﺪاﻳﺔ ﺗﻢ اﻟﺘﻌﺮﻳﻒ ﺑﺎﻟﻤﻨﺘﺠﺎت اﻟﺘﻲ‬
‫‪ ‬‬
‫ﺳﻴﺘﻢ ﺷﺮﺣﻬﺎ وﻋﺮﺿﻬﺎ ﻓﻲ هﺬا اﻟﻴﻮم واﻟﺘﺮآﻴﺰ آﺎن ﻋﻠﻰ ﻣﻨﺘﺠﻴﻦ‬

‫‪ ‬‬ ‫اﻷول‬
‫‪MS expression‬‬
‫‪ ‬‬
‫وهﻮ ﻋﺼﺎرة أﻓﻜﺎر ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ ﻟﺨﺪﻣﺔ ﻣﺒﺮﻣﺠﻲ اﻟﻮﻳﺐ واﻟﺘﻄﺒﻴﻘﺎت وﻳﺄﺗﻲ ﺑﻌﺪة ﺗﻄﺒﻴﻘﺎت‪.‬‬
‫‪ ‬‬
‫‪MS expression Design‬‬
‫‪ ‬‬
‫وهﻮ ﻣﻨﺘﺞ ﺧﺎص ﻟﺘﺼﻤﻴﻢ واﺟﻬﺎت اﻟﺒﺮاﻣﺞ وﺑﺈﻣﻜﺎﻧﻪ اﺳﺘﻴﺮاد وﺗﺼﺪﻳﺮ ﻣﻦ واﻟﻰ اﻻدوﺑﻲ ﻓﻮﺗﻮ ﺷﻮب وﺑﺼﺮاﺣﺔ رأﻳﻨﺎ أﻣﺜﻠﺔ ﻟﺘﺼﻤﻴﻢ‬
‫واﺟﻬﺎت وﺗﻮﻓﻴﺮ أدوات راﺋﻌﺔ ﻟﻌﻤﻞ واﺟﻬﺎت رهﻴﺒﺔ وإﻧﺸﺎء ﻣﻠﻔﺎت ‪ XAML‬واﻟﺸﻲء اﻟﻤﻤﻴﺰ ﻓﻲ هﺬا اﻟﻤﻨﺘﺞ اﻧﻪ ﻳﺘﻌﺎﻣﻞ ﻣﺒﺎﺷﺮة ﻣﻊ ﻣﻠﻔﺎت ﻓﻴﺠﻮال‬
‫ﺳﺘﻮدﻳﻮ‪.‬‬

‫‪MS Expression Web‬‬

‫وهﻮ اﻟﺘﻄﻮر اﻟﻄﺒﻴﻌﻲ ﻟﻠﺤﺎﺟﺔ اﻟﺴﺎﻗﻌﺔ ﻗﺼﺪي ﻟﻠﻔﺮوﻧﺖ ﺑﻴﺞ وﻳﺪﻋﻢ أدوات ﺗﻄﻮﻳﺮ راﺋﻌﺔ ﻣﺜﻞ ﺗﻘﻨﻴﺔ اﻻﺟﺎآﺲ و ‪ RSS‬ودﻋﻢ ﻣﻠﻔﺎت ‪ HTML‬و‬
‫‪XHTML‬و ‪ ASP.NET‬و ‪ XML‬وﻏﻴﺮهﺎ اﻟﻜﺜﻴﺮ ﻣﻦ اﻷدوات واﻟﺪﻋﻢ ﻟﺒﻨﺎء ﺻﻔﺤﺎت وﻳﺐ ﻣﺘﻄﻮرة وﺗﻔﺎﻋﻠﻴﺔ‪.‬‬

‫‪MS Expression Media‬‬

‫وهﻮ ﻹﻧﺸﺎء ﺻﻔﺤﺎت اﺳﺘﻌﺮاض ﻣﻠﻔﺎت اﻟﻤﻴﺪﻳﺎ وﺗﺼﺪﻳﺮهﺎ ﻟﺼﻔﺤﺎت اﻟﻮﻳﺐ ﺑﺒﺴﺎﻃﺔ ‪.‬‬

‫‪MS Expression Blend‬‬

‫وهﻮ ﻟﺘﺼﻤﻴﻢ ﺑﺮاﻣﺞ اﻟﻤﻠﺘﻤﻴﺪﻳﺎ ‪ -‬ﺣﺴﺐ ﻣﺎ ﻓﻬﻤﺘﻪ ‪ -‬وﻹﻧﺸﺎء آﻮد ‪ XAML‬ﺑﺴﻬﻮﻟﺔ ‪.‬‬

‫وﻹﻧﺸﺎء ﻣﻠﻔﺎت ‪ Silverlight‬اﺳﺘﺨﺪم ﺑﺮﻧﺎﻣﺞ ‪Expression Encoder‬‬

‫ﻃﺒﻌﺎ ‪ Silverlight‬هﻮ اﻟﻤﻨﺎﻓﺲ ﻟﻤﻨﺘﺞ ‪ Flash‬ﻣﻦ ﻣﺎﻳﻜﺮوﻣﻴﺪﻳﺎ ﺳﺎﺑﻘﺎ وأدوﻧﻲ ﺣﺎﻟﻴﺎ‬

‫اﻟﻤﻨﺘﺞ اﻟﺜﺎﻧﻲ ﻓﻜﺎن ﺣﺒﻴﺐ اﻟﻤﺒﺮﻣﺠﻴﻦ ﻓﺎﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ‪2008‬‬

‫وأهﻢ ﻣﺰاﻳﺎﻩ اﻟﺘﻲ ﺗﻢ ﺷﺮﺣﻬﺎ آﺎﻧﺖ إﻣﻜﺎﻧﻴﺔ إدارة ﻓﺮﻳﻖ ﻣﻦ اﻟﻤﺒﺮﻣﺠﻴﻦ ﻟﻤﺸﺮوع ﻣﺎ وإﻣﻜﺎﻧﻴﺔ اﻟﺘﻜﺎﻣﻞ ﻣﻊ ﺑﺮﻧﺎﻣﺞ ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ ﺑﺮوﺟﻜﻦ ﻟﺴﻬﻮﻟﺔ‬
‫إﺗﻤﺎم ﻣﺸﺮوع ﻣﺎ‬

‫اﻟﻤﻨﺘﺞ اﻷﺧﻴﺮ هﻮ ﻣﻨﺘﺞ ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ اﻟﺜﻮري ﺷﻴﺮ ﺑﻮﻳﻨﺖ ‪ 2007‬اﻟﺬي أدهﺶ اﻟﺠﻤﻴﻊ ﺑﺘﻜﺎﻣﻠﻪ ﻣﻊ ﻣﻨﺘﺠﺎت ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ وﻏﻴﺮهﺎ ﻣﻦ اﻟﺸﺮآﺎت‬
‫وﺗﺒﺴﻴﻂ هﺬا اﻹﺻﺪار آﺜﻴﺮا ﻋﻦ اﻹﺻﺪار اﻟﺴﺎﺑﻖ‪.‬‬

‫ﻻ أﻧﺴﻰ أن اذآﺮ اﻧﻪ آﺎن هﻨﺎك اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﺠﻮاﺋﺰ ﻋﻨﺪ اﻹﺟﺎﺑﺔ ﻋﻠﻰ ﺑﻌﺾ اﻷﺳﺌﻠﺔ أﺛﻨﺎء اﻟﻤﺤﺎﺿﺮات وآﺎن ﻓﻲ ﻧﻬﺎﻳﺔ اﻟﻴﻮم ﺳﺤﺐ ﻋﻠﻰ اآﺲ‬
‫ﺑﻮآﺲ ‪. 360‬‬

‫أﺗﻤﻨﻰ ﻣﻦ اﻟﺠﻤﻴﻊ ﻋﺪم ﺗﻔﻮﻳﺖ ﺣﺪث ﻣﺜﻞ هﺬا ﻣﺴﺘﻘﺒﻼ وأﻋﺘﻘﺪ ﺑﻌﺪ ﺷﻬﺮﻳﻦ ﺳﻴﻜﻮن ﻳﻮم ﺗﻌﺮﻳﻔﻲ ﺑﺒﺮﻧﺎﻣﺞ ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ ‪ CRM 4‬ﻹدارة ﻋﻼﻗﺎت‬
‫اﻟﻌﻤﻼء ﻟﻜﻦ ﻟﻢ ﻳﺤﺪد اﻟﻴﻮم ﺑﺎﻟﻀﺒﻂ‪.‬‬

‫‪ ‬‬

‫‪100‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫‪ ‬‬

‫‪ ‬‬ ‫‪ ‬‬

‫ﺗﻄﺎﻟﻌﻮن ﻓﻲ ﻫﺬا اﻟﻌﺪد‪...‬‬

‫اﻟﺠﺒﺮ اﻟﻌﻼﺋﻘﻲ وﺟﻤﻞ اﻻﺳﺘﻌﻼم ﻓﻲ ‪Sql‬‬


‫ﺗﻌﺘﻤﺪ ﻟﻐﺔ اﻻﺳﺘﻌﻼم اﻟﺒﻨﻴﻮﻳﺔ ﻓﻲ اﺳﺘﺮﺟﺎع اﻟﺒﻴﺎﻧﺎت ﻋﻠﻰ ﻗﻮاﻋﺪ وﻣﻔﺎﻫﻴﻢ اﻟﺠﺒﺮ‬
‫اﻟﻌﻼﺋﻘﻲ وﺳﻨﺘﻌﺮض ﻓﻲ ﻫﺬا اﻟﺪرس إﻟﻰ أﻫﻢ ﻫﺬه اﻟﻤﻌﺎﻣﻼت و أﻛﺜﺮﻫﺎ اﺳﺘﺨﺪاﻣﺎً آﻣﻼً أن‬
‫ﻳﻘﺪم ﻫﺬا اﻟﻤﻮﺿﻮع اﻹﺟﺎﺑﺎت اﻟﺸﺎﻓﻴﺔ ﻻﺳﺘﻔﺴﺎرات اﻷﻋﻀﺎء ﺣﻮل ﻫﺬا اﻟﻤﻮﺿﻮع‪...‬‬
‫ﻧﺠﻴﺐ اﻟﻤﺠﻴﺪي‬

‫ﺗﺘﻤﺔ ﺻﻔﺤﺔ ‪102‬‬

‫‪INSERT Statement‬‬
‫أﺣﻤﺪ ﺑﺪر‬
‫‪BADRMEDIA ‬‬
‫ﺗﺘﻤﺔ ﺻﻔﺤﺔ ‪105‬‬
‫‪H‬‬ ‫‪H‬‬

‫ﻣﺨﺘﺎرات ﻣﻦ أﻗﺴﺎم ﻗﻮاﻋﺪ اﻟﺒﻴﺎﻧﺎت‬


‫إﻋﺪاد ﻧﺒﻬﺎن ﻧﻮر )اﻟﻤﺰﻣﺠﺮ(‬
‫‪ ‬‬

‫‪ ‬‬
‫اﻟﺠﺒﺮ اﻟﻌﻼﺋﻘﻲ وﺟﻤﻞ اﻻﺳﺘﻌﻼم ﻓﻲ ‪Sql‬‬
‫‪ ‬‬ ‫‪ ‬‬
‫ﻧﺠﻴﺐ اﻟﻤﺠﻴﺪي‬ ‫ﺗﻌﺘﻤﺪ ﻟﻐﺔ اﻻﺳﺘﻌﻼم اﻟﺒﻨﻴﻮﻳﺔ ﻓﻲ اﺳﺘﺮﺟﺎع اﻟﺒﻴﺎﻧﺎت ﻋﻠﻰ ﻗﻮاﻋﺪ وﻣﻔﺎهﻴﻢ‬
‫أوﻻً ﻣﻌﺎﻣﻞ اﻻﺗﺤﺎد ‪: Union‬‬ ‫اﻟﺠﺒﺮ اﻟﻌﻼﺋﻘﻲ وﺳﻨﺘﻌﺮض ﻓﻲ هﺬا اﻟﺪرس إﻟﻰ أهﻢ هﺬﻩ اﻟﻤﻌﺎﻣﻼت و‬
‫ﻼ أن ﻳﻘﺪم هﺬا اﻟﻤﻮﺿﻮع اﻹﺟﺎﺑﺎت اﻟﺸﺎﻓﻴﺔ‬ ‫أآﺜﺮهﺎ اﺳﺘﺨﺪاﻣًﺎ ﺁﻣ ً‬
‫ﻻﺳﺘﻔﺴﺎرات اﻷﻋﻀﺎء ﺣﻮل هﺬا اﻟﻤﻮﺿﻮع‪.‬‬

‫وﺑﺪاﻳ ًَﺔ دﻋﻮﻧﺎ ﻧﻠﻘﻲ ﻧﻈﺮة ﻋﻠﻰ ﺟﻤﻠﺔ ‪SQL‬‬

‫ﻛﻮد‪:‬‬
‫* ‪SELECT‬‬
‫‪FROM Table‬‬
‫‪WHERE Condition‬‬

‫ﺗﺘﻜﻮن ﺟﻤﻠﺔ اﻻﺳﺘﻌﻼم اﻟﻨﻤﻮذﺟﻴﺔ ﻣﻦ‪:‬‬

‫‪ .1‬اﻟﻜﻠﻤﺔ اﻟﻤﺤﺠﻮزة ‪SELECT‬‬


‫ﻳﻤﺜﻞ اﻟﺠﺰء اﻟﻤﻈﻠﻞ ﻓﻲ اﻟﺸﻜﻞ اﻟﺴﺎﺑﻖ ﻧﺎﺗﺞ اﻻﺗﺤﺎد ﺑﻴﻦ‬
‫اﻟﻤﺠﻤﻮﻋﺘﻴﻦ وﻳﺴﺘﺨﺪم اﻟﺘﻌﺒﻴﺮ اﻟﺘﺎﻟﻲ ﻟﺘﻤﺜﻴﻞ ﻣﺎ ﺳﺒﻖ ﻋﻦ ﻃﺮﻳﻖ ‪SQL‬‬
‫ﻋﻠﻤًﺎ ﺑﺄن ﻧﺎﺗﺞ اﻻﺗﺤﺎد ﻳﺤﺘﻮي ﻋﻠﻰ ﺳﺠﻼت اﻟﺠﺪوﻟﻴﻦ أو ﻋﻨﺎﺻﺮ‬ ‫واﻟﺘﻲ ﺗﺪل ﻋﻠﻰ أن اﻟﺠﻤﻠﺔ اﻟﺘﺎﻟﻴﺔ ﺧﺎﺻﺔ ﺑﺎﺳﺘﺮﺟﺎع اﻟﺒﻴﺎﻧﺎت‬
‫اﻟﻤﺠﻤﻮﻋﺘﻴﻦ ﻣﻊ ﺣﺬف اﻟﺘﻜﺮار‪.‬‬ ‫و ﻳﺘﺒﻌﻬﺎ اﺳﻢ أو أﺳﻤﺎء اﻟﺤﻘﻮل اﻟﻤﺮاد اﺳﺘﺮﺟﺎﻋﻬﺎ أو ﻋﻼﻣﺔ اﻟﻨﺠﻤﺔ *‬
‫وﺗﻌﻨﻲ ﺟﻤﻴﻊ اﻟﺤﻘﻮل‪.‬‬
‫اﻟﺼﻴﻐﺔ اﻟﻌﺎﻣﺔ‪:‬‬
‫‪ .2‬اﻟﻜﻠﻤﺔ اﻟﻤﺤﺠﻮزة ‪FROM‬‬
‫ﻛﻮد‪:‬‬
‫>‪<SQL query1> UNION <SQL query2‬‬ ‫و ﺗﺘﺒﻊ ﺑﺎﺳﻢ اﻟﺠﺪول اﻟﻤﺮاد اﺳﺘﺮﺟﺎع اﻟﺒﻴﺎﻧﺎت ﻣﻨﻪ‪.‬‬

‫ﻓﺈذا آﺎن ﻟﺪﻳﻨﺎ اﻟﺠﺪوﻟﻴﻦ ‪ Teachers‬و ‪: Students‬‬ ‫‪ .3‬اﻟﻜﻠﻤﺔ اﻟﻤﺤﺠﻮزة ‪WHERE‬‬


‫‪:Teachers‬‬
‫و ﺗﺘﺒﻊ ﺑﺎﻟﺸﺮط اﻟﺬي ﻳﺤﺪد اﻟﺴﺠﻼت اﻟﺘﻲ ﺳﻴﺘﻢ اﺳﺘﺮﺟﺎﻋﻬﺎ‪.‬‬
‫‪T_ID‬‬ ‫‪F_Name‬‬ ‫‪L_Name‬‬ ‫‪Nationality‬‬
‫‪1‬‬ ‫‪Samer‬‬ ‫‪Ahmed‬‬ ‫‪Yemeni‬‬ ‫ﻓﺈذا آﺎن ﻟﺪﻳﻨﺎ اﻟﺠﺪول اﻟﺘﺎﻟﻲ ﺑﺎﺳﻢ ‪Employees‬‬
‫‪2‬‬ ‫‪Waleed‬‬ ‫‪Taher‬‬ ‫‪Saudi‬‬
‫‪ID‬‬ ‫‪F_Name‬‬ ‫‪L_Name‬‬ ‫‪City‬‬
‫‪1‬‬ ‫‪Ali‬‬ ‫‪Ahmed‬‬ ‫‪Sanaa‬‬
‫‪:Students‬‬
‫‪2‬‬ ‫‪Mohamed‬‬ ‫‪Ali‬‬ ‫‪Aden‬‬
‫‪T_ID‬‬ ‫‪F_Name‬‬ ‫‪L_Name‬‬ ‫‪Class‬‬ ‫‪3‬‬ ‫‪Waleed‬‬ ‫‪Adel‬‬ ‫‪Sanaa‬‬
‫‪1‬‬ ‫‪Najeeb‬‬ ‫‪Saif‬‬ ‫‪1‬‬ ‫‪4‬‬ ‫‪Ahmed‬‬ ‫‪Helmi‬‬ ‫‪Aden‬‬
‫‪2‬‬ ‫‪Samer‬‬ ‫‪Ahmed‬‬ ‫‪12‬‬
‫‪3‬‬ ‫‪Amed‬‬ ‫‪Yaseen‬‬ ‫‪4‬‬ ‫وأردﻧﺎ اﺳﺘﺮﺟﺎع اﻻﺳﻢ اﻷول و اﻟﺜﺎﻧﻲ ﻟﻠﻤﻮﻇﻔﻴﻦ اﻟﻤﻮﺟﻮدﻳﻦ ﻓﻲ ﻋﺪن‬
‫‪4‬‬ ‫‪Fadi‬‬ ‫‪Mohamed‬‬ ‫‪1‬‬ ‫ﺳﻨﻜﺘﺐ اﻟﺘﺎﻟﻲ‪:‬‬
‫ﻛﻮد‪:‬‬
‫‪SELECT F_Name, L_Name‬‬
‫ﺳﻨﻔﺮض ﻓﻲ ﻣﺜﺎﻟﻨﺎ هﺬا أن اﻟﻄﺎﻟﺐ ‪ Samer Ahmed‬ﻳﺪرس ﻓﻲ‬ ‫‪FROM Employees‬‬
‫اﻟﻤﺴﺘﻮى اﻷﺧﻴﺮ و هﻮ ﻣﺪرس ﻓﻲ ﻧﻔﺲ اﻟﻤﻌﻬﺪ ﻓﺈذا أردﻧﺎ ﻣﻌﺮﻓﺔ ﺟﻤﻴﻊ‬ ‫;'‪WHERE City='Aden‬‬
‫اﻟﻄﻠﺒﺔ و اﻟﻤﺪرﺳﻴﻦ ﻟﺪﻳﻨﺎ ﺳﻨﻘﻮم ﺑﻜﺘﺎﺑﺔ اﻻﺳﺘﻌﻼم اﻟﺘﺎﻟﻲ‪:‬‬ ‫ﺣﺴﻨًﺎ ‪ ,‬دﻋﻮﻧﺎ اﻵن ﻧﺒﺪأ ﺑﻤﻌﺎﻣﻼت اﻟﺠﺒﺮ اﻟﻌﻼﺋﻘﻲ اﻟﺘﺎﻟﻴﺔ‪:‬‬

‫ﻛﻮد‪:‬‬ ‫‪ .1‬اﻻﺗﺤﺎد ‪  Union‬‬


‫‪SELECT F_Name, L_Name‬‬ ‫‪ .2‬اﻟﺘﻘﺎﻃﻊ ‪  Intersection‬‬
‫‪FROM Teachers‬‬ ‫‪ .3‬اﻟﻔﺮق ‪  Difference‬‬
‫‪UNION‬‬
‫‪SELECT F_Name, L_Name‬‬
‫‪FROM Students‬‬ ‫ﻓﻲ هﺬﻩ اﻟﻤﻌﺎﻣﻼت ﻳﺸﺘﺮط أن ﺗﺘﺸﺎﺑﻪ اﻟﻜﺎﺋﻨﺎت ﻓﻲ ﺻﻔﺎﺗﻬﺎ أي أن‬
‫اﻟﺤﻘﻮل اﻟﻤﺴﺘﺮﺟﻌﻪ ﻳﺠﺐ أن ﺗﺤﻤﻞ ﻧﻔﺲ ﻧﻮع اﻟﺒﻴﺎﻧﺎت آﻤﺎ ﻳﺠﺐ أن‬
‫ﻳﺘﺴﺎوى ﻋﺪد اﻟﺤﻘﻮل ﻓﻲ ﺟﻤﻠﺘﻲ اﻻﺳﺘﻌﻼم‪.‬‬
‫وﺳﺘﻜﻮن اﻟﻨﺘﻴﺠﺔ‬

‫‪102‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫‪ ‬‬

‫‪ ‬‬
‫اﻟﺠﺒﺮ اﻟﻌﻼﺋﻘﻲ وﺟﻤﻞ اﻻﺳﺘﻌﻼم ﻓﻲ ‪Sql‬‬
‫‪ ‬‬ ‫‪ ‬‬
‫ﻧﺠﻴﺐ اﻟﻤﺠﻴﺪي‬ ‫‪F_Name ‬‬ ‫‪L_Name ‬‬
‫آﻤﺎ هﻮ واﺿﺢ ﻓﻲ اﻟﺸﻜﻞ اﻟﺴﺎﺑﻖ‪ ,‬ﻳﻘﻮم هﺬا اﻟﻤﻌﺎﻣﻞ ﺑﺈرﺟﺎع اﻟﻘﻴﻢ‬ ‫‪Najeeb ‬‬ ‫‪Saif ‬‬
‫اﻟﻤﻮﺟﻮدة ﻓﻲ اﻟﻤﺠﻤﻮﻋﺔ اﻷوﻟﻰ و اﻟﻐﻴﺮ ﻣﻮﺟﻮدة ﻓﻲ اﻟﻤﺠﻤﻮﻋﺔ‬ ‫‪Samer ‬‬ ‫‪Ahmed ‬‬
‫اﻟﺜﺎﻧﻴﺔ‪.‬‬ ‫‪Ahmed ‬‬ ‫‪Yaseen ‬‬
‫اﻟﺼﻴﻐﺔ اﻟﻌﺎﻣﺔ‪:‬‬ ‫‪Fadi ‬‬ ‫‪Mohamed ‬‬
‫ﻛﻮد‪:‬‬
‫‪Waleed ‬‬ ‫‪Taher ‬‬
‫>‪<SQL query1> EXCEPT <SQL query2‬‬
‫‪ ‬‬
‫وﻋﻨﺪ ﺗﻨﻔﻴﺬ اﻻﺳﺘﻌﻼم اﻟﺘﺎﻟﻲ‪:‬‬
‫ﻻﺣﻆ أن اﻟﺴﺠﻼت اﻟﻤﻜﺮرة ﺗﻢ ﺣﺬﻓﻬﺎ‪.‬‬
‫ﻛﻮد‪:‬‬
‫‪SELECT F_Name, L_Name‬‬
‫‪FROM Teachers‬‬ ‫ﺛﺎﻧﻴﺎ ﻣﻌﺎﻣﻞ اﻟﺘﻘﺎﻃﻊ ‪: Intersection‬‬
‫‪EXCEPT‬‬
‫‪SELECT F_Name, L_Name‬‬
‫‪FROM Students‬‬

‫ﺳﻴﺘﻢ إرﺟﺎع ﺳﺠﻞ واﺣﺪ ﻳﻤﺜﻞ ‪ Waleed Taher ,‬وهﻮ اﻟﺴﺠﻞ‬


‫اﻟﻮﺣﻴﺪ اﻟﻤﻮﺟﻮد ﻓﻲ اﻟﺠﺪول اﻷول و ﻏﻴﺮ اﻟﻤﻮﺟﻮد ﻓﻲ اﻟﺠﺪول اﻟﺜﺎﻧﻲ‬

‫اﻵن ﺳﻨﻤﺮ ﻋﻠﻰ ﻃﺮق اﻻﺳﺘﻌﻼم اﻟﺘﺎﻟﻴﺔ‪:‬‬

‫‪ -1‬اﻟﺤﺼﺮ اﻟﻌﻤﻮدي‬ ‫وآﻤﺎ ﻧﻼﺣﻆ ﻓﻲ اﻟﺸﻜﻞ اﻟﺴﺎﺑﻖ وﺑﻌﻜﺲ ﻣﻌﺎﻣﻞ اﻻﺗﺤﺎد ﻓﺈن ﻣﻌﺎﻣﻞ‬
‫‪ -2‬اﻟﺤﺼﺮ اﻷﻓﻘﻲ‬ ‫اﻟﺘﻘﺎﻃﻊ ﻳﺮﺟﻊ اﻟﺴﺠﻼت اﻟﻤﻮﺟﻮدة ﻓﻲ آﻼ اﻟﻤﺠﻤﻮﻋﺘﻴﻦ ) اﻟﺠﺪوﻟﻴﻦ (‪.‬‬
‫‪ -3‬اﻟﺮﺑﻂ ‪JOIN‬‬ ‫اﻟﺼﻴﻐﺔ اﻟﻌﺎﻣﺔ‪:‬‬

‫وﺑﺎﻟﻨﺴﺒﺔ ﻷول ﻣﻌﺎﻣﻠﻴﻦ ﺳﻴﻜﻮن ﻣﺮورﻧﺎ ﻋﻠﻴﻬﻢ ﺳﺮﻳﻌًﺎ ﻟﻜﻮﻧﻬﻤﺎ ﺑﺪﻳﻬﻴﻴﻦ‬ ‫ﻛﻮد‪:‬‬
‫ﻓﻲ ﺟﻤﻞ اﻻﺳﺘﻌﻼم‪...‬‬ ‫>‪<SQL query1> INTERSECT <SQL query2‬‬

‫اﻟﺤﺼﺮ اﻟﻌﻤﻮدي‬
‫و ﻋﻨﺪ ﺗﻨﻔﻴﺬ اﻻﺳﺘﻌﻼم اﻟﺘﺎﻟﻲ‬

‫ﻻ‬
‫وهﻮ ﺑﺒﺴﺎﻃﺔ ﺗﺤﺪﻳﺪ اﻷﻋﻤﺪة اﻟﻤﻄﻠﻮب اﻻﺳﺘﻌﻼم ﻋﻨﻬﺎ ﻓﻘﻂ ﺑﺪ ً‬ ‫ﻛﻮد‪:‬‬
‫ﻣﻦ اﺳﺘﺮﺟﺎع أﻋﻤﺪة اﻟﺠﺪول ﺑﺎﻟﻜﺎﻣﻞ‬ ‫‪SELECT F_Name, L_Name‬‬
‫‪FROM Teachers‬‬
‫ﻛﻮد‪:‬‬ ‫‪INTERSECT‬‬
‫* ‪SELECT‬‬ ‫‪SELECT F_Name, L_Name‬‬
‫‪FROM students‬‬ ‫‪FROM Students‬‬
‫ﺳﺘﻘﻮم هﺬﻩ اﻟﺠﻤﻠﺔ ﺑﺈﻋﺎدة ﺟﻤﻴﻊ ﺣﻘﻮل اﻟﺠﺪول ‪ students ,‬وﻟﻜﻦ إذا‬
‫أردﻧﺎ ﺗﺤﺪﻳﺪ أﻋﻤﺪة ﻣﻌﻴﻨﺔ ﻓﺈﻧﻨﺎ ﺳﻨﻘﻮم ﺑﺒﺴﺎﻃﺔ ﺑﺬآﺮ هﺬﻩ اﻷﻋﻤﺪة ﺑﻌﺪ‬
‫اﻟﻜﻠﻤﺔ اﻟﻤﺤﺠﻮزة ‪ SELECT‬آﻤﺎ ﻳﻠﻲ‪:‬‬ ‫ﺳﺘﻈﻬﺮ اﻟﻨﺘﻴﺠﺔ اﻷﺷﺨﺎص اﻟﺬﻳﻦ ﻳﺪرﺳﻮن ﻓﻲ اﻟﻤﻌﻬﺪ و ﻓﻲ ﻧﻔﺲ اﻟﻮﻗﺖ‬
‫ﻳﻌﻤﻠﻮن آﻤﺪرﺳﻴﻦ ﻓﻴﻪ وﻓﻲ ﺣﺎﻟﺘﻨﺎ ﻓﺈن اﻟﻨﺘﻴﺠﺔ ﺳﺘﺤﺘﻮي ﻋﻠﻰ ﺳﺠﻞ‬
‫ﻛﻮد‪:‬‬ ‫واﺣﺪ ﻳﻤﺜﻞ ‪ Samer‬و ‪.Ahmed‬‬
‫‪SELECT F_Name, Class‬‬
‫‪FROM students‬‬ ‫ﺛﺎﻟﺜًﺎ ﻣﻌﺎﻣﻞ اﻟﻔﺮق ‪:Diffrenece‬‬
‫هﺬا ﺳﻴﻌﻴﺪ إﻟﻴﻨﺎ ﻓﻘﻂ ﺳﺠﻼت ﻋﻤﻮدي اﻻﺳﻢ اﻷول و اﻟﺼﻒ‬

‫اﻟﺤﺼﺮ اﻷﻓﻘﻲ‬

‫ﻓﻲ اﻟﺠﻤﻠﺔ اﻟﺴﺎﺑﻘﺔ ﻧﻼﺣﻆ أﻧﻨﺎ ﻗﻤﻨﺎ ﺑﺘﺤﺪﻳﺪ اﻷﻋﻤﺪة و ﻟﻜﻦ ﻟﻢ‬
‫ﻧﺤﺪد اﻟﺴﺠﻼت اﻟﻤﻄﻠﻮﺑﺔ و ﺑﺎﻟﺘﺎﻟﻲ ﻓﺈن اﻟﻨﺘﻴﺠﺔ ﺳﺘﺤﺘﻮي ﻋﻠﻰ ﺟﻤﻴﻊ‬
‫ﺳﺠﻼت اﻟﺠﺪول‬

‫ﻓﺈذا أردﻧﺎ ﺗﺤﺪﻳﺪ ﺳﺠﻼت ﻣﻌﻴﻨﺔ ) وهﺬا هﻮ ﻣﺎ ﻳﺪﻋﻰ ﺑﺎﻟﺤﺼﺮ اﻷﻓﻘﻲ (‬


‫ﻓﺈﻧﻨﺎ ﺳﻨﺴﺘﺨﺪم اﻟﻜﻠﻤﺔ اﻟﻤﺤﺠﻮزة ‪ WHERE‬ﺑﻌﺪ اﺳﻢ اﻟﺠﺪول و‬
‫ﻧﻠﺤﻘﻬﺎ ﺑﺎﻟﺸﺮط اﻟﻤﻄﻠﻮب ﻟﺘﺤﺪﻳﺪ اﻟﺴﺠﻼت آﻤﺎ ﻳﻠﻲ ‪:‬‬
‫‪103‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫‪ ‬‬

‫‪ ‬‬
‫اﻟﺠﺒﺮ اﻟﻌﻼﺋﻘﻲ وﺟﻤﻞ اﻻﺳﺘﻌﻼم ﻓﻲ ‪Sql‬‬
‫ﻧﺠﻴﺐ اﻟﻤﺠﻴﺪي‬ ‫ﻛﻮد‪:‬‬
‫‪ ‬‬ ‫ﺳﺠﻼت ﺟﺪول اﻟﻤﻮﻇﻔﻴﻦ ﻣﻮﺟﻮدة‬ ‫‪ ‬‬ ‫وهﻨﺎ ﺳﻨﻼﺣﻆ ﻓﻲ اﻟﻨﺘﻴﺠﺔ أن‬ ‫‪SELECT F_Name, Class‬‬
‫ﺑﺎﻟﻜﺎﻣﻞ ‪ ,‬ﺑﻴﻨﻤﺎ ﺣﻘﻞ ‪ product_Name‬ﻳﻈﻬﺮ اﺳﻢ اﻟﻤﻨﺘﺞ ﻓﻲ‬ ‫‪FROM students‬‬
‫;‪WHERE Class = 1‬‬
‫اﻟﺴﺠﻼت اﻟﻤﺮﺗﺒﻄﺔ و ﻳﻈﻬﺮ ﻓﺮاغ ﺑﺎﻟﻨﺴﺒﺔ ﻟﻠﻤﻮﻇﻔﻴﻦ اﻟﺬﻳﻦ ﻟﻢ ﻳﻘﻮﻣﻮا‬ ‫وﺑﺎﻟﺘﺎﻟﻲ ﺳﻨﺴﺘﺮﺟﻊ ﺳﺠﻼت اﻟﺼﻒ اﻷول ﻓﻘﻂ ‪.‬‬
‫ﺑﻄﻠﺐ ﻣﻨﺘﺞ ) ﺑﻤﻌﻨﻰ أن هﺬا اﻟﺤﻘﻞ ﺳﻴﻈﻬﺮ ﻓﻘﻂ اﻟﺴﺠﻼت اﻟﻤﺮﺗﺒﻄﺔ‬
‫ﻣﻦ اﻟﺠﺪول اﻟﺜﺎﻧﻲ (‪.‬‬ ‫اﻟﺮﺑﻂ ‪JOIN‬‬
‫ﺛﺎﻟﺜﺎً اﻟﺮﺑﻂ اﻷﻳﻤﻦ ‪: RIGHT JOIN‬‬
‫ﻳﺴﺘﺨﺪم اﻟﺮﺑﻂ ﻻﺳﺘﺮﺟﺎع ﺑﻴﺎﻧﺎت ﻣﻦ ﺟﺪوﻟﻴﻦ وﺳﻨﺪرس ﺛﻼث‬
‫اﻟﺼﻴﻐﺔ اﻟﻌﺎﻣﺔ‪:‬‬
‫ﺣﺎﻻت ﻟﻠﺮﺑﻂ‬
‫ﻛﻮد‪:‬‬
‫‪SELECT field1, field2, field3‬‬ ‫أوﻻً اﻟﺮﺑﻂ اﻟﺪاﺧﻠﻲ ‪: INNER JOIN‬‬
‫‪FROM first_table‬‬
‫‪RIGHT JOIN second_table‬‬ ‫اﻟﺼﻴﻐﺔ اﻟﻌﺎﻣﺔ‪:‬‬
‫= ‪ON first_table.keyfield‬‬ ‫ﻛﻮد‪:‬‬
‫‪second table.foreign keyfield‬‬ ‫‪SELECT field1, field2, field3‬‬
‫وﺑﻌﻜﺲ اﻟﺮﺑﻂ اﻷﻳﺴﺮ‪ ,‬ﻳﻘﻮم اﻟﺮﺑﻂ اﻷﻳﻤﻦ ﺑﺈﻋﺎدة ﺟﻤﻴﻊ ﺳﺠﻼت‬ ‫‪FROM first_table‬‬
‫اﻟﺠﺪول اﻟﺜﺎﻧﻲ ﺣﺘﻰ ﺗﻠﻚ اﻟﺴﺠﻼت اﻟﻐﻴﺮ ﻣﺮﺗﺒﻄﺔ ﺑﺄي ﺳﺠﻞ ﻣﻦ‬ ‫‪INNER JOIN second_table‬‬
‫= ‪ON first_table.keyfield‬‬
‫اﻟﺠﺪول اﻷول‪ ,‬ﺑﻴﻨﻤﺎ ﻳﻌﻴﺪ اﻟﺴﺠﻼت اﻟﻤﺮﺗﺒﻄﺔ ﻓﻘﻂ ﻣﻦ اﻟﺠﺪول اﻷول ‪,‬‬ ‫‪second_table.foreign_keyfield‬‬
‫ﻗﻢ ﺑﺘﻄﺒﻴﻖ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ ﻣﻊ ﺗﻐﻴﻴﺮ ‪ LEFT JOIN‬إﻟﻰ ‪RIGHT‬‬
‫‪ JOIN‬ﻟﺘﺮى اﻟﻔﺎرق‪.‬‬ ‫وﻳﻘﻮم ﺑﺎﺳﺘﺮﺟﺎع ﺟﻤﻴﻊ اﻟﺴﺠﻼت ﻓﻲ اﻟﺠﺪول اﻷول اﻟﻤﺮﺗﺒﻄﺔ ﺑﺴﺠﻼت‬
‫اﻟﺠﺪول اﻟﺜﺎﻧﻲ ﻣﺜﺎل‬
‫ﻳﺘﺒﻊ‪...‬‬
‫ﻛﻮد‪:‬‬
‫‪SELECT Employees.F_Name,‬‬
‫‪Orders.Product_Name‬‬
‫‪FROM Employees‬‬

‫اﺧﺘﺮﻧﺎ ﻟﻚ ﻣﻦ ﻣﻜﺘﺒﺔ اﻟﺸﻔﺮات ‪...‬‬


‫‪INNER JOIN Orders‬‬
‫‪ON Employees.ID=Orders.EmpID‬‬

‫ﺣﻴﺚ أن ﺣﻘﻞ ‪ ID‬هﻮ ﻣﻔﺘﺎح أﺳﺎﺳﻲ ﻓﻲ ﺟﺪول اﻟﻤﻮﻇﻔﻴﻦ و‬


‫‪SELECT DISTINCT‬‬ ‫ﺣﻘﻞ ‪ EmpID‬هﻮ ﻣﻔﺘﺎح أﺟﻨﺒﻲ ﻓﻲ ﺟﺪول اﻟﻄﻠﺒﺎت‬
‫ﺳﺘﻜﻮن اﻟﻨﺘﻴﺠﺔ ﻋﺒﺎرة ﻋﻦ اﺳﻢ اﻟﻤﻮﻇﻒ و اﻟﻤﻨﺘﺞ اﻟﺬي ﻗﺎم ﺑﻄﻠﺒﻪ‪ ،‬و‬
‫اﻟﺼﻴﻐﺔ ‪ DISTINCT‬اﺳﻢ ﻋﻠﻰ ﻣﺴﻤﻰ ﺗﺴﺘﺨﺪم ﻻﺳﺘﺮﺟﺎع اﻟﻘﻴﻢ‬
‫ﻼ ﻓﻘﻂ ‪ ,‬أي وآﻤﺎ ﻗﻠﻨﺎ‬ ‫ﺳﻴﻈﻬﺮ اﻟﻤﻮﻇﻔﻮن اﻟﺬﻳﻦ ﻗﺎﻣﻮا ﺑﻄﻠﺐ ﺷﻲء ﻓﻌ ً‬
‫اﻟﻤﺨﺘﻠﺔ ﻓﻘﻂ‪.‬‬
‫ﺳﺎﺑﻘًﺎ ﺳﺘﻈﻬﺮ اﻟﺴﺠﻼت اﻟﺘﻲ ﻟﻬﺎ ارﺗﺒﺎط ﺑﺎﻟﺠﺪول اﻟﺜﺎﻧﻲ ﻓﻘﻂ ‪.‬‬
‫إذا آﻨﺎ ﻧﺮﻳﺪ اﺳﺘﺮﺟﺎع اﻟﻘﻴﻢ اﻟﻤﺨﺘﻠﻔﺔ ﻓﻘﻂ ﻣﻦ ﺟﺪول ﻧﺤﺘﺎج إﻟﻰ إﺿﺎﻓﺔ‬
‫اﻟﺼﻴﻐﺔ ‪ DISTINCT‬إﻟﻰ ‪SELECT‬‬
‫ﺛﺎﻧﻴﺎ اﻟﺮﺑﻂ اﻷﻳﺴﺮ ‪:LEFT JOIN‬‬
‫اﻟﺼﻴﻐﺔ اﻟﻌﺎﻣﺔ‪:‬‬
‫اﻟﺼﻴﻐﺔ اﻟﻌﺎﻣﺔ‪:‬‬
‫ﻛﻮد‪:‬‬ ‫ﻛﻮد‪:‬‬
‫)‪SELECT DISTINCT column_name(s‬‬ ‫‪SELECT field1, field2, field3‬‬
‫‪FROM table name‬‬ ‫‪FROM first_table‬‬
‫‪LEFT JOIN second_table‬‬
‫= ‪ON first_table.keyfield‬‬
‫ﻻﺳﺘﺮﺟﺎع أو اﻻﺳﺘﻌﻼم ﻋﻦ ﺟﻤﻴﻊ أﺳﻤﺎء اﻟﺸﺮآﺎت ﻣﻦ اﻟﺠﺪول‬ ‫‪second_table.foreign_keyfield‬‬
‫‪Orders‬‬
‫ﺳﺘﻜﻮن اﻟﺠﻤﻠﺔ آﺎﻵﺗﻲ‪:‬‬ ‫وﻋﻨﺪ اﻟﺮﺑﻂ ﺑﻬﺬﻩ اﻟﻄﺮﻳﻘﺔ ﻳﻘﻮم اﻻﺳﺘﻌﻼم ﺑﺎﺳﺘﺮﺟﺎع ﺳﺠﻼت اﻟﺠﺪول‬
‫ﻛﻮد‪:‬‬ ‫اﻷول آﺎﻣﻠﺔ و ﺳﺠﻼت اﻟﺠﺪول اﻟﺜﺎﻧﻲ اﻟﺘﻲ ﻟﻬﺎ ارﺗﺒﺎط إن وﺟﺪت‪.‬‬
‫‪SELECT DISTINCT Company‬‬ ‫ﻣﺜﺎل‬
‫‪FROM Orders‬‬ ‫ﻛﻮد‪:‬‬
‫‪SELECT Employees.F_Name,‬‬
‫‪Orders.Product_Name‬‬
‫‪FROM Employees‬‬
‫‪LEFT JOIN Orders‬‬
‫‪ON Employees.ID = Orders.EmpID‬‬

‫‪104‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫‪ ‬‬

‫‪ ‬‬
‫‪INSERT Statement‬‬
‫‪ ‬‬ ‫‪BADRMEDIA‬‬ ‫أﺣﻤﺪ ﺑﺪر‬ ‫هﻞ أﻧﺖ ﻣﺒﺘﺪأ ﻻ ﺗﺴﺘﻄﻴﻊ اﻟﺘﻌﺎﻣﻞ ﻣﻊ ﻗﻮاﻋﺪ اﻟﺒﻴﺎﻧﺎت ؟‬
‫اﻟﺼﻴﻐﺔ اﻟﺜﺎﻧﻴﺔ ‪INSERT...SELECT Statement‬‬
‫هﻞ ﺗﺤﺘﺎج ﻟﺘﻌﻠﻢ آﻴﻒ ﺗﻀﻴﻒ ﺳﺠﻞ ﻟﺠﺪول ﻋﻦ ﻃﺮﻳﻖ اﻷﻣﺮ‬
‫‪ INSERT‬؟‬
‫اﻟﻄﺮﻳﻘﺔ اﻟﺜﺎﻧﻴﺔ ﺳﺘﻜﻮن ﺻﻴﻐﺘﻬﺎ ﺑﻬﺬا اﻟﺸﻜﻞ‬
‫ﺻﻴﻐﺔ اﻹﺿﺎﻓﺔ ﻟﻸﻣﺮ ‪INSERT‬‬
‫ﻛﻮد‪:‬‬
‫)‪INSERT INTO Emp (ID, Name‬‬ ‫هﻨﺎك ﺻﻴﻐﺘﻴﻦ‬
‫‪SELECT ID, Name FROM Student‬‬
‫ﻣﺜﺎل‬ ‫ﻛﻮد‪:‬‬
‫‪INSERT...VALUES‬‬
‫ﺟﺪول اﺳﻤﻪ ‪ Emp‬ﻓﻴﻪ هﺬﻩ اﻟﺤﻘﻮل‬

‫‪ ID‬ﺣﻘﻞ رﻗﻤﻲ و ‪ Name‬ﺣﻘﻞ ﻧﺼﻲ‬ ‫ﻛﻮد‪:‬‬


‫‪INSERT...SELECT‬‬
‫وﺟﺪول ﺁﺧﺮ اﺳﻤﻪ ‪ Student‬ﻓﻴﻪ هﺬﻩ اﻟﺤﻘﻮل‬

‫‪ ID‬ﺣﻘﻞ رﻗﻤﻲ و ‪ Name‬ﺣﻘﻞ ﻧﺼﻲ‬ ‫اﻟﺼﻴﻐﺔ اﻷوﻟﻰ‬


‫اﻟﺠﺪول ‪ Student‬ﻓﻴﻪ هﺬﻩ اﻟﻘﻴﻢ‬
‫ﺳﺘﻜﻮن ﺑﻬﺬا اﻟﺸﻜﻞ‬
‫‪ID ‬‬ ‫‪Name ‬‬
‫ﻛﻮد‪:‬‬
‫‪1 ‬‬ ‫‪Ahmed ‬‬
‫)‪INSERT INTO table_name (col1, col2...‬‬
‫‪2 ‬‬ ‫‪Saad ‬‬ ‫)‪VALUES (value1, value2...‬‬
‫‪3 ‬‬ ‫‪Yousef ‬‬
‫‪4 ‬‬ ‫‪Samir ‬‬
‫‪5 ‬‬ ‫‪Amr ‬‬ ‫ﻣﺜﺎل‬
‫إﻟﻴﻚ هﺬا اﻟﻤﺜﺎل‬
‫ﺟﺪول اﺳﻤﻪ ‪ Emp‬ﻓﻴﻪ هﺬﻩ اﻟﺤﻘﻮل‬
‫ﻛﻮد‪:‬‬
‫)‪INSERT INTO Emp (ID, Name‬‬ ‫‪ ID‬ﺣﻘﻞ رﻗﻤﻲ‬
‫‪SELECT ID, Name‬‬
‫‪FROM Student‬‬ ‫‪ Name‬ﺣﻘﻞ ﻧﺼﻲ‬
‫هﻨﺎ ﺳﺘﻜﻮن ﻧﺘﻴﺠﺔ هﺬﻩ اﻟﻌﻤﻠﻴﺔ إﺿﺎﻓﺔ ‪ 5‬ﺳﺠﻼت‪.‬‬
‫ﻓﻲ ﺣﻴﻦ أن اﻟﺼﻴﻐﺔ ‪ INSERT...VALUES‬ﻻ ﺗﻀﻴﻒ إﻻ ﺳﺠﻞ‬ ‫ﺗﻜﻮن ﺟﻤﻠﺔ اﻹﺿﺎﻓﺔ ﺑﻬﺬا اﻟﺸﻜﻞ‬
‫واﺣﺪ ﻓﻘﻂ‪.‬‬
‫ﻃﺒﻌًﺎ ﻓﻲ اﻟﻜﻮد اﻟﺴﺎﺑﻖ اﻷﻋﻤﺪة اﻟﻤﻄﻠﻮﺑﺔ ﻓﻲ ﺟﻤﻠﺔ ‪ Select‬هﻲ‬ ‫ﻛﻮد‪:‬‬
‫ﻣﺘﻮاﻓﻘﺔ ﻣﻊ اﻷﻋﻤﺪة اﻟﻤﺪﺧﻠﺔ‪.‬‬ ‫)‪INSERT INTO Emp(ID,Name‬‬
‫)'‪VALUES (1, 'BADRMEDIA‬‬
‫أﺧﻄﺎء ﻣﺸﻬﻮرة أﺛﻨﺎء اﺳﺘﺨﺪام ﺟﻤﻠﺔ ‪Insert‬‬ ‫ﻃﺒﻌًﺎ اﻟﺤﻘﻞ اﻟﺮﻗﻤﻲ ﻳﻮﺿﻊ ﻣﺒﺎﺷﺮة واﻟﺤﻘﻞ اﻟﻨﺼﻲ ﻳﺠﺐ أن ﻧﻀﻌﻪ ﺑﻴﻦ‬
‫ﻋﻼﻣﺘﻴﻦ ﺗﻨﺼﻴﺺ ﻣﻔﺮدة‪.‬‬
‫‪unique constraint‬‬ ‫اﻟﺠﻤﻠﺔ اﻟﺴﺎﺑﻘﺔ ﻣﻤﻜﻦ ﻧﻀﻌﻬﺎ ﺑﻬﺬا اﻟﺸﻜﻞ ‪:‬‬

‫ﺗﻌﻨﻲ هﻨﺎك ﺷﺮط ﻋﻠﻰ ﺣﻘﻞ ﺑﻌﺪم ﺗﻜﺮار اﻟﺒﻴﺎﻧﺎت وﺳﻴﻈﻬﺮ‬ ‫ﻛﻮد‪:‬‬
‫اﺳﻢ اﻟﺤﻘﻞ ﻓﻲ اﻟﺮﺳﺎﻟﺔ ﺑﻤﻌﻨﻰ أﻧﻚ ﺗﺤﺎول إدﺧﺎل ﻗﻴﻤﺔ ﻣﻮﺟﻮدة ﻣﻦ‬ ‫‪INSERT INTO Emp‬‬
‫ﻗﺒﻞ وﻏﻴﺮ ﻗﺎﺑﻠﺔ ﻟﻠﺘﻜﺮار‪.‬‬ ‫)'‪VALUES (1, 'BADRMEDIA‬‬

‫‪Syntax error‬‬ ‫ﻃﺒﻌًﺎ وﺟﺪﻧﺎ أن اﺳﻢ اﻟﺤﻘﻮل اﻟﻤﺮاد إدﺧﺎل اﻟﺒﻴﺎﻧﺎت ﻟﻬﺎ ﻏﻴﺮ ﻣﻮﺟﻮدة‪.‬‬
‫ﺻﺤﻴﺢ ﻣﻤﻜﻦ ﻧﺮﺳﻞ اﻟﻘﻴﻢ ﻣﺒﺎﺷﺮة ﻓﻲ ﺟﻤﻠﺔ اﻹﺿﺎﻓﺔ آﻤﺎ رأﻳﻨﺎ ﻟﻜﻦ‬
‫هﻨﺎك ﺧﻄﺄ ﻓﻲ ﺻﻴﻐﺔ ﺟﻤﻠﺔ اﻹدﺧﺎل ﻓﻲ اﻷﻏﻠﺐ رآﺰ ﻋﻠﻰ‬ ‫ﺑﺸﺮط أن اﻟﻘﻴﻢ اﻟﻤﺪﺧﻠﺔ ﺗﻜﻮن ﻣﺮﺗﺒﺔ ﺑﺘﺮﺗﻴﺐ اﻟﺤﻘﻮل ﻓﻲ اﻟﺠﺪول‪.‬‬
‫أن هﻨﺎك ﺣﻘﻞ رﻗﻤﻲ ﻏﻴﺮ ﻣﻮﺿﻮع ﺑﻴﻦ آﻌﻼﻣﺘﻲ ﺗﻨﺼﻴﺺ ﻣﻔﺮدة أو‬
‫اﺳﻢ ﺣﻘﻞ ﻣﻦ اﻟﺤﻘﻮل ‪ -‬آﻠﻤﺔ ﻣﺤﺠﻮزة أي ﻻ ﺗﺼﻠﺢ ﺗﻜﻮن اﺳﻢ ﻟﺠﺪول‪.‬‬
‫آﻤﺜﺎل ﻧﺤﻦ ﻧﺴﺘﺨﺪم ﺟﻤﻠﺔ ‪ Insert‬إذن ﻻ ﻳﺼﻠﺢ أن ﻧﺴﻤﻲ اﺳﻢ ﺣﻘﻞ‬
‫ﺑﺎﺳﻢ اﻷﻣﺮ ‪. Insert‬‬

‫‪105‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫‪ ‬‬

‫‪ ‬‬ ‫‪ ‬‬

‫ﻣﺸﺎرﻳﻊ اﻷﻋﻀﺎء اﻟﻤﻤﻴﺰة‬

‫‪Traffic Monitoring System Model‬‬ ‫اﻟﻤﺸﺮوع اﻟﻔﺎﺋﺰ ﺑﺎﻟﻤﺮﻛﺰ اﻷول‪- EED‬‬


‫أﺻﺒﺢ ﻷﻧﻈﻤﺔ اﻟﻜﻮﻣﺒﻴﻮﺗﺮ اﻵﻟﻴﺔ ﺗﺄﺛﻴﺮ ﻋﻤﻴﻖ ﻋﻠﻰ ﺣﻴﺎﺗﻨﺎ اﻟﻴﻮﻣﻴﺔ ﺣﻴﺚ أﺻﺒﺤﻨﺎ ﻧﺮى ﻛﻞ ﻳﻮم أﺑﺤﺎث وﻣﺸﺎرﻳﻊ ﺟﺪﻳﺪة ﻣﻦ أﺟﻞ‬
‫اﺳﺘﺨﺪام اﻟﻜﻮﻣﺒﻴﻮﺗﺮ ﻟﺘﺴﻬﻴﻞ اﻟﺤﻴﺎة وﺗﺨﻔﻴﻒ اﻟﻀﻐﻮط اﻟﺘﻲ ﻳﺘﺤﻤﻠﻬﺎ اﻟﺒﺸﺮ‪.‬‬

‫واﻟﻤﺸﺮوع ﻋﺒﺎرة ﻋﻦ ﻣﺰﻳﺢ ﻣﻦ آﺧﺮ اﻟﺘﻘﻨﻴﺎت اﻟﺘﻲ ﻗﺪﻣﺖ ﻓﻲ ﻫﺬا اﻟﻔﺮع ﻣﻦ ﻋﻠﻮم اﻟﻜﻮﻣﺒﻴﻮﺗﺮ اﻟﻤﺘﻌﻠﻘﺔ ﺑﺎﻟﺮؤﻳﺔ اﻟﺤﺎﺳﻮﺑﻴﺔ وﻧﻈﻢ دﻋﻢ اﺗﺨﺎذ‬
‫اﻟﻘﺮار اﻟﻤﻘﺪﻣﺔ ﻓﻲ ﻣﺠﺎل ﺗﻄﻮﻳﺮ اﻟﻤﺪن اﻵﻟﻴﺔ ‪ ،‬ﺣﻴﺚ ﻳﺴﺘﺨﺪم اﻟﻨﻈﺎم ﻟﻠﻤﺴﺎﻋﺪة ﻓﻲ ﻋﻤﻠﻴﺔ اﻟﻤﺮاﻗﺒﺔ ‪ ،‬ازدﺣﺎم اﻟﻄﺮق وﻣﺮاﻗﺒﺔ اﺷﺎرات اﻟﻤﺮور‬
‫وﺗﺪﻓﻖ اﻟﺴﻴﺮ ﻓﻲ اﻟﻤﺪن ‪ ،‬ﻫﻮ ﻋﺒﺎرة ﻋﻦ ﻧﻈﺎم ﻟﻤﺮاﻗﺒﺔ اﻟﺴﻴﺮ ودﻋﻢ ﻗﺮارات اﻟﻘﻴﺎدة اﻵﻟﻴﺔ ﺣﻴﺚ أن ﻫﺬﻳﻦ اﻟﻨﻈﺎﻣﻴﻦ ﻟﻢ ﻳﺘﻢ رﺑﻄﻬﻤﺎ ﺳﻮﻳﺔ‬
‫ﻣﻦ ﻗﺒﻞ‪.‬‬

‫وﻛﻞ ﻣﺎ ﻧﻄﻤﺢ إﻟﻴﻪ ﺣﺎﻟﻴﺎً ﻫﻮ ﺗﻘﺪﻳﻢ ﺧﻄﻮة ﻓﻲ ﻃﺮﻳﻖ ﺗﻄﺒﻴﻖ ﻧﻈﺎم ﻣﺮاﻗﺒﺔ ﻓﻲ اﻟﻮاﻗﻊ ﻋﻦ ﻃﺮﻳﻖ دﻋﻤﻪ ﻟﻠﺘﻜﺎﻣﻞ ﻣﻊ اﻟﻨﻤﻮذج اﻟﻤﺴﺘﻘﺒﻠﻲ‬
‫ﻟﻨﻈﺎم اﻟﻘﻴﺎدة اﻵﻟﻴﺔ ﻣﻦ ﺧﻼل ﻧﻤﻮذج ﻣﺼﻐﺮ ﻟﻤﺪﻳﻨﺔ ﺗﺤﺘﻮي ﻋﻠﻰ ﺳﻴﺎرات ﻳﺘﻢ اﻟﺘﺤﻜﻢ ﺑﻬﺎ ﻋﻦ ﺑﻌﺪ وﺗﺘﻢ إدارﺗﻪ ﻣﻦ ﺧﻼل اﻟﻜﻮﻣﺒﻴﻮﺗﺮ‪.‬‬

‫ﺗﻢ اﻓﺘﺘﺎح دورة ﺗﻌﻠﻢ اﻟﺪوت ﻧﺖ ‪2008‬‬


‫ﺑﻔﻀﻞ اﷲ ﻋﺰ وﺟﻞ ﺗﻢ اﻟﺒﺪا ﺑﺪورة ﺗﻌﻠﻴﻤﻴﺔ ﻋﻦ ﺗﻘﻨﻴﺎت اﻟﺪوت ﻧﺖ اﻟﻘﺎدﻣﺔ ﻣﻊ اﻟﻔﻴﺠﻮال ﺳﺘـﻮدﻳـﻮ ‪ 2008‬و ﻳﺸـﺎرك ﻓـﻴـﻬﺎ ﻋـﻤـﺎﻟـﻘـﺔ‬
‫اﻟﻤﻮﻗﻊ ﻣﻦ أﺳـﺘﺎذة و أﻋﻀـﺎء ﺣﻴﺚ ﻳﺸﺎرك اﻟﺠﻤﻴﻊ ﺑﺎﻟﺪروس و اﻟﻤﻘﺎﻻت اﻟﺘﻌﻠﻴﻤﻴﺔ اﻟﻤﻨﻮﻋﺔ ﻓﻲ ﻋﺎﻟﻢ اﻟﺪوت ﻧﺖ ‪ .2008‬ﻧﺮﺟﻮ ﻣﻦ اﷲ‬
‫ﻋـﺰ و ﺟـﻞ أن ﻳﻮﻓﻘﻨﺎ ﺟﻤﻴﻌﻨﺎ ﻟﺘـﻘﺪﻳﻢ أﻓـﻀﻞ ﻣﺎ ﻧﻌــﺮف ﻹﺧـﻮاﻧﻨﺎ اﻟﻤﺒﺮﻣﺠــﻴﻦ ﻋﻠﻰ ﻣﺴﺘﻮى اﻟﻌﺎﻟﻢ اﻟﻌﺮﺑﻲ‪ ...‬وأﻣﻠﻨﺎ ﻓﻲ اﷲ ﻋﺰ وﺟﻞ أن ﺗﻤﺘﺪ‬
‫اﻟـﺘـﺠـﺮﺑـﺔ و ﻳﺸـﺎرﻛـﻨﺎ ﺑـﻬـﺎ ﻛـﻞ ﻣﻦ ﻟﻪ ﺧﺒـﺮة ﻓﻲ ﻣﺠـﺎل ﺗﻘﻨﻴـﺎت اﻟﺪوت ﻧﺖ ﺣﺘـﻰ ﺗﻌـﻢ اﻟﻔـﺎﺋـﺪة ﻋﻠﻰ اﻟﺠـﻤـﻴـﻊ ‪.......................‬‬

‫اﻟﺘﺤﻖ ﺑﺎﻟﺮﻛﺐ ﻣﻊ اﻟﺪوت ﻧﺖ ‪ 2008‬و اﺑﺪأ ﻃﺮﻳﻖ اﻻﺣﺘﺮاف‬

‫آﺧـﺮ أﺧﺒﺎر اﻟﻤﻨﺘﺪى‬


‫اﻟﺨﻤﻴﺲ ‪2008-1-3‬م ﺑﻠﻎ ﻋﺪد اﻷﻋﻀﺎء اﻟﻤﺴﺠﻠﻴﻦ ﻓﻲ اﻟﻤﻨﺘﺪى‬
‫‪ 20100‬ﻋﻀﻮ ﺑﻌﺪ أﻗﻞ ﻣﻦ ‪ 8‬أﺷﻬﺮ ﻣﻦ إﻋﺎدة اﻧﻄﻼﻗﺘﻪ‪.‬‬
‫‪ ‬‬

‫اﻷول‪Traffic Monitoring System Model - EED‬‬ ‫اﻟﻤﺸﺮوع اﻟﻔﺎﺋﺰ ﺑﺎﻟﻤﺮﻛﺰ‬


‫ﻣﺸﺎرﻳﻊ اﻷﻋﻀﺎء اﻟﻤﻤﻴﺰة ‪ ‬‬
‫اﺳﻢ اﻟﻤﺸﺮوع ‪ :‬ﻧﻈﺎم ﻟﻤﺮاﻗﺒﺔ اﻟﻤﺮور ﻣﻊ ﻧﻤﻮذج ﻟﻠﻘﻴﺎدة اﻵﻟﻴﺔ‪.‬‬

‫‪Traffic Monitoring System With Automatic Driving Model‬‬

‫اﻟﻤﺸﺮوع اﻟﻔﺎﺋﺰ ﺑﺎﻟﻤﺮﻛﺰ اﻷول ﻋﻠﻰ ﻣﺴﺘﻮى ﺟﻤﻬﻮرﻳﺔ ﻣﺼﺮ اﻟﻌﺮﺑﻴﺔ ﻓﻲ ﻳﻮم اﻟﻬﻨﺪﺳﺔ اﻟﻤﺼﺮي ‪ EED‬ﻓﺮع‪ IT‬ﻟﺴﻨﺔ‬
‫‪ ‬‬ ‫‪.2007‬‬

‫‪ ‬‬ ‫‪ ‬‬

‫ﻓﺮﻳﻖ اﻟﻌﻤﻞ‪:‬‬

‫‪ .1‬أﺣﻤﺪ ﺟﻤﺎل ﺧﻠﻴﻔﺔ‪.‬‬


‫‪ .2‬أﺣﻤﺪ ﺳﻌﻴﺪ أﻧﻮر‪.‬‬
‫‪ .3‬أﺣﻤﺪ ﻋﻤﺎد أﺣﻤﺪ‪.‬‬
‫‪ .4‬أﺣﻤﺪ ﻣﺤﻤﺪ ﻋﻴﺴﻮي‪.‬‬
‫‪ .5‬ﺣﺴﺎم اﻟﺪﻳﻦ ﻣﺤﻤﺪ ﺻﺎدق‪.‬‬
‫‪ .6‬ﺧﺎﻟﺪ ﻋﺎدل ﻣﺤﻤﺪ ﺳﻼﻣﺔ‪.‬‬

‫اﻟﻜﻠﻴﺔ واﻟﺠﺎﻣﻌﺔ‪:‬‬ ‫اﺳﻢ اﻟﻤﺸﺮف‪:‬‬


‫ﺟﻤﻬﻮرﻳﺔ ﻣﺼﺮ اﻟﻌﺮﺑﻴﺔ ‪ -‬ﺟﺎﻣﻌﺔ ﺣﻠﻮان ‪-‬‬ ‫ﺑﺮوﻓﻴﺴﻮر‪ :‬ﻋﺮاﻗﻲ ﺧﻠﻴﻔﺔ‪.‬‬
‫ﻛﻠﻴﺔ اﻟﺤﺎﺳﺒﺎت واﻟﻤﻌﻠﻮﻣﺎت ‪ -‬ﻗﺴﻢ‬ ‫م‪ .‬ﻋﻤﺮ ﻏﻨﻴﻢ‪.‬‬
‫ﻋﻠﻮم اﻟﺤﺎﺳﺐ‪.‬‬
‫اﻟﺴﻨﺔ‪2007 :‬‬
‫‪107‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪  2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫‪ ‬‬

‫اﻷول‪Traffic Monitoring System Model - EED‬‬ ‫اﻟﻤﺸﺮوع اﻟﻔﺎﺋﺰ ﺑﺎﻟﻤﺮﻛﺰ‬


‫ﻣﺸﺎرﻳﻊ اﻷﻋﻀﺎء اﻟﻤﻤﻴﺰة ‪ ‬‬
‫وﺻﻒ ﻣﺨﺘﺼﺮ ﻟﻠﻤﺸﺮوع‪:‬‬
‫اﻟﻤﺮاﺣﻞ اﻷﺳﺎﺳﻴﺔ ﻟﻠﻤﺸﺮوع ‪ -‬ﺑﺎﺧﺘﺼﺎر ﺷﺪﻳﺪ ‪ -‬ﻟﻤﺰﻳﺪ ﻣﻦ‬
‫اﻟﺘﻔﺎﺻﻴﻞ راﺟﻊ ال ‪ Documentation‬ﻓﻲ ﺁﺧﺮ اﻟﻤﻮﺿﻮع‪.‬‬
‫ﻣﻘﺪﻣﺔ‪:‬‬
‫أﺻﺒﺢ ﻷﻧﻈﻤﺔ اﻟﻜﻮﻣﺒﻴﻮﺗﺮ اﻵﻟﻴﺔ ﺗﺄﺛﻴﺮ ﻋﻤﻴﻖ ﻋﻠﻰ ﺣﻴﺎﺗﻨﺎ اﻟﻴﻮﻣﻴﺔ‬
‫‪ ‬‬ ‫ﺣﻴﺚ أﺻﺒﺤﻨﺎ ﻧﺮى آﻞ ﻳﻮم أﺑﺤﺎث وﻣﺸﺎرﻳﻊ ﺟﺪﻳﺪة ﻣﻦ أﺟﻞ اﺳﺘﺨﺪام‬
‫اﻟﻜﻮﻣﺒﻴﻮﺗﺮ ﻟﺘﺴﻬﻴﻞ اﻟﺤﻴﺎة وﺗﺨﻔﻴﻒ اﻟﻀﻐﻮط اﻟﺘﻲ ﻳﺘﺤﻤﻠﻬﺎ اﻟﺒﺸﺮ‪.‬‬
‫واﻟﻤﺸﺮوع ﻋﺒﺎرة ﻋﻦ ﻣﺰﻳﺞ ﻣﻦ ﺁﺧﺮ اﻟﺘﻘﻨﻴﺎت اﻟﺘﻲ ﻗﺪﻣﺖ ﻓﻲ‬
‫هﺬا اﻟﻔﺮع ﻣﻦ ﻋﻠﻮم اﻟﻜﻮﻣﺒﻴﻮﺗﺮ اﻟﻤﺘﻌﻠﻘﺔ ﺑﺎﻟﺮؤﻳﺔ اﻟﺤﺎﺳﻮﺑﻴﺔ وﻧﻈﻢ دﻋﻢ‬
‫‪ ‬‬ ‫‪ ‬‬ ‫اﺗﺨﺎذ اﻟﻘﺮار اﻟﻤﻘﺪﻣﺔ ﻓﻲ ﻣﺠﺎل ﺗﻄﻮﻳﺮ اﻟﻤﺪن اﻵﻟﻴﺔ ‪ ،‬ﺣﻴﺚ ﻳﺴﺘﺨﺪم اﻟﻨﻈﺎم‬
‫ﻟﻠﻤﺴﺎﻋﺪة ﻓﻲ ﻋﻤﻠﻴﺔ اﻟﻤﺮاﻗﺒﺔ ‪ ،‬ازدﺣﺎم اﻟﻄﺮق وﻣﺮاﻗﺒﺔ إﺷﺎرات اﻟﻤﺮور‬
‫وﺗﺪﻓﻖ اﻟﺴﻴﺮ ﻓﻲ اﻟﻤﺪن ‪ ،‬هﻮ ﻋﺒﺎرة ﻋﻦ ﻧﻈﺎم ﻟﻤﺮاﻗﺒﺔ اﻟﺴﻴﺮ ودﻋﻢ‬
‫ﻗﺮارات اﻟﻘﻴﺎدة اﻵﻟﻴﺔ ﺣﻴﺚ أن هﺬﻳﻦ اﻟﻨﻈﺎﻣﻴﻦ ﻟﻢ ﻳﺘﻢ رﺑﻄﻬﻤﺎ ﺳﻮﻳﺔ ﻣﻦ‬
‫ﻗﺒﻞ‪.‬‬
‫وآﻞ ﻣﺎ ﻧﻄﻤﺢ إﻟﻴﻪ ﺣﺎﻟﻴًﺎ هﻮ ﺗﻘﺪﻳﻢ ﺧﻄﻮة ﻓﻲ ﻃﺮﻳﻖ ﺗﻄﺒﻴﻖ ﻧﻈﺎم‬
‫ﻣﺮاﻗﺒﺔ ﻓﻲ اﻟﻮاﻗﻊ ﻋﻦ ﻃﺮﻳﻖ دﻋﻤﻪ ﻟﻠﺘﻜﺎﻣﻞ ﻣﻊ اﻟﻨﻤﻮذج اﻟﻤﺴﺘﻘﺒﻠﻲ ﻟﻨﻈﺎم‬
‫اﻟﻘﻴﺎدة اﻵﻟﻴﺔ ﻣﻦ ﺧﻼل ﻧﻤﻮذج ﻣﺼﻐﺮ ﻟﻤﺪﻳﻨﺔ ﺗﺤﺘﻮي ﻋﻠﻰ ﺳﻴﺎرات ﻳﺘﻢ‬
‫اﻟﺘﺤﻜﻢ ﺑﻬﺎ ﻋﻦ ﺑﻌﺪ وﺗﺘﻢ إدارﺗﻪ ﻣﻦ ﺧﻼل اﻟﻜﻮﻣﺒﻴﻮﺗﺮ‪.‬‬

‫اﻟﻤﺼﺎﻋﺐ اﻷﺳﺎﺳﻴﺔ اﻟﺘﻲ واﺟﻬﺖ اﻟﻨﻈﺎم‪:‬‬


‫ﺗﻌﺘﺒﺮ اﻻﺳﺘﺠﺎﺑﺔ اﻟﻠﺤﻈﻴﺔ ﻟﻸواﻣﺮ اﻟﺼﺎدرة ﻋﻦ ﻃﺮﻳﻖ‬
‫اﻟﻜﻮﻣﺒﻴﻮﺗﺮ ﻟﻠﺴﻴﺎرة هﻲ اﻟﻌﻘﺒﺔ اﻷوﻟﻰ ﻓﻲ اﻟﻤﺸﺮوع ﻧﻈﺮًا ﻟﻠﺰﻣﻦ اﻟﺬي‬
‫ﺗﺴﺘﻐﺮﻗﻪ ﻋﻤﻠﻴﻪ ﺗﺤﻠﻴﻞ اﻟﺼﻮر ﻋﻠﻰ ﺣﺎﺳﺐ ﺁﻟﻲ ﻣﺘﻮﺳﻂ اﻟﺴﺮﻋﺔ‪ ،‬واﻟﻮﻗﺖ‬
‫اﻟﺬي ﺗﺴﺘﻐﺮﻗﻪ اﻷواﻣﺮ ﻟﻼﻧﺘﻘﺎل ﻓﻲ ﻇﻞ ﺣﺎﺟﺘﻨﺎ إﻟﻰ أﺳﺮع اﺳﺘﺠﺎﺑﺔ ﻣﻤﻜﻨﺔ‬
‫ﻟﻴﻤﻜﻦ ﺗﻄﺒﻴﻖ اﻟﻨﻈﺎم ﻓﻲ اﻟﻮاﻗﻊ‪.‬‬
‫اﻟﺴﻴﻨﺎرﻳﻮ‪:‬‬
‫ﻣﺨﻄﻂ ﻟﺴﻴﻨﺎرﻳﻮ اﻟﻤﺸﺮوع‪:‬‬
‫ﻣﺨﻄﻂ ‪ Collaboration Diagram‬ﻟﻠﻤﺸﺮوع‪:‬‬

‫‪108‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪  2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫‪ ‬‬

‫اﻷول‪Traffic Monitoring System Model - EED‬‬ ‫اﻟﻤﺸﺮوع اﻟﻔﺎﺋﺰ ﺑﺎﻟﻤﺮﻛﺰ‬


‫ﻣﺸﺎرﻳﻊ اﻷﻋﻀﺎء اﻟﻤﻤﻴﺰة ‪ ‬‬
‫وﺻﻒ اﻟﻤﺸﺮوع‪:‬‬

‫ﺑﺎﺧﺘﺼﺎر ﺷﺪﻳﺪ ‪ :‬اﻟﻤﺸﺮوع ﻳﺤﺘﻮي ﻋﻠﻰ آﺎﻣﻴﺮا ﺗﻘﻮم ﺑﺈرﺳﺎل ﺻﻮر ﻓﻮرﻳﺔ إﻟﻰ اﻟﻜﻮﻣﺒﻴﻮﺗﺮ اﻟﺬي ﻳﻘﻮم ﺑﺘﺤﻠﻴﻠﻬﺎ وﻓﻬﻤﻬﺎ واﻟﺨﺮوج ﺑﺒﻌﺾ اﻟﺘﻘﺎرﻳﺮ‬
‫واﻹﺣﺼﺎﺋﻴﺎت ﻋﻦ اﻟﻄﺮق وﻧﻈﺎم اﻟﻤﺮور ‪ ،‬وﻓﻲ اﻟﺠﺰء اﻟﺜﺎﻧﻲ ﻣﻦ اﻟﻤﺸﺮوع وﻋﻨﺪ ﺑﺪاﻳﺔ ﻣﻬﻤﺔ ﻟﺘﺤﺮﻳﻚ اﻟﺴﻴﺎرة ﻣﻦ ﻧﻘﻄﺔ إﻟﻰ أﺧﺮى ﻳﺘﻢ اﻟﺮﺟﻮع إﻟﻰ‬
‫هﺬﻩ اﻟﻤﻌﻠﻮﻣﺎت ﻟﺤﺴﺎب اﻟﻄﺮﻳﻖ اﻷﻣﺜﻞ ﻟﻠﺘﺤﺮك ﻣﻦ ﺧﻼﻟﻪ ‪ ،‬وأﺧﻴﺮًا ﻳﺘﻢ اﻟﻠﺠﻮء إﻟﻰ ﺑﻌﺾ ﻣﺒﺎدئ ‪ Physical Computing‬ﻣﻦ أﺟﻞ ﺗﺤﺮﻳﻚ‬
‫‪ ‬‬ ‫اﻟﺴﻴﺎرة اﻟﻤﻮدﻳﻞ اﻟﻤﻮﺟﻮدة ﻓﻲ اﻟﻤﺪﻳﻨﺔ اﻟﻤﺼﻐﺮة‪.‬‬

‫وﺳﻨﺒﺪأ اﻵن ﻓﻲ اﻟﺸﺮح اﻟﺘﻔﺼﻴﻠﻲ ﻟﺒﻌﺾ اﻟﻤﺮاﺣﻞ ﺑﺎﺧﺘﺼﺎر‪.‬‬

‫ﻣﻌﺎﻟﺠﺔ اﻟﺼﻮر‪:‬‬

‫‪ ‬‬ ‫اﻟﻤﺮﺣﻠﺔ اﻷوﻟﻰ ﻓﻲ ﻋﻤﻠﻴﺔ ﻣﻌﺎﻟﺠﺔ اﻟﺼﻮر هﻲ ﻣﺮﺣﻠﺔ ‪ Road Extraction‬ﺣﻴﺚ ﻳﺘﻢ ﻣﻌﺮﻓﺔ اﻟﻄﺮق اﻟﻤﻮﺟﻮدة ﻓﻲ ‪ ‬‬
‫اﻟﻤﺪﻳﻨﺔ ﻋﻦ ﻃﺮﻳﻖ ﻣﺮاﺣﻞ ﻣﺘﻌﺪدة‬
‫ﺗﻤﺮ ﺑﻬﺎ ﻋﻤﻠﻴﺔ اﺳﺘﺨﺮاج اﻟﻄﺮق ﺑﻌﺪ ذﻟﻚ ﻳﻤﻜﻦ ﺣﺼﺮهﺎ إﺟﻤﺎﻻ ﻓﻲ اﻟﻤﺮاﺣﻞ اﻟﺘﺎﻟﻴﺔ )‪(Generate Road Seed points, Snaxles, Snakes‬‬
‫ﺣﻴﺚ ﻳﺘﻢ اﻟﺘﻌﺮف ﻓﻲ ﺁﺧﺮ ﻣﺮﺣﻠﺔ ﺑﺼﻮرة ﻣﻔﺼﻠﺔ ﻋﻠﻰ ﺟﻤﻴﻊ اﻟﻄﺮق ﻏﻴﺮ اﻟﻤﺴﺘﻘﻴﻤﺔ أو اﻟﻤﻨﺤﻨﻴﺔ ﺑﺎﻧﺤﻨﺎءات ﻣﺘﻌﺪدة‪.‬‬

‫وﺑﺎﺧﺘﺼﺎر ﺷﺪﻳﺪ ﻓﺈن هﺬﻩ اﻟﻤﺮﺣﻠﺔ ﺗﻌﺘﻤﺪ ﻋﻠﻰ ﻣﺎ ﻳﺴﻤﻰ ﺑﺎﺳﻢ ‪ Edge Detection‬آﻤﺮﺣﻠﺔ أﺳﺎﺳﻴﺔ ﻓﻲ هﺬﻩ اﻟﺨﻄﻮة ﺣﻴﺚ ﻧﻘﻮم ﺑﻘﺮاءة اﻟﺼﻮرة‬
‫وﻣﺤﺎوﻟﺔ اﺳﺘﺨﺮاج اﻟﺤﻮاف اﻟﻤﻤﻴﺰة ﻟﻬﺎ‪:‬‬

‫ﻼ أو ﻧﺎﺗﺠﺔ‬
‫ﻓﻲ اﻟﺨﻄﻮات اﻟﺘﺎﻟﻴﺔ ﻧﻘﻮم ﺑﺎﺳﺘﺒﻌﺎد ﺗﻠﻚ اﻟﺘﻲ ﺗﻤﺜﻞ ﻣﺒﺎﻧﻲ ﻣﺜ ً‬
‫ﻋﻦ ﺗﺸﻮﻳﺶ ﻓﻲ اﻟﺼﻮرة‪ ،‬ﻧﻘﻮم ﺑﺪﻣﺞ اﻟﺨﻄﻮط ﺳﻮﻳﺔ ‪ ...‬اﻟﺦ‪.‬‬

‫وﺑﻤﺎ أن اﻟﻨﺎﺗﺞ ﻟﻦ ﻳﻜﻮن ﺑﺎﻟﻄﺒﻴﻌﻲ ‪ %100‬ﻓﺈﻧﻨﺎ ﻧﺴﻤﺢ ﻟﻠﻤﺴﺘﺨﺪم‬


‫ﺑﺎﻻﻧﺘﻘﺎل إﻟﻰ ﺷﺎﺷﺔ رﺳﻢ اﻟﻄﺮق واﻟﺘﻌﺪﻳﻞ ﺣﻴﺚ ﻳﻤﻜﻨﻪ إﺿﺎﻓﺔ وﺣﺬف‬
‫اﻟﻄﺮق اﻟﺨﺎﻃﺌﺔ آﻤﺎ ﻳﻤﻜﻨﻪ ﺗﺴﻤﻴﺔ اﻟﺸﻮارع واﻟﻤﺒﺎﻧﻲ وﻏﻴﺮهﺎ‪...‬‬

‫اﻟﻤﺮﺣﻠﺔ اﻟﺜﺎﻧﻴﺔ ﻓﻲ ﻋﻤﻠﻴﺔ ﻣﻌﺎﻟﺠﺔ اﻟﺼﻮر‬


‫هﻲ ﻣﺘﺎﺑﻌﺔ ﺗﺤﺮآﺎت اﻟﺴﻴﺎرات ﻓﻲ اﻟﻤﺪﻳﻨﺔ ‪ ،‬وﻳﺘﻢ ذﻟﻚ أﻳﻀًﺎ ﻋﺒﺮ‬
‫ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﻌﻤﻠﻴﺎت اﻟﺨﺎﺻﺔ ﺑﻜﻴﻔﻴﺔ اﺳﺘﺨﺮاج ﺧﻠﻔﻴﺔ ﻓﺎرﻏﺔ ﻣﻦ ﺟﻤﻴﻊ‬
‫اﻟﺴﻴﺎرات دون اﻻﺿﻄﺮار ﻟﺘﺼﻮﻳﺮ اﻟﻤﺪﻳﻨﺔ وهﻲ ﻓﺎرﻏﺔ ‪ ،‬وﻣﻦ ﺛﻢ‬
‫اﻟﺒﺪء ﻓﻲ ﻗﺮاءة اﻟﺼﻮرة ﻋﻦ ﻃﺮﻳﻖ اﻟﻄﺮح اﻟﻤﺒﺎﺷﺮ آﺨﻄﻮة أوﻟﻰ ‪،‬‬
‫وهﺬﻩ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﺼﻮر‪:‬‬

‫اﻟﺨﻄﻮة اﻟﺜﺎﻧﻴﺔ ﺗﻌﺘﻤﺪ ﻋﻠﻰ اﻟﺒﺪء اﻟﻔﻌﻠﻲ ﻓﻲ ﻗﺮاءة اﻟﺼﻮر وﻳﺘﻢ ذﻟﻚ ﻋﺒﺮ ﺗﺤﻮﻳﻠﻬﺎ إﻟﻰ ﺻﻮر ‪ Binary‬ﻣﻊ ﺗﻄﺒﻴﻖ ﺑﻌﺾ ال ‪morphological‬‬
‫‪ filtering‬ﻣﻦ اﺟﻞ ﺗﻮﺿﻴﺢ اﻟﺼﻮرة ‪ ،‬وهﺬﻩ اﻟﻤﺤﺼﻠﺔ اﻟﻨﻬﺎﺋﻴﺔ ﻟﻬﺬﻩ اﻟﻌﻤﻠﻴﺎت‪:‬‬

‫اﻟﺨﻄﻮة اﻷﺧﻴﺮة هﻲ اﻟﺒﺪء ﺑﺘﺘﺒﻊ هﺬﻩ اﻟﺴﻴﺎرات ﻓﺘﺮة ﻋﻤﻞ اﻟﻨﻈﺎم ‪ ،‬وﻳﺘﻢ ذﻟﻚ ﺑﺎﺳﺘﺨﺪام ‪LUCAS-KANADE OPTICAL FLOW‬‬
‫‪ALGORITHM‬ﻋﻠﻰ ﺳﺒﻴﻞ اﻟﻤﺜﺎل‪.‬‬

‫ﻧﻈﺎم اﻹﺣﺼﺎﺋﻴﺎت واﻟﺘﻘﺎرﻳﺮ اﻟﻘﻴﺎدة اﻵﻟﻴﺔ‪:‬‬

‫ﺑﻌﺪ أن اﺳﺘﻄﻌﻨﺎ ﻓﻲ اﻟﻤﺮﺣﻠﺔ اﻟﺴﺎﺑﻘﺔ ﻣﻌﺮﻓﺔ أﻣﺎآﻦ اﻟﺴﻴﺎرات ﻓﻲ اﻟﻤﺪﻳﻨﺔ وﺣﺎﻟﺔ اﻟﻄﺮق ‪ ،‬ﺟﺎء دور اﻟﻤﺮﺣﻠﺔ اﻟﺜﺎﻧﻴﺔ ﻣﻦ اﻟﻨﻈﺎم واﻟﺘﻲ ﺗﺘﻠﺨﺺ ﻓﻲ‬
‫اﻻﺳﺘﻔﺎدة ﻣﻦ هﺬﻩ اﻟﺒﻴﺎﻧﺎت ‪ ،‬وﺗﺘﻢ اﻻﺳﺘﻔﺎدة ﻣﻦ هﺬﻩ اﻟﺒﻴﺎﻧﺎت ﺑﻄﺮﻳﻘﺘﻴﻦ‪:‬‬

‫ﻧﻈﺎم اﻹﺣﺼﺎﺋﻴﺎت واﻟﺘﻘﺎرﻳﺮ‪:‬‬

‫ﺣﻴﺚ ﻳﺘﻢ ﻋﺮض ﺗﻘﺮﻳﺮ ﻓﻮري ﺑﺤﺎﻟﺔ اﻟﻄﺮق وﻧﺴﺐ اﻻزدﺣﺎم وﺧﻼﻓﻪ‪.‬‬

‫‪109‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪  2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫‪ ‬‬

‫اﻷول‪Traffic Monitoring System Model - EED‬‬ ‫اﻟﻤﺸﺮوع اﻟﻔﺎﺋﺰ ﺑﺎﻟﻤﺮﻛﺰ‬


‫ﻣﺸﺎرﻳﻊ اﻷﻋﻀﺎء اﻟﻤﻤﻴﺰة ‪ ‬‬
‫ﻧﻈﺎم اﻟﻘﻴﺎدة اﻵﻟﻴﺔ‪:‬‬
‫وهﺬا هﻮ اﻟﺠﺰء اﻟﺜﺎﻧﻲ ﻣﻦ اﻟﻤﺸﺮوع ‪ ،‬ﺣﻴﺚ‬
‫ﻳﺘﻢ آﺒﺪاﻳﺔ ﺗﺤﺪﻳﺪ ﻣﻬﻤﺔ ﻟﻼﻧﺘﻘﺎل ﻣﻦ ﻧﻘﻄﺔ أ إﻟﻰ ﻧﻘﻄﺔ ب‬
‫‪.‬‬
‫أول اﻟﻌﻤﻠﻴﺎت اﻟﺘﻲ ﻳﺘﻢ ﺗﻨﻔﻴﺬهﺎ هﻲ ﺣﺴﺎب ال ‪Best‬‬
‫‪Path‬ﻋﻦ ﻃﺮﻳﻖ ﻣﻌﺎدﻟﺔ ﻟﻜﻞ ﻃﺮﻳﻖ ﻳﺘﻢ ﻣﻦ ﺧﻼﻟﻬﺎ‬
‫‪ ‬‬
‫اﺧﺘﻴﺎر اﻟﻄﺮﻳﻖ اﻷﻧﺴﺐ وﺑﺪء اﻟﻌﻤﻞ ﻋﻠﻰ ﺗﺤﺮﻳﻚ‬
‫اﻟﺴﻴﺎرة ﻣﻦ ﺧﻼﻟﻪ‪.‬‬
‫واﻵن ﻧﻨﺘﻘﻞ إﻟﻰ اﻟﺠﺰء اﻵﺧﺮ ‪ ،‬وهﻮ آﻴﻔﻴﺔ ﺗﺤﺮﻳﻚ‬
‫اﻟﺴﻴﺎرة ﻋﻠﻰ هﺬا اﻟﻤﺴﺎر ‪ ،‬ﻓﻌﻠﻰ اﻟﺠﺎﻧﺐ اﻷول هﻨﺎك‬
‫ﺑﻌﺾ اﻷﻣﻮر اﻟﺨﺎﺻﺔ ﺑﺎﻻﻟﻜﺘﺮوﻧﻴﺎت واﻟﺘﻲ ﺳﻨﻨﺎﻗﺸﻬﺎ‬
‫ﻓﻲ اﻟﻨﻘﻄﺔ اﻟﺘﺎﻟﻴﺔ ‪ ،‬أﻣﺎ اﻟﺠﺰء اﻟﺨﺎص ﺑﺎﻟﻤﻌﺎدﻻت ﻓﻬﻮ‬
‫ﻣﻮﺿﻮﻋﻨﺎ هﻨﺎ‪.‬‬
‫‪ ‬‬ ‫‪ ‬‬

‫ﺣﻴﺚ أﻧﻪ ﻃﻮال ﻓﺘﺮة ﺣﺮآﺔ اﻟﺴﻴﺎرة ﻓﺈﻧﻪ ﻳﺘﻢ ﻋﻤﻞ اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﻤﻌﺎدﻻت اﻟﺮﻳﺎﺿﻴﺔ ﻣﻦ أﺟﻞ ﺿﻤﺎن ﺣﺮآﺔ اﻟﺴﻴﺎرة ﺿﻤﻦ اﻟﻄﺮﻳﻖ ‪ ،‬اﻻﻟﺘﻔﺎف ﻓﻲ‬
‫اﻟﻤﻠﻔﺎت اﻟﻤﺤﺪدة ﻟﺬﻟﻚ ‪ ،‬اﻟﺘﺄآﺪ ﻣﻦ وﺟﻮد ﻣﺴﺎﺣﺔ آﺎﻓﻴﺔ ﻟﻠﺘﺤﺮك إﻟﻰ اﻷﻣﺎم ‪ ،‬وﺿﻤﺎن ﻋﺪم اﻻﺻﻄﺪام ﺑﺎﻷﺟﺴﺎم اﻟﻤﺤﻴﻄﺔ‪.‬‬

‫اﻟﻬﺎردوﻳﺮ‪Hardware :‬‬

‫آﻤﺎ أﺳﻠﻔﻨﺎ ﻓﻲ اﻟﻨﻘﻄﺔ اﻟﺴﺎﺑﻘﺔ ‪ ،‬ﻓﺈﻧﻪ ﺗﻠﺰﻣﻨﺎ ﺑﻌﺾ اﻟﺘﻌﺪﻳﻼت ﻟﻴﺼﺒﺢ ﺑﻤﻘﺪورﻧﺎ ﺗﺤﺮﻳﻚ اﻟﺴﻴﺎرة اﻟﻤﻮدﻳﻞ ﻋﻦ ﻃﺮﻳﻖ اﻟﻜﻮﻣﺒﻴﻮﺗﺮ‪.‬‬

‫ﺑﺪاﻳﺔ اﺳﺘﻌﻨﺎ ﺑﺴﻴﺎرة رﻳﻤﻮت آﻨﺘﺮول ‪ RC Car‬ﻣﻊ ﻣﺮاﻋﺎة وﺟﻮد أآﺜﺮ ﻣﻦ ﺗﺮدد ‪ Frequency‬ﻓﻲ ﺣﺎﻟﺔ اﺳﺘﺨﺪام أآﺜﺮ ﻣﻦ ﺳﻴﺎرة أو اﺳﺘﺨﺪام‬
‫‪crystals‬أو ‪ Removable Strips‬ﻣﻦ أﺟﻞ ﺗﺠﻨﺐ ﺗﺪاﺧﻞ اﻟﻤﻮﺟﺎت‪.‬‬

‫ﺛﻢ ﻗﻤﻨﺎ ﺑﻌﻤﻞ ﻣﻮدﻳﻞ ﻟﻤﺪﻳﻨﺔ ﻣﺼﻐﺮة وﻗﻤﻨﺎ ﺑﺮﺳﻢ ﺑﻌﺾ اﻟﻄﺮق وﺑﻨﺎء ﺑﻌﺾ اﻟﻤﺒﺎﻧﻲ آﻤﺎ هﻮ ﻣﻮﺿﺢ ﻓﻲ اﻟﺼﻮر اﻟﻤﺮﻓﻘﺔ‪.‬‬

‫وﻗﻤﻨﺎ ﺑﺎﺳﺘﺨﺪام آﺎﻣﻴﺮا ﻋﺎدﻳﺔ ﻻﻟﺘﻘﺎط اﻟﺼﻮر‪.‬‬

‫اﻟﻤﺮﺣﻠﺔ اﻷوﻟﻰ هﻲ رﺑﻂ اﻟﻜﺎﻣﻴﺮا ﺑﺎﻟﻜﻮﻣﺒﻴﻮﺗﺮ ‪ ،‬وﺗﻢ ذﻟﻚ ﻋﺒﺮ ﻣﻨﻔﺬ ‪ USB‬ﺣﻴﺚ ﻳﻤﻜﻦ ﻗﺮاءة اﻟﻜﺎﻣﻴﺮا ﺑﺄآﺜﺮ ﻣﻦ ﻃﺮﻳﻘﺔ وﺣﺴﺐ ﻟﻐﺔ اﻟﺒﺮﻣﺠﺔ‬
‫اﻟﻤﺴﺘﺨﺪﻣﺔ‪.‬‬

‫اﻟﺨﻄﻮة اﻟﺜﺎﻧﻴﺔ هﻲ رﺑﻂ اﻟﺮﻳﻤﻮت ﺑﺎﻟﻜﻮﻣﺒﻴﻮﺗﺮ ﻟﻴﺘﻢ اﻟﺘﺤﻜﻢ ﻓﻲ اﻟﺴﻴﺎرة ‪ ،‬وﻳﺘﻢ ذﻟﻚ ﻋﻦ ﻃﺮﻳﻖ اﺳﺘﺨﺪام ﻣﺒﺎدئ ال ‪ Relays‬واﻟﺘﻲ ﺗﺴﻤﺢ ﻟﻠﺘﻴﺎر‬
‫ﺑﺎﻟﻤﺮور ﻓﻲ اﻟﺮﻳﻤﻮت ﻋﻨﺪ ﺗﻠﻘﻲ أﻣﺮ ﻣﻌﻴﻦ ﻣﻦ اﻟﻜﻮﻣﺒﻴﻮﺗﺮ ﻣﻦ ﺧﻼل ﻣﻨﻔﺬ اﻟﻄﺎﺑﻌﺔ‪Parallel Port .‬‬

‫وهﺎﺗﻴﻦ اﻟﺼﻮرﺗﻴﻦ ﺗﻮﺿﺤﺎن اﻟﻔﺮق ﺑﻴﻦ اﻟﺮﻳﻤﻮت اﻟﻌﺎدي ﺣﻴﺚ ﻳﺘﻢ ﺗﺤﺮﻳﻚ ﺻﻔﺎﺋﺢ ﻋﻠﻰ ﺑﻌﻀﻬﺎ ﻣﻘﺎرﻧﺔ ﺑﺎﻟﺮﻳﻤﻮت اﻟﺠﺪﻳﺪ ﺣﻴﺚ أﺻﺒﺢ ال ‪ Relay‬هﻮ‬
‫اﻟﻤﺘﺤﻜﻢ ﻓﻲ ﺗﻮﺻﻴﻞ اﻟﻜﻬﺮﺑﺎء‪.‬‬

‫‪110‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪  2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫‪ ‬‬

‫اﻷول‪Traffic Monitoring System Model - EED‬‬ ‫اﻟﻤﺸﺮوع اﻟﻔﺎﺋﺰ ﺑﺎﻟﻤﺮﻛﺰ‬


‫ﻣﺸﺎرﻳﻊ اﻷﻋﻀﺎء اﻟﻤﻤﻴﺰة ‪ ‬‬
‫اﻟﺘﻄﺒﻴﻖ ﻓﻲ اﻟﻌﺎﻟﻢ اﻟﻮاﻗﻌﻲ‪:‬‬

‫ﻼ ﻟﻠﺘﻄﺒﻴﻖ ﻓﻲ أرض اﻟﻮاﻗﻊ وﻋﻠﻰ ﻣﺪﻳﻨﺔ ﺣﻘﻴﻘﺔ ﻓﺈﻧﻪ ﻣﺎ زال ﺑﺤﺎﺟﺔ إﻟﻰ ﺑﻌﺾ اﻟﺘﻌﺪﻳﻼت ‪ ،‬ﻧﻮﺟﺰهﺎ ﻓﻲ اﻟﺜﻼث ﻧﻘﺎط اﻟﺘﺎﻟﻴﺔ‪:‬‬
‫ﻟﻜﻲ ﻳﺼﺒﺢ هﺬا اﻟﻨﻈﺎم ﻗﺎﺑ ً‬

‫‪ -‬ﻣﻦ ﺟﻬﺔ ﻣﻌﺎﻟﺠﺔ اﻟﺼﻮر ‪:‬‬


‫‪ ‬‬ ‫ﺳﻴﺘﻢ اﺳﺘﺒﺪال اﻟﻜﺎﻣﻴﺮا ﺑﺼﻮر ﻣﺒﺎﺷﺮة ﻟﻸﻗﻤﺎر اﻟﺼﻨﺎﻋﻴﺔ ﻣﺜﻞ ‪ Googel Earth‬واﻟﺘﻲ ﺑﺪأت ﺗﻘﺪم ﺧﺪﻣﺎت ﺑﺚ ﻣﺒﺎﺷﺮ ﻟﺒﻌﺾ اﻟﻤﺪن ﺣﻮل اﻟﻌﺎﻟﻢ‪.‬‬

‫أﻳﻀًﺎ ﻻ زﻟﻨﺎ ﺑﺤﺎﺟﺔ ﻟﻠﻤﺰﻳﺪ ﻣﻦ اﻟﺘﺴﺮﻳﻊ واﻟﺪﻗﺔ ﻓﻲ ﻋﻤﻠﻴﺎت ﻣﻌﺎﻟﺠﺔ اﻟﺼﻮر ‪ ،‬أﻳﻀﺎ ﻟﻤﺰﻳﺪ ﻣﻦ اﻟﻔﻠﺘﺮة ﻟﻠﻤﺆﺛﺮات اﻟﺠﻮﻳﺔ اﻟﺨﺎﺻﺔ ﻣﺜﻞ اﻟﻐﻴﻮم ‪،‬‬
‫اﻷﻣﻄﺎر ‪ ...‬اﻟﺦ‪.‬‬

‫‪ -‬ﻣﻦ ﺟﻬﺔ ﻧﻈﺎم ﻗﻴﺎدة اﻟﺴﻴﺎرة‬

‫ﻟﻦ ﻳﺘﺤﻤﻞ اﻟﺴﻴﺮﻓﺮ وﺣﺪﻩ ﻋﺐء اﻟﻘﻴﺎدة ﺑﻞ ﺳﻴﻜﻮن هﻨﺎك ﺟﻬﺎز ﻋﻠﻰ اﻟﺴﻴﺎرة أو ‪ Microcontroller‬ﻳﺴﺘﻘﺒﻞ اﻟﻤﺴﺎر وﻳﺒﺪأ ﻓﻲ ﺗﻮﺟﻴﻪ ﻧﻔﺴﻪ ﺑﻨﻔﺴﻪ‬
‫وذﻟﻚ ﻣﻨﻌًﺎ ﻟﺘﺜﻘﻴﻞ اﻟﻌﻤﻞ ﻋﻠﻰ اﻟﺴﻴﺮﻓﺮ وزﻳﺎدة ﻓﻲ اﻟﺴﺮﻋﺔ‪.‬‬
‫‪ ‬‬ ‫‪ ‬‬
‫أﻳﻀًﺎ ﺳﻴﺘﻢ اﺳﺘﺨﺪام دواﺋﺮ آﻬﺮﺑﺎﺋﻴﺔ ﻣﺜﻞ ‪ ultra-sonic‬ﺣﺘﻰ ﻓﻲ اﻟﻤﻮدﻳﻞ اﻟﺼﻐﻴﺮ ﻟﺘﻼﻓﻲ اﻻﺻﻄﺪاﻣﺎت اﻟﺘﻲ ﺗﻨﺘﺞ ﻋﻦ أﺟﺴﺎم ﻣﻔﺎﺟﺌﺔ ﺣﻴﺚ ﺗﻘﻮم‬
‫ﺑﺈرﺳﺎل واﺳﺘﻘﺒﺎل ﻣﻮﺟﺎت وﻳﺘﻢ اﺣﺘﺴﺎب زﻣﻦ ارﺗﺪادهﺎ ﻟﻤﻌﺮﻓﺔ وﻣﻦ ﺧﻼﻟﻬﺎ ﻳﻤﻜﻦ ﻣﻌﺮﻓﺔ اﻟﻤﺴﺎﻓﺔ اﻟﺘﻲ ﺗﻔﺼﻠﻬﺎ ﻋﻦ أﻗﺮب ﺟﺴﻢ ﻓﻲ اﻻﺗﺠﺎﻩ واﻟﺰاوﻳﺔ‬
‫اﻟﺘﻲ ﺗﺮﺳﻞ ﺑﻬﺎ اﻟﻤﻮﺟﺎت‪.‬‬

‫‪ -‬ﻣﻦ ﺟﻬﺔ ﻧﻈﺎم اﻟﺘﺤﻜﻢ واﻻﺗﺼﺎل‬

‫ﻟﻦ ﻳﺘﻢ اﻻﺗﺼﺎل ﻋﺒﺮ ﻣﻮﺟﺎت ‪ Radio‬ﻋﺎدﻳﺔ ﺑﻞ ﻻ ﺑﺪ ﻣﻦ وﺟﻮد ‪ ، Wireless network‬واﻟﺸﺮط اﻷهﻢ هﻮ آﻮﻧﻬﺎ ﻣﺤﻤﻴﺔ وهﻮ ﻣﺎ ﻟﻢ ﺗﺘﻮﺻﻞ إﻟﻴﻪ‬
‫اﻟﺒﺤﻮث ﺣﺘﻰ اﻵن ﺣﻴﺚ ﻻ ﺗﻮﺟﺪ ﺷﺒﻜﺔ ﻻ ﺳﻠﻜﻴﺔ ﻣﺤﻤﻴﺔ ﺑﺼﻮرة آﺎﻣﻠﺔ أﺑﺪًا‪.‬‬

‫وﻣﻦ اﻟﺠﻬﺔ اﻷﺧﺮى ﻓﻨﺤﻦ ﺑﺤﺎﺟﺔ إﻟﻰ ﺗﻄﻮﻳﻊ هﺎردوﻳﺮ اﻟﺴﻴﺎرات ﻻﺳﺘﻘﺒﺎل أواﻣﺮ ﻋﻦ ﻃﺮﻳﻖ اﻟﻜﻮﻣﺒﻴﻮﺗﺮ وهﻮ ﻣﺎ ﻻ ﻳﻌﺪ ﻣﺮﺣﻠﺔ ﺻﻌﺒﺔ ﻣﻦ ﻧﺎﺣﻴﺔ‬
‫ﻼ وﺳﺮﻋﺔ اﻻﺳﺘﺠﺎﺑﺔ ﻟﻸواﻣﺮ ﻓﻲ ﻇﻞ ﺳﻴﺮهﺎ ﻋﻠﻰ ﺳﺮﻋﺎت آﺒﻴﺮة واﻟﺘﻮﻗﻒ‬ ‫اﻟﺘﻄﺒﻴﻖ ‪ ،‬وﻟﻜﻨﻪ ﺳﻴﻮاﺟﻪ ﻣﺸﺎآﻞ ﻋﺪﻳﺪة ﺗﻨﺘﺞ ﻋﻦ ﺳﺮﻋﺔ اﻟﺴﻴﺎرة ﻣﺜ ً‬
‫اﻟﻤﻔﺎﺟﺊ وﺗﻮﻗﻊ اﻷﻋﻄﺎل وﻏﻴﺮﻩ‪.‬‬

‫اﻟﻤﺸﺮوع‪:‬‬

‫ﺗﻢ ﺗﺴﻠﻴﻢ اﻟﻤﺸﺮوع ﺑﺎﺳﺘﺨﺪام ‪ C#‬وﻟﻜﻦ ﺑﺪاﻳﺔ اﻟﻌﻤﻞ ﻓﻲ اﻟﻤﺸﺮوع ﻟﻢ ﺗﻜﻦ آﺬﻟﻚ ‪ ،‬ﺣﻴﺚ ﺗﻢ اﺳﺘﺨﺪام ‪ MATLAP‬ﻧﻈﺮًا ﻟﻜﻮﻧﻪ اﻷﺳﻬﻞ ﻓﻲ اﻟﺘﻌﺎﻣﻞ ﻣﻊ‬
‫ال ‪ ، Image Proccessing‬وﻣﻦ ﺛﻢ ﺗﻢ رﺑﻄﻪ ﺑﺎﻟﻨﻈﺎم اﻟﺬي ﻗﻤﻨﺎ ﺑﻌﻤﻠﻪ ﻣﻦ ﺧﻼل ‪ C#‬وﻟﻜﻦ وﺑﺎﻟﺮﻏﻢ ﻣﻦ ذﻟﻚ ﻓﻠﻦ ﺗﺠﺪ اﻟﻠﻐﺔ اﻟﻤﺴﺘﺨﺪﻣﺔ ﺗﻔﺮق آﺜﻴﺮاً‬
‫ﺣﻴﺚ أن أﻏﻠﺐ اﻟﺒﺮﻧﺎﻣﺞ ﻋﺒﺎرة ﻋﻦ ﻣﻌﺎدﻻت وﻗﻮاﻧﻴﻦ ﻟﻦ ﻳﺨﺘﻠﻒ ﺗﻄﺒﻴﻘﻬﺎ ﻣﻦ ﻟﻐﺔ إﻟﻰ أﺧﺮى أﺑﺪًا‪.‬‬

‫وﻟﻠﺘﺤﻮﻳﻞ إﻟﻰ ‪ C#‬ﺗﻢ اﺳﺘﺨﺪام ‪ SharperCV‬وهﻲ ﻣﻜﺘﺒﺔ ﻣﻔﺘﻮﺣﺔ اﻟﻤﺼﺪر ﻣﺘﺨﺼﺼﺔ ﻓﻲ ﻋﻤﻠﻴﺎت ال ‪ Image Proccesing‬وهﻲ ﻋﺒﺎرة ﻋﻦ‬
‫‪ Warrper‬ﻟﻤﻜﺘﺒﺔ ‪ OpenCV‬اﻟﺘﻲ ﺗﻢ ﺗﺼﻤﻴﻤﻬﺎ ﻟﻠﻌﻤﻞ ﻋﻠﻰ ‪ ، C++‬وﺳﺒﺐ اﻻﺳﺘﻌﺎﻧﺔ ﺑﻬﺬﻩ اﻟﻤﻜﺘﺒﺔ هﻮ اﻟﺘﻌﻘﻴﺪ اﻟﻜﺒﻴﺮ اﻟﺬي ﺳﻴﻨﺘﺞ ﻋﻦ اﺳﺘﺨﺪام‬
‫أآﻮاد ﺳﻲ ﺷﺎرب ﻣﺒﺎﺷﺮة ﻓﻲ آﻞ ﻋﻤﻠﻴﺔ ﻣﻦ ﻋﻤﻠﻴﺎت ﻣﻌﺎﻟﺠﺔ اﻟﺼﻮر اﻟﺘﻲ ﻧﺴﺘﺨﺪﻣﻬﺎ ﻧﻈﺮًا ﻷﻧﻚ ﺳﺘﻀﻄﺮ ﻟﻠﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻤﺆﺷﺮات ‪ Pointers‬وهﻮ ﻣﺎ‬
‫ﻳﻀﻄﺮك ﻻﺳﺘﺨﺪام ‪ ، unsafe code‬وﺑﺼﺮاﺣﺔ ﻓﻬﻲ ﻻ ﺗﻌﻄﻴﻚ آﺎﻓﺔ اﻟﻤﻤﻴﺰات اﻟﺘﻲ ﺗﻘﺪﻣﻬﺎ ﻟﻚ ﻟﻐﺔ ﻣﺜﻞ ‪ C++‬وﻓﻲ ﻧﻔﺲ اﻟﻮﻗﺖ ﺗﺤﺮﻣﻚ ﻣﻦ‬
‫اﻟﺴﻬﻮﻟﺔ اﻟﺘﻲ ﺗﺠﺪهﺎ ﻓﻲ اﻟﻤﺎﺗﻼب‪.‬‬

‫وﻟﻜﻦ هﺬا ﻟﻢ ﻳﻤﻨﻊ اﺳﺘﺨﺪام أآﻮاد ﻣﺒﺎﺷﺮة ﻓﻲ آﺜﻴﺮ ﻣﻦ اﻷﺣﻴﺎن ‪ ،‬وإﻧﻤﺎ ﺗﻢ اﺳﺘﺨﺪام ‪ SharperCV‬ﻓﻘﻂ ﻓﻲ اﻟﻌﻤﻠﻴﺎت اﻟﻤﺘﻜﺮرة أو اﻟﺘﻲ ﻳﺘﻢ اﻟﺘﻌﺎﻣﻞ ﻓﻴﻬﺎ‬
‫ﻣﻊ آﻤﻴﺔ آﺒﻴﺮة ﻣﻦ اﻷآﻮاد ﺣﻴﺚ ﺗﺨﺘﺼﺮ ﻋﻠﻴﻚ ال ‪ SharperCV‬ﺟﺰء آﺒﻴﺮ ﻣﻦ اﻟﻤﻬﻤﺔ ﺑﺮﻏﻢ آﺜﺮة ﻣﺸﺎآﻠﻬﺎ ‪ ،‬وﻟﻜﻨﻚ ﺳﺘﺠﺪ ﻧﻔﺴﻚ ﻣﻀﻄﺮًا ﻓﻲ‬
‫اﻟﻨﻬﺎﻳﺔ ﻟﻠﺒﺮﻣﺠﺔ اﻟﻴﺪوﻳﺔ‪.‬‬

‫آﺎن ﺑﺎﻹﻣﻜﺎن إﺿﺎﻓﺔ ﺣﻞ ﺁﺧﺮ وهﻮ اﺳﺘﺨﺪام ﻋﻤﻠﻴﺎت اﻟﺘﺤﻮﻳﻞ ﻣﻦ ﻣﺎﺗﻼب إﻟﻰ ‪ .net‬وﻟﻜﻦ ﻇﻬﻮر ﺑﻌﺾ اﻟﻤﺸﺎآﻞ أدى إﻟﻰ اﻳﻘﺎف هﺬﻩ اﻟﻌﻤﻠﻴﺔ ‪ ،‬ﻋﻤﻮﻣ ًﺎ‬
‫ﻣﺎ زاﻟﺖ ﺟﻤﻴﻊ ﻣﺮاﺣﻞ اﻟﻌﻤﻞ ﻋﻠﻰ ﻣﻌﺎﻟﺠﺔ اﻟﺼﻮر ﻣﻮﺟﻮدة ﻣﻦ ﺧﻼل ‪ matlap‬وﻣﻦ ﺧﻼل ‪ C#‬أﻳﻀًﺎ‪.‬‬

‫أﻣﺎ اﻟﺠﺰء اﻵﺧﺮ اﻟﺨﺎص ﺑﺎﻟﻨﻈﺎم واﻟﺸﺎﺷﺎت واﻟﻘﻴﺎدة اﻵﻟﻴﺔ وﻣﻌﺎدﻻت اﻟﺤﺮآﺔ واﻟﺮﺑﻂ ﺑﺎﻟﻜﺎﻣﻴﺮا ﻣﻦ ﺟﻬﺔ أو اﻟﺮﺑﻂ ﺑﺎﻟﺴﻴﺎرة ﻣﻦ ﺟﻬﺔ أﺧﺮى وﻋﻤﻠﻴﺎت‬
‫اﻟﺘﻌﺪﻳﻞ واﻟﺘﺤﺮﻳﺮ وﻗﻮاﻋﺪ اﻟﺒﻴﺎﻧﺎت واﻟﺘﻘﺎرﻳﺮ وﺧﻼﻓﻪ ﻓﻘﺪ ﺗﻤﺖ ﺑﺮﻣﺠﺘﻪ ﺑﺎﺳﺘﺨﺪام ‪ C#‬ﻣﺒﺎﺷﺮة‪.‬‬

‫‪111‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪  2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫‪ ‬‬

‫اﻷول‪Traffic Monitoring System Model - EED‬‬ ‫اﻟﻤﺸﺮوع اﻟﻔﺎﺋﺰ ﺑﺎﻟﻤﺮﻛﺰ‬


‫ﻣﺸﺎرﻳﻊ اﻷﻋﻀﺎء اﻟﻤﻤﻴﺰة ‪ ‬‬
‫ﻟﻘﻄﺎت وﺻﻮر ﻣﻦ اﻟﻤﺸﺮوع‪:‬‬

‫‪ ‬‬

‫ﻟﻘﻄﺎت وﺻﻮر ﻣﻦ اﻟﺒﺮﻧﺎﻣﺞ‪:‬‬

‫أﻟﻒ أﻟﻒ ﻣﺒﺮوك و إﻟﻰ اﻷﻣﺎم ‪ ...‬و رﻓﻊ و أﻋﺰ اﷲ ﺑﻜﻢ و ﺑﺄﻣﺜﺎﻟﻜﻢ أﻣﺔ اﻹﺳﻼم‬

‫‪112‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫‪ ‬‬

‫ﻣﺴﺎﺑﻘﺔ ال‪ ACM‬اﻷوﻟﻰ و ﻧﺘـﺎﺋﺠﻬﺎ‪Isomorphic Numbers :‬‬


‫ﻣﺴﺎﺑﻘﺔ ال‪ ACM‬اﻟﻌﺎﻟﻤﻴﺔ اﻟﺠﺎﻣﻌﻴﺔ ﻟﻠﺒﺮﻣﺠﺔ‪.‬‬
‫اﻟﻤﺴﺎﺑﻘﺔ اﻹﻗﻠﻴﻤﻴﺔ اﻟﺴﺎدﺳﺔ ﻟﻠﺪول اﻟﻌﺮﺑﻴﺔ و دول ﺷﻤﺎل إﻓﺮﻳﻘﻴﺎ‪.‬‬
‫ﺟﺎﻣﻌﺔ اﻟﻜﻮﻳﺖ ‪ ،‬ﻛﺎﻧﻮن اﻷول ‪ /‬دﻳﺴﻤﺒﺮ ‪.2003‬‬
‫ﺷﺮح ﻧﻘﻮل ﻋﻦ ﻋﺪدان ﻃﺒﻴﻌﻴﺎن ﻋﺸﺮﻳﺎن ﻣﻦ دون ﺑﺎدﺋﺔ ‪ - 0‬أﻧﻬﻤﺎ ﻣﺘﻤﺎﺛﻼن إذا وﻓﻘﻂ إذا ﻛﺎﻧﺎ ﻳﻤﻠﻜﺎن‬
‫ﻧﻔﺲ اﻟﻌﺪد ﻣﻦ اﻷرﻗﺎم و ﻧﻔﺲ ﻧﻤﻂ ﺗﻮزﻳﻊ اﻷرﻗﺎم ﻓﻲ اﻟﻤﻮاﺿﻊ دون اﻷﺧﺬ ﻓﻲ ﻋﻴﻦ اﻻﻋﺘﺒﺎر ﻗﻴﻢ اﻷرﻗﺎم‪.‬‬
‫إﻋﺪاد‬ ‫ﻛﺄﻣﺜﻠﺔ‪ ،‬اﻷرﻗﺎم اﻟﺘﺎﻟﻴﺔ ﻣﺘﻤﺎﺛﻠﺔ ﻣﺜﻨﻰ ﻣﺜﻨﻰ‪ 48412 ،51590 ،73748 ،12156 :‬ﻷﻧﻪ ﻓﻲ ﻛﻞ‬
‫ﻣﺤﻤﺪ ﺟﻤﺎل‬ ‫ﻋﺪد ﻣﻦ اﻷﻋﺪاد اﻟﺴﺎﺑﻘﺔ‪ ،‬اﻟﺮﻗﻢ اﻷول و اﻟﺮﻗﻢ اﻟﺜﺎﻟﺚ )ﻣﻦ اﻟﻴﺴﺎر إﻟﻰ اﻟﻴﻤﻴﻦ( ﻫﻮ ﻧﻔﺴﻪ ﺑﻐﺾ اﻟﻨﻈﺮ إن‬
‫اﻟﺪﻳﻦ‬ ‫ﻛﺎن ﻫﻮ ﻧﻔﺴﻪ ﻓﻲ اﻷﻋﺪاد اﻷﺧﺮى و ﻧﻔﺲ اﻟﺸﻲء ﻟﺒﻘﻴﺔ اﻷرﻗﺎم اﻟﺘﻲ ﺗﺸﻐﻞ اﻟﻤﻮاﺿﻊ اﻟﻤﺘﺒﻘﻴﺔ‪ .‬اﻷﻋﺪاد‬
‫اﻟﺘﺎﻟﻴﺔ أﻳﻀﺎ ﻣﺘﻤﺎﺛﻠﺔ ‪ .341453 ،578715 ،237392‬أﻣﺎ ﻫﺬه اﻷﻋﺪاد ﻓﻠﻴﺴﺖ ﻣﺘﻤﺎﺛﻠﺔ‪222 :‬‬
‫ﺗﺘﻤﺔ ﺻﻔﺤﺔ ‪114‬‬ ‫‪....66، 811، 776، 545،‬‬

‫ﺻﻔﺤﺔ ‪115‬‬ ‫اﻟﻨـﺘــﺎﺋـﺞ‬


‫ﺻﻔﺤﺔ ‪116‬‬ ‫اﻟﺸﻔﺮة اﻟﻤﺼﺪرﻳﺔ ﻟﻠﺤﻞ اﻟﻔﺎﺋﺰ ﺑﺎﻟﻤﺴﺎﺑﻘﺔ‬

‫ﻣﺴﺎﺑﻘﺔ ال‪ ACM‬اﻟﺜﺎﻧﻴﺔ‪ :‬ﺣﺴﺎب ﻣﺠﻤﻮع ﻟﻌﺒﺔ اﻟﺒﻮﻟﻴﻨﺞ‬


‫اﻟﺴﻼم ﻋﻠﻴﻜﻢ ورﺣﻤﺔ اﷲ وﺑﺮﻛﺎﺗﻪ‪....‬‬
‫ﺟﻤﻴﻌﻨﺎ ﻳﻌﺮف ﻟﻌﺒﺔ اﻟﺒﻮﻟﻴﻨﺞ اﻟﻤﺸﻬﻮرة ‪ ،‬واﻟﻜﺜﻴﺮ ﻣﻨﺎ ﺟﺮب ﻟﻌﺒﻬﺎ ﻣﻦ ﻗﺒﻞ ‪ ،‬واﻟﻜﺜﻴﺮ أﻳﻀﺎ ﻳﻌﺮف‬
‫اﻟﻘﻮاﻋﺪ اﻟﺨﺎﺻﺔ ﺑﻬﺎ ‪ ...‬وﻟﻜﻦ ﻻ ﻣﺎﻧﻊ ﻣﻦ إﻋﺎدة اﻟﺘﺬﻛﻴﺮ ﺑﻬﺬه اﻟﻠﻌﺒﺔ ﻣﺮة أﺧﺮى‪.‬‬
‫إﻋﺪاد‬
‫‪ -‬ﺗﻌﺘﻤﺪ اﻟﻠﻌﺒﺔ ﻋﻠﻰ وﺟﻮد ﻛﺮة ﻳﺘﻢ ﺑﻮاﺳﻄﺘﻬﺎ إﺳﻘﺎط ﻋﺪد ‪ 10‬ﻣﻦ ال ‪ ، Pins‬ﺗﺘﻜﻮن اﻟﻠﻌﺒﺔ اﻟﻮاﺣﺪة‬
‫أﺣﻤﺪ ﺟﻤﺎل‬
‫ﻣﻦ ﻋﺸﺮ رﻣﻴﺎت ‪ ،‬ﻣﻊ ﻛﻞ رﻣﻴﺔ ﻫﻨﺎك ﻣﺤﺎوﻟﺘﺎن ﻹﺳﻘﺎط ﺟﻤﻴﻊ اﻟﻜﺮات‪.‬‬
‫‪ -‬ﻓﻴﻤﺎ ﻟﻮ ﺳﻘﻄﺖ ﺟﻤﻴﻊ ال ‪ pins 10‬ﻣﻦ اﻟﻤﺤﺎوﻟﺔ اﻷوﻟﻰ ﻻ ﻳﺘﻢ اﻟﻠﺠﻮء ﻟﻠﻤﺤﺎوﻟﺔ اﻟﺜﺎﻧﻴﺔ وﻳﺮﻣﺰ ﻟﻠﻌﺒﺔ‬
‫ب ‪.X‬‬
‫ﺗﺘﻤﺔ ﺻﻔﺤﺔ ‪119‬‬

‫ﺳﻴﺘﻢ اﻟﺒﺪء ﻓﻲ إﻋﻼن ﻣﺴﺎﺑﻘﺔ ﺷﻬﺮﻳﺔ ﻷﻓﻀﻞ‬


‫ﻣﻮﺿﻮع‪/‬ﻣﻘﺎل‪/‬درس ﺧﻼل اﻟﺸﻬﺮ ‪ ،‬ﻳﺘﻢ ﺗﻜﺮﻳﻢ ﺻﺎﺣﺐ اﻟﻤﻘﺎل‬
‫ﺑﻤﻜﺎﻓﺄة رﻣﺰﻳﺔ ﻗﺪرﻫﺎ ‪ 100‬رﻳﺎل ﺳﻌﻮدي واﻟﺒﺎب ﻣﻔﺘﻮح‬
‫ﻟﺠﻤﻴﻊ اﻷﻋﻀﺎء واﻟﻤﺸﺮﻓﻴﻦ وﻛﺒﺎر اﻟﺸﺨﺼﻴﺎت ﻣﺎ ﻋﺪا اﻟﻤﺸﺮف‬
‫اﻟﻌﺎم ‪ ،‬أول ﺟﺎﺋﺰة ﺳﺘﻤﻨﺢ ﻋﻦ ﺷﻬﺮ ﻳﻨﺎﻳﺮ إن ﺷﺎء اﷲ وﻳﺘﻢ‬
‫ﻗﻔﻞ ﺑﺎب اﻟﻤﺸﺎرﻛﺎت ﻳﻮم ‪ 28‬ﻣﻦ اﻟﺸﻬﺮ ﻟﻔﺘﺢ اﻟﺒﺎب‬
‫ﻟﻠﺘﺼﻮﻳﺖ ﻟﻤﺪة ﻳﻮﻣﻴﻦ واﻟﺬي ﺳﻴﺸﻜﻞ ‪ %20‬ﻣﻦ ﻧﺘﻴﺠﺔ‬
‫اﻟﻤﺴﺎﺑﻘﺔ ‪ ،‬ﻓﻴﻤﺎ ﺗﺨﻀﻊ ال ‪ %80‬اﻟﻤﺘﺒﻘﻴﺔ ﻟﻠﺠﻨﺔ ﺗﺤﻜﻴﻢ ‪ ،‬ﻻ‬
‫ﻳﺸﺘﺮط أي ﻣﺠﺎل ﻟﻠﻤﻘﺎل اﻟﻔﺎﺋﺰ ﻛﻞ ﺷﻬﺮ ‪.‬‬

‫اﻟﻤﺴﺎﺑﻘﺎت اﻟﺸﻬﺮﻳﺔ ﻟﻤﻮﻗﻊ ﻓﻴﺠﻮال ﺑﻴﺴﻚ ﻟﻠﻌﺮب و ﻧﺘﺎﺋﺠﻬﺎ‬


‫ﻣﻦ ﻗﺴﻢ ﻣﺴﺎﺑﻘﺎت اﻟﻤﻨﺘﺪى‬
   

   
Isomorphic Numbers :‫ اﻷوﻟﻰ‬ACM‫ﻣﺴﺎﺑﻘﺔ ال‬
  ‫إﻋﺪاد ﻣﺤﻤﺪ ﺟﻤﺎل اﻟﺪﻳﻦ‬
ACM International Collegiate Programming Contest .‫ اﻟﻌﺎﻟﻤﻴﺔ اﻟﺠﺎﻣﻌﻴﺔ ﻟﻠﺒﺮﻣﺠﺔ‬ACM‫ﻣﺴﺎﺑﻘﺔ ال‬
Arab and North Africa Sixth Regional Contest .‫اﻟﻤﺴﺎﺑﻘﺔ اﻹﻗﻠﻴﻤﻴﺔ اﻟﺴﺎدﺳﺔ ﻟﻠﺪول اﻟﻌﺮﺑﻴﺔ و دول ﺷﻤﺎل إﻓﺮﻳﻘﻴﺎ‬
Kuwait University, December 2003 .2003 ‫ دﻳﺴﻤﺒﺮ‬/ ‫ آﺎﻧﻮن اﻷول‬، ‫ﺟﺎﻣﻌﺔ اﻟﻜﻮﻳﺖ‬
‫ﻋﺮﺑﻲ‬ ‫ﻧﺺ اﻟﻤﺴﺎﺑﻘﺔ‬ ‫ﻋﺮﺑﻲ‬
Description ‫ﺷﺮح‬
Two positive decimal integers without any leading zeros will be
called isomorphic if they are composed of the same number of ‫ أﻧﻬﻤﺎ‬- 0 ‫ﻧﻘﻮل ﻋﻦ ﻋﺪدان ﻃﺒﻴﻌﻴﺎن ﻋﺸﺮﻳﺎن – ﻣﻦ دون ﺑﺎدﺋﺔ‬
digits and same digit-repetition pattern (regardless of the value ‫ﻣﺘﻤﺎﺛﻼن إذا وﻓﻘﻂ إذا آﺎﻧﺎ ﻳﻤﻠﻜﺎن ﻧﻔﺲ اﻟﻌﺪد ﻣﻦ اﻷرﻗﺎم و ﻧﻔﺲ ﻧﻤﻂ‬
of the digits.). .‫ﺗﻮزﻳﻊ اﻷرﻗﺎم ﻓﻲ اﻟﻤﻮاﺿﻊ دون اﻷﺧﺬ ﻓﻲ ﻋﻴﻦ اﻻﻋﺘﺒﺎر ﻗﻴﻢ اﻷرﻗﺎم‬
For example, all of the following numbers are isomorphic to ،73748 ،12156 :‫ اﻷرﻗﺎم اﻟﺘﺎﻟﻴﺔ ﻣﺘﻤﺎﺛﻠﺔ ﻣﺜﻨﻰ ﻣﺜﻨﻰ‬،‫آﺄﻣﺜﻠﺔ‬
each other: 12156, 73748, 51590, 48412 since in each
individual number, the first and the third positions are occupied ‫ اﻟﺮﻗﻢ اﻷول و‬،‫ ﻷﻧﻪ ﻓﻲ آﻞ ﻋﺪد ﻣﻦ اﻷﻋﺪاد اﻟﺴﺎﺑﻘﺔ‬48412 ،51590
by the same digit, and all the other positions have distinct digits ‫اﻟﺮﻗﻢ اﻟﺜﺎﻟﺚ )ﻣﻦ اﻟﻴﺴﺎر إﻟﻰ اﻟﻴﻤﻴﻦ( هﻮ ﻧﻔﺴﻪ ﺑﻐﺾ اﻟﻨﻈﺮ إن آﺎن هﻮ‬
(which are also distinct from the digit in positions 1 and 3). ‫ﻧﻔﺴﻪ ﻓﻲ اﻷﻋﺪاد اﻷﺧﺮى و ﻧﻔﺲ اﻟﺸﻲء ﻟﺒﻘﻴﺔ اﻷرﻗﺎم اﻟﺘﻲ ﺗﺸﻐﻞ‬
The following numbers are also isomorphic to each other: ،578715 ،237392 ‫ اﻷﻋﺪاد اﻟﺘﺎﻟﻴﺔ أﻳﻀﺎ ﻣﺘﻤﺎﺛﻠﺔ‬.‫اﻟﻤﻮاﺿﻊ اﻟﻤﺘﺒﻘﻴﺔ‬
237392, 578715, 341453. All of the following numbers are pair- 811، 776، 545، 222 :‫ أﻣﺎ هﺬﻩ اﻷﻋﺪاد ﻓﻠﻴﺴﺖ ﻣﺘﻤﺎﺛﻠﺔ‬.341453
wise not isomorphic: 222, 545, 776, 811, 66.
The set of numbers that are isomorphic to each other will be
.66،
called an isoset. For example, the numbers: 11, 22, 33, 44, 55, ‫ﻧﺴﻤﻲ اﺻﻄﻼﺣﺎ ﻣﺠﻤﻮﻋﺔ اﻷﻋﺪاد اﻟﺘﻲ ﻟﻬﺎ ﻧﻔﺲ اﻟﻄﻮل و ﺗﻜﻮن‬
66, 77, 88, 99 form an isoset with cardinality 9 (number of ،11 :2 ‫ ﺧﺬ ﺟﻤﻴﻊ اﻷﻋﺪاد اﻟﺘﻲ ﻟﻬﺎ اﻟﻄﻮل‬،‫ آﻤﺜﺎل‬.isoset‫ﻣﺘﻤﺎﺛﻠﺔ ﺑﺎل‬
elements in the set). Any number is a member of exactly one isoset ‫ هﻲ ﺗﺸﻜﻞ ﻣﺠﻤﻮﻋﺔ‬99 ،88 ،77 ،66 ،55 ،44 ،33 ،22
isoset. ‫ إذا أﺧﺬت أي ﻋﺪد ﻣﻬﻤﺎ آﺎن‬9 = (‫ﻋﺪد ﻋﻨﺎﺻﺮهﺎ )أﺻﻠﻲ اﻟﻤﺠﻤﻮﻋﺔ‬
A company wants to make use of isomorphic numbers in
.‫ وﺣﻴﺪة‬isoset ‫ﻃﻮﻟﻪ ﻓﺎﻧﻪ ﻳﻨﺘﻤﻲ إﻟﻰ ﻣﺠﻤﻮﻋﺔ‬
classifying its clients into groups. Each client is given a unique ‫ﺗﺮﻳﺪ ﺷﺮآﺔ أن ﺗﻘﻮم ﺑﺘﺼﻨﻴﻒ زﺑﺎﺋﻨﻬﺎ إﻟﻰ ﻣﺠﻤﻮﻋﺎت ﺑﺎﺳﺘﻌﻤﺎل‬
id number (a decimal positive number less than 1,000,000,000.) ‫ آﻞ زﺑﻮن ﻣﻌﺮف ﺑﻤﻔﺘﺎح أﻗﻞ ﻣﻦ‬،‫ﺧﺎﺻﻴﺔ اﻷﻋﺪاد اﻟﻤﺘﻤﺎﺛﻠﺔ‬
Any two clients within the same group are given id numbers ‫ ﺣﻴﺚ آﻞ زﺑﻮﻧﻴﻦ ﻳﻨﺘﻤﻴﺎن إﻟﻰ ﻧﻔﺲ اﻟﻤﺠﻤﻮﻋﺔ ﻳﻜﻮن‬1.000.000.000
that are isomorphic to each other. The company hires you to .‫ﻟﻬﻤﺎ ﻣﻔﺘﺎﺣﻴﻦ ﻣﺘﻤﺎﺛﻠﻴﻦ أي ﻳﻨﺘﻤﻴﺎن إﻟﻰ ﻧﻔﺲ ﻣﺠﻤﻮﻋﺔ اﻷﻋﺪاد اﻟﻤﺘﻤﺎﺛﻠﺔ‬
write a program that will do two things:
1. Given two numbers, determine if the numbers are isomorphic
:‫اﻟﺸﺮآﺔ ﺗﺮﻳﺪ ﻣﻨﻚ آﺘﺎﺑﺔ ﺑﺮﻧﺎﻣﺞ ﻳﻘﻮم ﺑﺄﻣﺮﻳﻦ‬
or not. .‫ ﻣﻌﺮﻓﺔ إن آﺎن ﻋﺪدان آﻴﻔﻴﺎن ﻣﺘﻤﺎﺛﻼن أو ﻻ‬.1
2. Given a number x, determine the cardinality of its isoset. ‫ اﻟﺬي‬isoset‫ ﻓﺎﻧﻪ ﻳﻌﻮد ﻟﻚ ﺑﻌﺪد ﻋﻨﺎﺻﺮ ال‬،‫ إذا أﻋﻄﻴﺘﻪ ﻋﺪد آﻴﻔﻲ‬.2
.‫ﻳﻨﺘﻤﻲ إﻟﻴﻬﺎ‬
Input Format
The program accepts a list of one or more commands. Each
:‫ﻧﺴﻖ إدﺧﺎل اﻟﺒﻴﺎﻧﺎت‬
command is specified on a separate line. Possible commands ‫ آﻞ أﻣﺮ ﻳﻜﻮن ﻣﻜﺘﻮﺑﺎ ﻓﻲ‬،‫اﻟﺒﺮﻧﺎﻣﺞ ﻳﻘﺒﻞ ﻗﺎﺋﻤﺔ ﻣﻦ أﻣﺮ أو أآﺜﺮ‬
are: :‫ اﻷواﻣﺮ اﻟﻤﺤﺘﻤﻠﺔ هﻲ‬،‫ﺳﻄﺮ ﻣﺴﺘﻘﻞ‬
VERIFY x y Test if numbers x and y are isomorphic or not. ‫ﻟﻤﻌﺮﻓﺔ إن آﺎن اﻟﻌﺪدان ﻣﺘﻤﺎﺛﻼن‬VERIFY x y :
SIZE x Print the cardinality of the isoset x is a member of.
QUIT Exit the program. ‫ﻃﺒﺎﻋﺔ ﻋﺪد ﻋﻨﺎﺻﺮ اﻟﻤﺠﻤﻮﻋﺔ اﻟﺘﻲ ﻳﻨﺘﻤﻲ إﻟﻴﻬﺎ اﻟﻌﺪد‬SIZE x :
Commands are always uppercase words. ‫ﻟﻠﺨﺮوج ﻣﻦ اﻟﺒﺮﻧﺎﻣﺞ‬QUIT :
.‫ﺟﻤﻴﻊ اﻷواﻣﺮ ﺗﻜﺘﺐ ﺑﺎﻷﺣﺮف اﻟﻼﺗﻴﻨﻴﺔ اﻟﻜﺒﻴﺮة‬
Output Format :‫ﻧﺴﻖ اﻟﻤﺨﺎرج‬
For a VERIFY x y command, your program should output a line
of the form: k.[space] result ‫ ﺳﻴﻘﻮم ﺑﺮﻧﺎﻣﺠﻚ ﺑﻄﺒﺎﻋﺔ ﺳﻄﺮ ﺑﺎﻟﺘﻨﺴﻴﻖ‬VERIFY x y ‫ﺑﺎﻟﻨﺴﺒﺔ ﻟﻸﻣﺮ‬
where result is ’true’ (without the quotes,) if x and y are ‫ هﻮ رﻗﻢ اﻟﺴﻄﺮ ﻓﻲ ﻗﺎﺋﻤﺔ‬k ‫ ﺣﻴﺚ‬k.[space] result :‫اﻟﺘﺎﻟﻲ‬
isomorphic, ’false’ otherwise. k is the input line number of the ‫ هﻲ اﻟﻨﺘﻴﺠﺔ و ﺗﻜﻮن‬result ‫[ ﻣﺴﺎﻓﺔ ﺑﻴﻀﺎء و‬space] ،‫اﻟﻤﺪﺧﻼت‬
command. is a single space character. For the SIZE x command, .false ‫ إن آﺎن اﻟﻌﺪدان ﻣﺘﻤﺎﺛﻼن وإﻻ‬true
your program should print: k.[space] c Where c is the
cardinality. :‫ ﻋﻠﻰ ﺑﺮﻧﺎﻣﺠﻚ ﻃﺒﺎﻋﺔ ﺳﻄﺮ ﺑﺎﻟﺘﻨﺴﻴﻖ اﻟﺘﺎﻟﻲ‬SIZE x ‫ﺑﺎﻟﻨﺴﺒﺔ ﻟﻸﻣﺮ‬
.isoset‫ هﻮ أﺻﻠﻲ )ﻋﺪد ﻋﻨﺎﺻﺮ( ال‬c ‫ ﺣﻴﺚ‬k.[space] c
Sample Input :‫اﻟﻤﺪﺧﻼت‬
VERIFY 1121321 5545645 VERIFY 1121321 5545645
VERIFY 1111 1112 VERIFY 1111 1112
SIZE 11 SIZE 11
QUIT QUIT
:‫اﻟﻤﺨﺎرج‬
OUTPUT 1. true
1. true 2. false
2. false 3. 9
3. 9 A.
A.

114
2008 ‫ ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ‬/ ‫ ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ‬01 ‫اﻟﻌﺪد‬ vb4arab.com ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ‬
‫‪ ‬‬ ‫‪ ‬‬

‫ﻣﺴﺎﺑﻘﺔ ال‪ ACM‬اﻷوﻟﻰ‪Isomorphic Numbers :‬‬


‫إﻋﺪاد ﻣﺤﻤﺪ ﺟﻤﺎل اﻟﺪﻳﻦ‬
‫ﻣﺪة اﻟﻤﺴﺎﺑﻘﺔ ‪ :‬ﻳﻮﻣﺎن و ﺗﻢ ﺗﻤﺪﻳﺪهﺎ إﻟﻰ أﺳﺒﻮع‪.‬‬
‫هﻨﺎك ‪ 8‬أرﻗﺎم ﻣﻤﻜﻨﺔ ﻟﻠﺮﻣﺰ ‪ C,‬و ﺑﺎﻟﺘﺎﻟﻲ ﺑﻘﻲ ‪ 7‬أرﻗﺎم ﻣﻤﻜﻨﺔ ﻟﻠﺮﻣﺰ‬
‫اﻟﺘﺎﻟﻲ‪.‬‬
‫ﻃﺮﻳﻘﺔ اﻟﺘﺤﻜﻴﻢ‪ :‬ﻳﺘﻢ اﺧﺘﻴﺎر اﻟﺤﻞ اﻟﻔﺎﺋﺰ ﺣﺴﺐ ﺳﺮﻋﺔ ﺗﻨﻔﻴﺬ اﻟﺸﻔﺮة‪،‬‬
‫هﻨﺎك ‪ 7‬أرﻗﺎم ﻣﻤﻜﻨﺔ ﻟﻠﺮﻣﺰ ‪ D,‬و ﺑﺎﻟﺘﺎﻟﻲ ﺑﻘﻲ ‪ 6‬أرﻗﺎم ﻣﻤﻜﻨﺔ ﻟﻠﺮﻣﺰ‬
‫اﻟﺘﺎﻟﻲ‪.‬‬ ‫ﺗﻜﺘﺐ اﻟﺸﻔﺮات ﺑﺈﺣﺪى ﻟﻐﺎت اﻟﺪوت ﻧﺖ‪.‬‬
‫و ﺑﺎﻟﺘﺎﻟﻲ ﻓﻌﺪد اﻟﻌﻨﺎﺻﺮ اﻟﻜﻠﻲ هﻮ‪7 * 8 * 9 * 9 :‬‬
‫ﻻﺣﻆ أن آﻞ ﻣﺠﻤﻮﻋﺔ أﻋﺪاد ﻣﺘﺸﺎﺑﻬﺔ ﻟﻬﺎ ﻧﻤﻮذج ‪ pattern‬ﻣﻌﻴﻦ ﻳﺪل‬ ‫اﻟﻤﺸﺘﺮﻛﻮن ﻓﻲ اﻟﻤﺴﺎﺑﻘﺔ ﺣﺴﺐ ﺗﺎرﻳﺦ ارﺳﺎل اﻟﻤﺸﺎرﻛﺎت‪:‬‬
‫ﻋﻠﻰ ﺷﻜﻞ اﻷﻋﺪاد ﺿﻤﻦ هﺬﻩ اﻟﻤﺠﻤﻮﻋﺔ ‪(ABA, ABCD,‬‬
‫)‪ ،ABBCAD, AA‬و ﻳﻤﻜﻨﻨﺎ ﻣﻌﺮﻓﺔ هﺬا اﻟﺸﻜﻞ ﻣﻦ آﻞ ﻋﺪد‪ ،‬أﻣﺜﻠﺔ‪:‬‬ ‫‪Athman ،Boutemine Oualid ،In4matrix‬‬
‫اﻟﻌﺪد ‪ 123‬ﻧﻤﻮذج ﻣﺠﻤﻮﻋﺘﻪ هﻮ‪ABC‬‬
‫اﻟﻌﺪد ‪ 1221‬ﻧﻤﻮذج ﻣﺠﻤﻮﻋﺘﻪ هﻮ‪ABBA‬‬ ‫اﻟﻨﺘﺎﺋﺞ‪ :‬اﻟﻔﺎﺋﺰ ﺑﻜﻞ ﺟﺪارة اﻷخ ‪ ،in4matrix‬أﺣﺴﻦ ﺣﻞ‪ ،‬أﺳﺮع وﻗﺖ‬
‫اﻟﻌﺪد ‪ 125351‬ﻧﻤﻮذج ﻣﺠﻤﻮﻋﺘﻪ هﻮ‪ABCDCA‬‬
‫ﺗﻨﻔﻴﺬ و اﻻﻟﺘﺰام اﻟﻜﺎﻣﻞ ﺑﻘﻮاﻋﺪ اﻟﻤﺴﺎﺑﻘﺔ‪.‬‬
‫و ﺳﻨﺴﺘﻔﻴﺪ ﻣﻦ هﺬﻩ اﻟﻤﻼﺣﻈﺔ ﻻﺣﻘًﺎ‪..‬‬
‫ﺣﻞ اﻟﻔﺎﺋﺰ ﺑﺎﻟﻤﺴﺎﺑﻘﺔ‪:‬‬
‫ﺣﻞ اﻟﻄﻠﺒﺎت‪:‬‬
‫اﻟﺴﻼم ﻋﻠﻴﻜﻢ و رﺣﻤﺔ اﷲ و ﺑﺮآﺎﺗﻪ‬
‫‪ .1‬ﻫﻞ اﻟﻌﺪدان ‪ x, y‬ﻣﺘﺸﺎﺑﻬﺎن؟‬ ‫أﺷﻜﺮ اﻷخ ﻣﺤﻤﺪ ﺟﻤﺎل و ﻣﻨﺘﺪاﻧﺎ اﻟﻌﺰﻳﺰ ﻋﻠﻰ هﺬﻩ اﻟﻤﺴﺎﺑﻘﺎت و اﻟﺤﻤﺪ‬
‫ﷲ‪.‬‬
‫ﺑﺒﺴﺎﻃﺔ ﻳﻤﻜﻨﻨﺎ ﻣﻘﺎرﻧﺔ ﻧﻤﻮذج ﻣﺠﻤﻮﻋﺔ اﻟﻌﺪد اﻷول ﻣﻊ‬ ‫اﻟﻐﺎﻳﺔ أﺧﻮاﻧﻲ ﻣﻦ هﺬﻩ اﻟﻤﺴﺎﺑﻘﺔ هﻲ اﻻﺳﺘﻔﺎدة اﻟﻤﺸﺘﺮآﺔ ﻟﻠﺠﻤﻴﻊ ﻟﺬا‬
‫ﻧﻤﻮذج ﻣﺠﻤﻮﻋﺔ اﻟﻌﺪد اﻟﺜﺎﻧﻲ ﻓﺈن ﺗﻄﺎﺑﻖ اﻟﻨﻤﻮذﺟﺎن ﻓﺎﻟﺮﻗﻤﺎن ﻳﻨﺘﻤﻴﺎن‬ ‫ﺳﺄﺷﺮح ﻟﻜﻢ ﻃﺮﻳﻘﺔ اﻟﺤﻞ‪:‬‬
‫ﻟﻨﻔﺲ اﻟﻤﺠﻤﻮﻋﺔ و ﺑﺎﻟﺘﺎﻟﻲ هﻤﺎ ﻣﺘﺸﺎﺑﻬﺎن‪.‬‬ ‫دﻋﻮﻧﻲ أﻃﺮح اﻟﻤﺴﺄﻟﺔ ﺑﺸﻜﻞ رﻳﺎﺿﻲ‪:‬‬
‫ﻟﻴﻜﻦ ﻟﺪﻳﻨﺎ اﻟﻌﺪدﻳﻦ اﻟﻄﺒﻴﻌﻴﻴﻦ ‪) x, y‬ﻃﺒﻴﻌﻴﻴﻦ = ﺻﺤﻴﺤﻴﻦ‬
‫‪ .2‬ﻣﺎ ﻫﻮ ﻋﺪد ﻋﻨﺎﺻﺮ اﻟﻤﺠﻤﻮﻋﺔ اﻟﺘﻲ ﻳﻨﺘﻤﻲ ﻟﻬﺎ اﻟﻌﺪد ‪ x‬؟‬ ‫ﻣﻮﺟﺒﻴﻦ(‪ ،‬ﻧﻘﻮل ﻋﻦ اﻟﻌﺪدﻳﻦ أﻧﻬﻤﺎ ﻣﺘﻤﺎﺛﻠﻴﻦ إذا آﺎن‪:‬‬
‫أ‪ .‬ﻃﻮل اﻟﻌﺪد = ‪ x‬ﻃﻮل اﻟﻌﺪد) ‪ y‬ﻃﻮل اﻟﻌﺪد = ﻋﺪد أرﻗﺎﻣﻪ(‪.‬‬
‫ﺑﻌﺪ ﺗﺤﺪﻳﺪ ﻧﻤﻮذج ﻣﺠﻤﻮﻋﺔ هﺬا اﻟﻌﺪد ﻳﻤﻜﻨﻨﺎ اﻧﻄﻼﻗًﺎ ﻣﻦ هﺬا‬ ‫ب‪ .‬إذا آﺎن هﻨﺎك رﻗﻢ ﻣﺘﻜﺮر أآﺜﺮ ﻣﻦ ﻣﺮة ﻓﻲ اﻟﻌﺪد‪ ، x‬ﻓﻬﻨﺎك رﻗﻢ‬
‫اﻟﻨﻤﻮذج ﺣﺴﺎب ﻋﺪد ﻋﻨﺎﺻﺮ هﺬﻩ اﻟﻤﺠﻤﻮﻋﺔ آﻤﺎ ﺷﺮﺣﻨﺎ ﺳﺎﺑﻘًﺎ‪..‬‬ ‫ﻣﺘﻜﺮر أآﺜﺮ ﻣﻦ ﻣﺮة ﻓﻲ اﻟﻌﺪد ‪ y‬و ﺑﻨﻔﺲ أﻣﺎآﻦ اﻟﺨﺎﻧﺎت‪.‬‬
‫و ﺑﻬﺬا ﻧﻜﻮن ﻗﺪ ﺣﻠﻠﻨﺎ اﻟﻤﺴﺄﻟﺔ و إﻟﻴﻜﻢ اﻟﻜﻮد ﻋﻠﻤًﺎ أﻧﻲ آﺘﺒﺘﻪ ﺑﺎﻟﺴﻲ‬ ‫أﻣﺜﻠﺔ‪:‬‬
‫ﺷﺎرب ‪ -‬و ﻟﻜﻦ ﻻ ﺗﺠﺰع ﻓﻴﻤﻜﻨﻚ ﻗﺮاءﺗﻪ و ﻓﻬﻤﻪ إذا آﻨﺖ ﺗﻌﺮف‬ ‫‪ 12221 - 13331- 25552 - 26662‬ﻻﺣﻆ أن ﻧﻤﻮذج اﻷرﻗﺎم‬
‫ﻓﻴﺠﻮال ﺑﻴﺴﻚ دوت ﻧﺖ ﻓﻘﻂ ﺣﺎول و ﺳﺘﺮى!‬ ‫اﻟﺴﺎﺑﻘﺔ هﻮ ”‪: “ABBBA‬ﻣﻬﻤﺎ آﺎن ‪ ، A, B‬ﻃﺒﻌًﺎ ﺷﺮط أن ﻻ‬
‫و ﻣﻦ ﻟﺪﻳﻪ ﺳﺆال أو ﺗﺼﻮﻳﺐ ﻓﺄﻧﺎ ﺟﺎهﺰ‪..‬‬ ‫ﻳﺘﺴﺎوﻳﺎ‪.‬‬
‫ﺗﺤﻴﺎﺗﻲ‬ ‫‪ 1214 - 2528 - 2529 - 5451‬ﻧﻤﻮذج اﻷرﻗﺎم اﻟﺴﺎﺑﻘﺔ هﻮ ‪:‬‬
‫ﻣﺤﻤﺪ ‪in4matrix‬‬ ‫”‪ “ABAC‬ﻣﻬﻤﺎ ﻳﻜﻦ ‪. A, B, C‬‬
‫‪ 8899 - 2255 - 0044‬ﻟﻴﺴﺖ آﻠﻬﺎ ﻣﺘﻤﺎﺛﻠﺔ إذ ﻻ ﻳﺠﻮز أن ﻧﺒﺪأ أي‬
‫ﺑﻌﺾ اﻟﻬﻔﻮات اﻟﺘﻲ وﻗﻊ ﻓﻴﻬﺎ ﺑﻘﻴﺔ اﻟﻤﺸﺎرﻛﻴﻦ‪:‬‬ ‫ﻋﺪد ﺑﺼﻔﺮ ﺣﺴﺐ اﻟﻘﻮاﻋﺪ ”‪ “without any leading zeros‬و ﻟﺬا‬
‫ﻓﻠﻴﺴﺖ آﻞ اﻷﻋﺪاد اﻟﺴﺎﺑﻘﺔ ﻣﺘﻤﺎﺛﻠﺔ‪.‬‬
‫اﻷخ وﻟﻴﺪ ﺑﻮاﻟﻄﻤﻴﻦ ‪ Boutemine  Oualid‬ﻟﻢ ﻳﻌﺘﻤﺪ ﻋﻠﻰ‬ ‫هﻨﺎك ﺷﻲء ﺁﺧﺮ‪ ،‬ﺟﻤﻴﻊ اﻷﻋﺪاد اﻟﺘﻲ هﻲ ﻣﺘﻤﺎﺛﻠﺔ ﻓﻴﻤﺎ ﺑﻴﻨﻬﺎ ﺗﺸﻜﻞ‬
‫ﻣﺠﻤﻮﻋﺔ ﺗﺴﻤﻰ‪ ، isoset‬آﻤﺎ ﻧﻄﻠﻖ ﻋﻠﻰ ﻋﺪد ﻋﻨﺎﺻﺮ هﺬﻩ اﻟﻤﺠﻤﻮﻋﺔ‬
‫ﻃﺮﻳﻘﺔ اﻟﺘﺮﺗﻴﺒﺎت اﻟﻤﺴﺘﺨﺪﻣﺔ ﻓﻲ ﺣﻞ اﻟﻔﺎﺋﺰ ﺑﻞ اﺳﺘﻌﻤﻞ ﻃﺮﻳﻘﺔ ﺗﻮﻟﻴﺪ‬
‫‪ ،cardinality‬أﻣﺜﻠﺔ‪:‬‬
‫ﺟﻤﻴﻊ اﻷﻋﺪاد اﻟﺘﻲ ﺗﻨﺘﻤﻲ إﻟﻰ ال‪ isoset‬اﻟﺨﺎص ﺑﺎﻟﻌﺪد اﻟﻤﻄﻠﻮب و‬ ‫‪ -‬اﻟﻤﺠﻤﻮﻋﺔ اﻟﺘﻲ ﻃﻮل اﻟﻌﺪد ﻓﻴﻬﺎ ‪ 3‬و ﻧﻤﻮذج اﻷﻋﺪاد ﻓﻴﻬﺎ ﻣﻦ اﻟﺸﻜﻞ‬
‫ﻣﻦ ﺛﻢ ﻳﻘﻮم ﺑﺎﺳﺘﻌﻤﺎل ﻋﺪاد و ﻳﻘﺎرن ﺟﻤﻴﻊ اﻻﺣﺘﻤﺎﻻت ﻣﻊ اﻟﻌﺪد‬ ‫)‪ (ABA‬ﺗﺘﻜﻮن ﻣﻦ‪-212-202.…141-131-121-101 :‬‬
‫اﻟﻤﻄﻠﻮب ﺣﺴﺎب ﻋﺪد ﻋﻨﺎﺻﺮ اﻟﻤﺠﻤﻮﻋﺔ اﻟﺘﻲ ﻳﻨﺘﻤﻲ إﻟﻴﻬﺎ و ذﻟﻚ‬ ‫‪989…919-909.…313-303.…232‬‬
‫ﺑﺎﺳﺘﻌﻤﺎل اﻟﺘﺮاﺟﻊ أو اﻟﺪوال اﻟﺘﺮدادﻳﺔ ‪ Recursivity‬و هﻲ ﻃﺮﻳﻘﺔ‬ ‫‪ -‬ﻧﻼﺣﻆ أن هﻨﺎك ﺗﺴﻊ أرﻗﺎم ﻣﻤﻜﻨﺔ ﻣﻜﺎن اﻟﺮﻣﺰ )‪ A (1..9‬ﺣﻴﺚ ﻻ‬
‫ﺑﻄﻴﺌﺔ ﺟﺪا ﺟﺪا ﺣﻴﺚ إذا ﻗﻤﻨﺎ ﺑﺤﺴﺎب ﺗﻌﻘﻴﺪهﺎ ‪ complexity‬ﺳﻨﺠﺪﻩ‬ ‫ﻳﻤﻜﻨﻨﺎ وﺿﻊ اﻟﺼﻔﺮ آﺄول ﺧﺎﻧﺔ ﻣﻦ اﻟﻴﺴﺎر آﻲ ﻻ ﻳﺒﺪأ اﻟﻌﺪد ﺑﺼﻔﺮ‪.‬‬
‫و هﻨﺎك ﺗﺴﻌﺔ أرﻗﺎم ﻣﻤﻜﻨﺔ ﻟﻠﺮﻣﺰ ‪ B‬ﺣﻴﺚ ﻻ ﻳﻤﻜﻨﻨﺎ وﺿﻊ اﻟﺮﻗﻢ اﻟﺬي‬
‫ﻋﻠﻰ اﻷﻗﻞ‪ :‬ﻃﻮل اﻟﻌﺪد ﺿﺮب ‪ 9‬اﺣﺘﻤﺎﻻت ﺑﺎﻹﺿﺎﻓﺔ إﻟﻰ أواﻣﺮ‬ ‫اﺧﺘﺮﻧﺎﻩ ﻟﻠﺮﻣﺰ ‪ A‬و ﺑﺎﻟﺘﺎﻟﻲ ﻓﻌﺪد اﻟﻌﻨﺎﺻﺮ هﻮ‪.81 = 9 * 9 :‬‬
‫اﻟﺘﺤﻜﻢ اﻟﺸﺮﻃﻴﺔ اﻟﺘﻲ ﺗﻀﻴﻒ ﺗﻌﻘﻴﺪ ﺁﺧﺮ ﺑﻴﻨﻤﺎ ﺣﻞ اﻷخ ‪in4matrix‬‬ ‫‪ -‬ﻟﻨﺤﺴﺐ ﻋﺪد ﻋﻨﺎﺻﺮ اﻟﻤﺠﻤﻮﻋﺔ اﻟﺘﻲ ﻃﻮل اﻟﻌﺪد ﻓﻴﻬﺎ ‪ 5‬و ﻧﻤﻮذج‬
‫ﺗﻌﻘﻴﺪﻩ أﻗﻞ ﺑﻜﺜﻴﺮ ‪ 9‬اﺣﺘﻤﺎﻻت ﻋﻠﻰ اﻷآﺜﺮ ‪ +‬ﻋﺪد اﻷواﻣﺮ اﻟﻌﻨﺼﺮﻳﺔ‬ ‫اﻷﻋﺪاد ﻓﻴﻬﺎ ﻣﻦ اﻟﺸﻜﻞ‪(ABCAD) :‬‬
‫اﻟﺒﺴﻴﻄﺔ‪ ،‬ﺗﻢ ﺗﻘﺪﻳﻢ ﺣﻞ اﻷخ ‪ Boutemine  Oualid‬ﺑﺎﺳﺘﻌﻤﺎل ﻟﻐﺔ‬ ‫هﻨﺎك ‪ 9‬أرﻗﺎم ﻣﻤﻜﻨﺔ ﻟﻠﺮﻣﺰ ‪ A,‬و ﺑﺎﻟﺘﺎﻟﻲ ﺑﻘﻲ ﻣﻦ‬
‫اﻷرﻗﺎم اﻟﻌﺸﺮة ‪ 9‬أرﻗﺎم ﻣﻤﻜﻨﺔ ﻟﻠﺮﻣﺰ اﻟﺘﺎﻟﻲ‪.‬‬
‫اﻟﺴﻲ ﺷﺎرب‪.‬‬
‫هﻨﺎك ‪ 9‬أرﻗﺎم ﻣﻤﻜﻨﺔ ﻟﻠﺮﻣﺰ ‪ B,‬و ﺑﺎﻟﺘﺎﻟﻲ ﺑﻘﻲ ‪8‬‬
‫ﺑﺎﻟﻨﺴﺒﺔ ﻟﻸخ ‪ Ahtman‬ﻟﻢ ﺗﺘﻮﻓﺮ ﻟﺪى ﻓﺮﻳﻖ ﺗﺤﺮﻳﺮ اﻟﻤﺠﻠﺔ‬ ‫أرﻗﺎم ﻣﻤﻜﻨﺔ ﻟﻠﺮﻣﺰ اﻟﺘﺎﻟﻲ‪.‬‬
‫ﻣﻌﻠﻮﻣﺎت آﺎﻓﻴﺔ و ﻗﺪ ﻗﺪم ﺣﻠﻪ ﺑﺎﺳﺘﻌﻤﺎل اﻟﻔﻴﺠﻮال ﺑﻴﺴﻚ ‪.‬ﻧﺖ‬

‫‪115‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
   

Isomorphic Numbers :‫ اﻷوﻟﻰ‬ACM‫ﻣﺴﺎﺑﻘﺔ ال‬


 

  ‫إﻋﺪاد ﻣﺤﻤﺪ ﺟﻤﺎل اﻟﺪﻳﻦ‬


‫اﻟﺸﻔﺮة اﻟﻤﺼﺪرﻳﺔ ﻟﻠﺤﻞ اﻟﻔﺎﺋﺰ ﺑﺎﻟﻤﺴﺎﺑﻘﺔ‬
//IsomorphicNumbers.cs
using System;
using System.IO;
namespace MohammadHi.VB4Arab.Contests{
public class IsomorphicNumbers{
private StreamReader input;
private StreamWriter output;
private bool stopFlag; // stop execution
public IsomorphicNumbers(String inputFilePath, String outputFilePath){
executeBatch(inputFilePath, outputFilePath);
}
// Summary: returns 'true' if 'number1' and 'number2' are members of the
same isoset.
//
private bool isIsomorphic(String number1, String number2){
if (number1.Length != number2.Length)
return false;
char nextMask = 'A';
char[] digitMasks1 = new char[10]; // unique mask for each digit
char[] digitMasks2 = new char[10];
for (int i = 0; i < number1.Length; i++){
int digit1 = number1[i] - '0';
int digit2 = number2[i] - '0';
if (digitMasks1[digit1] != digitMasks2[digit2])
return false;
if (digitMasks1[digit1] == '\0' && digitMasks2[digit2] == '\0'){
// we see these digits for the first time
digitMasks1[digit1] = nextMask; // assign a mask to
'digit1'
digitMasks2[digit2] = nextMask; // assign the same mask to
'digit2'
nextMask++;
}
}
return true;
}
//Summary:
//calculates the cardinality, witch is the number of elements in the isoset
//witch 'number' is a member of.
//the 1st distinct digit has these possibilities: ( 1, 2, ..., 6, 7, 8, 9)
//the 2nd distinct digit has 9 possibilities from (0, 1, 2, ..., 6, 7, 8, 9)
//the 3rd distinct digit has 8 possibilities from (0, 1, 2, ..., 6, 7, 8, 9)
//the 4th distinct digit has 7 possibilities from (0, 1, 2, ..., 6, 7, 8, 9)
//... and so on
private int calcCardinality(String number){
bool[] digitSeen = new bool[10];
int cardinality = 1;
int possibleNumbers = 10; // [0, 1, ..., 8, 9]
for (int i = 0; i < number.Length; i++){
int digit = number[i] - '0';
if (!digitSeen[digit]){
// we see this digit for the first time
digitSeen[digit] = true;
if (i == 0) cardinality *= possibleNumbers - 1; // the
first digit mustn't be zer0
else cardinality *= possibleNumbers;
possibleNumbers--;
}
}
return cardinality;
}

116
2008 ‫ ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ‬/ ‫ ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ‬01 ‫اﻟﻌﺪد‬ vb4arab.com ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ‬
     

Isomorphic Numbers :‫ اﻷوﻟﻰ‬ACM‫ﻣﺴﺎﺑﻘﺔ ال‬


 

  ‫إﻋﺪاد ﻣﺤﻤﺪ ﺟﻤﺎل اﻟﺪﻳﻦ‬


private void executeVerifyCommand(String[] args){
bool isomorphic = isIsomorphic(args[1], args[2]);
output.WriteLine(isomorphic ? "true" : "false");
}
private void executeSizeCommand(String[] args){
int cardinality = calcCardinality(args[1]);
output.WriteLine(cardinality);
}
private void executeQuitCommand(String[] args){
stopFlag = true;
}
private void executeCommand(String command){
String[] args = command.Split(' ');
switch (command[0]){
case 'V': // "VERIFY"
executeVerifyCommand(args);
break;
case 'S': // "SIZE"
executeSizeCommand(args);
break;
case 'Q': // "QUIT"
executeQuitCommand(args);
break;
}
}
public void executeBatch(String inputFilePath, String outputFilePath){
using (input = new StreamReader(inputFilePath)){
using (output = new StreamWriter(outputFilePath)){
String command;
int lineCounter = 0;
while (!stopFlag && (command = input.ReadLine()) != null){
output.Write(++lineCounter + ". ");
executeCommand(command);
}
output.Close();
}
input.Close();
}
}
}
}
 

//Program.cs
using System;
namespace MohammadHi.VB4Arab.Contests{
class Program{
static void Main(string[] args){
new IsomorphicNumbers().executeBatch("input.txt", "output.txt");
}
}
}

‫ﻟﺘﺤﻤﻴﻞ ﻣﻠﻒ اﻟﻤﺸﺮوع اﺿﻐﻂ ﻫﻨﺎ‬

‫ﻫﻨﻴﺌﺎ ﻟﻠﻔﺎﺋﺰ و ﻓﻲ اﻧﺘﻈﺎر اﻟﻤﺰﻳﺪ ﻣﻦ اﻟﻤﺸﺎرﻛﺎت ﻓﻲ اﻟﻤﺴﺎﺑﻘﺎت اﻟﻘﺎدﻣﺔ‬

117
2008 ‫ ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ‬/ ‫ ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ‬01 ‫اﻟﻌﺪد‬ vb4arab.com ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ‬
‫‪ ‬‬ ‫‪ ‬‬

‫‪ ACM‬اﻟﺜﺎﻧﻧﻴﺔ‪ :‬ﺣﺴ‬
‫ﻣﺴﺎﺑﺑﻘﺔ ال‪M‬‬
‫‪ ‬‬
‫ﺴﺎب ﻣﺠﻤﻮﻮع ﻟﻌﺒﺔ ااﻟﺒﻮﻟﻴﻨﺞ‬
‫‪ ‬‬ ‫إﻋﺪاد أﺣﻤﺪ ﺟﺟﻤﺎل‬
‫اﻟﺮﺣﻴﻢ‪.‬‬
‫ﻢ‬ ‫ﺑﺴﻢ اﷲ اﻟﺮﺣﻤﻦ‬

‫اﷲ وﺑﺮآﺎﺗﻪ‪.‬‬
‫ﻋﻠﻴﻜﻢ ورﺣﻤﺔ ﷲ‬
‫اﻟﺴﻼم ﻋ‬

‫ﺻﺔ ﺑﻬﺎ ‪ ...‬وﻟﻜﻜﻦ ﻻ ﻣﺎﻧﻊ ﻣﻦ إﻋﺎدة‬ ‫ﻣﻨﺎ ﺟﺮب ﻟﻌﺒﻬﺎ ﻣﻣﻦ ﻗﺒﻞ ‪ ،‬واﻟﻜﺜﻴﺜﻴﺮ أﻳﻀﺎ ف‬
‫ﻳﻌﺮف اﻟﻘﻮاﻋﺪ اﻟﺨﺎﺻ‬ ‫ﺟﻤﻴﻌﻨﺎ ﻳﻌﺮف ﻟﻌﺒﺔ اﻟﺒﻮﻮﻟﻴﻨﺞ اﻟﻤﺸﻬﻮررة ‪ ،‬واﻟﻜﺜﻴﺮ ﻨﺎ‬
‫ﻣﺮة أﺧﺮى‪.‬‬‫اﻟﺘﺬآﻴﺮ ﺑﻬﺬﻩ اﻟﻠﻌﺒﺔ ة‬

‫ﺗﺘﻜﻮن اﻟﻠﻌﺒﺔ اﻟﻮاﺣﺪﺪة ﻣﻦ ﻋﺸﺮ رﻣﻣﻴﺎت ‪ ،‬ﻣﻊ آﻞ ررﻣﻴﺔ هﻨﺎك ﻣﺤﺎﺎوﻟﺘﺎن‬


‫ن‬ ‫ال ‪، Pins‬‬
‫ﺟﻮد آﺮة ﻳﺘﻢ ﺑﻮﻮاﺳﻄﺘﻬﺎ إﺳﻘﺎط ﻋﺪد ‪ 10‬ﻣﻦ ل‬
‫ﺗﻌﺘﻤﺪ اﻟﻠﻌﺒﺔ ﻋﻠﻰ وﺟ‬
‫ﺪ‬ ‫‪-‬‬
‫ﻹﺳﻘﺎط ﺟﻤﻴﻊ اﻟﻜﺮات‪.‬‬

‫ﺠﻮء ﻟﻠﻤﺤﺎوﻟﺔ اﻟﻟﺜﺎﻧﻴﺔ وﻳﺮﻣﺰ ﻟﻠﻌﻌﺒﺔ ب ‪.X‬‬


‫ﻷوﻟﻰ ﻻ ﻳﺘﻢ اﻟﻠﺠ‬
‫ﻟﻮ ﺳﻘﻄﺖ ﺟﻤﻴﻊ ال ‪ pins 10‬ﻣﻣﻦ اﻟﻤﺤﺎوﻟﺔ اﻷ‬
‫‪ -‬ﻓﻴﻤﺎ ﻮ‬

‫ﻓﻴﺮﻣﺰ ﻟﻠﻌﺒﺔ ب ‪. /‬‬


‫اﻷوﻟﻰ وﺗﻢ إﺳﻘﺎط اﻟﻟﺒﺎﻗﻲ ﻓﻲ اﻟﻤﺤﺎووﻟﺔ اﻟﺜﺎﻧﻴﺔ ﻣﺰ‬
‫ﻰ‬ ‫ط أي ﺷﻲء ﻓﻲ اﻟﻤﺤﺎوﻟﺔ‬
‫ﺟﺰء أو ﻟﻢ ﻳﺘﻢ إﺳﻘﺎط‬
‫‪ -‬أﻣﺎ ﻟﻮ ﺗﻢ إﺳﻘﺎط ء‬

‫ﻟﺴﻘﻮط ال ‪ pins‬ﻓﻲ اﻟﻤﺤﺎوﻟﺘﻴﻦ‪.‬‬


‫ط‬ ‫ط ﺟﻤﻴﻊ آﺮات ﻳﺘﻳﺘﻢ ﺟﻤﻊ اﻟﻤﺠﻤﻮﻮع اﻟﻜﻠﻲ‬
‫‪ -‬ﻟﻮ ﺗﻢ ﺗﺗﺠﺎوز اﻟﻤﺤﺎوﻟﺘﺘﻴﻦ دون إﺳﻘﺎط‬

‫‪ -‬ﻟﻮ ﺗﻢ إﺳﻘﺎط ﺟﻤﻴﻊ اﻟﻜﻜﺮات ﻣﻦ اﻟﻠﻌﺒﺔﺔ اﻷوﻟﻰ ‪ ،‬ﻓﺈن اﻟﻤﺤﺎوﻟﺘﻴﻦ اﻟﻘﺎددﻣﺘﻴﻦ )اﻟﺮﻣﻴﺔ ﻟﻘﺎدﻣﺔ ﺑﺎﻟﻜﺎﻣﻞ )ﻳﺘﻢ اﺣﺘﺴﺎب ﻣﻣﺠﻤﻮﻋﻬﺎ وﺿﺮﺮﺑﻪ * ‪.2‬‬

‫ﺿﺮﺑﻬﺎ * ‪.2‬‬
‫‪ -‬ﻟﻮ ﺗﻢ إﺳﻘﺎط ﺟﻤﻴﻊ اﻟﻜﻜﺮات ﻣﻦ اﻟﻤﺤﺎﺎوﻟﺔ اﻟﺜﺎﻧﻴﺔ ‪ ،‬ﻓﺈﺈن اﻟﻤﺤﺎوﻟﺔ اﻟﻘﺎﺎدﻣﺔ ﻓﻘﻂ ﻳﺘﻢ ﺿ‬

‫اﻟﺜﺎﻧﻴﺔ ‪ ،‬ﻳﺘﻢ اﺣﺘﺴﺎب ﻣﺤﺎوﻟﺘﻴﻦ إﺿﺎﺎﻓﻴﺘﻴﻦ‬


‫ﺔ‬ ‫ﺟﻤﻴﻊ اﻟﻜﺮات ﻓﻓﻲ اﻟﻤﺮة‬
‫ﻓﻴﻤﺎ ﻟﻮ ﺗﻢ إﺳﻘﺎط ﺟ‬
‫‪ -‬ﻓﻲ اﻟﻟﺮﻣﻴﺔ اﻟﻌﺎﺷﺮة واﻷﺧﻴﺮة ‪ ،‬ﻳﺘﻢﻢ اﺣﺘﺴﺎب ﻣﺤﺎووﻟﺔ إﺿﺎﻓﻴﺔ ﺎ‬
‫ﻓﻴﻤﺎ ﻟﻮ ﺗﺗﻢ إﺳﻘﺎط ﺟﻤﻴﻊ اﻟﻜﺮات ﻣﻦ اﻟﻤﻤﺤﺎوﻟﺔ اﻷوﻟﻰ‪.‬‬

‫ﺟﻴﺪًا ﻓﻬﺬﻩ هﻲ ﻃﺮﺮﻳﻘﺘﻚ‬


‫ﺣﺎول ﻓﻬﻢ اﻟﻠﻌﺒﺔ ﻴﺪ‬
‫ﻗﻮاﻧﻴﻦ اﻟﻠﻌﺒﺔ ‪ ،‬ل‬
‫ﻦ‬ ‫هﻨﺎك ﻣﺸﺎآﻞ ﻓﻲ ﻓﻬﻬﻢ ﻗﺎﻧﻮن ﻟﻌﺒﺔ اﻟﻟﺒﻮﻟﻴﻨﺞ ‪ ،‬هﺬا اﻟﻟﺮاﺑﻂ ﻳﺸﺮح ﺑﺎﺎﻟﺘﻔﺼﻴﻞ‬
‫ﻵن ‪ ،‬هﻞ ك‬ ‫‪ -‬إﻟﻰ اﻵ‬
‫‪AC‬‬‫ﺸﻜﻠﺔ ال‪CM ...‬‬
‫ﻟﺤﻞ ﻣﺸ‬

‫‪http:://www.mohheet.com/shhow_news.aaspx?nid=777961‬‬

‫واﻵن إﻟﻟﻰ اﻟﻤﺴﺎﺑﻘﺔ‪...‬‬

‫‪118‬‬
‫‪2008‬‬
‫ﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪8‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸ‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.ccom‬‬
‫‪ ‬‬ ‫‪ ‬‬

‫‪ ACM‬اﻟﺜﺎﻧﻧﻴﺔ‪ :‬ﺣﺴ‬
‫ﻣﺴﺎﺑﺑﻘﺔ ال‪M‬‬
‫‪ ‬‬
‫ﺴﺎب ﻣﺠﻤﻮﻮع ﻟﻌﺒﺔ ااﻟﺒﻮﻟﻴﻨﺞ‬
‫‪ ‬‬ ‫أﺣﻤﺪ ﺟﻤﺎل‬
‫إﻋﺪاد ﺪ‬
‫‪ ‬‬ ‫ﺧﺎل‬
‫اﻟﻤﺴﺎﺑﻘﺔ ﺗﻘﻮم ﻋﻠﻰ إدﺧ‬
‫ﺔ‬ ‫ﺳﻨﺒﺪأ ﻓﻲ ﺷﺮح ﻓﻜﺮة ﻣﺴﺎﺑﻘﺘﻨﺎ‪ ،‬ﻓﻜﺮة‬‫اﻵن ﺳﻨ‬
‫ﻓﺎﺻﻠﺔ ‪،‬‬
‫ﺔ‬ ‫واﻟﺜﺎﻧﻴﺔ ﻳﻀﻊ‬
‫ﻴﺔ‬ ‫ﻞ ﻧﺘﻴﺠﺔ‬‫اﻟﻤﺴﺘﺨﺪﺪم ﻟﻨﺘﺎﺋﺞ اﻟﺮﻣﻣﻴﺎت وﺑﻴﻦ آﻞ‬
‫ﺗﻌﻨﻲ أن ﻋﻠﻴﻚ اﻻﻧﺘﻈﺎر‬
‫ﻄﻮة ﻟﻠﻤﺴﺄﻟﺔ اﻟﻤﻤﺘﺎﺣﺔ ‪ W ،‬ﻨﻲ‬‫ﺤﻞ ﺧﻄﻮة ﺑﺨﻄ‬ ‫ﻣﻬﻤﺘﻚ هﻲ ﺣﺴﺎب اﻟﻟﻤﺠﻤﻮع اﻟﻜﻠﻲ ﻟﻬﺬا اﻟﻤﺘﺴﺎﺑﻖ ‪ ،‬ﻋﻠﻤًﺎ ﺑﺄن اﻟﺤﺪ ﺻﻮر ﻟاﻟﺤ‬
‫ﻻﺣﺘﺴﺎب اﻟﻨﺘﻴﺠﺔ ‪ -‬ﻻ ﺗﻨﺲ ﻓﺒﻌﺾ اﻟﻤﺴﺎﺋﻞ ﺑﻬﺎ أآﺜﺜﺮ ﻣﻦ‬
‫ب‬ ‫اﻟﺮﻣﻴﺔ اﻟﻟﻘﺎدﻣﺔ‬ ‫اﻷﻗﺼﻰ ﻷي ﻣﺘﺴﺎﺑﻖ هﻮ ‪ 300‬درﺟﺔﺔ‪.‬‬
‫ﻰ‬
‫ﻜﻞ اﻟﺘﺎﻟﻲ ‪ 10 1 00 1 / 2 2 2 1  :‬رﻣﻴﺎﺎت وآﻞ ﻣﺎ ﻳﻌﻨﻴﻴﻚ هﻲ اﻟﻌﺸﺮ ررﻣﻴﺎت اﻷوﻟﻰ ﻓﻓﻘﻂ‪.‬‬ ‫ﻟﻨﻔﺘﺮض اﻟﺒﻴﺎﻧﺎت اﻟﻟﻤﺪﺧﻠﺔ ﺑﺎﻟﺸﻜ‬
‫ض‬
‫‪  X 3 3 X 1 / 3 /‬‬
‫‪X‬‬ ‫‪/ X 1 2‬‬
‫اﻟﺒﻴﺎﻧﺎت ﺑﺎﻟﺸﻜﻞ اﻟﺘﺘﺎﻟﻲ‪:‬‬
‫ت‬ ‫ﻫﺬه‬
‫ﻣﻌﻨﻰ ﻫ‬
‫وﻓﻲ اﻟﺜﺎﻧﻴﺔ ﺻﻔﺮ‪.‬‬
‫ﻰ اﺳﻘﻂ ‪ 1‬ﻲ‬ ‫‪ -‬ﻓﻲ اﻟﻟﺮﻣﻴﺔ اﻷوﻟﻰ ‪ :‬اﻟﻤﺤﺎوﻟﺔ اﻷوﻟﻰ‬
‫ﻰ اﺳﻘﻂ ‪ 1‬وﻓﻲ اﻟﺜﺎﻧﻴﺔ أآﻤﻞ إﺳﻘﺎط‬ ‫‪ -‬ﻓﻲ اﻟﺮﺮﻣﻴﺔ اﻟﺜﺎﻧﻴﺔ ‪ :‬اﻟﻟﻤﺤﺎوﻟﺔ اﻷوﻟﻰ‬
‫اﻟﺒﻘﻴﺔ ووﺣﺼﻞ ﻋﻠﻰ‪/.‬‬
‫ﻰ اﺳﻘﻂ ‪ 2‬وﻓﻲ ااﻟﺜﺎﻧﻴﺔ ‪.2‬‬‫‪ -‬ﻓﻲ اﻟﺮﺮﻣﻴﺔ اﻟﺜﺎﻟﺜﺔ ‪ :‬اﻟﻟﻤﺤﺎوﻟﺔ اﻷوﻟﻰ‬
‫وﻓﻲ اﻟﺜﺎﻧﻴﺔ ‪.1‬‬
‫ﻰ اﺳﻘﻂ ‪ 2‬ﻲ‬ ‫‪ -‬ﻓﻲ اﻟﺮﺮﻣﻴﺔ اﻟﺮاﺑﻌﺔ ‪ :‬اﻟﻤﺤﺎوﻟﺔ اﻷوﻟﻰ‬
‫اﻟﺠﻤﻴﻊ وﺗﻢ اﺣﺘﺴﺎب ‪X‬‬‫ﻴﻊ‬ ‫‪ -‬ﻓﻲ اﻟﺮﺮﻣﻴﺔ اﻟﺨﺎﻣﺴﺔ ‪ :‬اﻟﻤﺤﺎوﻟﺔ اﻷوﻟﻟﻰ اﺳﻘﻂ‬
‫ﻳﺘﻢ رﻣﻲ اﻟﻜﺮة ﻣﺮﺮة أﺧﺮى‪.‬‬ ‫‪ ،‬ﻟﻢ ﻢ‬
‫وﻓﻲ اﻟﺜﺎﻧﻴﺔ ‪.3‬‬
‫‪ -‬ﻓﻲ اﻟﺮﺮﻣﻴﺔ اﻟﺴﺎدﺳﺔ ‪ :‬اﻟﻤﺤﺎوﻟﺔ اﻷوﻟﻟﻰ اﺳﻘﻂ ‪ 3‬ﻲ‬
‫اﻟﺠﻤﻴﻊ وﺗﻢ اﺣﺘﺴﺎب ‪X‬‬
‫ﻊ‬ ‫ﻟﺮﻣﻴﺔ اﻟﺴﺎﺑﻌﺔ ‪ :‬اﻟﻤﺤﺎوﻟﺔ اﻷوﻟﻟﻰ اﺳﻘﻂ‬ ‫‪ -‬ﻓﻲ اﻟﺮ‬
‫ﻲ اﻟﺮﻣﻴﺔ اﻟﺜﺎﻣﻨﺔ‪ :‬اﻟﻤﺤﺎوﻟﺔ اﻷووﻟﻰ‬ ‫ﻳﺘﻢ رﻣﻲ اﻟﻜﺮة ﻣﺮﺮة أﺧﺮى‪ -.‬ﻓﻲ‬ ‫‪ ،‬ﻟﻢ ﻢ‬
‫ﻴﺔ وﺣﺼﻞ ﻋﻠﻰ‪/ .‬‬ ‫اﺳﻘﻂ ‪ 1‬وﻓﻲ اﻟﺜﺎﻧﻴﺔ أآآﻤﻞ إﺳﻘﺎط اﻟﺒﻘﻴﺔ‬
‫ﻷوﻟﻰ اﺳﻘﻂ ‪ 3‬وﻓﻲ اﻟﺜﺎﻧﻴﺔ أآآﻤﻞ‬ ‫‪ -‬ﻓﻲ اﻟﺮﻣﻴﺔ اﻟﺘﺎﺳﻌﺔ ‪ :‬اﻟﻤﺤﺎوﻟﺔ اﻷ‬
‫ﻋﻠﻰ‪/ .‬‬
‫إﺳﻘﺎط ااﻟﺒﻘﻴﺔ وﺣﺼﻞ ﻋ‬
‫ﻋﻠﻰ‬ ‫‪ -‬ﻓﻲ اﻟﻟﺮﻣﻴﺔ اﻟﻌﺎﺷﺮة ‪ :‬اﻟﻤﺤﺎوﻟﺔ اﻷووﻟﻰ اﺳﻘﻂ اﻟﺠﻤﻴﻴﻊ ﻟﺬا ﺣﺼﻞ ﻋ‬
‫ﻋﻠﻰ‬
‫ﻲ اﻷوﻟﻰ ﻋﻠﻰ ‪ 1‬وﻓﻲ اﻟﺜﺎﻧﻴﺔ ﻋ‬ ‫ﺤﺎوﻟﺘﻴﻦ إﺿﺎﻓﻴﺘﻴﻴﻦ ‪ /‬ﺣﺼﻞ ﻓﻲ‬ ‫‪X‬وﻣﺤ‬
‫‪.2‬‬
‫‪10‬‬‫ﺒﻮﻟﻴﻨﺞ ﺳﻨﺠﺪ أن اﻟﻨﺘﻴﺠﺔ هﻲ ‪08‬‬ ‫ﺎﻩ ﻣﻦ ﻗﻮاﻧﻴﻦ اﻟﺒﻮ‬
‫ﺣﺴﺐ ﻣﺎ ﺗﻌﻠﻤﻨ ﻩ‬ ‫واﻵن ﺣ‬
‫‪.‬‬
‫أﻣﺜﻠﺔ ﻋﻠﻰ ﺑﻴﺎﻧﺎت أﺧﺮى ﻟﻺدﺧﺎل‪1 0 1 / 2 2 X 3 3 X 1 / 3 / :‬‬
‫‪1/X80‬‬
‫اﻟﻨﺘﻴﺠﺔ ‪121 :‬‬
‫ﺧﺮ‪1 0 1 / 2 2 X 3 3 X 1 / 3 / 1 / 8 / 9 :‬‬ ‫ﺑﻴﺎن ﺁﺧ‬
‫اﻟﻨﺘﻴﺠﺔ ‪120 :‬‬
‫ﻃﻠﺐ اﻟﺒﻴﺎﻧﺎت ﻣﻦ‬ ‫ﻚ اﻵن هﻮ ﻃ‬ ‫واﻵن إﻟﻰ ﻣﻬﻤﺘﻚ اﻟﻟﺤﺎﻟﻴﺔ ‪ ،‬ﻣﻬﻤﺘﻚ‬
‫ﺧﺎل‬
‫اﻟﺴﺎﺑﻖ ‪ ،‬ﺣﺘﻰ ﻳﺘﻢ إدﺧ‬
‫ﻖ‬ ‫إدﺧﺎل ﺳﻼﺳﻞ ﻧﺼﻴﺔﺔ ﺑﺎﻟﺸﻜﻞ‬
‫ل‬ ‫اﻟﻤﺴﺘﺨﺪﺪم‪ ،‬ﺳﻴﺘﻢ‬
‫آﻠﻤﺔ ‪ ، Game Oveer‬ﻋﻨﺪهﺎ ﺳﺘﺘﻮﻗﻗﻒ ﻋﻦ ﻃﻠﺐ اﻟﺒﻴﺎﻧﺎت وﺗﺒﺪأ ﻓﻲ‬
‫ﻗﺮاءة اﻟﺒﻴﺎﻧﺎت ووﻣﻦ‬‫ﺣﺴﺐ اﻟﻨﺘﺎﺋﺞ وﻗﺮ‬‫إﺟﺮاء ااﻟﻌﻤﻠﻴﺎت ‪ ،‬ﻗﻢ ﺑﺑﺘﻘﻄﻴﻊ اﻟﻨﺺ ﺣ‬
‫ﺼﺮ ﻃﺮﻳﻘﺔ وﺑﺑﺄﻗﻞ‬ ‫ﺛﻢ ﺣﺴﺎﺎب اﻟﻤﺠﻤﻮع ‪ ،‬ﻻ ﺗﻨﺲ أن ﺗﺗﻘﻮم ﺑﺬﻟﻚ ﺑﺄﻗﺼ‬
‫اﺳﺘﻬﻼك ﻟﻤﻮارد اﻟﺠﻬﺎﺎز‪.‬‬
‫ك‬
‫ﻰ ﺑﺮﻳﺪي اﻻﻟﻜﺘﺮﺮوﻧﻲ‬ ‫ﻈﺎر اﻟﺤﻠﻮل ‪ ،‬ﻳﺘﺘﻢ ﺗﺴﻠﻴﻤﻬﺎ ﻋﻠﻰ‬ ‫ﻓﻲ اﻧﺘﻈ‬
‫@‪A‐Gamal‬‬
‫‪@windowslivee.com‬‬

‫ﻃﺮﻳﻘﺔ اﻟﺘﻘﻴﻴﻢ‬
‫ﺔ‬
‫ﻰ ﺳﺮﻋﺔ اﻟﺘﻨﻔﻴﻴﺬ اﻷﺳﺎﺳﻲ وﻗﻗﻠﺔ‬ ‫اﻟﻤﺴﺎﺑﻘﺔ ﻣﻌﺘﻤﺪًا ﻋﻠﻰ‬
‫ﺔ‬ ‫ﺳﻴﻜﻮن ﺗﻘﻴﻴﻢ‬
‫ﺳﺎس‬ ‫ﻣﺆﺛﺮ ﻓﻲ اﻟﻤﺴﺎﺑﺑﻘﺔ وﻟﻜﻦ اﻷﺳ‬‫اﻟﺘﻌﻘﻴﺪ‪ ،‬ﺟﻤﺎل اﻟﻮاﺟﻬﻬﺎت وﺧﻼﻓﻪ ﻣﺆ‬
‫ﻋﻤﻞ‬ ‫ﺳﺮﻋﺔ ﺗﻨﻔﻴﺬ اﻟﻜﻮد‪ ،‬ﻳﻨﻨﺒﻐﻲ ﻓﺼﻞ اﻟﻮﻮاﺟﻬﺔ ﻋﻦ اﻟﺘﻨﻔﻔﻴﺬ ﻓﻲ ﺣﺎﻟﺔ ﻋ‬
‫ﻋﻤﻞ ﻧﺴﺨﺔ ﻟﻠﺤﻞ ﻓﻓﻘﻂ‬‫واﺟﻬﺔ ﺣﺘﻰ ﻻ ﺗﺆﺛﺮ ﻋﻠﻰ ﺳﺮﻋﺔ اﻟﺘﺘﻨﻔﻴﺬ ‪ ،‬أو ﻞ‬
‫ﺸﺘﺮط اﻟﻤﺴﺎﺑﻘﺔ أن ﻳﺘﻢ ﻗﺮاءة ااﻟﺒﻴﺎﻧﺎت ﻣﻦ ﻣﻠﻠﻒ‬ ‫وﻧﺴﺨﺔ ﻟﻠﻮاﺟﻬﺔ ‪ ،‬ﺗﺸ‬
‫ﻋﻦ هﺬا اﻟﺸﺮط ﻣﻊ‬ ‫وﻟﻴﺲ ‪ TextBox‬ﻣﺒﺒﺎﺷﺮة وﻟﻜﻨﻨﺎ ﺳﻨﺘﻐﺎﺿﻰ ﻦ‬
‫ﻄﺒﻊ‪.‬‬
‫إﻋﻄﺎء أوﻟﻮﻳﺔ ﻟﻠﻘﺮاءة ﻣﻦ اﻟﻤﻠﻔﺎت ﺑﺎﻟﻄ‬
‫وﺑﺎﻟﺘﻮﻓﻴﻖ ﻟﻠﺠ‬
‫ﺠﻤﻴﻊ‪...‬‬
‫واﻟﺴﻼم ﻋﻠﻴﻜﻜﻢ ورﺣﻤﺔ اﷲ ووﺑﺮآﺎﺗﻪ‪.‬‬

‫‪119‬‬
‫‪2008‬‬
‫ﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪8‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸ‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.ccom‬‬
   

‫ ﺣﺴﺎب ﻣﺠﻤﻮع ﻟﻌﺒﺔ اﻟﺒﻮﻟﻴﻨﺞ‬:‫ اﻟﺜﺎﻧﻴﺔ‬ACM‫ﻣﺴﺎﺑﻘﺔ ال‬


 

  ‫إﻋﺪاد أﺣﻤﺪ ﺟﻤﺎل‬


  1997 ‫ ﻟﻌﺎم‬Acm ‫ ﻣﺴﺎﺑﻘﺔ‬- ‫اﻟﻤﺴﺄﻟﺔ ﺑﺎﻟﻠﻐﺔ اﻹﻧﺠﻠﻴﺰﻳﺔ‬
 
Rules

A single bowling game consists of ten frames. The object in each frame is to roll a ball at ten
bowling pins arranged in an equilateral triangle and to knock down as many pins as possible.

For each frame, a bowler is allowed a maximum of two rolls to knock down all ten pins. If the
bowler knocks them all down on the first attempt, the frame is scored as a strike. If the bowler
does not knock them down on the first attempt in the frame the bowler is allowed a second attempt
to knock down the remaining pins. If the bowler succeeds in knocking the rest of the pins down in
the second attempt, the frame is scored as a spare.

The score for a bowling game consists of sum of the scores for each frame. The score for each
frame is the total number of pins knocked down in the frame, plus bonuses for strikes and spares.
In particular, if a bowler scores a strike in a particular frame, the score for that frame is ten plus
the sum of the next two rolls. If a bowler scores a spare in a particular frame, the score for that
frame is ten plus the score of the next roll. If a bowler scores a strike in the tenth (final) frame, the
bowler is allowed two more rolls. Similarly, a bowler scoring a spare in the tenth frame is allowed
one more roll.

The maximum possible score in a game of bowling (strikes in all ten frames plus two extra strikes
for the tenth frame strike) is 300.

Input
The input will consist of a sequence of bowling game scores. Each line will contain the scores for a
single game, with the scores for each roll of the ball separated by a single space. The score for a
single roll will be represented by a single character -- either a number indicating the number of pins
knocked down, a '/' for a spare or a 'X' for a strike.

The end of input is indicated by a single line containing the text Game Over (terminated with a
newline).

Output
Your program should output the total game score for each game in the input file. The game scores
should be left justified and each score should be printed on a separate line. The order of the scores
on the output should correspond to the order of the games on the input.

Sample Input

101/22X33X1/3/X12

101/22X33X1/3/1/X80

101/22X33X1/3/1/8/9

Game Over

Output for the Sample Input

108
121
120

 
120
2008 ‫ ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ‬/ ‫ ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ‬01 ‫اﻟﻌﺪد‬ vb4arab.com ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ‬
‫‪ ‬‬ ‫‪ ‬‬

‫‪ ‬‬
‫اﻟﻤﺴﺎﺑﻘﺎت اﻟﺸﻬﺮﻳﺔ‬
‫‪ ‬‬

‫‪ ‬‬

‫‪ ‬‬

‫‪ ‬‬

‫ﺳﻴﺘﻢ اﻟﺒﺪء ﻓﻲ إﻋﻼن ﻣﺴﺎﺑﻘﺔ ﺷﻬﺮﻳﺔ ﻷﻓﻀﻞ‬


‫ﻣﻮﺿﻮع‪/‬ﻣﻘﺎل‪/‬درس ﺧﻼل اﻟﺸﻬﺮ ‪ ،‬ﻳﺘﻢ ﺗﻜﺮﻳﻢ ﺻﺎﺣﺐ‬
‫اﻟﻤﻘﺎل ﺑﻤﻜﺎﻓﺄة رﻣﺰﻳﺔ ﻗﺪرﻫﺎ ‪ 100‬رﻳﺎل ﺳﻌﻮدي‬
‫واﻟﺒﺎب ﻣﻔﺘﻮح ﻟﺠﻤﻴﻊ اﻷﻋﻀﺎء واﻟﻤﺸﺮﻓﻴﻦ وﻛﺒﺎر‬
‫اﻟﺸﺨﺼﻴﺎت ﻣﺎ ﻋﺪا اﻟﻤﺸﺮف اﻟﻌﺎم ‪ ،‬أول ﺟﺎﺋﺰة ﺳﺘﻤﻨﺢ‬
‫إن ﺷﺎء اﷲ وﻳﺘﻢ ﻗﻔﻞ ﺑﺎب‬ ‫ﻋﻦ ﺷﻬﺮ ﻳﻨﺎﻳﺮ‬
‫اﻟﻤﺸﺎرﻛﺎت ﻳﻮم ‪ 28‬ﻣﻦ اﻟﺸﻬﺮ ﻟﻔﺘﺢ اﻟﺒﺎب ﻟﻠﺘﺼﻮﻳﺖ‬
‫ﻟﻤﺪة ﻳﻮﻣﻴﻦ واﻟﺬي ﺳﻴﺸﻜﻞ ‪ %20‬ﻣﻦ ﻧﺘﻴﺠﺔ‬
‫اﻟﻤﺴﺎﺑﻘﺔ ‪ ،‬ﻓﻴﻤﺎ ﺗﺨﻀﻊ ال ‪ %80‬اﻟﻤﺘﺒﻘﻴﺔ ﻟﻠﺠﻨﺔ‬
‫ﺗﺤﻜﻴﻢ ‪ ،‬ﻻ ﻳﺸﺘﺮط أي ﻣﺠﺎل ﻟﻠﻤﻘﺎل اﻟﻔﺎﺋﺰ ﻛﻞ ﺷﻬﺮ ‪.‬‬
‫‪ ‬‬

‫‪121‬‬
‫اﻟﻌﺪد ‪ 01‬ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ ‪ /‬ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ ‪2008‬‬ ‫ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ ‪vb4arab.com‬‬
‫‪H‬‬ ‫‪H‬‬

You might also like