Professional Documents
Culture Documents
2
2008 ﻬﺮ ﻳﻨﺎﻳﺮ /ﻓﺒﺮاﻳﺮ
اﻟﻌﺪد اﻷول ﻟﺸﻬ
ﺻﻞ
ﺧﻴﺮا وﺻ
2008أﺧ
ﺠﻮال ﺳﺘﺘﻮدﻳﻮ 8
اﻟﻔﻴﺠ
20
008 ﺟﺪﻳﺪ ااﻟﻔﻴﺠﻮال ﺑﻴﻴﺴﻚ
Tra
affic -EED
E ﺼﺮي
ﺳﺔ اﻟﻤﺼ
اﻟﻤﺸﺮوعع اﻟﻔﺎﺋﺰ ﺑﺎﻟﻟﻤﺮﻛﺰ اﻷوول ﻓﻲ ﻳﻮﻮم اﻟﻬﻨﺪﺳ
Mo
onitorin
ng Syste
em Model
2
اﻟﺤﻤﺪ ﷲ ،واﻟﺼﻼة واﻟﺴﻼم ﻋﻠﻰ ﻣﺤﻤﺪ ﺑﻦ ﻋﺒﺪ اﷲ و ﻋﻠﻰ آﻟﻪ وﺻﺤﺒﻪ وﻣﻦ واﻻه ...أﻣﺎ ﺑﻌﺪ.
ﺑﻔﻀﻞ ﻣﻦ اﷲ ﺗﻌﺎﻟﻰ ،وﺑﺘﻮﻓﻴﻖ وﺳﺪاد ﻣﻨﻪ ﻋﺰ وﺟﻞ ،ﻳﻘﺪم ﻣﻨﺘﺪى ﻓﻴﺠﻮال ﺑﻴﺴﻚ ،اﻟﻤﻮﻗﻊ اﻟﻌﺮﺑﻲ
اﻷول اﻟﻤﺘﺨﺼﺺ ﻓﻲ ﻫﺬه اﻟﻠﻐﺔ ﻟﻠﻘﺎرئ اﻟﻌﺮﺑﻲ اﻟﻌﺪد اﻷول ﻣﻦ ﻣﺠﻠﺘﻪ اﻟﺪورﻳﺔ واﻟﺘﻲ ﻧﺄﻣﻞ أن ﺗﻜﻮن
ﻣﻮاﻓﻘﺔ ﻟﻄﻤﻮﺣﺎت ﻣﺤﺒﻲ ﻫﺬه اﻟﻠﻐﺔ ﻋﻤﻮﻣﺎً و أﻋﻀﺎء وزوار اﻟﻤﻨﺘﺪى ﺧﺼﻮﺻﺎً ،واﻟﺘﻲ ﺟﺎءت ﺑﺎﻟﻌﺪﻳﺪ
ﻣﻦ اﻟﻤﻮﺿﻮﻋﺎت واﻟﻔﻮاﺋﺪ اﻟﻤﺘﻔﺮﻗﺔ إﻟﻰ ﺟﺎﻧﺐ اﻟﺘﺴﻠﻴﺔ واﻟﺘﺮﻓﻴﻪ ﻟﺘﻀﻴﻒ ﻟﻤﻨﺘﺪﻳﺎت اﻹﻧﺘﺮﻧﺖ ﺑﻌﻀﺎً
ﻣﻦ اﻟﺰاد اﻟﻌﻠﻤﻲ واﻟﺜﻘﺎﻓﻲ اﻟﺬي ﻳﺒﺤﺚ ﻋﻨﻪ رواد ﻫﺬه اﻟﻤﻨﺘﺪﻳﺎت.
وﻻ ﻳﻔﻮﺗﻨﻲ ﺑﻬﺬه اﻟﻤﻨﺎﺳﺒﺔ أن أﻧﻮه إﻟﻰ اﻟﻨﺠﺎح اﻟﻜﺒﻴﺮ اﻟﺬي ﺣﻘﻘﻪ اﻟﻤﻨﺘﺪى ﺧﻼل ﻓﺘﺮة وﺟﻴﺰة ﻣﻦ
اﻓﺘﺘﺎﺣﻪ اﻟﺜﺎﻧﻲ ﺣﻴﺚ ﺗﺠﺎوز ﻋﺪد اﻷﻋﻀﺎء ﻋﺸﺮون أﻟﻒ ﻋﻀﻮ ﻓﻲ ﻓﺘﺮة ﻻ ﺗﺘﻌﺪى ﺳﺒﻌﺔ أﺷﻬﺮ،
وﺗﺠﺎوز ﻋﺪد اﻟﺰوار اﻟﻴﻮﻣﻲ أﻟﻔﻲ زاﺋﺮ ،وﻛﻞ ﻫﺬا ﻳﺪل ﻋﻠﻰ ﺣﺠﻢ اﻟﻔﺮاغ اﻟﺬي ﻳﺴﺪه اﻟﻤﻨﺘﺪى ﻓﻲ ﻣﺠﺎل
ﺗﺨﺼﺼﻪ ﻋﻠﻰ ﺷﺒﻜﺔ اﻻﻧﺘﺮﻧﺖ و اﻟﻤﻮاﻗﻊ اﻟﺘﻌﻠﻴﻤﻴﺔ اﻟﻌﺮﺑﻴﺔ.
وﺑﺎﺳﻢ إدارة ﻣﻮﻗﻊ ﻓﻴﺠﻮال ﺑﻴﺴﻚ ﻟﻠﻌﺮب vb4arab.comوﺑﺎﺳﻢ ﻣﺸﺮﻓﻴﻪ وأﻋﻀﺎءه أﺗﻘﺪم
ﺑﺎﻟﺸﻜﺮ اﻟﺠﺰﻳﻞ وﺑﺎﻟﺪﻋﺎء ﺑﺎﻟﺘﻮﻓﻴﻖ ﻟﻔﺮﻳﻖ اﻟﺘﺤﺮﻳﺮ ﻟﻤﺠﻠﺔ ﻣﻨﺘﺪى ﻓﻴﺠﻮال ﺑﻴﺴﻚ ﺑﻘﻴﺎدة اﻷﺳﺘﺎذ وﻟﻴﺪ
ﺑﻮاﻟﻄﻤﻴﻦ واﻟﺬي ﺑﺬل اﻟﻜﺜﻴﺮ ﻣﻦ ﺟﻬﺪه ووﻗﺘﻪ -ﺟﺰاه اﷲ ﺧﻴﺮاً -ﻟﻴﻈﻬﺮ ﻫﺬا اﻟﻌﻤﻞ ﻟﻠﻮﺟﻮد،
و ﻛﺬﻟﻚ ﻟﻜﻞ ﻣﻦ اﻷﺧﻮة اﻟﻜﺮام ﻣﺼﻄﻔﻰ ﻣﺤﻤﻮد ،واﺋﻞ ،ﻧﺒﻬﺎن ﻧﻮر ،ﻧﻮرﻫﺎن ﻋﺎدل ،ﻫﺎﻧﻲ ﻛﻤﺎ ﻻ
أﻧﺴﻰ أن أﺷﻜﺮ اﻷﺳﺘﺎذ اﻟﻤﻬﻨﺪس أﺣﻤﺪ ﺟﻤﺎل اﻟﻤﺸﺮف اﻟﻌﺎم ﻋﻠﻰ اﻟﻤﻨﺘﺪى واﻟﺬي ﻗﺎم ﺑﺪﻋﻢ ﻫﺬا
اﻟﻔﺮﻳﻖ و وﻓﺮ ﻟﻪ ﻛﻞ ﻣﺎ ﻳﺤﺘﺎﺟﻪ ﻣﻦ إﻣﻜﺎﻧﻴﺎت و ﺗﻮﺟﻴﻪ.
وﺧــﺘﺎﻣـﺎً أﺗـﻘـﺪم ﺑﺎﻟﺸــﻜــﺮ اﻟﺠـﺰﻳﻞ ﻟﺠـــﻤــﻴــﻊ ﻣﺸــﺮﻓــﻲ وأﻋـــﻀﺎء و زوار ﻣﻨﺘــﺪى ﻓﻴﺠـــﻮال ﺑﻴــﺴـﻚ
ﺟــﻤـﻴـﻌﺎً ﻛـﻞ ﺣـﺴـﺐ ﺟﻬﺪه وﻣـﺸﺎرﻛـﺘﻪ ﻓﻲ اﻟﻤﻨـﺘــﺪى ،ﻓﻬـﻢ اﻟﻮﻗﻮد اﻟﺤﻘﻴﻘﻲ ﻟﻨﺸﺎط اﻟﻤﻨﺘﺪى وﻫﻢ
ﺳﺮ ﻧﺠﺎﺣﻪ وﺗﻔﻮﻗﻪ ،آﻣﻠﻴﻦ ﻣﻦ اﷲ ﻋﺰ وﺟـﻞ أن ﻳﺸﺎرك اﻟﺠﻤﻴﻊ ﻓﻲ ﺗﻄﻮﻳﺮ اﻟﻤﺠـﻠـﺔ و اﻟﻤـﺸﺎرﻛﺔ
ﻓﻲ إﻧﻤﺎﺋﻬﺎ ﻟﻴﻌﻢ اﻟﺨﻴﺮ ﻋﻠﻰ ﺟﻤﻴﻊ اﻟﻤﺒﺮﻣﺠﻴﻦ اﻟﻌﺮب .
.
أﺧﻮﻛﻢ /ﻋﺒﺪ اﷲ اﻟﻌﺘﻴﻖ.
ﻗﺎﻣﺖ ﺷﺮﻛﺔ ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ ﺑﺘﺎرﻳﺦ 2007-11-19ﺑﻄﺮح اﻹﺻﺪارة اﻟﺠﺪﻳﺪة ﻣﻦ ﻓﻴﺠﻮل ﺳﺘﻮدﻳﻮ واﻟﺘﻲ ﺗﺤﻤﻞ اﻻﺳﻢ
Visual Studio 2008واﻟﺘﻲ ﺗﺘﻀﻤﻦ اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﺘﺤﺴﻴﻨﺎت ﻋﻠﻰ ﺻﻌﻴﺪ ﺑﻴﺌﺔ اﻟﺘﻄﻮﻳﺮ وﻟﻐﺎت اﻟﺒﺮﻣﺠﺔ ﻛﻤﺎ راﻓﻖ ﻃﺮح ﻫﺬه
اﻹﺻﺪارة اﻟﺠﺪﻳﺪة ﻃﺮح إﺻﺪارة ﺟﺪﻳﺪة ﻣﻦ إﻃﺎر ﻋﻤﻞ .Net Framework 3.5وﺗﻮﺟﻬﺖ ﻫﺬه اﻟﻨﺴﺨﺔ اﻟﺠﺪﻳﺪة ﻟﺘﻄﻮﻳﺮ ﻣﺠﺎل
واﺳﻊ ﻣﻦ اﻟﺘﻄﺒﻴﻘﺎت ﺑﺪءا ﺑﺘﻄﺒﻴﻘﺎت اﻟﻮﻳﺐ ﻣﺮورا ﺑﺎﻟﺘﻄﺒﻴﻘﺎت اﻟﺨﺎﺻﺔ ﺑـ Windows Vistaو Windows Server
2008واﻧﺘﻬﺎء ﺑﻨﻈﺎم Office 2007وﻣﻨﺼﺎت أﺧﺮى ﻛﺪﻋﻢ Ajaxﻓﻲ ﺗﻄﺒﻴﻘﺎت ASP .netﻣﺜﻼ.
ﺣﻴﺚ ﻗﺪﻣﺖ ﻫﺬه اﻹﺻﺪارة ﻣﻦ ﻓﻴﺠﻮل ﺳﺘﻮدﻳﻮ رؤﻳﺔ ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ ﻋﻦ ﺗﻄﺒﻴﻘﺎت اﻟﺰﺑﻮن اﻟﺬﻛﻴﺔ ﻣﻤﻜﻨﺔ اﻟﻤﻄﻮرﻳﻦ ﻣﻦ ﺑﻨﺎء
ﺗﻄﺒﻴﻘﺎت ﻣﺘﺼﻠﺔ ﺑﺴﺮﻋﺔ ﺑﻨﻮﻋﻴﺔ ﻋﺎﻟﻴﺔ وﺗﺠﺮﺑﺔ ﻣﺴﺘﺨﺪم ﻏﻨﻴﺔ .ﻓﻤﻊ ﻫﺬه اﻹﺻﺪار اﻟﺠﺪﻳﺪة ﺳﺘﺠﺪ اﻟﻤﻨﻈﻤﺎت أن اﻟﻮﺻﻮل ﻟﻠﻤﻌﻠﻮﻣﺔ
وﺗﺤﻠﻴﻠﻬﺎ أﺻﺒﺢ أﺳﻬﻞ ﺑﻜﺜﻴﺮ ﻣﻤﺎ ﻗﺒﻞ ﻣﻤﻜﻨﺔ إﻳﺎﻫﻢ ﻣﻦ اﺗﺨﺎذ ﻗﺮارات ﻣﺆﺛﺮة ﻗﻴﻤﺎ ﻳﺘﻌﻠﻖ ﺑﺎﻟﻌﻤﻞ ﻓﻬﻲ ﺗﻤﻜﻨﻬﻢ ﻣﻦ إﻧﺸﺎء ﺗﻄﺒﻴﻘﺎت
أﻛﺜﺮ أﻣﻨﺎ وإدارة و ﻣﻮﺛﻮﻗﻴﺔ ﺑﺴﺮﻋﺔ اﻛﺒﺮ ﻫﺬا ﻣﻊ اﻻﺳﺘﻔﺎدة اﻟﻜﺎﻣﻠﺔ ﻣﻦ ﺟﻤﻴﻊ ﻣﻴﺰات Windows Vistaو Office 2007
وﻳﻤﻜﻨﻨﺎ ﺳﺮد ﺑﻌﺾ اﻟﺘﻄﻮﻳﺮات ﻋﻠﻰ ﻣﺴﺘﻮى ﺑﻴﺌﺔ اﻟﺘﻄﻮﻳﺮ ﻓﻲ ﻫﺬه اﻹﺻﺪارة اﻟﺠﺪﻳﺪة:
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ﻓﻲ ﺗﻌﺒﻴﺮ اﻟﺘﺼﺮﻳﺢ ﺣﻴﺚ ﻳﺴﺘﺪل اﻟﻤﺘﺮﺟﻢ ﻋﻠﻰ ﻧﻮع اﻟﻤﺘﻐﻴﺮ ﻣﻦ ﻧﻮع
اﻟﺘﻌﺒﻴﺮ اﻟﺬي ﻳﻀﺒﻂ ﻗﻴﻤﺔ ذﻟﻚ اﻟﻤﺘﻐﻴﺮ ﻣﻤﺎ ﻳﻮﻓﺮ إﻣﻜﺎﻧﻴﺔ ﺗﻌﺮﻳﻒ اﻟﻤﻐﻴﺮات ﺑﺪون ﺗﺤﺪﻳﺪ ﻧﻮﻋﻬﺎ
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واﻟﺘﻌﺪﻳﻞ ﻋﻠﻴﻬﺎ
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ﻣﺜﻼ ﻧﻈﺮا ﻟﻬﺬﻩ اﻟﻔﻮاﺋﺪ اﻟﺘﻲ ﺗﻜﻠﻤﻨﺎ ﻋﻨﻬﺎ واﻟﺘﻲ ﺗﺰﻳﺪ ﻣﻦ اﻹﻧﺘﺎﺟﻴﺔ وﺗﺴﻬﻞ ﻋﻤﻞ اﻟﻤﻄﻮر
ﺑﺸﻜﻞ واﺿﺢ .وهﺬا ﻣﺨﻄﻂ ﻳﺒﻴﻦ هﻴﻜﻠﻴﻪ هﺬﻩ اﻟﺘﻘﻨﻴﺔ وﻣﺪى ﺗﺪاﺧﻠﻬﺎ ﻣﻊ ﻟﻐﺎت اﻟﺪوت ﻧﺖ وإﻃﺎر اﻟﻌﻤﻞ واﻟﻜﺎﺋﻨﺎت اﻟﺘﻲ ﻧﻀﻤﻨﻬﺎ ﻓﻲ ﻣﺸﺎرﻳﻌﻨﺎ:
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ﻣﻦ أوﻓﻴﺲ .
-اﻻﺳﺘﻔﺎدة اﻟﻘﺼﻮى ﻣﻦ ﻣﻴﺰات اﻹﺻﺪار 2007ﻣﻦ أوﻓﻴﺲ ﻓﻲ ﺗﻄﻮﻳﺮ ﻣﺴﺘﻮى اﻟﺘﻄﺒﻴﻖ وﻣﺴﺘﻮى اﻟﻮﺛﻴﻘﺔ Documentاﻟﺘﻲ ﺗﻘﻮم ﺑﺘﺨﺼﻴﺺ
أوﻓﻴﺲ 2007ﺑﺴﻬﻮﻟﻪ وﺳﺮﻋﻪ .آﻤﺎ ﻳﺤﺘﻮي اﻹﺻﺪار اﻟﺠﺪﻳﺪ ﻣﻦ VSTOﻋﻠﻰ ﻣﺼﻤﻢ ﻣﺮﺋﻲ ﻟﻠﻮﻇﺎﺋﻒ اﻟﺮﺋﻴﺴﻴﺔ اﻟﻤﻮﺟﻮدة ﻓﻲ ﺗﻄﺒﻴﻘﺎت أوﻓﻴﺲ ﻣﻤﺎ
ﻳﺴﻬﻞ ﻋﻠﻴﻚ ﻓﻲ ﺗﺨﺼﻴﺺ واﺟﻪ اﻟﺘﻄﺒﻴﻖ ﻟﻠﻌﻤﻞ ﺑﺎﻟﺸﻜﻞ اﻟﻤﻼﺋﻢ.
-ﺗﺼﻤﻴﻢ ﺗﻄﺒﻴﻘﺎت ﺗﻌﺘﻤﺪ ﻋﻠﻰ اﻟﻮاﺟﻬﺔ اﻟﻤﺮﺋﻴﺔ اﻟﻤﻮﺟﻮدة أﺳﺎﺳﺎ ﻓﻲ ﺗﻄﺒﻴﻘﺎت أوﻓﻴﺲ 2007ﻣﻤﺎ ﻳﻤﻜﻦ اﻟﻤﻄﻮرﻳﻦ واﻟﻤﺒﺮﻣﺠﻴﻦ ﻣﻦ ﺑﻨﺎء ﺗﻄﺒﻴﻘﺎت
ﻳﻜﻮن ﻓﻴﻬﺎ Microsoft Officeهﻮ اﻟﻤﺘﺤﻜﻢ ﺑﺎﻟﺒﻴﺎﻧﺎت وﻣﺪﻳﺮهﺎ ،وﻳﺘﻢ رﺑﻄﻬﺎ ﺑﺎﺳﺘﺨﺪام ﺧﺪﻣﺎت رﺑﻂ اﻟﺒﻴﺎﻧﺎت ﻣﻦ . SharePoint
-ﺗﺼﻤﻴﻢ ﺗﻄﺒﻴﻘﺎت ﺗﺴﺘﻔﻴﺪ ﻣﻦ إﻣﻜﺎﻧﻴﺎت ﻣﺰود ،SharePointوﺑﻨﺎء ﺗﻄﺒﻴﻘﺎت وﻳﺐ ﻟﻬﺎ ،ﻓﺈذا ﻋﻠﻤﻨﺎ اﻧﻪ ﻳﻤﻜﻦ اﻻﺳﺘﻔﺎدة ﻣﻦ أﺟﺰاء وﻳﺐ Web Parts
اﻟﺨﺎﺻﺔ ﺑـ SharePointﻓﻲ ﺗﻄﺒﻴﻘﺎت أﺧﺮى ،ﻓﺘﺨﻴﻠﻮا ﻣﻌﻲ اﻟﻔﻮاﺋﺪ اﻟﺘﻲ ﺗﺠﻨﻰ ﻣﻦ أﻣﺮ آﻬﺬا!
-ﺗﺼﻤﻴﻢ ﺗﻄﺒﻴﻘﺎت أآﺜﺮ أﻣﻨﺎ وأﺳﻬﻞ ﻓﻲ اﻟﺘﻄﻮﻳﺮ ،ﺣﻴﺚ ﺗﺪﻋﻲ ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ أن اﻹﺻﺪارات اﻟﻘﺎدﻣﺔ ﻣﻦ Visual Studioو Officeﺳﺘﻜﻮن ﺑﻨﻔﺲ
اﻟﺒﻨﻴﺔ اﻟﻘﺎدﻣﺔ ﻓﻲ اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ 2008واﻟﻤﻮﺟﻮدة ﻓﻲ أوﻓﻴﺲ 2007ﻣﺎ ﻳﻌﻨﻲ اﻧﻪ ﻳﻤﻜﻨﻚ اﺳﺘﺨﺪام ﺗﻘﻨﻴﺔ ClickOnceﻟﺘﺤﺰﻳﻢ ﺗﻄﺒﻴﻘﺎت أوﻓﻴﺲ
ﺑﻜﺎﻓﻪ إﻋﺪاداﺗﻬﺎ ،ﻣﻤﺎ ﻳﻌﻨﻲ أن اﻟﻤﻄﻮرﻳﻦ وﻣﺪراء اﻟﻤﻌﻠﻮﻣﺎﺗﻴﺔ ﻳﻤﻜﻨﻬﻢ اﻵن ﺗﻄﻮﻳﺮ وﺻﻴﺎﻧﺔ ﺗﻄﺒﻴﻘﺎت Officeاﻟﻤﺨﺼﺼﺔ ﺑﻜﻞ ﺳﻬﻮﻟﻪ وأآﺜﺮ ﻣﻦ أي
وﻗﺖ ﻣﻀﻰ .وهﺬا ﻳﻌﻨﻲ أﻳﻀﺎ أن ﺗﻄﻮﻳﺮ ﺗﻄﺒﻴﻘﺎت ﺗﻌﺘﻤﺪ ﻋﻠﻰ Microsoft Office 2007هﻮ أﻣﺮ ﺳﻬﻞ.
ﻳﺴﺘﻐﻞ اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ 2008اﻟﻤﻴﺰات اﻟﻤﺘﻮﻓﺮة ﻓﻲ وﻳﻨﺪوز ﻓﻴﺴﺘﺎ واﻹﺻﺪار 3.5ﻣﻦ إﻃﺎر اﻟﻌﻤﻞ دوت ﻧﺖ ،اﻷﻣﺮ اﻟﺬي ﻳﻤﻜﻦ
اﻟﻤﻄﻮرﻳﻦ ﻣﻦ ﺗﻄﻮﻳﺮ ﺗﻄﺒﻴﻘﺎت ﺗﺴﺘﻔﻴﺪ ﻣﻦ هﺬﻩ اﻟﺘﻘﻨﻴﺎت وﻣﺎ ﺗﺤﺘﻮﻳﻪ ﻣﻦ ﺗﺤﺴﻴﻨﺎت ﺟﺒﺎرة وﻃﻔﺮات آﺒﻴﺮة ﻓﻲ ﻋﺎﻟﻢ اﻟﻤﻌﻠﻮﻣﺎﺗﻴﺔ.
وأﻫﻢ اﻟﺘﻄﻮﻳﺮات اﻟﺘﻲ ﻳﺤﺘﻮﻳﻬﺎ اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ 2008ﻓﻲ ﻫﺬا اﻟﻤﺠﺎل ﻣﺎ ﻳﻠﻲ
/1ﺗﻘﻠﻴﻞ اﻟﻮﻗﺖ ﺣﻴﺚ ﻳﻤﻜﻦ اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ 2008اﻟﻤﻄﻮرﻳﻦ ﻣﻦ اﺳﺘﻐﻼل اﻟﻮﻗﺖ ﺑﺸﻜﻞ ﺟﺒﺎر ،ﻣﻦ ﺧﻼل:
-دﻋﻢ اﻟﻬﻴﺌﺎت اﻟﻌﺎﻣﺔ اﻟﻤﺨﺘﻠﻔﺔ اﻟﺘﻲ ﻳﻮﻓﺮهﺎ وﻳﻨﺪوز ﻓﻴﺴﺘﺎ و اﻹﺻﺪار 3.5ﻣﻦ إﻃﺎر اﻟﻌﻤﻞ دوت ﻧﺖ ﻣﺜﻞ XAML -وهﺬﻩ ﺑﺤﺎﺟﻪ إﻟﻰ ﺗﻔﺼﻴﻞ
ﻟﻠﺒﻌﺾ -ﻟﻠﺘﺤﻜﻢ اﻷﻗﻮى واﻷﺳﻬﻞ ﺑﺘﺼﻤﻴﻢ اﻟﻨﻮاﻓﺬ واﻟﺘﺤﻜﻢ ﺑﺨﺼﺎﺋﺺ اﻷدوات وﺗﺼﻤﻴﻤﻬﺎ ورﺑﻄﻬﺎ ﺑﻤﺼﺎدر اﻟﺒﻴﺎﻧﺎت ،ﻓﻤﺜﻼ اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ
2008ﻳﺪﻋﻢ اﺳﺘﺨﺪام Microsoft Expression Suiteاﻟﺬي ﻳﺴﺎﻋﺪ ﻓﻲ ﺗﺼﻤﻴﻢ اﻟﻨﻮاﻓﺬ واﻷدوات وﺗﺼﺪﻳﺮهﺎ آﻤﻠﻔﺎت ﺗﺼﻤﻴﻢ ﺧﺎﺻﺔ إﻟﻰ
اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ 2008ﻟﻴﺘﻤﻜﻦ اﻟﻤﻄﻮر ﺑﻌﺪهﺎ وﺑﺴﻬﻮﻟﻪ ﻣﻦ إآﻤﺎل ﻋﻤﻠﻪ وﻣﺒﺎﺷﺮﻩ آﺘﺎﺑﻪ اﻷآﻮاد.
-اﻵن أﺻﺒﺢ ﺳﻬﻼ اﻻﻋﺘﻤﺎد ﻋﻠﻰ ﻃﻘﻢ Microsoft Officeآﻤﻨﺼﺔ ﻋﻤﻞ وﺗﻄﻮﻳﺮ ﺗﻄﺒﻴﻘﺎت ﺗﻌﺘﻤﺪ واﺟﻬﺘﻬﺎ ﻋﻠﻰ اﻟﻮاﺟﻬﺔ اﻟﻤﻮﺟﻮدة ﻓﻲ ﺗﻄﺒﻴﻘﺎت
أوﻓﻴﺲ و SharePoint -ﺷﺨﺼﻴﺎ ﻟﻢ اﻓﻬﻢ هﺬﻩ اﻟﻨﻘﻄﺔ ﻟﺤﺪ اﻵن!
ﺣﻴﺚ ﻳﻤﻜﻦ اﻵن ﻟﻠﻤﻄﻮرﻳﻦ ﺗﻄﻮﻳﺮ ﺗﻄﺒﻴﻘﺎت ﺗﻌﺘﻤﺪ ﻋﻠﻰ 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اﻟﺘﻲ ﺗﺮﺟﻤﺖ ﻗﺎﻋﺪة ﺑﻴﺎﻧﺎت Northwindاﻟﺸﻬﻴﺮة
وﻳﻮﺿﺢ هﺬا اﻟﻔﻴﺪﻳﻮ آﻴﻔﻴﺔ اﺳﺘﺨﺪام هﺬا اﻟﻤﺤﺮر آﺘﺎﺑﻪ ﺑﻌﺾ اﻷآﻮاد ﺑﻬﺬﻩ اﻟﺘﻘﻨﻴﺔ .ﻟﻠﻤﺰﻳﺪ ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎت ﺣﻮل هﺬا اﻟﻔﻴﺪﻳﻮ اﻟﺮﺟﺎء اﻟﻨﻘﺮ هﻨﺎ .وﺧﺬهﺎ
ﻧﺼﻴﺤﺔ ﻣﻨﻲ ،ﻻ ﺗﻔﻮت اﻟﻔﻠﻢ اﻟﺴﺎﺑﻖ وﺣﺎول ﻗﺪر اﻹﻣﻜﺎن أن ﺗﺸﺎهﺪﻩ ﻗﺒﻞ أن ﺗﻜﻤﻞ هﺬﻩ اﻟﻤﻘﺎﻟﺔ ﻷﻧﻪ ﺑﺎﻟﻔﻌﻞ ﻳﻮﺿﺢ ﻟﻚ اﻻﺳﺘﺨﺪام اﻟﻌﻤﻠﻲ ﻟﻬﺬﻩ اﻟﺘﻘﻨﻴﺔ
ﺑﻠﻐﻪ #Cوﻃﺒﻌﺎ ﻣﻊ VB.NETﺳﻴﻜﻮن ﻣﺜﻠﻪ وﺳﻴﻜﺸﻒ ﻟﻚ اﻟﻜﺜﻴﺮ ﻣﻦ اﻟﻐﻤﻮض!
11
اﻟﻌﺪد 01ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ /ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ 2008 ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ vb4arab.com
ﻣﻘﺪﻣﺔ إﻟﻰ اﻟﺘﻘﻨﻴﺎت اﻟﻘﺎدﻣﺔ ﻣﻊ اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ 2008
ﻣﺤﻤﺪ اﻟﻨﺒﻬﺎﻧﻲ
اﻟﻤﺒﺎﺷﺮ ﻟﻠﺠﺪاول واﻟﻜﺎﺋﻨﺎت اﻷﺧﺮى
وﻧﻼﺣﻆ ﻣﻦ هﺬﻩ اﻟﺼﻮرة آﻴﻒ أن ﻗﺎﻋﺪة اﻟﺒﻴﺎﻧﺎت ﺗﻈﻬﺮ ﺟﺪاوﻟﻬﺎ آﻔﺌﺎت net.وهﻨﺎ اﻟﺴﺮ ﻓﻲ آﻴﻔﻴﺔ اﻻﺳﺘﺨﺪام
ﻟﻘﺎﻋﺪة اﻟﺒﻴﺎﻧﺎت ﻓﻲ ﺷﻔﺮاﺗﻚ
ﻣﻦ ﺧﻼل ﻣﺤﺎوﻟﻪ ﻗﺮاءﻩ اﻟﻜﻮد اﻟﺴﺎﺑﻖ ﻧﺠﺪ اﻧﻪ ﻳﻘﺎﺑﻞ ﺷﻴﺌﺎ ﻣﺜﻞ اﻟﺠﻤﻠﺔ اﻟﺘﺎﻟﻴﺔ ﻓﻲ SQL
ﻛﻮد:
"SELECT P FROM Products WHERE Category.CategoryName = "Beverages
ﻟﻜﻨﻨﺎ ﻧﻼﺣﻆ اﻧﻪ ﻣﻦ اﺣﺪ اﻟﻔﻮاﺋﺪ اﻟﺮﺋﻴﺴﻴﺔ هﻨﺎ أﻧﻨﺎ ﺣﺼﻠﻨﺎ ﻋﻠﻰ آﺎﺋﻦ ﻳﺴﻤﻰ Productsﻳﺤﺘﻮي ﻋﻠﻰ ﻧﺎﺗﺞ اﻟﺠﻤﻠﺔ اﻟﺴﺎﺑﻘﺔ ﺑﺸﻜﻞ ﻣﺒﺎﺷﺮ!
اﻟﻜﻮد اﻟﺘﺎﻟﻲ ﻳﻤﺜﻞ ﻣﻘﺎﺑﻞ ﻟﺠﻤﻠﻪ اﺳﺘﻌﻼم ﻟﺘﺤﺪﻳﺚ اﻟﺠﺪول Productsﻓﻲ اﻟﺴﺠﻞ اﻟﺬي ﺗﻜﻮن ﻓﻴﻪ ﻗﻴﻤﻪ اﻟﺤﻘﻞ ProductNameﺗﺴﺎويToy 1
12
اﻟﻌﺪد 01ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ /ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ 2008 ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ vb4arab.com
ﻣﻘﺪﻣﺔ إﻟﻰ اﻟﺘﻘﻨﻴﺎت اﻟﻘﺎدﻣﺔ ﻣﻊ اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ 2008
ﻣﺤﻤﺪ اﻟﻨﺒﻬﺎﻧﻲ
ﻻﺣﻆ آﻴﻒ أن ﻋﻤﻠﻴﻪ اﻟﺤﻔﻆ واﻟﺘﻌﺪﻳﻞ أﺻﺒﺤﺖ ﺳﻬﻠﻪ؟ أﻟﻴﺲ ﻣﺎ ﺗﺮﻳﺪﻩ أﻧﺖ آﻤﺒﺮﻣﺞ هﻮ اﻟﺤﺼﻮل ﻋﻠﻰ ﻃﺮق أﺳﻬﻞ ﻟﻠﻌﻤﻞ وﺗﻘﻠﻴﻞ ﺣﺠﻢ اﻟﻜﻮد ﻟﺘﻨﻔﻴﺬ
ﻋﻤﻠﻴﻪ ﻣﻌﻴﻨﻪ ﻣﻊ اﻻﺣﺘﻔﺎظ ﺑﺘﺤﻜﻢ ﺟﻴﺪ ﺑﻞ ﻣﻤﺘﺎز ﺑﺎﻟﻌﻤﻞ ؟ هﺬا ﻣﺎ ﺗﻘﺪﻣﻪ ﺗﻘﻨﻴﺔ LINQﻟﻠﻤﺒﺮﻣﺠﻴﻦ ﻓﻲ ﻣﺠﺎل ﻗﻮاﻋﺪ اﻟﺒﻴﺎﻧﺎت!
وهﺬا ﻣﺜﺎل ﺑﺎﻟﻜﻮد ﻟﺤﺬف ﺟﻤﻴﻊ اﻟﺴﺠﻼت اﻟﺘﻲ ﺗﺤﺘﻮي ﻋﻠﻰ " "Toyﻓﻲ اﻟﺤﻘﻞ CategoryName
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
ﺣﻤﺎﻳﺔ اﻟﻤﻠﻜﻴﺔ اﻟﻔﻜﺮﻳﺔ ..ﺣﻤﺎﻳﺔ ﻟﻠﻌﻘﻞ
ﺗـﺮﻛــﻲ اﻟـﻌــﺴـﻴـﺮي
ﻗﺎﻧﻮن ﺣﻤﺎﻳﺔ اﻟﻤﻠﻜﻴﺔ اﻟﻔﻜﺮﻳﺔ ﻓﻲ أي ﺑﻠﺪ ﻳﻘﻮم ﺑﺤﻤﺎﻳﺔ أﻏﻠﻰ
ﺑﻜﻞ ﺗﺄآﻴﺪ ﻟﻦ أﻗﻒ ﻣﻜﺘـــﻮف اﻷﻳﺪي ﺷﺎﻋﺮًا ﺑﺎﻻآﺘﻔﺎء اﻟﺬاﺗﻲ ،ﺑﻞ ﺳﺘﺰﻳﺪ وأﺛﻤﻦ آﻨﺰ ﻣﻦ ﺛﺮوات اﻟﺒﻠﺪ وهﻮ اﻟﻌﻘــــــــﻞ ،وﻟﺬﻟﻚ ﻳﻤﻜﻨﻨﺎ أن ﻧﻄﻠﻖ
ﻣﻦ ﺣﻤﺎس اﻟﺸﺨﺺ واﻟﺘﻄﻠﻊ إﻟﻰ اﻟﺘﻄﻮﻳﺮ واﻟﺘﻨﻤﻴﺔ ﻓﻲ هﺬا اﻟﻤﺠﺎل، ﻋﻠﻴﻬﺎ أﻳﻀﺎ ﺣﻤﺎﻳﺔ اﻟﻤﻠﻜﻴﺔ اﻟﻌﻘﻠﻴﺔ ،اﻟﺘﻲ ﺗﻬﺪف إﻟﻰ ﺣﻔﻆ ﺣﻘﻮق اﻟﺘﺄﻟﻴﻒ
وﻳﺒﺪأ ﺑﺎﻟﻌﻤﻞ أآﺜﺮ ﻣــــﻦ اﻟﻤﺮة اﻟﺴﺎﺑﻘﺔ ﻻﺳﺘﻤﺮار إﻧﺘﺎﺟﻴﺘﻪ .ﻣﻦ ﻧﺎﺣﻴﺔ اﻟﻨﺎﺗﺠــــﺔ ﺑﺸﻜﻞ رﺋﻴﺴﻲ ﻣﻦ ﻓﻜﺮ اﻹﻧﺴﺎن وآﻞ ﻣﺠﻬﻮد ﻋﻘﻠﻲ ﻳﻘﻮم ﺑﻪ،
أﺧﺮى ،ﻋﻨﺪ ﻗﻴﺎم اﻟﻤﺨﺮﺑﻴﻦ ﺑﻨﺴﺦ ﻣﺎ ﺟﻔﺖ ﻋﻠﻴﻪ أﻗﻼﻣﻲ ﻣﻦ اﻟﺘﻌـﺐ، واﻟﺘﻲ ﺗﺘﺸﻜﻞ ﺑﺼﻮر ﻣﺨﺘﻠﻔﺔ :آﺘﺄﻟﻴﻒ اﻟﻜﺘــــــــﺐ ،آﺘﺎﺑﺔ اﻟﻤﻘﺎﻻت
وﺑﺎدر اﻟﺠﻤﻴﻊ ﺑﺨﺮق ﻗﺎﻧﻮن ﺣﻤﺎﻳﺔ اﻟﻤﻠﻜﻴﺔ اﻟﻔﻜﺮﻳﺔ ،ﻓﺴﺘﺠﺪ اﻹﺣﺒﺎط اﻟﻌﻠﻤﻴﺔ ،اﺑﺘﻜﺎر ﻃﺮق إدارﻳﺔ ،اﻟﺼﻮر واﻟﺮﺳﻮم ،اﻷﻓﻼم اﻟﻤﺮﺋﻴﺔ
واﻟﻴﺄس ﻋﻨﺪ هﺬا اﻟﺸﺨﺺ ﻣﺎ اﻟﺬي ﻻ ﻳﻌﻠﻤـﻪ إﻻ اﻟﺬي ذاﻗﻪ ﻓﻘﻂ ،ﺑﻞ ﻗﺪ واﻟﻤﺴﻤﻮﻋﺔ ،واﻷهﻢ ﻣﻦ هﺬا آﻠـــــﻪ ﺗﻄﻮﻳــــﺮ ﺑﺮاﻣﺞ اﻟﻜﻤﺒﻴﻮﺗﺮ.
ﺗﺼﻞ اﻷﻣﻮر إﻟﻰ آﺮﻩ اﻟﻤﺠﺘﻤﻊ اﻟﺬي ﺣﻮﻟﻪ ،وﻋﺪ اﻟﺘﻔﻜﻴﺮ ﻣﻄﻠﻘﺎ ﺑﻨﻔﻌﻬــﻢ واﻹﺟﺮاءات اﻟﺮوﺗﻴﻨﻴﺔ اﻟﺘﻲ ﺗﺘﺒﻌﻬﺎ اﻟﺪول ﻟﺤﻔﻆ هﺬﻩ اﻟﺤﻘﻮق ﺗﻜﻮن
أو ﺗﻄﻮﻳﺮهﻢ ،وإن آﺎن ﺷﺨﺼ ًﺎ ﻣﺤﻈﻮﻇًﺎ ﻗﺪ ﻳﺒﺪأ ﻳﻔﻜﺮ ﻓﻲ اﻟﺴﻔﺮ أو ﻣﺨﺘﻠﻔﺔ ،وﻟﻜﻦ ﻓﻲ أﻏﻠــﺐ اﻷﺣﻮال ﺗﺘﻢ ﺑﻌﺪ ﻗﻴﺎم ﺻﺎﺣﺐ اﻻﺑﺘﻜﺎر واﻟﻔﻜﺮة
اﻟﻬﺠﺮة ،أو ﺗﺠﺪﻩ ﻓﻲ اﻟﻤﻘﺎهﻲ ﻳﺴﺐ وﻳﺸﺘﻢ وﻳﻤﺎرس ﺣﻴﺎة ﺑﺎﺋﺴﺔ ﺗﻘﻠﻴﺪﻳﺔ . ﺑﺘﺴﺠﻴﻞ ﻓﻜﺮﺗﻪ واﻟﺤﺼﻮل ﻋﻠﻰ ﺣﻘـــﻮق اﻟﺘﺄﻟﻴــــﻒ وأﺧـﺬ ﺑﺮاءة
اﻻﺧﺘﺮاع ﻣﻦ إﺣﺪى اﻟﺠﻬﺎت اﻟﺤﻜﻮﻣﻴﺔ واﻟﻤﺴﺌﻮﻟﺔ ﻋﻦ ﺣﻤﺎﻳﺔ ﺣﻘﻮق
اﻟﺪﻋﻮة إﻟﻰ اﻻﺑﺘﻜﺎر ،Creativityآﻤﺎ ذآﺮت ﻓﻲ ﺑﺪاﻳﺔ هﺬا
اﻟﻤﻠﻜﻴﺔ اﻟﻔﻜﺮﻳﺔ ﻓﻲ اﻟﺪوﻟـــــــﺔ ،وﻗﺪ ﺗﻜـﻮن هﻨﺎك رﺳﻮم ﺑﺴﻴﻄﺔ ،وﺑﻤﺠﺮد
اﻟﻤﻘﺎل ،ﻓﺈن اﻟﻌﻘﻞ اﻟﺒﺸﺮي هﻮ أﺛﻤﻦ وأﻏﻠﻰ ﻣﺼﺪر ﻋﻠﻰ أي دوﻟﺔ اﻟﺤﻔﺎظ
ﻗﻴﺎم اﻟﺸﺨﺺ ﺑﺎﻟﺘﺴﺠﻴﻞ ،ﻓﻘﺪ ﺿﻤﻦ ﻟﻨﻔﺴﻪ وﻋﻘﻠﻪ اﻟﺤﻔﺎظ ﻋﻠﻰ ﻣﻤﺘﻠﻜﺎﺗﻪ
ﻋﻠﻴﻪ وﺣﻤﺎﻳﺔ ﺣﻘﻮﻗﻪ ،وﻻ ﻳﺨﺘﻠﻒ ﺷﺨﺼﺎن ﻋﻠﻰ أن ﺗﻄﻮر اﻷﻓﺮاد
ﻣﻦ اﻟﻨﺴﺦ واﻟﺘﺰوﻳﺮ واﻟﺴﺮﻗﺔ -أي ﻣﻦ اﻟﻘﺮﺻﻨﺔ Piracyﺑﺸﻜﻞ ﻋﺎم .
واﻟﻤﺠﺘﻤﻌﺎت ﻧﺎﺗــﺞ ﻣﻦ اﻻﺑﺘﻜﺎر وﺧﻠﻖ أﻓﻜﺎر ﺟﺪﻳﺪة واﻟﺘﻔﻜﻴﺮ ﻓﻲ ﺣﻠﻮل
ﺗﺰﻳﺪ ﻣﻦ إﻧﺘﺎﺟﻴﺔ اﻟﻔﺮد واﻟﻤﺠﺘﻤﻊ .ﻣﻦ اﻟﺜﻘﺎﻓﺎت اﻟﺘﻲ ﺗﺮﺑﻴﻨﺎ ﻋﻠﻴﻬﺎ ﻣﻨﺬ اﻟﻨﻈﺮة اﻻﻗﺘﺼﺎدﻳﺔ ﺗﺸﻴﺮ إﻟﻰ أن اﻹﻧﺴﺎن ﻟﻴﺲ ﺑﺤﺎﺟﺔ إﻟﻰ
ﻧﻌﻮﻣﺔ أﻇﻔﺎرﻧﺎ -ﻧﺘﻴﺠﺔ ﻟﻠﻌﻮاﻣﻞ اﻟﺘﻌﻠﻴﻤﻴﺔ واﻻﺟﺘﻤﺎﻋﻴﺔ -هﻮ اﻻﻧﻘﻴﺎد ﺷﻬﺎدة ﻓﻲ ﺗﺨﺼﺺ ﻋﻠﻢ اﻻﻗﺘﺼﺎد ﺣﺘــﻰ ﻳﻘﺘﻨـــــﻊ أن دﺧﻮل أي ﺻﻨﺎﻋﺔ
وﻋﺪم اﻟﺘﻔﻜﻴﺮ ﻣﻄﻠﻘًﺎ ﻓﻲ اﺳﺘﺨﺪام آﻠﻤــﺔ »ﻟﻤﺎذا؟« ﻓﺘﺠﺪﻧﺎ ﻣﻨﻘﺎدﻳﻦ دون ﺟﺪﻳﺪة وﺗﻄﻮر ﺗﻘﻨﻲ ﺗﺸﻬﺪﻩ أي ﺑﻠﺪ ﻳﺆدي إﻟﻰ زﻳﺎدة ﻓﻲ اﻟﻨﺎﺗــﺞ اﻟﻘﻮﻣﻲ
أن ﻧﻌﺮف ﻟﻤﺎذا وإﻟﻰ أﻳﻦ ﻧﻨﻘﺎد ،وﻳﺼﺒﺢ ﺗﻔﻜﻴﺮﻧﺎ ﻣﺤﺪودًا ﻻ ﻳﺘﻌﺪى ﻧﻄﺎق ﻼ وأﺧﺬت اﻟﺼﻨﺎﻋﺎت اﻟﺤﺪﻳﺜﺔ اﻟﻤﺤﻠﻲ GDPﻟﻠﺪوﻟﺔ .وﻟﻮ ﻓﻜﺮت ﻗﻠﻴ ً
اﻟﻤﻜـﺎن اﻟﺬي ﺳﻨﻘﻀﻲ ﻓﻴﻪ اﻟﻠﻴﻠﺔ ﺑﻌﺪ ﻧﻬﺎﻳﺔ ﻳﻮم اﻟﻌﻤـــﻞ أو ﻣﻜﺎن ﻗﻀــﺎء آﺎﻻﺗﺼﺎﻻت واﻟﻄﻴﺮان ووﺳﺎﺋﻞ اﻟﺘﺮﻓﻴﻪ وﻏﻴﺮهــﺎ ،ﺳﺘﺠـﺪ أﻧﻬـــــﺎ
اﻟﻌﻄﻠــﺔ اﻟﺼﻴﻔﻴـــﺔ ،وهﺬا اﻟﺸـﻲء -ﻣﻊ اﻷﺳﻒ اﻟﺸﺪﻳﺪ -ﻣﻨﻐﺮس ﻓﻴﻨﺎ ﺳﺎهﻤﺖ ﻓﻲ زﻳﺎدة اﻗﺘﺼﺎد اﻟﺪوﻟﺔ ،ووﻓﺮت ﺁﻻف اﻟﻔﺮص اﻟﻮﻇﻴﻔﻴﺔ .ﻟﻴﺲ
وﻓﻲ ﺛﻘﺎﻓﺘﻨﺎ .إﻣﺎ أن ﺑﺪأ اﻟﺸﺨﺺ ﻳﺴﺄل وﻳﻜﺜﺮ ﻣﻦ اﺳﺘﺨﺪام اﻟﻜﻠﻤﺔ هﺬا ﻓﻘﻂ ،ﺑﻞ إن دﺧﻮل أي ﺻﻨﺎﻋـــــﺔ ﺟﺪﻳﺪة ﻳﻨﺘﺢ ﻋﻨﻪ ارﺗﺒﺎﻃﺎت ﻟﺠﻬﺎت
»ﻟﻤـــﺎذا؟« ﻓﻬﻨﺎ ﺳﺘﻜــﻮن ﺑﺪاﻳﺔ اﻟﻄﺮﻳﻖ إﻟﻰ ﻋﺎﻟﻢ اﻻﺑﺘﻜﺎر واﻟﻨﻈﺮ إﻟﻰ أﺧﺮى ،ﻓﻠﻮ ﺗﺄﺧﺬ اﻟﻬﺎﺗﻒ ﻋﻠﻰ ﺳﺒﻴﻞ اﻟﻤﺜﺎل ﻻ اﻟﺤﺼﺮ ،ﺳﺘﺠﺪ ﻓﺮﺻـﺎ
اﻷﻣﻮر ﻣﻦ زواﻳﺎ أﺧﺮى ،ﻓﻌﻨﺪﻣﺎ أرى ﻣﺸﻜﻠﺔ ﻣﺎ ﻓﻲ ﺟﻬﺔ ﺗﻨﻈﻴﻤﻴﺔ، أﺧﺮى ﻟﺒﻴﻊ أﺟﻬﺰة اﻟﺠﻮال واﻻﺗﺼﺎﻻت ،ﺑـﻞ ﺣﺘﻰ دﺧــــﻠﺖ ﺷﺮآـــﺎت
أﺳﺘﻄﻴﻊ أن أﻃﺮح أﺳﺌﻠﺔ ﻟﻤﺎذا؟ ﻟﻤﺎذا ﻻ ﻧﻘﻮم ﺑﺘﻐﻴﻴﺮ ﻃﺮﻳﻘﺔ إﺟﺮاء هﺬﻩ اﻹﻋﻼﻧــﺎت اﻟﻬﺎﺗﻔﻴـــﺔ ،وهﻨﺎك ﺷﺮآﺎت اﻟﺘﺮﻓﻴﻪ اﻟﻤﺘﺨﺼﺼﺔ ﻓﻲ اﻟﻨﻐﻤﺎت
اﻟﻤﻌﺎﻣﻠﺔ ﺣﺘﻰ ﻧﺨﺘﺼﺮ اﻟﻮﻗﺖ ،ﻟﻢ ﻻ ﻧﻘﻮم ﺑﺘﺤﻮﻳﻞ اﺳﺘﺨﺪام هﺬﻩ اﻟﺨﻄﻮات واﻟﺮﻣﻮز ﻋﻠﻰ اﻷﺟﻬﺰة ،وﻇﻬﺮت ﺷﺮآﺎت أﺧﺮى ﻟﺼﻴﺎﻧﺔ أﺟﻬﺰة اﻟﺠﻮال
ﻣﻦ ﻗﺎﻋﺪ ورﻗﻴﺔ إﻟﻰ ﻗﺎﻋﺪة ﻣﻌﻠﻮﻣﺎﺗﻴﺔ؟ وﻏﻴﺮهﺎ ﻣﻦ اﻷﺳﺌﻠﺔ اﻟﺘﻲ ﺗﻨﺘﺞ ﻓﻲ وﺧﺪﻣـــﺎت اﻟﺪﻋﻢ اﻟﻔﻨﻲ ،وﻋﺸﺮات اﻟﺸﺮآﺎت اﻷﺧﺮى اﻟﻤﺘﻌﺎﻗﺪة
ﻻ ﺟﺪﻳﺪة ،ﻓﺎﻟﺤﺎﺟﺔ هﻲ أم اﻻﺧﺘﺮاع .إن ﻧﻈــﺮﻧﺎ إﻟﻰ اﻟﻨﻬﺎﻳﺔ أﻓﻜﺎرا وﺣﻠﻮ ً Contractorsﻣﻊ اﻟﺸﺮآﺔ اﻷم ،واﻟﻤﺰﻳﺪ واﻟﻤﺰﻳـــﺪ )وآﻠﻪ ﻓﻲ اﻟﻨﻬﺎﻳﺔ
ﻣﺠﺘﻤﻌﻨــﺎ اﻟﺴﻌﻮدي ﺑﺸﻜـــﻞ ﺧﺎص؛ ﻓﻠﺪﻳﻪ ﻣﻦ اﻟﻄﺎﻗﺎت اﻟﻜﺎﻣﻨﺔ اﻟﺘﻲ ﻣﻦ ﻣﺼﻠﺤﺔ اﻟﻤﻮاﻃﻦ ﻓﻲ ﺗﻮﻓﻴﺮ اﻟﻤﺰﻳﺪ ﻣﻦ اﻟﻔﺮص اﻟﻮﻇﻴﻔﻴﺔ( ،ﻓﻠﻮ ﺗﻼﺣﻆ
ﺗﺴﺎوي ﻣﻞء اﻷرض ذهﺒًﺎ ،وأﺧﺘﺺ ﺑﺎﻟﻄﺎﻗﺎت اﻟﻜﺎﻣﻨﺔ هﻨﺎ ﺑﺎﻟﻄﺎﻗﺎت أن ﺟﻤﻴﻌﻬﺎ ﻇﻬﺮت ﺑﺴﺒﺐ دﺧﻮل ﺷﺮآﺔ اﺗﺼﺎﻻت ﻓﻲ دوﻟﺔ ﻣﺎ ،وإﻧﻬﺎ
اﻟﻌﻘﻠﻴﺔ ﻓﻲ اﻟﻌﻨﺼـــﺮ اﻟﺒﺸﺮي ،اﻟﺘﻲ إن اﺳﺘﺜﻤﺮت ﺑﺸﻜﻞ ﺻﺤﻴﺢ ﺳﺘﻐﻄﻲ ﻣﺮﺗﺒﻄﺔ ﺑﻪ ارﺗﺒﺎﻃًﺎ وﺛﻴﻘًﺎ .آﺬﻟﻚ اﻟﺤﺎل ﻣﻊ ﺻﻨﺎﻋـــــﺔ اﻟﺒﺮﻣﺠﻴــــﺎت
ﻣﺎ ﻳﻘﻠﻞ اﻋﺘﻤﺎدﻧﺎ ﻋﻠﻰ اﻟﻤﺼــﺎدر اﻷﺧﺮى ،ﻓﻬﺬا ﺷـﺎب ﻟﻪ ﻣﻦ اﻷﻓﻜﺎر ،Software Industryﻓﻌﻨﺪﻣﺎ ﺗﺜﺒﺖ هﺬﻩ اﻟﺼﻨﺎﻋﺔ وﺟﻮدهﺎ ﻓﻲ أي
اﻟﻜﺜﻴﺮ ،وهﺬﻩ ﺷﺎﺑﺔ ﻟﻬﺎ ﻣﻦ اﻹﺑﺪاﻋﺎت ﻣﺎ ﻳﻔـﻮق اﻟﺘﻮﻗﻌـــﺎت ،وﻋﺪم وﺟﻮد دوﻟﺔ ،ﺳﺘﻼﺣﻆ زﻳﺎدة ﻓﻲ ﻣﺒﻴﻌﺎت أﺟﻬــﺰة اﻟﻜﻤﺒﻴﻮﺗﺮ ،وﺳﺘﻈﻬﺮ اﻟﻤﺰﻳﺪ
اﻟﻔﺮص اﻟﺴﺎﻧﺤــــﺔ ﻟﻬـــﻢ واﻹﻣﻜﺎﻧﺎت ﺷﻲء ﻣﺤﺒﻂ وﻣﻐﻴﻆ ،وﻗﺪ ﻳﺤﻮل ﻣﻦ ﻣﻌﺎهﺪ ﺗﻘﺪم دورات ﺗﺪرﻳﺒﻴﺔ ،وﺳﺘﻜﻮن هﻨﺎك ﺟﻬﺎت وﺷﺮآــﺎت
اﻹﻧﺴﺎن ﻣﻦ ﺷﺨﺺ ﻣﻨﺘﺞ إﻟﻰ ﻣﺴﺘﻬـــــــﻠﻚ .واﻟﺘﺠـــﺮﺑﺔ اﻟﻬﻨﺪﻳـــﺔ ﺧﻴـﺮ اﺳﺘﺸﺎرﻳﺔ ﻟﻠﻤﺸﺎرﻳﻊ اﻟﻜﺒﻴﺮة ،وﺳﻴﺰداد اﻟﻄﻠﺐ ﻋﻠﻰ ﺷﺮآﺎت أﻣﻦ
دﻟﻴﻞ ،ﻓﻘﺪ أﺻﺒﺤﺖ اﻟﺸﺮآﺎت اﻷوروﺑﻴﺔ واﻷﻣﺮﻳﻜﻴﺔ ﺗﺴﺘﻮرد ﻋﺸﺮات اﻟﻤﻌﻠﻮﻣﺎت Securityوﺷﺮآﺎت إﻧﺘﺎج وﺣﺪات اﻟﺘﺨﺰﻳـﻦ Storage
اﻵﻻف ﻣﻦ اﻟﻬﻨﻮد ﺳﻨﻮﻳــــﺎ ﺑﺴﺒــﺐ ﻋﻘﻮﻟﻬـﻢ. ،Mediumsوﺳﺘﻜﻮن اﻟﺤﺎﺟﺔ ﻟﻤﺰﻳﺪ ﻣﻦ اﻟﻤﺒﺮﻣﺠﻴﻦ واﻟﻤﺼﻤﻤﻴﻦ
واﻟﻤﻬﻨﺪﺳﻴﻦ ،و ..و ..وﻏﻴﺮهــــﺎ اﻟﻜﺜﻴﺮ .وهﺬﻩ اﻟﻘﻔﺰات اﻹﻳﺠﺎﺑﻴﺔ ﻧﺘﻴﺠﺘﻬﺎ
أﺛﺒﺖ ﻗﺎﻧﻮن ﺣﻤﺎﻳـــﺔ اﻟﻤﻠﻜﻴـــﺔ اﻟﻔﻜﺮﻳﺔ وﻋﻮدﻩ ﻋﻨﺪ ﺗﻄﺒﻴﻘـــﻪ
ﻗﺎﻋﺪة ﺛﺎﺑﺘﺔ ﻋﻨﺪ دﺧﻮل أي ﺻﻨﺎﻋﺔ ﺟﺪﻳﺪة .
ﻓﻲ اﻟﺪول اﻟﻤﺘﻘﺪﻣﺔ ﺑﻬـــﺪف ﺣﻤﺎﻳﺔ ﻋﻘـــﻮل اﻷﻓﺮاد واﻧﺘﺎﺟﺎﺗﻬﻢ اﻟﻔﻜﺮﻳﺔ
ﻓﻲ اﻟﻤﺠﺘﻤﻊ ،وهﻮ ﻳﺆدي إﻟﻰ زﻳﺎدة ﻧﻤﻮ اﻟﻤﺠﺘﻤﻌــــﺎت ﻣﻦ ﻧﻮاح ﻋﺪة اﻟﻨﻈﺮة اﻟﺘﻨﻤﻮﻳﺔ ،ﻋﻨﺪﻣﺎ ﻳﻘﻮم أﺣﺪ اﻷﺷﺨﺎص ﺑﺈﻧﺘﺎج ﺑﺮﻧﺎﻣﺞ أو
آﺎﻟﻨﻮاﺣﻲ اﻻﻗﺘﺼﺎدﻳﺔ واﻟﺘﻨﻤﻮﻳﺔ واﻟﺒﺸﺮﻳﺔ ،وهﻮ أﻳﻀًﺎ اﻟﻌﺎﻣﻞ اﻟﺮﺋﻴﺴﻲ ﺗﻄﺒﻴﻖ ﻓﻜﺮة ﻧﺎﺟﺤﺔ ﻟﻬﺎ ﺻﺪى ،ﻓﺎﻟﻨﺘﻴﺠﺔ ﺳﺘﻜـﻮن واﺣﺪة ﻣﻦ اﺛﻨﺘﻴﻦ :أﻣﺎ
ﻟﺨﻠﻖ أﻓﻜﺎر ﺟﺪﻳﺪة وﺗﻄﻮﻳــــــﺮ اﻟﺼﻨﺎﻋـﺎت .وﻟﻮ ﻧﻈﺮﻧﺎ ﻓﻲ ﺷﺮﻳﻌﺘﻨﺎ اﻻﺳﺘﻤﺮار ﻓﻲ ﺗﻄﻮﻳﺮ هﺬﻩ اﻟﻔﻜﺮة وزﻳﺎدة اﻹﻧﺘﺎﺟﻴـــﺔ Productivity
اﻟﺴﻤﺤﺔ ،ﻻآﺘﺸﻔﻨﺎ أن اﻟﺪﻋﻮة إﻟﻰ ﺣﻤﺎﻳﺔ اﻟﻤﻠﻜﻴﺔ اﻟﻔﻜﺮﻳﺔ ﻣﻨﺬ 1400ﺳﻨﺔ اﻟﺘﻲ ﺗﻘــﺪﻣﻬﺎ ،وإﻣﺎ اﻹﺣﺒﺎط واﻟﻴﺄس ﺳﻴﻜﻮن ﻣﻦ ﻧﺼﻴﺒﻪ .ﻓﻠﻮ ﻗﻀﻴﺖ
ﻣﺬآﻮرة ﻓﻲ اﻟﻘﺮﺁن اﻟﻜﺮﻳﻢ ﻓﻲ ﻗﻮﻟﻪ ﺗﻌﺎﻟﻰ ﺑﺴﻮرة اﻟﻨﺴﺎء )) ﻳﺎ أﻳﻬﺎ اﻟﺬﻳﻦ ﻋﺸﺮات اﻷﺷﻬﺮ ﻓﻲ آﺘﺎﺑﺔ آﺘﺎب أو ﺗﻄﻮﻳﺮ ﺑﺮﻧﺎﻣﺞ ،وﺗﻤــــــﺖ ﺣﻤﺎﻳﺔ
اﻣﻨﻮا ﻻ ﺗﺄآﻠﻮا أﻣﻮاﻟﻜﻢ ﺑﻴﻨﻜﻢ ﺑﺎﻟﺒﺎﻃﻞ إﻻ أن ﺗﻜﻮن ﺗﺠﺎرة ﻋﻦ ﺗﺮاض ﺣﻘﻮق ﻣﻠﻜﻴﺘﻲ اﻟﻔﻜﺮﻳﺔ ﻟﻪ ،ﻓﻤﺎذا ﺳﺘﻜﻮن اﻟﻨﺘﻴﺠﺔ؟
ﻣﻨﻜﻢ (( وﻓﻲ ﺳﻮرة اﻟﺒﻘﺮة )) وﻻ ﺗﺄآﻠﻮا أﻣﻮاﻟﻜﻢ ﺑﻴﻨﻜﻢ ﺑﺎﻟﺒﺎﻃﻞ (( …
16
اﻟﻌﺪد 01ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ /ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ 2008 ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ vb4arab.com
-اﻟﻮﺣﺪة رﻗﻢ :4اﻟﻌﻼﻣﺎت اﻟﺘﺠﺎرﻳﺔ. • زﻳﺎدة اﻟﺒﻌﺜﺎت اﻟﺪراﺳﻴﺔ ﻣﻦ ﺣﻮل اﻟﻌﺎﻟﻢ إﻟﻰ اﻟﻤﻌﺎهﺪ واﻟﺠﺎﻣﻌﺎت
اﻟﺴﻌﻮدﻳﺔ ﻟﺘﻌﻠﻢ اﻟﺘﻘﻨﻴﺔ !
-اﻟﻮﺣﺪة رﻗﻢ : 5اﻟﺒﻴﺎﻧﺎت اﻟﺠﻐﺮاﻓﻴﺔ.
• ﻗﻨﺎة CNNﺗﻌﺘﻤﺪ أﻧﻈﻤﺘﻬﺎ اﻟﺠﺪﻳﺪة ﺑﺈﺷﺮاف ﺷﺮآﺎت ﺳﻌﻮدﻳﺔ !
-اﻟﻮﺣﺪة رﻗﻢ : 6اﻟﺮﺳﻮم أو اﻟﻨﻤﺎذج اﻟﺼﻨﺎﻋﻴﺔ.
هﻞ ﺗﻮد ﻗﺮاءة ﻣﺜﻞ هﺬﻩ اﻟﻌﻨﺎوﻳﻦ ﻳﻮﻣًﺎ ﻣﺎ؟ وآﻴﻒ ﺳﻴﻜﻮن ﺷﻌﻮرك إن
-اﻟﻮﺣﺪة رﻗﻢ : 7اﻟﺒﺮاءات. ﺗﺤﻘﻘﺖ؟
اﻻﻣﺘﺤﺎن اﻟﺨﺘﺎﻣﻲ ﻳﺘﻜﻮن ﻣﻦ 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
رﻏــــﻴـــــــــﺪ ﻃـــــﻴــــــــﺐ
أوﻻ اﻟﺴﻼم ﻋﻠﻴﻜﻢ ورﺣﻤﺔ اﷲ وﺑﺮآﺎﺗﻪ....
ﻣﺜﺎل ﻳﺴﺘﺤﻖ اﻟﺘﺄﻣﻞ ﻼ ﻟﻤﺸﺎور اﻟﺴﻠﺴﻠﺔ اﻟﺬهﺒﻴﺔ ﻓﻲ اﻟﻤﻮاﺿﻴﻊ اﻟﻌﻠﻤﻴﺔ ﺳﻮف وﺛﺎﻧﻴًﺎ ﺗﻮاﺻ ً
ﻧﻨﺎﻗﺶ اﻟﻴﻮم ﻣﻮﺿﻮع ﻳﻬﻢ اﻟﻤﺒﺘﺪﺋﻴﻦ ﺑﺸﻜﻞ أﺳﺎﺳﻲ وهﻮ آﻴﻔﻴﺔ اﺳﺘﻐﻼل
دﻋﻨﺎ اﻵن ﻧﺮى آﻴﻒ ﻳﻤﻜﻦ اﻟﺘﻌﺎﻣﻞ ﻣﻊ هﺬﻩ اﻟﻤﺸﻜﻠﺔ اﻟﺒﺴﻴﻄﺔ..
ﻣﻌﻠﻮﻣﺎﺗﻚ اﻟﺒﺴﻴﻄﺔ ﻓﻲ ﺗﻜﻮﻳﻦ ﻓﻜﺮة ﻋﻦ ﺣﻞ اﻟﻤﺸﻜﻠﺔ أو اﻟﻤﻮﺿﻮع اﻟﺬي
ﻟﻨﻔﺮض اﻧﻚ آﻨﺖ ﺗﻘﻮم ﺑﺘﺼﻤﻴﻢ ﺑﺮﻧﺎﻣﺞ ﻟﺘﻌﻠﻴﻢ اﻟﺼﻐﺎر اﻟﺮﻳﺎﺿﻴﺎت
وﺗﺮﻳﺪ أن ﺗﺨﺘﺒﺮ اﻷرﻗﺎم اﻟﺬي ﻳﺪﺧﻠﻬﺎ اﻟﻄﻔﻞ ﺛﻢ ﺗﺴﺎﻋﺪﻩ ﻓﻲ ﻣﻌﺮﻓﺔ اﻟﻌﺪد ﺗﻨﻮي ﺑﺮﻣﺠﺘﻪ ﺛﻢ ﻧﻨﺘﻘﻞ ﺑﺈذن ﻣﻦ اﷲ ﺗﻌﺎﻟﻰ وﺗﻮﻓﻴﻖ إﻟﻰ ﺑﻌﺾ
اﻟﻔﺮدي ﻣﻨﻬﺎ ﻣﻦ اﻟﻌﺪد اﻟﺰوﺟﻲ!! .. اﻻﺧﺘﺼﺎرات و اﻷﻓﻜﺎر اﻟﺒﺮﻣﺠﻴﺔ اﻟﺒﺴﻴﻄﺔ اﻟﺘﻲ ﺑﺎﻟﺘﺄآﻴﺪ ﺳﻮف ﺗﺴﺘﻐﻠﻬﺎ
ﻓﻲ اﻟﻌﺪﻳﺪ ﻣﻦ ﺑﺮاﻣﺠﻚ اﻟﻘﺎدﻣﺔ وذﻟﻚ ﻓﻲ اﻟﻤﻮﺿﻮع اﻟﺘﺎﻟﻲ ﻣﻦ ﺣﻠﻘﺎت هﺬﻩ
ﻟﻠﻘﻴﺎم ﺑﻤﺜﻞ هﺬا اﻟﺒﺮﻧﺎﻣﺞ ﻳﺠﺐ ﻋﻠﻴﻚ أﻧﺖ أوﻻ ﻣﻌﺮﻓﺔ اﻟﺮﻗﻢ اﻟﻔﺮدي ﻣﻦ اﻟﺴﻠﺴﻠﺔ إن ﺷﺎء اﷲ ﺗﻌﺎﻟﻰ ...واﺧﺺ ﺣﺪﻳﺜﻲ هﺬا ﺑﺄﺧﻮﺗﻲ ﺣﺪﻳﺜﻮ اﻟﻌﻬﺪ
اﻟﺰوﺟﻲ ﺑﻄﺮﻳﻘﺔ ﺑﺮﻣﺠﻴﺔ ﻓﻠﻨﻔﺮض اﻧﻚ ﻗﻤﺖ ﺑﻘﺮاءة اﻟﺮﻗﻢ اﻟﺬي ادﺧﻠﻪ ﺑﺎﻟﺒﺮﻣﺠﺔ...
اﻟﻤﺴﺘﺨﺪم ﻓﻲ ﻣﺘﻐﻴﺮ ﻋﺪدي أﺳﻤﻴﺘﻪ 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
وﺑﻬﺬا ﻧﻜﻮن ﻗﺪ اﻧﻬﻴﻨﺎ ﺣﻞ اﻟﻤﺴﺄﻟﺔ ﺑﻄﺮق ﻣﺨﺘﻠﻔﺔ وﻃﺒﻌًﺎ ﻳﻤﻜﻦ هﺬا اﻟﺤﻞ ﻟﻦ ﻳﺴﺘﺨﺪﻣﻪ إﻻ ﻣﻦ آﺎﻧﺖ ﻟﻪ دراﻳﺔ ﺑﺎﻟﻨﻈﺎم اﻟﺜﻨﺎﺋﻲ
ﻟﻜﻞ ﺷﺨﺺ إن ﻳﺒﺘﻜﺮ ﻃﺮق أﺧﺮى وﻟﻜﻨﻲ اآﺘﻔﻲ هﻨﺎ ﺑﻬﺬا اﻟﺤﺪ.... واﻟﻤﻌﺎﻣﻼت اﻟﻤﻨﻄﻘﻴﺔ...
22
اﻟﻌﺪد 01ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ /ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ 2008 ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ vb4arab.com
اﻟﻤﺘﻜﺒﺮ ﻳﺨﺘﻢ اﻟﻘﺪﻳﺮ ﻋﻠﻰ ﻗﻠﺒﻪ ﻓﻼ ﻳﻤﻴﺰ ﺑﻴﻦ اﻟﺤﻖ واﻟﺒﺎﻃﻞ ﻳﻘﻮل اﷲ ﺟﻞ
ر{ ﺳﻮرة ﻏﺎﻓﺮ -
ﺟﺒﱠﺎ ٍ
ﺐ ُﻣ َﺘ َﻜ ﱢﺒ ٍﺮ َ
ﻋﻠَﻰ ُآﻞﱢ ﻗﻠْ ِ
ﻚ َﻳﻄْ َﺒ ُﻊ اﻟﻠﱠ ُﻪ َ
ﺟﻼﻟﻪَ } :آ َﺬِﻟ َ اﻟﺤﻤﺪ ﷲ اﻟﺨﺎﻟﻖ اﻟﺒﺎرئ اﻟﻤﺼﻮر اﻟﻌﺰﻳﺰ اﻟﻌﻠﻲ اﻟﻤﺘﻜﺒﺮ،
اﻵﻳﺔ -35 اﻟﺠﺒﺎر اﻟﺬي آﻞ ﺟﺒﺎر ﻟﻪ ذﻟﻴﻞ ﺧﺎﺿﻊ ،وآﻞ ﻣﺘﻜﺒﺮ ﻓﻲ ﺟﻨﺎب ﻋﺰﻩ
-اﻟﻤﺘﻜﺒﺮ هﺎﻟﻚ هﺎﻟﻚ أﻻ ﻳﻌﻠﻢ أﻧﻪ ﻳﻨﺎزع ﻣﻦ !!!! اﷲ ) اﻟﻤﻠﻚ ﻣﺴﻜﻴﻦ ﺗﻮاﺿﻊ ،وأﺷﻬﺪ أن ﻻ إﻟﻪ إﻻ اﷲ وﺣﺪﻩ ﻻ ﺷﺮﻳﻚ ﻟﻪ اﻟﻘﻬﺎر اﻟﺬي
( ،ﻓﻌﻦ أﺑﻲ هﺮﻳﺮة رﺿﻲ اﷲ ﻋﻨﻪ ﻗﺎل :ﻗﺎل رﺳﻮل اﷲ ﺻﻠﻰ اﷲ ﻋﻠﻴﻪ ﻻ ﻳﺪﻓﻌﻪ ﻋﻦ ﻣﺮادﻩ داﻓﻊ ،اﻟﻐﻨﻲ اﻟﺬي ﻟﻴﺲ ﻟﻪ ﺷﺮﻳﻚ ﻓﻲ اﻟﻤﻠﻚ وﻻ
ﷲ ﺗﻌﺎﻟﻰ:اﻟﻜِﺒﺮِﻳﺎ ُء ِردَاﺋﻲ واﻟﻌَﻈ َﻤ ُﺔ إِزاري ﻓﻤﻦ
ل ا ُ
وﺳﻠﻢ)) :ﻳﻘﻮ ُ ﻣﻨﺎزع ،وأﺷﻬﺪ أن ﻣﺤﻤﺪًا ﻋﺒﺪ اﷲ ورﺳﻮﻟﻪ ﺑﻌﺜﻪ اﷲ ﻷهﻞ اﻟﻬﺪى ﻧﺠـﻢ
ﺳﺎﻃﻊ ،وﻋﻠﻰ أهﻞ اﻟﻔﺠﻮر واﻟﺨﻨﺎ ﺳﻴﻒ ﻗﺎﻃﻊ ﺻﻠﻰ اﷲ ﻋﻠﻴﻪ وﻋﻠﻰ ﺁﻟﻪ
ﻧﺎزﻋﻨﻲ واﺣِﺪًا ﻣﻨﻬﺎ أﻟﻘﻴﺘ ُﻪ ﻓﻲ ﺟﻬﻨ َﻢ وﻻ أﺑﺎﻟﻲ(( رواﻩ ﻣﺴﻠﻢ.
وﺻﺤﺒﻪ وﺳﻠﻢ ﻣﺎ ﺳﺠﺪ ﷲ ﺳﺎﺟﺪ أو رآﻊ ﷲ راآﻊ.
-إن اﻟﻜﺒﺮ أﻣﺮﻩ ﺧﻄﻴﺮ ﻓﻴﻜﻔﻲ اﻟﻤﺮء أن ﻳﻜﻮن ﻓﻲ ﻗﻠﺒﻪ ﻣﺜﻘﺎل
أﻣﺎ ﺑﻌﺪ:
ذرة ﻣﻦ آﺒﺮ ﻟﻴُﺤﺮم اﻟﺠﻨﺔ وﻧﻌﻴﻤﻬﺎ ،ﻓﻌﻦ ﻋﺒﺪ اﷲ ﺑﻦ ﻣﺴﻌﻮد رﺿﻲ اﷲ
ن
ﺠ ﱠﻨ َﺔ َﻣﻦْ آﺎ َ
ﻞ اﻟ َ
ﺧُﻋﻨﻪ ﻋﻦ اﻟﻨﺒﻲ ﺻﻠﻰ اﷲ ﻋﻠﻴﻪ وﺳﻠﻢ أﻧﻪ ﻗﺎل)) :ﻻﻳَﺪ ُ ﻓﺄوﺻﻴﻜﻢ ﻋﺒﺎد اﷲ ﺑﻮﺻﻴﺔ اﷲ ﻟﻸوﻟﻴﻦ واﻵﺧﺮﻳﻦ إذ ﻳﻘﻮل:
ر ٍة ِﻣﻦْ ِآﺒْﺮ ((..رواﻩ ﻣﺴﻠﻢ.
ل َذ ّ
ﻓﻲ ﻗﻠﺒ ِﻪ ِﻣﺜْﻘَﺎ ُ
ب ِﻣﻦْ ﻗﺒِْﻠ ُﻜﻢْ َوِإﻳﱠﺎ ُآﻢْ َأنْ
ﻦ أُوﺗُﻮا اﻟْ ِﻜﺘَﺎ َ
ﺻﻴْﻨَﺎ اﱠﻟﺬِﻳ َ
}َ ..وَﻟ َﻘﺪْ َو ﱠ
ﺑﻞ اﻟﻤﺘﻜﺒﺮون هﻢ أول ﻣﻦ ﺗﺒﺤﺚ اﻟﻨﺎر ﻋﻨﻬﻢ ﻳﻮم اﻟﻘﻴﺎﻣﺔ. ض
ت َوﻣَﺎ ﻓِﻲ اﻟَْﺄرْ ِ ﺴﻤَﺎوَا ِ
ن ِﻟﱠﻠ ِﻪ ﻣَﺎ ﻓِﻲ اﻟ ﱠ ا ﱠﺗﻘُﻮا اﻟﱠﻠ َﻪ َوِإنْ َﺗﻜْ ُﻔﺮُوا َﻓِﺈ ﱠ
أﺧﺮج اﻟﺘﺮﻣﺬي ﻋﻦ أﺑﻲ هﺮﻳﺮة رﺿﻲ اﷲ ﻋﻨﻪ ﻗﺎل :ﻗﺎل رﺳﻮل اﷲ ﺣﻤِﻴﺪًا {
ﻏﻨِﻴًّﺎ َ
ن اﻟﻠﱠ ُﻪ َ
َوآَﺎ َ
ﻋُﻨﻖٌ ﻟ ُﻪ أُذﻧﺎن ﺗﺴﻤﻌﺎنِ،
ﻦ اﻟﻨﺎ ِر ُ
ج ِﻣ َ
ﺻﻠﻰ اﷲ ﻋﻠﻴﻪ وﺳﻠﻢ)) :ﻳﺨﺮ ُ
ﻞ ﺟﺒﺎ ٍر
ﺖ ﺑﺜﻼﺛ ٍﺔ .ﺑﻜ ِ
لُ :وآّ ْﻠ ُ
ن ﻳﻨﻄﻖُ ،ﻳﻘﻮ ُوﻋﻴﻨﺎنِ ُﺗﺒْﺼِﺮانِ،وﻟِﺴﺎ ٌ اﻟﻌﻨﻮان ﻳﻮﺣﻲ ﺑﻤﺮاد اﻟﻤﻘﺎل أﻻ وهﻮ ﻓﺴﺎد اﻟﺠﻮهﺮ ﻣﻊ ﺟﻤﺎل اﻟﻤﻈﻬﺮ
ﷲ إﻟﻪ ﺁﺧﺮَ ،وﺑﺎﻟﻤﺼﻮرﻳﻦ(( ﻞ ﻣﻦ دﻋﺎ ﻣﻊ ا ِ ﻋﻨﻴﺪٍ ،وﺑﻜ ِ وآﻼﻣﻨﺎ هﻨﺎ ﻋﻦ ﺧﻠﻖ هﺎم ﻟﻜﻞ ﻣﻦ أراد أن ﻳﻜﻮن ﺣﺎﻣﻞ ﻟﻌﻠﻢ ﻣﻦ اﻟﻌﻠﻮم
ﻳﺎ اﷲ اﻟﺘﻲ أﻧﻌﻢ ﺑﻬﺎ اﷲ ﺳﺒﺤﺎﻧﻪ ﻋﻠﻰ ﺧﻠﻘﻪ ﺑﺎﻣﺘﻨﺎﻧﻪ
ﺟﻤــــﺎل اﻟﺸـــﻜﻞ وﻓﺴـــﺎد اﻟـــﺮوح
أﺣــﻤـــﺪ ﺑـــﺪر BADRMEDIA
ﻻ ﺗﻜﻦ ﻣﺜﻞ ﻗﺎرون -ﻓﻘﺼﺺ اﻟﻘﺮﺁن ﻟﻴﺴﺖ ﺣﻜﺎﻳﺎت ﻗﺒﻞ اﻟﻨﻮم ،ﺑﻞ ﻟﻠﻌﺒﺮة وﻓﻬﻢ اﻟﺤﻜﻤﺔ وﻣﻦ ﺿﺎﻋﺖ ﻣﻨﻪ اﻟﺤﻜﻤﺔ وﻓﻬﻢ اﻟﻤﺜﻞ ﻓﻠﻴﺒﻚ ﻋﻠﻲ ﻧﻔﺴﻪ .
إن أآﺜﺮ اﻟﻤﺘﻜﺒﺮﻳﻦ ﻋﺬاﺑًﺎ ﻣﻦ آﺎن ﻓﻘﻴﺮ وﺗﻜﺒﺮ وهﻮ أﺷﺪ ﻋﺬاﺑًﺎ وأﺷﺪ ﻣﻘﺘًﺎ ﻷﻧﻪ ﻟﻢ ﻳﺄت ﻣﻦ أﺳﺒﺎب اﻟﻜﺒﺮ ﺷﻲء وﻣﻊ ذﻟﻚ ﺗﺄﺑﻰ ﻧﻔﺴﻪ اﻟﻤﺮﻳﻀﺔ إﻻ اﻟﻜﺒﺮ.
ﷲ ﻳﻮ َم اﻟﻘﻴﺎﻣ ِﺔ وﻻ ﻳُﺰآﻴﻬﻢ وﻻ ﻳﻨﻈ ُﺮ إﻟﻴﻬﻢ وﻟﻬﻢ ﻋﺬابٌ أﻟﻴﻢ وذآ َﺮ ﻣﻨﻬﻢ وﻋﺎﺋﻞٌ)أي ﻓﻘﻴﺮ(
ﻳﻘﻮل ﻋﻨﻪ ﺻﻠﻰ اﷲ ﻋﻠﻴﻪ وﺳﻠﻢ)) :ﺛﻼﺛﺔٌ ﻻ ُﻳﻜﱠﻠِ ُﻤ ُﻬ ُﻢ ا ُ
ﻣﺴﺘﻜﺒﺮ((.
ﻓﺎﻟﻌﻠﻢ ﻻ ﻳﻮرث ﻟﻜﻲ ﺗﺘﻜﺒﺮ ﺑﻪ ،ﺑﻞ ﻳﻤﻨﺤﻚ رب اﻟﻌﺎﻟﻤﻴﻦ إﻳﺎﻩ وهﻮ اﻟﻘﺎدر ﻋﻠﻲ ﺳﻠﺒﻪ ﺑﻌﺪ اﻣﺘﻨﺎﻧﻪ.
ﻓﻤﻦ ﺗﻜﺒﺮ ﺑﻌﻠﻢ ﻓﻬﻮ ﻣﻦ أﺷﺪ اﻟﻤﺘﻜﺒﺮﻳﻦ ﻋﺬاﺑًﺎ ﻷﻧﻪ ﻓﻘﻴﺮ ﻣﺘﻜﺒﺮ. -
إن ﻣﻦ اﻟﻜﺒﺮ أن ﻻ ﺗﻌﺘﺮف ﺑﺎﻟﺠﻤﻴﻞ واﻟﻌﺮﻓﺎن ﻟﻤﻦ ﺟﻌﻠﻪ اﷲ ﺳﺒﺒًﺎ ﻓﻲ ﺗﻌﻠﻤﻚ. -
إن ﻣﻦ اﻟﻜﺒﺮ أن ﻻ ﺗﺮي ﻣﻦ اﻟﻔﻬﻢ إﻻ أﻧﺖ. -
إن ﻣﻦ اﻟﻜﺒﺮ أن ﺗﻐﻠﻖ ﻋﻠﻰ آﻞ ﻃﺎﻟﺐ ﻋﺎﻟﻢ ﻳﺮﻳﺪ أن ﻳﺘﻌﻠﻢ ﺑﺎﺑﻚ. -
إن ﻣﻦ اﻟﻜﺒﺮ اﻟﺘﻠﺬذ ﺑﺈذﻻل اﻟﻐﻴﺮ ﻓﻲ ﻣﺤﺎوﻟﺘﻪ ﻟﻠﺘﻌﻠﻢ. -
وﻟﻴﺤﺎول آﻞ ﻣﻨﺎ أن ﻳﻌﺎﻟﺞ هﺬا اﻟﺪاء ﻓﻲ ﻧﻔﺴﻪ وﻓﻲ اﻵﺧﺮﻳﻦ ﻓﺈﻧﻪ ﻳﺒﺪأ ﻓﻲ اﻟﻨﻔﺲ ﺻﻐﻴﺮًا ﺛﻢ ﻳﻜﺒﺮ إن ﻟﻢ ﻳﺘﺪارك ﺣﺘﻰ ﻳﺼﻌﺐ ﻋﻼﺟﻪ.
ﻣﻦ أهﻢ وﺳﺎﺋﻞ ﻋﻼج ذﻟﻚ ﺗﺬآﻴﺮ اﻟﻨﻔﺲ اﻟﺪاﺋﻢ ﺑﺄﺻﻞ ﺧﻠﻘﺘﻬﺎ وﻣﺎهﻴﺘﻬﺎ.
وأﺣﻴﺎﻧًﺎ ﻗﺪ ﻳﻠﻢ ﺑﺎﻟﻤﺮء ﻟﻤﺔ ﻣﻦ آﺒﺮ ﻓﺈن ﺻﺮﻓﻬﺎ ﻓﺈﻧﻬﺎ ﻻ ﺗﻀﺮﻩ ﺑﺈذن اﷲ وﻣﻦ ذﻟﻚ ﻣﺎ روي أن ﺣﺬﻳﻔﺔ ﺑﻦ اﻟﻴﻤﺎن رﺿﻲ اﷲ ﻋﻨﻪ أم اﻟﻨﺎس ﻓﻲ
ﺴﻦّ إﻣﺎﻣًﺎ ﻏﻴﺮي،أو ﻟَُﺘﺼَﻠﱡﻦﱠ وُﺣﺪاﻧﺎً،ﻓﺈﻧﻲ رأﻳﺖ ﻓﻲ ﻧﻔﺴﻲ أﻧﻪ ﻟﻴﺲ ﻓﻲ اﻟﻘﻮم أﻓﻀﻞ ﻣﻨﻲ ،ﻓﻬﻜﺬا اﻟﻨﻔﻮس اﻟﻤﺴﺘﻀﻴﺌﺔ ﺑﻨﻮر
ﺻﻼة ﻓﻠﻤﺎ ﺳﻠﻢ ﻗﺎل ﻟﺘﻠْﺘ ِﻤ ُ
اﻹﻳﻤﺎن ﺗﺘﺪارك أي ﻏﻤﺰة ﻣﻦ ﻏﻤﺰات اﻟﺸﻴﻄﺎن.
أرﺟﻮ أن ﻧﻜﻮن اﺳﺘﻔﺪﻧﺎ ﻣﻦ هﺬﻩ اﻟﻤﻘﺎﻟﺔ وأن ﻳﻠﻬﻤﻨﺎ اﷲ ﺳﺒﺤﺎﻧﻪ اﻟﻔﻬﻢ ﻟﻤﺮادهﺎ
وﻓﺤﻮاهﺎ وأن ﻳﻌﺬﻧﺎ اﷲ وإﻳﺎآﻢ ﻣﻦ اﻟﻜﺒﺮ وأهﻠﻪ وأن ﻳﺤﺮم ﻋﻠﻴﻨﺎ اﻟﻨﺎر وﻳﺮزﻗﻨﺎ اﻟﻔﺮدوس.
BADRMEDIA
24
اﻟﻌﺪد 01ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ /ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ 2008 ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ vb4arab.com
ﺷﻄﻴﺮة اﻟﻠﺤﻢ اﻟﺒﻘﺮي )"اﻟﻬﺎﻣﺒﺮﺟﺮ "Hamburgerأو ﻛﻤﺎ ﻳﻨﻄﻖ اﺳﻤﻬﺎ اﻟﻜﺜﻴﺮ ﻣﻦ اﻟﻌﺮب ﻫﺎﻣﺒﺮﺟﻞ( ﺗﻌﺘﺒﺮ –ﻓﻲ رأي اﻟﺸﺨﺼﻲ-
اﺑﺮز رﻣﺰ ﺻﺎرخ ﻟﻠﻌﻮﻟﻤﺔ Globalizationاﻟﺘﻲ ﺗﻮاﺟﻬﻬﺎ اﻟﻤﺠﺘﻤﻌﺎت اﻟﻤﺪﻧﻴﺔ ،ﻓﻮﺟﻮده أﺻﺒﺢ ﻓﻲ ﻛﻞ ﻣﻜﺎن وزﻣﺎن )ﻓﻲ اﻹﻓﻄﺎر،
اﻟﻐﺪاء ،اﻟﻌﺸﺎء ،وأي وﺟﺒﺎت ﺟﺎﻧﺒﻴﺔ أﺧﺮى( ،ﻟﺪرﺟﺔ أﻧﺎ ﻻ ﻧﻌﻠﻢ ﻣﻦ ﻫﻢ أﻛﺜﺮ ﺷﻌﻮب اﻷرض اﺳﺘﻬﻼﻛﺎ ﻟﻪ ،ﻫﻞ ﻫﻢ اﻟﺸﺮق أم اﻟﻐﺮب؟!
وﻟﻜﻦ )وﺑﻐﺾ اﻟﻨﻈﺮ ﻋﻦ ﻛﺎﻓﺔ اﻻﻋﺘﺒﺎرات اﻟﻌﺮﻓﻴﺔ اﻷﺧﺮى( أرى ﻓﻴﻪ ﻣﺜﺎل ﺗﺠﺴﻴﺪي راﺋﻊ ﻟﻤﺒﺪأ اﻟﻄﺒﻘﺎت Tiersوﻛﻴﻒ ﻳﻤﻜﻦ أن
ﺗﺰﻳﺪ ﻣﻦ إﻧﺘﺎﺟﻴﺔ ﺑﻨﺎء وﺟﺒﺎت اﻟﻬﺎﻣﺒﺮﺟﺮ وﻛﺎﻓﺔ اﻟﺴﺎﻧﺪوﻳﺘﺸﺎت اﻟﺘﻲ ﺗﺘﺨﺬ ﻣﻨﺤﻨﺎه.
ﻓﻲ اﻟﺼﻮرة اﻟﻤﻐﺮﻳﺔ اﻟﺴﺎﺑﻘﺔ ،ﺗﺒﺪأ اﻟﻄﺒﻘﺔ اﻟﻌﻠﻮﻳﺔ Upper Tieﺑﻘﻄﻌﺔ ﻣﻦ اﻟﺨﺒﺰ اﻟﺘﻲ ﺗﻤﺜﻞ اﻟﻮاﺟﻬﺔ اﻟﻌﻠﻮﻳﺔ واﻟﻤﻐﻠﻔﺔ
ﻟﻠﺴﺎﻧﺪوﻳﺘﺶ وﻫﻲ ﻧﻔﺲ اﻟﻄﺒﻘﺔ اﻟﺴﻔﻠﻴﺔ ،وﻣﻦ ﺛﻢ ﻃﺒﻘﺔ ﺗﺤﺘﻮي ﻋﻠﻰ ﺗﺸﻜﻴﻠﺔ ﻣﺘﻨﻮﻋﺔ ﻣﻦ اﻟﺨﻀﺮوات، Vegetable Tier
وﺑﻌﺪﻫﺎ اﻟﻄﺒﻘﺔ اﻟﺮﺋﻴﺴﻴﺔ )ﻃﺒﻘﺔ ﺷﺮﻳﺤﺔ اﻟﻠﺤﻢ ) (Meat Tierوﻫﻲ أﻫﻢ ﻣﺎ ﻓﻲ اﻟﻮﺟﻮد )اﻟﻤﺤﺮك اﻷﺳﺎﺳﻲ ﻟﻠﻨﻈﺎم Core
(Engineواﻟﺘﻲ ﻗﺎل ﻓﻴﻬﺎ أﺣﺪ اﻟﺸﻌﺮاء:
ﺗـﺮﻛــﻲ اﻟـﻌــﺴـﻴـﺮي
اﻟﻌﻴﻮب:
ﺸﻔﺮات.
ﺗﺘﻄﻠﺐ آﺘﺎﺑﺑﺔ اﻟﻜﺜﻴﺮ ﻣﻦ اﻟﺸ -
ﺻﺔ إن
أﻣﺮ إﻟﺰاﻣﻲ ﺧﺎﺻ
اﻟﺘﻮﺛﻴﻖ Doocumentatioonﻳﺼﺒﺢ ﻣﺮ -
آﺒﺮ ﺣﺠﻢ ووآﺜﺮ ﻋﺪد اﻟﻄﺒﻘﻘﺎت.
ﺼﺎﻻت ﺑﻴﻦ اﻟﻟﻄﺒﻘﺎتﻟﻰ ﻣﺠﻬﻮد ﻟﻀﻤﻤﺎن ﻧﺠﺎح اﻻﺗﺼ ﺑﺤﺎﺟﺔ إ ﻰ -
اﻟﻤﺨﺘﻠﻔﺔ.
ﻓﻲ آﺘﺎﺑﺔ ﺑﻌﺾ اﻟﺸﻔﺮات )ﺧﺎﺻ
ﺻﺔ ﺷﻔﺮات اﻟﻘﻘﻮاﻧﻴﻦ اﻟﺘﻜﺮار ﻲ -
(Rulesﻓﻲ أآﺜﺮ ﻣﻦ ﻃﺒﻘﻘﺔ. ﻓﻬﻨﺎ أي ﺗﻌﺪﻳﻳﻞ أو ﺗﻄﻮﻳﺮ أو ﺻﻴﺎﻧﺔ ﺳﺘﺘﺴﺘﻬﻠﻚ ﺟﻬﺪ وووﻗﺖ
26
ﻬﺮ ﻳﻨﺎﻳﺮ /ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ 2008
اﻟﻟﻌﺪد 01ﻟﺸﻬ ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻋﻠﻰ اﻟﻨﺖ vb4arab.com
إن ﺿﺮﺑﺖ ﺑﺘﺤﺬﻳﺮي ﻋﺮض اﻟﺤﺎﺋﻂ ،ﻓﺎﻋﻠﻢ أﻧﻚ ﺗﺨﻠﻂ اﻟﺤﺎﺑﻞ ﺑﺎﻟﻨﺎﺑﻞ،
وﺗﺴﻤﺢ ﻟﻄﺒﻘﺎﺗﻚ ﺑﺘﻜﻮﻳﻦ ﻋﻼﻗﺎت ﻏﻴﺮ ﺷﺮﻋﻴﺔ ﺳﺘﺆدي إﻟﻰ آﻮارث ﻓﻲ
ﺗﺼﻤﻴﻤﻚ اﻟﺜﻼﺛﻲ اﻟﻄﺒﻘﺎت ،واﻟﺘﻲ ﻗﺪ ﺗﻜﻮن ﻣﺼﻴﺒﺘﻬﺎ أآﺒﺮ ﻣﻦ ﺷﻮاﺋﺐ
Bugsﻗﺪ ﺗﺆدي إﻟﻰ ﺛﻐﺮات أﻣﻨﻴﺔ . Security Hacks
اﻟﺤﺪﻳﺚ ﻋﻦ اﻟﺘﺼﻤﻴﻢ ﻣﺘﻌﺪد اﻟﻄﺒﻘﺎت ﺣﺪﻳﺚ ذو ﺷﺠﻮن وﻗﺪ ﻣﻦ اﻟﻤﻬﻢ ﺟﺪا ﺟﺪا ﺟﺪا ﺟﺪا )ﻣﺎ أآﺜﺮ اﺳﺘﺨﺪاﻣﻲ ﻟﻬﺬا اﻟﺘﻌﺒﻴﺮ ﻓﻲ
أﻟﻒ ﻓﻴﻪ ﻣﺌﺎت اﻟﻜﺘﺐ وآﺘﺐ ﻋﻨﻪ ﺁﻻف اﻟﻤﻘﺎﻻت ،وآﺎن ﻏﺮﺿﻲ اﻟﺤﻘﻴﻘﻲ ﺟﻤﻴﻊ آﺘﺎﺑﺎﺗﻲ( أن ﺗﺘﻢ ﻋﻤﻠﻴﺔ اﻻﺗﺼﺎل ﺑﻴﻦ اﻟﻄﺒﻘﺎت ﺑﺸﻜﻞ ﻧﻈﺎﻣﻲ وﻟﻴﺲ
ﻓﻲ هﺬا اﻟﻤﻘﺎل ﺗﻌﺮﻳﻔﻪ ﻟﻠﻤﺒﺘﺪﺋﻴﻦ ﻓﻘﻂ ،وﻣﻦ هﻨﺎ ﺳﺄآﺘﻔﻲ ﺑﻤﺎ ﺳﻄﺮﺗﻪ ﻣﻦ ﻋﺸﻮاﺋﻲ ،ﺑﻤﻌﻨﻰ أن ﻃﺒﻘﺔ اﻟﻌﺮض -ﻣﺜﻼ -ﻣﻤﻨﻮﻋﺔ ﻣﻨﻌﺎ ﺑﺎﺗﺎ ﻣﻦ اﻟﺘﺤﺪث
اﻟﻜﻼم اﻟﻨﻈﺮي،وﻧﺒﺪأ ﻓﻲ ورﺷﺔ ﻋﻤﻞ ﺻﻐﻴﺮة ،وهﻲ ﻋﺒﺎرة ﻋﻦ ﻣﺸﺮوع ﻣﻊ ﻃﺒﻘﺔ اﻟﺒﻴﺎﻧﺎت ،ﻓﻄﺒﻘﺔ اﻟﻌﺮض ﻻ ﺗﻌﻠﻢ أي ﺷﻲء ﻋﻦ اﻟﺒﻴﺎﻧﺎت وﻻ
ﺑﺴﻴﻂ ﺟﺪا ﺟﺪا )ﻗﺪ ﻳﻄﻮرﻩ اﻷﻃﻔﺎل( ﻳﻬﺪف إﻟﻰ ﺗﻄﻮﻳﺮ ﺑﺮﻧﺎﻣﺞ ﻳﺘﺒﻊ ﺗﺪري ﻣﺎذا ﻳﺤﺪث ﺑﻬﺎ وﻣﻦ هﻮ اﻟﻤﺴﺌﻮل ﻋﻨﻬﺎ ،ﻓﻬﻲ ﺗﻌﺮف آﻴﻒ ﺗﺘﺤﺪث
أﺳﻠﻮب اﻟﺘﺼﻤﻴﻢ ﺛﻼﺛﻲ اﻟﻄﺒﻘﺎت. ﻣﻊ ﻃﺒﻘﺔ اﻷﻋﻤﺎل ﻓﻘﻂ )واﻟﺘﻲ ﺗﻜﻮن ﻣﺘﻔﻬﻤﺔ ﻣﻊ ﻃﺒﻘﺔ اﻟﺒﻴﺎﻧﺎت(.
ﻛﻮد:
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
ﻛﻮد:
]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
30
2008 ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ/ ﻬﺮ ﻳﻨﺎﻳﺮ
ﻟﺸﻬ01 اﻟﻟﻌﺪد vb4arab.com ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻋﻠﻰ اﻟﻨﺖ
ﺗﻄﺎﻟﻌﻮن ﻓﻲ ﻫﺬا اﻟﻌﺪد...
ﻓﻤﺜﻼ ﻳﻤﻜﻨﻚ اﺳﺘﺨﺪام اﻟﺤﺪث 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
و ﻓﻲ اﻟﻐﺎﻟﺐ ﺗﺄﺗﻲ دوال اﻟﺮﺳﻢ ﺑﻌﺪة ﻧﺴﺦ ذات ﺗﺤﻤﻴﻞ زاﺋﺪ 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
وﺗﺄﺗﻲ ﺟﻤﻴﻊ ﻋﻤﻠﻴﺎت اﻟﺮﺳﻢ ﻓﻲ ﻣﻜﺘﺒﺔ ال 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
ﻟﺮﺳﻢ ﻣﻨﺤﻨﻴﺎت ﻣﺤﺪدة ﺑﺄرﺑﻊ ﻧﻘﺎط ﺗﺤﻜﻢ ﺑﺤﻴﺚ ﻳﺒﺪأ اﻟﻤﻨﺤﻨﻰ ﻋﻨﺪ اﻟﻨﻘﻄﺔ اﻷوﻟﻰ وﻳﻨﺘﻬﻲ ﻋﻨﺪ اﻷﺧﻴﺮة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
ﺗﺴﺘﺨﺪم اﻟﺪاﻟﺔ 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 ﺑﻤﺨﻴﻠﺘﻚ وﻟﻦ ﺗﺠﺪ ﺻﻌﻮﺑﺔ ﻓﻲ اﻻﺳﺘﻌﺎﻧﺔ ﺑﻤﻜﺘﺒﺔ
.ﻣﺎ ﺗﺮﻳﺪ
35
2008 ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ/ ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ01 ﻟﻌﺪد vb4arab.com ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ
ﺟﺪﻳﺪ اﻟﻔﻴﺒﻲ /2008اﻻﺳﺘﺪﻻل اﻟﻤﺤﻠﻲ ﻋﻠﻰ اﻟﻨﻮع
ﻣﺤﻤﺪ ﺳﺎﻣﺮ أﺑﻮ ﺳﻠﻮ
ﻳﺴﺘﺨﺪم ﻣﺘﺮﺟﻢ اﻟﻔﻴﺠﻮال ﺑﻴﺴﻚ 2008اﻻﺳﺘﺪﻻل ﻋﻠﻰ اﻟﻨﻮع Type Inferenceﻟﺘﺤﺪﻳﺪ ﻧﻮع اﻟﻤﺘﻐﻴﺮات اﻟﻤﺤﻠﻴﺔ اﻟﺘﻲ ﺗﻢ اﻟﺘﺼﺮﻳﺢ ﻋﻨﻬﺎ
ﺑﺪون اﺳﺘﺨﺪام ﻓﻘﺮة Asﻓﻲ ﺗﻌﺒﻴﺮ اﻟﺘﺼﺮﻳﺢ ﺣﻴﺚ ﻳﺴﺘﺪل اﻟﻤﺘﺮﺟﻢ ﻋﻠﻰ ﻧﻮع اﻟﻤﺘﻐﻴﺮ ﻣﻦ ﻧﻮع اﻟﺘﻌﺒﻴﺮ اﻟﺬي ﻳﻀﺒﻂ ﻗﻴﻤﺔ ذﻟﻚ اﻟﻤﺘﻐﻴﺮ ﻣﻤﺎ ﻳﻮﻓﺮ إﻣﻜﺎﻧﻴﺔ
ﺗﻌﺮﻳﻒ اﻟﻤﻐﻴﺮات ﺑﺪون ﺗﺤﺪﻳﺪ ﻧﻮﻋﻬﺎ آﻤﺎ ﻓﻲ اﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ:
ﻛﻮد:
)(Public Sub inferenceExample
' Using explicit typing.
Dim num1 As Integer = 3
وﻻ ﻳﻤﻜﻦ اﺳﺘﺨﺪام اﻻﺳﺘﺪﻻل اﻟﻤﺤﻠﻲ ﻋﻠﻰ اﻟﻨﻮع ﻋﻨﺪ ﺗﻌﺮﻳﻒ اﻟﺤﻘﻮل ﻓﻲ اﻟﻔﺌﺔ 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
ﻛﻮد:
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
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واﻟﻤﺘﺮﺟﻢ ﺳﻴﺴﺘﺨﺪم اﻟﻤﺘﻐﻴﺮ اﻟﻨﺼﻲ آﻘﻴﻤﺔ ﻟﺘﻠﻚ اﻟﻮﺳﻴﻄﺔ وﻳﻤﻜﻦ ﺗﺤﺪﻳﺪ ﻃﺮق ﻣﻮﺳﻌﺔ ﻋﻠﻰ ﻣﻌﻈﻢ اﻷﻧﻮاع اﻟﺘﻲ
ﻳﻤﻜﻦ اﺳﺘﺨﺪاﻣﻬﺎ ﻓﻲ ﻓﻴﺠﻮل ﺑﻴﺴﻚ ﺿﻤﻦ ﻗﺎﺋﻤﺔ اﻟﻮﺳﺎﺋﻂ ﻣﺘﻀﻤﻨﺎ اﻟﺘﺎﻟﻲ:
-ﺗﻮﻓﺮ اﻟﻄﺮق اﻟﻤﻮﺳﻌﺔ ﻃﺮﻳﻘﺔ ﻣﺮﻳﺤﺔ وﻗﻮﻳﺔ ﻟﺘﻮﺳﻴﻊ ﻧﻮع ﻣﻮﺟﻮد وﻣﻊ ذﻟﻚ آﻲ ﻳﻤﻜﻦ اﺳﺘﺨﺪاﻣﻬﻢ ﺑﻨﺠﺎح هﻨﺎك ﺑﻌﺾ اﻟﻨﻘﺎط اﻟﺘﻲ ﻳﺠﺐ أﺧﺬهﺎ ﺑﻌﻴﻦ
اﻻﻋﺘﺒﺎر وهﻲ ﺗﻨﻄﺒﻖ ﺑﺸﻜﻞ رﺋﻴﺲ ﻋﻠﻰ ﻣﻄﻮري ﻣﻜﺘﺒﺎت اﻟﻔﺌﺎت 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.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 أﺣﺪاث اﻟﺘﻄﺒﻴﻖ
ﻟﻠﺤﺼﻮل ﻋﻠﻰ ﻗﺎﺋﻤﻪ ﺑﺠﻤﻴﻊ اﻟﺨﻄﻮط اﻟﻤﻮﺟﻮدة ﻓﻲ اﻟﺠﻬﺎز
ﻛﻮد:
اﺧﺘﺮﻧﺎ ﻟﻚ ﻣﻦ ﻣﻜﺘﺒﺔ اﻟﻜﺘﺐ ...
ﺑﺮﻣﺠﺔ إﻃﺎر ﻋﻤﻞ .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
اﻷﻧﻮاع واﻟﺪوال اﻟﺮﺋﻴﺴﻴﺔ ﻓﻲ اﻟﺴﻲ ﺷﺎرب
أﺣﻤﺪ ﺟﻤﺎل
ﺧﺼﺎﺋﺺ اﻟﻜﺎﺋﻦ 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
اﻷﻧﻮاع واﻟﺪوال اﻟﺮﺋﻴﺴﻴﺔ ﻓﻲ اﻟﺴﻲ ﺷﺎرب
أﺣﻤﺪ ﺟﻤﺎل
ﺟﻤﻴﻊ اﻷﻧﻮاع اﻟﻤﺸﺘﻘﺔ ﻣﻦ اﻟﻔﺌﺔ Objectﺗﻤﻠﻚ ﺑﺎﻟﻀﺮورة ﻃﺮﻗﻪ اﻷﺳﺎﺳﻴﺔ ﻣﺜﻞ Equalsو GetHashCodeوﺧﻼﻓﻪ.
أﻣﺎ اﻟﻄﺮق اﻷﺳﺎﺳﻴﺔ ﻟﻸﻧﻮاع اﻟﺮﻗﻤﻴﺔ ﻣﺜﻞ intو longﻓﺘﺸﻤﻞ اﻟﺨﺼﺎﺋﺺ اﻷﺳﺎﺳﻴﺔ ﻣﺜﻞ
MaxValueو MinValueﻓﻴﻤﺎ ﻳﺤﺘﻮي ال charﻋﻠﻰ ﺧﺼﺎﺋﺺ ﻣﺜﻞ IsDigitو IsLetterﻟﺘﺤﺪﻳﺪ ﻃﺒﻴﻌﺔ اﻟﻤﺪﺧﻼت .
وﺳﻨﺒﺪأ اﻟﺤﺪﻳﺚ ﺣﻮل اﻟﻔﺌﺔ 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 ﻟﻠﺒﺤﺚ ﻋﻦ ﻧﺺ أو ﺣﺮف ﺿﻤﻦ اﻟﻨﺺ.
ﻣﻘﺎرﻧﺔ اﻟﻨﺼﻮص ﻟﻤﻌﺮﻓﺔ ﻣﻜﺎن وﺟﻮد ﺣﺮف أو ﺑﺪاﻳﺔ ﻧﺺ ﻣﻌﻴﻦ ﺿﻤﻦ اﻟﻨﺺ ،ﺳﻮاء ﻣﻦ
اﻟﺒﺪاﻳﺔ أو ﻣﻦ اﻟﻨﻬﺎﻳﺔ.
ﻳﻤﻜﻦ اﺳﺘﺨﺪام اﻟﻤﻌﺎﻣﻞ == ﻟﻤﻘﺎرﻧﺔ اﻟﻨﺼﻮص ﻓﻲ 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ﻓﻲ اﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ :
ﻼ ﻟﻮ
اﻟﺤﺎﻟﺔ اﻟﻌﻜﺴﻴﺔ ،اﻟﺘﺤﻮﻳﻞ ﻣﻦ اﻷآﺒﺮ إﻟﻰ اﻷﺻﻐﺮ ،ﻣﺜ ً
آﺎن اﻟﻤﺘﻐﻴﺮان ﻣﻦ ﻧﻮع 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ﻋﻠﻰ اﻟﺘﺤﻮﻳﻞ ﻣﻦ اآﺒﺮ ﻷﺻﻐﺮ ﻓﻘﻂ ،ﺑﻞ ﻳﻤﻜﻦ اﺳﺘﺨﺪاﻣﻬﺎ ﻓﻲ آﻞ ﻋﻤﻠﻴﺎت اﻟﺘﺤﻮﻳﻞ ،اﺑﺴﻂ اﺳﺘﺨﺪام ﻟﻬﺎ هﻮ
ﻟﺘﺤﻮﻳﻞ 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ﺑﺎﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ ﻣﺜ ً
ﻛﻮد:
;)myByte = Convert.ToByte(myInt
48
اﻟﻌﺪد 01ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ /ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ 2008 ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ vb4arab.com
اﺑﺪأ ﻟﻴﻨﻚ
.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
.InsertDateTTime
ﺞ
ﻣﻌﺎﻟﺞ ﺳﻴﻈﻬﺮ ﻟﻚ .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ﺛﻢ ا ﻂ
ﺿﻊ
ﻓﻲ اﻟﺸﺎﺷﺔ اﻟﺨﺎﻣﺴﺔ ﻳﻄﻠﺐ ﻣﻨﻨﻚ اﻟﻤﻌﺎﻟﺞ وﺿ .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
ل
ﺠﻴﺪي
ﻧﺠﻴﺐ اﻟﻤﺠ
53
ﻬﺮ ﻳﻨﺎﻳﺮ /ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ 2008
اﻟﻟﻌﺪد 01ﻟﺸﻬ ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻋﻠﻰ اﻟﻨﺖ vb4arab.ccom
.NET
Adﻟﺒﻴﺌﺔ ﺗﻄﻮﻳﺮT
dd-ins
ﻣﺜﺎل ﻣﺒﺴﻂ ﻹﻧﺸﺎء s
ل
ﺠﻴﺪي
ﻧﺠﻴﺐ اﻟﻤﺠ
45
ﻬﺮ ﻳﻨﺎﻳﺮ /ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ 2008
اﻟﻟﻌﺪد 01ﻟﺸﻬ ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻋﻠﻰ اﻟﻨﺖ vb4arab.ccom
.NET
Adﻟﺒﻴﺌﺔ ﺗﻄﻮﻳﺮT
dd-ins
ﻣﺜﺎل ﻣﺒﺴﻂ ﻹﻧﺸﺎء s
ل
ﺠﻴﺪي
ﻧﺠﻴﺐ اﻟﻤﺠ
أدوات ﺑﻴﺌﺔ اﻟﺘﻄﻮﻮﻳﺮ
ﺛﺎﻟﺜﺎً :إﺿﺎﻓﺔ InserrtDateTime Add-inإﻟﻰ ﺷﺮﻳﻂ ت
Commandsوﻣﻦ
C ﺧﺘﺮ اﻟﺘﺒﻮﻳﺐ ,
اﻟﺨﻴﺎر Cuustomize ,ﻓﻲ ﻣﺮﺑﻊ اﻟﺤﻮار اﻟﺘﺎﻟﻲ اﺧر اﻟﻘﺎﺋﻤﺔ Tools
ﺔ ﺧﺘﺮ ﻣﻦ
ﺑﻌﺪ ﺗﺸﻐﻴﻞ ﺑﻴﺌﺔ اﻟﺘﻄﻮﻳﺮ اﺧ
ﺠﻨﺎ اﻟﺼﻐﻴﺮ آﻤﻤﺎ ﻓﻲ اﻟﺼﻮرة ااﻟﺘﺎﻟﻴﺔ
اﻟﺠﻬﺔ اﻟﻤﻘﺎﺑﻠﺔ ﺑﺮﻧﺎﻣﺠ
ﺔ Categooriesاﺧﺘﺮ ، Addinsﺳﻴﻴﻈﻬﺮ ﻓﻲ
ﻜﻮد
ﻣﺆﺷﺮ ﻟﻮﺣﺔ اﻟﻤﻔﺎﺗﻴﺢ ﻓﻲ أي ﻧﻘﻄﺔ داﺧﻞ ﻣﺤﺮر اﻟﻜﻮ
ﺮ أﺿﻒ ﻣﻠﻒ ﻧﺼﻲ ,أو ﺿﻊ وأﺧﻴﺮًا ﻟﺘﺠﺮﺮﺑﺔ اﻟﺒﺮﻧﺎﻣﺞ ﻗﻢﻢ ﺑﻔﺘﺢ ﻣﺸﺮوع ﺟﺪﻳﺪ ,ﺛﻢ ﻒ
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
وﺑﻌﺪ ذﻟﻚ أﺻﺒﺤﺖ ﺗﻤﻠﻚ اﻟﺘﺎرﻳﺦ.
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وﺗﺮﺳﻞ ﻓﻴﺰﻳﺎﺋﻴﺎ
ﻣﻦ ﺧﻼل اﻟﺒﺮﻳﺪ اﻻﻟﻜﺘﺮوﻧﻲ ﻟﻜﻲ ﺗﺤﻤﻞ إﻟﻰ اﻟﻤﺴﺘﻘﺒﻞ ﻋﻨﺪ ﻣﺸﺎرآﺔ هﺬا اﻻﺗﺼﺎل ﻳﺴﺘﻄﻴﻊ اﻟﻤﺮﺳﻞ واﻟﻤﺴﺘﻘﺒﻞ اﺳﺘﺨﺪام اﻟﻤﻔﺎﺗﻴﺢ ﻟﻠﺘﺸﻔﻴﺮ وﻓﻚ اﻟﺘﺸﻔﻴﺮ
ﻟﻌﻠﻚ إﻧﺴﺎن أﻧﻴﻖ و ﺗﻬﺘﻢ ﺑﻤﻈﻬﺮ وواﺟﻬﺔ اﻟﻤﺴﺘﻌﻤﻞ اﻟﺨﺎﺻﺔ ﻷي ﻋﺪد ﻣﻦ اﻟﺮﺳﺎﺋﻞ اﻟﻤﺤﻮﻟﺔ داﺧﻞ اﻟﻨﻈﺎم.
ﺑﺒﺮﻧﺎﻣﺠﻚ ﻟﺬﻟﻚ ﻗﺪ ﻳﻬﻤﻚ ﻫﺬا اﻟﻤﻮﺿﻮع ﻓﺌــﺎت اﻟﺘﺸﻔﻴﺮ اﻟﺘﻨﺎﻇﺮي داﺧﻞ ﺑﻴﺌﺔ اﻟﺪوت ﻧﺖ
59
اﻟﻌﺪد 01ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ /ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ 2008 ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ vb4arab.com
ﺗﻄﺎﻟﻌﻮن ﻓﻲ ﻫﺬا اﻟﻌﺪد...
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
:ﻛﻮد
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
66
2008 ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ/ ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ01 اﻟﻌﺪد vb4arab.com ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ
ﺗﻤﺮﻳﺮ ﺑﺎرﻣﻴﺘﺮات إﻟﻰ داﺧﻞ اﻟﺒﺮﻧﺎﻣﺞ ﻣﻦ اﻟﻮﻳﻨﺪوز
رﻏﻴﺪ ﻃﻴﺐ ﺑﺴﻢ اﷲ اﻟﺮﺣﻤﻦ اﻟﺮﺣﻴﻢ
و ﻟﻜﻦ اﻟﺴﺆال اﻵن ﻫﻮ ﻣﺎ اﻟﺬي ﺣﺪث ﺑﺎﻟﻀﺒﻂ ؟!
اﻟﺴﻼم ﻋﻠﻴﻜﻢ و رﺣﻤﺔ اﷲ وﺑﺮآﺎﺗﻪ.
ﻟﻨﺠﻴﺐ ﻋﻠﻰ اﻟﺴﺆال ﻳﺠﺐ أن ﻧﻌﻠﻢ أن اﻟﻤﺘﻐﻴﺮ اﻟﻤﻌﺮف ﺿﻤﻨﻴًﺎ
ﻓﻲ هﺬﻩ اﻟﺤﻠﻘﺔ ﻣﻦ ﺣﻠﻘﺎت اﻟﺴﻠﺴﺔ اﻟﺬهﺒﻴﺔ ﻓﻲ اﻟﻤﻮاﺿﻴﻊ
و اﻟﻤﺴﻤﻰ Commandﻳﺤﺘﻔﻆ ﺑﻪ اﻟﻔﻴﺠﻮال ﺑﻴﺴﻚ ﻟﺘﺨﺰﻳﻦ
اﻟﺒﺮاﻣﻴﺘﺮات اﻟﺘﻲ ﺗﻢ ﺗﻤﺮﻳﺮهﺎ إﻟﻰ ﺑﺮﻧﺎﻣﺠﻨﺎ ..وﻣﺎ ﻗﻤﻨﺎ ﻧﺤﻦ ﺑﻪ هﻮ ﻓﻘﻂ اﻟﻌﻠﻤﻴﺔ ﺳﻨﺘﻌﺮف ﺑﺈذن اﷲ ﺗﻌﺎﻟﻰ ﻋﻠﻰ ﻃﺮﻳﻘﺔ ﺗﻤﺮﻳﺮ اﻟﺒﺎرﻣﺘﺮات إﻟﻰ
ﻋﺮض اﻟﺒﺮاﻣﺘﺮات اﻟﺘﻲ ﻣﺮرت ﻟﻠﺒﺮﻧﺎﻣﺞ وﻟﻮ أﻧﻚ ذهﺒﺖ إﻟﻰ اﻟﺴﻮاﻗﺔ داﺧﻞ ﺑﺮﻧﺎﻣﺞ ﻣﻦ ﺑﺮاﻣﺞ اﻟﻮﻳﻨﺪوز!
ﺳﻲ C ..ﺛﻢ ﻧﻘﺮت ﻋﻠﻰ اﻟﺒﺮﻧﺎﻣﺞ myMsg.exeﻓﺎﻧﻚ ﻋﻨﺪهﺎ ﺳﺘﺮى
ﺑﺈذن اﷲ ﺗﻌﺎﻟﻰ ﻣﺮﺑﻊ ﺣﻮار ﻓﺎرغ ! ...و اﻟﺴﺒﺐ هﻮ أن اﻟﻨﻘﺮ اﻟﻌﺎدي و ﻟﻜﻲ ﻧﻔﻬﻢ ﺳﻮﻳًﺎ ﻣﺎ اﻟﻤﻘﺼﻮد ﻣﻦ ذﻟﻚ دﻋﻨﻲ أذآﺮك ﺑﻜﻴﻔﻴﺔ
ﻋﻠﻰ اﻟﺒﺮﻧﺎﻣﺞ ﻻ ﻳﻤﺮر ﻟﻪ أي ﺑﺎرﻣﻴﺘﺮات ﻟﻜﻨﻚ إذا ذهﺒﺖ إﻟﻰ اﻟﻘﺎﺋﻤﺔ ﻼ إذا اﻓﺘﺮﺿﻨﺎ اﻧﻚ
ﺗﻤﺮﻳﺮ اﻟﺒﺎﻣﻴﺘﺮات إﻟﻰ أي إﺟﺮاء ﺗﻘﻮم ﺑﺘﺼﻤﻴﻤﻪ ﻓﻤﺜ ً
ﻼ ﺛﻢ اﺗﺒﻌﺘﻪ
ﺗﺸﻐﻴﻞ ) ( Runﻓﻲ اﺑﺪأ ﺛﻢ آﺘﺒﺖ ﻣﺴﺎر ﺑﺮﻧﺎﻣﺠﻚ آﺎﻣ ً ﺗﺮﻳﺪ أن ﺗﻘﻮم ﺑﺈﻧﺸﺎء إﺟﺮاء ﺑﺴﻴﻂ وﻇﻴﻔﺘﻪ ﻋﺮض رﺳﺎﻟﺔ ﻣﻌﻴﻨﺔ ﻳﺘﻢ
ﺑﻔﺮاغ ﺛﻢ أي ﻧﺺ ﻓﺄﻧﻪ ﺳﻮف ﻳﺘﻢ ﺗﺸﻐﻴﻞ اﻟﺒﺮﻧﺎﻣﺞ ﺑﺸﻜﻞ ﻃﺒﻴﻌﻲ ﻣﻊ ﺗﻤﺮﻳﺮهﺎ إﻟﻰ اﻹﺟﺮاء ...
ﺗﻤﺮﻳﺮ اﻟﻨﺺ اﻟﺬي آﺘﺒﺘﻪ إﻟﻴﻪ ﻋﻦ ﻃﺮﻳﻖ اﻟﻤﺘﻐﻴﺮ Commandو ﻳﺒﻘﻰ
ﻋﻠﻰ اﻟﺒﺮﻧﺎﻣﺞ اﺳﺘﺨﺪاﻣﻪ ﺑﺎﻟﻨﺤﻮ اﻟﺬي ﻳﺮوق ﻟﻪ ﻣﻦ اﻟﻄﺒﻴﻌﻲ أن ﺗﻜﺘﺐ آﻮد آﺎﻟﺘﺎﻟﻲ:
و إن آﻨﺖ ﻣﻬﺘﻤﺎً ﺑﻤﻮﺿﻮع ارﺗﺒﺎﻃﺎت اﻟﻤﻠﻔﺎت وآﻴﻒ ﺗﺼﻨﻊ ارﺗﺒﺎط "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
و ﺣﻴﻨﻬﺎ ﻓﻘﻂ ﺳﻴﻌﻤﻞ اﻟﺒﺮﻧﺎﻣﺞ ﺑﺈذن اﷲ ﺗﻌﺎﻟﻰ
أﺧﻴﺮا أﺗﻤﻨﻰ ﻟﻠﺠﻤﻴﻊ ﺗﺤﻘﻴﻖ اﻟﻔﺎﺋﺪة اﻟﻤﺮﺟﻮة
اﻟﺴﻼم ﻋﻠﻴﻜﻢ و رﺣﻤﺔ اﷲ و ﺑﺮآﺎﺗﻪ
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
72
اﻟﻌﺪد 01ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ /ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ 2008 ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ vb4arab.com
4/1 إﻧﻲ ذﻛﺮﺗﻚ واﻟﺬﻛﺮى ﻣﺆرﻗﺔ
ﺗﺮﻛﻲ اﻟﻌﺴﻴﺮي
.13اﻟﻤﺘﺮﺟﻢ اﻟﻐﺒﻲ The stupid compiler
واﻟﺬي ﻗﺪ ﻳﺠﺮي ﻋﻤﻠﻴﺔ ﺗﺮﺟﻤﺔ Compilingرﻏﻢ وﺟﻮد ﺑﻌﺾ اﻷﺧﻄﺎء ﻧﺤﻮﻳﺔ ،ﻟﻴﻈﻬﺮ ﺧﻄﺄ آﺘﺎﺑﺔ اﻟﻌﺒﺎرة Ifدون End Ifآﺨﻄﺄ
وﻗﺖ اﻟﺘﻨﻔﻴﺬ . Run time error
وأﺣﺎول ﺑﻘﺼﺎر ﺟﻬﺪي ﻹﻳﻘﺎف أرﺑﺎﺣﻪ ،رﻏﻢ أﻧﻲ ﻣﺘﺄآﺪ ﺑﺄﻧﻲ أﺳﺎﻋﺪﻩ أﻳﻀﺎ!!
ﻳﺘﺒﻊ...
73
اﻟﻌﺪد 01ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ /ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ 2008 ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ vb4arab.com
إذا ﻋﻠﻤﺖ أن ﺟﺪ ﺳﺎﻟﻢ ﺗﻮﻓﻲ ﺳﻨﺔ 1872م ،وأن ﺳﺎﻟﻢ ﺗﻮﻓﻲ ﺑﻌﺪ ﻣﻴﻼد ﺟﺪه ﺑﻤﻘﺪار 131ﺳﻨﺔ ،وإن
ﻣﺠﻤﻮع ﻋﻤﺮي ﺳﺎﻟﻢ وﺟﺪه 105ﺳﻨﻮات ،ﻓﻔﻲ أي ﺳﻨﺔ وﻟﺪ ﺳﺎﻟﻢ...
ﻳﻘﻮم اﻟﻤﻬﻨﺪس ﺧﺎﻟﺪ ﺑﺒﻨﺎء ﺣﺎﺋﻂ ﻣﻨﺰل ﺧﻼل 4ﺳﺎﻋﺎت ﻋﻤﻞ ﻣﺘﻮاﺻﻠﺔ ،ﺑﻴﻨﻤﺎ ﻳﻘﻮم اﻟﻤﻬﻨﺪس ﺣﺎﻣﺪ
ﺑﺒﻨﺎء ﻧﻔﺲ اﻟﺤﺎﺋﻂ ﻓﻲ 6ﺳﺎﻋﺎت ﻣﺘﻮاﺻﻠﺔ ،ﻓﺈذا ﺟﻤﻌﻨﺎ اﻟﻤﻬﻨﺪس ﺣﺎﻣﺪ واﻟﻤﻬﻨﺪس ﺧﺎﻟﺪ ﻓﻜﻢ ﻣﻦ اﻟﻮﻗﺖ
ﻳﺴﺘﻐﺮق ﺑﻨﺎء اﻟﺤﺎﺋﻂ ﻧﻔﺴﻪ ؟؟
ﻧﺮﻳﺪ ﺷﺮاء 100ﻃﻴﺮ ﻣﻦ اﻷﻧﻮاع اﻟﺘﺎﻟﻴﺔ ﺑـ 100رﻳﺎل ،ﺑﺤﻴﺚ ﺳﻌﺮ اﻟﺪﺟﺎﺟﺔ اﻟﻮاﺣﺪة 5رﻳﺎل ،وﺳﻌﺮ
ﻻ واﺣﺪًا ،وﺳﻌﺮ 20ﻋﺼﻔﻮرا ﺑﺮﻳﺎل واﺣﺪ ﻓﻘﻂ .ﻓﻜﻢ ﻋﺪد اﻟﻄﻴﻮر ﻣﻦ ﻛﻞ ﻧﻮع؟
اﻟﺤﻤﺎﻣﺔ اﻟﻮاﺣﺪة رﻳﺎ ً
ﺗﺬﻛﺮت أﻃﻔﺎل ﻛﺎﻧﻮا أﻳﺎم دراﺳﺘﻲ اﻟﺘﻲ )ﻟﻢ أﺗﺎﺑﻊ ﺑﻬﺎ( وﺗﺬﻛﺮت ﻓﻴﻬﺎ إﻧﺠﺎزات أﻃﻔﺎل ﻓﻲ ﻣﺪرﺳﺘﻨﺎ ﻓﻲ ﺳﺒﻴﻞ اﻟﻘﺮﺻﻨﺔ
ﻧﻌﻢ رﺑﻤﺎ اﻟﻘﺮﺻﻨﺔ ﻓﻲ ﻣﻮﻗﻌﻨﺎ اﻟﺒﺮﻣﺠﻲ ﺗﻌﻨﻲ ﺷﻲء وﻟﻜﻦ ﻓﻲ ﻣﺪرﺳﺘﻲ ﺗﻌﻨﻲ أﺷﻴﺎء أﺧﺮى وﻫﻲ رﺑﻤﺎ
ﻋﻠﻰ ﺳﺒﻴﻞ اﻟﻤﺜﺎل.
ﻓﻔﻲ أﻳﺎم اﻻﺧﺘﺒﺎرات اﻷوﻟﻴﺔ ﻣﺜﻞ اﻹﻣﻼء واﻟﻤﺬاﻛﺮات وﻏﻴﺮﻫﺎ ﻣﻦ اﻹﺟﺮاءات اﻟﺘﻲ ﻳﺘﻄﻠﺒﻬﺎ اﻟﻄﺎﻟﺐ ﻟﻴﻨﺠﺢ ﻓﻴﻬﺎ
ﻛﺎن ﻛﻞ ﻣﺮة ﻳﺄﺗﻴﻨﺎ ﻃﻔﻞ وﻳﺤﺪﺛﻨﺎ ﻋﻠﻰ ﺛﻐﺮة ﻓﻲ ﻋﻤﻠﻴﺔ اﻻﺧﺘﺒﺎر
ﻓﺤﻴﻦ ﻧﻜﺘﺐ إﻣﻼء ﻛﺎن ﻳﻜﺘﺒﻬﺎ ﻋﻠﻰ اﻟﺼﻔﺤﺔ ﻓﻲ ﻣﻨﺘﺼﻒ اﻟﺪﻓﺘﺮ وﺣﻴﻦ ﺗﺄﺗﻲ اﻵﻧﺴﺔ ﻻ ﺗﺮاﻫﺎ وﻣﻨﻬﻢ ﻣﻦ ﻳﻜﻮن ﻗﺮﺻﺎن ذو ﻗﺪرة أﻋﻠﻰ
وﻫﻲ أن ﻳﻘﻮم ﺑﻜﺘﺎﺑﺔ اﻹﻣﻼء ﻋﻠﻰ ﺻﻔﺤﺔ وﺿﻌﻬﺎ ﻓﻮق ﺻﻔﺤﺔ اﻟﺪﻓﺘﺮ أﺛﻨﺎء ﻋﻤﻠﻴﺔ اﻟﻜﺘﺎﺑﺔ وﻳﻀﻐﻂ ﺑﺎﻟﻘﻠﻢ ﺣﺘﻰ ﺗﺒﻘﻰ آﺛﺎر اﻟﻜﺘﺎﺑﺔ ﻋﻠﻰ
اﻟﺪﻓﺘﺮ ﻟﻠﻐﺪ ﺣﺘﻰ ﺗﺄﺗﻲ اﻵﻧﺴﺔ وﺗﻘﺮأﻫﺎ ﻟﻨﻜﺘﺒﻬﺎ.
ﻓﺘﻜﻮن ﻣﻬﻤﺘﻪ ﻫﻲ أن ﻳﻌﻴﺪ اﻟﻜﺘﺎﺑﺔ ﻓﻮق اﻟﻨﺺ اﻟﺸﻔﺎف و ﻳﺄﺧﺬ ﻋﻼﻣﺔ ﺟﻴﺪ ﺟﺪا...
وﻟﻜﻦ اﻟﻤﺼﻴﺒﺔ ﺑﺎﻟﻤﻘﻠﺪﻳﻦ ﻟﻠﻔﻜﺮة ﻓﻴﺄﺗﻴﻚ أﻃﻔﺎل أﻏﺒﻴﺎء ﻓﺘﺄﺗﻲ اﻵﻧﺴﺔ وﺗﻘﺮأ وﻫﻢ ﻳﻜﺘﺒﻮن وﻟﻜﻦ ﻟﺴﻮء ﺣﻈﻬﻢ أن اﻵﻧﺴﺔ ﻻ ﺗﺒﺪأ ﻣﻦ
اﻷﻋﻠﻰ ﻓﻴﻜﺘﺒﻮﻧﻬﺎ وﻳﻈﻨﻮن أﻧﻬﻢ أذﻛﻴﺎء )ﻷﻧﻬﻢ ﻻ ﻳﺠﻴﺪون اﻟﻘﺮاءة( واﻟﻨﺘﻴﺠﺔ ﻫﻲ اﻛﺘﺸﺎف أﻣﺮه وأﺧﺬ ﻋﻼﻣﺔ ال 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اﳋﻄﺄ: ﻋﻼﻣﺔ اﻟﺘﻨﺼﻴﺺ ;ﻏﲑ ﻣﻮﺟﻮدة
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 اﳌﱰﺟﻢ ﺳﻴﻌﻄﻴﻚ اﻟﻨﺘﻴﺠﺔ
79
2008 ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ/ ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ01 اﻟﻌﺪد vb4arab.com ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ
ﻗﺼﺺ ﻧﺠﺎح -اﻟﺤﻠﻘﺔ اﻷوﻟﻰ -
ﻣﻨﻘﻮل
ﺗﻌﺘﻤﺪ ﻧﻈﺮﻳﺔ اﻟﻨﺠﺎح ﻓﻲ دﻧﻴﺎ اﻷﻋﻤﺎل ﻋﻠﻰ اﻟﻤﺠﻲء ﺑﻔﻜﺮة ﻋﺒﻘﺮﻳﺔ ﻻﻣﻌﺔ ،ﻟﻢ ﻳﺴﺒﻘﻚ إﻟﻴﻬﺎ أﺣﺪ ﻣﻦ ﻗﺒﻠﻚ،
ﺛﻢ ﺗﻀﻊ ﺧﻄﺔ ﻋﻤﻞ ﻣﺤﻜﻤﺔ ﻗﺎﺑﻠﺔ ﻟﻠﺘﺤﻘﻴﻖ ،ﺛﻢ ﺗﺒﺤﺚ ﻋﻦ اﻟﻤﻤﻮﻟﻴﻦ وﺗﻀﻊ
ﻧﺴﺒﺔ ﺗﻘﺴﻴﻢ ﻋﺎدﻟﺔ ﻟﻸرﺑﺎح واﻟﺨﺴﺎﺋﺮ ،ﺛﻢ ﺗﺘﻮﻛﻞ ﻋﻠﻰ اﷲ وﺗﺠﺘﻬﺪ.
ﻫﺬه ﻧﻈﺮﻳﺔ أﻛﺎدﻳﻤﻴﺔ ﺑﺤﺘﺔ ،وﻫﻲ وإن ﺗﺤﻘﻘﺖ ﻓﻲ ﻛﺜﻴﺮ ﻣﻦ اﻷﺣﻴﺎن ،ﻟﻜﻦ ﻟﻜﻞ ﻧﻈﺮﻳﺔ ﺷﻮاذﻫﺎ ،واﻟﻴﻮم
ﻧﺘﻨﺎول ﻫﺬا اﻷﻣﺮ ﻣﻦ ﺧﻼل ﻗﺼﺔ اﻟﻔﺮﻧﺴﻲ ﻓﻴﻠﻴﺐ ﻛﺎن اﻟﻤﻮﻟﻮد ﻓﻲ 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دوﻻر.
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
ﻹﻃﺎر ﻋﻤﻞ .ﻧﺖ
ﺸﻔﺮات اﻟﻤﻤﺼﺪرﻳﺔ ﻹ
إﻋﺪاد اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ﻟﺘﻨﻘﻴﺢ اﻟﺸ
.Search the above loccations only when symb ﺑﺘﻔﻌﻴﻞ اﻟﺨﺎﺻﻴﺔ bols are loadded manuallly
ﻞ ت .ﻗﻢ
ﻼت اﻟﺴﺎﺑﻘﺔ
ﺑﻌﺪ اﻟﻘﻴﺎم ﺑﺎﻟﺘﻌﺪﻳﻼ
و هﺬﻩ ههﻲ ﺻﻮرة ﻧﺎﻓﺬةة اﻹﻋﺪادات ﺪ
85
200
ﻬﺮ ﻳﻨﺎﻳﺮ /ﻓﺒﺮااﻳﺮ ﻣﻦ ﺳﻨﺔ 08
اﻟﻌﺪد 01ﻟﺸﻬ ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻋﻠﻰ اﻟﻨﺖ vb4arab.ccom
ﻹﻃﺎر ﻋﻤﻞ .ﻧﺖ
ﺸﻔﺮات اﻟﻤﻤﺼﺪرﻳﺔ ﻹ
إﻋﺪاد اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ﻟﺘﻨﻘﻴﺢ اﻟﺸ
ﺟﻢ ﻋﻨﺪ ﻧﻘﻄﺔ اﻟﺘﻮﻗﻒ اﻟﺘﻲ أﺿﻔﺘﻬﺎ ،و ﻗﻢ ﺑﺈﻇﻬﺎر ﻧﺎﻓﺬة رﺻﺔ ﺳﻴﺘﻮﻗﻒ اﻟﻤﺘﺮﺟﻋﻠﻰ اﻟﺰر ،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ﻣﺠﺪدا ﻟﻴﻨﺘﻘﻞ
87
200
ﻬﺮ ﻳﻨﺎﻳﺮ /ﻓﺒﺮااﻳﺮ ﻣﻦ ﺳﻨﺔ 08
اﻟﻌﺪد 01ﻟﺸﻬ ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻋﻠﻰ اﻟﻨﺖ vb4arab.ccom
ﻹﻃﺎر ﻋﻤﻞ .ﻧﺖ
ﺸﻔﺮات اﻟﻤﻤﺼﺪرﻳﺔ ﻹ
إﻋﺪاد اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ﻟﺘﻨﻘﻴﺢ اﻟﺸ
88
200
ﻬﺮ ﻳﻨﺎﻳﺮ /ﻓﺒﺮااﻳﺮ ﻣﻦ ﺳﻨﺔ 08
اﻟﻌﺪد 01ﻟﺸﻬ ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻋﻠﻰ اﻟﻨﺖ vb4arab.ccom
ﻹﻃﺎر ﻋﻤﻞ .ﻧﺖ
ﺸﻔﺮات اﻟﻤﻤﺼﺪرﻳﺔ ﻹ
إﻋﺪاد اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ﻟﺘﻨﻘﻴﺢ اﻟﺸ
ﺴﺘﺨﺪﻣﻴﻦ اﻟﻟﻤﺘﻘﺪﻣﻴﻦ
ﻟﻠﻤﺴ
ﻣﺠﻤﻊ ﺗﻮد ﺗﺘﺒﻊ اﻟﺘﻨﻘﻴﻴﺢ ﻓﻴﻪ،
ﻊ ﻼزم ﻟﻜﻞ اﻟﺘﻄﻮﻳﺮ 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.DDLL
• System.DData.DLL
• System.DDrawing.DLLL
• System.WWeb.DLL
• System.WWeb.Extenssions.DLL
• System.WWindows.Foorms.DLL
• System.XXML.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.ﺑﺼﻮرة ﺻ
ﺻﺤﻴﺤﺔ.
91
200
ﻬﺮ ﻳﻨﺎﻳﺮ /ﻓﺒﺮااﻳﺮ ﻣﻦ ﺳﻨﺔ 08
اﻟﻌﺪد 01ﻟﺸﻬ ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻋﻠﻰ اﻟﻨﺖ vb4arab.ccom
ﻹﻃﺎر ﻋﻤﻞ .ﻧﺖ
ﺸﻔﺮات اﻟﻤﻤﺼﺪرﻳﺔ ﻹ
إﻋﺪاد اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ﻟﺘﻨﻘﻴﺢ اﻟﺸ
اﻟﻔﺮق ﺑﻴﻨﻪ
ﻣﻠﻔﺎت اﻟﺸﻔﺮات ﻣﻣﻨﻪ ،ﻣﺎ ق
ت Microsﻟﻟﺘﻨﺰﻳﻞ
soft Sym
ﺳﻮﻓﺖ mbol Serrver
/4أﻧﺎ أﺳﺘﻌﻤﻞ ﺧﺎددم ﻣﺎﻳﻜﺮوﺳﻮ
و ﺑﻴﻦ اﻟﻄﺮﻳﻘﺔ اﻟﺘﻘﻘﻠﻴﺪﻳﺔ؟
ﻣﻠﻔﺎت PDBﺑﺪون أي ﻣﻌﻠﻮﻣﺎت ﻋﻦ اﻟﺸﻔﺮة ﺑﺪاﺧﻠﻬﺎ ،هﺬﻩ اﻟﻤﻌﻌﻠﻮﻣﺎت ﺗﻢ ﺣﺬﻓﻓﻬﺎ ﻗﺒﻞ ﻧﺸﺮهﺎ رﺳﻤﻴﺎ
Microsoft Symﻳﻮﻓﺮ ت ﻣﻮﻗﻊ mbol Serveer
ال . http://refeerencesourcce.microsoftt.com/symbbols).PDB
(. ﻼل هﺬا اﻟﺸﺮح ﻟﺘﻨﺰﻳﻞ ﻣﻠﻔﺎت ل
ﺨﺪﻣﻨﺎﻩ ﺳﺎﺑﻘﺎ ﺧﻼ
ﻋﻠﻰ اﻟﻤﻤﻮﻗﻊ اﻟﺬي اﺳﺘﺨ
ﺼﻠﺐ(
pdbﻓﻲ اﻟﻘﺮص اﻟﺼ
ﺠﻠﺪ ﻣﻠﻔﺎت p أردت أن ﺗﻘﻮم ﺑﻌﻤﻠﻴﻠﻴﺔ ﺗﺤﺪﻳﺚ )ﻟﻤﺠ
ﻓﻲ ﺣﺎﻟﺔ أن تﺳﻴﻮﻟﺪ ﻣﺸﺎآﻞ ﻲ ﻀﺎ أن ﺗﻌﺮف أأن وﺟﻮد ﻣﺼﺪررﻳﻦ ﻣﺨﺘﻠﻔﻴﻦ ﺳ ﻋﻠﻴﻚ أﻳﻀ
ﺼﺪر اﻟﺜﺎﻧﻲ.
ﺤﺒﺬ ﺣﺬف اﻟﻤﺼﺼﺪرﻳﻦ ،ﻟﺬﻟﻚ ﻳﺤ ﺑﺘﻨﺰﻳﻞ ﻣﻣﻠﻔﺎت ﺟﺪﻳﺪة ﻟﻤﻤﺸﺮوﻋﻚ ﻷن ﺑﻴﻴﺌﺔ اﻟﺘﻄﻮﻳﺮ ﺳﺘﺘﻮاﺟﻪ ﻣﺸﺎآﻞ ووﺧﻠﻂ ﺑﻴﻦ اﻟﻤﺼ
92
200
ﻬﺮ ﻳﻨﺎﻳﺮ /ﻓﺒﺮااﻳﺮ ﻣﻦ ﺳﻨﺔ 08
اﻟﻌﺪد 01ﻟﺸﻬ ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻋﻠﻰ اﻟﻨﺖ vb4arab.ccom
ﻹﻃﺎر ﻋﻤﻞ .ﻧﺖ
ﺸﻔﺮات اﻟﻤﻤﺼﺪرﻳﺔ ﻹ
إﻋﺪاد اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ﻟﺘﻨﻘﻴﺢ اﻟﺸ
ﻴﺔ.
ﺳﺘﺮى أن اﻟﻨﻘﻄﺔ ﺗﻌﻤﻞ ﺑﺼﻮرة ﻃﺒﻴﻌﻴﺔ
ﺻﺢ ﻣﻦ أﻣﺎم ﻟﺨﻴﺎر “Reqquire sourcee files to exxactly matchh theآﻨﺖ ﺗﺴﺘﻌﻤﻞ هﺬﻩ اﻟﻤﻴﺰة ﺑﺼﻮرةة ﻣﺘﻜﺮرة ،ﻗﻢ ﺑﺑﻨﺰع اﻟﻌﻼﻣﺔ ﺻ
إذا ﺖ
ﻲ ﺗﺒﻮﻳﺐ Debuggingﻣﻦ ﻧﺎﻓﺬة اﻹﻋﺪادات اﻟﺨﺎﺻﺔ ﺑﺒﻴﺌﺔ اﻟﺘﻄﻮﻳﺮ )(Toools->Optionns->Debuggging originalاﻟﺬي ﺗﺠﺪﻩ ﻓﻲ
o ”verssion.
اﻟﺪوت ﻧﺖ ﻷن اﻟﻤﻌﻌﻠﻮﻣﺎت
ت إن ﻋﻤﻠﻴﺔ اﻟﺘﺘﻨﻘﻞ ﻣﻦ اﻟﻤﺘﻐﻴﺮﺮ إﻟﻰ ﻣﺼﺪر ﺗﻌﺮﻳﻔﻪ داﺧﻞ ﺷﻔﺮة ﻋﺎدﻳﺔ ﺗﺘﺘﺨﻞ ﻋﻦ ﺣﺎﻟﺔ اﻟﺸﻔﺮة اﻟﻤﺼﺪرﻳﺔ ﻓﻲ
اﻟﻤﺘﻐﻴﺮات ﻣﺜﻼ ﻏﻴﺮ ﻣﻮﻮﺟﻮدة ﻓﻲ ﻣﻠﻒ ال 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و أﻗﻮم ﺑﺘﻨﺰﻳﻞ اﻟﻤﻠﻔﺎت ﻳﺪوﻳﺎ؟
94
اﻟﻌﺪد 01ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ /ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ 2008 ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ vb4arab.com
أﺧﺒﺎر ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ
إﻋﺪاد ﻣﺼﻄﻔﻰ ﻣﺤﻤﻮد)!(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دوﻻر ﻓﻲ أﻏﻠﺐ اﻷﺣﻴﺎن( ﻋﻠﻴﻚ اﻟﺒﺤﺚ ﻋﻦ اﻟﻤﺮآﺰ اﻟﻤﻌﺘﻤﺪ اﻟﺬي ﻳﻘﺪم
اﻟﺨﺪﻣﺎت اﻷرﺧﺺ – ﺑﻌﺾ اﻟﻤﺮاآﺰ ﺗﻘﺪم أﺳﻌﺎر ﺟﺪ ﻣﻐﺮﻳﺔ–
ﻳﺴﺘﻔﻴﺪ اﻟﻤﺮﺷﺢ ﻣﻦ دورة ﺗﺪرﻳﺒﻴﺔ ﻣﻜﺜﻔﺔ ﻗﺒﻞ اﺟﺘﻴﺎز اﻻﻣﺘﺤﺎن و ﻣﺪﺗﻬﺎ ﺗﺨﺘﻠﻒ ﻣﻦ ﻣﺮآﺰ إﻟﻰ ﻣﺮآﺰ آﻤﺎ ﻳﻤﻜﻦ ﻟﻠﻤﺮﺷﺢ أن ﻳﺠﺘﺎز اﻻﻣﺘﺤﺎن دون
اﻟﺨﻀﻮع ﻟﺪورة اﻟﺘﺪرﻳﺒﻴﺔ )اﻟﻤﺼﺎرﻳﻒ ﺗﻨﻘﺺ( أي أن اﻟﺪورة ﻣﻔﺼﻮﻟﺔ ﻋﻦ اﻻﻣﺘﺤﺎن ﺑﻤﻌﻨﻰ اﻧﻚ ﻳﻤﻜﻦ أن ﺗﺄﺧﺬ اﻟﺪورة ﻓﻲ ﻣﻜﺎن وﺗﺬهﺐ ﻟﺘﻤﺘﺤﻦ
ﻓﻲ ﻣﻜﺎن أﺧﺮ ﻳﻤﻜﻨﻚ ﺣﺘﻰ إن ﺗﺆدى آﻞ اﻣﺘﺤﺎن ﻓﻲ ﻣﻜﺎن إذا أردت.
ﻳﻤﻜﻨﻚ أن ﺗﺪرس اﻟﺪورة ﻓﻲ ﻣﺮآﺰ ﺗﻌﻠﻴﻢ أو ﺗﻘﻮم ﺑﻘﺮاءﺗﻬﺎ ﻣﻦ اﻟﻜﺘﺐ اﻟﻤﺘﻮﻓﺮة هﻨﺎ وهﻨﺎك أو ﺗﺴﺘﺨﺪم أي أﺳﻠﻮب ﺗﺸﺎء اﻟﻤﻬﻢ اﻟﺤﺼﻮل ﻋﻠﻰ
اﻟﻤﻌﻠﻮﻣﺎت.
ﻳﻤﻜﻨﻚ ﻣﺮاﺟﻌﺔ اﻟﺪورات اﻟﺘﻲ ﺗﻮﻓﺮهﺎ ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ واﻣﺘﺤﺎﻧﺎﺗﻬﺎ وآﻞ ﻣﺎ ﻳﺘﻌﻠﻖ ﺑﻬﺎ ﻓﻲ ﻗﺴﻢ اﻟﺸﻬﺎدات و اﻟﺘﺪرﻳﺐ ﻓﻲ ﻣﻮﻗﻊ ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ.
ﺗﻘﻮم ﺑﺎﻟﺬهﺎب إﻟﻰ ﻣﺮآﺰ اﻻﻣﺘﺤﺎﻧﺎت اﻟﻤﻌﺘﻤﺪ اﻟﺬي ﺗﺮﻳﺪ أداء اﻻﻣﺘﺤﺎن ﻓﻴﻪ وﺗﻘﻮم ﺑﺈﻋﻄﺎﺋﻬﻢ رﻗﻢ اﻻﻣﺘﺤﺎن واﻟﻤﻴﻌﺎد اﻟﺬي ﺗﺮﻳﺪ
أن ﺗﺆدى اﻻﻣﺘﺤﺎن ﻓﻴﻪ.
96
اﻟﻌﺪد 01ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ /ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ 2008 ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ vb4arab.com
ﻣﺎﻳﻜﺮوﺳﻮﻓﺖMCP اﻣﺘﺤﺎن ﺷﻬﺎدة اﻟﻤﺤﺘﺮف ﻣﻦ
وﻟﻴﺪ ﺑﻮاﻟﻄﻤﻴﻦ ،ﻣﺼﻄﻔﻰ ﻣﺤﻤﻮد
.1ﺷﺮآﺔ ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ Microsoftوهﻰ اﻟﺸﺮآﺔ اﻟﺘﻲ ﺗﻘﻮم ﺑﻌﻤﻞ اﻻﻣﺘﺤﺎﻧﺎت وﺑﻴﻌﻬﺎ
.2ﺷﺮآﺔ ﺑﺮوﻣﺎﺗﺮﻳﻚ promatricوهﻰ اﻟﺸﺮآﺔ اﻟﻮﺣﻴﺪة اﻟﺘﻲ ﺗﺘﻌﺎﻣﻞ ﻣﻌﻬﺎ ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ اﻵن ﻟﺘﻮﺻﻴﻞ اﻣﺘﺤﺎﻧﺎﺗﻬﺎ ﺣﻴﺚ ﺗﻘﻮم ﺑﺘﺄدﻳﺔ
اﻻﻣﺘﺤﺎن ﻓﻲ ﻣﺮآﺰ اﻻﻣﺘﺤﺎﻧﺎت Testing Centerاﻟﻤﻌﺘﻤﺪ ﻣﻦ هﺬﻩ اﻟﺸﺮآﺔ ﻓﻲ ﺑﻠﺪك.
.3اﻟﺸﺮآﺔ اﻟﺘﻲ ﺳﺘﺆدى اﻻﻣﺘﺤﺎن ﻓﻴﻬﺎ وهﺬﻩ هﻲ اﻟﺸﺮآﺔ اﻟﺘﻲ ﺗﺘﻌﺎﻣﻞ ﻣﻌﻬﺎ ﻣﺒﺎﺷﺮة واﻟﺘﻲ ﻳﻮﺟﺪ ﻓﻴﻬﺎ ﻣﺮآﺰ اﻻﻣﺘﺤﺎﻧﺎت اﻟﻤﻌﺘﻤﺪ ﻣﻦ
ﺑﺮوﻣﺎﺗﺮﻳﻚ.
ﻋﻨﺪ ﺣﺠﺰ اﻻﻣﺘﺤﺎن ﺳﻴﻄﻠﺐ ﻣﻨﻚ ﻣﻸ اﺳﺘﻤﺎرة ﺗﺤﺘﻮى ﻋﻠﻰ ﻣﻌﻠﻮﻣﺎت ﻣﺜﻞ اﻻﺳﻢ واﻟﺘﻠﻴﻔﻮن و....
وﻟﻜﻦ ﺑﺎﻟﻨﺴﺒﺔ ﻟﻠﻌﻨﻮان ﻳﺠﺐ آﺘﺎﺑﺘﻪ ﺑﺪﻗﺔ ﻷن اﻟﺸﻬﺎدة ﺳﺘﺮﺳﻞ إﻟﻴﻚ ﻋﻦ ﻃﺮﻳﻘﻪ أو ﻳﻤﻜﻨﻚ ﺗﻐﻴﻴﺮﻩ ﻻﺣﻘﺎ آﻤﺎ ﺳﻨﺮى.
اﻟﺒﺮﻳﺪ اﻻﻟﻜﺘﺮوﻧﻲ ﻳﺠﺐ آﺘﺎﺑﺔ اﻟﺒﺮﻳﺪ اﻟﺬي ﺗﺴﺘﻌﻤﻠﻪ ﻷﻧﻪ ﺳﻴﺘﻢ إرﺳﺎل رﺳﺎﺋﻞ ﻟﻚ ﻋﻠﻰ هﺬا اﻟﻌﻨﻮان.
/3اﻟﺘﺤﻀﻴﺮ ﻟﻼﻣﺘﺤﺎن:
إذا ﺳﺠﻠﺖ ﻓﻲ ﻣﺮآﺰ ﻣﻌﺘﻤﺪ و دﻓﻌﺖ ﻧﻔﻘﺎت اﻟﺘﺴﺠﻴﻞ آﺎﻣﻠﺔ ،ﺳﺘﺴﺘﻔﻴﺪ ﻣﻦ دورة ﺗﺪرﻳﺒﻴﺔ ﻣﻜﺜﻔﺔ ﻗﺒﻞ اﺟﺘﻴﺎز اﻻﻣﺘﺤﺎن ،و ﻣﻊ ذﻟﻚ ﻋﻠﻴﻚ اﻟﺘﺤﻀﻴﺮ
ﺑﻤﻔﺮدك ﺑﺎﺳﺘﻌﻤﺎل اﻟﻜﺘﺐ )راﺟﻊ ﻣﻜﺘﺒﺔ اﻟﻤﻮﻗﻊ – ﻗﺴﻢ اﻟﺘﺤﻀﻴﺮ ﻻﻣﺘﺤﺎﻧﺎت اﻟﺸﻬﺎدات اﻟﺪوﻟﻴﺔ – ( أو ﺑﺎﺳﺘﻌﻤﺎل ﺑﺮاﻣﺞ اﻟﺘﺤﻀﻴﺮ أو ﺑﻌﺾ ﻣﻮاﻗﻊ
اﻻﻧﺘﺮﻧﺖ.
هﺬﻩ ﺑﻌﺾ اﻟﺒﺮاﻣﺞ اﻟﻤﺸﻬﻮرة ﻟﻠﺘﺤﻀﻴﺮ:
Vmwareﺗﺠﺪوﻧﻪ ﻋﻠﻰ اﻟﻤﻮﻗﻊ www.vmware.com
وآﻠﻬﺎ ﺗﻌﻤﻞ ﺑﻤﺒﺪأ اﻟﻤﻠﻔﺎت اﻟﺠﺎهﺰة اﻟﺘﻲ ﺗﺤﺘﻮي ﻋﻠﻰ اﻷﺳﺌﻠﺔ ،اﻟﻤﺪة اﻟﻼزﻣﺔ ،اﻹﺟﺎﺑﺎت اﻟﺼﺤﻴﺤﺔ ،اﺳﻢ اﻻﻣﺘﺤﺎن أي أﻧﻪ ﻋﻠﻴﻚ أن ﺗﻌﻄﻲ ﻟﻠﺒﺮﻧﺎﻣﺞ
اﻟﻤﻠﻒ اﻟﺬي ﻳﺤﺘﻮي ﻋﻠﻰ ﻣﻌﻠﻮﻣﺎت اﻻﻣﺘﺤﺎن.
ﺑﻌﺾ اﻟﻤﻮاﻗﻊ اﻟﻤﻔﻴﺪة:
www.certifexpress.com
www.certiffiles.com
www.certexams.com
www.microsoft-certification-exam.org
/4اﻻﻣﺘﺤﺎن:
اﻻﻣﺘﺤﺎن ﻓﻲ ﻣﺠﻤﻠﻪ ﻳﺘﻄﻠﺐ ﻣﻦ ﺳﺎﻋﺘﻴﻦ إﻟﻰ أرﺑﻊ ﺳﺎﻋﺎت ﺣﺴﺐ ﻧﻮﻋﻪ ،و ﻋﻠﻴﻚ أن ﺗﺤﺼﻞ ﻋﻠﻰ ﻧﻘﻄﺔ ﺗﻌﺎدل 55إﻟﻰ ) 100/75ﺣﺴﺐ
ﻧﻮع اﻻﻣﺘﺤﺎن( ﻣﻦ إﺟﻤﺎﻟﻲ اﻹﺟﺎﺑﺎت ﺣﺘﻰ ﺗﻌﺘﺒﺮ ﻧﺎﺟﺤﺎ.
اﻷﺳﺌﻠﺔ ﻋﺒﺎرة ﻋﻦ أﺳﺌﻠﺔ ﺧﻴﺎر واﺣﺪ أو ﻣﺘﻌﺪد ) (SCQ ،MCQو ﻋﻠﻴﻚ أن ﺗﺨﺘﺎر اﻹﺟﺎﺑﺔ )اﻹﺟﺎﺑﺎت( اﻟﺼﺤﻴﺤﺔ ﻣﻦ ﺑﻴﻦ اﻷﺟﻮﺑﺔ اﻟﻤﻘﺘﺮﺣﺔ.
ﺳﺘﺴﺘﻌﻤﻞ ﺣﺎﺳﻮب ﻣﺰود ﺑﺒﺮﻧﺎﻣﺞ اﻻﻣﺘﺤﺎن.
اﻷﺳﺌﻠﺔ آﻠﻬﺎ ﻣﻦ ﻧﻮع ) اﺧﺘﺮ اﻹﺟﺎﺑﺔ اﻟﺼﺤﻴﺤﺔ ( وﻟﻜﻦ هﻨﺎك أﻧﻮاع ﻟﻬﺬا اﻟﺴﺆال
ﺗﻘﻮم ﺑﺎﻟﺘﻌﻠﻴﻢ ﻋﻠﻰ اﻹﺟﺎﺑﺔ اﻟﺘﻲ ﺗﺨﺘﺎرهﺎ ﻓﻲ radio buttonأو check boxﺣﺴﺐ ﻧﻮع اﻟﺴﺆال ،ﻟﻠﺘﺪرﻳﺐ ﻋﻠﻰ اﻷﺳﺌﻠﺔ
ﻳﻤﻜﻨﻚ اﺳﺘﺨﺪام اﻣﺘﺤﺎﻧﺎت test kingوﻟﻜﻦ ﻻ ﺗﻌﺘﻤﺪ ﻋﻠﻴﻬﺎ ﻓﻘﻂ ﻋﻠﻴﻚ ﺑﺎﻟﻤﺮاﺟﻌﺔ اﻟﺠﻴﺪة
هﺬا اﻟﻤﻮﻗﻊ ﻳﺤﺘﻮي ﻋﻠﻰ اﻣﺘﺤﺎﻧﺎت ﻣﺠﺎﻧﻴﺔ ﻳﻤﻜﻨﻚ ﺗﻨﺰﻳﻞ ﻣﺎ ﺗﺸﺎء http://www.examcollection.com/
97
اﻟﻌﺪد 01ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ /ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ 2008 ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ vb4arab.com
ﻣﺎﻳﻜﺮوﺳﻮﻓﺖMCP اﻣﺘﺤﺎن ﺷﻬﺎدة اﻟﻤﺤﺘﺮف ﻣﻦ
وﻟﻴﺪ ﺑﻮاﻟﻄﻤﻴﻦ ،ﻣﺼﻄﻔﻰ ﻣﺤﻤﻮد
اﻟﻮﺳﺎﺋﻞ اﻟﻤﺘﺎﺣﺔ ﺧﻼل اﻻﻣﺘﺤﺎن :اﻟﺮﺟﻮع Review
هﺬﻩ اﻟﻮﺳﻴﻠﺔ ﺗﻤﻜﻨﻚ ﻣﻦ ﺗﻌﻴﻴﻦ اﻷﺳﺌﻠﺔ اﻟﺘﻲ ﺗﺮﻳﺪ اﻟﺮﺟﻮع إﻟﻴﻬﺎ ﻟﻤﺮاﺟﻌﺘﻬﺎ إن آﻨﺖ ﺗﺸﻚ ﻓﻲ إﺟﺎﺑﺘﻚ و ﻧﻨﺼﺤﻚ ﺑﺎﺳﺘﻌﻤﺎﻟﻬﺎ ﻟﺮﺑﺢ اﻟﻮﻗﺖ.
ﺑﻌﺾ اﻟﻨﺼﺎﺋﺢ ﻟﻠﻤﻤﺘﺤﻨﻴﻦ:
-ﻋﻠﻴﻚ ﺑﻘﺮاءة اﻹﺟﺎﺑﺎت اﻟﻤﺘﻮﻓﺮة ﻟﻠﺴﺆال اﻟﻤﻄﺮوح ﻗﺒﻞ رؤﻳﺘﻪ ﺛﻢ ﻗﻢ ﺑﻘﺮاءﺗﻪ ،هﺬﻩ اﻟﻄﺮﻳﻘﺔ أﺛﺒﺘﺖ ﺟﺪارﺗﻬﺎ ﺣﻴﺚ أﻧﻬﺎ ﺗﻤﻜﻨﻚ ﻣﻦ ﻣﻌﺮﻓﺔ اﻟﺴﺆال
ﻣﺒﺎﺷﺮة.
-ﺑﻌﺪ ﻗﺮاءة اﻟﺴﺆال ﻋﻠﻴﻚ اﻻﻧﺘﺒﺎﻩ إﻟﻰ اﻟﺘﻮﺟﻴﻬﺎت " "Best Choiceو " "with the least administrative effortاﻟﺘﻲ ﺗﺴﺎﻋﺪك ﻋﻠﻰ
ﻣﻌﺮﻓﺔ ﻧﻮع اﻹﺟﺎﺑﺔ و ﻓﻲ ﺑﻌﺾ اﻷﺣﻴﺎن ﻋﺪد اﻹﺟﺎﺑﺎت اﻟﺼﺤﻴﺤﺔ.
-ﺑﻌﺪ اﻹﺟﺎﺑﺔ ﻋﻠﻰ ﺟﻤﻴﻊ اﻷﺳﺌﻠﺔ و اﻟﻀﻐﻂ ﻋﻠﻰ زر ، End Examﺗﻈﻬﺮ ﻟﻚ ﻗﺎﺋﻤﺔ ﺑﻬﺎ ﺟﻤﻴﻊ اﻷﺳﺌﻠﺔ و ﺑﺠﺎﻧﺒﻬﺎ ﻋﻼﻣﺔ ﺻﺢ ﻟﻸﺳﺌﻠﺔ اﻟﺘﻲ أردت
أن ﺗﺪﻋﻬﺎ ﻟﻞReview.
إذا أﻧﻬﻴﺖ اﻹﺟﺎﺑﺔ ﻋﻠﻰ اﻷﺳﺌﻠﺔ اﻟﻤﺘﺒﻘﻴﺔ ﺳﺘﻈﻬﺮ ﻟﻚ رﺳﺎﻟﺔ ﺑﻬﺎ ﻧﺘﻴﺠﺔ اﻻﺧﺘﺒﺎر ﻣﺒﺎﺷﺮة ،إﻣﺎ آﻠﻤﺔ SuccessأوFailed.
ﺑﻌﺪ اﻻﻧﺘﻬﺎء ﻣﻦ اﻻﻣﺘﺤﺎن ﺳﺘﺘﺴﻠﻢ ﺗﻘﺮﻳﺮ وهﻮ ﻳﺤﺘﻮى ﻋﻠﻰ ﻋﺪة أﺷﻴﺎء
.1أوﻻ اﻟﺒﻴﺎﻧﺎت اﻟﺨﺎﺻﺔ ﺑﺎﻟﻤﻤﺘﺤﻦ ﻣﺜﻞ اﻻﺳﻢ رﻗﻢ اﻻﻣﺘﺤﺎن اﻟﻨﺘﻴﺠﺔ Candidate IDوﺑﻤﺎ أن هﺬﻩ أول ﻣﺮة ﺗﻤﺘﺤﻦ )إن آﺎﻧﺖ اﻟﻤﺮة
اﻷوﻟﻰ اﻟﺘﻲ ﺗﺠﺘﺎز ﻓﻴﻬﺎ اﻣﺘﺤﺎن ﻣﻦ اﻣﺘﺤﺎﻧﺎت ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ( ﺳﺘﺠﺪ ﻣﻜﺘﻮب ﺑﺠﻮارهﺎ ID Pendingهﺬا هﻮ MCP IDوﻟﻜﻨﻚ ﻟﻢ
ﺗﺤﺼﻞ ﻋﻠﻴﺔ ﺑﻌﺪ.
.2ﺛﺎﻧﻴﺎ ﻣﺠﻤﻮﻋﺔ رﺳﻮﻣﺎت ﺗﺒﻴﻦ ﻣﺪى إﺗﻘﺎﻧﻚ ﻟﻌﻨﺎﺻﺮ اﻻﻣﺘﺤﺎن ﺣﻴﺚ ﻳﺘﻢ ﺗﻘﺴﻴﻢ أﺳﺌﻠﺔ اﻻﻣﺘﺤﺎن إﻟﻰ ﻋﺪة ﻋﻨﺎﺻﺮ أو ﻣﺠﻤﻮﻋﺎت رﺋﻴﺴﻴﺔ
وﻳﺘﻢ إﻋﻄﺎءك ﺗﻘﻴﻴﻢ ﻟﻜﻞ ﻣﻨﻬﺎ.
.3ﺛﺎﻟﺜﺎ ﺻﻔﺤﺔ أﺧﺮى ﺑﻬﺎ ﺑﻌﺾ اﻷﺷﻴﺎء ﻋﻦ اﻻﻣﺘﺤﺎن وﻣﺰاﻳﺎ اﻟﺤﺼﻮل ﻋﻠﻴﻪ.
إذا ﻧﺠﺢ اﻟﻤﺘﺮﺷﺢ ﻓﻲ أﺣﺪ اﻻﻣﺘﺤﺎﻧﺎت ﻓﺈﻧﻪ ﺳﻴﺤﺼﻞ ﻋﻠﻰ ﺻﻨﺪوق ﺑﻪ ﺷﻬﺎدة وﺑﻄﺎﻗﺔ ﺑﻬﺎ ﺳﻨﺔ اﻟﺤﺼﻮل ﻋﻠﻰ اﻟﺸﻬﺎدة و اﻟﺮﻗﻢ اﻟﺘﺴﻠﺴﻠﻲ
ﻟﻠﻨﺎﺟﺢ MCPIDو اﻟﺬي ﺳﺘﺤﺘﺎﺟﻪ ﻟﻠﺪﺧﻮل إﻟﻰ اﻟﻤﻮﻗﻊ اﻟﺨﺎص ﺑﺎل MCPsاﻟﺬي ﻳﺤﺘﻮي ﻋﻠﻰ ﺁﺧﺮ اﻟﻤﻌﻠﻮﻣﺎت ﻋﻦ ﺗﻘﻨﻴﺎت ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ و
اﻟﻌﺮوض اﻟﺠﻴﺪة و اﻟﺨﺪﻣﺎت اﻟﻤﺘﻮﻓﺮة.
اﻟﺸﻬﺎدة ﻟﻬﺎ ﻗﻴﻤﺔ ووزن ﺛﻘﻴﻞ ﻓﻲ اﻟﺴﻴﺮة اﻟﺬاﺗﻴﺔ ﻟﺼﺎﺣﺒﻬﺎ ﺣﻴﺚ ﺗﺰﻳﺪ ﻓﻲ ﻓﺮص اﻟﺘﻮﻇﻴﻒ ﻓﻲ اﻟﻬﻴﺌﺎت اﻟﻤﺨﺘﻠﻔﺔ.
98
اﻟﻌﺪد 01ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ /ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ 2008 ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ vb4arab.com
ﻣﺎﻳﻜﺮوﺳﻮﻓﺖMCP اﻣﺘﺤﺎن ﺷﻬﺎدة اﻟﻤﺤﺘﺮف ﻣﻦ
وﻟﻴﺪ ﺑﻮاﻟﻄﻤﻴﻦ ،ﻣﺼﻄﻔﻰ ﻣﺤﻤﻮد
ﻛﻴﻔﻴﺔ ﻃﻠﺐ اﻟﺸﻬﺎدة:
إذا آﺎن ﻟﺪﻳﻚ أى ﺑﺮﻳﺪ ﻋﻠﻰ windows live ،hotmail ، msnﻳﻤﻜﻨﻚ اﺳﺘﺨﺪاﻣﻪ ﻣﺒﺎﺷﺮة أﻣﺎ إذا آﺎن اﻟﺒﺮﻳﺪ اﻟﺬي ﺗﺮﻳﺪ اﻟﺘﺴﺠﻴﻞ ﺑﻪ ﻋﻠﻰ
ﻳﺎهﻮ ﻣﺜﻼ ﺳﺘﺠﺪ اﻟﺨﻴﺎرات ﻻﺳﺘﺨﺪاﻣﻪ وﺳﺘﺴﺘﺨﺪﻣﻪ ﺑﻼ ﻣﺸﺎآﻞ أﻧﺎ ﻣﺜﻼ ﺑﺮﻳﺪي ﻋﻠﻰ ﻳﺎهﻮ وأﻗﻮم ﺑﺎﺳﺘﺨﺪاﻣﻪ ﻟﻠﺘﺴﺠﻴﻞ ﻓﻲ ﻣﻮاﻗﻊ ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ .
ﻟﻨﺘﻔﻖ أن هﺬﻩ أول ﻣﺮة ﺗﺆدى اﻣﺘﺤﺎن ﻓﻴﻬﺎ إذا ﻟﻴﺲ ﻟﺪﻳﻚ idﺑﻌﺪ وﺗﺮﻳﺪ ﻣﻌﺮﻓﺘﻪ ﻓﻲ اﻟﺘﻘﺮﻳﺮ اﻟﺬي ﺳﺘﺴﺘﻠﻤﻪ ﺑﻌﺪ اﻻﻣﺘﺤﺎن ﻓﻲ اﻟﺼﻔﺤﺔ اﻟﺜﺎﻧﻴﺔ
ﺳﺘﺠﺪ ﻣﻮﻗﻊ اﻟﺸﺮآﺔ اﻟﺘﻲ اﻣﺘﺤﻨﺖ ﻓﻴﻬﺎ وهﻰ ﺑﺮوﻣﺎﺗﺮﻳﻚ وﺳﺘﺠﺪ ﺑﻌﺾ اﻟﺮواﺑﻂ اﻷﺧﺮى اﻟﺨﺎﺻﺔ ﺑﺎﻟﺘﺴﺠﻴﻞ ﻓﻲ ﻣﻮﻗﻊ اﻟﺸﺮآﺔ ﻋﻠﻰ ﺷﺒﻜﺔ اﻷﻧﺘﺮﻧﺖ.
ﻗﻢ ﺑﺎﻟﺪﺧﻮل إﻟﻴﻬﺎ ﺳﻴﻄﻠﺐ ﻣﻨﻚ ﺑﻌﺾ اﻟﻤﻌﻠﻮﻣﺎت هﺬﻩ اﻟﻤﻌﻠﻮﻣﺎت ﻣﻮﺟﻮدة ﻓﻲ اﻟﺘﻘﺮﻳﺮ ﻣﺜﻞ Registrationو Validationوهﻲ أرﻗﺎم ﻣﻮﺟﻮدة
ﻓﻲ اﻟﺘﻘﺮﻳﺮ ،ﺳﺘﻘﻮم ﺑﻜﺘﺎﺑﺘﻬﺎ وﺳﺘﻈﻬﺮ ﻟﻚ ﺻﻔﺤﺔ ﺗﺤﺘﻮى ﻋﻠﻰ اﺳﻤﻚ واﺳﻢ اﻻﻣﺘﺤﺎن واﻟﻨﺘﻴﺠﺔ ،Passﻻ ﻳﻮﺟﺪ اﻟﻨﺘﻴﺠﺔ آﺄرﻗﺎم ﻓﻘﻂ ﻧﺎﺟﺢ ورﻗﻢ
Candidate IDهﺬا هﻮ MCP IDوهﻮ ﻳﺤﺘﺎج ﺣﺘﻰ 7أﻳﺎم ﻟﺘﺤﺼﻞ ﻋﻠﻴﻪ ﻓﻲ هﺬﻩ اﻷﺛﻨﺎء ﺳﻴﺄﺗﻲ ﻟﻚ ﻋﻠﻰ اﻟﺒﺮﻳﺪ اﻟﺬي ﻗﻤﺖ ﺑﻜﺘﺎﺑﺘﻪ ﻓﻲ ﻣﺮآﺰ
اﻻﻣﺘﺤﺎﻧﺎت ﺑﻌﺾ اﻟﺮﺳﺎﺋﻞ ﻣﻦ ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ و ﺑﺮوﻣﺎﺗﺮك وهﻰ رﺳﺎﺋﻞ اﺳﺘﻄﻼﻋﺎت ﻟﻠﺮأي ﺣﻮل اﻻﻣﺘﺤﺎن وﺑﻌﺾ اﻷﺷﻴﺎء اﻷﺧﺮى.
ﺳﺘﻘﻮم ﺑﻄﻠﺒﻪ ﻣﻦ اﻟﺼﻔﺤﺔ اﻟﺘﻲ ﺗﻘﻮم ﺑﺎﻟﺘﺴﺠﻴﻞ ﻓﻴﻬﺎ ﻟﻠﺪﺧﻮل ﻋﻠﻰ اﻟﻤﻮﻗﻊ و ﺳﻴﺘﻢ إرﺳﺎل رﺳﺎﻟﺔ ﻟﻚ ﻋﻠﻰ اﻟﺒﺮﻳﺪ اﻟﺬي ﻗﻤﺖ ﺑﻜﺘﺎﺑﺘﻪ ﻋﻨﺪ اﻟﺘﺴﺠﻴﻞ
ﻓﻲ هﺬﻩ اﻟﺼﻔﺤﺔ هﺬﻩ اﻟﺮﺳﺎﻟﺔ ﺗﺤﺘﻮى ﻋﻠﻰ رﻗﻢ 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واﻟﺸﻲء اﻟﻤﻤﻴﺰ ﻓﻲ هﺬا اﻟﻤﻨﺘﺞ اﻧﻪ ﻳﺘﻌﺎﻣﻞ ﻣﺒﺎﺷﺮة ﻣﻊ ﻣﻠﻔﺎت ﻓﻴﺠﻮال
ﺳﺘﻮدﻳﻮ.
وهﻮ اﻟﺘﻄﻮر اﻟﻄﺒﻴﻌﻲ ﻟﻠﺤﺎﺟﺔ اﻟﺴﺎﻗﻌﺔ ﻗﺼﺪي ﻟﻠﻔﺮوﻧﺖ ﺑﻴﺞ وﻳﺪﻋﻢ أدوات ﺗﻄﻮﻳﺮ راﺋﻌﺔ ﻣﺜﻞ ﺗﻘﻨﻴﺔ اﻻﺟﺎآﺲ و RSSودﻋﻢ ﻣﻠﻔﺎت HTMLو
XHTMLو ASP.NETو XMLوﻏﻴﺮهﺎ اﻟﻜﺜﻴﺮ ﻣﻦ اﻷدوات واﻟﺪﻋﻢ ﻟﺒﻨﺎء ﺻﻔﺤﺎت وﻳﺐ ﻣﺘﻄﻮرة وﺗﻔﺎﻋﻠﻴﺔ.
وهﻮ ﻹﻧﺸﺎء ﺻﻔﺤﺎت اﺳﺘﻌﺮاض ﻣﻠﻔﺎت اﻟﻤﻴﺪﻳﺎ وﺗﺼﺪﻳﺮهﺎ ﻟﺼﻔﺤﺎت اﻟﻮﻳﺐ ﺑﺒﺴﺎﻃﺔ .
وهﻮ ﻟﺘﺼﻤﻴﻢ ﺑﺮاﻣﺞ اﻟﻤﻠﺘﻤﻴﺪﻳﺎ -ﺣﺴﺐ ﻣﺎ ﻓﻬﻤﺘﻪ -وﻹﻧﺸﺎء آﻮد XAMLﺑﺴﻬﻮﻟﺔ .
وأهﻢ ﻣﺰاﻳﺎﻩ اﻟﺘﻲ ﺗﻢ ﺷﺮﺣﻬﺎ آﺎﻧﺖ إﻣﻜﺎﻧﻴﺔ إدارة ﻓﺮﻳﻖ ﻣﻦ اﻟﻤﺒﺮﻣﺠﻴﻦ ﻟﻤﺸﺮوع ﻣﺎ وإﻣﻜﺎﻧﻴﺔ اﻟﺘﻜﺎﻣﻞ ﻣﻊ ﺑﺮﻧﺎﻣﺞ ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ ﺑﺮوﺟﻜﻦ ﻟﺴﻬﻮﻟﺔ
إﺗﻤﺎم ﻣﺸﺮوع ﻣﺎ
اﻟﻤﻨﺘﺞ اﻷﺧﻴﺮ هﻮ ﻣﻨﺘﺞ ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ اﻟﺜﻮري ﺷﻴﺮ ﺑﻮﻳﻨﺖ 2007اﻟﺬي أدهﺶ اﻟﺠﻤﻴﻊ ﺑﺘﻜﺎﻣﻠﻪ ﻣﻊ ﻣﻨﺘﺠﺎت ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ وﻏﻴﺮهﺎ ﻣﻦ اﻟﺸﺮآﺎت
وﺗﺒﺴﻴﻂ هﺬا اﻹﺻﺪار آﺜﻴﺮا ﻋﻦ اﻹﺻﺪار اﻟﺴﺎﺑﻖ.
ﻻ أﻧﺴﻰ أن اذآﺮ اﻧﻪ آﺎن هﻨﺎك اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﺠﻮاﺋﺰ ﻋﻨﺪ اﻹﺟﺎﺑﺔ ﻋﻠﻰ ﺑﻌﺾ اﻷﺳﺌﻠﺔ أﺛﻨﺎء اﻟﻤﺤﺎﺿﺮات وآﺎن ﻓﻲ ﻧﻬﺎﻳﺔ اﻟﻴﻮم ﺳﺤﺐ ﻋﻠﻰ اآﺲ
ﺑﻮآﺲ . 360
أﺗﻤﻨﻰ ﻣﻦ اﻟﺠﻤﻴﻊ ﻋﺪم ﺗﻔﻮﻳﺖ ﺣﺪث ﻣﺜﻞ هﺬا ﻣﺴﺘﻘﺒﻼ وأﻋﺘﻘﺪ ﺑﻌﺪ ﺷﻬﺮﻳﻦ ﺳﻴﻜﻮن ﻳﻮم ﺗﻌﺮﻳﻔﻲ ﺑﺒﺮﻧﺎﻣﺞ ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ CRM 4ﻹدارة ﻋﻼﻗﺎت
اﻟﻌﻤﻼء ﻟﻜﻦ ﻟﻢ ﻳﺤﺪد اﻟﻴﻮم ﺑﺎﻟﻀﺒﻂ.
100
اﻟﻌﺪد 01ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ /ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ 2008 ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ vb4arab.com
INSERT Statement
أﺣﻤﺪ ﺑﺪر
BADRMEDIA
ﺗﺘﻤﺔ ﺻﻔﺤﺔ 105
H H
اﻟﺠﺒﺮ اﻟﻌﻼﺋﻘﻲ وﺟﻤﻞ اﻻﺳﺘﻌﻼم ﻓﻲ Sql
ﻧﺠﻴﺐ اﻟﻤﺠﻴﺪي ﺗﻌﺘﻤﺪ ﻟﻐﺔ اﻻﺳﺘﻌﻼم اﻟﺒﻨﻴﻮﻳﺔ ﻓﻲ اﺳﺘﺮﺟﺎع اﻟﺒﻴﺎﻧﺎت ﻋﻠﻰ ﻗﻮاﻋﺪ وﻣﻔﺎهﻴﻢ
أوﻻً ﻣﻌﺎﻣﻞ اﻻﺗﺤﺎد : Union اﻟﺠﺒﺮ اﻟﻌﻼﺋﻘﻲ وﺳﻨﺘﻌﺮض ﻓﻲ هﺬا اﻟﺪرس إﻟﻰ أهﻢ هﺬﻩ اﻟﻤﻌﺎﻣﻼت و
ﻼ أن ﻳﻘﺪم هﺬا اﻟﻤﻮﺿﻮع اﻹﺟﺎﺑﺎت اﻟﺸﺎﻓﻴﺔ أآﺜﺮهﺎ اﺳﺘﺨﺪاﻣًﺎ ﺁﻣ ً
ﻻﺳﺘﻔﺴﺎرات اﻷﻋﻀﺎء ﺣﻮل هﺬا اﻟﻤﻮﺿﻮع.
ﻛﻮد:
* SELECT
FROM Table
WHERE Condition
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
-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
هﺬا ﺳﻴﻌﻴﺪ إﻟﻴﻨﺎ ﻓﻘﻂ ﺳﺠﻼت ﻋﻤﻮدي اﻻﺳﻢ اﻷول و اﻟﺼﻒ
اﻟﺤﺼﺮ اﻷﻓﻘﻲ
ﻓﻲ اﻟﺠﻤﻠﺔ اﻟﺴﺎﺑﻘﺔ ﻧﻼﺣﻆ أﻧﻨﺎ ﻗﻤﻨﺎ ﺑﺘﺤﺪﻳﺪ اﻷﻋﻤﺪة و ﻟﻜﻦ ﻟﻢ
ﻧﺤﺪد اﻟﺴﺠﻼت اﻟﻤﻄﻠﻮﺑﺔ و ﺑﺎﻟﺘﺎﻟﻲ ﻓﺈن اﻟﻨﺘﻴﺠﺔ ﺳﺘﺤﺘﻮي ﻋﻠﻰ ﺟﻤﻴﻊ
ﺳﺠﻼت اﻟﺠﺪول
اﻟﺠﺒﺮ اﻟﻌﻼﺋﻘﻲ وﺟﻤﻞ اﻻﺳﺘﻌﻼم ﻓﻲ 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
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ﻓﻴﻪ هﺬﻩ اﻟﺤﻘﻮل
ﺗﻌﻨﻲ هﻨﺎك ﺷﺮط ﻋﻠﻰ ﺣﻘﻞ ﺑﻌﺪم ﺗﻜﺮار اﻟﺒﻴﺎﻧﺎت وﺳﻴﻈﻬﺮ ﻛﻮد:
اﺳﻢ اﻟﺤﻘﻞ ﻓﻲ اﻟﺮﺳﺎﻟﺔ ﺑﻤﻌﻨﻰ أﻧﻚ ﺗﺤﺎول إدﺧﺎل ﻗﻴﻤﺔ ﻣﻮﺟﻮدة ﻣﻦ INSERT INTO Emp
ﻗﺒﻞ وﻏﻴﺮ ﻗﺎﺑﻠﺔ ﻟﻠﺘﻜﺮار. )'VALUES (1, 'BADRMEDIA
Syntax error ﻃﺒﻌًﺎ وﺟﺪﻧﺎ أن اﺳﻢ اﻟﺤﻘﻮل اﻟﻤﺮاد إدﺧﺎل اﻟﺒﻴﺎﻧﺎت ﻟﻬﺎ ﻏﻴﺮ ﻣﻮﺟﻮدة.
ﺻﺤﻴﺢ ﻣﻤﻜﻦ ﻧﺮﺳﻞ اﻟﻘﻴﻢ ﻣﺒﺎﺷﺮة ﻓﻲ ﺟﻤﻠﺔ اﻹﺿﺎﻓﺔ آﻤﺎ رأﻳﻨﺎ ﻟﻜﻦ
هﻨﺎك ﺧﻄﺄ ﻓﻲ ﺻﻴﻐﺔ ﺟﻤﻠﺔ اﻹدﺧﺎل ﻓﻲ اﻷﻏﻠﺐ رآﺰ ﻋﻠﻰ ﺑﺸﺮط أن اﻟﻘﻴﻢ اﻟﻤﺪﺧﻠﺔ ﺗﻜﻮن ﻣﺮﺗﺒﺔ ﺑﺘﺮﺗﻴﺐ اﻟﺤﻘﻮل ﻓﻲ اﻟﺠﺪول.
أن هﻨﺎك ﺣﻘﻞ رﻗﻤﻲ ﻏﻴﺮ ﻣﻮﺿﻮع ﺑﻴﻦ آﻌﻼﻣﺘﻲ ﺗﻨﺼﻴﺺ ﻣﻔﺮدة أو
اﺳﻢ ﺣﻘﻞ ﻣﻦ اﻟﺤﻘﻮل -آﻠﻤﺔ ﻣﺤﺠﻮزة أي ﻻ ﺗﺼﻠﺢ ﺗﻜﻮن اﺳﻢ ﻟﺠﺪول.
آﻤﺜﺎل ﻧﺤﻦ ﻧﺴﺘﺨﺪم ﺟﻤﻠﺔ Insertإذن ﻻ ﻳﺼﻠﺢ أن ﻧﺴﻤﻲ اﺳﻢ ﺣﻘﻞ
ﺑﺎﺳﻢ اﻷﻣﺮ . Insert
105
اﻟﻌﺪد 01ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ /ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ 2008 ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ vb4arab.com
واﻟﻤﺸﺮوع ﻋﺒﺎرة ﻋﻦ ﻣﺰﻳﺢ ﻣﻦ آﺧﺮ اﻟﺘﻘﻨﻴﺎت اﻟﺘﻲ ﻗﺪﻣﺖ ﻓﻲ ﻫﺬا اﻟﻔﺮع ﻣﻦ ﻋﻠﻮم اﻟﻜﻮﻣﺒﻴﻮﺗﺮ اﻟﻤﺘﻌﻠﻘﺔ ﺑﺎﻟﺮؤﻳﺔ اﻟﺤﺎﺳﻮﺑﻴﺔ وﻧﻈﻢ دﻋﻢ اﺗﺨﺎذ
اﻟﻘﺮار اﻟﻤﻘﺪﻣﺔ ﻓﻲ ﻣﺠﺎل ﺗﻄﻮﻳﺮ اﻟﻤﺪن اﻵﻟﻴﺔ ،ﺣﻴﺚ ﻳﺴﺘﺨﺪم اﻟﻨﻈﺎم ﻟﻠﻤﺴﺎﻋﺪة ﻓﻲ ﻋﻤﻠﻴﺔ اﻟﻤﺮاﻗﺒﺔ ،ازدﺣﺎم اﻟﻄﺮق وﻣﺮاﻗﺒﺔ اﺷﺎرات اﻟﻤﺮور
وﺗﺪﻓﻖ اﻟﺴﻴﺮ ﻓﻲ اﻟﻤﺪن ،ﻫﻮ ﻋﺒﺎرة ﻋﻦ ﻧﻈﺎم ﻟﻤﺮاﻗﺒﺔ اﻟﺴﻴﺮ ودﻋﻢ ﻗﺮارات اﻟﻘﻴﺎدة اﻵﻟﻴﺔ ﺣﻴﺚ أن ﻫﺬﻳﻦ اﻟﻨﻈﺎﻣﻴﻦ ﻟﻢ ﻳﺘﻢ رﺑﻄﻬﻤﺎ ﺳﻮﻳﺔ
ﻣﻦ ﻗﺒﻞ.
وﻛﻞ ﻣﺎ ﻧﻄﻤﺢ إﻟﻴﻪ ﺣﺎﻟﻴﺎً ﻫﻮ ﺗﻘﺪﻳﻢ ﺧﻄﻮة ﻓﻲ ﻃﺮﻳﻖ ﺗﻄﺒﻴﻖ ﻧﻈﺎم ﻣﺮاﻗﺒﺔ ﻓﻲ اﻟﻮاﻗﻊ ﻋﻦ ﻃﺮﻳﻖ دﻋﻤﻪ ﻟﻠﺘﻜﺎﻣﻞ ﻣﻊ اﻟﻨﻤﻮذج اﻟﻤﺴﺘﻘﺒﻠﻲ
ﻟﻨﻈﺎم اﻟﻘﻴﺎدة اﻵﻟﻴﺔ ﻣﻦ ﺧﻼل ﻧﻤﻮذج ﻣﺼﻐﺮ ﻟﻤﺪﻳﻨﺔ ﺗﺤﺘﻮي ﻋﻠﻰ ﺳﻴﺎرات ﻳﺘﻢ اﻟﺘﺤﻜﻢ ﺑﻬﺎ ﻋﻦ ﺑﻌﺪ وﺗﺘﻢ إدارﺗﻪ ﻣﻦ ﺧﻼل اﻟﻜﻮﻣﺒﻴﻮﺗﺮ.
اﻟﻤﺸﺮوع اﻟﻔﺎﺋﺰ ﺑﺎﻟﻤﺮﻛﺰ اﻷول ﻋﻠﻰ ﻣﺴﺘﻮى ﺟﻤﻬﻮرﻳﺔ ﻣﺼﺮ اﻟﻌﺮﺑﻴﺔ ﻓﻲ ﻳﻮم اﻟﻬﻨﺪﺳﺔ اﻟﻤﺼﺮي EEDﻓﺮع ITﻟﺴﻨﺔ
.2007
ﻓﺮﻳﻖ اﻟﻌﻤﻞ:
108
اﻟﻌﺪد 01ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ /ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ 2008 ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ vb4arab.com
ﺑﺎﺧﺘﺼﺎر ﺷﺪﻳﺪ :اﻟﻤﺸﺮوع ﻳﺤﺘﻮي ﻋﻠﻰ آﺎﻣﻴﺮا ﺗﻘﻮم ﺑﺈرﺳﺎل ﺻﻮر ﻓﻮرﻳﺔ إﻟﻰ اﻟﻜﻮﻣﺒﻴﻮﺗﺮ اﻟﺬي ﻳﻘﻮم ﺑﺘﺤﻠﻴﻠﻬﺎ وﻓﻬﻤﻬﺎ واﻟﺨﺮوج ﺑﺒﻌﺾ اﻟﺘﻘﺎرﻳﺮ
واﻹﺣﺼﺎﺋﻴﺎت ﻋﻦ اﻟﻄﺮق وﻧﻈﺎم اﻟﻤﺮور ،وﻓﻲ اﻟﺠﺰء اﻟﺜﺎﻧﻲ ﻣﻦ اﻟﻤﺸﺮوع وﻋﻨﺪ ﺑﺪاﻳﺔ ﻣﻬﻤﺔ ﻟﺘﺤﺮﻳﻚ اﻟﺴﻴﺎرة ﻣﻦ ﻧﻘﻄﺔ إﻟﻰ أﺧﺮى ﻳﺘﻢ اﻟﺮﺟﻮع إﻟﻰ
هﺬﻩ اﻟﻤﻌﻠﻮﻣﺎت ﻟﺤﺴﺎب اﻟﻄﺮﻳﻖ اﻷﻣﺜﻞ ﻟﻠﺘﺤﺮك ﻣﻦ ﺧﻼﻟﻪ ،وأﺧﻴﺮًا ﻳﺘﻢ اﻟﻠﺠﻮء إﻟﻰ ﺑﻌﺾ ﻣﺒﺎدئ Physical Computingﻣﻦ أﺟﻞ ﺗﺤﺮﻳﻚ
اﻟﺴﻴﺎرة اﻟﻤﻮدﻳﻞ اﻟﻤﻮﺟﻮدة ﻓﻲ اﻟﻤﺪﻳﻨﺔ اﻟﻤﺼﻐﺮة.
ﻣﻌﺎﻟﺠﺔ اﻟﺼﻮر:
اﻟﻤﺮﺣﻠﺔ اﻷوﻟﻰ ﻓﻲ ﻋﻤﻠﻴﺔ ﻣﻌﺎﻟﺠﺔ اﻟﺼﻮر هﻲ ﻣﺮﺣﻠﺔ Road Extractionﺣﻴﺚ ﻳﺘﻢ ﻣﻌﺮﻓﺔ اﻟﻄﺮق اﻟﻤﻮﺟﻮدة ﻓﻲ
اﻟﻤﺪﻳﻨﺔ ﻋﻦ ﻃﺮﻳﻖ ﻣﺮاﺣﻞ ﻣﺘﻌﺪدة
ﺗﻤﺮ ﺑﻬﺎ ﻋﻤﻠﻴﺔ اﺳﺘﺨﺮاج اﻟﻄﺮق ﺑﻌﺪ ذﻟﻚ ﻳﻤﻜﻦ ﺣﺼﺮهﺎ إﺟﻤﺎﻻ ﻓﻲ اﻟﻤﺮاﺣﻞ اﻟﺘﺎﻟﻴﺔ )(Generate Road Seed points, Snaxles, Snakes
ﺣﻴﺚ ﻳﺘﻢ اﻟﺘﻌﺮف ﻓﻲ ﺁﺧﺮ ﻣﺮﺣﻠﺔ ﺑﺼﻮرة ﻣﻔﺼﻠﺔ ﻋﻠﻰ ﺟﻤﻴﻊ اﻟﻄﺮق ﻏﻴﺮ اﻟﻤﺴﺘﻘﻴﻤﺔ أو اﻟﻤﻨﺤﻨﻴﺔ ﺑﺎﻧﺤﻨﺎءات ﻣﺘﻌﺪدة.
وﺑﺎﺧﺘﺼﺎر ﺷﺪﻳﺪ ﻓﺈن هﺬﻩ اﻟﻤﺮﺣﻠﺔ ﺗﻌﺘﻤﺪ ﻋﻠﻰ ﻣﺎ ﻳﺴﻤﻰ ﺑﺎﺳﻢ Edge Detectionآﻤﺮﺣﻠﺔ أﺳﺎﺳﻴﺔ ﻓﻲ هﺬﻩ اﻟﺨﻄﻮة ﺣﻴﺚ ﻧﻘﻮم ﺑﻘﺮاءة اﻟﺼﻮرة
وﻣﺤﺎوﻟﺔ اﺳﺘﺨﺮاج اﻟﺤﻮاف اﻟﻤﻤﻴﺰة ﻟﻬﺎ:
ﻼ أو ﻧﺎﺗﺠﺔ
ﻓﻲ اﻟﺨﻄﻮات اﻟﺘﺎﻟﻴﺔ ﻧﻘﻮم ﺑﺎﺳﺘﺒﻌﺎد ﺗﻠﻚ اﻟﺘﻲ ﺗﻤﺜﻞ ﻣﺒﺎﻧﻲ ﻣﺜ ً
ﻋﻦ ﺗﺸﻮﻳﺶ ﻓﻲ اﻟﺼﻮرة ،ﻧﻘﻮم ﺑﺪﻣﺞ اﻟﺨﻄﻮط ﺳﻮﻳﺔ ...اﻟﺦ.
اﻟﺨﻄﻮة اﻟﺜﺎﻧﻴﺔ ﺗﻌﺘﻤﺪ ﻋﻠﻰ اﻟﺒﺪء اﻟﻔﻌﻠﻲ ﻓﻲ ﻗﺮاءة اﻟﺼﻮر وﻳﺘﻢ ذﻟﻚ ﻋﺒﺮ ﺗﺤﻮﻳﻠﻬﺎ إﻟﻰ ﺻﻮر Binaryﻣﻊ ﺗﻄﺒﻴﻖ ﺑﻌﺾ ال morphological
filteringﻣﻦ اﺟﻞ ﺗﻮﺿﻴﺢ اﻟﺼﻮرة ،وهﺬﻩ اﻟﻤﺤﺼﻠﺔ اﻟﻨﻬﺎﺋﻴﺔ ﻟﻬﺬﻩ اﻟﻌﻤﻠﻴﺎت:
اﻟﺨﻄﻮة اﻷﺧﻴﺮة هﻲ اﻟﺒﺪء ﺑﺘﺘﺒﻊ هﺬﻩ اﻟﺴﻴﺎرات ﻓﺘﺮة ﻋﻤﻞ اﻟﻨﻈﺎم ،وﻳﺘﻢ ذﻟﻚ ﺑﺎﺳﺘﺨﺪام LUCAS-KANADE OPTICAL FLOW
ALGORITHMﻋﻠﻰ ﺳﺒﻴﻞ اﻟﻤﺜﺎل.
ﺑﻌﺪ أن اﺳﺘﻄﻌﻨﺎ ﻓﻲ اﻟﻤﺮﺣﻠﺔ اﻟﺴﺎﺑﻘﺔ ﻣﻌﺮﻓﺔ أﻣﺎآﻦ اﻟﺴﻴﺎرات ﻓﻲ اﻟﻤﺪﻳﻨﺔ وﺣﺎﻟﺔ اﻟﻄﺮق ،ﺟﺎء دور اﻟﻤﺮﺣﻠﺔ اﻟﺜﺎﻧﻴﺔ ﻣﻦ اﻟﻨﻈﺎم واﻟﺘﻲ ﺗﺘﻠﺨﺺ ﻓﻲ
اﻻﺳﺘﻔﺎدة ﻣﻦ هﺬﻩ اﻟﺒﻴﺎﻧﺎت ،وﺗﺘﻢ اﻻﺳﺘﻔﺎدة ﻣﻦ هﺬﻩ اﻟﺒﻴﺎﻧﺎت ﺑﻄﺮﻳﻘﺘﻴﻦ:
ﺣﻴﺚ ﻳﺘﻢ ﻋﺮض ﺗﻘﺮﻳﺮ ﻓﻮري ﺑﺤﺎﻟﺔ اﻟﻄﺮق وﻧﺴﺐ اﻻزدﺣﺎم وﺧﻼﻓﻪ.
109
اﻟﻌﺪد 01ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ /ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ 2008 ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ vb4arab.com
ﺣﻴﺚ أﻧﻪ ﻃﻮال ﻓﺘﺮة ﺣﺮآﺔ اﻟﺴﻴﺎرة ﻓﺈﻧﻪ ﻳﺘﻢ ﻋﻤﻞ اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﻤﻌﺎدﻻت اﻟﺮﻳﺎﺿﻴﺔ ﻣﻦ أﺟﻞ ﺿﻤﺎن ﺣﺮآﺔ اﻟﺴﻴﺎرة ﺿﻤﻦ اﻟﻄﺮﻳﻖ ،اﻻﻟﺘﻔﺎف ﻓﻲ
اﻟﻤﻠﻔﺎت اﻟﻤﺤﺪدة ﻟﺬﻟﻚ ،اﻟﺘﺄآﺪ ﻣﻦ وﺟﻮد ﻣﺴﺎﺣﺔ آﺎﻓﻴﺔ ﻟﻠﺘﺤﺮك إﻟﻰ اﻷﻣﺎم ،وﺿﻤﺎن ﻋﺪم اﻻﺻﻄﺪام ﺑﺎﻷﺟﺴﺎم اﻟﻤﺤﻴﻄﺔ.
اﻟﻬﺎردوﻳﺮHardware :
آﻤﺎ أﺳﻠﻔﻨﺎ ﻓﻲ اﻟﻨﻘﻄﺔ اﻟﺴﺎﺑﻘﺔ ،ﻓﺈﻧﻪ ﺗﻠﺰﻣﻨﺎ ﺑﻌﺾ اﻟﺘﻌﺪﻳﻼت ﻟﻴﺼﺒﺢ ﺑﻤﻘﺪورﻧﺎ ﺗﺤﺮﻳﻚ اﻟﺴﻴﺎرة اﻟﻤﻮدﻳﻞ ﻋﻦ ﻃﺮﻳﻖ اﻟﻜﻮﻣﺒﻴﻮﺗﺮ.
ﺑﺪاﻳﺔ اﺳﺘﻌﻨﺎ ﺑﺴﻴﺎرة رﻳﻤﻮت آﻨﺘﺮول RC Carﻣﻊ ﻣﺮاﻋﺎة وﺟﻮد أآﺜﺮ ﻣﻦ ﺗﺮدد Frequencyﻓﻲ ﺣﺎﻟﺔ اﺳﺘﺨﺪام أآﺜﺮ ﻣﻦ ﺳﻴﺎرة أو اﺳﺘﺨﺪام
crystalsأو Removable Stripsﻣﻦ أﺟﻞ ﺗﺠﻨﺐ ﺗﺪاﺧﻞ اﻟﻤﻮﺟﺎت.
ﺛﻢ ﻗﻤﻨﺎ ﺑﻌﻤﻞ ﻣﻮدﻳﻞ ﻟﻤﺪﻳﻨﺔ ﻣﺼﻐﺮة وﻗﻤﻨﺎ ﺑﺮﺳﻢ ﺑﻌﺾ اﻟﻄﺮق وﺑﻨﺎء ﺑﻌﺾ اﻟﻤﺒﺎﻧﻲ آﻤﺎ هﻮ ﻣﻮﺿﺢ ﻓﻲ اﻟﺼﻮر اﻟﻤﺮﻓﻘﺔ.
اﻟﻤﺮﺣﻠﺔ اﻷوﻟﻰ هﻲ رﺑﻂ اﻟﻜﺎﻣﻴﺮا ﺑﺎﻟﻜﻮﻣﺒﻴﻮﺗﺮ ،وﺗﻢ ذﻟﻚ ﻋﺒﺮ ﻣﻨﻔﺬ USBﺣﻴﺚ ﻳﻤﻜﻦ ﻗﺮاءة اﻟﻜﺎﻣﻴﺮا ﺑﺄآﺜﺮ ﻣﻦ ﻃﺮﻳﻘﺔ وﺣﺴﺐ ﻟﻐﺔ اﻟﺒﺮﻣﺠﺔ
اﻟﻤﺴﺘﺨﺪﻣﺔ.
اﻟﺨﻄﻮة اﻟﺜﺎﻧﻴﺔ هﻲ رﺑﻂ اﻟﺮﻳﻤﻮت ﺑﺎﻟﻜﻮﻣﺒﻴﻮﺗﺮ ﻟﻴﺘﻢ اﻟﺘﺤﻜﻢ ﻓﻲ اﻟﺴﻴﺎرة ،وﻳﺘﻢ ذﻟﻚ ﻋﻦ ﻃﺮﻳﻖ اﺳﺘﺨﺪام ﻣﺒﺎدئ ال Relaysواﻟﺘﻲ ﺗﺴﻤﺢ ﻟﻠﺘﻴﺎر
ﺑﺎﻟﻤﺮور ﻓﻲ اﻟﺮﻳﻤﻮت ﻋﻨﺪ ﺗﻠﻘﻲ أﻣﺮ ﻣﻌﻴﻦ ﻣﻦ اﻟﻜﻮﻣﺒﻴﻮﺗﺮ ﻣﻦ ﺧﻼل ﻣﻨﻔﺬ اﻟﻄﺎﺑﻌﺔParallel Port .
وهﺎﺗﻴﻦ اﻟﺼﻮرﺗﻴﻦ ﺗﻮﺿﺤﺎن اﻟﻔﺮق ﺑﻴﻦ اﻟﺮﻳﻤﻮت اﻟﻌﺎدي ﺣﻴﺚ ﻳﺘﻢ ﺗﺤﺮﻳﻚ ﺻﻔﺎﺋﺢ ﻋﻠﻰ ﺑﻌﻀﻬﺎ ﻣﻘﺎرﻧﺔ ﺑﺎﻟﺮﻳﻤﻮت اﻟﺠﺪﻳﺪ ﺣﻴﺚ أﺻﺒﺢ ال Relayهﻮ
اﻟﻤﺘﺤﻜﻢ ﻓﻲ ﺗﻮﺻﻴﻞ اﻟﻜﻬﺮﺑﺎء.
110
اﻟﻌﺪد 01ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ /ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ 2008 ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ vb4arab.com
ﻼ ﻟﻠﺘﻄﺒﻴﻖ ﻓﻲ أرض اﻟﻮاﻗﻊ وﻋﻠﻰ ﻣﺪﻳﻨﺔ ﺣﻘﻴﻘﺔ ﻓﺈﻧﻪ ﻣﺎ زال ﺑﺤﺎﺟﺔ إﻟﻰ ﺑﻌﺾ اﻟﺘﻌﺪﻳﻼت ،ﻧﻮﺟﺰهﺎ ﻓﻲ اﻟﺜﻼث ﻧﻘﺎط اﻟﺘﺎﻟﻴﺔ:
ﻟﻜﻲ ﻳﺼﺒﺢ هﺬا اﻟﻨﻈﺎم ﻗﺎﺑ ً
أﻳﻀًﺎ ﻻ زﻟﻨﺎ ﺑﺤﺎﺟﺔ ﻟﻠﻤﺰﻳﺪ ﻣﻦ اﻟﺘﺴﺮﻳﻊ واﻟﺪﻗﺔ ﻓﻲ ﻋﻤﻠﻴﺎت ﻣﻌﺎﻟﺠﺔ اﻟﺼﻮر ،أﻳﻀﺎ ﻟﻤﺰﻳﺪ ﻣﻦ اﻟﻔﻠﺘﺮة ﻟﻠﻤﺆﺛﺮات اﻟﺠﻮﻳﺔ اﻟﺨﺎﺻﺔ ﻣﺜﻞ اﻟﻐﻴﻮم ،
اﻷﻣﻄﺎر ...اﻟﺦ.
ﻟﻦ ﻳﺘﺤﻤﻞ اﻟﺴﻴﺮﻓﺮ وﺣﺪﻩ ﻋﺐء اﻟﻘﻴﺎدة ﺑﻞ ﺳﻴﻜﻮن هﻨﺎك ﺟﻬﺎز ﻋﻠﻰ اﻟﺴﻴﺎرة أو 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
أﻟﻒ أﻟﻒ ﻣﺒﺮوك و إﻟﻰ اﻷﻣﺎم ...و رﻓﻊ و أﻋﺰ اﷲ ﺑﻜﻢ و ﺑﺄﻣﺜﺎﻟﻜﻢ أﻣﺔ اﻹﺳﻼم
112
اﻟﻌﺪد 01ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ /ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ 2008 ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ vb4arab.com
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 ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ
115
اﻟﻌﺪد 01ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ /ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ 2008 ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ vb4arab.com
116
2008 ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ/ ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ01 اﻟﻌﺪد vb4arab.com ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ
//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
ﺴﺎب ﻣﺠﻤﻮﻮع ﻟﻌﺒﺔ ااﻟﺒﻮﻟﻴﻨﺞ
إﻋﺪاد أﺣﻤﺪ ﺟﺟﻤﺎل
اﻟﺮﺣﻴﻢ.
ﻢ ﺑﺴﻢ اﷲ اﻟﺮﺣﻤﻦ
اﷲ وﺑﺮآﺎﺗﻪ.
ﻋﻠﻴﻜﻢ ورﺣﻤﺔ ﷲ
اﻟﺴﻼم ﻋ
ﺻﺔ ﺑﻬﺎ ...وﻟﻜﻜﻦ ﻻ ﻣﺎﻧﻊ ﻣﻦ إﻋﺎدة ﻣﻨﺎ ﺟﺮب ﻟﻌﺒﻬﺎ ﻣﻣﻦ ﻗﺒﻞ ،واﻟﻜﺜﻴﺜﻴﺮ أﻳﻀﺎ ف
ﻳﻌﺮف اﻟﻘﻮاﻋﺪ اﻟﺨﺎﺻ ﺟﻤﻴﻌﻨﺎ ﻳﻌﺮف ﻟﻌﺒﺔ اﻟﺒﻮﻮﻟﻴﻨﺞ اﻟﻤﺸﻬﻮررة ،واﻟﻜﺜﻴﺮ ﻨﺎ
ﻣﺮة أﺧﺮى.اﻟﺘﺬآﻴﺮ ﺑﻬﺬﻩ اﻟﻠﻌﺒﺔ ة
-ﻟﻮ ﺗﻢ إﺳﻘﺎط ﺟﻤﻴﻊ اﻟﻜﻜﺮات ﻣﻦ اﻟﻠﻌﺒﺔﺔ اﻷوﻟﻰ ،ﻓﺈن اﻟﻤﺤﺎوﻟﺘﻴﻦ اﻟﻘﺎددﻣﺘﻴﻦ )اﻟﺮﻣﻴﺔ ﻟﻘﺎدﻣﺔ ﺑﺎﻟﻜﺎﻣﻞ )ﻳﺘﻢ اﺣﺘﺴﺎب ﻣﻣﺠﻤﻮﻋﻬﺎ وﺿﺮﺮﺑﻪ * .2
ﺿﺮﺑﻬﺎ * .2
-ﻟﻮ ﺗﻢ إﺳﻘﺎط ﺟﻤﻴﻊ اﻟﻜﻜﺮات ﻣﻦ اﻟﻤﺤﺎﺎوﻟﺔ اﻟﺜﺎﻧﻴﺔ ،ﻓﺈﺈن اﻟﻤﺤﺎوﻟﺔ اﻟﻘﺎﺎدﻣﺔ ﻓﻘﻂ ﻳﺘﻢ ﺿ
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
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
108
121
120
120
2008 ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ/ ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ01 اﻟﻌﺪد vb4arab.com ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ
اﻟﻤﺴﺎﺑﻘﺎت اﻟﺸﻬﺮﻳﺔ
121
اﻟﻌﺪد 01ﻟﺸﻬﺮ ﻳﻨﺎﻳﺮ /ﻓﺒﺮاﻳﺮ ﻣﻦ ﺳﻨﺔ 2008 ﻟﻠﻤﺸﺎرﻛﺔ أو اﻻﺳﺘﻔﺴﺎر زوروا ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻟﻨﺖ vb4arab.com
H H