0% found this document useful (0 votes)
80 views

Intro To Csharp

The document discusses an introductory C# programming lesson. It provides a brief overview of the C# language and its development by Microsoft. It also describes the programming environments for C#, including Visual Studio and console/Windows applications. It gives instructions on how to create a new console application project in Visual Studio and write sample code to print text to the console.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
80 views

Intro To Csharp

The document discusses an introductory C# programming lesson. It provides a brief overview of the C# language and its development by Microsoft. It also describes the programming environments for C#, including Visual Studio and console/Windows applications. It gives instructions on how to create a new console application project in Visual Studio and write sample code to print text to the console.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 111

‫ﺗﻢ ﺗﺤﻤﻴﻞ اﻟﻤﻠﻒ ﻣﻦ ﻣﻮﻗﻊ‬

‫اﻟﺒﻮﺻﻠﺔ اﻟﺘﻘﻨﻴﺔ‬
‫‪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

You might also like