ﺗﻢ ﺗﺤﻤﻴﻞ اﻟﻤﻠﻒ ﻣﻦ ﻣﻮﻗﻊ
اﻟﺒﻮﺻﻠﺔ اﻟﺘﻘﻨﻴﺔ
www.boosla.com
1
اﻟﺪرس اﻷول -ﻣﺒﺎدئ : C#ﺑﻴﺌﺔ وﻣﻔﻬﻮم ﻟﻐﺔ C#
ﺑﺴﻢ اﷲ اﻟﺮﺣﻤﻦ اﻟﺮﺣﻴﻢ
ﺳﻨﺘﻌﻠﻢ ﻓﻲ هﺬﻩ اﻟﺴﻠﺴﻠﺔ ﻣﻦ اﻟﺪروس ،آﻴﻔﻴﻪ اﻟﺒﺮﻣﺠﻪ
ﺑﻠﻐﺔ C#ﻣﻦ اﻟﺼﻔﺮ ﺣﺘﻰ اﻻﺣﺘﺮاف إن ﺷﺎء اﷲ.
)1ﻣﺨﺘﺼﺮ ﻋﻦ ﻟﻐﺔ اﻟﺒﺮﻣﺠﺔC# .
-ﻗﺎﻣﺖ ﺑﺘﻄﻮﻳﺮهﺎ ﺷﺮآﺔ ﻣﺎﻳﻜﺮوﺳﻮﻓﺖ.
-ﺗﺤﺘﻮي ﺑﺸﻜﻞ اﺳﺎﺳﻲ ﻋﻠﻰ ﻟﻐﺘﺎ C++وJAVA
-ﻳﻤﻜﻦ ﺗﺤﻮﻟﻴﻬﺎ إﻟﻰ أي ﻟﻐﺔ ﺑﺮﻣﺠﺔ أﺧﺮى.
)2ﺑﻴﺌﺔ ﻟﻐﺔ اﻟﺒﺮﻣﺠﺔC# .
1-واﺟﻬﺔ ﺑﺮﻧﺎﻣﺞ)(Visual Studio.NET
2-ﺑﻴﺌﺔ Doseأو اﻟﺸﺎﺷﺔ اﻟﺴﻮداء.
3-ﺑﻴﺌﺔ WindowsوهﻲVisual C# .
ﺑﺴﻢ اﷲ ﻧﺒﺪأ :-
1-واﺟﻬﺔ ﺑﺮﻧﺎﻣﺞ(Visual Studio.NET):
2
!
*ﺻﻔﺤﺔ اﻟﺒﺪاﻳﺔ (Start) :
وﺗﺤﺘﻮي ﻋﻠﻰ ﻗﺎﺋﻤﺔ ﻣﻦ اﻟﺸﺎﺷﺎت اﻟﺠﺰﺋﻴﺔ ﻓﻲ اﻟﺠﻬﺔ اﻟﻴﺴﺮى
ﻣﻦ اﻟﻮاﺟﻬﺔ.
واﻟﺘﻲ ﻧﺤﺘﺎﺟﻬﺎ هﻨﺎ ﺷﺎﺷﺔ Getting Started :وهﻲ وﺻﻠﻪ ﻹﻧﺸﺎء
اﻟﻤﺸﺎرﻳﻊ اﻟﺠﺪﻳﺪة (New Project )Buttonأو اﺳﺘﺪﻋﺎء ﻣﺸﺎرﻳﻊ
ﺳﺎﺑﻘﺔ(Open Project) Button.
*إﻧﺸﺎء ﻣﺸﺮوع ﺟﺪﻳﺪ (New Project) :
ﻋﻨﺪ اﻟﻀﻐﻂ ﻋﻠﻰ اﻟﻜﺒﺴﺔ ) (new projectﺳﺘﻔﺘﺢ ﻟﻚ اﻟﻨﺎﻓﺬة
اﻟﺘﺎﻟﻴﺔ واﻟﺘﻲ ﺳﺘﻌﺮض ﻋﺪد ﻣﻦ ﻟﻐﺎت اﻟﺒﺮﻣﺠﺔ اﻟﻤﺘﻮﻓﺮة ﻓﻲ ﺑﺮﻧﺎﻣﺞ
Visual Studio.NET .
3
!
ﻗﻢ ﺑﺎﺧﺘﻴﺎر Visual C# Projectsﻣﻦ ﻗﺎﺋﻤﺔ Project Types : .
ﺳﺘﻈﻬﺮ ﻟﻚ ﻓﻲ ﻗﺎﺋﻤﺔ Templatesﻣﺠﻤﻮﻋﺔ ﺣﻴﺚ ﺗﺨﺘﺎر ﻣﻨﻬﺎ ﻧﻮع
اﻟﻤﺸﺮوع اﻟﺬي ﺗﺮﻳﺪ أن ﺗﺒﺮﻣﺞ ﻓﻲ ﺑﻴﺌﺘﻪ وﻋﺎدةً ﻳﺘﻢ اﺧﺘﻴﺎر ﺑﻴﺌﺔ
Windows Applicationآﺎﺧﺘﻴﺎر ﺑﺪاﺋﻲ .وﺳﻨﺘﻌﻠﻢ ﻓﻲ هﺬا اﻟﺪرس
آﻴﻔﻴﺔ اﻟﺪﺧﻮل إﻟﻰ اﻟﺒﻴﺌﺘﻴﻦ Console Applicationو Windows
Applicationواﻟﺘﻌﺎﻣﻞ ﻣﻌﻬﻤﺎ.
2-ﺑﻴﺌﺔConsole Application .
وﺗﻌﻨﻲ اﻟﺸﺎﺷﺔ اﻟﺴﻮداء ،ﺣﻴﺚ ﺗﻈﻬﺮ اﻟﻨﺘﺎﺋﺞ ﻋﻠﻰ ﺷﺎﺷﺔ Dose
.
واﻵن ﺣﺘﻰ ﻧﻔﺘﺢ ﻣﺸﺮوع ﺟﺪﻳﺪ ﻣﻦ ﻧﻮع Console Application .
ﻧﺬهﺐ إﻟﻰ New Projectﺛﻢ Visual C# Projectsوﻧﺒﺤﺚ ﻓﻲ
ﻗﺎﺋﻤﺔ Templatesﻋﻠﻰ Console Applicationﺛﻢ ﻧﻀﻊ ﻓﻲ
ال TextBoxاﻟﻤﻘﺎﺑﻞ ﻟﻜﻠﻤﺔ Nameإﺳﻢ اﻟﻤﺸﺮوع وﻟﻴﻜﻦ
PrintWelcome .وﻓﻲ ال TextBoxاﻟﻤﻘﺎﺑﻞ ﻟﻜﻠﻤﺔ Locationﻧﻀﻊ
اﻟﻤﺴﺎر اﻟﺬي ﻧﺮﻳﺪ أن ﻧﺤﻔﻆ اﻟﻤﺸﺮوع ﻓﻴﻪ .ﺛﻢ ، OKﺳﻴﻘﻮم
اﻟﺒﺮﻧﺎﻣﺞ ﺑﺘﺨﺰﻳﻦ اﻟﻤﺸﺮوع ﺑﺎﻣﺘﺪاد csواﻟﺘﻲ ﺗﻌﻨﻲ(C sharp) .
4
واﻵن ﺳﺘﻔﺘﺢ ﻟﻚ ﺷﺎﺷﺔ ﺗﻮﺿﺢ اﻟﺒﻴﺌﺔ اﻟﺘﻲ ﺳﺘﺒﺮﻣﺞ ﺑﻬﺎ
وﺷﻜﻠﻬﺎ آﺎﻟﺘﺎﻟﻲ:
!
5
ﻗﻢ ﺑﺤﺬف ال namespaceﻵﻧﻨﺎ ﻻ ﻧﺤﺘﺎﺟﻬﺎ هﻨﺎ ،وﺳﻤﻲ ال Classداﺧﻞ
اﻟﻜﻮد ﺑﺪﻻً ﻣﻦ Class1ﺿﻊPrintWelcome
ﺛﻢ اذهﺐ اﻟﻰ propertiesﺛﻢ اﻟﻰ FileNameوآﺘﺐ ﻧﻔﺲ اﺳﻢ
ال Classﻟﻜﻦ ﺑﺈﻣﺘﺪاد ، PrintWelcome.csﺣﺘﻰ ﺗﺘﻌﺎﻣﻞ ﻣﻊ ال Classاذا
اﺣﺘﺠﺘﻪ ﻓﻲ اﻣﺎآﻦ اﺧﺮى ﺑﺈﺳﻢPrintWelcome .
ﺳﺘﺠﺪ اﻟﻜﻮد ﻣﻜﺘﻮﺑﺎ ﺟﺎهﺰاً ﻣﺎ ﻋﻠﻴﻚ إﻟﻰ آﺘﺎﺑﺔ ﺟﻤﻠﺔ اﻟﻄﺒﺎﻋﺔ آﻤﺎ هﻲ
ﻣﻜﺘﻮﺑﺔ داﺧﻞ الmain:
C#
;using System
class PrintWelcome
{
)static void Main(string[] args
{
Console.WriteLine("Welcome to
;)"C# programing
//
ﲨﻠﺔ اﻟﻄﺒﺎﻋﺔ
}
6
}
وﻟﺘﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ اذهﺐ اﻟﻰ Debugﺛﻢ without Debugging
start .
3-ﺑﻴﺌﺔWindows Application .
واﻵن ﺳﻨﻨﺘﻘﻞ اﻟﻰ ﺑﻴﺌﺔ Windows Applicationوهﻲ ﺑﻴﺌﺔ
Visualأي أن ﻧﺘﺎﺋﺠﻬﺎ ﺗﻈﻬﺮ ﻋﻠﻰ formواﻵن ﻟﻔﺘﺢ ﻣﺸﺮوع
ﺟﺪﻳﺪ ﺑﻌﺪ أن ﺗﺨﺘﺎر New Projectﺛﻢ Visual C# Projectsﻗﻢ
ﺑﺎﺧﺘﻴﺎر windows Applicationﺑﺪﻻً ﻣﻦ Console Application
.ﺛﻢ اآﻤﻞ اﻟﺨﻄﻮات آﻤﺎ ﺗﻌﻠﻤﺖ واﺟﻌﻞ اﺳﻤﻪ
،PrintWelcomeﺳﺘﺪﺧﻞ إﻟﻰ ﺑﻴﺌﺔ VC#وهﻲ ﻻ ﺗﺨﺘﻠﻒ ﻋﻦ
أي ﺑﻴﺌﺔ Visual .
7
!Error
واﻵن PrintWelcomهﻮ ﺑﺮﻧﺎﻣﺞ ﺑﺴﻴﻂ ،ﻳﺤﺘﻮي ﻋﻠﻰ buttonو
labelﺣﻴﺚ ﻋﻨﺪ اﻟﻜﺒﺲ ﻋﻠﻰ ال buttonﺳﻴﻌﺮض ﻓﻲ ال label
"Welcome to C# programming" .
ﻗﻢ ﺑﺘﻨﻈﻴﻢ ﺷﻜﻞ ال formآﺎﻟﺘﺎﻟﻲ:
8
ﻗﻢ ﺑﺎﺧﺘﻴﺎر ال buttonﺛﻢ اذهﺐ إﻟﻰ الPropertiesواﺧﺘﺮ Textواآﺘﺐ
ﻣﻘﺎﺑﻠﻬﺎShow welcome
ﺛﻢ اﺿﻐﻂ Enterﺛﻢ اذهﺐ اﻟﻰ Fontﺳﺘﺠﺪ آﺒﺴﻪ ﺷﻜﻠﻬﺎ آﺎﻟﺘﺎﻟﻲ:
ﻗﻢ ﺑﺎﻟﻀﻐﻂ ﻋﻠﻴﻬﺎ ﺳﺘﻈﻬﺮ ﻟﻚ ﻧﺎﻓﺬﻩ ﻟﻠﺘﺤﻜﻢ ﺑﺎﻟﺨﻂ اﺧﺘﺮ ﺣﺠﻢ
اﻟﺨﻂ 10وﻧﻮﻋﻪ boldﺛﻢ ، okواﻵن ﻗﻢ ﺑﺎﺧﺘﻴﺎر ال labelواذهﺐ
اﻟﻰ Textﻗﻢ ﺑﺤﺬف آﻠﻤﻪ label1ﺣﺘﻰ ﻳﺒﻘﻰ ﻓﺎرﻏﺎً ﺛﻢ إﻟﻰ font
واﺟﻌﻞ ﺣﺠﻢ اﻟﺨﻂ 14وﻧﻮﻋﻪ boldﺛﻢ اذهﺐ اﻟﻰ foreColorاﺿﻐﻂ
ﻋﻠﻰ اﻟﺴﻬﻢ واﺧﺘﺎر ﻧﺎﻓﺬة webواﺧﺘﺎر اﻟﻠﻮن اﻷﺣﻤﺮred .
واﻵن ﻗﻢ ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ اﻟﻜﺒﺴﻪ buttonﻣﺮﺗﻴﻦ ﻣﺘﺘﺎﻟﻴﺘﻴﻦ ﺑﺎﻟﺰر
اﻷﻳﺴﺮ ﻟﻠﻔﺄرﻩ ﺳﻴﻈﻬﺮ ﻟﻚ آﻮد ﻣﻜﺘﻮب )ﺳﻴﺘﻢ ﺷﺮﺣﻪ ﻓﻲ دروس
ﻻﺣﻘﻪ (واﺷﺎرﻩ ﺗﺪﻟﻚ ﻋﻠﻰ اﻧﻚ داﺧﻞ ال buttonﻗﻢ ﺑﻜﺘﺎﺑﺔ اﻟﻜﻮد
اﻟﺘﺎﻟﻲ
C#
;"label1.Text = "Welcome to C# Programing
*وﻣﻦ اﻟﻤﻬﻢ اﻻ ﺗﻨﺴﻰ اﻟﻔﺎﺻﻠﺔ اﻟﻤﻨﻘﻮﻃﺔ ﻓﻲ ﻧﻬﺎﻳﺔ اي ﺟﻤﻠﻪ
ﺑﺮﻣﺠﻴﺔ
واﻵن ﻗﻢ ﺑﻨﺘﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ وﺳﻴﻜﻮن اﻟﻨﺎﺗﺞ آﻤﺎ ﻳﻠﻲ:
9
اﻟﺪرس اﻟﺜﺎﻧﻲ :ﺷﺮح ﺑﺮﻧﺎﻣﺞ Print welcomeﻣﻊ ﺑﻌﺾ اﻟﻤﺨﺘﺼﺮات
ﻟﻠﻄﺒﺎﻋﺔ
ﺑﺴﻢ اﷲ اﻟﺮﺣﻤﻦ اﻟﺮﺣﻴﻢ
ﻓﻲ اﻟﺪرس اﻟﺴﺎﺑﻖ ﺗﻌﺮﻓﻨﺎ ﻋﻠﻰ ﺑﻴﺌﺔ Visual Stodio .netوآﻴﻔﻴﺔ
اﻟﺪﺧﻮل ﻋﻠﻰ ﺑﻴﺌﺔ Console Applicationوﺑﻴﺌﺔ Windows Application
وهﺬﻩ هﻲ اﻟﻮﺻﻠﻪ :
ﺑﻴﺌﺔ وﻣﻔﻬﻮم ﻟﻐﺔ #C
ﻓﻲ هﺬا اﻟﺪرس ﺳﻨﺒﺪأ اوﻻ ً ﺑﻔﻬﻢ ﺑﻴﺌﺔ Console Applicationواﻟﺘﻌﺮف
ﻋﻠﻴﻬﺎ ﺟﻴﺪاً وﻣﻦ ﺛﻢ ﻧﻨﻄﻠﻖ ﻓﻲ VC#ﻓﻲ ﺑﻴﺌﺔ Windows Application
ﻷﻧﻬﺎ ﺗﺤﺘﻮي ﻋﻠﻰ اﻟﻘﻮاﻋﺪ اﻷﺳﺎﺳﻴﺔ ﻓﻲ اﻟﺒﺮﻣﺠﺔ اﻟﺘﻲ ﻧﻌﺘﻤﺪ ﻋﻠﻴﻬﺎ
وﻧﺴﺘﺨﺪﻣﻬﺎ ﻓﻲVC# .
))1ﺷﺮح ﺑﺮﻧﺎﻣﺞ Print Welcomوﺗﻔﺼﻴﻠﻪ .
أي ﺑﺮﻧﺎﻣﺞ ﻓﻲ ﻟﻐﺔ # Cﻳﺠﺐ أن ﻳﺤﺘﻮي ﻋﻠﻰ اﻟﺨﺼﺎﺋﺺ
اﻟﺘﺎﻟﻴﺔ :
1 - namespace
وهﻲ ﻣﺠﻤﻮﻋﺔ ﻣﻦ ال Classesأﻗﻠﻬﺎ واﺣﺪة.
2 - classes
ﻳﺠﺐ أن ﻳﺤﺘﻮي ﻋﻠﻰ classواﺣﺪة ﻋﻠﻰ اﻷﻗﻞ ﻣﻮﺟﻮدة داﺧﻞ ال
namespace .
10
3 - Method
وهﻲ وﺣﺪة اﻟﺒﻨﺎء اﻟﺮﺋﻴﺴﻴﺔ وﻳﺠﺐ أي classأن ﻳﺤﺘﻮي ﻋﻠﻰ method
واﺣﺪة ﻋﻠﻰ اﻷﻗﻞ وهﻲmain method .
واﻵن ﺳﻨﺒﺪأ ﺑﺸﺮح اﻟﺒﺮﻧﺎﻣﺞ ﺗﻔﺼﻴﻠﻴﺎً:
C#
using ;System
class PrintWelcome
{
)static void Main(string [] args
{
Console.WriteLine("Welcome to
;)"C# programing
}
}
ﻳﻘﻮم هﺬا اﻟﺒﺮﻧﺎﻣﺞ ﺑﻄﺒﺎﻋﺔ ﺟﻤﻠﺔ ﺑﺴﻴﻄﺔ (Welcome to C#
)programing
ﻣﻼﺣﻈﺔ :ﺑﻌﺪ أن ﺗﻨﺸﺊ اﻟﻤﺸﺮوع ﺳﻴﻈﻬﺮ ﻟﻚ ال
namespaceﺑﺈﺳﻢ PrintWelcomeﻗﻢ ﺑﺤﺬﻓﻪ) ﻷﻧﻨﺎ ﻻ ﻧﺤﺘﺎﺟﻪ
هﻨﺎ أآﺜﺮ ﻣﻦ Classواﺣﺪة ) ،ﺛﻢ ﻏﻴﺮ اﺳﻢ ال Classﻣﻦ
Class1اﻟﻰ ، PrintWelcomeﺛﻢ اذهﺐ إﻟﻰ propertiesﺛﻢ
إﻟﻰ Fil Nameوﻏﻴﺮﻩ ﺑﺈﺳﻢ Print Welcome.csﺣﺘﻰ ﺗﺘﻌﺎﻣﻞ
11
ﻣﻊ ال ClassﺑﺈﺳﻤﻪPrintWelcome .
ﺧﻄﻮات آﺘﺎﺑﺔ اﻟﺒﺮﻧﺎﻣﺞ:
;1) using System
أي اﺳﺘﺨﺪام ﻣﻜﺘﺒﺔ ) (namespaceواﻟﺘﻲ ﺗﺪﻋﻰ System
واﻟﻠﺬي ﻳﻮﺟﺪ ﺑﺪاﺧﻠﻬﺎ اﻷﻣﺮconsole
2)class PrintWelcome
وهﻲ اﺳﻢ ال classاﻟﻤﺤﺘﻮى ﻓﻲ هﺬا اﻟﺒﺮﻧﺎﻣﺞ واﻟﻤﻮﺟﻮدة
داﺧﻞ الnamespace
3) (static void Main(string[] args
وهﻲ ﺻﻴﻐﺔ اﻟﺘﻌﺮﻳﻒ ﻟﻞ main methodو اﻟﻠﺘﻲ ﻳﺠﺐ أن ﺗﺘﻮﻓﺮ
ﻓﻲ أي ﺑﺮﻧﺎﻣﺞ وﺗﻜﻮن داﺧﻞ ال classوﺗﺸﺒﻪ ﺑﺤﺪ آﺒﻴﺮ ﻟﻐﺔ
اﻟﺠﺎﻓﺎ ﻓﻲ ﺗﻌﺮﻳﻒ الmain method
4) ; ("Console.WriteLine("Welcome to C# programing
وهﻲ ﺟﻤﻠﺔ اﻟﻄﺒﺎﻋﺔ ﻟﻠﺠﻤﻠﺔ)(Welcome to C# programing
Consoleو ﺗﻌﻨﻲ اﻟﻄﺒﺎﻋﺔ ﻋﻠﻰ اﻟﺸﺎﺷﺔ اﻟﺴﻮداء
)( WriteLineو ﺗﻌﻨﻲ اﻃﺒﻊ اﻟﻨﺺ داﺧﻞ اﻷﻗﻮاس واﻧﺰل ﺳﻄﺮ.
))2ﺑﻌﺾ اﻟﻤﺨﺘﺼﺮات اﻟﻤﺴﺘﺨﺪﻣﺔ ﻓﻲ اﻟﻄﺒﺎﻋﺔ .
هﻨﺎك ﺑﻌﺾ اﻟﻤﻼﺣﻈﺎت اﻟﺒﺴﻴﻄﺔ اﻟﺘﻲ ﺗﻜﺘﺐ ﻓﻲ ﺟﻤﻠﺔ
اﻟﻄﺒﺎﻋﺔ ﻹﻋﻄﺎء اﻟﺠﻤﻠﺔ اﻟﺸﻜﻞ اﻟﻤﻄﻠﻮب :
12
ﻣﺜﻼ :ﻟﻮ أﻋﺪت ﺻﻴﺎﻏﺔ ﺟﻤﻠﺔ اﻟﻄﺒﺎﻋﺔ ﻓﻲ اﻟﺒﺮﻧﺎﻣﺞ اﻟﺴﺎﺑﻖ
آﻤﺎ ﻳﻠﻲ:
C#
;)"Console.WriteLine("Welcome\n to\tC#\n Programing
MS-DOS
Welcome
to C#
Programing
Press any key to continue
اﻟﺪرس اﻟﺜﺎﻟﺚ :اﺳﺘﺨﺪام ال Message Box
ﻓﻲ اﻟﺪرس اﻟﺴﺎﺑﻖ ﺷﺮﺣﻨﺎ ﺑﺮﻧﺎﻣﺞ Print Welcomeوﻃﺒﻌﻨﺎﻩ
ﻋﻠﻰ ﺷﺎﺷﺔ DOSوهﺬﻩ وﺻﻠﺘﻪ:
ﺷﺮح ﺑﺮﻧﺎﻣﺞ Print welcomeﻣﻊ ﺑﻌﺾ اﻟﻤﺨﺘﺼﺮات ﻟﻠﻄﺒﺎﻋﺔ
وﻓﻲ هﺬا اﻟﺪرس ﺳﻨﻄﺒﻊ اﻟﻤﺨﺮﺟﺖ ﻟﻨﻔﺲ اﻟﺒﺮﻧﺎﻣﺞ ﻟﻜﻦ ﻋﻠﻰ
MessageBox
))3اﺳﺘﺨﺪام الMessageBox
ﻣﻌﻈﻢ ﺗﻄﺒﻴﻘﺎت #Cﺗﺴﺘﺨﺪم ﻧﻮاﻓﺬ ﺣﻮار )(dialogsﻹﻇﻬﺎر
اﻟﻤﺨﺮﺟﺎت ) ، (outputأو ﻟﺘﺬآﻴﺮ اﻟﻤﺴﺘﺨﺪم .
ﺗﺤﺘﻮي ﺑﻨﻴﺔ اﻟﻤﻜﺘﺒﺔ ﻓﻲ #Cﻋﻠﻰ Classﻳﺪﻋﻰ MessageBox
13
ﻹﻧﺸﺎء ﻧﺎﻓﺬة ﺣﻮار .وهﺬا ال Classﻣﻮﺟﻮد داﺧﻞ اﻟﻤﻜﺘﺒﺔ
،System.Windows.Formsوﻷن هﺬا اﻟﺒﺮﻧﺎﻣﺞ Consoleﻓﻼ
ﻳﺘﻢ اﺳﺘﺪﻋﺎء هﺬﻩ اﻟﻤﺠﻤﻮﻋﺔ ﻋﻨﺪ إﻧﺸﺎء اﻟﻤﺸﺮوع آﻤﺎ ﻓﻲ
Windows Applicationﻋﻠﻰ اﻋﺘﺒﺎر أﻧﻬﺎ ﻻ ﺗﺤﺘﺎﺟﻬﺎ ﻷن
ﻣﺨﺮﺟﺎﺗﻬﺎ ﺗﻈﻬﺮ ﻋﻠﻰ ﺷﺎﺷﺔDose .
ﻟﻜﻦ ﺳﻨﻘﻮم ﻧﺤﻦ ﺑﺈﺿﺎﻓﺘﻬﺎ ﻻﺳﺘﺨﺪام ﻣﺎ ﺗﺤﺘﻮﻳﻪ .وﺗﻜﻮن هﺬﻩ
اﻟﻤﻜﺘﺒﺔ ﻣﺨﺰﻧﺔ ﺑﺎﻣﺘﺪاد .dll
واﻵن:
)1ﻗﻢ ﺑﺈﻧﺸﺎء ﻣﺸﺮوع ﺟﺪﻳﺪ وﺳﻤﻪPrintWelcome2 .
)2واﻵن اذهﺐ إﻟﻰ ProjectﺛﻢAdd Reference .
)3ﺳﺘﻈﻬﺮ ﻟﻚ ﻧﺎﻓﺬة Add Referenceﻗﻢ ﺑﺈﺧﺘﻴﺎر اﻟﻤﻜﺘﺒﺔ
System.Windows.forms.dllﺛﻢ ﻗﻢ ﺑﺎﻟﻜﺒﺲ ﻋﻠﻴﻬﺎ ﻣﺮﺗﻴﻦ
ﻣﺘﺘﺎﻟﻴﺘﻴﻦ ) ،(double Clickﺳﺘﻈﻬﺮ ﻟﻚ ﻓﻲ Selected
Componentsﻗﻢ ﺑﺎﺧﺘﻴﺎرهﺎ ﺛﻢOK .
14
)4ﺗﻢ إﺿﺎﻓﺔ هﺬﻩ اﻟﻤﺠﻤﻮﻋﺔ إﻟﻰ ﻣﺤﺘﻮﻳﺎت اﻟﺒﺮﻧﺎﻣﺞ وﺳﺘﺠﺪهﺎ
ﻓﻲ الSolution Explorer .
واﻵن ﺣﺘﻰ ﻧﺴﺘﻄﻴﻊ اﺳﺘﺨﺪام ﻣﺤﺘﻮﻳﺎت هﺬﻩ اﻟﻤﻜﺘﺒﺔ ﻳﺠﺐ
اﺳﺘﺪﻋﺎؤهﺎ آﻤﺎ ﺗﻢ اﺳﺘﺪﻋﺎء اﻟﻤﻜﺘﺒﺔ Systemﻹﺳﺘﺨﺪام
C#
15
[SIZE=3]Console.WriteLine( );
Class ﻣﻦShow اﺳﻤﻪmethod واﻵن ﺳﻨﻘﻮم ﺑﺎﺳﺘﺪﻋﺎء5)
. ﻹﻇﻬﺎر اﻟﻤﺨﺮﺟﺎتMessageBox اﺳﻤﻪ
main method :ﻗﻢ ﺑﻜﺘﺎﺑﺔ اﻟﺠﻤﻠﺔ اﻟﺘﺎﻟﻴﺔ داﺧﻞ ال
C#
MessageBox.Show("Welcome to C#
Programming");
:ﺳﻴﻜﻮن ﺷﻜﻞ اﻟﻜﻮد آﻤﺎ ﻳﻠﻲ
C#
using System;
using System.Windows.Forms;
class PrintWelcome2
static void Main(string[] args)
16
{
MessageBox.Show("Welcome
;)"to C# Programming
}
}
)6ﻗﻢ ﺑﺘﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ ﺳﻴﻈﻬﺮ ﻟﻚ اﻟﻨﺎﺗﺞ آﻤﺎ ﻳﻠﻲ :
!
وﻳﻤﻜﻦ اﻟﺘﺤﻜﻢ ﺑﺸﻜﻞ ال Messageﺑﺈﻋﻄﺎﺋﻪ ﻋﻨﻮان و ﻧﻮع
اﻟﻜﺒﺴﺎت اﻟﺘﻲ ﻧﺮﻳﺪهﺎ ﺗﻈﻬﺮ ﻋﻠﻴﻪ وﻋﺪدهﺎ و إﻇﻬﺎر اﺷﺎرة
ﺑﺠﻮار اﻟﻤﺨﺮج ﺗﺪل ﻋﻠﻰ ﻧﻮع اﻟﺠﻤﻠﺔ هﻞ هﻲ ﻣﻌﻠﻮﻣﺎت أم
ﺳﺆال وﻏﻴﺮهﺎ.
ﻓﺈذا ﻗﻤﺖ ﺑﺈﻋﺎدة ﺻﻴﻐﺔ اﻟﺠﻤﻠﺔ آﺎﻟﺘﺎﻟﻲ :
17
C#
MessageBox.Show("Welcome to C#
Programming","Welcome Message",
MessageBoxButtons.OK,MessageBoxIcon.Info
rmation);
: ﺳﻴﻜﻮن اﻟﻨﺎﺗﺞ آﻤﺎ ﻳﻠﻲ
ﻋﺪة أﺷﻜﺎل ﻓﻲ ﺷﻜﻞ اﻷﻳﻘﻮﻧﺔ أو ﺷﻜﻞ الMessageBox ﻟﻞ
: ﻣﻨﻬﺎMessage اﻟﺘﻲ ﺳﺘﻈﻬﺮ ف الButton
: أﺷﻜﺎل ﻟﺸﻜﻞ اﻷﻳﻘﻮﻧﺔ
C#
18
MessageBoxIcon.Exclamation ﻋﻼﻣﺔ
اﻟﺘﻌﺠﺐ or
MessageBoxIcon. Information
ﻟﻠﻤﻌﻠﻮﻣﺎت or
MessageBoxIcon.Question ﻟﻠﺴﺆال
or
MessageBoxIcon.Error ﻟﻠﺨﻄﺄ
messagebox: ﻓﻲ الbutton أﺷﻜﺎل ال
C#
MessageBoxButton.OK
MessageBoxButton.OKCancel
MessageBoxButton.YesNo
MessageBoxButton.YesNoCancel
MessageBoxButton.RetryCancel
MessageBoxButton.AbortRetryIgnore
19
اﻟﺪرس اﻟﺮاﺑﻊ :ﺑﺮﻧﺎﻣﺞ ﻳﻘﻮم ﺑﺠﻤﻊ رﻗﻤﻴﻦ ﺻﺤﻴﺤﻴﻦ
ﻓﻲ هﺬا اﻟﺪرس ﺳﻨﻘﻮم إن ﺷﺎء اﷲ ﺑﺘﻮﺿﻴﺢ ﺑﺮﻧﺎﻣﺞ ﺁﺧﺮ
ﺑﺴﻴﻂ ﻳﻘﻮم ﺑﺠﻤﻊ رﻗﻤﻴﻦ ﺻﺤﻴﺤﻴﻦ ،
ﺣﻴﺚ ﻳﻘﻮم اﻟﻤﺴﺘﺨﺪم ﺑﺈدﺧﺎل اﻟﺮﻗﻢ اﻷول ﺛﻢ ﻳﻀﻐﻂ
Enterﻟﻼﻧﺘﻘﺎل ﻟﻠﺮﻗﻢ اﻟﺜﺎﻧﻲ ،ﺛﻢ ﻳﺪﺧﻞ اﻟﺮﻗﻢ
اﻟﺜﺎﻧﻲ وﻳﻀﻐﻂ أﻳﻀﺎ ً Enterﻟﺘﻈﻬﺮ ﻧﺘﻴﺠﺔ ﺟﻤﻊ هﺬﻳﻦ
اﻟﺮﻗﻤﻴﻦ..
واﻵن ﺑﺴﻢ اﷲ ﻧﺒﺪأ:
ﻗﻢ ﺑﺈﻧﺸﺎء ﻣﺸﺮوع ﺟﺪﻳﺪ ﻣﻦ ﻧﻮع Console Application
وﺳﻤﻪ Additionوﺳﻤﻲ ال Classأﻳﻀﺎ ً Addition .واﻵن
ﻳﺠﺐ أن ﻳﻜﻮن ﺷﻜﻞ اﻟﻜﻮد اﻟﺤﺎﻟﻲ آﺎﻟﺘﺎﻟﻲ :
C#
;using System
class Addition
{
)static void Main(string[] args
{
}
20
}
أوﻻ ً ﺑﻤﺎ أن اﻟﺒﺮﻧﺎﻣﺞ ﺳﻴﻘﻮم ﺑﺠﻤﻊ رﻗﻤﻴﻦ ﺻﺤﻴﺤﻴﻦ وﻧﺎﺗﺞ
اﻟﺠﻤﻊ أﻳﻀﺎ ً رﻗﻢ ﺻﺤﻴﺢ ،إذاً ﻋﻠﻴﻨﺎأن ﻧﻌﺮّف ﺛﻼث ﻣﺘﻐﻴﺮات
ﻣﻦ ﻧﻮع ﺻﺤﻴﺢ( (integer) .رﻗﻢ ﺻﺤﻴﺢ :أي ﻣﻦ ﻏﻴﺮ
آﺴﻮر ﻋﺸﺮﻳﻪ ). 43 ، 8 ، 3
C#
;int numbr1 , number2 , Sum
واﻵن ﻣﺎ ﻣﻌﻨﻰ اﻟﺠﻤﻠﺔ اﻟﺴﺎﺑﻘﺔ:
int :هﻲ آﻠﻤﺔ ﻣﺤﺠﻮزة وﺗﺴﺘﺨﺪم ﻟﺘﻌﺮﻳﻒ ﻣﺘﻐﻴﺮ ﺣﻴﺚ
ﻳﺴﺘﻘﺒﻞ وﻳﺤﻔﻆ ﻗﻴﻢ ﻣﻦ ﻧﻮع integerوﺗﻜﺘﺐ ﻗﺒﻞ اﻟﻤﺘﻐﻴﺮ
اﻟﻤﻄﻠﻮب ﺗﻌﺮﻳﻔﻪ .
number1,number2,sum :وهﻢ أﺳﻤﺎء ﻟﻤﺘﻐﻴﺮات ﻻ
ﺗﺴﺘﻘﺒﻞ إﻻّ أرﻗﺎم ﻣﻦ ﻧﻮع integerوﺗﻔﺼﻞ ﺑﻴﻨﻬﻤﻔﺎﺻﻠﺔ
ﻋﺎدﻳﺔ أي آﻞ اﺳﻢ ﺗﺎﺑﻊ ﻟﻠﺘﻌﺮﻳﻒ.
; :وهﻲ ﺿﺮورﻳﺔ ﻓﻲ ﻧﻬﺎﻳﺔ أي ﺟﻤﻠﺔ ﺑﺮﻣﺠﻴﺔ.
وﻳﻤﻜﻦ ﺗﻌﺮﻳﻒ اﻟﻤﺘﻐﻴﺮات اﻟﺴﺎﺑﻘﺔ آﺎﻟﺘﺎﻟﻲ:
C#
;int number1
;int number2
21
;int sum
ﻟﻜﻦ اﻟﻄﺮﻳﻘﺔ اﻷوﻟﻰ أﺳﻬﻞ ﺣﻴﺚ ﻧﻌﺮﻓﻬﻢ آﻠﻬﻢ ﺑﻜﻠﻤﺔ
واﺣﺪة وﺳﻄﺮ واﺣﺪ ﻳﻔﺼﻞ ﺑﻴﻨﻬﻢ ﻓﺎﺻﻠﺔ ). (,واﻵن
ﺳﺘﻮاﺟﻬﻨﺎ ﻣﺸﻜﻠﺔ ﻷن ﺟﻤﻠﺔ اﻟﻘﺮاءة ﻻ ﺗﺴﻨﺪ إﻻ ﻗﻴﻢ ﻣﻦ
ﻧﻮع ﺣﺮف .ﻓﻜﻴﻒ ﺳﻨﺤﻞ هﺬﻩ اﻟﻤﺸﻜﻠﺔ .ﺳﺘﻔﻜﺮ وﺗﻘﻮل
:ﺗﻌﺮف ﻣﺘﻐﻴﺮات ﻣﻦ ﻧﻮع أﺣﺮف )(stringوﻧﺴﻨﺪ إﻟﻴﻬﺎ اﻟﻘﻴﻢ
اﻟﻤﺪﺧﻠﺔﻋﻠﻰ أﻧﻬﺎ أﺣﺮف ﺛﻢ ﻧﺤﻮﻟﻬﺎ إﻟﻰ أرﻗﺎم ﺻﺤﻴﺤﺔ
وﻧﻌﻄﻴﻬﺎ ﻟﻠﻤﺘﻐﻴﺮات اﻟﺘﻲ ﻋﺮﻓﻨﺎهﺎ ﻣﻦ ﻧﻮع )، (integer
وهﺬا ﺑﺎﻟﻈﺒﻂ ﻣﺎ ﺳﻨﻔﻌﻠﻪ ،إذا اﻵن ﺳﻨﻌﺮف ﻣﺘﻐﻴﺮﻳﻦ ﻣﻦ
ﻧﻮع string
وﻟﻴﺲ ﺛﻼث ﻷن اﻟﻤﺠﻤﻮع ﻻ ﻳﺤﺘﺎج إﻟﻰ ﺗﺤﻮﻳﻞ ﻷﻧﻪ
ﺑﺒﺴﺎﻃﺔ ﻏﻴﺮ ﻣﺪﺧﻞ ﺑﻞ هﻮ ﻧﺘﻴﺠﺔ .
C#
;String FirstNumber , SecondNumber
string :آﻠﻤﺔ ﻣﺤﺠﻮزة ﺗﺴﺘﺨﺪم ﻟﺘﻌﺮﻳﻒ ﻣﺘﻐﻴﺮ ﺣﻴﺚ
ﻳﺴﺘﻘﺒﻞ وﻳﺨﺰن ﺣﺮف أو ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻷﺣﺮف.
FirstNumber :اﺳﻢ ﻣﺘﻐﻴﺮ ﻻ ﻳﺴﺘﻘﺒﻞ إﻻ ﺣﺮف وهﻮ
اﻟﺬي ﺳﻴﺄﺧﺬ ﻗﻴﻤﺔ اﻟﻤﺘﻐﻴﺮ number1ﻗﺒﻞ ﺗﺤﻮﻳﻠﻪ إﻟﻰ
integer .
SecondNumber :اﺳﻢ ﻣﺘﻐﻴﺮ ﻻ ﻳﺴﺘﻘﺒﻞ إﻻ ﺣﺮف وهﻮ
22
: واﻵن أﺻﺒﺢ ﺷﻜﻞ اﻟﻜﻮد آﻤﺎ ﻳﻠﻲ
C#
using System;
class Addition
static void Main(string[] args)
//string ﺗﻌﺮﻳﻒ ﻣﺘﻐﲑﻳﻦ ﻣﻦ ﻧﻮع
string FirstNumber ,
SecondNumber;
//integer ﺗﻌﺮﻳﻒ ﺛﻼث ﻣﺘﻐﲑات ﻣﻦ
ﻧﻮع
int number1 , number2 , sum ;
}
23
اﻟﻤﺴﺘﺨﺪم ﻣﺎذا ﻳﻔﻌﻞ أو ﻣﺎ اﻟﻤﻄﻠﻮب ﻣﻨﻪ:
C#
;)"Console.Write("Enter First Number :
وهﻲ ﺟﻤﻠﺔ ﻃﺒﺎﻋﺔ ﻋﺎدﻳﺔ آﻤﺎ ﺗﻌﻠﻤﻨﺎهﺎ ﻟﻜﻦ ﺑﻌﺪ اﻟﻄﺒﺎﻋﺔ
ﻻ ﺗﻨﺘﻘﻞ إﻟﻰ ﺳﻄﺮ ﺟﺪﻳﺪ .واﻵن ﺟﻤﻠﺔ اﻟﻘﺮاءة:
C#
;)(FirstNumber = Console.ReadLine
)(ReadLine ال ﻗﻤﻨﺎ ﺑﺎﺳﺘﺪﻋﺎء
method
ﻣﻦ ال Console
Class
using اﳌﻮﺟﻮد ﰲ اﳌﻜﺘﺒﺔnamespace
ووﻇﻴﻔﺘﻪ ﻗﺮاءة ﻣﺎ ﻳﺪﺧﻠﻪ اﳌﺴﺘﺨﺪم وإﺳﻨﺎدهﺎ
ﻟﻠﻤﺘﻐﲑ FirstNumberﰒ اﻻﻧﺘﻘﺎل إﱃ ﺳﻄﺮ
ﺟﺪﻳﺪ.
24
هﻜﺬا ﻧﻜﻮن ﻗﺪ أدﺧﻠﻨﺎ اﻟﻘﻴﻤﺔ اﻷوﻟﻰ وهﻲ ﻣﺨﺰﻧﺔ اﻵن ﻓﻲ
اﻟﻤﺘﻐﻴﺮ FirstNumberﻋﻠﻰ ﺷﻜﻞ ﺣﺮف:
واﻵن ﺳﻨﻘﻮم ﺑﺈدﺧﺎل اﻟﺮﻗﻢ اﻟﺜﺎﻧﻲ:
ﺟﻤﻠﺔ اﻟﻄﺒﺎﻋﺔ أوﻻ ً:
C#
;)"Console.Write("\nEnter Second Number :
ﺟﻤﻠﺔ اﻟﻘﺮاءة ﺛﺎﻧﻴﺎ ً:
C#
;)(SecondNumber = Console.ReadLine
واﻵن ﺑﻌﺪ أن ﺣﺼﻠﻨﺎ ﻋﻠﻰ اﻟﻘﻴﻤﺘﻴﻦ ﺳﻨﻘﻮم ﺑﺘﺤﻮﻳﻠﻬﻤﺎ
إﻟﻰinteger .
C#
;)number1 = Int32.Parse(FirstNumber
25
parse ال هﻨﺎ ﻗﻤﻨﺎ ﺑﺎﺳﺘﺪﻋﺎء
method
ال ﻣﻦ
Int32 Class
System اﳌﻮﺟﻮد ﰲ ال
namespace
ﺣﻴﺚ ﻳﻘﻮم ال methodﺑﺘﺤﻮﻳﻞ اﻟﻘﻴﻤﺔ اﳌﻮﺟﻮدة
ﰲ اﳌﺘﻐﲑ FirstNumberإﱃ ﻗﻴﻤﺔ ﻣﻦ ﻧﻮع
integer
وإﻋﻄﺎؤهﺎ ﻟﻠﻤﺘﻐﲑ number1 .
واﻵن ﲢﻮﻳﻞ اﳌﺘﻐﲑ اﻟﺜﺎﻧﻲ وإﺳﻨﺎدﻩ إﱃ اﳌﺘﻐﲑ
number2ﺑﻨﻔﺲ اﻟﻄﺮﻳﻘﺔ:
C#
;)number2 = Int32.Parse(SecondNumber
26
ﻓﻲ اﻟﺤﺴﺎب اﻟﻌﺎدي ﻋﻨﺪﻣﺎ ﻧﺮﻳﺪ أن ﻧﺠﻤﻊ اﻟﺮﻗﻤﻴﻦ 5و 7
ﻧﻘﻮل = 12 5 + 7 :ﺑﻤﻌﻨﻰ ﻗﻢ ﺑﺠﻤﻊ اﻟﺮﻗﻤﻴﻦ 7و 5وﺿﻊ
اﻟﻨﺎﺗﺞ ﻓﻲ اﻟﻄﺮف اﻟﺜﺎﻧﻲ واﻟﺬي هﻮ 12وهﺬا اﻷﺳﻠﻮب
ﻧﻔﺴﻪ اﻟﺬي ﻧﺴﺘﺨﺪﻣﻪ ﻓﻲ اﻟﺠﻤﻊ ﻓﻲ اﻟﺒﺮﻣﺠﺔ ﺣﻴﺚ:
C#
; sum = number1 + number2
ﺑﻤﻌﻨﻰ اﺟﻤﻊ ﻗﻴﻤﺔ اﻟﻤﺘﻐﻴﺮ number1ﻣﻊ ﻗﻴﻤﺔ اﻟﻤﺘﻐﻴﺮ
number2وﺿﻊ اﻟﻨﺎﺗﺞ ﻓﻲ اﻟﻤﺘﻐﻴﺮ sum.
إذ "=" ﻣﻌﻨﺎهﺎ اﺳﻨﺪ ﻧﺎﺗﺞ اﻟﻄﺮف اﻷﻳﻤﻦ ﻟﻠﻤﺘﻐﻴﺮ ﻓﻲ
اﻟﻄﺮف اﻷﻳﺴﺮ.
واﻵن اﻧﺘﻬﺖ ﻋﻤﻠﻴﺔ اﻟﺠﻤﻊ ﺑﻘﻲ ﻋﻠﻴﻨﺎ ﻓﻘﻂ إﻇﻬﺎر اﻟﻨﺎﺗﺞ:
C#
Console.WriteLine("\nThe Sum is
;):{0}",sum
ﺑﻤﻌﻨﻰ أﻧﻪ ﺳﻴﻄﺒﻊ أوﻻ ً اﻟﺠﻤﻠﺔ The sum isﺛﻢ ﻓﻲ
اﻟﻤﻜﺎن }{0ﺳﻴﻄﺒﻊ ﻗﻴﻤﺔ sumوهﺬﻩ ﻃﺮﻳﻘﺔ ﺣﺘﻰ ﺗﻄﺒﻊ
أي ﻗﻴﻤﺔ ﺧﻼل اﻟﻨﺺ ورﻗﻢ 0ﻳﻌﻨﻲ أﻧﻪ اﻟﺮﻗﻢ اﻷول اﻟﺬي
ﺳﻴُﻄﺒﻊ .
ﻓﻤﺜﻼ ﻟﻮ أردﻧﺎ ﻃﺒﺎﻋﺔ أآﺜﺮ ﻣﻦ رﻗﻢ:
27
C#
Console.WriteLine(“The Numbers are
:{0},{1},{2}”,number1 , number2 ,
number3);
...وهﻜﺬا
code واﻵن وﻗﺪ اﻧﺘﻬﻰ اﻟﱪﻧﺎﻣﺞ ﺳﻴﻜﻮن ال
:آﺎﻣﻼ آﻤﺎ ﻳﻠﻲ
C#
using System;
class Addition
static void Main(string[] args)
//string ﺗﻌﺮﻳﻒ ﻣﺘﻐﲑﻳﻦ ﻣﻦ ﻧﻮع
28
string FirstNumber ,
SecondNumber;
//integer ﺗﻌﺮﻳﻒ ﺛﻼث ﻣﺘﻐﲑات ﻣﻦ
ﻧﻮع
int number1 , number2 , sum ;
// إدﺧﺎل اﻟﻘﻴﻤﺔ اﻵوﱃ
Console.Write("Enter First
Number :");
FirstNumber =
Console.ReadLine();
// إدﺧﺎل اﻟﻘﻴﻤﺔ اﻟﺜﺎﻧﻴﺔ
Console.Write("\nEnter Second
Number :");
SecondNumber =
Console.ReadLine();
//integer إﱃ ﻧﻮعstring ﲢﻮﻳﻞ
اﻟﻘﻴﻢ ﻣﻦ ﻧﻮع
number1 =
Int32.Parse(FirstNumber);
number2 =
Int32.Parse(SecondNumber);
//ﲨﻊ اﻟﺮﻗﻤﲔ
sum = number1 + number2 ;
29
إﻇﻬﺎر اﻟﻨﺘﻴﺠﺔ//
Console.WriteLine("\nThe Sum is
;):{0}",sum
}
}
ﻣﻼﺣﻈﺔ :
*ﻟﻜﺘﺎﺑﺔ أي ﻣﻼﺣﻈﺔ داﺧﻞ ال codeﻳﺠﺐ أن ﺗﺴﺒﻘﻬﺎ ﺑـ //
.
ﻗﻢ ﺑﺘﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ:
وﻟﻨﻔﺮض ادﺧﻞ اﻟﺮﻗﻢ اﻷول 45واﻟﺮﻗﻢ اﻟﺜﺎﻧﻲ 72ﺳﻴﺼﺒﺢ
اﻟﻨﺎﺗﺞ آﻤﺎ ﻳﻠﻲ:
MS-DOS
Enter First Number :45
Enter Second Number :72
30
The Sum is :117
Press any key to continue
: 2 ﻣﻼﺣﻈﺔ
*إذا ﺣﺎوﻟﺖ إدﺧﺎل ﻗﻴﻢ ﺗﺤﺘﻮي ﻋﻠﻰ آﺴﻮر أو ﻋﺪم إدﺧﺎل
.ﻗﻴﻢ ﻓﺴﻴﻌﻄﻲ ﺧﻄﺄ ﻷﻧﻪ ﻟﻢ ﻳﺘﻢ ﻣﻌﺎﻟﺠﺘﻬﺎ
:ﻃﺮﻳﻘﺔ أﺧﺮى
ﺛﻢstring ﻓﻲ ﺟﻤﻠﺔ اﻹدﺧﺎل ﻗﻤﻨﺎ ﺑﺘﻌﺮﻳﻒ ﻣﺘﻐﻴﺮﻳﻦ ﻣﻦ ﻧﻮع
أﺳﻨﺪﻧﺎ اﻟﻴﻬﻤﺎ اﻟﻘﻴﻢ اﻟﻤﺪﺧﻠﺔ ﺛﻢ ﻗﻤﻨﺎ ﺑﺘﺤﻮﻳﻠﻬﻤﺎ إﻟﻰ
integer .
C#
string FirstNumber , SecondNumber;
FirstNumber = Console.ReadLine();
SecondNumber = Console.ReadLine();
number1 = Int32.Parse(FirstNumber);
number2 = Int32.Parse(SecondNumber);
31
اﻟﺘﺤﻮﻳﻞmethod ﻓﻠﻤﺎذا ﻻ ﻧﻀﻊ ﺟﻤﻠﺔ اﻟﻘﺮاءة داﺧﻞ أﻗﻮاس
:ًﺣﻴﺚ ﻳﺘﻢ إدﺧﺎل اﻟﻘﻴﻤﺔ وﺗﺤﻮﻳﻠﻪ ﻓﻮرا
C#
number1 = Int32.Parse(Console.ReadLine());
number2 = Int32.Parse(Console.ReadLine());
وهﺬﻩ ﻃﺮﻳﻘﺔ ﻣﺨﺘﺼﺮة ﻟﻠﻄﺮﻳﻘﺔ اﻟﺴﺎﺑﻘﺔ وﺗﻌﻄﻲ ﻧﻔﺲ
.اﻟﻨﺘﺎﺋﺞ
C#
using System;
class Addition
static void Main(string[] args)
int number1 , number2 , sum ;
32
Console.Write("Enter First Number
:");
number2 =
Int32.Parse(Console.ReadLine());
Console.Write("\nEnter Second
Number :");
number1 =
Int32.Parse(Console.ReadLine());
sum = number1 + number2 ;
Console.WriteLine("\nThe Sum is
:{0}",sum);
}
33
اﻟﺪرس اﻟﺨﺎﻣﺲ :ﻣﻔﻬﻮم اﻟﺬاآﺮة
ﻓﻲ اﻟﺪرس اﻟﺴﺎﺑﻖ ﻗﻤﻨﺎ ﺑﺸﺮح ﺑﺮﻧﺎﻣﺞ ﻳﺠﻤﻊ ﺑﻴﻦ
رﻗﻤﻴﻦ ﺻﺤﻴﺤﻴﻦ
وﻟﻜﻦ آﻴﻒ ﺳﺘﺘﻢ هﺬﻩ اﻟﻌﻤﻠﻴﻪ ﻓﻲ اﻟﺬاآﺮة ؟ هﺬا ﻣﺎ
ﺳﻴﻜﻮن ﻣﻮﺿﻮﻋﻨﺎ ﻓﻲ هﺬا اﻟﺪرس:
ﺑﺴﻢ اﷲ ﻧﺒﺪأ :
*ﻣﻔﻬﻮم اﻟﺬاآﺮة :
آﻞ ﻣﺘﻐﻴﺮ ﻣﺜﻞ number1,number2,sumهﻮ ﻋﺒﺎرة ﻋﻦ
ﻣﻮﻗﻊ ﻓﻲ اﻟﺬاآﺮة ،وآﻞ ﻣﺘﻐﻴﺮ ﻳﻤﻠﻚ اﺳﻢ وﻧﻮع وﺣﺠﻢ
وﻗﻴﻤﺔ .ﻓﻤﺜﻼً اﻟﺠﻤﻠﺔ اﻟﺘﺎﻟﻴﺔ ﻓﻲ ﺑﺮﻧﺎﻣﺞ )ﺟﻤﻊ رﻗﻤﻴﻦ
ﺻﺤﻴﺤﻴﻦ( اﻟﺠﻤﻠﺔ:
C#
;)number1 = Int32.parse(FirstNumber
ﻋﻨﺪﻣﺎ ﻋﺮﻓﻨﺎ اﻟﻤﺘﻐﻴﺮ number1ﺗﻢ ﺗﺤﺪﻳﺪﻩ ﺑﻮاﺳﻄﺔ
اﻟﻤﺘﺮﺟﻢ )(compilerآﻤﻮﻗﻊ ﻓﻲ اﻟﺬاآﺮة .ﻓﻠﻨﻔﺮض أن
اﻟﻤﺴﺘﺨﺪم ﻗﺎم ﺑﺈدﺧﺎل ﻗﻴﻤﺔ 45آﺤﺮف stringﻟﻠﻤﺘﻐﻴﺮ
FirstNumberﺳﻴﻘﻮم اﻟﺒﺮﻧﺎﻣﺞ ﺑﺘﺤﻮﻳﻠﻪ اﻟﻰ integerﺛﻢ
34
ﻳﻀﻌﻪ ﻓﻲ اﻟﻤﻮﻗﻊ number1آﻤﺎ ﻳﻠﻲ:
وﻧﻔﺲ اﻟﺸﻲء ﻳﺤﺪث ﻋﻨﺪ ادﺧﺎل اﻟﺮﻗﻢ اﻟﺜﺎﻧﻲ:
C#
;)number2 = Int32.parse(SecondNumber
ﻣﻼﺣﻈﺔ :
إذا آﺎن ﻳﻮﺟﺪ ﻗﻴﻤﺔ ﻓﻲ اﻟﻤﻮﻗﻊ وﺗﻢ إﺿﺎﻓﺔ ﻗﻴﻤﺔ أﺧﺮى
ﻓﺈن اﻟﻘﻴﻤﺔ اﻟﻘﺪﻳﻤﺔ ﺳﻮف ﺗﻠﻐﻰ وﻳﺼﺒﺢ ﻗﻴﻤﺔ اﻟﻤﻮﻗﻊ
اﻟﺮﻗﻢ اﻟﺠﺪﻳﺪ.
ﻓﻤﺜﻼً ﻟﻮ وﺿﻌﻨﺎ أﻣﺮ ﻓﻲ اﻟﺒﺮﻧﺎﻣﺞ ﺑﺈدﺧﺎل اﻟﻘﻴﻤﺘﻴﻦ
35
number1 = 45,
number2 = 72واﺻﺒﺤﺖ ﺗﻤﺘﻠﻚ ﻣﻮاﻗﻌﻬﻢ ﻗﻴﻢ ووﺿﻌﻨﺎ
ﺑﻌﺪهﺎ أﻣﺮ ﺁﺧﺮ ﻹﻋﺎدة ادﺧﺎل اﻟﻘﻴﻤﺘﻴﻦ ﻣﺮﻩ أﺧﺮى
number1= 7,number2 = 5ﻓﻠﻮ ﻗﻤﻨﺎ ﺑﻌﻤﻠﻴﺔ اﻟﺠﻤﻊ
اﻵن ﻓﺈن اﻟﻨﺎﺗﺞ ﺳﻴﻜﻮن 12أي أن ﻗﻴﻤﻬﺎ اﻟﺤﺎﻟﻴﺔ 7و5
وﻟﻴﺲ اﻟﻘﻴﻢ اﻟﺴﺎﺑﻘﺔ.
واﻵن ﺳﺘﺘﻢ ﻋﻤﻠﻴﺔ اﻟﺠﻤﻊ وﻳﻮﺿﻊ اﻟﻨﺎﺗﺞ ﻓﻲ اﻟﻤﻮﻗﻊ
sum :
ان ﺷﺎء اﷲ ﺗﻜﻮن ﻗﺪ ﺗﻢ ﻓﻬﻢ ﻓﻜﺮة اﻟﺬاآﺮة ﻓﻲ ﻋﻤﻠﻴﺔ
اﻟﺠﻤﻊ.
اﻟﺪرس اﻟﺴﺎدس :اﻟﻌﻤﻠﻴﺎت اﻟﺤﺴﺎﺑﻴﺔ وﻣﺨﺘﺼﺮاﺗﻬﺎ
ﻓﻲ هﺬا اﻟﺪرس ﺳﻨﻮﺿﺢ اﻟﻌﻤﻠﻴﺎت اﻟﺤﺴﺎﺑﻴﺔ اﻟﻤﺴﺘﺨﺪﻣﺔ
ﻓﻲ ﻟﻐﺔ #Cوﻣﻘﺎرﻧﺘﻬﺎ ﺑﺎﻟﺠﺒﺮ ،وﺑﻌﺾ اﻟﻤﺨﺘﺼﺮات ﻟﻬﺬﻩ
اﻟﻌﻤﻠﻴﺎت :
واﻵن ﺑﺴﻢ اﷲ ﻧﺒﺪأ :
*اﻟﻌﻤﻠﻴﺎت اﻟﺤﺴﺎﺑﻴﺔ :
ﺑﻌﺾ اﻟﻌﻤﻠﻴﺎت اﻟﺤﺴﺎﺑﻴﺔ ﻓﻲ اﻟﺒﺮﻣﺠﺔ ﺗﺨﺘﻠﻒ ﺑﺮﻣﺰهﺎ ﻋﻦ
اﻟﺠﺒﺮ وهﺬا اﻟﺠﺪول ﻳﻮﺿﺢ اﻟﻔﺮق ﺑﻴﻦ اﻟﺮﻣﻮز :
36
اﻟﺘﻌﺎﺑﻴﺮ اﻟﺤﺴﺎﺑﻴﺔ ﻳﺠﺐ أن ﺗﻜﺘﺐ ﺑﺨﻂ ﻣﺴﺘﻘﻴﻢ أي ﻋﻠﻰ
ﻧﻔﺲ اﻟﺨﻂ .وهﻲ أﻳﻀﺎ ً ﻻ ﺗﺤﺘﻮي ﻋﻠﻰ أﺳﺲ.
ﻣﺜﻼ ً اﻟﻌﺒﺎرة اﻟﺘﺎﻟﻴﺔ:
ﻓﻲ اﻟﺠﺒﺮ ﺗﻜﺘﺐ هﻜﺬا ÷ (m = (a+b+c+d+e5 :
ﻓﻲ C#ﺗﻜﺘﺐ هﻜﺬا: m = (a+b+c+d+e) / 5
ﻓﻲ ﻋﻤﻠﻴﺔ اﻟﻘﺴﻤﺔ ﻳﻌﺘﻤﺪ اﻟﻨﺎﺗﺞ ﻋﻠﻰ ﻧﻮع اﻟﻘﻴﻤﺔ
اﻟﻤﺪﺧﻠﺔ ﻓﺈذا آﺎﻧﺖ ﻣﻦ ﻧﻮع integerﻓﺈن اﻟﻨﺘﻴﺠﺔ ﺳﺘﺘﺤﻮل
ﺗﻠﻘﺎﺋﻴﺎ ً إﻟﻰ أﻗﺮب ﻋﺪد ﺻﺤﻴﺢ .ﻣﺜﻼ ً:
إذا أدﺧﻠﻨﺎ ﻗﻴﻤﺔ ﺻﺤﻴﺤﺔ 9وﻗﺴﻤﻨﺎهﺎ ﻋﻠﻰ ﻗﻴﻤﺔ ﺻﺤﻴﺤﺔ
أﺧﺮى 2ﻓﻲ اﻷﺻﻞ اﻟﻨﺎﺗﺞ ﻳﻜﻮن 4.5ﻟﻜﻦ اﻟﻨﺘﻴﺠﺔ ﺳﺘﻜﻮن 4
ﻓﻘﻂ.
*ﺗﺮﺗﻴﺐ اﻟﻌﻤﻠﻴﺎت ) اﻷﺳﺒﻘﻴﺔ ) :
أﺛﻨﺎء اﻟﺘﻨﻔﻴﺬ ﻟﺠﻤﻠﺔ ﻣﻌﻴﻨﺔ ﺗﻌﺪدت ﻓﻴﻬﺎ اﻟﻌﻤﻠﻴﺎت اﻟﺤﺴﺎﺑﻴﺔ
ﻳﺠﺐ أن ﻳﻌﺮف ال Compilerﺑﺄﻳﻬﺎ ﻳﺒﺪأ وﻗﺪ ﺗﻢ ﺗﺮﺗﻴﺐ هﺬﻩ
اﻟﻌﻤﻠﻴﺎت ﺣﺴﺐ اﻷوﻟﻮﻳﺔ ﻓﻲ اﻟﺠﺪول اﻟﺘﺎﻟﻲ:
37
ﻣﺜﻼ ً ﻟﻮ ﻃﻠﺒﻨﺎ ﻣﻦ اﻟﺤﺎﺳﻮب أن ﻳﻨﻔﺬ اﻟﺠﻤﻠﺔ اﻟﺤﺴﺎﺑﻴﺔ
اﻟﺘﺎﻟﻴﺔ:
Z = pr % q + (w– y) ÷ x
ﺣﺘﻰ ﻳﺴﺘﻄﻴﻊ ﻓﻬﻤﻬﺎ ﻳﺠﺐ أن ﻧﺪﺧﻠﻬﺎ ﺑﺎﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ:
Z = p * r % q + (w – y) / x
واﻵن ﺳﻨﺘﺨﻴﻞ ﻣﺎ ﺳﻴﻘﻮم ﺑﻪ اﻟﻤﺘﺮﺟﻢ )(Compilerوﻗﺪ ﺗﻢ
ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ وﻗﺎم اﻟﻤﺴﺘﺨﺪم ﺑﺈﻋﻄﺎء اﻟﻘﻴﻢ اﻟﺘﺎﻟﻴﺔ:
P = 5 , r = 6 , q = 3 , w = 7, y = 3 , x = 2
أوﻻ ً ﺳﻴﺮﺗﺐ اﻟﻘﻴﻢ ﻓﻲ اﻟﺠﻤﻠﺔ اﻟﺤﺴﺎﺑﻴﺔ آﺎﻟﺘﺎﻟﻲ:
Z = 5 * 6 % 3 + ( 7 – 3) / 2
وهﺬﻩ اﻟﺨﻄﺔ اﻟﺘﻲ ﺳﻴﺘﺒﻌﻬﺎ ﻓﻲ ﻋﻤﻠﻴﺔ اﻟﺤﺴﺎب:
وهﺬﻩ اﻟﺨﻄﻮات اﻟﺘﻲ ﻳﻘﻮم ﺑﻬﺎ ﺗﻔﺼﻴﻠﻴﺎ ً أﺛﻨﺎء ﻋﻤﻠﻴﺔ
اﻟﺤﺴﺎب:
38
*ﺑﻌﺾ اﻟﻤﺨﺘﺼﺮات ﻟﻠﻌﻤﻠﻴﺎت اﻟﺤﺴﺎﺑﻴﺔ :
ﺑﻌﺾ اﻟﺘﻌﺎﺑﻴﺮ ﻟﻠﻌﻤﻠﻴﺎت اﻟﺤﺴﺎﺑﻴﺔ ﻳﻤﻜﻦ اﺧﺘﺼﺎرهﺎ
ﻟﻠﺴﻬﻮﻟﺔ وﻋﺎدة ً ﺗﺴﺘﺨﺪم ﻟﻠﻌﺪادات ﻓﻤﺜﻼ ً:
;c=c+3
وﺗﻌﻨﻲ إﺿﺎﻓﺔ ﻗﻴﻤﺔ 3ﻟﻨﻔﺲ ﻗﻴﻤﺔ اﻟﻤﺘﻐﻴﺮ c .وﻳﻤﻜﻦ
آﺘﺎﺑﺘﻬﺎ ﺑﻄﺮﻳﻘﺔ أﺧﺮى:
; c += 3
واﻟﺠﺪول اﻟﺘﺎﻟﻲ ﻳﺒﻴﻦ اﺧﺘﺼﺎرات اﻟﻌﻤﻠﻴﺎت اﻟﺤﺴﺎﺑﻴﺔ:
39
*ﻋﻤﻠﻴﺎت اﻟﺘﺰاﻳﺪ واﻟﺘﻨﺎﻗﺺ اﻟﻤﺨﺘﺼﺮة :
وﺗﺴﺘﺨﺪم ﻟﻠﻌﺪادات اﻟﻤﺘﺰاﻳﺪة ﺑﻤﻘﺪار 1أو اﻟﻤﺘﻨﺎﻗﺼﺔ ﺑﻤﻘﺪار
واﺣﺪ ﻓﻘﻂ .ﻓﺒﺪﻻً ﻣﻦ اﺳﺘﺨﺪام اﻟﺘﻌﺒﻴﺮ ، c = c + 1أو c
+= 1 .اﺳﺘﺨﺪام اﻟﺘﻌﺒﻴﺮ ، c++واﻟﺠﺪول اﻟﺘﺎﻟﻲ ﻳﻮﺿﺢ هﺬﻩ
اﻟﻌﻤﻠﻴﺎت:
ﻓﻠﻮ ﺗﺘﺒﻌﻨﺎ اﻟﺒﺮﻧﺎﻣﺞ اﻟﺘﺎﻟﻲ:
C#
40
c = 5;
Console.WriteLine(c); // 5 ﻳﻄﺒﻊ
Console.WriteLine(c++); // ﰒ5 ﻳﻄﺒﻊ
1 ﻳﺰﻳﺪ
Console.WriteLine(c); // 6 ﻳﻄﺒﻊ
c = 5;
Console.WriteLine(c); // 5 ﻳﻄﺒﻊ
Console.WriteLine(++c); // 6 ﰒ ﻳﻄﺒﻊ1 ﻳﺰﻳﺪ
Console.WriteLine(c); // 6 ﻳﻄﺒﻊ
:ﺳﻨﺤﺼﻞ ﻋﻠﻰ اﻟﻨﺘﺎﺋﺞ اﻟﺘﺎﻟﻴﺔ
MS-DOS
6
41
5
6
6
Press any key to continue
اﻟﺪرس اﻟﺴﺎﺑﻊ :ﻋﻤﻠﻴﺎت اﺗﺨﺎذ اﻟﻘﺮار وﺗﻄﺒﻴﻖ ﻋﻠﻴﻬﺎ
ﺳﻨﻘﻮم ﻓﻲ هﺬا اﻟﺪرس إن ﺷﺎء اﷲ ﺑﺸﺮح ﻣﺎ ﻳﻠﻲ:
1-ﻋﻤﻠﻴﺎت اﺗﺨﺎذ اﻟﻘﺮار.
-ﻋﻤﻠﻴﺎت اﻟﻤﺴﺎواة.
-اﻟﻌﻤﻠﻴﺎت اﻟﻨﺴﺒﻴﺔ.
2-ﺑﺮﻧﺎﻣﺞ ﻣﻘﺎرﻧﺔ ﺑﻴﻦ رﻗﻤﻴﻦ ﺻﺤﻴﺤﻴﻦ.
ﺑﺴﻢ اﷲ ﻧﺒﺪأ :
)1ﻋﻤﻠﻴﺎت اﺗﺨﺎذ اﻟﻘﺮار :
ﻋﺎدة ً ﺗﺴﺘﺨﺪم هﺬﻩ اﻟﻌﻤﻠﻴﺎت ﻓﻲ ﺗﺮآﻴﺒﺔ ، ifﺣﻴﺚ ﺗﺴﻤﺢ
ﻟﻠﺒﺮﻧﺎﻣﺞ أن ﻳﻘﺮر هﻞ ﻧﺎﺗﺞ اﻟﺸﺮط TrueأمFalse .
إذا آﺎن ﻧﺎﺗﺞ اﻟﺸﺮط Trueﻓﺈن اﻟﺠﻤﻞ ﻓﻲ ﺟﺴﻢ ﺗﺮآﻴﺒﺔ if
ﺳﻮف ﻳﻨﻔﺬ ،وإذا آﺎن ﻧﺎﺗﺞ اﻟﺸﺮط falseﻓﻠﻦ ﻳﻨﻔﺬ ﺷﻲء .
42
C#
)If ( x > 1
{
;) Console.Write( x
}
أي إذا آﺎﻧﺖ ﻗﻴﻤﺔ اﻟﻤﺘﻐﻴﺮ xأآﺒﺮ ﻣﻦ (True) 1ﻗﻢ ﺑﻄﺒﺎﻋﺘﻪ
وإﻻ ﻓﻼ ﺗﻄﺒﻊ ﺷﻲء ،واﻟﺠﺪول اﻟﺘﺎﻟﻲ ﻳﻮﺿﺢ ﻋﻤﻠﻴﺎت
اﻟﻤﺴﺎواة واﻟﻌﻤﻠﻴﺎت اﻟﻨﺴﺒﻴﺔ .
اﻟﻌﻤﻠﻴﺎت اﻟﻨﺴﺒﻴﺔ ﻟﻬﺎ ﻧﻔﺲ ﻣﺴﺘﻮى اﻷوﻟﻮﻳﺔ ﻓﻲ اﻟﺘﻨﻔﻴﺬ
ﻟﺬا ﻓﻌﻨﺪ ﺗﻌﺪدهﺎ ﻳﺘﻢ اﻟﺘﻨﻔﻴﺬ ﻣﻦ اﻟﻴﺴﺎر إﻟﻰ اﻟﻴﻤﻴﻦ ،
43
وﻋﻤﻠﻴﺎت اﻟﻤﺴﺎواة أﻳﻀﺎ ً ﻟﻬﺎ ﻧﻔﺲ ﻣﺴﺘﻮى اﻷوﻟﻮﻳﺔ إﻻ ً
أﻧﻬﺎ أﻗﻞ ﻣﻦ اﻟﻌﻤﻠﻴﺎت اﻟﻨﺴﺒﻴﺔ آﻤﺎ هﻮ ﻣﻮﺿﺢ ﻓﻲ اﻟﺸﻜﻞ
اﻟﺘﺎﻟﻲ:
ﻣﻼﺣﻈﺔ :
1-اﻟﻌﻤﻠﻴﺎت == >= ، <= ،!= ،ﻳﺠﺐ أﻻّ ﻳﻜﻮن ﺑﻴﻦ
اﻹﺷﺎرﺗﻴﻦ ﻓﺮاغ )= =( ،وإﺷﺎرة = ﻳﺠﺐ أن ﺗﻜﻮن ﻋﻠﻰ
ﻳﻤﻴﻦ اﻹﺷﺎرة اﻷﺧﺮى( <=) .
2-ﻳﺠﺐ أﻻّ ﺗﺨﻠﻂ ﺑﻴﻦ ﻣﺴﺎواة اﻟﻤﻘﺎرﻧﺔ )==( وﻣﺴﺎواة
اﻹﺳﻨﺎد(=) .
ﻣﺴﺎواة اﻟﻤﻘﺎرﻧﺔ )==( ﺗﻌﻨﻲ ﻗﺎرن ﺑﻴﻦ اﻟﻘﻴﻤﺘﻴﻦ ﻋﻠﻰ
ﻃﺮﻓﺎ اﻟﻤﺴﺎواة هﻞ هﻤﺎ ﻧﻔﺲ اﻟﻘﻴﻤﺔ أم ﻻ .
وﻣﺴﺎواة اﻹﺳﻨﺎد )=( ﺗﻌﻨﻲ أﻋﻄﻲ اﻟﻘﻴﻤﺔ ﻓﻲ اﻟﻄﺮف
اﻷﻳﻤﻦ ﻟﻠﻤﺴﺎواة ﻟﻠﻤﺘﻐﻴﺮ ﻓﻲ اﻟﻄﺮف اﻷﻳﺴﺮ.
)2ﺑﺮﻧﺎﻣﺞ ﻣﻘﺎرﻧﺔ ﺑﻴﻦ رﻗﻤﻴﻦ ﺻﺤﻴﺤﻴﻦ .
وﻇﻴﻔﺔ هﺬا اﻟﺒﺮﻧﺎﻣﺞ اﻟﻤﻘﺎرﻧﺔ ﺑﻴﻦ ﻗﻴﻤﺘﻴﻦ ﺗﻢ إدﺧﺎﻟﻬﻢ ﻣﻦ
ﻗﺒﻞ اﻟﻤﺴﺘﺨﺪم وإﻋﻄﺎء ﻧﺘﺎﺋﺞ اﻟﻤﻘﺎرﻧﺔ.
واﻵن ﻧﺒﺪأ :
ﺑﻢ أﻧﻪ ﻣﻘﺎرﻧﺔ ﺑﻴﻦ رﻗﻤﻴﻦ ﺻﺤﻴﺤﻴﻦ إذا ً ﺳﻨﻌﺮف ﻣﺘﻐﻴﺮﻳﻦ
ﻣﻦ ﻧﻮعinteger .
وﻟﻦ ﻧﺤﺘﺎج ﻟﻤﺘﻐﻴﺮﻳﻦ ﻣﻦ ﻧﻮع stringﻷﻧﻨﺎ ﺳﻨﻀﻊ ﺟﻤﻠﺔ
اﻟﻘﺮاءة داﺧﻞ methodاﻟﺘﺤﻮﻳﻞ ﻣﺒﺎﺷﺮة.
44
C#
int number1 , number2 ;
Console.Write(" Pleas Enter First number
");
number1 = Int32.Parse( Console.ReadLine(
));
Console.Write(" Pleas Enter Second number
");
number2 = Int32.Parse( Console.ReadLine(
));
ﺗﺤﺘﻮيnumber1 , number2 واﻵن أﺻﺒﺤﺖ اﻟﻤﺘﻐﻴﺮات
ﻳﻮﺟﺪ ﺳﺘﺔ ﻣﻦ ﺣﺎﻻت. ﺳﻨﻘﻮم ﺑﻤﻘﺎرﻧﺘﻬﺎ، ﻋﻠﻰ ﻗﻴﻤﺔ
:اﻟﻤﻘﺎرﻧﺔ وهﻲ
number2 .ﻳﺴﺎوي1- number1
number2 .ﻻ ﻳﺴﺎوي2- number1
number2 .أآﺒﺮ ﻣﻦ3- number1
number2 .أﺻﻐﺮ ﻣﻦ4- number1
number2 .أآﺒﺮ أو ﻳﺴﺎوي5- number1
number2 .أﺻﻐﺮ أو ﻳﺴﺎوي6- number1
45
ﻟﺘﻘﻮم ﺑﺎﻟﻤﻘﺎرﻧﺔif ﺳﻨﻘﻮم ﺑﺘﺮﺟﻤﺘﻬﺎ وﺳﻨﺤﺘﺎج إﻟﻰ ﺗﺮآﻴﺒﺔ
.
:وهﺬا هﻮ اﻟﻜﻮد آﺎﻣﻞ
C#
using System;
class Comparison
static void Main(string[] args)
int number1 , number2;
Console.Write(" /n Pleas
Enter First number ");
number1 = Int32.Parse(
Console.ReadLine( ));
Console.Write("/n Pleas
46
Enter Second number ");
number2 = Int32.Parse(
Console.ReadLine( ));
if(number1 == number2)
Console.WriteLine(number1 + " == " +
number2);
if(number1 != number2)
Console.WriteLine(number1 + " != " +
number2);
if(number1 > number2)
Console.WriteLine(number1 + " > " +
number2);
if(number1 < number2)
Console.WriteLine(number1 + " < " +
47
number2);
if(number1 >= number2)
Console.WriteLine(number1 + " >= " +
number2);
if(number1 <= number2)
Console.WriteLine(number1 + " <= " +
number2);
وﺑﻌﺪ أن أﺻﺒﺢ اﻟﺒﺮﻧﺎﻣﺞ آﺎﻣﻼ ً هﺬﻩ ﻧﺘﻴﺠﺔ ﺣﺎﻟﺔ واﺣﺪة ﻓﻘﻂ
number2 : أآﺒﺮ ﻣﻦnumber1 ﺣﻴﺚ
number2 = 100 . ، Number1 = 200
MS-DOS
Pleas Enter First number 200
48
Pleas Enter Second number 100
200 != 100
200 > 100
200 >= 100
Press any key to continue
if/else اﻟﺪرس اﻟﺜﺎﻣﻦ :ﺗﺮآﻴﺒﺔ ifوﺗﺮآﻴﺒﺔ
ﻓﻲ اﻟﺪرس اﻟﺴﺎﺑﻖ ﺗﺤﺪﺛﻨﺎ ﻋﻦ ﻋﻤﻠﻴﺎت اﺗﺨﺎذ اﻟﻘﺮار
وأﻧﻬﺎ ﻋﺎدة ً ﻣﺎ ﺗﺴﺘﺨﺪم ﻓﻲ ﺗﺮآﻴﺒﺔ ifأو ﺗﺮآﻴﺒﺔ if/esle
واﻟﺘﻲ هﻲ ﻣﺤﻮر ﺣﺪﻳﺜﻨﺎ ﻓﻲ هﺬا اﻟﺪرس.
ﺗﺤﺘﻮي ﻟﻐﺔ C#ﻋﻠﻰ ﺛﻼث أﻧﻮاع ﻣﻦ ﺗﺮاآﻴﺐ اﻻﺧﺘﻴﺎر
:
if :ﺗﻘﻮم ﺑﺎﺧﺘﻴﺎر اﻟﺤﺪث وﺗﻨﻔﻴﺬﻩ إذا آﺎن اﻟﺸﺮط ﺻﺤﻴﺢ
) ،(Trueوﺗﻘﻔﺰ ﻋﻨﻪ إذا آﺎن اﻟﺸﺮط ﺧﺎﻃﺊ )،(false
وﺗﺪﻋﻰ ) (single-selection structureأي ﺗﺮآﻴﺒﺔ اﻻﺧﺘﻴﺎر
اﻟﻤﻨﻔﺮد.
if/else :ﺗﻘﻮم ﺑﺎﺧﺘﻴﺎر اﻟﺤﺪث وﺗﻨﻔﻴﺬﻩ إذا آﺎن اﻟﺸﺮط
ﺻﺤﻴﺢ ) ، (Trueوﺗﻨﻔﺬ ﺣﺪث ﺁﺧﺮ إذا آﺎن اﻟﺸﺮط
ﺧﺎﻃﺊ ) ،(falseوﺗﺪﻋﻰ ) (double-selection structureأي
ﺗﺮآﻴﺒﺔ اﻻﺧﺘﻴﺎر اﻟﺜﻨﺎﺋﻴﺔ.
switch :ﺗﻘﻮم ﺑﺎﺧﺘﻴﺎر ﺣﺪث وﺗﻨﻔﻴﺬﻩ ﻣﻦ ﺑﻴﻦ ﻣﺠﻤﻮﻋﺔ ﻣﻦ
اﻷﺣﺪاث ،وﺗﺪﻋﻰ
( multiple-selection structure ) .
وﺛﻼث أﻧﻮاع ﻣﻦ ﺗﺮاآﻴﺐ اﻟﺘﻜﺮار :
While , do/while , for , foreachوﺳﻨﺘﻌﺮف ﻋﻠﻴﻬﻢ
ﻻﺣﻘﺎً .أﻣﺎ ﻓﻲ هﺬا اﻟﺪرس ﻓﺴﻨﺘﻌﺮف ﻋﻠﻰ ﺗﺮآﻴﺒﺔ if
49
وﺗﺮآﻴﺒﺔif/else .
ﻣﻼﺣﻈﺔ :
if , else , switch , While , do/while , for , foreachآﻠﻬﺎ
آﻠﻤﺎت ﻣﺤﺠﻮزة keywords
واﻟﺠﺪول اﻟﺘﺎﻟﻲ ﻳﺬآﺮ ﻗﺎﺋﻤﺔ اﻟﻜﻠﻤﺎت اﻟﻤﺤﺠﻮزة ﻓﻲC# :
!
وﺳﻨﺘﻌﻠﻢ ﻣﻌﻈﻤﻬﺎ إن ﺷﺎء اﷲ ﺧﻼل اﻟﺪروس.
واﻵن ﺑﺴﻢ اﷲ ﻧﺒﺪأ :
1-ﺗﺮآﻴﺒﺔ ifﻟﻼﺧﺘﻴﺎر :
وهﻲ ﻋﺒﺎرة ﻋﻦ اﺣﺘﻤﺎﻟﻴﻦ إﻣﺎ ﺗﻨﻔﻴﺬ ﻣﺎ ﺗﺤﺘﻮي ﻓﻲ ﺣﺎﻟﺔ
trueأو ﻋﺪم اﻟﺘﻨﻔﻴﺬ false .
ﻓﻠﻨﻔﺮض أن درﺟﺔ ﻟﻠﻨﺠﺎح ﻓﻲ اﻣﺘﺤﺎن هﻲ ) 50اﻟﺪرﺟﺔ ﻣﻦ
(100إذا ًَ ﺧﻮارزﻣﻴﺔ اﻟﺘﻌﺒﻴﺮ أو اﻟﻜﻮد اﻟﻮهﻤﻲ
)(pseudocodeﺳﻴﻜﻮن آﻤﺎ ﻳﻠﻲ:
50
if student’s grade is grater than
or equal to 50
”Print “Passed
إذا آﺎﻧﺖ درﺟﺔ اﻟﻄﺎﻟﺐ أآﺒﺮ أو ﺗﺴﺎوي 50ﺳﻴﻄﺒﻊ ﻧﺎﺟﺢ ،
وإذا آﺎﻧﺖ درﺟﺔ اﻟﻄﺎﻟﺐ أﻗﻞ ﻣﻦ 50ﺗﻬﻤﻞ ﺟﻤﻠﺔ ifوﺗﻨﻔﺬ
اﻟﺠﻤﻠﺔ اﻟﺘﺎﻟﻴﺔ ﻟﻬﺎ .
واﻵن ﺳﻨﻘﻮم ﺑﺘﺮﺟﻤﺔ ال pseudocodeإﻟﻰ ﻟﻐﺔ C#ﺣﻴﺚ
ﻳﻔﻬﻤﻬﺎ الCompiler :
C#
if )( studentGrade >= 50
; )“ Console.WriteLine( “ Passed
واﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ ﻳﻮﺿﺢ ﻋﻤﻞ ﺗﺮآﻴﺒﺔ if :
51
2-ﺗﺮآﻴﺒﺔ if/elseﻟﻼﺧﺘﻴﺎر :
وهﻲ أﻳﻀﺎ ً اﺣﺘﻤﺎﻟﻴﻦ ﻟﻜﻦ ﻓﻲ آﻼ اﻟﺤﺎﻟﺘﻴﻦ ﻳﺘﻢ ﺗﻨﻔﻴﺬ
ﺣﺪث ،وهﺬا ﻳﺴﺎﻋﺪ اﻟﻤﺒﺮﻣﺞ ﻋﻠﻰ ﺗﺤﺪﻳﺪ ﺣﺪﺛﻴﻦ ﻣﺨﺘﻠﻔﻴﻦ
ﺑﺎﻻﻋﺘﻤﺎد ﻋﻠﻰ ﻧﺘﺎﺋﺞ اﻟﺸﺮط Trueأم False .
ﻓﻤﺜﻼ ً اﻟﻜﻮد اﻟﻮهﻤﻲ pseudocodeاﻟﺘﺎﻟﻲ:
If student’s grade is greater than
or equal to 50
“ Print “ Passed
Else
“ Print “Failed
ﺳﻴﻄﺒﻊ ﻧﺎﺟﺢ ) (Passedإذا ﺗﺤﻘﻖ اﻟﺸﺮط Trueوهﻮ أن
اﻟﺪرﺟﺔ أآﺒﺮ أو ﻳﺴﺎوي .50
52
وﺳﻴﻄﺒﻊ راﺳﺐ ) (Failedإذا ﻟﻢ ﻳﺘﺤﻘﻖ اﻟﺸﺮط Falseوهﻮ
أن اﻟﺪرﺟﺔ أﺻﻐﺮ ﻣﻦ .50
أي أﻧﻪ ﻻ ﻳﻬﻤﻞ ﺟﻤﻠﺔ ifأﺑﺪا ً وﻻ ﻳﺨﺮج ﻣﻨﻬﺎ ﺣﺘﻰ ﻳﻄﺒﻊ
ﺷﻲء.
واﻵن ﺳﻨﺘﺮﺟﻢ هﺬا ال pseudocodeإﻟﻰ آﻮدC# :
C#
if )(StudentGrade >= 50
; )“ Console.WriteLine( “ Passed
else
; )“ Console.WriteLine( “ Failed
واﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ ﻳﻮﺿﻊ ﻃﺮﻳﻘﺔ ﻋﻤﻞ ﺗﺮآﻴﺒﺔ if/else
اﻻﺧﺘﻴﺎرﻳﺔ:
53
*وهﻨﺎك ﻃﺮﻳﻘﺔ أﺧﺮى ﻻﺳﺘﺨﺪام ﺗﺮآﻴﺒﺔ if/elseوهﻲ ?(
) ،:وﺗﺤﺘﻮي ﻋﻠﻰ ﺛﻼث ﺟﻤﻞ ﺗﻨﻔﻴﺬﻳﺔ:
ﺟﻤﻠﺔ اﻟﺸﺮط ،ﺟﻤﻠﺔ اﻟﺘﻨﻔﻴﺬ اﻷوﻟﻰ ﻓﻲ ﺣﺎﻟﺔ ﺗﺤﻘﻖ
اﻟﺸﺮط ، Trueﺟﻤﻠﺔ اﻟﺘﻨﻔﻴﺬ اﻟﺜﺎﻧﻴﺔ ﻓﻲ ﺣﺎﻟﺔ ﻋﺪم ﺗﺤﻘﻖ
اﻟﺸﺮط ، Falseﻓﺈذا أﻋﺪﻧﺎ ﺻﻴﺎﻏﺔ ﺟﻤﻠﺔ ifاﻟﺴﺎﺑﻘﺔ ﺗﺼﺒﺢ
آﺎﻟﺘﺎﻟﻲ:
C#
=> Console.WriteLine( StudentGrade
“ 50 ? “ Passed : ;)“ “ Failed
*ﻳﻤﻜﻦ أﻳﻀﺎ ً اﺳﺘﺨﺪام ﺗﺮآﻴﺒﺔ if/elseﺗﺮآﻴﺒﺔ if/else
ﻟﺘﻨﻔﻴﺬ ﺟﻤﻠﺔ ﻣﻦ ﻋﺪد ﻣﻦ اﻟﺠﻤﻞ ،ﻓﻤﺜﻼ ً إذا ﻓﻬﻤﻨﺎ اﻟﻜﻮد
اﻟﻮهﻤﻲ pseudocodeاﻟﺘﺎﻟﻲ:
If student’s grade is greater than or
equal to 90
“ Print “ A
Else
If student’s grade is greater
than or equal to 80
“ Print “ B
54
Else
If student’s grade is
greater than or equal to 70
Print “ C “
Else
If student’s grade is
greater than or equal to 60
Print “ D “
Else
If student’s
grade is greater than or equal to 50
Print “
E “
Else
Print “
F “
C# :وﺣﻮﻟﻨﺎﻩ إﻟﻰ آﻮد
C#
55
if (studentGrade >= 90)
Console.WriteLine(" A ");
else
if (studentGrade >= 80)
Console.WriteLine(" B ");
else
if (studentGrade >= 70)
Console.WriteLine(" C
");
else
if (studentGrade >=
60)
Console.WriteLine(" D ");
else
if
(studentGrade >= 50)
Console.WriteLine(" E ");
56
else
Console.WriteLine(" F ");
.ﺳﻴﻘﻮم ﺑﺘﻨﻔﻴﺬ ﺟﻤﻠﺔ واﺣﺪة ﻓﻘﻂ ﻻ ﻣﺤﺎﻟﺔ
:وﻳﻤﻜﻦ آﺘﺎﺑﺔ اﻟﻜﻮد ﺑﺸﻜﻞ أﺑﺴﻂ
C#
if (studentGrade >= 90)
Console.WriteLine(" A ");
else if (studentGrade >= 80)
Console.WriteLine(" B ");
else if (studentGrade >= 70)
Console.WriteLine(" C ");
else if (studentGrade >= 60)
Console.WriteLine(" D ");
else if (studentGrade >= 50)
Console.WriteLine(" E ");
else
57
;)" Console.WriteLine(" F
وآﻼهﻤﺎ ﻳﻌﻄﻲ ﻧﻔﺲ اﻟﻨﺘﺎﺋﺞ.
ﻣﻼﺣﻈﺔ :
*آﻞ ﺟﻤﻠﺔ elseﻣﺮﺗﺒﻄﺔ ﺑﺠﻤﻠﺔ ifﺳﺎﺑﻘﺔ ﻟﻬﺎ.
*إذا اﺣﺘﻮت أي ﺗﺮآﻴﺒﺔ ﻋﻠﻰ أآﺜﺮ ﻣﻦ ﺟﻤﻠﺔ ﺑﺪاﺧﻠﻬﺎ ﻳﺠﺐ
اﺳﺘﺨﺪام أﻗﻮاس اﻟﻤﺠﻤﻮﻋﺔ ) } { ( ،أﻣﺎ إذا اﺣﺘﻮت ﻋﻠﻰ
ﺗﺮآﻴﺒﺔ أﺧﺮى ﻓﻘﻂ ﻓﻠﻴﺲ ﻣﻦ اﻟﻀﺮوري اﺳﺘﺨﺪام أﻗﻮاس
اﻟﻤﺠﻤﻮﻋﺔ.
C#
if ) ( x > 5
if ) ( y > 5
Console.WriteLine( “ x
; ) “ and y are > 5
else
Console.WriteLine( “ x is
; ) “ <= 5
ﻓﻲ هﺬﻩ اﻟﺤﺎﻟﺔ elseﺗﻌﺘﺒﺮ ﺗﺎﺑﻌﺔ ﻟﻞ ifاﻟﺜﺎﻧﻴﺔ أي ﺳﻴﺘﻢ
ﺗﻨﻔﻴﺬ اﻟﺠﻤﻠﺔ اﻟﺜﺎﻧﻴﺔ x is <= 5ﻓﻲ ﺣﺎل y <= 5وﻗﻴﻤﺔ x
، > 5أم إذا آﺎﻧﺖ x <= 5ﻓﺴﺘﻬﻤﻞ هﺬﻩ اﻟﺠﻤﻠﺔ آﻠﻬﺎ.
58
إذا أردﻧﺎ ﺟﻌﻞ elseﺗﺎﺑﻌﺔ ﻟﻞ ifاﻷوﻟﻰ ﻳﺠﺐ وﺿﻊ ﻣﺎ داﺧﻞ
ال ifﻓﻲ أﻗﻮاس آﻤﺎ ﻳﻠﻲ:
C#
if ) ( x > 5
{
if ) ( y > 5
Console.WriteLine( “ x
; ) “ and y are > 5
}
else
“ Console.WriteLine( “ x is <= 5
; )
واﻵن ﺗﻨﻔﺬ ﻣﺠﻤﻮع اﻟﺠﻤﻞ اﻷوﻟﻰ ﻓﻲ ﺣﺎل x > 5وﺟﻤﻠﺔ
elseﻓﻲ ﺣﺎلx <= 5 .
59
اﻟﺪرس اﻟﺘﺎﺳﻊ :ﺗﺮآﻴﺒﺔ whileوأﺷﻜﺎل اﺳﺘﺨﺪاﻣﻬﺎ
وﻓﻲ هﺬا اﻟﺪرس إن ﺷﺎء اﷲ ﺳﻨﺸﺮح ﺗﺮآﻴﺒﺔ while
ﻟﻠﺘﻜﺮار:
3-ﺗﺮآﻴﺒﺔ whileاﻟﺘﻜﺮارﻳﺔ .
ﺗﺮآﻴﺒﺔ اﻟﺘﻜﺮار ﺗﺴﻤﺢ ﻟﻠﻤﺒﺮﻣﺞ ﺑﺘﺤﺪﻳﺪ اﻟﺤﺪث اﻟﻤﻄﻠﻮب
ﺗﻜﺮارﻩ ﻃﺎﻟﻤﺎ اﻟﺸﺮط ﻣﺘﺤﻘﻖ (True).
ﻣﺜﺎل :ﻻﺣﻆ هﺬا اﻟﺠﺰء ﻣﻦ ﺑﺮﻧﺎﻣﺞ ،ﻳﺠﺪ أول ﻗﻮﻩ ﻟﻠﺮﻗﻢ 2
ﺣﻴﺚ ﻳﻜﻮن ﻧﺎﺗﺠﻬﺎ أآﺒﺮ ﻣﻦ .1000
واﻵن ﺳﻨﻔﺮض ﻣﺘﻐﻴﺮ productﻣﻦ ﻧﻮع integer .ﺛﻢ ﻧﻄﺒﻖ
ال ( pseudocodeاﻟﻜﻮد اﻟﻮهﻤﻲ ( اﻟﺘﺎﻟﻲ:
While product less than or equal 1000
product equal 2 multiplied
by product
آﻤﺎ ﻳﻠﻲ:
C#
;int product = 2
60
)while ( product <= 1000
;product = 2 * product
واﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ ﻳﻮﺿﺢ أﺳﻠﻮب ﻋﻤﻞ whileﻓﻲ هﺬا
اﻟﺒﺮﻧﺎﻣﺞ:
ﺳﺘﻈﻞ هﺬﻩ ال( loopاﻟﺪارة( ﺗﻌﻤﻞ ﺣﺘﻰ ﻳﻔﺸﻞ
اﻟﺸﺮط أي إذا أﺻﺒﺤﺖ ﻗﻴﻤﺔ ال productأآﺒﺮ أو
ﺗﺴﺎوي 1000ﻓﻌﻨﺪهﺎ ﻳﺘﻮﻗﻒ ﻋﻦ اﻟﻌﻤﻞ .وهﺬﻩ
هﻲ ﻧﺘﺎﺋﺞ اﻟﺒﺮﻧﺎﻣﺞ آﺎﻣﻼ ً:
MS-DOS
61
16
32
64
128
256
512
1024
The first power of 2 which
it's product grater than
1000 is 10
Press any key to continue
62
ﻣﻦ 1000هﻮ 10
ﻣﻼﺣﻈﺔ :
*ﻳﺠﺐ اﻻﻧﺘﺒﺎﻩ إﻟﻰ ﺷﺮط اﻟﺠﻤﻠﺔ اﻟﺸﺮﻃﻴﺔ ﻷن
ﺑﻌﺾ اﻷﺧﻄﺎء ﻗﺪ ﺗﺆدي إﻟﻰ ( infinite loopداﺋﺮة
ﻏﻴﺮ ﻣﻨﺘﻬﻴﺔ ( ﺑﻤﻌﻨﻰ ﺗﻜﺮار ﻏﻴﺮ ﻣﻨﺘﻬﻰ.
*أول ﺣﺮف ﻣﻦ أي آﻠﻤﺔ ﻣﺤﺠﻮزة ﻳﺠﺐ أن ﻳﻜﻮن
( Lowercaseﺣﺮف ﺻﻐﻴﺮ ) whileﻓﺈذا ﺣﺪث ﺧﻄﺄ
وآﺘﺒﺖ( Uppercaseﺣﺮف آﺒﻴﺮ ) Whileﻳﺤﺪث
syntax errorأي ﺧﻄﺄ ﻗﻮاﻋﺪي.
(ﺑﻤﺎ أن اﻟﻜﻠﻤﺔ اﻟﻤﺤﺠﻮزة ﺗﺤﻮﻟﺖ إﻟﻰ اﻟﻠﻮن
اﻷزرق ﻓﻤﻌﻨﺎﻩ أن اﻟﻜﻠﻤﺔ ﺻﺤﻴﺤﺔ).
وهﺬا هﻮ اﻟﺒﺮﻧﺎﻣﺞ :ﻧﺤﻤﻴﻞ
*أﺷﻜﺎل اﺳﺘﺨﺪام whileاﻟﺘﻜﺮارﻳﺔ :
1-اﺳﺘﺨﺪام اﻟﺘﻜﺮار آﻌﺪاد
2-ﻋﺪد اﻟﺘﻜﺮار ﻳﻌﺘﻤﺪ ﻋﻠﻰ ﻗﻴﻤﺔ ﻣﺪﺧﻠﺔ.
3-اﻟﺘﺮاآﻴﺐ اﻟﻤﺘﺪاﺧﻠﺔ .
1-اﺳﺘﺨﺪام اﻟﺘﻜﺮار آﻌﺪاد :
ﺳﻨﻘﻮم اﻵن ﺑﺈﻧﺸﺎء Classوﻧﺴﻤﻴﻪ Average1 ,
وهﻮ ﺑﺮﻧﺎﻣﺞ ﻳﻘﻮم ﺑﺠﻤﻊ درﺟﺎت اﻟﻄﻼب اﻟﻤﺪﺧﻠﺔ
وﺗﻘﺴﻴﻤﻬﺎ ﻋﻠﻰ ﻋﺪدهﻢ وﺳﻴﻜﻮن هﻨﺎ ﻋﺪد
اﻟﻄﻼب ﻣﺤﺪد وهﻮ .10
وال( pseudocodeاﻟﻜﻮد اﻟﻮهﻤﻲ ( اﻟﺘﺎﻟﻲ ﻳﻮﺿﺢ
63
اﻟﺨﻮارزﻣﻴﺔ( اﻟﺘﻲ ﺳﻨﺘﺘﺒﻌﻬﺎ أﺛﻨﺎءAlgorithm (ال
:اﻟﺒﺮﻣﺠﺔ
set total to zero
set grade counter to one
While grade counter is less
than or equal to ten
Input the next grade
Add the grade into
the total
Add one to the grade
counter
64
Set class average to the total
divided by ten
Print t he class average
واﻵن ﺳﻨﺒﺪأ ﺑﻜﺘﺎﺑﺔ آﻮد#C :
أوﻻً ﺳﻨﻘﻮم ﺑﺘﻌﺮﻳﻒ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﻤﺘﻐﻴﺮات
وﻟﻨﻔﺮض أن اﻟﺪرﺟﺎت آﻠﻬﺎ ﺻﺤﻴﺤﺔ(integer) :
C#
int total = 0 , ﳎﻤﻮع //
اﻟﺪرﺟﺎت
ﻋﺪد gradeCounter = 1,//
اﻟﺪرﺟﺎت اﳌﺪﺧﻠﺔ
gradeValue, ﻗﻴﻤﺔ //
اﻟﺪرﺟﺔ
;average ﻣﻌﺪل //
65
اﻟﺪرﺟﺎت
ﻣﻼﺣﻈﺔ :
ﻳﺠﺐ إﻋﻄﺎء ﻗﻴﻢ ﺑﺪاﺋﻴﺔ ﻷي ﻣﺘﻐﻴﺮ ﻳﺘﻢ اﻟﺰﻳﺎدة
ﻋﻠﻴﻪ أو اﻟﻄﺮح ﻣﻨﻪ أو أي ﻋﻤﻠﻴﺔ ﺣﺴﺎﺑﻴﺔ ﻓﻲ
آﻞ ( loopآﻘﻴﻤﺔ productﻓﻲ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ (
،ﻷﻧﻪ ﻋﻨﺪﻣﺎ ﻳﺴﺘﻘﺒﻞ ﻗﻴﻤﺔ ﻻ ﻳﻌﺮف ﻷي ﻗﻴﻤﺔ
ﺳﻴﺰﻳﺪهﺎ أو ﻣﻦ أي ﻗﻴﻤﺔ ﺳﻴﻄﺮﺣﻬﺎ إﻻ إذا آﺎن
ﻳﻤﻠﻚ ﻗﻴﻤﺔ ﺑﺪاﺋﻴﺔ .
واﻵن ﺳﻨﻄﺒﻖ ﺟﻤﻠﺔwhile :
C#
//loop 10 times ﺗﻜﺮار 10
ﻣﺮات
)while ( gradeCounter <= 10
{
66
// ﻟﻠﺘﻮﺿﻴﺢ ﻟﻠﻤﺴﺘﺨﺪم
ﻣﺎ اﳌﻄﻠﻮب
Console.Write( " Enter
integer grade: ");
// integer ﻗﺮاءة
اﳌﺪﺧﻞ وﲢﻮﻳﻠﻪ إﱃ
//gradeValue وﺧﺰﻧﺔ ﰲ
اﳌﺘﻐﲑ
gradeValue =
Int32.Parse(Console.ReadLine());
//total إﱃgradeValue
إﺿﺎﻓﺔ ﻗﻴﻤﺔ اﳌﺘﻐﲑ
total = total +
gradeValue;
//gradeCounter إﺿﺎﻓﺔ
ﻟﻠﻌﺪاد1 ﻗﻴﻤﺔ
gradeCounter =
67
;gradeCounter + 1
}
ﻓﻲ آﻞ دورة ﺳﻴﺘﻢ إﺿﺎﻓﺔ اﻟﻘﻴﻤﺔ اﻟﻤﺪﺧﻠﺔ إﻟﻰ
totalوإﺿﺎﻓﺔ 1ﻟﻠﻌﺪاد ﻟﻴﺤﺴﺐ ﻋﺪد ﻣﺮات
اﻹﺿﺎﻓﺔ.
واﻵن ﺳﻴﺘﻢ ﺣﺴﺎب اﻟﻤﻌﺪل وﻣﻦ ﺛﻢ ﻃﺒﺎﻋﺘﻪ:
C#
ﻗﺴﻤﺔ ﺻﺤﻴﺤﺔ ﺠﻤﻟﻤﻮع اﻟﻘﻴﻢ//
average = ; total / 10
ﻃﺒﺎﻋﺔ ﻣﻌﺪل ﳎﻤﻮع اﻟﺪرﺟﺎت //
Console.WriteLine(" \nClass
;)Average is {0} " , average
68
وهﺬا هﻮ اﻟﺒﺮﻧﺎﻣﺞ :ﺗﺤﻤﻴﻞ
2-ﻋﺪد اﻟﺘﻜﺮار ﻳﻌﺘﻤﺪ ﻋﻠﻰ ﻗﻴﻤﺔ ﻣﺪﺧﻠﺔ :
ﺳﻨﻘﻮم ﺑﻜﺘﺎﺑﺔ ﻧﻔﺲ اﻟﺒﺮﻧﺎﻣﺞ اﻟﺴﺎﺑﻖ ﻟﻜﻦ ﺑﺘﻄﻮر
أآﺜﺮ ﻗﻠﻴﻼ ً .ﻷن ﻋﺪد اﻟﺪرﺟﺎت اﻟﻤﺪﺧﻠﺔ ﺳﺘﻜﻮن
ﻏﻴﺮ ﻣﺤﺪدﻩ ﺑﻞ ﺗﻌﺘﻤﺪ ﻋﻠﻰ اﻟﻤﺴﺘﺨﺪم ﺣﻴﺚ
ﻳﻘﻮم ﺑﺈدﺧﺎل اﻟﺪرﺟﺎت ﺑﺎﻟﻌﺪد اﻟﺬي ﻳﺮﻳﺪ وﻋﻨﺪ
اﻻﻧﺘﻬﺎء ﻳُﺪﺧِﻞ ﻗﻴﻤﺔ
ﺗﺪﻋﻰ( sentinel Valueاﻟﻘﻴﻤﺔ اﻟﺤﺎرس أو ﻗﻴﻤﺔ
اﻟﺘﻮﻗﻒ( وهﻲ ﻗﻴﻤﺔ زاﺋﻔﺔ ﻻ ﺗﻨﺘﻤﻲ إﻟﻰ ﻣﺠﺎل
اﻟﻘﻴﻤﺔ اﻟﻤﺪﺧﻠﺔ .ﻓﻤﺜﻼ ً ﻗﻴﻢ اﻟﺪرﺟﺎت ﻣﺤﺼﻮرة
ﺑﻴﻦ ، 0 – 100ﻟﺬا ﻳﺠﺐ اﺧﺘﻴﺎر هﺬﻩ اﻟﻘﻴﻤﺔ ﺧﺎرج
هﺬا اﻟﻤﺠﺎل وﺳﻨﻔﺮﺿﻬﺎ ﻓﻲ هﺬا اﻟﺒﺮﻧﺎﻣﺞ -1ﻷﻧﻪ
ﻣﻦ ﻏﻴﺮ اﻟﻤﻤﻜﻦ أن ﺗﻜﻮن درﺟﺔ ﺑﺎﻟﺴﺎﻟﺐ.
واﻵن ﺳﻨﻔﻬﻢ ال pseudocodeاﻟﺘﺎﻟﻲ ﺛﻢ ﻧﺘﺮﺟﻤﻪ
إﻟﻰ#C code :
Initialize total to zero
Initialize counter to zero
69
Input the first grade
(possibly the sentinel)
While the user has not as yet
entered the sentinel
Add this grade into
the running total
Add one to the grade
counter
Input the next grade
(possibly the sentinel )
If the counter is not equal
70
to zero
Set the average to the
total divided by the counter
Print the average
Else
Print “No grades were
“ entered
أوﻻ ً ﺳﻨﻘﻮم ﺑﺘﻌﺮﻳﻒ ﻣﺘﻐﻴﺮ totalوإﻋﻄﺎؤﻩ ﻗﻴﻤﺔ
ﺑﺪاﺋﻴﺔ ، 0ﻷﻧﻪ ﻋﻨﺪ إدﺧﺎل ﻗﻴﻤﺔ درﺟﺔ ﺳﻴﺠﻤﻌﻬﺎ
ﻣﻊ اﻟﺼﻔﺮ ﺣﻴﺚ ﻻ ﻳﺆﺛﺮ ﻋﻠﻰ هﺬﻩ اﻟﻘﻴﻤﺔ وﻳﺘﻢ
ﺗﺨﺰﻳﻨﻬﺎ .
وأﻳﻀﺎ ً ﺳﻨﻌﺮف ﻣﺘﻐﻴﺮ counterوﻧﻌﻄﻴﻪ ﻗﻴﻤﺔ
ﺑﺪاﺋﻴﺔ 0أي أن ﻋﺪد اﻟﺪرﺟﺎت اﻟﻤﺪﺧﻠﺔ ﺗﺴﺎوي 0
ﺣﺘﻰ اﻵن.
واﻵن ﻗﺮاءة أول ﻗﻴﻤﺔ ﻣﺪﺧﻠﺔ وﻳﻤﻜﻦ أن ﺗﻜﻮن
( sentinel valueﻗﻴﻤﺔ اﻟﺘﻮﻗﻒ ) 1- .
71
ﺗﺴﺘﻘﺒﻞ دارة while (while
)loopاﻟﻘﻴﻤﺔ اﳌﺪﺧﻠﺔ إﻟﻴﻬﺎ
وﺗﻘﻮم ﺑﺎﺧﺘﺒﺎرهﺎ:
إذا آﺎﻧﺖ ﺗﺴﺎوي -1
ُﻬﻤﻞ ﲨﻠﺔ whileوﻳﻨﺘﻘﻞ
ﺳﺘـ
if . اﻟﺘﻨﻔﻴﺬ إﱃ ﲨﻠﺔ
اﻟﻌﺪاد. ﲣﺘﱪ ﻗﻴﻤﺔ
إذا آﺎن counter
!= 0
ﺳﻴﺤﺴﺐ
اﳌﻌﺪل ﺑﻘﺴﻤﺔ ال totalﻋﻠﻰ
counterوﲣﺰﻳﻨﻬﺎ
ﺑﺎﳌﺘﻐﲑ
Averageﰒ ﻃﺒﺎﻋﺘﻬﺎ
إذا آﺎن counter
== 0
72
هﺬا ﻳﻌﲏ
أﻧﻪ ﱂ ﻳﺘﻢ إدﺧﺎل أي ﻗﻴﻤﺔ
ﻓﻴﻨﺘﻘﻞ اﻟﺘﻨﻔﻴﺬ إﱃ
else
وﻳﻄﺒﻊ
“No
“ grades were entered
إذا آﺎﻧﺖ ﻻ ﺗﺴﺎوي - 1
ﻓﺴﻴﻨﻔﺬ اﻟﺘﻌﺎﻟﻴﻢ اﻟﱵ ﳛﺘﻮﻳﻬﺎ
ﺣﻴﺚ ﻳﻘﻮم
ﺑﺈﺿﺎﻓﺔ هﺬﻩ اﻟﻘﻴﻤﺔ إﱃ ، total
ﰒ إﺿﺎﻓﺔ
ﻟﻘﻴﻤﺔcounter 1
ﰒ
اﻻﺳﺘﻌﺪاد ﻟﻘﺮاءة ﻗﻴﻤﺔ أﺧﺮى.
ﻣﻼﺣﻈﺔ :
73
ﻓﻲ هﺬا اﻟﺒﺮﻧﺎﻣﺞ ﻋﺮﻓﻨﺎ اﻟﻤﺘﻐﻴﺮ Averageﻣﻦ ﻧﻮع
doubleﻷﻧﻨﺎ ﺳﻨﺴﻨﺪ إﻟﻴﻪ ﻗﻴﻤﺔ ﺣﻘﻴﻘﻴﺔ وﻟﻴﺲ
ﺻﺤﻴﺤﺔ أي ﺑﻜﺴﻮر .وﻟﻜﻦ اﻟﻘﻴﻤﺔ اﻟﻨﺎﺗﺠﺔ
ﺻﺤﻴﺤﺔ ﻷن totalﻣﻌﺮﻓﺔ intو counterأﻳﻀﺎ ً
ﻣﻌﺮﻓﺔ intﻟﺬا ﻋﻨﺪ ﻋﻤﻠﻴﻪ اﻟﻘﺴﻤﺔ ﺣﻮﻟﻨﺎ total
إﻟﻰ doubleﺣﺘﻰ ﺗﻜﻮن اﻟﻘﻴﻤﺔ اﻟﻨﺎﺗﺠﺔ ﺑﻜﺴﻮر .
واﻵن ﺳﻨﻘﻮم ﺑﻜﺘﺎﺑﺔ هﺬا اﻟﺒﺮﻧﺎﻣﺞ ﺑﻠﻐﺔ#C .
C#
int total = 0, ﳎﻤﻮع //
اﻟﺪرﺟﺎت
gradeCounter = 0, // ﻋﺪد
اﻟﺪرﺟﺎت اﳌﺪﺧﻠﺔ
;gradeValue // ﻗﻴﻤﺔ
اﻟﺪرﺟﺔ
74
double average; // ﻣﻌﺪل
اﻟﺪرﺟﺎت
//integer ﲨﻠﺔ اﻟﺒﺪاﻳﺔ وﲨﻠﺔ
اﻟﺘﺤﻮﻳﻞ إﱃ
Console.Write("Enter Integer
Grade, -1 to Quit: ");
gradeValue = Int32.Parse(
Console.ReadLine());
// -1 ﻣﺴﺘﻤﺮ ﺣﱴ إدﺧﺎل رﻗﻢloop
while ( gradeValue != -1)
//total إﺿﺎﻓﺔ اﻟﻘﻴﻤﺔ
إﱃ
total = total +
gradeValue;
75
//gradeCounter إﺿﺎﻓﺔ
ﻟﻠﻌﺪاد1
gradeCounter =
gradeCounter + 1;
// ﲨﻠﺔ اﻟﺘﺬآﲑ
ﻟﻠﻤﺴﺘﺨﺪم وﲨﻠﺔ اﻟﺘﺤﻮﻳﻞ
Console.Write("Enter Integer
Grade, -1 to Quit: ");
gradeValue =
Int32.Parse(
Console.ReadLine());
} // end while
if ( gradeCounter != 0)
// ﺣﺴﺎب اﳌﻌﺪل ﰒ
ﻃﺒﺎﻋﺘﻪ
76
average = (double
;) total / gradeCounter
Console.WriteLine("\nClass
;)average is {0} :", average
}
else
Console.WriteLine("\nNo
;)"grades were entered .
اﻟﺪرس اﻟﻌﺎﺷﺮ :اﻟﺸﻜﻞ اﻟﺜﺎﻟﺚ (3اﻟﺘﺮاآﻴﺐ اﻟﻤﺘﺪاﺧﻠﻪ وﺗﺮآﻴﺒﺔ
do/while
وﻓﻲ هﺬا اﻟﺪرس ﺳﻨﻜﻤﻞ إن ﺷﺎء اﷲ اﻟﺸﻜﻞ اﻟﺜﺎﻟﺚ ،وﺑﻌﺾ
اﻹﺧﺘﺼﺎرات ﻟﻠﻌﻤﻠﻴﺎت اﻟﺤﺴﺎﺑﻴﺔ:
3-اﻟﺘﺮاآﻴﺐ اﻟﻤﺘﺪاﺧﻠﺔ :
وهﻲ ﻋﺒﺎرة ﻋﻦ اﺳﺘﺨﺪام ﺗﺮآﻴﺒﺔ داﺧﻞ ﺗﺮآﻴﺒﺔ .واﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ
ﻳﻮﺿﺢ اﻟﻔﻜﺮة.
77
.هﻮ ﺑﺮﻧﺎﻣﺞ ﻳﺤﺴﺐ ﻋﺪد اﻟﺮﺳﻮب وﻋﺪد اﻟﻨﺠﺎح ﻟﻌﺸﺮة ﻃﻼب
C# : اﻟﺘﺎﻟﻲ ﺛﻢ ﻧﺘﺮﺟﻤﻪ إﻟﻰ ﻟﻐﺔpseudocode دﻋﻨﺎ ﻧﻔﻬﻢ ال
Initialize passes to zero
Initialize failures to zero
Initialize student to one
While student counter is less than or
equal to ten
Input the next exam result
If the student passed
Add one to passes
Else
Add one to failures
Add one to student counter
78
Print the number of passes
Print the number of failures
If more than eight student passed
Print “ Raise tuition “
أوﻻ ﺳﻨﻌﺮف ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﻤﺘﻐﻴﺮات وإﻋﻄﺎؤهﺎ ﻗﻴﻢ ﺑﺪاﺋﻴﺔ ﻷﻧﻬﺎ
) ﻋﺪد اﻟﺮﺳﻮبfailures ( ، ) ﻋﺪد اﻟﻨﺠﺎح. passes (آﻠﻬﺎ ﻋﺪادات
) . ﻋﺪد اﻟﻄﻼبstudent ( ،
C#
int passes = 0,
failures = 0,
student = 1,
result;
79
ﻣﻼﺣﻈﺔ :
وﺿﻌﻨﺎ اﻟﻘﻴﻤﺔ اﻟﺒﺪاﺋﻴﺔ ﻟﻞ student = 1ﻷن ﺷﺮط ال while
ﺳﻴﻜﻮن student <= 10ﺣﻴﺚ ﻳﺒﺪأ ﻣﻦ 1وﻳﻨﺘﻬﻲ ﻋﻨﺪ 10آﻤﺎ
ﻳﻠﻲ:
C#
)while (student <= 10
ﺳﺘﻌﺪ ﺣﱴ 10وإذا ﺑﺪأﻧﺎهﺎ ﻣﻦ 0ﳚﺐ //while
ﻗﻴﻤﺔ studentوﺿﻊ ﺷﺮط ال
)while (student < 10
ﻣﻦ ﻏﻴﺮ = وأﻳﻀﺎ ً ﺳﺘﻌﺪ ﺣﺘﻰ 10ﻟﺬا ﻻ ﻓﺮق ﺑﻴﻨﻬﻢ.
واﻵن ﺟﻤﻠﺔ whileآﺎﻣﻠﺔ:
C#
)while (student <= 10
80
Console.Write("Enter result (1=pass,
2=fail): ");
result =
Int32.Parse(Console.ReadLine());
if (result == 1)
passes = passes + 1;
else
failures = failures + 1;
student = student + 1;
ﻧﻔﺬ10 أﻗﻞ أو ﻳﺴﺎويstudent ﻃﺎﳌﺎ اﻟﻌﺪاد
:ﻣﺎ ﻳﻠﻲ
إذا آﺎن: اﻃﺒﻊ اﳉﻤﻠﺔ اﻟﺘﺎﻟﻴﺔ
وإذا آﺎن1 اﻟﻄﺎﻟﺐ ﻧﺎﺟﺢ أدﺧﻞ اﻟﺮﻗﻢ
2 راﺳﺐ أدﺧﻞ اﻟﺮﻗﻢ
81
ﺣﻮل اﻟﻘﻴﻤﺔ اﳌﺪﺧﻠﺔ إﱃ ﻋﺪد ﺻﺤﻴﺢ
)(integerوﺧﺰﺎ ﰲ اﳌﺘﻐﲑresult
ﻗﺎرن :إذا آﺎﻧﺖ ﻗﻴﻤﺔ اﳌﺪﺧﻞ =
1
أﺿﻒ 1ﻟﻌﺪاد
اﻟﻨﺎﺟﺤﲔpasses + 1
ﻏﲑ ذﻟﻚ
أﺿﻒ 1ﻟﻌﺪاد اﻟﺮاﺳﺒﲔ
failures + 1
ﻗﺒﻞ اﳋﺮوج ﻣﻦ دارة whileأﺿﻒ 1
ﻟﻌﺪاد اﻟﻄﻠﺒﺔstudent
}
C#
ﻹﺿﺎﻓﺔ ﺳﻄﺮ ﻓﺎرغ //
;)(Console.WriteLine
ﻟﻄﺒﺎﻋﺔ ﻋﺪد اﻟﻨﺎﺟﺤﲔ //
82
;)Console.WriteLine("Passed: " + passes
ﻟﻄﺒﺎﻋﺔ ﻋﺪد اﻟﺮاﺳﺒﲔ //
;)Console.WriteLine("Failed: " + failures
ﻟﻄﺒﺎﻋﺔ ﲨﻠﺔ ﺛﻨﺎء ﻋﻠﻰ ﻣﺴﺘﻮى اﻟﺘﺪرﻳﺲ //
إذا آﺎن ﻋﺪد اﻟﻨﺎﺟﺤﲔ أآﺜﺮ ﻣﻦ //.8
)if (passes > 8
;)"Console.WriteLine("Raise Tuition\n
*ﺗﺮآﻴﺒﺔ do/while
وهﻲ ﺗﺎﺑﻌﺔ ﻟﺘﺮآﻴﺒﺔ ، whileﻏﻴﺮ أن هﻨﺎك اﺧﺘﻼف ﺑﺴﻴﻂ وهﻮ أن
ﺗﺮآﻴﺒﺔ whileﺗﺨﺘﺒﺮ اﻟﺸﺮط ﺛﻢ ﺗﻘﻮم ﺑﺎﻟﺘﻨﻔﻴﺬ وﺷﻜﻠﻬﺎ آﺎﻟﺘﺎﻟﻲ:
C#
) while( condition
{
statement
}
83
ﻓﺈذا آﺎن اﻟﻨﺎﺗﺞ ﻣﺨﺎﻟﻒ ﻟﻠﺸﺮط أهﻤﻠﺖ ﺟﻤﻠﺔ whileﺑﺎﻟﻜﺎﻣﻞ .أم
ﺗﺮآﻴﺒﺔ do/whileﻓﻬﻲ أوﻻ ً ﺗﻘﻮم ﺑﺎﻟﺘﻨﻔﻴﺬ ﺛﻢ ﺗﺮى إذا ﻣﺎ آﺎن
اﻟﻨﺎﺗﺞ ﺻﺤﻴﺢ أم ﺧﺎﻃﺊ وﺷﻜﻠﻬﺎ آﻤﺎ ﻳﻠﻲ:
C#
do
{
statement
; ) } while( Condition
ﺑﻤﻌﻨﻰ :ﻧﻔﺬ ﻣﺎ ﺗﺤﺘﻮﻳﻪ ﺛﻢ اﺧﺘﺒﺮ إذا ﻣﺎ ﺗﺤﻘﻖ اﻟﺸﺮط أﻋﺪ اﻟﺘﻨﻔﻴﺬ
أم ﻻ ﻓﺎﺧﺮج ﻣﻨﻬﺎ .ﻓﻬﻲ ﺗﻨﻔﺬ ﻣﺮﻩ واﺣﺪة ﻋﻠﻰ اﻷﻗﻞ .واﻟﺸﻜﻞ
اﻟﺘﺎﻟﻲ ﻳﻮﺿﺢ ﻃﺮﻳﻘﺔ ﻋﻤﻠﻬﺎ:
84
:واﻟﺒﺮﻧﺎﻣﺞ اﻟﺘﺎﻟﻲ ﻳﻮﺿﺢ اﻟﻔﻜﺮة أآﺜﺮ
C#
int counter = 1;
do
Console.WriteLine(counter);
counter++;
}while(counter <= 5);
:وﻧﺘﺎﺋﺠﻪ آﺎﻟﺘﺎﻟﻲ
85
MS-DOS
1
Press any key to continue
ﻟﻠﺘﻜﺮارFor ﺗﺮآﻴﺒﺔ: اﻟﺪرس اﻟﺤﺎدي ﻋﺸﺮ
86
ﺑﺴﻢ اﷲ اﻟﺮﺣﻤﻦ اﻟﺮﺣﻴﻢ
ﻓﻲ اﻟﺪرﺳﻴﻦ اﻟﺴﺎﺑﻘﻴﻦ وﺿﺤﻨﺎ ﺗﺮآﻴﺒﺔ whileﻟﻠﺘﻜﺮار ووﺿﺤﻨﺎ
أﺷﻜﺎل اﺳﺘﻌﻤﺎﻟﻬﺎ:
1-اﺳﺘﺨﺪام whileآﻌﺪاد
2-ﻋﺪد whileﻳﻌﺘﻤﺪ ﻋﻠﻰ ﻗﻴﻤﺔ ﻣﺪﺧﻠﺔ.
3-اﻟﺘﺮاآﻴﺐ اﻟﻤﺘﺪاﺧﻠﺔ .
ووﺿﺤﻨﺎ ﺗﺮآﻴﺒﺔ do/whileأﻳﻀﺎ ً
وﻓﻲ هﺬا اﻟﺪرس إن ﺷﺎء اﷲ ﺳﻨﺸﺮح ﺗﺮآﻴﺒﺔ ﺟﺪﻳﺪة وهﻲ
ﺗﺮآﻴﺒﺔ forوﺗﺮآﻴﺒﺔ foreachﻟﻠﺘﻜﺮار:
ﺑﺴﻢ اﷲ ﻧﺒﺪأ :
*ﺗﺮآﻴﺒﺔ forﻟﻠﺘﻜﺮار :
وهﻲ ﻋﺒﺎرة ﻋﻦ ﺗﺠﻤﻴﻊ ﻟﻠﺠﻤﻞ اﻟﻤﺴﺘﺨﺪﻣﺔ ﻓﻲ whileﻓﻲ
ﺟﻤﻠﻪ واﺣﺪة .واﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ ﻳﻮﺿﺢ ﺟﻤﻠﺔ forوأﺟﺰاؤهﺎ:
ﺳﻨﻘﻮم اﻵن ﺑﺒﻨﺎء ﺑﺮﻧﺎﻣﺞ ﻟﻠﻌﺪ ﻣﻦ 5 – 1ﻟﻜﻠﻰ اﻟﺘﺮآﻴﺒﺘﻴﻦ
واﻟﻤﻘﺎرﻧﺔ ﺑﻴﻨﻬﻤﺎ ﻟﺘﻮﺿﻴﺢ اﻟﻔﻜﺮة أآﺜﺮ:
اﻟﺒﺮﻧﺎﻣﺞ ﻋﻠﻰ ﺗﺮآﻴﺒﺔwhile :
C#
;1 int counter = 1
2
)3 while ( counter <= 5
{ 4
5 ;) Console.WriteLine( counter
6 ;counter++
} 7
87
اﻟﺒﺮﻧﺎﻣﺞ ﻋﻠﻰ ﺗﺮآﻴﺒﺔfor :
C#
; 1 for (int counter = 1 ; counter <= 5
)counter++
2 ;)Console.WriteLine(counter
ﻣﻦ اﻟﻮاﺿﺢ أن ﺟﻤﻠﺔ forﻣﺨﺘﺼﺮﻩ ﻟﺠﻤﻠﺔ ، whileوﻗﺒﻞ
اﻟﻤﻘﺎرﻧﺔ ﻻﺣﻆ اﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ اﻟﻤﻮﺿﺢ ﻷﺟﺰاء ﺗﺮآﻴﺒﺔ for
اﻟﺮﺋﻴﺴﻴﺔ:
ﺗﺘﻜﻮن ﺗﺮآﻴﺒﺔ forﻣﻦ ﺛﻼث أﺟﺰاء ﺗﻔﺼﻞ ﺑﻴﻨﻬﻢ ﻓﺎﺻﻠﺔ ﻣﻨﻘﻮﻃﺔ:
اﻟﺠﺰء اﻷول وهﻮ ﻣﺘﻐﻴﺮ اﻟﺘﺤﻜﻢ ) (Control variableوهﻮ
اﻟﻤﺘﻐﻴﺮ اﻟﺬي ﻳﺘﺤﻜﻢ ﺑﺎﺳﺘﻤﺮارﻳﺔ اﻟﺪوران ﻟﻠﻌﺪ أو اﻟﺨﺮوج ﻣﻦ
اﻟﺪارة ﺑﺎﻻﻋﺘﻤﺎد ﻋﻠﻰ ﻗﻴﻤﺘﻪ ،ﻣﺴﻨﺪ إﻟﻴﻪ ﻗﻴﻤﺔ ﺑﺪاﺋﻴﺔ ﻟﻠﺒﺪء
ﻣﻨﻬﺎ ،وﻳﻤﻜﻦ ﺗﻌﺮﻳﻒ هﺬا اﻟﻤﺘﻐﻴﺮ ﺧﺎرج اﻟﺘﺮآﻴﺒﺔ ﻟﻜﻦ ﻋﻨﺪ
اﺳﺘﺨﺪاﻣﻬﺎ داﺧﻞ اﻟﺘﺮآﻴﺒﺔ ﻳﺠﺐ إﻋﻄﺎﺋﻬﺎ ﻗﻴﻤﺔ ﺑﺪاﺋﻴﺔ آﻤﺎ ﻳﻠﻲ
88
:
C#
; int counter
)for( counter = 1 ; counter <= 5 ; counter++
ﻟﻜﻦ ﻣﻦ اﻷﻓﻀﻞ ﺗﻌﺮﻳﻔﻬﺎ آﻤﺎ ﻓﻲ اﻟﺸﻜﻞ اﻟﺴﺎﺑﻖ.
ﻣﻼﺣﻈﺔ :
ﻋﻨﺪ ﺗﻌﺮﻳﻒ ﻣﺘﻐﻴﺮ اﻟﺘﺤﻜﻢ داﺧﻞ ﺟﻤﻠﺔ forﻳﻜﻮن ﻣﺤﺼﻮر داﺧﻞ
ﺟﺴﻤﻬﺎ ) (bodyأي ﻻ ﻳﻤﻜﻦ اﺳﺘﺨﺪاﻣﻪ ﺧﺎرﺟﻬﺎ ،أم ﻓﻲ
اﻟﺤﺎﻟﺔ اﻟﺜﺎﻧﻴﺔ وهﻲ ﺗﻌﺮﻳﻒ اﻟﻤﺘﻐﻴﺮ ﺧﺎرج ﺟﻤﻠﺔ forﻓﻴﻤﻜﻦ
اﺳﺘﺨﺪاﻣﻪ ﻓﻲ أﻣﺎآﻦ أﺧﺮى ﻣﻦ اﻟﺒﺮﻧﺎﻣﺞ.
اﻟﺠﺰء اﻟﺜﺎﻧﻲ وهﻲ ﺟﻤﻠﺔ اﻟﺸﺮط أي أن اﻟﻌﺪاد ﺳﻴﺒﻘﻰ ﻳﻄﺒﻊ
ﻗﻴﻤﺘﻪ وﻳﺠﻤﻊ ﻟﻨﻔﺴﻪ 1ﺣﺘﻰ ﺗﺼﺒﺢ ﻗﻴﻤﺘﻪ أآﺒﺮ ﻣﻦ 5أي
ﻋﻨﺪﻣﺎ ﻳﻔﺸﻞ اﺧﺘﺒﺎر اﻟﺸﺮط.
اﻟﺠﺰء اﻟﺜﺎﻟﺚ وهﻮ ﺟﺰء ﺗﺰاﻳﺪ اﻟﻌﺪاد ﺑﻤﻘﺪار 1ﻓﻲ آﻞ دورﻩ ،
وﻟﻪ ﻋﺪﻩ أﺷﻜﺎل وآﻠﻬﺎ ﻣﺘﻜﺎﻓﺌﺔ:
C#
counter = counter + 1
counter +=1
++counter
Counter++
89
واﻵن ﻻﺣﻆ ﺟﻤﻠﺔ ﺗﻌﺮﻳﻒ اﻟﻤﺘﻐﻴﺮ ﻓﻲ ﺳﻄﺮ 1ﻓﻲ ﺑﺮﻧﺎﻣﺞ
ﺗﺮآﻴﺒﺔ whileﺳﺘﺠﺪﻩ هﻮ ﻧﻔﺴﻪ ﻓﻲ اﻟﺠﺰء اﻷول ﻣﻦ ﺗﺮآﻴﺒﺔ
for.
وﺟﻤﻠﺔ اﻟﺸﺮط ﻓﻲ اﻟﺴﻄﺮ 3هﻲ ﻧﻔﺴﻬﺎ اﻟﺠﺰء اﻟﺜﺎﻧﻲ ﻣﻦ
ﺗﺮآﻴﺒﺔfor .
وﺟﻤﻠﺔ اﻟﺰﻳﺎدة ﻓﻲ اﻟﺴﻄﺮ 6هﻲ ﻧﻔﺴﻬﺎ اﻟﺠﺰء اﻟﺜﺎﻟﺚ ﻣﻦ
ﺗﺮآﻴﺒﺔfor .
وأآﺜﺮ ﻣﺎ ﻧﺴﺘﻔﻴﺪ ﻣﻦ ﺗﺮآﻴﺒﺔ forﻓﻲ اﻟﻤﺼﻔﻮﻓﺎت واﻟﺘﻲ
ﺳﻨﺄﺧﺬهﺎ ﻓﻲ دروس ﻗﺎدﻣﺔ إن ﺷﺎء اﷲ.
واﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ ﻳﻮﺿﺢ آﻴﻒ ﺗﻌﻤﻞ ﺗﺮآﻴﺒﺔ forﻓﻲ اﻟﺒﺮﻧﺎﻣﺞ
اﻟﺴﺎﺑﻖ:
ﻻﺣﻆ أن اﻟﺒﺪاﻳﺔ واﺣﺪة وهﻲ اﻟﻘﻴﻤﺔ اﻟﺒﺪاﺋﻴﺔ ﻟﻤﺘﻐﻴﺮ اﻟﺘﺤﻜﻢ
(Control variable) counterﺛﻢ ﺗﺒﺪأ اﻟﺪارة ﺑﺎﻟﻌﻤﻞ ،ﺗﺨﺘﺒﺮ
اﻟﻘﻴﻤﺔ هﻞ هﻲ أﻗﻞ أو ﺗﺴﺎوي ، 5إذا ﺗﺤﻘﻖ اﻟﺸﺮط )(True
ﻳﻘﻮم ﺑﺘﻨﻔﻴﺬ اﻟﺠﻤﻞ اﻟﺘﻲ ﻳﺤﺘﻮﻳﻬﺎ ﺛﻢ ﻳﺮﺟﻊ إﻟﻰ ﺟﻤﻠﺔ اﻟﺸﺮط ،
ﺣﻴﺚ ﻳﺨﺘﺒﺮ ﻗﻴﻤﺔ ال counterﻣﺮﻩ أﺧﺮى وهﻲ اﻵن أﺻﺒﺤﺖ 2
90
إذا ً ﻳﻜﻤﻞ اﻟﻌﻤﻞ ،ﺣﺘﻰ ﺗﺼﺒﺢ ﻗﻴﻤﺔ counter = 6ﻋﻨﺪهﺎ
ﻳﻔﺸﻞ اﻻﺧﺘﺒﺎر ) (Falseﻓﻴﺨﺮج ﻣﻦ اﻟﺪارة.
*ﺑﺮﻧﺎﻣﺞ إﻳﺠﺎد اﻟﻤﺠﻤﻮع ﺑﺎﺳﺘﺨﺪام ﺗﺮآﻴﺒﺔfor .
ﺣﻴﺚ ﻳﻘﻮم ﺑﺈﻳﺠﺎد ﻣﺠﻤﻮع اﻷﻋﺪاد اﻟﺼﺤﻴﺤﺔ اﻟﺰوﺟﻴﺔ ﻣﻦ 2إﻟﻰ
100ﺛﻢ ﻳﻈﻬﺮ اﻟﻨﺎﺗﺞ ﻋﻠﻰMessageBox .
أوﻻً :ﺳﻨﻘﻮم ﺑﺎﺳﺘﺪﻋﺎء اﻟﻤﻜﺘﺒﺔ System.Windows.Forms
ﻻﺳﺘﺨﺪام ال Class : MessageBoxآﻤﺎ ﺗﻌﻠﻤﻨﺎ ﻓﻲ اﻟﺪرس
اﻟﺜﺎﻟﺚ :اﻟﻮﺻﻠﻪ.
ﺛﺎﻧﻴﺎً :ﺳﻨﻌﺮف ﻣﺘﻐﻴﺮ ﻣﻦ ﻧﻮع ﺻﺤﻴﺢ ) (integerآﻤﺨﺰن ﻟﻨﺎﺗﺞ
اﻟﺠﻤﻊ ﻓﻲ آﻞ دورﻩ ) (sumوﻧﻌﻄﻴﻪ ﻗﻴﻤﺔ ﺑﺪاﺋﻴﺔ . 0وﻣﺘﻐﻴﺮ ﺁﺧﺮ
ﻣﻦ ﻧﻮع integerأﻳﻀﺎ ً numberوهﻮ اﻟﻌﺪاد وﻳﺒﺪأ ﻣﻦ .2
واﻵن إذا أردﻧﺎ ﺗﺤﻠﻴﻞ اﻟﺒﺮﻧﺎﻣﺞ ﺑﺎﻟﻠﻐﺔ اﻟﻌﺮﺑﻴﺔ ﻟﻔﻬﻤﻪ ﺳﻨﻘﻮل:
آﺮر ﻣﻦ number = 2ﺑﺸﺮط أن ﻗﻴﻤﺔ numberأﻗﻞ أو ﺗﺴﺎوي
100ﺣﻴﺚ ﻓﻲ آﻞ دورﻩ أﺿﻒ 2ﻋﻠﻰ اﻟﻨﺎﺗﺞ.
ﻋﻨﺪﻣﺎ ﻳﺼﺒﺢ ﻗﻴﻤﺔ sumأآﺒﺮ ﻣﻦ 100أﺧﺮج ﻣﻦ اﻟﺪارة واﻃﺒﻊ
ﻗﻴﻤﺔ sumﻋﻠﻰMessageBox .
واﻵن ﺳﻴﻜﻮن اﻟﺘﻄﺒﻴﻖ ﺳﻬﻞ ﺟﺪاً ،ﻓﻠﻨﺒﺪأ ﺑﺴﻢ اﷲ:
C#
;using System
;using System.Windows.Forms
class Sum
{
)static void Main(string[] args
91
int sum = 0;
for(int number = 2; number <=
100; number +=2)
sum+=number;
MessageBox.Show("The sum is " +
sum,
"Sym Even Integers from 2 to100",
MessageBoxButtons.OK,
MessageBoxIcon.Information);
:وﺳﻴﻜﻮن اﻟﻨﺎﺗﺞ آﻤﺎ ﻳﻠﻲ
92
continue اﻟﺪرس اﻟﺜﺎﻧﻲ ﻋﺸﺮ :ﻋﺒﺎرة breakوﻋﺒﺎرة
ﻓﻲ اﻟﺪرس اﻟﺴﺎﺑﻖ ﻗﻤﻨﺎ ﺑﺸﺮح ﺗﺮآﻴﺒﺔ forوﺗﻨﻔﻴﺬ ﺑﺮﻧﺎﻣﺞ ﻋﻠﻴﻬﺎ.
93
ﺗﺮآﻴﺒﺔ foreachﻋﻤﻠﻬﺎ ﻣﺸﺎﺑﻪ ﻟﺘﺮآﻴﺒﺔ forﻣﻦ ﺣﻴﺚ اﻟﺘﻜﺮار ﺑﻌﺪد ﻣﻌﻴﻦ .
ﻟﻜﻦ أهﻤﻴﺘﻬﺎ ﺗﻜﻤﻦ ﻓﻲ اﻟﻤﺼﻔﻮﻓﺎت وﺧﺎﺻﺔ ﻣﺼﻔﻮﻓﺎت ﺛﻨﺎﺋﻴﺔ اﻷﺑﻌﺎد .ﻓﺒﺪﻻً
ﻣﻦ وﺿﻊ forداﺧﻞ forﻳﻤﻜﻨﻨﺎ اﺳﺘﺨﺪام foreachﺑﺠﻤﻠﺔ واﺣﺪة وﺳﻨﺘﻮﺳﻊ
ﺑﻬﺎ ﻋﻨﺪﻣﺎ ﻧﺄﺧﺬ اﻟﻤﺼﻔﻮﻓﺎت ﺑﺈذن اﷲ.
ﻓﻲ هﺬا اﻟﺪرس:
ﺳﻨﻮﺿﺢ ﻋﺒﺎرة breakو continue .
واﻵن ﻧﺒﺪأ ﺑﻌﻮن اﷲ :
1-ﻋﺒﺎرة break .
وﺗﺴﺘﺨﺪم ﺑﺸﻜﻞ رﺋﻴﺴﻲ ﻟﻠﺨﺮوج ﻣﻦ اﻟﺘﺮاآﻴﺐ while , for , do/while ,
switchﻋﻨﺪ ﻧﻘﻄﺔ ﻣﻌﻴﻨﺔ )ﺷﺮط ﻣﻌﻴﻦ( .ﻓﻤﺜﻼً اﻟﺒﺮﻧﺎﻣﺞ اﻟﺘﺎﻟﻲ ﺳﺘﻘﻮم
ﺗﺮآﻴﺒﺔ forﺑﻄﺒﺎﻋﺔ ﻗﻴﻤﺔ اﻟﻌﺪاد ﻣﻦ 1إﻟﻰ 10إﻻ إذا ﺗﺤﻘﻖ ﺷﺮط ﻣﻌﻴﻦ وهﻮ
أن ﻗﻴﻤﺔ اﻟﻌﺪاد = 5ﺳﻴﻨﻔﺬ breakأي ﺳﻴﺘﻮﻗﻒ:
C#
;using System
;using System.Windows.Forms
class BreakTest
{
)static void Main(string[] args
{
;"" = string output
;int count
;for( count = 1; count <= 10
94
count++)
if(count == 5)
break;
output += count + " ";
output += "\nBroke out of loop at count
= " + count;
MessageBox.Show(output,
"Demonstratio;n the break statement" ,
MessageBoxButtons.OK ,
MessageBoxIcon.Information );
: وﺳﻴﻜﻮن اﻟﻨﺎﺗﺞ آﻤﺎ ﻳﻠﻲ
95
ﻻﺣﻆ أن اﻟﺮﻗﻢ 5ﻟﻢ ﻳُﻄﺒﻊ وذﻟﻚ ﻷن ifﺗﺨﺘﺒﺮ ﻗﻴﻤﺔ اﻟﻌﺪاد ﻗﺒﻞ ﻃﺒﺎﻋﺘﺔ
وﻋﻨﺪﻣﺎ ﺗﺠﺪ ﻗﻴﻤﺘﻪ 5ﺳﻴﻨﻔﺬ breakوﻳﺘﻮﻗﻒ.
2 -ﻋﺒﺎرة continue .
وﺗﺴﺘﺨﺪم ﻓﻲ اﻟﺘﺮاآﻴﺐ while , for , do/whileﻟﻠﻘﻔﺰ ﻋﻦ ﺗﻨﻔﻴﺬ اﻟﺠﻤﻠﺔ
داﺧﻞ ﺗﺮآﻴﺒﺔ اﻟﺘﻜﺮار ﻋﻨﺪ اﻟﻮﺻﻮل إﻟﻰ ﻧﻘﻄﺔ ﻣﻌﻴﻨﺔ .ﻓﻠﻮ اﺳﺘﺒﺪﻟﻨﺎ ﻓﻲ اﻟﻤﺜﺎل
اﻟﺴﺎﺑﻖ آﻠﻤﺔ continueﺑﺪﻻً ﻣﻦ آﻠﻤﺔ breakﺳﻴﻜﻮن اﻟﻨﺎﺗﺞ آﻤﺎﻳﻠﻲ:
C#
)for( count = 1; count <= 10; count++
{
)if(count == 5
;continue
;" " output += count +
}
output += "\nUsed continue to skip
;"printing 5
وﺗﻌﻨﻲ إذا أﺻﺒﺤﺖ ﻗﻴﻤﺔ اﻟﻌﺪاد 5ﻓﺈﻧﻬﺎ ﺳﺘﻬﻤﻞ ﺗﻨﻔﻴﺬ أي ﺟﻤﻠﺔ ﺗﺘﺒﻌﻬﺎ
وﺳﺘﺮﺟﻊ ﻟﺰﻳﺎدة اﻟﻌﺪاد . 1وﺳﻴﻜﻮن اﻟﻨﺎﺗﺞ آﻤﺎ ﻳﻠﻲ :
96
هﻜﺬا ﻧﻜﻮن ﺗﻌﻠﻤﻨﺎ هﺎﺗﻴﻦ اﻟﻌﺒﺎرﺗﻴﻦ ﻓﺮﻏﻢ ﺑﺴﺎﻃﺘﻬﻤﺎ إﻻ اﻧﻬﻢ ﻣﻬﻤﺎت ﺟﺪاً
97
Methods اﻟﺪرس اﻟﺜﺎﻟﺚ ﻋﺸﺮ :
ﻓﻲ اﻟﺪروس اﻟﺴﺎﺑﻘﺔ ﻋﻨﺪ ﻓﺘﺢ new projectآﻨﺎ ﻧﺨﺘﺎر Console Application
ﺣﻴﺚ آﺎن ال outputﻳﻈﻬﺮ ﻋﻠﻰ ﺷﺎﺷﺔ Dose .
واﻵن ﺳﻨﻨﺘﻘﻞ اﻟﻰ ﺑﻴﺌﺔVC# :
)1ﻋﻨﺪ ﻓﺘﺢ ﻣﺸﺮوع ﺟﺪﻳﺪ ﻗﻢ ﺑﺎﺧﺘﻴﺎر windows Applicationﺑﺪﻻً ﻣﻦ
Console Application .ﺛﻢ اآﻤﻞ اﻟﺨﻄﻮات آﻤﺎ ﺗﻌﻠﻤﺖ واﺟﻌﻞ اﺳﻤﻪ
SquareInt.cs.
)2ﺳﺘﺪﺧﻞ إﻟﻰ ﺑﻴﺌﺔ VC#وهﻲ ﻻ ﺗﺨﺘﻠﻒ ﻋﻦ أي ﺑﻴﺌﺔ ﻓﻴﺠﻮال :
!
واﻵن ﺳﻨﺘﻌﺮف ﻋﻠﻰ ال methodsوﻣﻦ ﺛﻢ ﻧﻘﻮم ﺑﻜﺘﺎﺑﺔ ﺑﺮﻧﺎﻣﺞ ﺑﺴﻴﻂ ﻋﻠﻰ
الwendows application .
Methods :
ﻓﻲ درس ٍ ﺳﺎﺑﻖ ﻗﻠﻨﺎ أنّ آﻞ ﺑﺮﻧﺎﻣﺞ ﻳﺠﺐ ﻳﺤﺘﻮي ﻋﻠﻰ Class , method ,
namespace .
اﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ ﻳﻮﺿﺢ آﻴﻔﻴﺔ ﻋﻤﻞ الmethods .
98
ﺣﻴﺚ ال bossهﻲ methodرﺋﻴﺴﻴﺔ ﺗﻘﻮم ﺑﺎﺳﺘﺪﻋﺎء ال methodsاﻟﻔﺮﻋﻴﺔ
worker1,worker2 ,worker3…..وﻳﻤﻜﻦ ﻟﻞ methodsاﻟﻔﺮﻋﻴﺔ اﺳﺘﺪﻋﺎء
methodsأﺧﺮى.
وﻏﻠﺒﺎً ﻣﺎ ﺗﻜﻮن هﺬﻩ ال boss methodهﻲ الmain method .
* Math Class
وهﻲ Classﺷﺎﺋﻌﺔ اﻹﺳﺘﺨﺪام ﺗﺤﺘﻮي ﻋﻠﻰ methodsﺗﺴﺘﺨﺪم ﻓﻲ
اﻟﻌﻤﻠﻴﺎت اﻟﺤﺴﺎﺑﻴﺔ.
)1اﻟﺸﻜﻞ اﻟﻌﺎم ﻟﻞmethod .
C#
) … ClassName.MethodName( argument1, arument2,
)2اﻟﺜﻮاﺑﺖ
…Math.PI = 3.1415926535
…Math.E = 2.7182818285
)3ال methodsﺷﺎﺋﻌﺔ اﻹﺳﺘﺨﺪام.
99
!Error
واﻻن ﺳﻨﺒﺪأ ﺑﻌﻤﻞ ﺑﺮﻧﺎﻣﺞ:
SquareIntﺑﺮﻧﺎﻣﺞ ﺑﺴﻴﻂ ،ﻳﺤﺘﻮي ﻋﻠﻰ buttonو labelﺣﻴﺚ ﻳﻌﺮض ﻣﺮﺑﻊ
اﻷﻋﺪاد ﻣﻦ . 10 - 1
)1ﻗﻢ ﺑﺘﻨﻈﻴﻢ ﺷﻜﻞ ال formآﺎﻟﺘﺎﻟﻲ:
100
label : outputLabel واﺳﻢ الbutton : calcolatputton ﺛﻢ اﺟﻌﻞ اﺳﻢ ال
ً ﻣﻜﺘﻮب ﻣﺴﺒﻘﺎcode ﺳﻴﻈﻬﺮ الbutton . ﻋﻠﻰ ال2) (double click )
main ﻻ ﻧﻘﻮم ﺑﻜﺘﺎﺑﺔ اي ﺷﻴﺊ داﺧﻞ ال. ﺳﻴﺘﻢ ﺷﺮﺣﻪ ﻓﻲ دروس ﻗﺎدﻣﺔ
.ﻓﻬﻮ ﻓﻘﻂ ﻟﻠﺘﻨﻔﻴﺬmethod
C#
static void Main()
Application.Run(new Form1());
int square( int y)
return y * y ;
}
101
private void
calcolatputton_Click(object sender,
System.EventArgs e)
outputLabel.Text = "";
for(int counter =1 ; counter <=
10 ; counter++)
int result =
square(counter);
outputLabel.Text += "the
square of " + counter +
" is " + result +
"\n";
method ﺣﻴﺚ ﻗﻤﻨﺎ أوﻻً ﺑﻜﺘﺎﺑﺔ ال. اﻟﺸﻜﻞ اﻟﺴﺎﺑﻖ هﻮ اﻟﻜﻮد آﺎﻣﻞ ﻟﻠﺒﺮﻧﺎﻣﺞ
method ﻗﻤﻨﺎ ﺑﺎﺳﺘﺪﻋﺎء هﺬا الbutton ﻹﻧﺘﺎج ﻣﺮﺑﻊ اﻷرﻗﺎم ﺛﻢ وداﺧﻞ ال
ﺛﻢ اﺳﻨﺪﻧﺎهﺎfor ﺑﺎﺳﺘﺨﺪام ﺟﻤﻠﺔ10 - 1 ﻣﻦcounter واﺳﻨﺪﻧﺎ اﻟﻴﻪ ﻗﻴﻢ
label . ﺛﻢ ﻃﺒﺎﻋﺘﻬﺎ ﻋﻠﻰ الresult. اﻟﻰ اﻟﻤﺘﻐﻴﺮ
f5 . أوstart ﺛﻢDebug وﻟﺘﻔﻌﻴﻞ اﻟﺒﺮﻧﺎﻣﺞ اذهﺐ اﻟﻰ
. ﻟﻬﺬا اﻟﺒﺮﻧﺎﻣﺞoutput واﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ هﻮ ال
102
اﻟﺪرس اﻟﺮاﺑﻊ ﻋﺸﺮ :ﺑﻌﺾ اﻟﻤﻤﻴﺰات ﻟﻞ method 1
ﻓﻲ هﺬا اﻟﺪرس ﺳﻨﻮﺿﺢ ﺑﻌﺾ اﻟﻤﻤﻴﺰات ﻟﻞmethod :
1-ﺗﺮﻗﻴﺔ اﻟﻌﻨﺎﺻﺮ.
2-ﻣﻔﻬﻮم ال namespaceﻓﻲ ال#C .
واﻵن ﺑﺴﻢ اﷲ ﻧﺒﺪأ :
1-ﺗﺮﻗﻴﺔ اﻟﻌﻨﺎﺻﺮ .
وهﻮ ان ﻳﻜﻮن ﻟﺪﻳﻨﺎ ﻣﺘﻐﻴﺮ ﻣﻌﺮف ﺑﻨﻮع ﻣﻌﻴﻦ وﺗﺤﻮﻳﻠﻪ ﺑﺎﻹﺟﺒﺎر إﻟﻰ ﻧﻮع ﺁﺧﺮ
ﻟﻴﺴﺘﻄﻴﻊ اﻟﻤﺮور ﻓﻲ methodﻣﻌﻴﻨﺔ .وهﻨﺎك ﻧﻮﻋﺎن ﻣﻦ اﻟﺘﺤﻮﻳﻞ:
1-اﻟﺘﺤﻮﻳﻞ اﻟﻀﻤﻨﻲ (implicit conversion) :
وﻳﻘﻮم ﺑﺘﺤﻮﻳﻞ ﻗﻴﻤﺔ اﻟﻤﺘﻐﻴﺮ ﻣﻦ ﻧﻮع إﻟﻰ ﻧﻮع ﺁﺧﺮ ﺿﻤﻨﻴﺎ ً ،أي دون آﺘﺎﺑﺔ
اﻟﻨﻮع اﻟﺠﺪﻳﺪ ﻗﺒﻞ اﻟﻤﺘﻐﻴﺮ اﻟﻤﺮاد ﺗﺤﻮﻳﻠﻪ اﻟﻴﻪ .
ﻣﺜﺎل :ال methodاﻟﺬي اﺳﻤﻪ )( sqrtواﻟﺬي ﻳﻘﻮم ﺑﺈﻋﻄﺎء اﻟﺠﺬر اﻟﺘﺮﺑﻴﻌﻲ
ﻟﻠﺮﻗﻢ ،اﻟﻤﻮﺟﻮد ﻓﻲ ال classاﺳﻤﻬﺎ( mathﺗﺤﺪﺛﻨﺎ ﻋﻨﻬﺎ ﺳﺎﺑﻘﺎ )،
اﻟﻤﺘﻐﻴﺮات اﻟﺘﻲ ﻳﺴﺘﻘﺒﻠﻬﺎ ﻣﻌﺮﻓﺔ ﻓﻲ اﻷﺻﻞ doubleأي ﻋﻨﺪ آﺘﺎﺑﺔ هﺬا
103
ال methodآﺘﺐ آﺎﻟﺘﺎﻟﻲ :
C#
public )Math( double x
ﻓﺈذا ﺑﻌﺜﻨﺎ ﻟﻪ رﻗﻢ 4ﻣﺜﻼ ً واﻟﺬي هﻮint :
C#
;))Console.writeline(Math.sqrt(4
ﻓﺴﻴﺘﺤﻮل ﺗﻠﻘﺎﺋﻴﺎ ً )ﺿﻤﻨﻴﺎ ً( إﻟﻰ 4.0أي ﻣﻦ ﻧﻮع doubleوﻳﻜﻮن اﻟﻨﺎﺗﺞ . 2
وذﻟﻚ ﻷن intأﺻﻐﺮ ﻣﻦ doubleإذا ً ﻓﻬﻮ ﻳﺤﺘﻮﻳﻪ ،وهﻨﺎ ﻻ ﻳﺤﺪث أي ﺧﺴﺎرة
ﻓﻲ اﻟﻤﻌﻠﻮﻣﺎت .
2-اﻟﺘﺤﻮﻳﻞ اﻟﺼﺮﻳﺢ )( Explicit conversion
أﻣﺎ إذا اردﻧﺎ اﻟﺘﺤﻮﻳﻞ اﻟﻌﻜﺴﻲ ﻓﻴﺠﺐ آﺘﺎﺑﺔ ﻧﻮع اﻟﺘﺤﻮﻳﻞ :
C#
; double y = 4.5
;) ) Console.writeline(Math.sqrt ( ( int ) y
وﻳﻜﻮن اﻟﻨﺎﺗﺞ هﻨﺎ أﻳﻀﺎ ً 2ﻷﻧﻪ ﺗﻢ ﺗﺤﻮﻳﻠﻪ إﻟﻰ intﻗﺒﻞ إﻳﺠﺎد اﻟﺠﺬر ،وﻟﻜﻦ
ﻓﻲ هﺬﻩ اﻟﺤﺎﻟﺔ ﻳﺤﺪث ﺧﺴﺎرة ﻓﻲ اﻟﻤﻌﻠﻮﻣﺎت.
واﻟﺠﺪول اﻟﺘﺎﻟﻲ ﻳﻮﺿﺢ ﺣﺎﻻت اﻟﺘﺤﻮﻳﻞ اﻟﻀﻤﻨﻴﺔ :
104
2-ﻣﻔﻬﻮم ال namespaceﻓﻲ ال C# .
C#ﺗﺤﺘﻮي ﻋﻠﻰ ﻣﺠﻤﻮﻋﺔ ﻣﻦ ال classesﻣﺠﺘﻤﻌﺔ داﺧﻞ ال namespace
واﻟﻜﻮد اﻟﺮﺋﻴﺴﻲ ﻟﻬﺬﻩ ال classesﻣﺨﺰﻧﺔ ﺑﻤﻜﺘﺒﺔ ﻣﺨﺼﺼﺔ ﻟﻞ classes
ﺑﺈﻣﺘﺪاد .dllوﺗﺪﻋﻰ assembliesأي اﻟﻤﺮﻣّـﺰة.
اﻟﻌﺒﺎرة usingﺗﺤﺪد ال namespaceاﻟﺬي ﻧﺮﻳﺪ اﺳﺘﺨﺪاﻣﻪ ﻓﻲ اﻟﺒﺮﻧﺎﻣﺞ .
ﻣﺜﻼ ً :ﺟﻤﻴﻊ اﻟﺒﺮاﻣﺞ ﻋﻨﺪ اﻧﺸﺎﺋﻬﺎ ﻳﺘﻢ اﺳﺘﺪﻋﺎء ال System namespace
ﺗﻠﻘﺎﺋﻴﺎ ً
C#
; using System
ﻹﺧﺒﺎر ال compilerﺑﺄﻧﻨﺎ ﻧﺮﻳﺪ اﺳﺘﺨﺪام ال ، System namespaceوﻋﺒﺎرة
usingﺗﺴﻤﺢ ﻟﻨﺎ ﺑﺎﺳﺘﺨﺪام ال classesاﻟﻤﻮﺟﻮدة داﺧﻞ ال System
namespace .ﻓﻨﺴﺘﺪﻋﻲ ال WriteLine methodاﻟﻤﻮﺟﻮد ﻓﻲ ال
Console classواﻟﻤﻮﺟﻮد داﺧﻞ ال System namespaceﺑﺎﻟﻄﺮﻳﻘﺔ اﻟﺘﺎﻟﻴﺔ:
C#
105
Console.WriteLine
ﺑﺪﻻ ً ﻣﻦ آﺘﺎﺑﺘﻬﺎ:
System.Console.WriteLine
وأي namespaceﺁﺧﺮ ﻳﺠﺐ إﺿﺎﻓﺘﻪ ﻳﺪوﻳﺎ ً ﻋﻦ ﻃﺮﻳﻖ إﺿﺎﻓﺔ اﻟﻤﻠﻒ اﻟﻤﺮﺟﻊ
ﻟﻪ ) (add referenceآﻤﺎ ﺗﻌﻠﻤﻨﺎ ﻓﻲ اﻟﺪرس اﻟﺜﺎﻟﺚ.
واﻟﺠﺪول اﻟﺘﺎﻟﻲ ﻳﻮﺿﺢ ﻣﺠﻤﻮﻋﺔ ﺑﺴﻴﻄﺔ ﻣﻦ ال namespacesاﻟﺸﺎﺋﻌﺔ
اﻹﺳﺘﺨﺪام واﻟﺘﻲ ﺳﻨﺴﺘﺨﺪﻣﻬﺎ ﻓﻲ اﻟﺒﺮاﻣﺞ اﻟﺘﺎﻟﻴﺔ إن ﺷﺎء اﷲ ،وﺧﺎﺻﺔ
ﻓﻲ ﺑﺮاﻣﺞ ال windows application :
اﻟﺪرس اﻟﺨﺎﻣﺲ ﻋﺸﺮ :ﺑﻌﺾ اﻟﻤﻤﻴﺰات ﻟﻞ method 2
وﻓﻲ هﺬا اﻟﺪرس إن ﺷﺎء اﷲ ﺳﻨﻮﺿﺢ :
1-ﺗﻌﺮﻳﻒ اﻟﻤﺘﻐﻴﺮ آﻘﻴﻤﺔ )(by valueأو آﻤﺮﺟﻊ(by reference) .
2-إﻣﺮار اﻟﻤﺘﻐﻴﺮ ﻓﻲ ال methodآﻘﻴﻤﺔ ) (pass-by-valueأو آﻤﺮﺟﻊ
(pass-by-reference) .
واﻵن ﺑﺴﻢ اﷲ ﻧﺒﺪأ :
1-ﺗﻌﺮﻳﻒ اﻟﻤﺘﻐﻴﺮ آﻘﻴﻤﺔ )(by valueأو آﻤﺮﺟﻊ (by reference) .
اﻟﻤﺘﻐﻴﺮ اﻟﻤﻌﺮف آﻘﻴﻤﺔ ) (by valueﻳﺤﺘﻮي ﻋﻠﻰ ﺑﻴﺎﻧﺎت ﻣﻦ اﻟﻨﻮع
106
اﻟﻤﻌﺮف ﺑﻪ وﺗﻤﻠﻚ ﻗﻴﻤﺔ واﺣﺪة ﻓﻘﻂ ،ﻣﺜﻼ ً:
C#
; int x = 5
واﻷﻧﻮاع اﻟﺘﻲ ﺗﻌﺮف ﺑﻬﺎ هﺬا اﻟﻨﻮع ﻣﻦ اﻟﻤﺘﻐﻴﺮات هﻲ:
-اﻷﻧﻮاع اﻟﻐﻴﺮ آﺴﺮﻳﺔ )ﺻﺤﻴﺤﺔ ) : sbyte , byte , char , short ,
ushort , int , uint , long .
-اﻷﻧﻮاع اﻟﻜﺴﺮﻳﺔ : float , double .
-وهﻨﺎك اﻟﻨﻮﻋﺎن : decimal , bool .
أﻣﺎ اﻟﻤﺘﻐﻴﺮ اﻟﻤﻌﺮف آﻤﺮﺟﻊ ) (by referenceﻳﺤﺘﻮي ﻋﻠﻰ ﻋﻨﻮان اﻟﻤﻮﻗﻊ
ﻓﻲ اﻟﺬاآﺮة ﻟﻠﻤﺘﻐﻴﺮ اﻟﺬي ﻋُـﺮّف ﺑﻪ ،وﻋﺎدة ً ﻳﺸﻴﺮ إﻟﻰ object
(ﺳﻨﺘﻮﺳﻊ ﺑﻪ ﻓﻲ دروس ﻻﺣﻘﺔ إن ﺷﺎء اﷲ )
C#
; Ref int x
ﻟﻜﻦ ال objectﺑﺸﻜﻞ ﻣﻮﺟﺰ ) ﻟﺴﻬﻮﻟﺔ اﻟﻤﻘﺎرﻧﺔ) :
هﻮ ﻋﺒﺎرة ﻋﻦ ﻣﺘﻐﻴﺮ ﻳﺤﺘﻮي ﻋﻠﻰ ﻋﺪد ﻣﻦ اﻟﻤﺘﻐﻴﺮات ،وآﻞ واﺣﺪة ﻣﻦ
هﺬﻩ اﻟﻤﺘﻐﻴﺮات ﺗﻤﺘﻠﻚ ﻗﻴﻤﺔ .
وأآﺜﺮ هﺬﻩ اﻟﻤﺘﻐﻴﺮات ﺗﻌﺮّف ﺑﺎﻷﻧﻮاع اﻟﺘﺎﻟﻴﺔ ، : string , objectإﻟﻰ أﻧﻪ
ﻳﻤﻜﻦ اﺳﺘﺨﺪام أي ﻧﻮع ﺁﺧﺮ .
وﻳﻤﻜﻦ ﻟﻠﻤﺒﺮﻣﺞ أﻳﻀﺎ ً إﻧﺸﺎء ﻣﺘﻐﻴﺮ ﻣﻦ ﻧﻮع referenceﻋﻦ ﻃﺮﻳﻖ ﺑﻨﺎء
ﻣﺎ ﺗﺴﻤﻰ( classواﻟﺘﻲ أﻳﻀﺎ ً ﺳﻨﺘﻮﺳﻊ ﺑﻬﺎ ﻓﻲ دروس ﻻﺣﻘﺔ إن ﺷﺎء
اﷲ ) .
واﻟﺠﺪول اﻟﺘﺎﻟﻲ ﻳﻌﺮض ﻗﺎﺋﻤﺔ ﻣﻦ اﻷﻧﻮاع اﻟﻤﺴﺘﺨﺪﻣﺔ ﻓﻲ ﺗﻌﺮﻳﻒ
اﻟﻤﺘﻐﻴﺮات وﻗﻴﻢ آﻞ واﺣﺪة وﺣﺠﻤﻬﺎ :
107
2-إﻣﺮار اﻟﻤﺘﻐﻴﺮ ﻓﻲ ال methodآﻘﻴﻤﺔ ) (pass-by-valueأو آﻤﺮﺟﻊ
(pass-by-reference) .
ﻹﺳﺘﺪﻋﺎء اﻟﻤﺘﻐﻴﺮ ﻓﻲ ال methodﻃﺮﻳﻘﺘﻴﻦ:
1-آﻘﻴﻤﺔ (pass-by-value) :
وﻓﻲ هﺬﻩ اﻟﺤﺎﻟﺔ ﻳﺘﻢ أﺧﺬ ﻧﺴﺨﺔ ﻣﻦ ﻗﻴﻤﺔ اﻟﻤﺘﻐﻴﺮ ،ﺣﻴﺚ أن اﻟﺘﻐﻴﺮات
اﻟﺘﻲ ﺗﺤﺪث ﻋﻠﻰ هﺬﻩ اﻟﻘﻴﻤﺔ ﻻ ﺗﺆﺛﺮ ﻋﻠﻰ ﻗﻴﻤﺔ اﻟﻤﺘﻐﻴﺮ اﻷﺻﻠﻴﺔ .
وهﺬا ﻳﻤﻨﻊ ﺑﻌﺾ اﻟﺘﺄﺛﻴﺮات اﻟﺠﺎﻧﺒﻴﺔ اﻟﺘﻲ ﻳﻤﻜﻦ أن ﺗﺆﺛﺮ ﻋﻠﻰ ﺻﺤﺔ ﻋﻤﻞ
اﻟﺒﺮﻧﺎﻣﺞ.
2-أو آﻤﺮﺟﻊ (pass-by-reference) .
وﻓﻲ هﺬﻩ اﻟﺤﺎﻟﺔ أي ﺗﺄﺛﻴﺮ ﻋﻠﻰ ﻗﻴﻤﺔ اﻟﻤﺘﻐﻴﺮ داﺧﻞ ال methodﺗﺘﺄﺛﺮ
ﻗﻴﻤﺔ اﻟﻤﺘﻐﻴﺮاﻷﺻﻠﻴﺔ ،وهﺬا ﻣﺎ ﻳﺴﺎﻋﺪ ﻋﻠﻰ اﻟﺘﻘﻠﻴﻞ ﻣﻦ ﺛﻘﻞ ﻧﺴﺦ
اﻟﺒﻴﺎﻧﺎت ﻣﻦ داﺧﻞ اﻟﻤﺘﻐﻴﺮات ﺧﺎﺻﺔ إذا آﺎﻧﺖ ﻣﻦ ﻧﻮع ، objectإﻻّ أﻧﻪ
ﻳﻀﻌﻒ اﻷﻣﻦ ﻋﻠﻰ ﻗﻴﻤﺔ اﻟﻤﺘﻐﻴﺮ اﻷﺻﻠﻲ .
ﻣﻼﺣﻈﺔ :
هﻨﺎك آﻠﻤﺔ ﻣﺤﺠﻮزة وهﻲ outﻓﻬﻲ by referenceأﻳﻀﺎ ً إﻻ أﻧﻪ ﻋﻨﺪ
ﺗﻌﺮﻳﻒ ﻣﺘﻐﻴﺮ ﻓﻲ methodاﻟﻤﺘﻐﻴﺮ اﻟﻤﺴﺘــَـﻠـَـﻢ ﻻ ﻳﺸﺘﺮط أن ﻳﺤﻤﻞ
ﻗﻴﻤﺔ ،أي ﻳﻤﻜﻦ أن ﻳﺤﻤﻞ ﻗﻴﻤﺔ إن ﻟﻢ ﻳﻜﻦ ﻧﺴﺘﻄﻴﻊ أن ﻧﻀﻊ ﻟﻪ ﻗﻴﻤﺔ
اﻓﺘﺮاﺿﻴﺔ داﺧﻞ ال ، methodوﺳﻴﺘﻀﺢ اﻟﻤﻌﻨﻰ أآﺜﺮ ﻣﻊ اﻟﺒﺮﻧﺎﻣﺞ.
واﻵن ﺳﻨﻘﻮم ﺑﻜﺘﺎﺑﺔ ﺑﺮﻧﺎﻣﺞ ﻟﺘﺘﻮﺿﺢ ﻟﻚ اﻟﺼﻮرة .
108
اﻟﻬﺪف اﻟﺮﺋﻴﺴﻲ ﻓﻲ هﺬا اﻟﺒﺮﻧﺎﻣﺞ ﻣﻼﺣﻈﺔ أﺛﺮ ال Square Methodأي
ﻣﺮﺑﻊ اﻟﻌﺪد ﻋﻨﺪ اﺳﺘﺪﻋﺎﺋﻪ by valueأو by reference .
واﻵن :
ﻳﺤﺘﻮي اﻟﺒﺮﻧﺎﻣﺞ ﻋﻠﻰ ﺛﻼﺛﺔ ) (methodsﻟﺤﺴﺎب ﻣﺮﺑﻊ ﻋﺪد ﺻﺤﻴﺢ:
اﻷول :
C#
(SquareRef Ref int )x
{
; x = x * x
}
أي أﻧﻪ ﺳﻴﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻘﻴﻤﺔ اﻟﻤﺒﻌﻮﺛﺔ إﻟﻴﻪ ﺑﻌﻨﻮاﻧﻬﺎ ،ﻓﻤﺜﻼً ﻟﻮ ﺑﻌﺜﻨﺎ ﻟﻪ
5ﻓﺴﻴﻘﻮم ﻳﺤﻔﻆ ﻋﻨﻮان اﻟﻘﻴﻤﺔ 5وﻣﻦ ﺛﻢ ﻳﺮﺑﻊ اﻟﻘﻴﻤﺔ وﻳﻌﻴﺪهﺎ إﻟﻰ
ﻧﻔﺲ اﻟﻌﻨﻮان .ﻓﺈذا ﻃﺒﻌﻨﺎ ﻗﻴﻤﺔ xﺳﻴﻜﻮن اﻟﻨﺎﺗﺞ 25ﻷﻧﻪ ﻗﺪ أﺧﺬ ﻣﻜﺎﻧﻪ
ﻓﻠﻮ اﺳﺘﺪﻋﻴﻨﺎ ال methodﻣﺮة أﺧﺮى وﺑﻌﺜﻨﺎ ﻟﻪ ﻗﻴﻤﺔ xواﻟﺘﻲ هﻲ 25
ﻓﺴﻴﻜﻮن اﻟﻨﺎﺗﺞ .625
اﻟﺜﺎﻧﻲ :
C#
)SquareOut( out int x
{
; x = 6
; x = x * x
109
}
وﺗﻌﻤﻞ ﻧﻔﺲ ﻋﻤﻞ ال referenceإﻻ أﻧﻪ إن ﺑﻌﺚ ﻟﻪ ﻗﻴﻤﺔ 5ﻣﺜﻼ ً
ﺳﻴﺤﻔﻆ ﻋﻨﻮاﻧﻬﺎ ﺛﻢ ﻳﺮﺑﻌﻬﺎ وﻳﻌﻴﺪهﺎ إﻟﻰ ﻧﻔﺲ ﻋﻨﻮاﻧﻬﺎ . 25وأﻣﺎ إذا ﻟﻢ
ﻳﺒﻌﺚ ﻟﻪ ﻗﻴﻤﺔ ﻓﻴﻤﻜﻦ إﻋﻄﺎؤهﺎ ﻗﻴﻤﺔ ﻣﻦ داﺧﻞ ال methodوﻳﺤﻔﻆ
ﻋﻨﻮاﻧﻬﺎ وﻳﻌﻴﺪهﺎ إﻟﻴﻪ .36
اﻟﺜﺎﻟﺚ :
C#
)Square( int x
{
; x = x * x
}
ﺣﻴﺚ إذا ﺑﻌﺜﻨﺎ ﻟﻪ ﻣﺘﻐﻴﺮ ﻳﺤﻤﻞ اﻟﻘﻴﻤﺔ = y 5ﺳﻴﻌﻤﻞ ﻣﻨﻬﺎ ﻧﺴﺨﺔ
وﻳﺮﺑﻌﻬﺎ وﻳﻄﺒﻊ . 25ﻟﻜﻦ ﻟﻮ ﻃﺒﻌﻨﺎ اﻟﻤﺘﻐﻴﺮ yﻧﺠﺪﻩ ﻣﺎزال .5
هﻜﺬا ﻧﻜﻮن ﻗﺪ اﻧﺘﻬﻴﻨﺎ ﻣﻦ ﺗﻌﺮﻳﻒ اﻟﻤﺘﻐﻴﺮ by referenceأو by value
وﻓﻲ اﻟﺪرس اﻟﺘﺎﻟﻲ ﺳﻨﻮﺿﺢ إن ﺷﺎء اﷲ آﻴﻔﻴﺔ اﻟﺘﻌﺎﻣﻞ وإﻧﺘﺎج اﻷرﻗﺎم
اﻟﻌﺸﻮاﺋﻴﺔ.
وهﺬا هﻮ اﻟﺒﺮﻧﺎﻣﺞ ﻣﻊ ﺑﻌﺾ اﻟﻤﻼ ﺣﻈﺎت اﻟﻤﻮﺿﺤﺔ ﻋﻠﻴﻪ
110